@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,811 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://skillgraph.dev/schemas/manifest.v6.schema.json",
4
+ "title": "Skill Graph Manifest (v6, 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": 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 \u2014 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 \u2014 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
+ "last_audited": {
706
+ "type": "string",
707
+ "format": "date",
708
+ "description": "ISO date (YYYY-MM-DD) the `audit` command last ran against this skill. Written by `scripts/skill/skill-audit.js`. Pass-through from authored frontmatter (v6 Health Block)."
709
+ },
710
+ "last_changed": {
711
+ "type": "string",
712
+ "format": "date",
713
+ "description": "ISO date (YYYY-MM-DD) the SKILL.md body or frontmatter was last edited. Written automatically by `improve` operations. Pass-through from authored frontmatter (v6 Health Block)."
714
+ },
715
+ "audit_verdict": {
716
+ "type": "string",
717
+ "enum": [
718
+ "PASS",
719
+ "PASS_WITH_FIXES",
720
+ "PARTIAL",
721
+ "FAIL",
722
+ "UNKNOWN"
723
+ ],
724
+ "description": "Aggregate result of the most recent `audit` run. Combines `lint_verdict`, `drift_status`, and (when run with `--graded`) the seven dimension scores. Pass-through from authored frontmatter (v6 Health Block)."
725
+ },
726
+ "eval_score": {
727
+ "type": "number",
728
+ "minimum": 0,
729
+ "maximum": 5,
730
+ "description": "Latest aggregate eval grade on a 0.0\u20135.0 scale, written by `scripts/skill/evaluate-skill.js`. Pass-through from authored frontmatter (v6 Health Block)."
731
+ },
732
+ "eval_failed_ids": {
733
+ "type": "array",
734
+ "items": {
735
+ "type": "string"
736
+ },
737
+ "description": "Eval IDs that failed in the most recent run. Empty array when clean. Pass-through from authored frontmatter (v6 Health Block)."
738
+ },
739
+ "lint_verdict": {
740
+ "type": "string",
741
+ "enum": [
742
+ "PASS",
743
+ "FAIL",
744
+ "UNKNOWN"
745
+ ],
746
+ "description": "Result of the most recent deterministic-lint pass against this skill. `PASS` means zero lint errors; `UNKNOWN` is the initial state. Pass-through from authored frontmatter (v6 Health Block)."
747
+ },
748
+ "drift_status": {
749
+ "type": "string",
750
+ "enum": [
751
+ "OK",
752
+ "DRIFT",
753
+ "BROKEN",
754
+ "STALE",
755
+ "NO_BASELINE",
756
+ "EXTERNAL_UNHASHED",
757
+ "UNKNOWN"
758
+ ],
759
+ "description": "Current truth-source drift status. `OK` (live hashes match recorded), `DRIFT` (mismatch), `BROKEN` (truth source missing), `STALE`, `NO_BASELINE`, `EXTERNAL_UNHASHED`, `UNKNOWN`. Pass-through from authored frontmatter (v6 Health Block)."
760
+ }
761
+ }
762
+ },
763
+ "concept": {
764
+ "type": "object",
765
+ "additionalProperties": false,
766
+ "required": [
767
+ "definition",
768
+ "mental_model",
769
+ "purpose",
770
+ "boundary",
771
+ "taxonomy",
772
+ "analogy",
773
+ "misconception"
774
+ ],
775
+ "properties": {
776
+ "definition": {
777
+ "type": "string",
778
+ "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 \u2014 there is no protocol length cap. Graded by the comprehension grader's `definition` dimension (weight 1.0)."
779
+ },
780
+ "mental_model": {
781
+ "type": "string",
782
+ "description": "Primitives and their relationships. Name primitives and the relationships between them. Markdown permitted inside the string. Author with the depth the concept needs \u2014 there is no protocol length cap. Graded by the comprehension grader's `mental_model` dimension (weight 1.5)."
783
+ },
784
+ "purpose": {
785
+ "type": "string",
786
+ "description": "What problem the concept solves and the alternative it replaced. Concrete pain point + prior alternative. No protocol length cap \u2014 explain as fully as the concept needs. Graded by the comprehension grader's `purpose` dimension (weight 1.0)."
787
+ },
788
+ "boundary": {
789
+ "type": "string",
790
+ "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)."
791
+ },
792
+ "taxonomy": {
793
+ "type": "string",
794
+ "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)."
795
+ },
796
+ "analogy": {
797
+ "type": "string",
798
+ "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)."
799
+ },
800
+ "misconception": {
801
+ "type": "string",
802
+ "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`."
803
+ }
804
+ },
805
+ "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 \u2014 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*."
806
+ }
807
+ }
808
+ }
809
+ }
810
+ }
811
+ }