II.
Page JSON
Structured · livepage:process-gaps-GAP-L1-P1-anthropic-skills-vs-claude-code-skills
GAP-L1-P1-anthropic-skills-vs-claude-code-skills json
Inspect the normalized record payload exactly as the atlas UI reads it.
{
"id": "page:process-gaps-GAP-L1-P1-anthropic-skills-vs-claude-code-skills",
"_kind": "Page",
"_file": "wiki/process/gaps/GAP-L1-P1-anthropic-skills-vs-claude-code-skills.md",
"_cluster": "wiki",
"attributes": {
"nodeKind": "Page",
"title": "GAP-L1-P1-anthropic-skills-vs-claude-code-skills",
"displayName": "GAP-L1-P1-anthropic-skills-vs-claude-code-skills",
"slug": "process/gaps/GAP-L1-P1-anthropic-skills-vs-claude-code-skills",
"articlePath": "wiki/process/gaps/GAP-L1-P1-anthropic-skills-vs-claude-code-skills.md",
"article": "# GAP-L1-P1-anthropic-skills-vs-claude-code-skills\n\n| Field | Value |\n|---|---|\n| id | gap:anthropic-skills-vs-claude-code-skills |\n| title | Anthropic Skills (API-level) vs Claude Code Skills (filesystem) not distinguished |\n| level | 1 |\n| priority | P1 |\n| discoveredAt | 2026-04-28T00:00:00Z |\n| source | https://docs.anthropic.com/en/docs/agents-and-tools/skills + https://code.claude.com/docs/en/skills |\n| status | open |\n| owner | tbd |\n\n## Current state\n`Skill` NodeKind has one shape: directory-of-markdown with `SKILL.md` entrypoint. Anthropic now ships TWO distinct concepts both called \"Skill\":\n- **Anthropic Skills (API)** — model-side feature accessible via Messages API, configured server-side, not filesystem-based. Used by claude.ai.\n- **Claude Code Skills** — filesystem-based `SKILL.md` directories, invoked via slash command, can ship in plugins.\n\nBoth have `disable-model-invocation` frontmatter, but their distribution and lifecycle differ. The skill node example file `python-django-debug.yaml` references \"Anthropic Skills\" in its comment but the body is clearly a Claude Code skill.\n\n## Desired state\n- Split into `Skill.kind: enum<anthropic-api-skill,claude-code-skill,portable-skill>`.\n- Add `Skill.invocationMode: enum<model-invoked,user-invoked,both>`.\n- Add `Skill.disableModelInvocation: bool` (matches frontmatter).\n- Add a `Term` `term:skill` with `synonym_of` records distinguishing the two senses, `inContext=anthropic-api` vs `inContext=claude-code`.\n\n## Evidence\n- https://docs.anthropic.com/en/docs/agents-and-tools/skills (API-level)\n- https://code.claude.com/docs/en/skills (filesystem-level)\n- C:/work/v6/graph/schema/examples/extensions/skills/python-django-debug.yaml (mislabeled comment)\n\n## Propagation status\n- Level 1: open\n- Level 2: not-started — terminology.md needs new synonym record\n\n## Propagation chain\n- Level 1: split kind enum + 2 attribute additions.\n- Level 2: 02-node-kinds/extensions-plugins.md disambiguation block.\n\n## Notes\nWithout disambiguation, downstream derivations will conflate two different distribution channels.\n",
"documents": []
},
"outgoingEdges": [],
"incomingEdges": []
}