@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.
- package/CHANGELOG.md +247 -0
- package/LICENSE +200 -0
- package/NOTICE +62 -0
- package/README.md +398 -0
- package/SKILL_GRAPH.md +443 -0
- package/bin/skill-graph.js +374 -0
- package/docs/ADOPTION.md +117 -0
- package/docs/CONFORMANCE.md +66 -0
- package/docs/PRIMER.md +384 -0
- package/docs/QUICKSTART-30MIN.md +333 -0
- package/docs/ROUTING-METRICS.md +120 -0
- package/docs/SKILL-MD-FORMAT-COMPATIBILITY.md +127 -0
- package/docs/SKILL_AUDIT_CHECKLIST.md +199 -0
- package/docs/SKILL_AUDIT_LOOP.md +195 -0
- package/docs/SKILL_METADATA_PROTOCOL.md +609 -0
- package/docs/_archived/marketplace-publication-priority-2026-05-18.md +239 -0
- package/docs/adr/0001-predicate-set.md +69 -0
- package/docs/adr/0002-json-ld-context.md +82 -0
- package/docs/adr/0003-ontoclean-rigidity-tags.md +65 -0
- package/docs/adr/0004-persistent-identifiers.md +74 -0
- package/docs/adr/0005-freshness-consolidation.md +70 -0
- package/docs/adr/0006-revise-predicate-rename.md +105 -0
- package/docs/adr/0007-audit-loop-cadence.md +99 -0
- package/docs/adr/0008-skill-surface-split-and-curation-policy.md +93 -0
- package/docs/category-consumers.md +168 -0
- package/docs/concept-map.md +194 -0
- package/docs/diagrams/drift-states.mmd +21 -0
- package/docs/diagrams/manifest-pipeline.mmd +25 -0
- package/docs/diagrams/routing-harness.mmd +41 -0
- package/docs/diagrams/starter-graph.mmd +53 -0
- package/docs/field-decision-guide.md +315 -0
- package/docs/field-rationale.md +211 -0
- package/docs/field-reference.generated.md +624 -0
- package/docs/field-reference.md +1426 -0
- package/docs/glossary.md +190 -0
- package/docs/head-noun-glossary.md +63 -0
- package/docs/images/audit-phases.png +0 -0
- package/docs/images/drift-states.png +0 -0
- package/docs/images/graded-mode.png +0 -0
- package/docs/images/manifest-pipeline.png +0 -0
- package/docs/images/routing-harness.png +0 -0
- package/docs/images/skill-anatomy.png +0 -0
- package/docs/images/starter-graph.png +0 -0
- package/docs/images/system-model.png +0 -0
- package/docs/integrations/github-actions.md +155 -0
- package/docs/manifest-field-mapping.md +443 -0
- package/docs/marketplace-publication-queue.generated.md +240 -0
- package/docs/marketplace-release-agent-prompt.md +82 -0
- package/docs/marketplace-skill-candidate-list.md +272 -0
- package/docs/marketplace-syndication.md +222 -0
- package/docs/migration-sample-review.md +155 -0
- package/docs/migrations/v4-to-v5.md +168 -0
- package/docs/migrations/v5-to-v6.md +221 -0
- package/docs/name-exceptions.yaml +37 -0
- package/docs/plans/marketplace-p1-public-migration-plan.md +41 -0
- package/docs/plans/multi-root-workspace.md +148 -0
- package/docs/plans/scripts-roadmap.md +107 -0
- package/docs/plans/v4-schema-bump.md +160 -0
- package/docs/plans/wave-2-extraction.md +122 -0
- package/docs/positioning-vs-marketplaces.md +175 -0
- package/docs/proposals/skill-audit-loop-positioning.md +160 -0
- package/docs/quality-doctrine.md +138 -0
- package/docs/recommended-skills.md +150 -0
- package/docs/research/skill-comprehension-eval-research.md +1830 -0
- package/docs/research/skill-retrieval-evidence.md +66 -0
- package/docs/skill-metadata-protocol.md +471 -0
- package/docs/skills-sh-maintainer-cleanup-request.md +80 -0
- package/examples/audits/a11y/findings.md +52 -0
- package/examples/audits/a11y/scorecard.md +21 -0
- package/examples/audits/a11y/verdict.md +44 -0
- package/examples/audits/debugging/findings.md +59 -0
- package/examples/audits/debugging/scorecard.md +22 -0
- package/examples/audits/debugging/verdict.md +33 -0
- package/examples/audits/documentation/findings.md +59 -0
- package/examples/audits/documentation/scorecard.md +22 -0
- package/examples/audits/documentation/verdict.md +33 -0
- package/examples/evals/a11y.json +140 -0
- package/examples/evals/api-design.json +52 -0
- package/examples/evals/code-review.json +52 -0
- package/examples/evals/data-modeling.json +52 -0
- package/examples/evals/database-migration.json +52 -0
- package/examples/evals/debugging.json +118 -0
- package/examples/evals/dependency-architecture.json +52 -0
- package/examples/evals/design-system-architecture.json +52 -0
- package/examples/evals/error-tracking.json +52 -0
- package/examples/evals/event-contract-design.json +52 -0
- package/examples/evals/form-ux-architecture.json +52 -0
- package/examples/evals/framework-fit-analysis.json +52 -0
- package/examples/evals/graph-audit.json +139 -0
- package/examples/evals/information-architecture.json +52 -0
- package/examples/evals/interaction-feedback.json +52 -0
- package/examples/evals/interaction-patterns.json +52 -0
- package/examples/evals/layout-composition.json +52 -0
- package/examples/evals/lint-overlay.json +117 -0
- package/examples/evals/microcopy.json +52 -0
- package/examples/evals/observability-modeling.json +52 -0
- package/examples/evals/pattern-recognition.json +96 -0
- package/examples/evals/performance-engineering.json +52 -0
- package/examples/evals/refactor.json +128 -0
- package/examples/evals/semiotics.json +52 -0
- package/examples/evals/skill-infrastructure.json +96 -0
- package/examples/evals/skill-router.json +140 -0
- package/examples/evals/skill-router.routing.json +113 -0
- package/examples/evals/system-interface-contracts.json +52 -0
- package/examples/evals/task-analysis.json +52 -0
- package/examples/evals/testing-strategy.json +118 -0
- package/examples/evals/type-safety.json +249 -0
- package/examples/evals/visual-design-foundations.json +52 -0
- package/examples/evals/webhook-integration.json +52 -0
- package/examples/exports/a11y.skill-md.md +80 -0
- package/examples/exports/debugging.skill-md.md +80 -0
- package/examples/exports/refactor.skill-md.md +78 -0
- package/examples/exports/testing-strategy.skill-md.md +81 -0
- package/examples/projects/markdown-static-site/README.md +115 -0
- package/examples/projects/markdown-static-site/skills/content-source-router/SKILL.md +131 -0
- package/examples/projects/markdown-static-site/skills/image-optimization-pipeline-config/SKILL.md +132 -0
- package/examples/projects/markdown-static-site/skills/link-rot-detection/SKILL.md +103 -0
- package/examples/projects/markdown-static-site/skills/markdown-post-frontmatter-validation/SKILL.md +133 -0
- package/examples/projects/markdown-static-site/skills/migrate-posts-to-v2-frontmatter/SKILL.md +140 -0
- package/examples/projects/saas-stripe-postgres/README.md +208 -0
- package/examples/projects/saas-stripe-postgres/db/migrations/0004_canonicalize_orders.sql +37 -0
- package/examples/projects/saas-stripe-postgres/db/schema.sql +112 -0
- package/examples/projects/saas-stripe-postgres/skills/migrate-orders-to-canonical-schema/SKILL.md +149 -0
- package/examples/projects/saas-stripe-postgres/skills/nextjs-server-action-validation/SKILL.md +154 -0
- package/examples/projects/saas-stripe-postgres/skills/payment-provider-router/SKILL.md +153 -0
- package/examples/projects/saas-stripe-postgres/skills/postgres-rls-pattern/SKILL.md +163 -0
- package/examples/projects/saas-stripe-postgres/skills/stripe-webhook-signature-verification/SKILL.md +137 -0
- package/examples/protocol/skill-metadata-template.md +301 -0
- package/examples/protocol/skills.manifest.sample.json +13245 -0
- package/examples/skill-metadata-template.md +317 -0
- package/examples/skills.manifest.sample.json +13519 -0
- package/examples/tests/v3-1-skos-fixture/SKILL.md +93 -0
- package/marketplace/README.md +17 -0
- package/marketplace/skills/a11y/SKILL.md +66 -0
- package/marketplace/skills/acid-fundamentals/SKILL.md +106 -0
- package/marketplace/skills/agent-engineering/SKILL.md +386 -0
- package/marketplace/skills/agent-eval-design/SKILL.md +55 -0
- package/marketplace/skills/ai-native-development/SKILL.md +294 -0
- package/marketplace/skills/api-design/SKILL.md +60 -0
- package/marketplace/skills/architecture-decision-records/SKILL.md +55 -0
- package/marketplace/skills/background-jobs/SKILL.md +265 -0
- package/marketplace/skills/bounded-context-mapping/SKILL.md +55 -0
- package/marketplace/skills/cap-theorem-tradeoffs/SKILL.md +127 -0
- package/marketplace/skills/client-server-boundary/SKILL.md +187 -0
- package/marketplace/skills/code-review/SKILL.md +120 -0
- package/marketplace/skills/color-system-design/SKILL.md +43 -0
- package/marketplace/skills/component-architecture/SKILL.md +126 -0
- package/marketplace/skills/compression/SKILL.md +112 -0
- package/marketplace/skills/conceptual-modeling/SKILL.md +181 -0
- package/marketplace/skills/connection-pooling/SKILL.md +105 -0
- package/marketplace/skills/constraint-awareness/SKILL.md +287 -0
- package/marketplace/skills/content-monitor/SKILL.md +209 -0
- package/marketplace/skills/context-engineering/SKILL.md +320 -0
- package/marketplace/skills/context-graph/SKILL.md +174 -0
- package/marketplace/skills/context-management/SKILL.md +174 -0
- package/marketplace/skills/context-window/SKILL.md +239 -0
- package/marketplace/skills/contract-testing/SKILL.md +120 -0
- package/marketplace/skills/cron-scheduling/SKILL.md +223 -0
- package/marketplace/skills/dark-mode-implementation/SKILL.md +47 -0
- package/marketplace/skills/data-modeling/SKILL.md +59 -0
- package/marketplace/skills/data-modeling-fundamentals/SKILL.md +117 -0
- package/marketplace/skills/database-migration/SKILL.md +429 -0
- package/marketplace/skills/debugging/SKILL.md +67 -0
- package/marketplace/skills/dependency-architecture/SKILL.md +58 -0
- package/marketplace/skills/design-module-composition/SKILL.md +43 -0
- package/marketplace/skills/design-system-architecture/SKILL.md +61 -0
- package/marketplace/skills/design-thinking/SKILL.md +44 -0
- package/marketplace/skills/diagnosis/SKILL.md +296 -0
- package/marketplace/skills/diff-analysis/SKILL.md +188 -0
- package/marketplace/skills/e2e-test-design/SKILL.md +113 -0
- package/marketplace/skills/entity-relationship-modeling/SKILL.md +218 -0
- package/marketplace/skills/epistemic-grounding/SKILL.md +112 -0
- package/marketplace/skills/error-boundary/SKILL.md +235 -0
- package/marketplace/skills/error-tracking/SKILL.md +261 -0
- package/marketplace/skills/eval-driven-development/SKILL.md +147 -0
- package/marketplace/skills/evaluation/SKILL.md +113 -0
- package/marketplace/skills/event-contract-design/SKILL.md +60 -0
- package/marketplace/skills/event-storming/SKILL.md +56 -0
- package/marketplace/skills/form-ux-architecture/SKILL.md +60 -0
- package/marketplace/skills/framework-fit-analysis/SKILL.md +59 -0
- package/marketplace/skills/frontend-architecture/SKILL.md +43 -0
- package/marketplace/skills/generative-ui/SKILL.md +118 -0
- package/marketplace/skills/graph-audit/SKILL.md +81 -0
- package/marketplace/skills/guardrails/SKILL.md +118 -0
- package/marketplace/skills/hooks-patterns/SKILL.md +185 -0
- package/marketplace/skills/http-semantics/SKILL.md +136 -0
- package/marketplace/skills/ideation/SKILL.md +41 -0
- package/marketplace/skills/indexing-strategy/SKILL.md +108 -0
- package/marketplace/skills/information-architecture/SKILL.md +59 -0
- package/marketplace/skills/integration-test-design/SKILL.md +111 -0
- package/marketplace/skills/intent-recognition/SKILL.md +136 -0
- package/marketplace/skills/interaction-feedback/SKILL.md +59 -0
- package/marketplace/skills/interaction-patterns/SKILL.md +59 -0
- package/marketplace/skills/journey-mapping/SKILL.md +41 -0
- package/marketplace/skills/keywords/SKILL.md +213 -0
- package/marketplace/skills/knowledge-modeling/SKILL.md +232 -0
- package/marketplace/skills/layout-composition/SKILL.md +59 -0
- package/marketplace/skills/linguistics/SKILL.md +429 -0
- package/marketplace/skills/lint-overlay/SKILL.md +76 -0
- package/marketplace/skills/mental-models/SKILL.md +126 -0
- package/marketplace/skills/merge-queue/SKILL.md +94 -0
- package/marketplace/skills/methodology/SKILL.md +317 -0
- package/marketplace/skills/microcopy/SKILL.md +232 -0
- package/marketplace/skills/middleware-patterns/SKILL.md +363 -0
- package/marketplace/skills/mobile-responsive-ux/SKILL.md +287 -0
- package/marketplace/skills/mutation-testing/SKILL.md +112 -0
- package/marketplace/skills/naming-conventions/SKILL.md +112 -0
- package/marketplace/skills/observability-modeling/SKILL.md +59 -0
- package/marketplace/skills/ontology-modeling/SKILL.md +67 -0
- package/marketplace/skills/owasp-security/SKILL.md +153 -0
- package/marketplace/skills/pattern-recognition/SKILL.md +472 -0
- package/marketplace/skills/performance-budgets/SKILL.md +185 -0
- package/marketplace/skills/performance-engineering/SKILL.md +58 -0
- package/marketplace/skills/performance-testing/SKILL.md +125 -0
- package/marketplace/skills/printify/SKILL.md +42 -0
- package/marketplace/skills/prioritization/SKILL.md +118 -0
- package/marketplace/skills/problem-framing/SKILL.md +41 -0
- package/marketplace/skills/problem-locating-solving/SKILL.md +203 -0
- package/marketplace/skills/project-knowledge-extraction/SKILL.md +54 -0
- package/marketplace/skills/prompt-craft/SKILL.md +134 -0
- package/marketplace/skills/prompt-injection-defense/SKILL.md +132 -0
- package/marketplace/skills/property-based-testing/SKILL.md +100 -0
- package/marketplace/skills/prototyping/SKILL.md +43 -0
- package/marketplace/skills/query-optimization/SKILL.md +144 -0
- package/marketplace/skills/real-time-updates/SKILL.md +324 -0
- package/marketplace/skills/ref-patterns/SKILL.md +284 -0
- package/marketplace/skills/refactor/SKILL.md +65 -0
- package/marketplace/skills/rendering-models/SKILL.md +142 -0
- package/marketplace/skills/replication-patterns/SKILL.md +110 -0
- package/marketplace/skills/research-synthesis/SKILL.md +41 -0
- package/marketplace/skills/route-handler-design/SKILL.md +347 -0
- package/marketplace/skills/schema-evolution/SKILL.md +140 -0
- package/marketplace/skills/security-fundamentals/SKILL.md +139 -0
- package/marketplace/skills/semantic-center/SKILL.md +194 -0
- package/marketplace/skills/semantic-relations/SKILL.md +250 -0
- package/marketplace/skills/semantics/SKILL.md +366 -0
- package/marketplace/skills/semiotics/SKILL.md +230 -0
- package/marketplace/skills/seo-strategy/SKILL.md +260 -0
- package/marketplace/skills/server-actions-design/SKILL.md +243 -0
- package/marketplace/skills/server-components-design/SKILL.md +190 -0
- package/marketplace/skills/sharding-strategy/SKILL.md +123 -0
- package/marketplace/skills/shopify/SKILL.md +42 -0
- package/marketplace/skills/skill-infrastructure/SKILL.md +320 -0
- package/marketplace/skills/skill-router/SKILL.md +71 -0
- package/marketplace/skills/skill-scaffold/SKILL.md +105 -0
- package/marketplace/skills/snapshot-testing/SKILL.md +120 -0
- package/marketplace/skills/spec-driven-development/SKILL.md +148 -0
- package/marketplace/skills/state-machine-modeling/SKILL.md +56 -0
- package/marketplace/skills/state-management/SKILL.md +134 -0
- package/marketplace/skills/streaming-architecture/SKILL.md +194 -0
- package/marketplace/skills/summarization/SKILL.md +156 -0
- package/marketplace/skills/suspense-patterns/SKILL.md +265 -0
- package/marketplace/skills/system-interface-contracts/SKILL.md +59 -0
- package/marketplace/skills/task-analysis/SKILL.md +201 -0
- package/marketplace/skills/taxonomy-design/SKILL.md +66 -0
- package/marketplace/skills/test-coverage-strategy/SKILL.md +108 -0
- package/marketplace/skills/test-doubles-design/SKILL.md +98 -0
- package/marketplace/skills/test-driven-development/SKILL.md +96 -0
- package/marketplace/skills/testing-strategy/SKILL.md +67 -0
- package/marketplace/skills/theme-system-design/SKILL.md +43 -0
- package/marketplace/skills/tool-call-flow/SKILL.md +229 -0
- package/marketplace/skills/tool-call-strategy/SKILL.md +292 -0
- package/marketplace/skills/transaction-isolation/SKILL.md +98 -0
- package/marketplace/skills/type-safety/SKILL.md +177 -0
- package/marketplace/skills/typography-system/SKILL.md +43 -0
- package/marketplace/skills/usability-testing/SKILL.md +43 -0
- package/marketplace/skills/user-research/SKILL.md +43 -0
- package/marketplace/skills/vercel-composition-patterns/SKILL.md +157 -0
- package/marketplace/skills/version-control/SKILL.md +233 -0
- package/marketplace/skills/visual-design-foundations/SKILL.md +59 -0
- package/marketplace/skills/visual-hierarchy/SKILL.md +43 -0
- package/marketplace/skills/webhook-integration/SKILL.md +331 -0
- package/marketplace/skills/writing-humanizer/SKILL.md +380 -0
- package/package.json +67 -0
- package/schemas/manifest.schema.json +811 -0
- package/schemas/manifest.v2.schema.json +164 -0
- package/schemas/manifest.v3.schema.json +758 -0
- package/schemas/manifest.v4.schema.json +755 -0
- package/schemas/manifest.v5.schema.json +755 -0
- package/schemas/manifest.v6.schema.json +811 -0
- package/schemas/skill.context.jsonld +279 -0
- package/schemas/skill.schema.json +919 -0
- package/schemas/skill.v2.schema.json +201 -0
- package/schemas/skill.v3.schema.json +827 -0
- package/schemas/skill.v4.schema.json +822 -0
- package/schemas/skill.v5.schema.json +830 -0
- package/schemas/skill.v6.schema.json +946 -0
- package/schemas/vocabulary/keywords.json +180 -0
- package/schemas/vocabulary/workspace_tags.json +23 -0
- package/scripts/__tests__/migrate-skill-v2-to-v3.test.js +161 -0
- package/scripts/__tests__/migrate-skill-v3-to-v4.test.js +158 -0
- package/scripts/__tests__/test-export-parser-drift.js +149 -0
- package/scripts/__tests__/test-marketplace-export.js +114 -0
- package/scripts/__tests__/test-router-paths.js +82 -0
- package/scripts/__tests__/test-stability-promotion.js +244 -0
- package/scripts/__tests__/test-v3-1-alias-contract.js +109 -0
- package/scripts/__tests__/test-v3-1-skos-runtime.js +116 -0
- package/scripts/backfill-schema-version.js +198 -0
- package/scripts/build-field-reference.js +160 -0
- package/scripts/build-retrieval-baseline.js +511 -0
- package/scripts/check-markdown-links.js +211 -0
- package/scripts/check-protocol-consistency.js +979 -0
- package/scripts/export-marketplace-skills.js +610 -0
- package/scripts/export-skill.js +374 -0
- package/scripts/generate-manifest.js +787 -0
- package/scripts/lib/alias-contract.js +83 -0
- package/scripts/lib/audit-prompt-builder.js +771 -0
- package/scripts/lib/mock-grader.js +134 -0
- package/scripts/lib/parse-frontmatter.js +429 -0
- package/scripts/lib/roots.js +119 -0
- package/scripts/lint/check-archetype-sections.js +185 -0
- package/scripts/lint/check-category-enum.js +83 -0
- package/scripts/lint/check-routing-eval.js +146 -0
- package/scripts/lint/check-routing-quality.js +211 -0
- package/scripts/lint/check-stability-promotion.js +220 -0
- package/scripts/lint/format-code-frame.js +206 -0
- package/scripts/marketplace-install.js +125 -0
- package/scripts/migrate-category-to-enum.js +169 -0
- package/scripts/migrate-skill-v2-to-v3.js +424 -0
- package/scripts/migrate-skill-v3-to-v4.js +200 -0
- package/scripts/migrate-skill-v5-to-v6.js +304 -0
- package/scripts/restructure-by-category.js +85 -0
- package/scripts/seed-publication-classification.js +282 -0
- package/scripts/skill-audit.js +893 -0
- package/scripts/skill-graph-drift.js +483 -0
- package/scripts/skill-graph-route.js +766 -0
- package/scripts/skill-graph-routing-eval.js +393 -0
- package/scripts/skill-lint.js +1317 -0
- package/scripts/skill-overlap.js +213 -0
- package/scripts/verify-skill-md-export.js +201 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
# Marketplace Publication Priority — 2026-05-18 (ARCHIVED)
|
|
2
|
+
|
|
3
|
+
> **Archived 2026-05-18:** Superseded by [`../marketplace-publication-queue.generated.md`](../marketplace-publication-queue.generated.md), which is auto-generated by `skill-audit-loop@0.3.0` from [`../../data/publication-classification.json`](../../data/publication-classification.json). This snapshot is preserved for audit-trail grep and to document the curatorial reasoning that seeded the ledger.
|
|
4
|
+
>
|
|
5
|
+
> Updates and supersedes prior tier ordering in
|
|
6
|
+
> [`../marketplace-skill-candidate-list.md`](../marketplace-skill-candidate-list.md) (2026-05-13 inventory + 2026-05-14 migration)
|
|
7
|
+
> and [`../research/skill-demand-gap-roadmap-2026-05-16.md`](../research/skill-demand-gap-roadmap-2026-05-16.md).
|
|
8
|
+
>
|
|
9
|
+
> **Purpose:** prioritized publication queue for `github.com/jacob-balslev/skills` / `skills.sh/jacob-balslev/skills/`,
|
|
10
|
+
> ranked by **expected popularity** given current marketplace demand signals.
|
|
11
|
+
>
|
|
12
|
+
> **Scope filter (per [ADR 0008](./adr/0008-skill-surface-split-and-curation-policy.md)):**
|
|
13
|
+
> Sales-Hub-bound, customer-data-bearing, and personal/PII-bound skills are listed in the
|
|
14
|
+
> "Excluded" sections so the decision is auditable — none are recommended for publication
|
|
15
|
+
> in this pass.
|
|
16
|
+
|
|
17
|
+
## Current state (2026-05-18)
|
|
18
|
+
|
|
19
|
+
| Surface | Count | Notes |
|
|
20
|
+
|---|---:|---|
|
|
21
|
+
| Already published (jacob-balslev/skills) | 142 | mirrored at `skills/skills/` and `skill-graph/marketplace/skills/` |
|
|
22
|
+
| Personal-only candidates inspected | 204 | files in `~/Development/skills/` not in `skills/skills/` |
|
|
23
|
+
| → Classified PUBLISHABLE (this report) | **121** | tiered below |
|
|
24
|
+
| → Classified SALES-HUB-BOUND (excluded) | 41 | listed in § Excluded |
|
|
25
|
+
| → Classified PERSONAL-INFRA (excluded) | 42 | listed in § Excluded |
|
|
26
|
+
|
|
27
|
+
## Demand evidence refreshed 2026-05-18
|
|
28
|
+
|
|
29
|
+
| Source | Signal |
|
|
30
|
+
|---|---|
|
|
31
|
+
| skills.sh leaderboard | `find-skills` 1.5M, `frontend-design` 418k, `vercel-react-best-practices` 403k, `agent-browser` 277k, `skill-creator` 211k, `shadcn` 144k |
|
|
32
|
+
| SkillsMP corpus | 280k+ skills indexed by 2026-05; top categories Tools, Business, Development, Testing & Security, Data & AI, DevOps, Documentation |
|
|
33
|
+
| Anthropic official skills | `algorithmic-art`, `brand-guidelines`, `canvas-design`, `claude-api`, `doc-coauthoring`, `docx`, `frontend-design`, `internal-comms`, `mcp-builder`, `pdf`, `pptx`, `skill-creator`, `slack-gif-creator`, `theme-factory`, `web-artifacts-builder`, `webapp-testing`, `xlsx` |
|
|
34
|
+
| Firecrawl 2026 review | Top picks: Firecrawl, GStack, Superpowers, Frontend Design, Vercel React Best Practices, Composition Patterns, PDF/DOCX/XLSX/PPTX, Webapp Testing, Trail of Bits Security, Remotion, Skill Creator, Corey Haines Marketing |
|
|
35
|
+
| aitmpl.com | Featured: Bright Data Web Data, TinyFish Web Agents, ClaudeKit, BrainGrid Planning |
|
|
36
|
+
|
|
37
|
+
## How to read this list
|
|
38
|
+
|
|
39
|
+
- **Sanitize?** = SKILL.md body or description currently names Sales Hub, Printify shop IDs, `org_id`, or internal scripts and must be rewritten before publication.
|
|
40
|
+
- **Source** = `port` (rewrite root skill body unchanged where possible), `port+sanitize`, `rewrite` (deferred per 2026-05-14 privacy review), `author` (no root source — write from scratch).
|
|
41
|
+
- **Pop** = 1–5 expected install/usage popularity. 5★ maps directly to a top-10 skills.sh skill OR an Anthropic official slot. 4★ maps to a documented demand cluster.
|
|
42
|
+
- Per the repo's complete-reporting rule, **every** publishable candidate appears below. The user decides which to skip; nothing is filtered out unilaterally.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Tier S — Publish immediately (5★, n=18)
|
|
47
|
+
|
|
48
|
+
These map directly to top demand signals and have working source in `~/Development/skills/` or a clean rewrite path.
|
|
49
|
+
|
|
50
|
+
| # | Skill | Pop | Source | Sanitize? | Demand signal |
|
|
51
|
+
|---:|---|---:|---|---|---|
|
|
52
|
+
| 1 | `mcp-builder` | 5 | port | no | Anthropic official slot; "mcp server" search demand |
|
|
53
|
+
| 2 | `playwright-cli` *(→ playwright-browser-automation)* | 5 | port | minor | Anthropic `webapp-testing` analog; firecrawl 2026 top pick |
|
|
54
|
+
| 3 | `react-best-practices` | 5 | port+sanitize | yes | `vercel-react-best-practices` 403k installs |
|
|
55
|
+
| 4 | `next-best-practices` | 5 | port+sanitize | yes | skills.sh nextjs topic dedicated category |
|
|
56
|
+
| 5 | `next-cache-components` | 5 | port | minor | Next 16 `use cache` / `cacheLife` named on skills.sh |
|
|
57
|
+
| 6 | `hook-patterns` | 5 | port | minor | Claude Code hook lifecycle has no public canonical skill yet |
|
|
58
|
+
| 7 | `advanced-css-layout` | 5 | port | no | Subgrid + container queries + `:has()` + `@layer` — high evergreen demand |
|
|
59
|
+
| 8 | `pdf` | 5 | port | minor | Anthropic official slot |
|
|
60
|
+
| 9 | `vercel` *(→ vercel-deployment)* | 5 | port | minor | skills.sh Next/Vercel topic |
|
|
61
|
+
| 10 | `git-worktree` | 5 | rewrite | yes | skills.sh agent-workflows topic; parallel agents |
|
|
62
|
+
| 11 | `radix-ui` | 5 | port+sanitize | yes | `shadcn` 144k installs → Radix is the substrate |
|
|
63
|
+
| 12 | `autonomous-loop-patterns` | 5 | rewrite | yes | skills.sh "Ralph loops" + autonomous task loops |
|
|
64
|
+
| 13 | `dispatch-loop` | 5 | rewrite | yes | multi-agent dispatch — companion to autonomous-loop-patterns |
|
|
65
|
+
| 14 | `linear` *(→ linear-cli)* | 5 | port+sanitize | yes | Linear API/CLI integration — strong demand, no public canonical |
|
|
66
|
+
| 15 | `human-in-the-loop` | 5 | port | minor | every agent system needs this; no Anthropic equivalent yet |
|
|
67
|
+
| 16 | `chrome-devtools-mcp` | 5 | port | no | Chrome DevTools MCP is hot; debugging companion to playwright |
|
|
68
|
+
| 17 | `docker` | 5 | port | minor | every DevOps stack; firecrawl 2026 lists `infra-team` skills |
|
|
69
|
+
| 18 | `cursor` | 5 | port | minor | `.cursor/rules` authoring; cross-CLI portability angle |
|
|
70
|
+
|
|
71
|
+
## Tier A — High demand, second wave (4★, n=29)
|
|
72
|
+
|
|
73
|
+
Solid universal utility; clear demand cluster on skills.sh / SkillsMP.
|
|
74
|
+
|
|
75
|
+
| # | Skill | Pop | Source | Sanitize? | Notes |
|
|
76
|
+
|---:|---|---:|---|---|---|
|
|
77
|
+
| 19 | `agent-task-delegation` | 4 | rewrite | yes | subagent + dispatch patterns; skills.sh agent-workflows |
|
|
78
|
+
| 20 | `agent-messaging` | 4 | port+sanitize | yes | cross-agent comm patterns; companion to a2a-protocol |
|
|
79
|
+
| 21 | `agent-session-handoff` | 4 | rewrite | yes | session continuity; matches multi-agent demand |
|
|
80
|
+
| 22 | `chat-interface` | 4 | rewrite | yes | chat UI patterns; demand from AI app builders |
|
|
81
|
+
| 23 | `dark-mode` | 4 | port | minor | skills.sh design topic; companion to `dark-mode-implementation` (already pub) |
|
|
82
|
+
| 24 | `doc-co-authoring` | 4 | port | no | Anthropic official slot is `doc-coauthoring` |
|
|
83
|
+
| 25 | `doc-updater` | 4 | port+sanitize | yes | doc routing protocol — high demand |
|
|
84
|
+
| 26 | `docs-development` | 4 | port | minor | docs-as-code; broad audience |
|
|
85
|
+
| 27 | `editorial-standards` | 4 | port | no | doc quality bar; complements writing-humanizer |
|
|
86
|
+
| 28 | `email-templates` | 4 | port+sanitize | yes | email patterns; transactional + marketing |
|
|
87
|
+
| 29 | `form-input-ux` | 4 | port | minor | every app has forms |
|
|
88
|
+
| 30 | `frontend` | 4 | port | minor | umbrella router skill |
|
|
89
|
+
| 31 | `frontend-structure` | 4 | port | minor | folder + module conventions |
|
|
90
|
+
| 32 | `graphql` | 4 | port+sanitize | yes | GraphQL patterns; broad demand |
|
|
91
|
+
| 33 | `i18n` | 4 | port | minor | internationalization — every consumer app |
|
|
92
|
+
| 34 | `knowledge-graph` | 4 | port | minor | Skill Graph differentiation; complements `context-graph` |
|
|
93
|
+
| 35 | `linting` | 4 | port+sanitize | yes | ESLint + custom rule patterns |
|
|
94
|
+
| 36 | `memory-gardener` | 4 | port | minor | agent memory CRUD/index |
|
|
95
|
+
| 37 | `memory-prune` | 4 | port | minor | agent memory hygiene |
|
|
96
|
+
| 38 | `middleware-architecture` | 4 | port | no | Next.js/Express middleware patterns |
|
|
97
|
+
| 39 | `motion-design` | 4 | port | no | skills.sh design topic; `delight` adjacent |
|
|
98
|
+
| 40 | `no-cutting-corners` | 4 | port | no | quality doctrine; companion to `methodical` |
|
|
99
|
+
| 41 | `quality-doctrine` | 4 | port | no | per-artifact quality definitions |
|
|
100
|
+
| 42 | `methodical` | 4 | rewrite | yes | RLHF anti-patterns; very portable methodology |
|
|
101
|
+
| 43 | `self-evaluation` | 4 | port | no | 1-5 self-score pattern; agent quality |
|
|
102
|
+
| 44 | `self-review-pattern` | 4 | port | no | generate-critique-revise; eval discipline |
|
|
103
|
+
| 45 | `task-execution` | 4 | port | minor | task workflow; complements `prioritization` (already pub) |
|
|
104
|
+
| 46 | `task-lifecycle` | 4 | rewrite | yes | task state machine; agent ops |
|
|
105
|
+
| 47 | `wardley-mapping` | 4 | port | no | strategic mapping — surging demand 2026 |
|
|
106
|
+
|
|
107
|
+
## Tier B — Standard utility (3★, n=42)
|
|
108
|
+
|
|
109
|
+
Broad-audience publishables that round out the library.
|
|
110
|
+
|
|
111
|
+
| # | Skill | Pop | Source | Sanitize? | Notes |
|
|
112
|
+
|---:|---|---:|---|---|---|
|
|
113
|
+
| 48 | `adr` | 3 | port | no | already partial dup of `architecture-decision-records` — merge or supersede |
|
|
114
|
+
| 49 | `agent-behavior` | 3 | port | minor | agent behavior patterns |
|
|
115
|
+
| 50 | `agent-code-documentation` | 3 | port | no | code doc patterns for agent-edited code |
|
|
116
|
+
| 51 | `agent-loop-infra` | 3 | rewrite | yes | loop checkpoint state machine |
|
|
117
|
+
| 52 | `agent-observability` | 3 | port | minor | telemetry pipeline patterns |
|
|
118
|
+
| 53 | `agent-script-control` | 3 | port | minor | agent-driven shell control |
|
|
119
|
+
| 54 | `agent-task-brief` | 3 | port | minor | task spec authoring for agents |
|
|
120
|
+
| 55 | `agent-to-agent` | 3 | port | minor | A2A protocol primer |
|
|
121
|
+
| 56 | `agents` | 3 | port | minor | agent system overview |
|
|
122
|
+
| 57 | `ai-coding-agents` | 3 | port+sanitize | yes | agent roster + routing — popular topic |
|
|
123
|
+
| 58 | `backend` | 3 | port | minor | backend patterns umbrella |
|
|
124
|
+
| 59 | `backend-structure` | 3 | port | minor | backend folder/module conventions |
|
|
125
|
+
| 60 | `breakpoint-strategy` | 3 | port | no | responsive breakpoint design |
|
|
126
|
+
| 61 | `browser-support` | 3 | port | no | browser compat decisions |
|
|
127
|
+
| 62 | `categorization` | 3 | port | no | classification methodology |
|
|
128
|
+
| 63 | `code-logic` | 3 | port | minor | code reasoning patterns |
|
|
129
|
+
| 64 | `codebase-search` | 3 | port | minor | grep / glob / agent search patterns |
|
|
130
|
+
| 65 | `composition-theory` | 3 | port | no | composition primitives |
|
|
131
|
+
| 66 | `content-strategy` | 3 | port | no | content audit + lifecycle |
|
|
132
|
+
| 67 | `contracts` | 3 | port+sanitize | yes | software contract patterns |
|
|
133
|
+
| 68 | `copywriting` | 3 | port+sanitize | yes | marketing copy; sales-hub-flavored body |
|
|
134
|
+
| 69 | `csv` | 3 | port | no | CSV format patterns |
|
|
135
|
+
| 70 | `data-architect` | 3 | port | minor | data architecture role/patterns |
|
|
136
|
+
| 71 | `data-science` | 3 | port | minor | data science workflow |
|
|
137
|
+
| 72 | `data-sync` | 3 | port | minor | data sync patterns |
|
|
138
|
+
| 73 | `data-table-ux` | 3 | port | minor | TanStack Table adjacent |
|
|
139
|
+
| 74 | `data-viz` | 3 | port+sanitize | yes | chart selection patterns |
|
|
140
|
+
| 75 | `dead-code-detection` | 3 | port | minor | knip / ts-prune patterns |
|
|
141
|
+
| 76 | `dependency-management` | 3 | port | no | npm/pnpm patterns |
|
|
142
|
+
| 77 | `design-execution` | 3 | port+sanitize | yes | design implementation workflow |
|
|
143
|
+
| 78 | `design-guide` | 3 | port | yes | design system authoring |
|
|
144
|
+
| 79 | `design-qa-gate` | 3 | port | minor | design QA pattern |
|
|
145
|
+
| 80 | `design-review` | 3 | port | minor | design review checklist |
|
|
146
|
+
| 81 | `design-token-architecture` | 3 | port | minor | design token system |
|
|
147
|
+
| 82 | `digital-empire` | 3 | port | yes | business model patterns; consider rename |
|
|
148
|
+
| 83 | `dnd-kit` | 3 | port | no | drag-and-drop patterns |
|
|
149
|
+
| 84 | `dorothy` | 3 | port | yes | dialog/decision methodology; consider rename |
|
|
150
|
+
| 85 | `ecosystem-modeling` | 3 | port | minor | ecosystem mapping |
|
|
151
|
+
| 86 | `edge-case-matrix` | 3 | port | no | edge case enumeration |
|
|
152
|
+
| 87 | `experiment` | 3 | port | minor | experimentation workflow |
|
|
153
|
+
| 88 | `feature-gating` | 3 | port | minor | feature flag patterns |
|
|
154
|
+
| 89 | `feedback-collection` | 3 | port | minor | feedback loop patterns |
|
|
155
|
+
|
|
156
|
+
## Tier C — Niche but publishable (2★, n=32)
|
|
157
|
+
|
|
158
|
+
Lower demand or narrower audience. Phase 3 batch.
|
|
159
|
+
|
|
160
|
+
| # | Skill | Pop | Source | Sanitize? | Notes |
|
|
161
|
+
|---:|---|---:|---|---|---|
|
|
162
|
+
| 90 | `file-splitting` | 2 | port | no | file size discipline |
|
|
163
|
+
| 91 | `folder-structure` | 2 | port | minor | folder org patterns |
|
|
164
|
+
| 92 | `ghostty` | 2 | port | minor | Ghostty terminal config |
|
|
165
|
+
| 93 | `glossary` | 2 | port | no | terminology management |
|
|
166
|
+
| 94 | `identifying-bottlenecks` | 2 | port | minor | perf bottleneck triage |
|
|
167
|
+
| 95 | `ontology` | 2 | port | no | already partial dup of `ontology-modeling` — merge |
|
|
168
|
+
| 96 | `ooda-loop` | 2 | port | no | OODA methodology |
|
|
169
|
+
| 97 | `orchestration` | 2 | rewrite | yes | orchestration patterns |
|
|
170
|
+
| 98 | `perceptual-integration` | 2 | port | minor | UX perception patterns |
|
|
171
|
+
| 99 | `perspective` | 2 | rewrite | yes | viewpoint/framing methodology |
|
|
172
|
+
| 100 | `provider-abstraction` | 2 | port+sanitize | yes | provider adapter patterns |
|
|
173
|
+
| 101 | `rate-limiting` | 2 | port | minor | rate limiting patterns |
|
|
174
|
+
| 102 | `repository-structure` | 2 | port | minor | monorepo structure patterns |
|
|
175
|
+
| 103 | `responsive` | 2 | port | no | responsive design patterns |
|
|
176
|
+
| 104 | `review-tooling` | 2 | port | minor | code review tools survey |
|
|
177
|
+
| 105 | `scss-expert` | 2 | port | no | SCSS patterns |
|
|
178
|
+
| 106 | `seo-audit` | 2 | port+sanitize | yes | SEO audit checklist |
|
|
179
|
+
| 107 | `sequential-thinking` | 2 | rewrite | yes | sequential reasoning method |
|
|
180
|
+
| 108 | `session-lifecycle` | 2 | rewrite | yes | session hygiene |
|
|
181
|
+
| 109 | `session-progression` | 2 | port | minor | session state progression |
|
|
182
|
+
| 110 | `session-structure` | 2 | port | minor | session shape patterns |
|
|
183
|
+
| 111 | `shape-up` | 2 | port | no | Basecamp Shape Up methodology |
|
|
184
|
+
| 112 | `site-architecture` | 2 | port | minor | IA patterns |
|
|
185
|
+
| 113 | `skill-evolution` | 2 | port | minor | corpus walker pattern |
|
|
186
|
+
| 114 | `skill-portability` | 2 | port | minor | cross-CLI conversion |
|
|
187
|
+
| 115 | `streaming` | 2 | rewrite | yes | streaming patterns |
|
|
188
|
+
| 116 | `task-evaluation` | 2 | port | minor | task quality scoring |
|
|
189
|
+
| 117 | `task-path-optimization` | 2 | port | minor | task graph optimization |
|
|
190
|
+
| 118 | `task-progression` | 2 | rewrite | yes | task state progression |
|
|
191
|
+
| 119 | `task-sizing` | 2 | rewrite | yes | task sizing methodology |
|
|
192
|
+
| 120 | `task-structure` | 2 | port | minor | task shape patterns |
|
|
193
|
+
| 121 | `taxonomy` | 2 | port | no | already partial dup of `taxonomy-design` — merge |
|
|
194
|
+
| 122 | `teaching-patterns` | 2 | port | no | teaching/onboarding patterns |
|
|
195
|
+
| 123 | `technical-debt` | 2 | port | no | tech debt tracking |
|
|
196
|
+
| 124 | `test-coverage` | 2 | port+sanitize | yes | dup of `test-coverage-strategy` — merge |
|
|
197
|
+
| 125 | `test-generator` | 2 | port | minor | test scaffolding patterns |
|
|
198
|
+
| 126 | `theme-factory` | 2 | port | no | Anthropic official slot — port may conflict |
|
|
199
|
+
| 127 | `threaded-conversations` | 2 | rewrite | yes | threaded UI patterns |
|
|
200
|
+
| 128 | `todo-lists` | 2 | port | no | TODO/task UI patterns |
|
|
201
|
+
| 129 | `token-cost-estimation` | 2 | rewrite | yes | LLM token cost math |
|
|
202
|
+
| 130 | `token-efficiency` | 2 | rewrite | yes | token-efficient agent patterns |
|
|
203
|
+
| 131 | `tui` | 2 | rewrite | yes | terminal UI patterns |
|
|
204
|
+
| 132 | `typography` | 2 | port | no | dup of `typography-system` — merge |
|
|
205
|
+
| 133 | `ui-ux` | 2 | port+sanitize | yes | UI/UX checklist |
|
|
206
|
+
| 134 | `ux-ui-patterns` | 2 | port | no | UX pattern library |
|
|
207
|
+
| 135 | `value-engineering` | 2 | port | no | value engineering methodology |
|
|
208
|
+
| 136 | `visual-design` | 2 | port | no | dup of `visual-design-foundations` — merge |
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Excluded — Sales-Hub-bound (41, not recommended)
|
|
213
|
+
|
|
214
|
+
Listed for auditability. These name internal schemas (`order_events`, `orgQuery`, Printify shop IDs), customer-data flows, or vendor reconciliation logic specific to my product:
|
|
215
|
+
|
|
216
|
+
`a2a-protocol`, `anomaly-detection`, `api-key-management`, `audit-traceability`, `backfill-patterns`, `banking`, `benchmarking-engine`, `bulk-operations`, `business-structure`, `canonical-unification`, `configuration-patterns`, `connector-blueprint`, `cost-aggregation`, `credential-encryption`, `csv-import-adapters`, `customer-journey`, `dashboard-modules`, `data-reconciliation`, `demo-data-seeding`, `deterministic`, `domain-modeling`, `duplicate-detection`, `encryption`, `entity-resolution`, `entity-status`, `financial-allocation`, `financial-display-contract`, `financial-metrics`, `fulfillment`, `gdpr-compliance`, `inngest-orchestration`, `invoice`, `kpi-cards`, `materialization-expert`, `multi-tenancy-rls`, `nextauth-patterns`, `page-cro`, `payment-lifecycle`, `product-photo`, `receipts`, `sales-channels`, `security-scanning`, `state-machine-patterns`, `stripe-ledger-recon`, `structured-logging`, `system-resilience`, `system-watchdog`, `temporal-data-patterns`, `troubleshooting`, `url-state-management`, `user-research-synthesis`, `vulnerability`, `websocket`
|
|
217
|
+
|
|
218
|
+
## Excluded — Personal-infra / monorepo-only (42, not recommended)
|
|
219
|
+
|
|
220
|
+
These describe my `~/Development` orchestration stack (`/workflow/` commands, Ghostty tabs, grind-loop, dispatch-loop scripts, Linear team SH-XXXX, agent-orchestration state files) and have no audience outside this monorepo:
|
|
221
|
+
|
|
222
|
+
`agent-control`, `agent-engineering`, `agent-governance`, `agent-identity`, `agent-information-ontology`, `agent-infrastructure`, `agent-orchestration`, `board-triage`, `color-science`, `conductor`, `cron-scheduling`, `design-thinking`, `diff-analysis`, `environment`, `error-tracking`, `evaluation`, `harness-engineering`, `module-components`, `orchestrator-ui`, `prioritization`, `problem-locating-solving`, `refactor`, `shopify`, `skill-infrastructure`, `skill-scaffold`, `vibe-kanban`, `writing-humanizer`
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## Recommended execution batches
|
|
227
|
+
|
|
228
|
+
| Batch | Cohort | Skills | Effort | Owner |
|
|
229
|
+
|---|---|---|---|---|
|
|
230
|
+
| **P1** | Tier S #1-9 | mcp-builder, playwright-browser-automation, react-best-practices, next-best-practices, next-cache-components, hook-patterns, advanced-css-layout, pdf, vercel-deployment | ~9 ports, 4 needing light sanitization | skill-graph |
|
|
231
|
+
| **P2** | Tier S #10-18 + privacy rewrites | git-worktree, radix-ui, autonomous-loop-patterns, dispatch-loop, linear-cli, human-in-the-loop, chrome-devtools-mcp, docker, cursor | ~5 ports + 4 privacy rewrites | skill-graph |
|
|
232
|
+
| **P3** | Tier A docs + agent ops | doc-updater, doc-co-authoring, docs-development, editorial-standards, no-cutting-corners, methodical, quality-doctrine, self-evaluation, self-review-pattern | mostly direct ports | skill-graph |
|
|
233
|
+
| **P4** | Tier A frontend + UX | dark-mode, form-input-ux, frontend, frontend-structure, motion-design, i18n, middleware-architecture, graphql, email-templates | mix of port + sanitize | skill-graph |
|
|
234
|
+
| **P5** | Tier A agent comms | agent-task-delegation, agent-messaging, agent-session-handoff, chat-interface, knowledge-graph, memory-gardener, memory-prune | privacy rewrites + ports | skill-graph |
|
|
235
|
+
| **P6** | Tier B + C catch-up | remainder, run through `node skill-graph/scripts/export-marketplace-skills.js` after sanitization batch | bulk port pipeline | skill-graph |
|
|
236
|
+
|
|
237
|
+
## Completeness claim
|
|
238
|
+
|
|
239
|
+
This report covers **all 121 publishable candidates** identified across the 204 personal-only skills (`~/Development/skills/` minus `~/Development/skills/skills/`). Sales-Hub-bound (41) and personal-infra (42) candidates are listed by name for auditability; none are recommended in this pass. The total of 121 + 41 + 42 = 204 reconciles to the diff size.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# ADR 0001 — Relation Predicate Set
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted with revision per ADR 0006 (the `boundary -> disjoint_with` rename in Decision #2 was reverted; Decisions #1, #3, and #4 stand unchanged).
|
|
4
|
+
- **Original acceptance:** 2026-04-20
|
|
5
|
+
- **Revision:** 2026-05-04 (see `docs/adr/0006-revise-predicate-rename.md`)
|
|
6
|
+
- **Deciders:** Skill Graph maintainers
|
|
7
|
+
- **Consulted:** SKOS Reference (W3C 2009), PROV-O (W3C 2013), Gruber 1995 on ontology design, Guarino & Welty OntoClean, Wilkinson et al. 2016 on FAIR
|
|
8
|
+
|
|
9
|
+
## Context
|
|
10
|
+
|
|
11
|
+
Skill Graph models inter-skill relationships with typed edges under `relations.*`. Through v3 the predicate set was four keys: `adjacent`, `boundary`, `verify_with`, `depends_on`. An external audit (2026-04-20) flagged that the chosen names diverge from established W3C vocabularies (SKOS, PROV-O, Dublin Core Terms), blocking FAIR Interoperability and making the graph harder to reuse in federated knowledge-graph tooling.
|
|
12
|
+
|
|
13
|
+
The audit proposed:
|
|
14
|
+
|
|
15
|
+
1. Rename `adjacent` → `related` to align with `skos:related`.
|
|
16
|
+
2. Decompose `boundary` into an ownership-style `disjoint_with` (OWL `disjointWith` semantics) — `boundary` currently conflates "there is an edge" with "the edge is explicitly-not-ownership". **(Revised by ADR 0006: `boundary` and `owl:disjointWith` operate at different semantic layers — routing vs formal class-theory — so the two relations are not aliases. `boundary` stays canonical for routing-layer asymmetric handoff; `disjoint_with` becomes a separate orthogonal relation for formal OWL class-disjointness.)**
|
|
17
|
+
3. Add `broader` / `narrower` to express cross-skill generalisation that `category` cannot capture.
|
|
18
|
+
4. Keep `verify_with` and `depends_on` — they have no clean SKOS equivalent and map instead to `prov:wasInformedBy` and `dcterms:requires` respectively.
|
|
19
|
+
|
|
20
|
+
## Decision
|
|
21
|
+
|
|
22
|
+
Accept all four proposals, with an **additive, backward-compatible** rollout:
|
|
23
|
+
|
|
24
|
+
1. Extend the `relations` schema to accept `related`, `broader`, `narrower`, and `disjoint_with` as optional predicates.
|
|
25
|
+
2. Keep `adjacent` and `boundary` valid. `adjacent` becomes an alias for `related`. `boundary` ~~becomes an alias for `disjoint_with`~~ **stays canonical for routing-layer asymmetric handoff per ADR 0006; `disjoint_with` becomes a separate orthogonal relation for formal OWL class-disjointness, not an alias.**
|
|
26
|
+
3. Emit a `skill-lint.js` warning (not error) when `adjacent` or `boundary` is used. The warning points at the preferred name and the v4 deprecation target.
|
|
27
|
+
4. Map all six predicates to their W3C equivalents via `schemas/skill.context.jsonld`. Consumers gain RDF-projectable semantics without changing the authoring surface.
|
|
28
|
+
5. Target v4 for removal of the deprecated names. No v3 skill needs to change. The predicate set does not become breaking until the v4 schema bump.
|
|
29
|
+
|
|
30
|
+
## Rationale
|
|
31
|
+
|
|
32
|
+
- **SKOS alignment is cheap and buys FAIR Interoperability.** `skos:related` is the 17-year-old W3C standard for symmetric associative relations between concepts. Using `related` as the preferred name means a third-party tool that already understands SKOS can consume the Skill Graph with a single `@context` declaration. No parser rewrites.
|
|
33
|
+
- **`broader` / `narrower` close a real gap.** Cross-skill generalisation (e.g. "`react-best-practices` is narrower than `frontend`") is currently unexpressable — `category` captures only taxonomy-tree hierarchy within a category, not skill-to-skill generalisation. SKOS solved this exact problem. Adopting the solved solution is correct.
|
|
34
|
+
- **`disjoint_with` makes anti-ownership semantics explicit.** `boundary` was invented vocabulary. Decomposing it into "there is a relation AND the relation is disjointness" matches OWL's `owl:disjointWith` and lets graph consumers reason about exclusion without special-casing a Skill-Graph-only predicate.
|
|
35
|
+
- **Additive, backward-compatible rollout respects code in the wild.** Hundreds of skills in the Development workspace use `adjacent` / `boundary` today. A breaking rename would force a coordinated library-wide edit. Additive-with-deprecation costs one lint-warning pass and buys the same interoperability.
|
|
36
|
+
- **`verify_with` and `depends_on` stay as-is.** `verify_with` is a provenance relation (PROV-O `wasInformedBy`) not a classification relation. `depends_on` is a pragmatic prerequisite (`dcterms:requires`) not a conceptual hierarchy. Neither has a SKOS analogue and both carry intent that would be lost if forced into SKOS naming.
|
|
37
|
+
|
|
38
|
+
## Consequences
|
|
39
|
+
|
|
40
|
+
### Positive
|
|
41
|
+
|
|
42
|
+
- JSON-LD `@context` file (`schemas/skill.context.jsonld`) ships alongside this ADR; any Skill Graph SKILL.md can be projected into RDF/OWL consumers.
|
|
43
|
+
- Cross-skill generalisation is now expressible via `broader` / `narrower` without changing the taxonomy tree.
|
|
44
|
+
- Lint warnings surface the rename before v4 forces it.
|
|
45
|
+
- FAIR Interoperability moves from *weak* to *strong* without changing the author-facing shape.
|
|
46
|
+
|
|
47
|
+
### Negative
|
|
48
|
+
|
|
49
|
+
- Two predicate names for the same concept during the v3 → v4 window. Authors must know that `adjacent` and `related` mean the same thing; the field-reference doc is extended to say so loudly.
|
|
50
|
+
- Slight schema growth (four new optional keys). Mitigated because they are all optional, the JSON Schema cost is negligible, and the documentation grows proportionally.
|
|
51
|
+
|
|
52
|
+
### Neutral
|
|
53
|
+
|
|
54
|
+
- Consumers that only read `adjacent` / `boundary` continue to work unchanged.
|
|
55
|
+
- Consumers written against `skos:related` / `skos:broader` etc. can be fed the @context-expanded JSON-LD projection with no Skill-Graph-specific code.
|
|
56
|
+
|
|
57
|
+
## References
|
|
58
|
+
|
|
59
|
+
- W3C SKOS Reference — https://www.w3.org/TR/skos-reference/
|
|
60
|
+
- W3C PROV-O — https://www.w3.org/TR/prov-o/
|
|
61
|
+
- Dublin Core Metadata Terms — https://www.dublincore.org/specifications/dublin-core/dcmi-terms/
|
|
62
|
+
- Gruber, T. (1995). *Toward principles for the design of ontologies used for knowledge sharing.* International Journal of Human-Computer Studies 43(5-6):907-928.
|
|
63
|
+
- Guarino, N. & Welty, C. *Evaluating Ontological Decisions with OntoClean.* Communications of the ACM 45(2):61-65.
|
|
64
|
+
- Wilkinson, M. D. et al. (2016). *The FAIR Guiding Principles for scientific data management and stewardship.* Scientific Data 3:160018. DOI:10.1038/sdata.2016.18.
|
|
65
|
+
- SPDX License List (ISO/IEC 5962:2021) — https://spdx.org/licenses/
|
|
66
|
+
|
|
67
|
+
## Supersedes
|
|
68
|
+
|
|
69
|
+
- Skill Graph v3.0 implicit predicate choice — this ADR documents the decision retrospectively so v3.x additions trace back to a cited rationale rather than "we invented these names".
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# ADR 0002 — JSON-LD @context for W3C Interoperability
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted (2026-04-20)
|
|
4
|
+
- **Deciders:** Skill Graph maintainers
|
|
5
|
+
- **Relates to:** ADR 0001 (Predicate Set), FAIR Wilkinson et al. 2016
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
The external audit of 2026-04-20 identified **FAIR Interoperability** as the Skill Metadata Protocol's weakest dimension. The contract was self-consistent but isolated — no machine-readable mapping to established W3C vocabularies (SKOS, Dublin Core Terms, PROV-O, SPDX, schema.org). Third parties wanting to consume protocol metadata in a federated knowledge-graph tool or a generic RDF triplestore had no adapter path short of writing Skill-Metadata-Protocol-specific code.
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
|
|
13
|
+
Ship `schemas/skill.context.jsonld` — a JSON-LD `@context` file that maps every authored Skill Graph field to its nearest W3C standard term. Authors do not need to change anything. Consumers that want RDF semantics apply the `@context` and receive standard SKOS / DC Terms / PROV-O triples.
|
|
14
|
+
|
|
15
|
+
Field-to-vocabulary mapping summary:
|
|
16
|
+
|
|
17
|
+
| Skill Graph | Mapped to | Vocabulary |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| `name` | `dcterms:identifier` | Dublin Core Terms |
|
|
20
|
+
| `description` | `dcterms:description` | Dublin Core Terms |
|
|
21
|
+
| `version` | `dcterms:hasVersion` | Dublin Core Terms |
|
|
22
|
+
| `owner` | `dcterms:creator` | Dublin Core Terms |
|
|
23
|
+
| `license` | `dcterms:license` | Dublin Core Terms (SPDX identifier) |
|
|
24
|
+
| `freshness` | `dcterms:modified` (xsd:date) | Dublin Core Terms |
|
|
25
|
+
| `superseded_by` | `prov:wasRevisionOf` | PROV-O |
|
|
26
|
+
| `workspace_tags` | `dcterms:audience` (set) | Dublin Core Terms |
|
|
27
|
+
| `keywords` | `dcat:keyword` (set) | DCAT |
|
|
28
|
+
| `category` | `skos:broader` (chain) | SKOS |
|
|
29
|
+
| `adjacent` / `related` | `skos:related` | SKOS |
|
|
30
|
+
| `broader` | `skos:broader` | SKOS |
|
|
31
|
+
| `narrower` | `skos:narrower` | SKOS |
|
|
32
|
+
| `boundary` / `disjoint_with` | `sg:disjointOwnership` (custom; decomposes to `skos:related` + `owl:disjointWith`) | SKOS+OWL |
|
|
33
|
+
| `verify_with` | `prov:wasInformedBy` | PROV-O |
|
|
34
|
+
| `depends_on` | `dcterms:requires` | Dublin Core Terms |
|
|
35
|
+
| `extends` | `prov:wasDerivedFrom` | PROV-O |
|
|
36
|
+
| `truth_sources` | `dcterms:source` | Dublin Core Terms |
|
|
37
|
+
| `drift_check.last_verified` | `prov:generatedAtTime` | PROV-O |
|
|
38
|
+
| `type`, `scope`, `category`, `routing_bundles`, `grounding.*`, `eval_*`, `lifecycle.*`, `runtime_telemetry.*`, `portability.*`, `compatibility.*` | `sg:*` custom namespace | Skill Graph vocabulary (no W3C analogue) |
|
|
39
|
+
|
|
40
|
+
Custom predicates live under `https://skillgraph.dev/vocab#` (`sg:` prefix). Everything that has a W3C equivalent is mapped to the equivalent, not rediscovered.
|
|
41
|
+
|
|
42
|
+
## Rationale
|
|
43
|
+
|
|
44
|
+
- **JSON-LD is additive, non-invasive.** Authors keep writing plain YAML. The `@context` file sits next to the schema. Consumers that want RDF apply it; consumers that don't, don't.
|
|
45
|
+
- **W3C vocabularies are 15+ years old and have deep tooling support.** Adopting them is cheaper than publishing a competing vocabulary.
|
|
46
|
+
- **Dual-layer mapping strategy.** Fields with clean W3C analogues (roughly 70% per audit) map to the analogue. Fields without (archetype, scope, eval-health triple, grounding, readiness) stay in the `sg:` namespace and are documented.
|
|
47
|
+
- **SPDX is already an ISO standard.** Our `license` field already uses SPDX identifiers; JSON-LD makes that machine-resolvable.
|
|
48
|
+
|
|
49
|
+
## Consequences
|
|
50
|
+
|
|
51
|
+
### Positive
|
|
52
|
+
|
|
53
|
+
- Skill Graph becomes one `@context` away from RDF — no parser changes.
|
|
54
|
+
- Federated tools (Skosmos, WebVOWL, generic SPARQL endpoints) can ingest a Skill Graph library with zero Skill-Graph-specific adapter code.
|
|
55
|
+
- FAIR Interoperability moves from Weak to Strong.
|
|
56
|
+
- Future "cross-repo skill federation" work is unblocked.
|
|
57
|
+
|
|
58
|
+
### Negative
|
|
59
|
+
|
|
60
|
+
- One more file to keep in sync. Mitigated by the protocol-consistency checker: if `schemas/skill.v3.schema.json` adds a field, the `@context` must add a mapping.
|
|
61
|
+
- The `sg:` custom namespace is not yet served from `https://skillgraph.dev/vocab#`. The ID is reserved; publishing the live resolvable vocabulary is tracked separately.
|
|
62
|
+
|
|
63
|
+
### Neutral
|
|
64
|
+
|
|
65
|
+
- Authors see no change.
|
|
66
|
+
- CI runs no new check today; the consistency check is a follow-up.
|
|
67
|
+
|
|
68
|
+
## Verification
|
|
69
|
+
|
|
70
|
+
- `schemas/skill.context.jsonld` exists and is valid JSON.
|
|
71
|
+
- Every required authored field (`schema_version`, `name`, `description`, `version`, `type`, `category`, `scope`, `owner`, `freshness`, `drift_check`, `eval_artifacts`, `eval_state`, `routing_eval`) has a mapping.
|
|
72
|
+
- Every `relations.*` predicate has a mapping.
|
|
73
|
+
- Custom `sg:` IRIs are defined consistently.
|
|
74
|
+
|
|
75
|
+
## References
|
|
76
|
+
|
|
77
|
+
- JSON-LD 1.1 — https://www.w3.org/TR/json-ld11/
|
|
78
|
+
- DCMI Metadata Terms — https://www.dublincore.org/specifications/dublin-core/dcmi-terms/
|
|
79
|
+
- SKOS Reference — https://www.w3.org/TR/skos-reference/
|
|
80
|
+
- PROV-O — https://www.w3.org/TR/prov-o/
|
|
81
|
+
- DCAT 3 — https://www.w3.org/TR/vocab-dcat-3/
|
|
82
|
+
- FAIR Principles — Wilkinson et al. 2016, DOI:10.1038/sdata.2016.18
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# ADR 0003 — OntoClean Rigidity Tags for Archetypes
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted (2026-04-20)
|
|
4
|
+
- **Deciders:** Skill Graph maintainers
|
|
5
|
+
- **Relates to:** ADR 0001 (Predicate Set)
|
|
6
|
+
- **Method:** Guarino & Welty, *Evaluating Ontological Decisions with OntoClean*
|
|
7
|
+
|
|
8
|
+
## Context
|
|
9
|
+
|
|
10
|
+
The external audit of 2026-04-20 flagged a latent modelling bug: the combination of `type: overlay` + `extends` + `category` can accidentally subsume a rigid category under an anti-rigid overlay. In OntoClean terms, an anti-rigid property cannot have a rigid property as its subclass — doing so produces unsatisfiable class hierarchies. The audit asked for explicit rigidity tagging on each archetype so authors and reviewers can recognise the violation before it ships.
|
|
11
|
+
|
|
12
|
+
## Decision
|
|
13
|
+
|
|
14
|
+
Annotate each archetype with four OntoClean meta-properties: **Rigidity (R)**, **Identity (I)**, **Unity (U)**, **Dependence (D)**.
|
|
15
|
+
|
|
16
|
+
| Archetype | Rigidity | Identity | Unity | Dependence |
|
|
17
|
+
|---|---|---|---|---|
|
|
18
|
+
| `capability` | **+R** (rigid) — a capability is what the skill *is*, essentially | **+I** — has its own identity criteria | **+U** — unitary scope | **-D** — does not existentially depend on another skill |
|
|
19
|
+
| `workflow` | **+R** (rigid) — the workflow is the essence | **+I** — has its own identity | **+U** — unitary procedure | **-D** — does not depend on another skill |
|
|
20
|
+
| `router` | **~R** (semi-rigid) — the router is defined by what it dispatches to; its essence can shift | **-I** — identity is inherited from the dispatch set | **~U** — scope is the union of targets | **+D** — depends on target skills for meaning |
|
|
21
|
+
| `overlay` | **-R** (anti-rigid) — an overlay's essence is "specialisation of X" and vanishes without X | **-I** — identity inherited from parent | **-U** — scope is parent-relative | **+D** — existentially depends on `extends` target |
|
|
22
|
+
|
|
23
|
+
### The constraint
|
|
24
|
+
|
|
25
|
+
OntoClean's key constraint: **an anti-rigid property cannot subsume a rigid property.** Applied here:
|
|
26
|
+
|
|
27
|
+
- An `overlay` (-R) cannot have a `capability`/`workflow` (+R) as `extends` target such that the overlay would *replace* the capability's identity. Overlay must *specialise* — inherit identity from parent, not redefine it.
|
|
28
|
+
- A `capability` (+R) cannot be declared an overlay of another `capability` — that is a +R under -R chain.
|
|
29
|
+
|
|
30
|
+
### The test
|
|
31
|
+
|
|
32
|
+
During skill authoring and review, for any `type: overlay`, answer yes to both:
|
|
33
|
+
|
|
34
|
+
1. Does the overlay's identity *depend* on the parent's identity? (If the parent were deleted, would the overlay become meaningless?)
|
|
35
|
+
2. Does the overlay *specialise* rather than *replace* the parent's scope?
|
|
36
|
+
|
|
37
|
+
If either answer is no, the skill is not an overlay — it is a separate `capability` or `workflow`. Change the `type` accordingly.
|
|
38
|
+
|
|
39
|
+
## Rationale
|
|
40
|
+
|
|
41
|
+
- **OntoClean is a battle-tested method for catching exactly this class of bug.** Guarino & Welty demonstrated it against WordNet and found hundreds of subsumption errors that had sat undetected. Applying it to four archetypes is trivial by comparison.
|
|
42
|
+
- **Explicit tags beat implicit assumptions.** Today the constraints exist informally — an author "just knows" that overlay specialises. The tags make the knowledge discoverable in the field-reference.
|
|
43
|
+
- **The rigidity tags cost nothing at runtime.** They are documentation. No schema change, no lint rule.
|
|
44
|
+
- **They unlock a future lint rule.** A v4 lint check can read the tags and warn when an overlay's body rewrites the parent's `## Coverage` (a signal of replacement, not specialisation). That is cheap to add once the tags are canonical.
|
|
45
|
+
|
|
46
|
+
## Consequences
|
|
47
|
+
|
|
48
|
+
### Positive
|
|
49
|
+
|
|
50
|
+
- Documentation gains a principled explanation of why `overlay` is different from the other archetypes.
|
|
51
|
+
- Future lint rules can reference the tags instead of inventing ad-hoc heuristics.
|
|
52
|
+
- Authors writing their first overlay have a concrete test to run against.
|
|
53
|
+
|
|
54
|
+
### Negative
|
|
55
|
+
|
|
56
|
+
- Minor cognitive load in the field-reference. Mitigated by keeping the tags in a single summary table, not repeated per field.
|
|
57
|
+
|
|
58
|
+
### Neutral
|
|
59
|
+
|
|
60
|
+
- Existing skills do not need updating; the tags describe properties the archetypes already had implicitly.
|
|
61
|
+
|
|
62
|
+
## References
|
|
63
|
+
|
|
64
|
+
- Guarino, N. & Welty, C. A. (2002). *Evaluating Ontological Decisions with OntoClean.* Communications of the ACM 45(2):61-65.
|
|
65
|
+
- Guarino, N. & Welty, C. *An Overview of OntoClean.* In *Handbook on Ontologies*, Springer 2009, pp. 201-220.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# ADR 0004 — Persistent Identifiers via URN
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted (2026-04-20)
|
|
4
|
+
- **Deciders:** Skill Graph maintainers
|
|
5
|
+
- **Relates to:** ADR 0002 (JSON-LD @context), FAIR Findability
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
The external audit of 2026-04-20 found that Skill Graph covers FAIR Findability well *within a single repository* (via `name`, `keywords`, `triggers`, `examples`, `category`) but has **no globally unique persistent identifier**. `name` is unique only inside one repo; two workspaces both shipping a skill called `knowledge-graph` have no way to be told apart. This blocks cross-repo federation, registry publication, and long-term citation.
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
|
|
13
|
+
Introduce an **optional** top-level `urn` field in v3 (additive, non-breaking) and make it **required** in v4 (breaking, one major bump away). The URN follows the syntax:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
urn:skill:<repo-slug>:<skill-name>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Examples:
|
|
20
|
+
|
|
21
|
+
- `urn:skill:skill-graph:knowledge-graph`
|
|
22
|
+
- `urn:skill:<placeholder-repo-a>:data-table-ux`
|
|
23
|
+
- `urn:skill:<placeholder-repo-b>:order-fulfillment`
|
|
24
|
+
- `urn:skill:<placeholder-repo-c>:seo-keywords`
|
|
25
|
+
|
|
26
|
+
Rules:
|
|
27
|
+
|
|
28
|
+
1. `<repo-slug>` is the publishing repo's canonical short handle. Lowercase, hyphen-separated, `[a-z0-9-]+`.
|
|
29
|
+
2. `<skill-name>` must match the skill's `name` field.
|
|
30
|
+
3. The `urn` value must be globally unique. A registry (future work) resolves URNs to skill manifests.
|
|
31
|
+
4. Consumers treat the URN as the stable identity. `name` is display-layer.
|
|
32
|
+
5. The URN is the `@id` in the JSON-LD projection (see ADR 0002).
|
|
33
|
+
|
|
34
|
+
Regex: `^urn:skill:[a-z0-9][a-z0-9-]*:[a-z0-9][a-z0-9-/:]*$`
|
|
35
|
+
|
|
36
|
+
## Rationale
|
|
37
|
+
|
|
38
|
+
- **URN is the right tool.** RFC 8141 defines URNs as namespaced, resolvable-optional, persistent. The `urn:skill:` namespace can be registered with IANA later; the scheme is valid without registration because URNs are syntactic identifiers.
|
|
39
|
+
- **Globally unique beats locally unique.** A federated registry, cross-repo import, or long-term citation all require global identity. `name` cannot carry that load.
|
|
40
|
+
- **Optional-in-v3, required-in-v4 respects existing libraries.** No skill needs to ship a URN today. Authors can add them incrementally. The schema bump consolidates the change with other v4 breaking changes so there is no "URN-only bump".
|
|
41
|
+
- **URN over URL.** URLs imply web resolvability; we are not yet running a resolver. URN is honest about the identifier-only role. If we ever add a resolver, the URN can still be the canonical ID and the URL becomes the resolution endpoint.
|
|
42
|
+
|
|
43
|
+
## Consequences
|
|
44
|
+
|
|
45
|
+
### Positive
|
|
46
|
+
|
|
47
|
+
- FAIR Findability moves from "repo-local" to "global".
|
|
48
|
+
- Cross-repo skill federation is unblocked.
|
|
49
|
+
- Long-term citation is possible — an external doc can cite `urn:skill:skill-graph:knowledge-graph@1.0.0` as a stable reference.
|
|
50
|
+
- JSON-LD projection gains a proper `@id` instead of inventing one from the `name`.
|
|
51
|
+
|
|
52
|
+
### Negative
|
|
53
|
+
|
|
54
|
+
- Skills without URNs in v3 are identifiable only by `name` + repo context. Acceptable because the field is optional.
|
|
55
|
+
- v4 bump forces every skill to add one. Mitigated by a codemod (`scripts/migrate-v3-to-v4.js` — future work) that infers the URN from the repo root.
|
|
56
|
+
|
|
57
|
+
### Neutral
|
|
58
|
+
|
|
59
|
+
- Today's skills continue to validate without the field.
|
|
60
|
+
- The JSON-LD `@context` already maps `urn` → `@id` (ADR 0002), so adding the field does not require a context update.
|
|
61
|
+
|
|
62
|
+
## Implementation checklist
|
|
63
|
+
|
|
64
|
+
- [x] Add optional `urn` field to `schemas/skill.v3.schema.json` with the regex above.
|
|
65
|
+
- [x] Add optional `urn` field to `schemas/skill.schema.json` (mirror of v3).
|
|
66
|
+
- [x] Add `urn` to `docs/field-reference.md` with a URN-authoring guide.
|
|
67
|
+
- [x] Map `urn` to `@id` in `schemas/skill.context.jsonld`.
|
|
68
|
+
- [ ] Ship `scripts/migrate-v3-to-v4.js` when v4 is cut (out of scope for this ADR).
|
|
69
|
+
- [ ] Decide and publish the repo-slug-to-URN mapping rule for multi-root workspaces (out of scope for this ADR).
|
|
70
|
+
|
|
71
|
+
## References
|
|
72
|
+
|
|
73
|
+
- RFC 8141 — Uniform Resource Names (URNs) — https://datatracker.ietf.org/doc/html/rfc8141
|
|
74
|
+
- FAIR Principles, F1 "(Meta)data are assigned a globally unique and persistent identifier" — Wilkinson et al. 2016
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# ADR 0005 — Freshness Field Consolidation (Proposal for v4)
|
|
2
|
+
|
|
3
|
+
- **Status:** Proposed (2026-04-20)
|
|
4
|
+
- **Deciders:** Skill Graph maintainers
|
|
5
|
+
- **Target:** v4 schema bump (breaking change)
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
v3 has three overlapping freshness/staleness fields:
|
|
10
|
+
|
|
11
|
+
| Field | Role |
|
|
12
|
+
|---|---|
|
|
13
|
+
| `freshness` | "When was this last *editorially* reviewed?" (ISO date, required) |
|
|
14
|
+
| `drift_check.last_verified` | "When was this last *verified against truth sources*?" (ISO date, required) |
|
|
15
|
+
| `lifecycle.stale_after_days` | "Days after `drift_check.last_verified` at which the skill is flagged stale" (integer, optional) |
|
|
16
|
+
|
|
17
|
+
The external audit of 2026-04-20 flagged this as decomposable. Two problems:
|
|
18
|
+
|
|
19
|
+
1. **Authors get confused.** `freshness` vs `drift_check.last_verified` is subtle — "editorial" vs "truth-source" review. In practice, most skills set them to the same date, and the distinction is rarely load-bearing.
|
|
20
|
+
2. **Tools duplicate work.** The drift sentinel already reasons about `drift_check.last_verified + lifecycle.stale_after_days`. The `freshness` field is consulted by only one check (the >90-days editorial-review warning).
|
|
21
|
+
|
|
22
|
+
## Decision (proposed)
|
|
23
|
+
|
|
24
|
+
Collapse the three fields into two primitives in v4:
|
|
25
|
+
|
|
26
|
+
| New field | Replaces | Shape |
|
|
27
|
+
|---|---|---|
|
|
28
|
+
| `asserted_at` | `freshness` + `drift_check.last_verified` | ISO date. "When was this skill last asserted to be correct? (Editorial = truth-source; if you need to separate them, the skill is probably too stale.)" |
|
|
29
|
+
| `stale_after` | `lifecycle.stale_after_days` | ISO 8601 duration (`P90D`, `P6M`, `P1Y`). "How long after `asserted_at` is the skill considered stale?" |
|
|
30
|
+
|
|
31
|
+
`drift_check.truth_source_hashes` stays where it is — it is content-addressable evidence, a different concern from date-based freshness.
|
|
32
|
+
|
|
33
|
+
## Rationale
|
|
34
|
+
|
|
35
|
+
- **Two fields are simpler than three.** Authors don't need to choose between editorial and truth-source review; both collapse into one "I asserted this is correct today" act.
|
|
36
|
+
- **ISO 8601 durations are more expressive than integers.** `P90D` vs `P6M` vs `P1Y` read correctly; `stale_after_days: 90` vs `180` vs `365` requires translation.
|
|
37
|
+
- **Tooling simplifies.** The drift sentinel reasons about `(today - asserted_at) > stale_after` as one comparison instead of joining three fields.
|
|
38
|
+
- **Backward compatibility is preserved by the codemod.** `scripts/migrate-v3-to-v4.js` (future) maps `freshness || drift_check.last_verified` → `asserted_at` (prefer later date) and `lifecycle.stale_after_days` → `stale_after: "P${n}D"`.
|
|
39
|
+
|
|
40
|
+
## Consequences
|
|
41
|
+
|
|
42
|
+
### Positive
|
|
43
|
+
|
|
44
|
+
- One fewer freshness concept to explain in the field-reference.
|
|
45
|
+
- Duration values self-document (`P90D` is obviously 90 days, `P6M` obviously 6 months).
|
|
46
|
+
- Drift-sentinel simpler.
|
|
47
|
+
|
|
48
|
+
### Negative
|
|
49
|
+
|
|
50
|
+
- Breaking change — requires v4 bump. Authors must run the codemod.
|
|
51
|
+
- Loses the *theoretical* distinction between editorial and truth-source review. In practice the distinction was rarely used.
|
|
52
|
+
|
|
53
|
+
### Neutral
|
|
54
|
+
|
|
55
|
+
- `drift_check.truth_source_hashes` is unchanged — hash-based evidence is orthogonal to date-based freshness.
|
|
56
|
+
|
|
57
|
+
## Not decided yet
|
|
58
|
+
|
|
59
|
+
- Whether to keep `lifecycle.review_cadence` (`per-commit` / `weekly` / `quarterly` / `on-truth-source-change`) or fold it into `stale_after`. The cadence carries scheduling intent that duration alone does not. Lean toward keeping it.
|
|
60
|
+
- Whether to require `asserted_at` or make it optional. Today's `freshness` is required. Lean toward required.
|
|
61
|
+
- The exact codemod conflict-resolution rule when `freshness` and `drift_check.last_verified` disagree by more than 30 days — use the later, or warn and ask?
|
|
62
|
+
|
|
63
|
+
## Status: Proposed, not accepted
|
|
64
|
+
|
|
65
|
+
This ADR exists to make the v4 direction visible and invite feedback before v4 work begins. No changes to the current schema. No action required from authors. Revisit when v4 planning starts.
|
|
66
|
+
|
|
67
|
+
## References
|
|
68
|
+
|
|
69
|
+
- ISO 8601 duration format — https://en.wikipedia.org/wiki/ISO_8601#Durations
|
|
70
|
+
- Audit that prompted this ADR — `skills/knowledge-graph/references/skill-graph-audit-standards-2026-04-20.md` § "Versioning and drift detection"
|