@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,755 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://skillgraph.dev/schemas/manifest.schema.json",
4
+ "title": "Skill Graph Manifest",
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": 4
19
+ },
20
+ {
21
+ "type": "string",
22
+ "const": "4"
23
+ }
24
+ ],
25
+ "description": "Major contract shape version. Integer for v4+; string '4' tolerated for back-compat with hand-rolled YAML. Bumps when shape changes break consumers."
26
+ },
27
+ "generated_at": {
28
+ "type": "string",
29
+ "format": "date-time"
30
+ },
31
+ "workspace": {
32
+ "type": "object",
33
+ "additionalProperties": false,
34
+ "description": "Optional multi-root workspace metadata. Emitted when `.skill-graph/config.json` declares workspace projects. Consumers filter generated `skills[].project` ownership and authored `skills[].workspace_tags` relevance against this block.",
35
+ "properties": {
36
+ "projects": {
37
+ "type": "object",
38
+ "additionalProperties": {
39
+ "type": "object",
40
+ "additionalProperties": false,
41
+ "properties": {
42
+ "semantic_tags": {
43
+ "type": "array",
44
+ "items": {
45
+ "type": "string"
46
+ }
47
+ }
48
+ }
49
+ }
50
+ },
51
+ "skill_roots": {
52
+ "type": "array",
53
+ "items": {
54
+ "type": "string"
55
+ }
56
+ }
57
+ }
58
+ },
59
+ "summary": {
60
+ "type": "object",
61
+ "additionalProperties": false,
62
+ "required": [
63
+ "total_skills"
64
+ ],
65
+ "properties": {
66
+ "total_skills": {
67
+ "type": "integer",
68
+ "minimum": 0
69
+ },
70
+ "by_type": {
71
+ "type": "object",
72
+ "additionalProperties": {
73
+ "type": "integer",
74
+ "minimum": 0
75
+ }
76
+ },
77
+ "by_category": {
78
+ "type": "object",
79
+ "additionalProperties": {
80
+ "type": "integer",
81
+ "minimum": 0
82
+ }
83
+ },
84
+ "by_scope": {
85
+ "type": "object",
86
+ "additionalProperties": {
87
+ "type": "integer",
88
+ "minimum": 0
89
+ }
90
+ },
91
+ "by_stability": {
92
+ "type": "object",
93
+ "additionalProperties": {
94
+ "type": "integer",
95
+ "minimum": 0
96
+ }
97
+ },
98
+ "by_project": {
99
+ "type": "object",
100
+ "additionalProperties": {
101
+ "type": "integer",
102
+ "minimum": 0
103
+ }
104
+ }
105
+ }
106
+ },
107
+ "skills": {
108
+ "type": "array",
109
+ "items": {
110
+ "type": "object",
111
+ "additionalProperties": false,
112
+ "required": [
113
+ "id",
114
+ "path",
115
+ "name",
116
+ "description",
117
+ "version",
118
+ "type",
119
+ "category",
120
+ "scope",
121
+ "owner"
122
+ ],
123
+ "properties": {
124
+ "id": {
125
+ "type": "string"
126
+ },
127
+ "path": {
128
+ "type": "string"
129
+ },
130
+ "project": {
131
+ "type": "string",
132
+ "description": "Literal handle of the project this skill was loaded from. Absent for skills loaded from a shared root without a project owner."
133
+ },
134
+ "name": {
135
+ "type": "string"
136
+ },
137
+ "urn": {
138
+ "type": "string",
139
+ "pattern": "^urn:skill:[a-z0-9][a-z0-9-]*:[a-z0-9][a-z0-9-/:]*$",
140
+ "description": "Optional globally-unique persistent identifier from the authored frontmatter (RFC 8141). Pass-through — generator does not synthesise this."
141
+ },
142
+ "description": {
143
+ "type": "string"
144
+ },
145
+ "version": {
146
+ "type": "string"
147
+ },
148
+ "type": {
149
+ "type": "string",
150
+ "enum": [
151
+ "capability",
152
+ "workflow",
153
+ "router",
154
+ "overlay"
155
+ ]
156
+ },
157
+ "archetype": {
158
+ "type": "string",
159
+ "enum": [
160
+ "capability",
161
+ "workflow",
162
+ "router",
163
+ "overlay"
164
+ ],
165
+ "description": "v3.1 preferred alias for `type`. Pass-through from authored frontmatter."
166
+ },
167
+ "category": {
168
+ "type": "string"
169
+ },
170
+ "domain": {
171
+ "type": "string"
172
+ },
173
+ "scope": {
174
+ "type": "string",
175
+ "enum": [
176
+ "codebase",
177
+ "reference",
178
+ "portable"
179
+ ]
180
+ },
181
+ "owner": {
182
+ "type": "string"
183
+ },
184
+ "stability": {
185
+ "type": "string",
186
+ "enum": [
187
+ "experimental",
188
+ "stable",
189
+ "frozen",
190
+ "deprecated"
191
+ ]
192
+ },
193
+ "superseded_by": {
194
+ "type": "string",
195
+ "description": "Name of the skill that replaces this one. Populated when authored `stability: deprecated`. Consumers use this to follow deprecation chains automatically."
196
+ },
197
+ "extends": {
198
+ "type": "string"
199
+ },
200
+ "workspace_tags": {
201
+ "type": "array",
202
+ "items": {
203
+ "type": "string"
204
+ }
205
+ },
206
+ "activation": {
207
+ "type": "object",
208
+ "additionalProperties": false,
209
+ "properties": {
210
+ "triggers": {
211
+ "type": "array",
212
+ "items": {
213
+ "type": "string"
214
+ }
215
+ },
216
+ "keywords": {
217
+ "type": "array",
218
+ "items": {
219
+ "type": "string"
220
+ }
221
+ },
222
+ "paths": {
223
+ "type": "array",
224
+ "items": {
225
+ "type": "string"
226
+ }
227
+ },
228
+ "examples": {
229
+ "type": "array",
230
+ "items": {
231
+ "type": "string"
232
+ }
233
+ },
234
+ "anti_examples": {
235
+ "type": "array",
236
+ "items": {
237
+ "type": "string"
238
+ }
239
+ }
240
+ }
241
+ },
242
+ "relations": {
243
+ "type": "object",
244
+ "additionalProperties": false,
245
+ "properties": {
246
+ "adjacent": {
247
+ "type": "array",
248
+ "items": {
249
+ "type": "string"
250
+ }
251
+ },
252
+ "related": {
253
+ "type": "array",
254
+ "items": {
255
+ "type": "string"
256
+ }
257
+ },
258
+ "broader": {
259
+ "type": "array",
260
+ "items": {
261
+ "type": "string"
262
+ }
263
+ },
264
+ "narrower": {
265
+ "type": "array",
266
+ "items": {
267
+ "type": "string"
268
+ }
269
+ },
270
+ "boundary": {
271
+ "type": "array",
272
+ "items": {
273
+ "oneOf": [
274
+ {
275
+ "type": "string"
276
+ },
277
+ {
278
+ "type": "object",
279
+ "additionalProperties": false,
280
+ "required": [
281
+ "skill"
282
+ ],
283
+ "properties": {
284
+ "skill": {
285
+ "type": "string"
286
+ },
287
+ "reason": {
288
+ "type": "string"
289
+ }
290
+ }
291
+ }
292
+ ]
293
+ }
294
+ },
295
+ "disjoint_with": {
296
+ "type": "array",
297
+ "items": {
298
+ "oneOf": [
299
+ {
300
+ "type": "string"
301
+ },
302
+ {
303
+ "type": "object",
304
+ "additionalProperties": false,
305
+ "required": [
306
+ "skill"
307
+ ],
308
+ "properties": {
309
+ "skill": {
310
+ "type": "string"
311
+ },
312
+ "reason": {
313
+ "type": "string"
314
+ }
315
+ }
316
+ }
317
+ ]
318
+ }
319
+ },
320
+ "verify_with": {
321
+ "type": "array",
322
+ "items": {
323
+ "type": "string"
324
+ }
325
+ },
326
+ "depends_on": {
327
+ "type": "array",
328
+ "items": {
329
+ "oneOf": [
330
+ {
331
+ "type": "string"
332
+ },
333
+ {
334
+ "type": "object",
335
+ "additionalProperties": false,
336
+ "required": [
337
+ "skill"
338
+ ],
339
+ "properties": {
340
+ "skill": {
341
+ "type": "string"
342
+ },
343
+ "min_version": {
344
+ "type": "string",
345
+ "description": "Semver range for the minimum required version. Accepts bare semver, caret, tilde, comparator, or AND-joined ranges.",
346
+ "pattern": "^(\\^|~|>=|<=|>|<|=)?[0-9]+\\.[0-9]+\\.[0-9]+(-[a-zA-Z0-9.-]+)?( +(\\^|~|>=|<=|>|<|=)?[0-9]+\\.[0-9]+\\.[0-9]+(-[a-zA-Z0-9.-]+)?)*$"
347
+ }
348
+ }
349
+ }
350
+ ]
351
+ }
352
+ }
353
+ }
354
+ },
355
+ "grounding": {
356
+ "type": "object",
357
+ "additionalProperties": false,
358
+ "required": [
359
+ "domain_object",
360
+ "grounding_mode",
361
+ "truth_sources",
362
+ "failure_modes",
363
+ "evidence_priority"
364
+ ],
365
+ "properties": {
366
+ "domain_object": {
367
+ "type": "string"
368
+ },
369
+ "subject": {
370
+ "type": "string",
371
+ "description": "v3.1 preferred alias for `domain_object`. Pass-through."
372
+ },
373
+ "grounding_mode": {
374
+ "type": "string",
375
+ "enum": [
376
+ "repo_specific",
377
+ "universal",
378
+ "hybrid"
379
+ ]
380
+ },
381
+ "claim_scope": {
382
+ "type": "string",
383
+ "enum": [
384
+ "repo_specific",
385
+ "universal",
386
+ "hybrid"
387
+ ],
388
+ "description": "v3.1 preferred alias for `grounding_mode`. Pass-through."
389
+ },
390
+ "truth_sources": {
391
+ "type": "array",
392
+ "items": {
393
+ "oneOf": [
394
+ {
395
+ "type": "string"
396
+ },
397
+ {
398
+ "type": "object",
399
+ "additionalProperties": false,
400
+ "required": [
401
+ "path"
402
+ ],
403
+ "properties": {
404
+ "path": {
405
+ "type": "string",
406
+ "minLength": 1
407
+ },
408
+ "line_range": {
409
+ "type": "object",
410
+ "additionalProperties": false,
411
+ "required": [
412
+ "start"
413
+ ],
414
+ "properties": {
415
+ "start": {
416
+ "type": "integer",
417
+ "minimum": 1
418
+ },
419
+ "end": {
420
+ "type": "integer",
421
+ "minimum": 1
422
+ }
423
+ }
424
+ },
425
+ "anchor": {
426
+ "type": "string"
427
+ },
428
+ "note": {
429
+ "type": "string"
430
+ }
431
+ }
432
+ }
433
+ ]
434
+ }
435
+ },
436
+ "failure_modes": {
437
+ "type": "array",
438
+ "items": {
439
+ "type": "string"
440
+ }
441
+ },
442
+ "evidence_priority": {
443
+ "type": "string",
444
+ "enum": [
445
+ "repo_code_first",
446
+ "general_knowledge_first",
447
+ "equal"
448
+ ]
449
+ }
450
+ }
451
+ },
452
+ "routing_bundles": {
453
+ "type": "array",
454
+ "items": {
455
+ "type": "string"
456
+ }
457
+ },
458
+ "license": {
459
+ "type": "string"
460
+ },
461
+ "compatibility": {
462
+ "type": "object",
463
+ "additionalProperties": false,
464
+ "properties": {
465
+ "runtimes": {
466
+ "type": "array",
467
+ "items": {
468
+ "type": "string"
469
+ }
470
+ },
471
+ "agent_runtimes": {
472
+ "type": "array",
473
+ "items": {
474
+ "type": "string"
475
+ },
476
+ "description": "v3.1 preferred alias for `runtimes`. Pass-through."
477
+ },
478
+ "node": {
479
+ "type": "string"
480
+ },
481
+ "node_version": {
482
+ "type": "string",
483
+ "description": "v3.1 preferred alias for `node`. Pass-through."
484
+ },
485
+ "notes": {
486
+ "type": "string",
487
+ "description": "Free-text additional compatibility notes. Pass-through from SKILL.md. No protocol length cap."
488
+ }
489
+ }
490
+ },
491
+ "allowed-tools": {
492
+ "type": "string"
493
+ },
494
+ "allowed_tools": {
495
+ "type": "string",
496
+ "description": "v3.1 preferred snake_case alias for `allowed-tools`. Pass-through."
497
+ },
498
+ "portability": {
499
+ "type": "object",
500
+ "additionalProperties": false,
501
+ "properties": {
502
+ "readiness": {
503
+ "type": "string",
504
+ "enum": [
505
+ "declared",
506
+ "scripted",
507
+ "verified"
508
+ ]
509
+ },
510
+ "targets": {
511
+ "type": "array",
512
+ "items": {
513
+ "type": "string",
514
+ "enum": [
515
+ "skill-md"
516
+ ]
517
+ }
518
+ },
519
+ "export_targets": {
520
+ "type": "array",
521
+ "description": "v3.1 preferred alias for `targets`. Pass-through.",
522
+ "items": {
523
+ "type": "string",
524
+ "enum": [
525
+ "skill-md"
526
+ ]
527
+ }
528
+ }
529
+ }
530
+ },
531
+ "health": {
532
+ "type": "object",
533
+ "additionalProperties": false,
534
+ "properties": {
535
+ "eval_artifacts": {
536
+ "type": "string"
537
+ },
538
+ "eval_state": {
539
+ "type": "string"
540
+ },
541
+ "routing_eval": {
542
+ "type": "string"
543
+ },
544
+ "eval_last_run": {
545
+ "type": "object",
546
+ "additionalProperties": false,
547
+ "required": [
548
+ "at",
549
+ "status"
550
+ ],
551
+ "properties": {
552
+ "at": {
553
+ "type": "string",
554
+ "format": "date-time"
555
+ },
556
+ "status": {
557
+ "type": "string",
558
+ "enum": [
559
+ "pass",
560
+ "fail",
561
+ "mixed"
562
+ ]
563
+ },
564
+ "runner": {
565
+ "type": "string"
566
+ },
567
+ "model": {
568
+ "type": "string"
569
+ },
570
+ "receipt": {
571
+ "type": "string"
572
+ },
573
+ "receipt_hash": {
574
+ "type": "string",
575
+ "pattern": "^[a-f0-9]{64}$"
576
+ }
577
+ }
578
+ },
579
+ "eval": {
580
+ "type": "object",
581
+ "additionalProperties": false,
582
+ "description": "v3.1 preferred nested form for the eval-health triple. Pass-through from authored frontmatter.",
583
+ "properties": {
584
+ "artifacts": {
585
+ "type": "string"
586
+ },
587
+ "content_state": {
588
+ "type": "string"
589
+ },
590
+ "routing_coverage": {
591
+ "type": "string"
592
+ },
593
+ "comprehension_state": {
594
+ "type": "string",
595
+ "enum": [
596
+ "absent",
597
+ "present"
598
+ ],
599
+ "description": "v3.1 preferred nested alias for top-level `comprehension_state`. Pass-through."
600
+ }
601
+ }
602
+ },
603
+ "freshness": {
604
+ "type": "string",
605
+ "format": "date"
606
+ },
607
+ "reviewed_at": {
608
+ "type": "string",
609
+ "format": "date",
610
+ "description": "v3.1 preferred alias for `freshness`. Pass-through."
611
+ },
612
+ "drift_check": {
613
+ "type": "object",
614
+ "additionalProperties": false,
615
+ "required": [
616
+ "last_verified"
617
+ ],
618
+ "properties": {
619
+ "last_verified": {
620
+ "type": "string",
621
+ "format": "date"
622
+ },
623
+ "verified_at": {
624
+ "type": "string",
625
+ "format": "date",
626
+ "description": "v3.1 preferred alias for `last_verified`. Pass-through."
627
+ },
628
+ "truth_source_hashes": {
629
+ "type": "object",
630
+ "additionalProperties": {
631
+ "type": "string",
632
+ "pattern": "^[a-f0-9]{64}$"
633
+ }
634
+ }
635
+ }
636
+ },
637
+ "lifecycle": {
638
+ "type": "object",
639
+ "additionalProperties": false,
640
+ "properties": {
641
+ "stale_after_days": {
642
+ "type": "integer",
643
+ "minimum": 1
644
+ },
645
+ "review_cadence": {
646
+ "type": "string",
647
+ "enum": [
648
+ "per-commit",
649
+ "weekly",
650
+ "quarterly",
651
+ "on-truth-source-change"
652
+ ]
653
+ }
654
+ }
655
+ },
656
+ "runtime_telemetry": {
657
+ "type": "object",
658
+ "additionalProperties": false,
659
+ "required": [
660
+ "feedback_source"
661
+ ],
662
+ "properties": {
663
+ "feedback_source": {
664
+ "type": "string"
665
+ },
666
+ "last_updated": {
667
+ "type": "string",
668
+ "format": "date"
669
+ },
670
+ "metrics": {
671
+ "type": "object",
672
+ "additionalProperties": false,
673
+ "properties": {
674
+ "sample_size": {
675
+ "type": "integer",
676
+ "minimum": 0
677
+ },
678
+ "success_rate": {
679
+ "type": "number",
680
+ "minimum": 0,
681
+ "maximum": 1
682
+ }
683
+ }
684
+ }
685
+ }
686
+ },
687
+ "has_grounding": {
688
+ "type": "boolean"
689
+ },
690
+ "has_relations": {
691
+ "type": "boolean"
692
+ },
693
+ "drift_detected": {
694
+ "type": "boolean",
695
+ "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."
696
+ },
697
+ "comprehension_state": {
698
+ "type": "string",
699
+ "enum": [
700
+ "absent",
701
+ "present"
702
+ ],
703
+ "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."
704
+ }
705
+ }
706
+ },
707
+ "concept": {
708
+ "type": "object",
709
+ "additionalProperties": false,
710
+ "required": [
711
+ "definition",
712
+ "mental_model",
713
+ "purpose",
714
+ "boundary",
715
+ "taxonomy",
716
+ "analogy",
717
+ "misconception"
718
+ ],
719
+ "properties": {
720
+ "definition": {
721
+ "type": "string",
722
+ "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)."
723
+ },
724
+ "mental_model": {
725
+ "type": "string",
726
+ "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)."
727
+ },
728
+ "purpose": {
729
+ "type": "string",
730
+ "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)."
731
+ },
732
+ "boundary": {
733
+ "type": "string",
734
+ "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)."
735
+ },
736
+ "taxonomy": {
737
+ "type": "string",
738
+ "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)."
739
+ },
740
+ "analogy": {
741
+ "type": "string",
742
+ "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)."
743
+ },
744
+ "misconception": {
745
+ "type": "string",
746
+ "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`."
747
+ }
748
+ },
749
+ "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*."
750
+ }
751
+ }
752
+ }
753
+ }
754
+ }
755
+ }