@skill-graph/cli 0.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/CHANGELOG.md +247 -0
  2. package/LICENSE +200 -0
  3. package/NOTICE +62 -0
  4. package/README.md +398 -0
  5. package/SKILL_GRAPH.md +443 -0
  6. package/bin/skill-graph.js +374 -0
  7. package/docs/ADOPTION.md +117 -0
  8. package/docs/CONFORMANCE.md +66 -0
  9. package/docs/PRIMER.md +384 -0
  10. package/docs/QUICKSTART-30MIN.md +333 -0
  11. package/docs/ROUTING-METRICS.md +120 -0
  12. package/docs/SKILL-MD-FORMAT-COMPATIBILITY.md +127 -0
  13. package/docs/SKILL_AUDIT_CHECKLIST.md +199 -0
  14. package/docs/SKILL_AUDIT_LOOP.md +195 -0
  15. package/docs/SKILL_METADATA_PROTOCOL.md +609 -0
  16. package/docs/_archived/marketplace-publication-priority-2026-05-18.md +239 -0
  17. package/docs/adr/0001-predicate-set.md +69 -0
  18. package/docs/adr/0002-json-ld-context.md +82 -0
  19. package/docs/adr/0003-ontoclean-rigidity-tags.md +65 -0
  20. package/docs/adr/0004-persistent-identifiers.md +74 -0
  21. package/docs/adr/0005-freshness-consolidation.md +70 -0
  22. package/docs/adr/0006-revise-predicate-rename.md +105 -0
  23. package/docs/adr/0007-audit-loop-cadence.md +99 -0
  24. package/docs/adr/0008-skill-surface-split-and-curation-policy.md +93 -0
  25. package/docs/category-consumers.md +168 -0
  26. package/docs/concept-map.md +194 -0
  27. package/docs/diagrams/drift-states.mmd +21 -0
  28. package/docs/diagrams/manifest-pipeline.mmd +25 -0
  29. package/docs/diagrams/routing-harness.mmd +41 -0
  30. package/docs/diagrams/starter-graph.mmd +53 -0
  31. package/docs/field-decision-guide.md +315 -0
  32. package/docs/field-rationale.md +211 -0
  33. package/docs/field-reference.generated.md +624 -0
  34. package/docs/field-reference.md +1426 -0
  35. package/docs/glossary.md +190 -0
  36. package/docs/head-noun-glossary.md +63 -0
  37. package/docs/images/audit-phases.png +0 -0
  38. package/docs/images/drift-states.png +0 -0
  39. package/docs/images/graded-mode.png +0 -0
  40. package/docs/images/manifest-pipeline.png +0 -0
  41. package/docs/images/routing-harness.png +0 -0
  42. package/docs/images/skill-anatomy.png +0 -0
  43. package/docs/images/starter-graph.png +0 -0
  44. package/docs/images/system-model.png +0 -0
  45. package/docs/integrations/github-actions.md +155 -0
  46. package/docs/manifest-field-mapping.md +443 -0
  47. package/docs/marketplace-publication-queue.generated.md +240 -0
  48. package/docs/marketplace-release-agent-prompt.md +82 -0
  49. package/docs/marketplace-skill-candidate-list.md +272 -0
  50. package/docs/marketplace-syndication.md +222 -0
  51. package/docs/migration-sample-review.md +155 -0
  52. package/docs/migrations/v4-to-v5.md +168 -0
  53. package/docs/migrations/v5-to-v6.md +221 -0
  54. package/docs/name-exceptions.yaml +37 -0
  55. package/docs/plans/marketplace-p1-public-migration-plan.md +41 -0
  56. package/docs/plans/multi-root-workspace.md +148 -0
  57. package/docs/plans/scripts-roadmap.md +107 -0
  58. package/docs/plans/v4-schema-bump.md +160 -0
  59. package/docs/plans/wave-2-extraction.md +122 -0
  60. package/docs/positioning-vs-marketplaces.md +175 -0
  61. package/docs/proposals/skill-audit-loop-positioning.md +160 -0
  62. package/docs/quality-doctrine.md +138 -0
  63. package/docs/recommended-skills.md +150 -0
  64. package/docs/research/skill-comprehension-eval-research.md +1830 -0
  65. package/docs/research/skill-retrieval-evidence.md +66 -0
  66. package/docs/skill-metadata-protocol.md +471 -0
  67. package/docs/skills-sh-maintainer-cleanup-request.md +80 -0
  68. package/examples/audits/a11y/findings.md +52 -0
  69. package/examples/audits/a11y/scorecard.md +21 -0
  70. package/examples/audits/a11y/verdict.md +44 -0
  71. package/examples/audits/debugging/findings.md +59 -0
  72. package/examples/audits/debugging/scorecard.md +22 -0
  73. package/examples/audits/debugging/verdict.md +33 -0
  74. package/examples/audits/documentation/findings.md +59 -0
  75. package/examples/audits/documentation/scorecard.md +22 -0
  76. package/examples/audits/documentation/verdict.md +33 -0
  77. package/examples/evals/a11y.json +140 -0
  78. package/examples/evals/api-design.json +52 -0
  79. package/examples/evals/code-review.json +52 -0
  80. package/examples/evals/data-modeling.json +52 -0
  81. package/examples/evals/database-migration.json +52 -0
  82. package/examples/evals/debugging.json +118 -0
  83. package/examples/evals/dependency-architecture.json +52 -0
  84. package/examples/evals/design-system-architecture.json +52 -0
  85. package/examples/evals/error-tracking.json +52 -0
  86. package/examples/evals/event-contract-design.json +52 -0
  87. package/examples/evals/form-ux-architecture.json +52 -0
  88. package/examples/evals/framework-fit-analysis.json +52 -0
  89. package/examples/evals/graph-audit.json +139 -0
  90. package/examples/evals/information-architecture.json +52 -0
  91. package/examples/evals/interaction-feedback.json +52 -0
  92. package/examples/evals/interaction-patterns.json +52 -0
  93. package/examples/evals/layout-composition.json +52 -0
  94. package/examples/evals/lint-overlay.json +117 -0
  95. package/examples/evals/microcopy.json +52 -0
  96. package/examples/evals/observability-modeling.json +52 -0
  97. package/examples/evals/pattern-recognition.json +96 -0
  98. package/examples/evals/performance-engineering.json +52 -0
  99. package/examples/evals/refactor.json +128 -0
  100. package/examples/evals/semiotics.json +52 -0
  101. package/examples/evals/skill-infrastructure.json +96 -0
  102. package/examples/evals/skill-router.json +140 -0
  103. package/examples/evals/skill-router.routing.json +113 -0
  104. package/examples/evals/system-interface-contracts.json +52 -0
  105. package/examples/evals/task-analysis.json +52 -0
  106. package/examples/evals/testing-strategy.json +118 -0
  107. package/examples/evals/type-safety.json +249 -0
  108. package/examples/evals/visual-design-foundations.json +52 -0
  109. package/examples/evals/webhook-integration.json +52 -0
  110. package/examples/exports/a11y.skill-md.md +80 -0
  111. package/examples/exports/debugging.skill-md.md +80 -0
  112. package/examples/exports/refactor.skill-md.md +78 -0
  113. package/examples/exports/testing-strategy.skill-md.md +81 -0
  114. package/examples/projects/markdown-static-site/README.md +115 -0
  115. package/examples/projects/markdown-static-site/skills/content-source-router/SKILL.md +131 -0
  116. package/examples/projects/markdown-static-site/skills/image-optimization-pipeline-config/SKILL.md +132 -0
  117. package/examples/projects/markdown-static-site/skills/link-rot-detection/SKILL.md +103 -0
  118. package/examples/projects/markdown-static-site/skills/markdown-post-frontmatter-validation/SKILL.md +133 -0
  119. package/examples/projects/markdown-static-site/skills/migrate-posts-to-v2-frontmatter/SKILL.md +140 -0
  120. package/examples/projects/saas-stripe-postgres/README.md +208 -0
  121. package/examples/projects/saas-stripe-postgres/db/migrations/0004_canonicalize_orders.sql +37 -0
  122. package/examples/projects/saas-stripe-postgres/db/schema.sql +112 -0
  123. package/examples/projects/saas-stripe-postgres/skills/migrate-orders-to-canonical-schema/SKILL.md +149 -0
  124. package/examples/projects/saas-stripe-postgres/skills/nextjs-server-action-validation/SKILL.md +154 -0
  125. package/examples/projects/saas-stripe-postgres/skills/payment-provider-router/SKILL.md +153 -0
  126. package/examples/projects/saas-stripe-postgres/skills/postgres-rls-pattern/SKILL.md +163 -0
  127. package/examples/projects/saas-stripe-postgres/skills/stripe-webhook-signature-verification/SKILL.md +137 -0
  128. package/examples/protocol/skill-metadata-template.md +301 -0
  129. package/examples/protocol/skills.manifest.sample.json +13245 -0
  130. package/examples/skill-metadata-template.md +317 -0
  131. package/examples/skills.manifest.sample.json +13519 -0
  132. package/examples/tests/v3-1-skos-fixture/SKILL.md +93 -0
  133. package/marketplace/README.md +17 -0
  134. package/marketplace/skills/a11y/SKILL.md +66 -0
  135. package/marketplace/skills/acid-fundamentals/SKILL.md +106 -0
  136. package/marketplace/skills/agent-engineering/SKILL.md +386 -0
  137. package/marketplace/skills/agent-eval-design/SKILL.md +55 -0
  138. package/marketplace/skills/ai-native-development/SKILL.md +294 -0
  139. package/marketplace/skills/api-design/SKILL.md +60 -0
  140. package/marketplace/skills/architecture-decision-records/SKILL.md +55 -0
  141. package/marketplace/skills/background-jobs/SKILL.md +265 -0
  142. package/marketplace/skills/bounded-context-mapping/SKILL.md +55 -0
  143. package/marketplace/skills/cap-theorem-tradeoffs/SKILL.md +127 -0
  144. package/marketplace/skills/client-server-boundary/SKILL.md +187 -0
  145. package/marketplace/skills/code-review/SKILL.md +120 -0
  146. package/marketplace/skills/color-system-design/SKILL.md +43 -0
  147. package/marketplace/skills/component-architecture/SKILL.md +126 -0
  148. package/marketplace/skills/compression/SKILL.md +112 -0
  149. package/marketplace/skills/conceptual-modeling/SKILL.md +181 -0
  150. package/marketplace/skills/connection-pooling/SKILL.md +105 -0
  151. package/marketplace/skills/constraint-awareness/SKILL.md +287 -0
  152. package/marketplace/skills/content-monitor/SKILL.md +209 -0
  153. package/marketplace/skills/context-engineering/SKILL.md +320 -0
  154. package/marketplace/skills/context-graph/SKILL.md +174 -0
  155. package/marketplace/skills/context-management/SKILL.md +174 -0
  156. package/marketplace/skills/context-window/SKILL.md +239 -0
  157. package/marketplace/skills/contract-testing/SKILL.md +120 -0
  158. package/marketplace/skills/cron-scheduling/SKILL.md +223 -0
  159. package/marketplace/skills/dark-mode-implementation/SKILL.md +47 -0
  160. package/marketplace/skills/data-modeling/SKILL.md +59 -0
  161. package/marketplace/skills/data-modeling-fundamentals/SKILL.md +117 -0
  162. package/marketplace/skills/database-migration/SKILL.md +429 -0
  163. package/marketplace/skills/debugging/SKILL.md +67 -0
  164. package/marketplace/skills/dependency-architecture/SKILL.md +58 -0
  165. package/marketplace/skills/design-module-composition/SKILL.md +43 -0
  166. package/marketplace/skills/design-system-architecture/SKILL.md +61 -0
  167. package/marketplace/skills/design-thinking/SKILL.md +44 -0
  168. package/marketplace/skills/diagnosis/SKILL.md +296 -0
  169. package/marketplace/skills/diff-analysis/SKILL.md +188 -0
  170. package/marketplace/skills/e2e-test-design/SKILL.md +113 -0
  171. package/marketplace/skills/entity-relationship-modeling/SKILL.md +218 -0
  172. package/marketplace/skills/epistemic-grounding/SKILL.md +112 -0
  173. package/marketplace/skills/error-boundary/SKILL.md +235 -0
  174. package/marketplace/skills/error-tracking/SKILL.md +261 -0
  175. package/marketplace/skills/eval-driven-development/SKILL.md +147 -0
  176. package/marketplace/skills/evaluation/SKILL.md +113 -0
  177. package/marketplace/skills/event-contract-design/SKILL.md +60 -0
  178. package/marketplace/skills/event-storming/SKILL.md +56 -0
  179. package/marketplace/skills/form-ux-architecture/SKILL.md +60 -0
  180. package/marketplace/skills/framework-fit-analysis/SKILL.md +59 -0
  181. package/marketplace/skills/frontend-architecture/SKILL.md +43 -0
  182. package/marketplace/skills/generative-ui/SKILL.md +118 -0
  183. package/marketplace/skills/graph-audit/SKILL.md +81 -0
  184. package/marketplace/skills/guardrails/SKILL.md +118 -0
  185. package/marketplace/skills/hooks-patterns/SKILL.md +185 -0
  186. package/marketplace/skills/http-semantics/SKILL.md +136 -0
  187. package/marketplace/skills/ideation/SKILL.md +41 -0
  188. package/marketplace/skills/indexing-strategy/SKILL.md +108 -0
  189. package/marketplace/skills/information-architecture/SKILL.md +59 -0
  190. package/marketplace/skills/integration-test-design/SKILL.md +111 -0
  191. package/marketplace/skills/intent-recognition/SKILL.md +136 -0
  192. package/marketplace/skills/interaction-feedback/SKILL.md +59 -0
  193. package/marketplace/skills/interaction-patterns/SKILL.md +59 -0
  194. package/marketplace/skills/journey-mapping/SKILL.md +41 -0
  195. package/marketplace/skills/keywords/SKILL.md +213 -0
  196. package/marketplace/skills/knowledge-modeling/SKILL.md +232 -0
  197. package/marketplace/skills/layout-composition/SKILL.md +59 -0
  198. package/marketplace/skills/linguistics/SKILL.md +429 -0
  199. package/marketplace/skills/lint-overlay/SKILL.md +76 -0
  200. package/marketplace/skills/mental-models/SKILL.md +126 -0
  201. package/marketplace/skills/merge-queue/SKILL.md +94 -0
  202. package/marketplace/skills/methodology/SKILL.md +317 -0
  203. package/marketplace/skills/microcopy/SKILL.md +232 -0
  204. package/marketplace/skills/middleware-patterns/SKILL.md +363 -0
  205. package/marketplace/skills/mobile-responsive-ux/SKILL.md +287 -0
  206. package/marketplace/skills/mutation-testing/SKILL.md +112 -0
  207. package/marketplace/skills/naming-conventions/SKILL.md +112 -0
  208. package/marketplace/skills/observability-modeling/SKILL.md +59 -0
  209. package/marketplace/skills/ontology-modeling/SKILL.md +67 -0
  210. package/marketplace/skills/owasp-security/SKILL.md +153 -0
  211. package/marketplace/skills/pattern-recognition/SKILL.md +472 -0
  212. package/marketplace/skills/performance-budgets/SKILL.md +185 -0
  213. package/marketplace/skills/performance-engineering/SKILL.md +58 -0
  214. package/marketplace/skills/performance-testing/SKILL.md +125 -0
  215. package/marketplace/skills/printify/SKILL.md +42 -0
  216. package/marketplace/skills/prioritization/SKILL.md +118 -0
  217. package/marketplace/skills/problem-framing/SKILL.md +41 -0
  218. package/marketplace/skills/problem-locating-solving/SKILL.md +203 -0
  219. package/marketplace/skills/project-knowledge-extraction/SKILL.md +54 -0
  220. package/marketplace/skills/prompt-craft/SKILL.md +134 -0
  221. package/marketplace/skills/prompt-injection-defense/SKILL.md +132 -0
  222. package/marketplace/skills/property-based-testing/SKILL.md +100 -0
  223. package/marketplace/skills/prototyping/SKILL.md +43 -0
  224. package/marketplace/skills/query-optimization/SKILL.md +144 -0
  225. package/marketplace/skills/real-time-updates/SKILL.md +324 -0
  226. package/marketplace/skills/ref-patterns/SKILL.md +284 -0
  227. package/marketplace/skills/refactor/SKILL.md +65 -0
  228. package/marketplace/skills/rendering-models/SKILL.md +142 -0
  229. package/marketplace/skills/replication-patterns/SKILL.md +110 -0
  230. package/marketplace/skills/research-synthesis/SKILL.md +41 -0
  231. package/marketplace/skills/route-handler-design/SKILL.md +347 -0
  232. package/marketplace/skills/schema-evolution/SKILL.md +140 -0
  233. package/marketplace/skills/security-fundamentals/SKILL.md +139 -0
  234. package/marketplace/skills/semantic-center/SKILL.md +194 -0
  235. package/marketplace/skills/semantic-relations/SKILL.md +250 -0
  236. package/marketplace/skills/semantics/SKILL.md +366 -0
  237. package/marketplace/skills/semiotics/SKILL.md +230 -0
  238. package/marketplace/skills/seo-strategy/SKILL.md +260 -0
  239. package/marketplace/skills/server-actions-design/SKILL.md +243 -0
  240. package/marketplace/skills/server-components-design/SKILL.md +190 -0
  241. package/marketplace/skills/sharding-strategy/SKILL.md +123 -0
  242. package/marketplace/skills/shopify/SKILL.md +42 -0
  243. package/marketplace/skills/skill-infrastructure/SKILL.md +320 -0
  244. package/marketplace/skills/skill-router/SKILL.md +71 -0
  245. package/marketplace/skills/skill-scaffold/SKILL.md +105 -0
  246. package/marketplace/skills/snapshot-testing/SKILL.md +120 -0
  247. package/marketplace/skills/spec-driven-development/SKILL.md +148 -0
  248. package/marketplace/skills/state-machine-modeling/SKILL.md +56 -0
  249. package/marketplace/skills/state-management/SKILL.md +134 -0
  250. package/marketplace/skills/streaming-architecture/SKILL.md +194 -0
  251. package/marketplace/skills/summarization/SKILL.md +156 -0
  252. package/marketplace/skills/suspense-patterns/SKILL.md +265 -0
  253. package/marketplace/skills/system-interface-contracts/SKILL.md +59 -0
  254. package/marketplace/skills/task-analysis/SKILL.md +201 -0
  255. package/marketplace/skills/taxonomy-design/SKILL.md +66 -0
  256. package/marketplace/skills/test-coverage-strategy/SKILL.md +108 -0
  257. package/marketplace/skills/test-doubles-design/SKILL.md +98 -0
  258. package/marketplace/skills/test-driven-development/SKILL.md +96 -0
  259. package/marketplace/skills/testing-strategy/SKILL.md +67 -0
  260. package/marketplace/skills/theme-system-design/SKILL.md +43 -0
  261. package/marketplace/skills/tool-call-flow/SKILL.md +229 -0
  262. package/marketplace/skills/tool-call-strategy/SKILL.md +292 -0
  263. package/marketplace/skills/transaction-isolation/SKILL.md +98 -0
  264. package/marketplace/skills/type-safety/SKILL.md +177 -0
  265. package/marketplace/skills/typography-system/SKILL.md +43 -0
  266. package/marketplace/skills/usability-testing/SKILL.md +43 -0
  267. package/marketplace/skills/user-research/SKILL.md +43 -0
  268. package/marketplace/skills/vercel-composition-patterns/SKILL.md +157 -0
  269. package/marketplace/skills/version-control/SKILL.md +233 -0
  270. package/marketplace/skills/visual-design-foundations/SKILL.md +59 -0
  271. package/marketplace/skills/visual-hierarchy/SKILL.md +43 -0
  272. package/marketplace/skills/webhook-integration/SKILL.md +331 -0
  273. package/marketplace/skills/writing-humanizer/SKILL.md +380 -0
  274. package/package.json +67 -0
  275. package/schemas/manifest.schema.json +811 -0
  276. package/schemas/manifest.v2.schema.json +164 -0
  277. package/schemas/manifest.v3.schema.json +758 -0
  278. package/schemas/manifest.v4.schema.json +755 -0
  279. package/schemas/manifest.v5.schema.json +755 -0
  280. package/schemas/manifest.v6.schema.json +811 -0
  281. package/schemas/skill.context.jsonld +279 -0
  282. package/schemas/skill.schema.json +919 -0
  283. package/schemas/skill.v2.schema.json +201 -0
  284. package/schemas/skill.v3.schema.json +827 -0
  285. package/schemas/skill.v4.schema.json +822 -0
  286. package/schemas/skill.v5.schema.json +830 -0
  287. package/schemas/skill.v6.schema.json +946 -0
  288. package/schemas/vocabulary/keywords.json +180 -0
  289. package/schemas/vocabulary/workspace_tags.json +23 -0
  290. package/scripts/__tests__/migrate-skill-v2-to-v3.test.js +161 -0
  291. package/scripts/__tests__/migrate-skill-v3-to-v4.test.js +158 -0
  292. package/scripts/__tests__/test-export-parser-drift.js +149 -0
  293. package/scripts/__tests__/test-marketplace-export.js +114 -0
  294. package/scripts/__tests__/test-router-paths.js +82 -0
  295. package/scripts/__tests__/test-stability-promotion.js +244 -0
  296. package/scripts/__tests__/test-v3-1-alias-contract.js +109 -0
  297. package/scripts/__tests__/test-v3-1-skos-runtime.js +116 -0
  298. package/scripts/backfill-schema-version.js +198 -0
  299. package/scripts/build-field-reference.js +160 -0
  300. package/scripts/build-retrieval-baseline.js +511 -0
  301. package/scripts/check-markdown-links.js +211 -0
  302. package/scripts/check-protocol-consistency.js +979 -0
  303. package/scripts/export-marketplace-skills.js +610 -0
  304. package/scripts/export-skill.js +374 -0
  305. package/scripts/generate-manifest.js +787 -0
  306. package/scripts/lib/alias-contract.js +83 -0
  307. package/scripts/lib/audit-prompt-builder.js +771 -0
  308. package/scripts/lib/mock-grader.js +134 -0
  309. package/scripts/lib/parse-frontmatter.js +429 -0
  310. package/scripts/lib/roots.js +119 -0
  311. package/scripts/lint/check-archetype-sections.js +185 -0
  312. package/scripts/lint/check-category-enum.js +83 -0
  313. package/scripts/lint/check-routing-eval.js +146 -0
  314. package/scripts/lint/check-routing-quality.js +211 -0
  315. package/scripts/lint/check-stability-promotion.js +220 -0
  316. package/scripts/lint/format-code-frame.js +206 -0
  317. package/scripts/marketplace-install.js +125 -0
  318. package/scripts/migrate-category-to-enum.js +169 -0
  319. package/scripts/migrate-skill-v2-to-v3.js +424 -0
  320. package/scripts/migrate-skill-v3-to-v4.js +200 -0
  321. package/scripts/migrate-skill-v5-to-v6.js +304 -0
  322. package/scripts/restructure-by-category.js +85 -0
  323. package/scripts/seed-publication-classification.js +282 -0
  324. package/scripts/skill-audit.js +893 -0
  325. package/scripts/skill-graph-drift.js +483 -0
  326. package/scripts/skill-graph-route.js +766 -0
  327. package/scripts/skill-graph-routing-eval.js +393 -0
  328. package/scripts/skill-lint.js +1317 -0
  329. package/scripts/skill-overlap.js +213 -0
  330. package/scripts/verify-skill-md-export.js +201 -0
