---
title: "Fork Skill"
method: POST
path: "/api/skills/{skill_id}/fork"
tags: ["skills"]
---

# Fork Skill

`POST /api/skills/{skill_id}/fork`

## Request

- Base URL: `https://app.ctlsurf.com` (the document declares no server; this is the origin it was published from)
- URL: `https://app.ctlsurf.com/api/skills/{skill_id}/fork`
- Auth: HTTP bearer

Fork a skill to your library.

Creates a copy of the skill in your personal or project library.
The original skill is tracked via forked_from_id.

You can fork any skill you have view access to (including shared skills).

## Path parameters

- `skill_id` string, uuid, required

## Request body

- SkillFork: Fork a skill to your library.
  - `target_scope` 'personal' | 'project' | 'organization' | 'public': Skill visibility scope.
  - `folder_id` string, uuid, nullable
  - `new_name` string, required

## Response `201`

Successful Response

- SkillResponse: Skill response.
  - `name` string, required
  - `description` string, nullable
  - `category` string, nullable
  - `icon` string, nullable
  - `scope` 'personal' | 'project' | 'organization' | 'public': Skill visibility scope.
  - `definition` SkillDefinitionOutput, required: The full skill definition stored as JSONB.
    - `version` string
    - `inputs` SkillInput[]
      - `name` string, required
      - `type` 'text' | 'number' | 'boolean' | 'file' | 'select', required: Input types for skill variables.
      - `description` string, nullable
      - `required` boolean
      - `default` unknown
      - `options` string[], nullable
    - `workflow` WorkflowStep[]
      - `type` string
      - `name` string, required
      - `title` string, required
      - `template` string, nullable
      - `description` string, nullable
    - `guards` string[]
  - `id` string, uuid, required
  - `user_id` string, uuid, required
  - `folder_id` string, uuid, nullable
  - `org_id` string, uuid, nullable
  - `forked_from_id` string, uuid, nullable
  - `is_active` boolean
  - `is_verified` boolean
  - `linked_folder_ids` string[]
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/ctlsurf/apis/notebook-control-plane.md) · [All operations](https://skmtc.dev/ctlsurf/apis/notebook-control-plane/llms.txt) · [OpenAPI document](https://skmtc.dev/ctlsurf/apis/notebook-control-plane/revisions/ddfbbe20d5ce?raw)
