# Project skills

Arc agent documentation

Exact arguments and input schemas for project skills.

[MCP reference index](/arc/docs/reference/mcp)

## arc_list_skills

List a project's skills as a compact index with a fitness rollup — prefer skills with trusted > 0 and treat failed-heavy ones with suspicion. Fetch a body with arc_get_skill only when the activation hint matches your task.

| Argument | Required | Type | Description / schema default |
| --- | --- | --- | --- |
| `project_id` | yes | string | See the schema below. |
| `include_archived` | no | boolean | See the schema below. |
| `include_manual` | no | boolean | include skills with delivery=manual; default true for explicit list calls |

### Complete input schema

```json
{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string"
    },
    "include_archived": {
      "type": "boolean"
    },
    "include_manual": {
      "type": "boolean",
      "description": "include skills with delivery=manual; default true for explicit list calls"
    }
  },
  "required": [
    "project_id"
  ]
}
```

## arc_get_skill

Fetch one skill's full body and fitness rollup. Use when an index, join packet, or a task's related_skills points at a match; after applying it, record how it went with arc_create_fitness_verdict (target_kind="skill") so the ranking learns.

| Argument | Required | Type | Description / schema default |
| --- | --- | --- | --- |
| `skill_id` | yes | string | See the schema below. |
| `locale` | no | string | optional locale for localized built-in skills: en, zh-Hant, zh-Hans, or ja |

### Complete input schema

```json
{
  "type": "object",
  "properties": {
    "skill_id": {
      "type": "string"
    },
    "locale": {
      "type": "string",
      "description": "optional locale for localized built-in skills: en, zh-Hant, zh-Hans, or ja"
    }
  },
  "required": [
    "skill_id"
  ]
}
```

## arc_create_skill

Create a project-local ARC skill. Skills are optional reusable instruction packs; keep activation hints short and specific. delivery defaults to index, which exposes only the compact index on join. include_on_join intentionally includes the body in join packets; manual hides it from join packets.

| Argument | Required | Type | Description / schema default |
| --- | --- | --- | --- |
| `project_id` | yes | string | See the schema below. |
| `name` | yes | string | See the schema below. |
| `slug` | no | string | See the schema below. |
| `summary` | no | string | See the schema below. |
| `activation` | no | string | See the schema below. |
| `body` | no | string | See the schema below. |
| `tags` | no | array | See the schema below. |
| `delivery` | no | string |  Allowed: index, include_on_join, manual. |
| `replacement_skill_id` | no | string | optional skill_id this skill is deprecated in favor of |
| `last_reviewed_at` | no | string | optional ISO timestamp or date of the last curator review |
| `metadata` | no | object | See the schema below. |
| `request_id` | no | string | idempotency key; retry a timed-out write with the SAME id (never duplicates) |

### Complete input schema

```json
{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "slug": {
      "type": "string"
    },
    "summary": {
      "type": "string"
    },
    "activation": {
      "type": "string"
    },
    "body": {
      "type": "string"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "delivery": {
      "type": "string",
      "enum": [
        "index",
        "include_on_join",
        "manual"
      ]
    },
    "replacement_skill_id": {
      "type": "string",
      "description": "optional skill_id this skill is deprecated in favor of"
    },
    "last_reviewed_at": {
      "type": "string",
      "description": "optional ISO timestamp or date of the last curator review"
    },
    "metadata": {
      "type": "object"
    },
    "request_id": {
      "type": "string",
      "description": "idempotency key; retry a timed-out write with the SAME id (never duplicates)"
    }
  },
  "required": [
    "project_id",
    "name"
  ]
}
```

## arc_patch_skill

Edit a project-local ARC skill. Pass only fields to change. Set archived=true to hide it from normal list and join-packet indexes.

| Argument | Required | Type | Description / schema default |
| --- | --- | --- | --- |
| `skill_id` | yes | string | See the schema below. |
| `name` | no | string | See the schema below. |
| `slug` | no | string | See the schema below. |
| `summary` | no | string | See the schema below. |
| `activation` | no | string | See the schema below. |
| `body` | no | string | See the schema below. |
| `tags` | no | array | See the schema below. |
| `delivery` | no | string |  Allowed: index, include_on_join, manual. |
| `archived` | no | boolean | See the schema below. |
| `replacement_skill_id` | no | string | skill_id this skill is deprecated in favor of; pass an empty string to clear |
| `last_reviewed_at` | no | string | ISO timestamp or date of the last curator review; pass an empty string to clear |
| `metadata` | no | object | See the schema below. |
| `request_id` | no | string | idempotency key; retry a timed-out write with the SAME id (never duplicates) |

### Complete input schema

```json
{
  "type": "object",
  "properties": {
    "skill_id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "slug": {
      "type": "string"
    },
    "summary": {
      "type": "string"
    },
    "activation": {
      "type": "string"
    },
    "body": {
      "type": "string"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "delivery": {
      "type": "string",
      "enum": [
        "index",
        "include_on_join",
        "manual"
      ]
    },
    "archived": {
      "type": "boolean"
    },
    "replacement_skill_id": {
      "type": "string",
      "description": "skill_id this skill is deprecated in favor of; pass an empty string to clear"
    },
    "last_reviewed_at": {
      "type": "string",
      "description": "ISO timestamp or date of the last curator review; pass an empty string to clear"
    },
    "metadata": {
      "type": "object"
    },
    "request_id": {
      "type": "string",
      "description": "idempotency key; retry a timed-out write with the SAME id (never duplicates)"
    }
  },
  "required": [
    "skill_id"
  ]
}
```

## arc_skill_fitness_report

Knowledge Fitness Loop readout for a project: which skills are load-bearing, inert, failure-correlated, or under-reviewed. Does not modify anything.

| Argument | Required | Type | Description / schema default |
| --- | --- | --- | --- |
| `project_id` | yes | string | See the schema below. |
| `limit` | no | integer | See the schema below. |

### Complete input schema

```json
{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string"
    },
    "limit": {
      "type": "integer"
    }
  },
  "required": [
    "project_id"
  ]
}
```