@@ -0,0 +1,758 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://skillgraph.dev/schemas/manifest.v3.schema.json",
4
+ "title": "Skill Graph Manifest (v3, pinned)",
5
+ "type": "object",
6
+ "required": [
7
+ "schema_version",
8
+ "generated_at",
9
+ "summary",
10
+ "skills"
11
+ ],
12
+ "additionalProperties": false,
13
+ "properties": {
14
+ "schema_version": {
15
+ "oneOf": [
16
+ {
17
+ "type": "integer",
18
+ "const": 3
19
+ },
20
+ {
21
+ "type": "string",
22
+ "const": "3"
23
+ }
24
+ ]
25
+ },
26
+ "generated_at": {
27
+ "type": "string",
28
+ "format": "date-time"
29
+ },
30
+ "workspace": {
31
+ "type": "object",
32
+ "additionalProperties": false,
33
+ "description": "Optional multi-root workspace metadata. Emitted when `.skill-graph/config.json` declares workspace.projects. Consumers filter skills by project.",
34
+ "properties": {
35
+ "projects": {
36
+ "type": "object",
37
+ "additionalProperties": {
38
+ "type": "object",
39
+ "additionalProperties": false,
40
+ "properties": {
41
+ "semantic_tags": {
42
+ "type": "array",
43
+ "items": {
44
+ "type": "string"
45
+ }
46
+ }
47
+ }
48
+ }
49
+ },
50
+ "skill_roots": {
51
+ "type": "array",
52
+ "items": {
53
+ "type": "string"
54
+ }
55
+ }
56
+ }
57
+ },
58
+ "summary": {
59
+ "type": "object",
60
+ "additionalProperties": false,
61
+ "required": [
62
+ "total_skills"
63
+ ],
64
+ "properties": {
65
+ "total_skills": {
66
+ "type": "integer",
67
+ "minimum": 0
68
+ },
69
+ "by_type": {
70
+ "type": "object",
71
+ "additionalProperties": {
72
+ "type": "integer",
73
+ "minimum": 0
74
+ }
75
+ },
76
+ "by_browse_category": {
77
+ "type": "object",
78
+ "additionalProperties": {
79
+ "type": "integer",
80
+ "minimum": 0
81
+ }
82
+ },
83
+ "by_scope": {
84
+ "type": "object",
85
+ "additionalProperties": {
86
+ "type": "integer",
87
+ "minimum": 0
88
+ }
89
+ },
90
+ "by_stability": {
91
+ "type": "object",
92
+ "additionalProperties": {
93
+ "type": "integer",
94
+ "minimum": 0
95
+ }
96
+ },
97
+ "by_project": {
98
+ "type": "object",
99
+ "additionalProperties": {
100
+ "type": "integer",
101
+ "minimum": 0
102
+ }
103
+ }
104
+ }
105
+ },
106
+ "skills": {
107
+ "type": "array",
108
+ "items": {
109
+ "type": "object",
110
+ "additionalProperties": false,
111
+ "required": [
112
+ "id",
113
+ "path",
114
+ "name",
115
+ "description",
116
+ "version",
117
+ "type",
118
+ "browse_category",
119
+ "scope",
120
+ "owner"
121
+ ],
122
+ "properties": {
123
+ "id": {
124
+ "type": "string"
125
+ },
126
+ "path": {
127
+ "type": "string"
128
+ },
129
+ "project": {
130
+ "type": "string",
131
+ "description": "Literal handle of the project this skill was loaded from. Absent for skills loaded from a shared root without a project owner."
132
+ },
133
+ "name": {
134
+ "type": "string"
135
+ },
136
+ "urn": {
137
+ "type": "string",
138
+ "pattern": "^urn:skill:[a-z0-9][a-z0-9-]*:[a-z0-9][a-z0-9-/:]*$",
139
+ "description": "Optional globally-unique persistent identifier from the authored frontmatter (RFC 8141). Pass-through — generator does not synthesise this."
140
+ },
141
+ "description": {
142
+ "type": "string"
143
+ },
144
+ "version": {
145
+ "type": "string"
146
+ },
147
+ "type": {
148
+ "type": "string",
149
+ "enum": [
150
+ "capability",
151
+ "workflow",
152
+ "router",
153
+ "overlay"
154
+ ]
155
+ },
156
+ "archetype": {
157
+ "type": "string",
158
+ "enum": [
159
+ "capability",
160
+ "workflow",
161
+ "router",
162
+ "overlay"
163
+ ],
164
+ "description": "v3.1 preferred alias for `type`. Pass-through from authored frontmatter."
165
+ },
166
+ "browse_category": {
167
+ "type": "string"
168
+ },
169
+ "category": {
170
+ "type": "string"
171
+ },
172
+ "category_path": {
173
+ "type": "string",
174
+ "description": "v3.1 preferred alias for `category`. Pass-through from authored frontmatter."
175
+ },
176
+ "scope": {
177
+ "type": "string",
178
+ "enum": [
179
+ "codebase",
180
+ "reference",
181
+ "portable"
182
+ ]
183
+ },
184
+ "owner": {
185
+ "type": "string"
186
+ },
187
+ "stability": {
188
+ "type": "string",
189
+ "enum": [
190
+ "experimental",
191
+ "stable",
192
+ "frozen",
193
+ "deprecated"
194
+ ]
195
+ },
196
+ "superseded_by": {
197
+ "type": "string",
198
+ "description": "Name of the skill that replaces this one. Populated when authored `stability: deprecated`. Consumers use this to follow deprecation chains automatically."
199
+ },
200
+ "extends": {
201
+ "type": "string"
202
+ },
203
+ "project_tags": {
204
+ "type": "array",
205
+ "items": {
206
+ "type": "string"
207
+ }
208
+ },
209
+ "activation": {
210
+ "type": "object",
211
+ "additionalProperties": false,
212
+ "properties": {
213
+ "triggers": {
214
+ "type": "array",
215
+ "items": {
216
+ "type": "string"
217
+ }
218
+ },
219
+ "keywords": {
220
+ "type": "array",
221
+ "items": {
222
+ "type": "string"
223
+ }
224
+ },
225
+ "paths": {
226
+ "type": "array",
227
+ "items": {
228
+ "type": "string"
229
+ }
230
+ },
231
+ "examples": {
232
+ "type": "array",
233
+ "items": {
234
+ "type": "string"
235
+ }
236
+ },
237
+ "anti_examples": {
238
+ "type": "array",
239
+ "items": {
240
+ "type": "string"
241
+ }
242
+ }
243
+ }
244
+ },
245
+ "relations": {
246
+ "type": "object",
247
+ "additionalProperties": false,
248
+ "properties": {
249
+ "adjacent": {
250
+ "type": "array",
251
+ "items": {
252
+ "type": "string"
253
+ }
254
+ },
255
+ "related": {
256
+ "type": "array",
257
+ "items": {
258
+ "type": "string"
259
+ }
260
+ },
261
+ "broader": {
262
+ "type": "array",
263
+ "items": {
264
+ "type": "string"
265
+ }
266
+ },
267
+ "narrower": {
268
+ "type": "array",
269
+ "items": {
270
+ "type": "string"
271
+ }
272
+ },
273
+ "boundary": {
274
+ "type": "array",
275
+ "items": {
276
+ "oneOf": [
277
+ {
278
+ "type": "string"
279
+ },
280
+ {
281
+ "type": "object",
282
+ "additionalProperties": false,
283
+ "required": [
284
+ "skill"
285
+ ],
286
+ "properties": {
287
+ "skill": {
288
+ "type": "string"
289
+ },
290
+ "reason": {
291
+ "type": "string"
292
+ }
293
+ }
294
+ }
295
+ ]
296
+ }
297
+ },
298
+ "disjoint_with": {
299
+ "type": "array",
300
+ "items": {
301
+ "oneOf": [
302
+ {
303
+ "type": "string"
304
+ },
305
+ {
306
+ "type": "object",
307
+ "additionalProperties": false,
308
+ "required": [
309
+ "skill"
310
+ ],
311
+ "properties": {
312
+ "skill": {
313
+ "type": "string"
314
+ },
315
+ "reason": {
316
+ "type": "string"
317
+ }
318
+ }
319
+ }
320
+ ]
321
+ }
322
+ },
323
+ "verify_with": {
324
+ "type": "array",
325
+ "items": {
326
+ "type": "string"
327
+ }
328
+ },
329
+ "depends_on": {
330
+ "type": "array",
331
+ "items": {
332
+ "oneOf": [
333
+ {
334
+ "type": "string"
335
+ },
336
+ {
337
+ "type": "object",
338
+ "additionalProperties": false,
339
+ "required": [
340
+ "skill"
341
+ ],
342
+ "properties": {
343
+ "skill": {
344
+ "type": "string"
345
+ },
346
+ "min_version": {
347
+ "type": "string",
348
+ "description": "Semver range for the minimum required version. Accepts bare semver, caret, tilde, comparator, or AND-joined ranges.",
349
+ "pattern": "^(\\^|~|>=|<=|>|<|=)?[0-9]+\\.[0-9]+\\.[0-9]+(-[a-zA-Z0-9.-]+)?( +(\\^|~|>=|<=|>|<|=)?[0-9]+\\.[0-9]+\\.[0-9]+(-[a-zA-Z0-9.-]+)?)*$"
350
+ }
351
+ }
352
+ }
353
+ ]
354
+ }
355
+ }
356
+ }
357
+ },
358
+ "grounding": {
359
+ "type": "object",
360
+ "additionalProperties": false,
361
+ "required": [
362
+ "domain_object",
363
+ "grounding_mode",
364
+ "truth_sources",
365
+ "failure_modes",
366
+ "evidence_priority"
367
+ ],
368
+ "properties": {
369
+ "domain_object": {
370
+ "type": "string"
371
+ },
372
+ "subject": {
373
+ "type": "string",
374
+ "description": "v3.1 preferred alias for `domain_object`. Pass-through."
375
+ },
376
+ "grounding_mode": {
377
+ "type": "string",
378
+ "enum": [
379
+ "repo_specific",
380
+ "universal",
381
+ "hybrid"
382
+ ]
383
+ },
384
+ "claim_scope": {
385
+ "type": "string",
386
+ "enum": [
387
+ "repo_specific",
388
+ "universal",
389
+ "hybrid"
390
+ ],
391
+ "description": "v3.1 preferred alias for `grounding_mode`. Pass-through."
392
+ },
393
+ "truth_sources": {
394
+ "type": "array",
395
+ "items": {
396
+ "oneOf": [
397
+ {
398
+ "type": "string"
399
+ },
400
+ {
401
+ "type": "object",
402
+ "additionalProperties": false,
403
+ "required": [
404
+ "path"
405
+ ],
406
+ "properties": {
407
+ "path": {
408
+ "type": "string",
409
+ "minLength": 1
410
+ },
411
+ "line_range": {
412
+ "type": "object",
413
+ "additionalProperties": false,
414
+ "required": [
415
+ "start"
416
+ ],
417
+ "properties": {
418
+ "start": {
419
+ "type": "integer",
420
+ "minimum": 1
421
+ },
422
+ "end": {
423
+ "type": "integer",
424
+ "minimum": 1
425
+ }
426
+ }
427
+ },
428
+ "anchor": {
429
+ "type": "string"
430
+ },
431
+ "note": {
432
+ "type": "string"
433
+ }
434
+ }
435
+ }
436
+ ]
437
+ }
438
+ },
439
+ "failure_modes": {
440
+ "type": "array",
441
+ "items": {
442
+ "type": "string"
443
+ }
444
+ },
445
+ "evidence_priority": {
446
+ "type": "string",
447
+ "enum": [
448
+ "repo_code_first",
449
+ "general_knowledge_first",
450
+ "equal"
451
+ ]
452
+ }
453
+ }
454
+ },
455
+ "routing_groups": {
456
+ "type": "array",
457
+ "items": {
458
+ "type": "string"
459
+ }
460
+ },
461
+ "license": {
462
+ "type": "string"
463
+ },
464
+ "compatibility": {
465
+ "type": "object",
466
+ "additionalProperties": false,
467
+ "properties": {
468
+ "runtimes": {
469
+ "type": "array",
470
+ "items": {
471
+ "type": "string"
472
+ }
473
+ },
474
+ "agent_runtimes": {
475
+ "type": "array",
476
+ "items": {
477
+ "type": "string"
478
+ },
479
+ "description": "v3.1 preferred alias for `runtimes`. Pass-through."
480
+ },
481
+ "node": {
482
+ "type": "string"
483
+ },
484
+ "node_version": {
485
+ "type": "string",
486
+ "description": "v3.1 preferred alias for `node`. Pass-through."
487
+ },
488
+ "notes": {
489
+ "type": "string",
490
+ "description": "Free-text additional compatibility notes. Pass-through from SKILL.md. No protocol length cap."
491
+ }
492
+ }
493
+ },
494
+ "allowed-tools": {
495
+ "type": "string"
496
+ },
497
+ "allowed_tools": {
498
+ "type": "string",
499
+ "description": "v3.1 preferred snake_case alias for `allowed-tools`. Pass-through."
500
+ },
501
+ "portability": {
502
+ "type": "object",
503
+ "additionalProperties": false,
504
+ "properties": {
505
+ "readiness": {
506
+ "type": "string",
507
+ "enum": [
508
+ "declared",
509
+ "scripted",
510
+ "verified"
511
+ ]
512
+ },
513
+ "targets": {
514
+ "type": "array",
515
+ "items": {
516
+ "type": "string",
517
+ "enum": [
518
+ "skill-md"
519
+ ]
520
+ }
521
+ },
522
+ "export_targets": {
523
+ "type": "array",
524
+ "description": "v3.1 preferred alias for `targets`. Pass-through.",
525
+ "items": {
526
+ "type": "string",
527
+ "enum": [
528
+ "skill-md"
529
+ ]
530
+ }
531
+ }
532
+ }
533
+ },
534
+ "health": {
535
+ "type": "object",
536
+ "additionalProperties": false,
537
+ "properties": {
538
+ "eval_artifacts": {
539
+ "type": "string"
540
+ },
541
+ "eval_state": {
542
+ "type": "string"
543
+ },
544
+ "routing_eval": {
545
+ "type": "string"
546
+ },
547
+ "eval_last_run": {
548
+ "type": "object",
549
+ "additionalProperties": false,
550
+ "required": [
551
+ "at",
552
+ "status"
553
+ ],
554
+ "properties": {
555
+ "at": {
556
+ "type": "string",
557
+ "format": "date-time"
558
+ },
559
+ "status": {
560
+ "type": "string",
561
+ "enum": [
562
+ "pass",
563
+ "fail",
564
+ "mixed"
565
+ ]
566
+ },
567
+ "runner": {
568
+ "type": "string"
569
+ },
570
+ "model": {
571
+ "type": "string"
572
+ },
573
+ "receipt": {
574
+ "type": "string"
575
+ },
576
+ "receipt_hash": {
577
+ "type": "string",
578
+ "pattern": "^[a-f0-9]{64}$"
579
+ }
580
+ }
581
+ },
582
+ "eval": {
583
+ "type": "object",
584
+ "additionalProperties": false,
585
+ "description": "v3.1 preferred nested form for the eval-health triple. Pass-through from authored frontmatter.",
586
+ "properties": {
587
+ "artifacts": {
588
+ "type": "string"
589
+ },
590
+ "content_state": {
591
+ "type": "string"
592
+ },
593
+ "routing_coverage": {
594
+ "type": "string"
595
+ },
596
+ "comprehension_state": {
597
+ "type": "string",
598
+ "enum": [
599
+ "absent",
600
+ "present"
601
+ ],
602
+ "description": "v3.1 preferred nested alias for top-level `comprehension_state`. Pass-through."
603
+ }
604
+ }
605
+ },
606
+ "freshness": {
607
+ "type": "string",
608
+ "format": "date"
609
+ },
610
+ "reviewed_at": {
611
+ "type": "string",
612
+ "format": "date",
613
+ "description": "v3.1 preferred alias for `freshness`. Pass-through."
614
+ },
615
+ "drift_check": {
616
+ "type": "object",
617
+ "additionalProperties": false,
618
+ "required": [
619
+ "last_verified"
620
+ ],
621
+ "properties": {
622
+ "last_verified": {
623
+ "type": "string",
624
+ "format": "date"
625
+ },
626
+ "verified_at": {
627
+ "type": "string",
628
+ "format": "date",
629
+ "description": "v3.1 preferred alias for `last_verified`. Pass-through."
630
+ },
631
+ "truth_source_hashes": {
632
+ "type": "object",
633
+ "additionalProperties": {
634
+ "type": "string",
635
+ "pattern": "^[a-f0-9]{64}$"
636
+ }
637
+ }
638
+ }
639
+ },
640
+ "lifecycle": {
641
+ "type": "object",
642
+ "additionalProperties": false,
643
+ "properties": {
644
+ "stale_after_days": {
645
+ "type": "integer",
646
+ "minimum": 1
647
+ },
648
+ "review_cadence": {
649
+ "type": "string",
650
+ "enum": [
651
+ "per-commit",
652
+ "weekly",
653
+ "quarterly",
654
+ "on-truth-source-change"
655
+ ]
656
+ }
657
+ }
658
+ },
659
+ "runtime_telemetry": {
660
+ "type": "object",
661
+ "additionalProperties": false,
662
+ "required": [
663
+ "feedback_source"
664
+ ],
665
+ "properties": {
666
+ "feedback_source": {
667
+ "type": "string"
668
+ },
669
+ "last_updated": {
670
+ "type": "string",
671
+ "format": "date"
672
+ },
673
+ "metrics": {
674
+ "type": "object",
675
+ "additionalProperties": false,
676
+ "properties": {
677
+ "sample_size": {
678
+ "type": "integer",
679
+ "minimum": 0
680
+ },
681
+ "success_rate": {
682
+ "type": "number",
683
+ "minimum": 0,
684
+ "maximum": 1
685
+ }
686
+ }
687
+ }
688
+ }
689
+ },
690
+ "has_grounding": {
691
+ "type": "boolean"
692
+ },
693
+ "has_relations": {
694
+ "type": "boolean"
695
+ },
696
+ "drift_detected": {
697
+ "type": "boolean",
698
+ "description": "True when any normalized `grounding.truth_sources` key has a current SHA-256 hash that differs from the stored `drift_check.truth_source_hashes` value. Computed by the manifest generator when hashes are available."
699
+ },
700
+ "comprehension_state": {
701
+ "type": "string",
702
+ "enum": [
703
+ "absent",
704
+ "present"
705
+ ],
706
+ "description": "Does this skill carry a comprehension eval (typically `evals/comprehension.json`) and a `concept` block authored for the 7-dimension comprehension grader? `absent` (no comprehension grading), `present` (comprehension evals exist; the `concept` block is required by the allOf rule). Optional in v3 — omitted means `absent`. Independent of `routing_eval` (router-level) and `eval_state` (content-level). The nested `eval.comprehension_state` is the v3.1 preferred alias."
707
+ }
708
+ }
709
+ },
710
+ "concept": {
711
+ "type": "object",
712
+ "additionalProperties": false,
713
+ "required": [
714
+ "definition",
715
+ "mental_model",
716
+ "purpose",
717
+ "boundary",
718
+ "taxonomy",
719
+ "analogy",
720
+ "misconception"
721
+ ],
722
+ "properties": {
723
+ "definition": {
724
+ "type": "string",
725
+ "description": "What the concept IS. Primary category + what it does + who uses it. A domain outsider should understand. Author as deeply as the concept requires — there is no protocol length cap. Graded by the comprehension grader's `definition` dimension (weight 1.0)."
726
+ },
727
+ "mental_model": {
728
+ "type": "string",
729
+ "description": "Primitives and their relationships. Name primitives and the relationships between them. Markdown permitted inside the string. Author with the depth the concept needs — there is no protocol length cap. Graded by the comprehension grader's `mental_model` dimension (weight 1.5)."
730
+ },
731
+ "purpose": {
732
+ "type": "string",
733
+ "description": "What problem the concept solves and the alternative it replaced. Concrete pain point + prior alternative. No protocol length cap — explain as fully as the concept needs. Graded by the comprehension grader's `purpose` dimension (weight 1.0)."
734
+ },
735
+ "boundary": {
736
+ "type": "string",
737
+ "description": "Things commonly confused with the concept but that are NOT it. Express each difference as a mechanism (different primitives, different purpose, different scope) - not just different names. No protocol length cap. Graded by the comprehension grader's `boundary` dimension (weight 1.5)."
738
+ },
739
+ "taxonomy": {
740
+ "type": "string",
741
+ "description": "Nearby concepts with their relationship type (subset / alternative / prerequisite / composition / specialization). Markdown list permitted inside the string. No protocol length cap. Graded by the comprehension grader's `taxonomy` dimension (weight 1.0)."
742
+ },
743
+ "analogy": {
744
+ "type": "string",
745
+ "description": "Analogy that preserves the core mechanism. Translate for a non-expert without breaking the structural relationship between primitives. No protocol length cap. Graded by the comprehension grader's `analogy` dimension (weight 0.5)."
746
+ },
747
+ "misconception": {
748
+ "type": "string",
749
+ "description": "The wrong mental model people bring and why it misleads. Authored hint to inoculate the agent against the common error trap. No protocol length cap. Not directly graded; complements `boundary`."
750
+ }
751
+ },
752
+ "description": "Seven-field universal-subject concept teaching block. Read by the comprehension grader (`scripts/skill/evaluate-skill.js --comprehension`) and rendered into the agent context when the skill is loaded. Required when `comprehension_state: present`. No protocol length cap — author each field as deeply as the concept requires. Distinct from `## Philosophy` in the body, which is about *why this skill file exists in this repo*; the `concept` block is about *what the subject is, universally*."
753
+ }
754
+ }
755
+ }
756
+ }
757
+ }
758
+ }