@skill-graph/cli 0.5.7 → 0.5.8
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 +27 -3
- package/README.md +40 -14
- package/SKILL_GRAPH.md +2 -2
- package/bin/skill-graph.js +118 -2
- package/docs/ADOPTION.md +1 -1
- package/docs/PRIMER.md +6 -5
- package/docs/QUICKSTART-30MIN.md +2 -2
- package/docs/SKILL_AUDIT_CHECKLIST.md +1 -1
- package/docs/SKILL_METADATA_PROTOCOL.md +2 -2
- package/docs/_archived/marketplace-publication-priority-2026-05-18.md +1 -1
- package/docs/_drafts/0.5.8-release-prep.md +164 -0
- package/docs/field-reference.generated.md +1 -1
- package/docs/field-reference.md +2 -2
- package/docs/manifest-field-mapping.md +3 -3
- package/docs/marketplace-publication-queue.generated.md +2 -2
- package/docs/plans/scripts-roadmap.md +2 -2
- package/docs/positioning.md +88 -0
- package/docs/research/skill-comprehension-eval-research.md +5 -5
- package/docs/research/skill-demand-gap-roadmap-2026-05-16.md +215 -0
- package/docs/status.generated.md +48 -0
- package/examples/audits/context-graph/findings.md +59 -0
- package/examples/audits/context-graph/scorecard.md +22 -0
- package/examples/audits/context-graph/verdict.md +33 -0
- package/examples/evals/a11y.json +45 -13
- package/examples/evals/api-design.json +18 -5
- package/examples/evals/code-review.json +18 -5
- package/examples/evals/data-modeling.json +18 -5
- package/examples/evals/database-migration.json +18 -5
- package/examples/evals/debugging.json +37 -11
- package/examples/evals/dependency-architecture.json +18 -5
- package/examples/evals/design-system-architecture.json +18 -5
- package/examples/evals/error-tracking.json +18 -5
- package/examples/evals/event-contract-design.json +18 -5
- package/examples/evals/form-ux-architecture.json +18 -5
- package/examples/evals/framework-fit-analysis.json +18 -5
- package/examples/evals/graph-audit.json +55 -13
- package/examples/evals/information-architecture.json +18 -5
- package/examples/evals/interaction-feedback.json +18 -5
- package/examples/evals/interaction-patterns.json +18 -5
- package/examples/evals/layout-composition.json +18 -5
- package/examples/evals/lint-overlay.json +38 -11
- package/examples/evals/microcopy.json +18 -5
- package/examples/evals/observability-modeling.json +18 -5
- package/examples/evals/pattern-recognition.json +32 -9
- package/examples/evals/performance-engineering.json +18 -5
- package/examples/evals/refactor.json +41 -12
- package/examples/evals/semiotics.json +18 -5
- package/examples/evals/skill-infrastructure.json +32 -9
- package/examples/evals/skill-router.json +42 -13
- package/examples/evals/system-interface-contracts.json +18 -5
- package/examples/evals/task-analysis.json +18 -5
- package/examples/evals/testing-strategy.json +36 -11
- package/examples/evals/type-safety.json +251 -66
- package/examples/evals/visual-design-foundations.json +18 -5
- package/examples/evals/webhook-integration.json +18 -5
- package/examples/fixture-skills/README.md +47 -0
- package/examples/fixture-skills/comprehension-full/SKILL.md +79 -0
- package/examples/fixture-skills/minimal-capability/SKILL.md +51 -0
- package/examples/fixture-skills/with-grounding/SKILL.md +78 -0
- package/examples/fixture-skills/with-relations/SKILL.md +87 -0
- package/examples/skills.manifest.sample.json +1722 -446
- package/marketplace/README.md +1 -1
- package/marketplace/skills/a11y/SKILL.md +1 -1
- package/marketplace/skills/best-practice/SKILL.md +211 -0
- package/marketplace/skills/context-graph/SKILL.md +1 -1
- package/marketplace/skills/debugging/SKILL.md +1 -1
- package/marketplace/skills/graph-audit/SKILL.md +3 -1
- package/marketplace/skills/postgres-rls/SKILL.md +284 -0
- package/marketplace/skills/refactor/SKILL.md +1 -1
- package/marketplace/skills/skill-infrastructure/SKILL.md +2 -0
- package/marketplace/skills/skill-router/SKILL.md +3 -1
- package/marketplace/skills/testing-strategy/SKILL.md +1 -1
- package/package.json +3 -1
- package/scripts/__tests__/test-marketplace-export.js +6 -2
- package/scripts/__tests__/test-v3-1-alias-contract.js +3 -3
- package/scripts/build-status-doc.js +177 -0
- package/scripts/check-doc-drift.js +224 -0
- package/scripts/check-markdown-links.js +34 -4
- package/scripts/check-mirror-freeze.js +270 -0
- package/scripts/export-marketplace-skills.js +35 -6
- package/scripts/lib/audit-prompt-builder.js +3 -3
- package/scripts/lib/parse-frontmatter.js +2 -2
- package/scripts/skill-audit.js +7 -9
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"skill_name": "visual-design-foundations",
|
|
3
3
|
"subject": "Visual craft decisions for color, typography, spacing, density, hierarchy, elevation, and motion feel",
|
|
4
|
-
"adjacent_concepts": [
|
|
4
|
+
"adjacent_concepts": [
|
|
5
|
+
"semiotics",
|
|
6
|
+
"design-system-architecture",
|
|
7
|
+
"layout-composition",
|
|
8
|
+
"a11y"
|
|
9
|
+
],
|
|
5
10
|
"grounding_note": "Truth sources cite the whole SKILL.md file to keep the initial eval surface stable while the new skill settles.",
|
|
6
11
|
"evals": [
|
|
7
12
|
{
|
|
@@ -13,7 +18,9 @@
|
|
|
13
18
|
"truth_mode": "process_correctness",
|
|
14
19
|
"skill_type": "concept",
|
|
15
20
|
"criticality": "high",
|
|
16
|
-
"truth_sources": [
|
|
21
|
+
"truth_sources": [
|
|
22
|
+
"skills/design/visual-design-foundations/SKILL.md"
|
|
23
|
+
]
|
|
17
24
|
},
|
|
18
25
|
{
|
|
19
26
|
"id": 2,
|
|
@@ -24,7 +31,9 @@
|
|
|
24
31
|
"truth_mode": "code_verification",
|
|
25
32
|
"skill_type": "concept",
|
|
26
33
|
"criticality": "normal",
|
|
27
|
-
"truth_sources": [
|
|
34
|
+
"truth_sources": [
|
|
35
|
+
"skills/design/visual-design-foundations/SKILL.md"
|
|
36
|
+
]
|
|
28
37
|
},
|
|
29
38
|
{
|
|
30
39
|
"id": 3,
|
|
@@ -35,7 +44,9 @@
|
|
|
35
44
|
"truth_mode": "code_verification",
|
|
36
45
|
"skill_type": "concept",
|
|
37
46
|
"criticality": "normal",
|
|
38
|
-
"truth_sources": [
|
|
47
|
+
"truth_sources": [
|
|
48
|
+
"skills/design/visual-design-foundations/SKILL.md"
|
|
49
|
+
]
|
|
39
50
|
},
|
|
40
51
|
{
|
|
41
52
|
"id": 4,
|
|
@@ -46,7 +57,9 @@
|
|
|
46
57
|
"truth_mode": "conceptual_correctness_plus_repo_application",
|
|
47
58
|
"skill_type": "concept",
|
|
48
59
|
"criticality": "normal",
|
|
49
|
-
"truth_sources": [
|
|
60
|
+
"truth_sources": [
|
|
61
|
+
"skills/design/visual-design-foundations/SKILL.md"
|
|
62
|
+
]
|
|
50
63
|
}
|
|
51
64
|
]
|
|
52
65
|
}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"skill_name": "webhook-integration",
|
|
3
3
|
"subject": "Inbound third-party webhook handler design for signature verification, idempotency, provider retry contracts, raw payload persistence, quarantine, secret rotation, and PII capture timing",
|
|
4
|
-
"adjacent_concepts": [
|
|
4
|
+
"adjacent_concepts": [
|
|
5
|
+
"event-contract-design",
|
|
6
|
+
"testing-strategy",
|
|
7
|
+
"debugging",
|
|
8
|
+
"owasp-security"
|
|
9
|
+
],
|
|
5
10
|
"grounding_note": "Truth sources cite the whole SKILL.md file to keep the initial eval surface stable while routing boundaries are tightened.",
|
|
6
11
|
"evals": [
|
|
7
12
|
{
|
|
@@ -13,7 +18,9 @@
|
|
|
13
18
|
"truth_mode": "process_correctness",
|
|
14
19
|
"skill_type": "workflow",
|
|
15
20
|
"criticality": "high",
|
|
16
|
-
"truth_sources": [
|
|
21
|
+
"truth_sources": [
|
|
22
|
+
"skills/engineering/webhook-integration/SKILL.md"
|
|
23
|
+
]
|
|
17
24
|
},
|
|
18
25
|
{
|
|
19
26
|
"id": 2,
|
|
@@ -24,7 +31,9 @@
|
|
|
24
31
|
"truth_mode": "conceptual_correctness_plus_repo_application",
|
|
25
32
|
"skill_type": "workflow",
|
|
26
33
|
"criticality": "high",
|
|
27
|
-
"truth_sources": [
|
|
34
|
+
"truth_sources": [
|
|
35
|
+
"skills/engineering/webhook-integration/SKILL.md"
|
|
36
|
+
]
|
|
28
37
|
},
|
|
29
38
|
{
|
|
30
39
|
"id": 3,
|
|
@@ -35,7 +44,9 @@
|
|
|
35
44
|
"truth_mode": "code_verification",
|
|
36
45
|
"skill_type": "concept",
|
|
37
46
|
"criticality": "normal",
|
|
38
|
-
"truth_sources": [
|
|
47
|
+
"truth_sources": [
|
|
48
|
+
"skills/engineering/webhook-integration/SKILL.md"
|
|
49
|
+
]
|
|
39
50
|
},
|
|
40
51
|
{
|
|
41
52
|
"id": 4,
|
|
@@ -46,7 +57,9 @@
|
|
|
46
57
|
"truth_mode": "code_verification",
|
|
47
58
|
"skill_type": "concept",
|
|
48
59
|
"criticality": "normal",
|
|
49
|
-
"truth_sources": [
|
|
60
|
+
"truth_sources": [
|
|
61
|
+
"skills/engineering/webhook-integration/SKILL.md"
|
|
62
|
+
]
|
|
50
63
|
}
|
|
51
64
|
]
|
|
52
65
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Hermetic Test Fixtures (v6)
|
|
2
|
+
|
|
3
|
+
> **Purpose:** minimal v6-conformant skills used as hermetic fixtures for the
|
|
4
|
+
> `@skill-graph/cli` package tests. The published package can validate
|
|
5
|
+
> against these without needing a sibling `skills/` clone.
|
|
6
|
+
>
|
|
7
|
+
> **Status:** v6 (current contract). Update when the schema bumps.
|
|
8
|
+
|
|
9
|
+
## Fixtures
|
|
10
|
+
|
|
11
|
+
| Fixture | Type | Scope | Tests | Status |
|
|
12
|
+
|---|---|---|---|---|
|
|
13
|
+
| [`minimal-capability`](minimal-capability/SKILL.md) | capability | portable | Bare-minimum v6 frontmatter; happy-path lint pass | **shipped** |
|
|
14
|
+
| [`with-grounding`](with-grounding/SKILL.md) | capability | codebase | Conditional requiredness — `grounding.*` sub-fields + non-empty `keywords` | **shipped** |
|
|
15
|
+
| [`with-relations`](with-relations/SKILL.md) | capability | portable | All four `relations.*` edges (related / boundary / verify_with / depends_on) using `{skill, reason}` object shape | **shipped** |
|
|
16
|
+
| [`comprehension-full`](comprehension-full/SKILL.md) | capability | portable | Flat Understanding fields + nested v5 `concept` block (anyOf back-compat) | **shipped** |
|
|
17
|
+
|
|
18
|
+
All four fixtures cross-reference each other in `with-relations`, forming
|
|
19
|
+
a closed reference set: lint resolves every relation target from this
|
|
20
|
+
directory alone, with no dependency on the sibling `../skills/skills/`
|
|
21
|
+
canonical library. The four fixtures together exercise every conditional
|
|
22
|
+
required rule in the v6 schema (`scope: codebase → grounding`,
|
|
23
|
+
`comprehension_state: present → concept`) plus the lint rule that
|
|
24
|
+
`scope: codebase` demands non-empty `keywords`. See [SH-6132](https://linear.app/sales-hub/issue/SH-6132) EPIC for context.
|
|
25
|
+
|
|
26
|
+
## Usage
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# Lint a single fixture against the v6 schema:
|
|
30
|
+
node bin/skill-graph.js lint examples/fixture-skills/minimal-capability
|
|
31
|
+
|
|
32
|
+
# Lint every fixture in one pass:
|
|
33
|
+
node scripts/skill-lint.js --path examples/fixture-skills
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Invariants
|
|
37
|
+
|
|
38
|
+
- Every shipped fixture validates against `schemas/skill.v6.schema.json` with zero errors.
|
|
39
|
+
- Every fixture has `schema_version: 6`.
|
|
40
|
+
- No fixture depends on a non-fixture skill (relations between fixtures only).
|
|
41
|
+
- Cross-fixture `relations.*` targets MUST exist in this directory.
|
|
42
|
+
|
|
43
|
+
## Maintenance
|
|
44
|
+
|
|
45
|
+
- When the schema bumps, every fixture's `schema_version` advances in the same commit as the schema change.
|
|
46
|
+
- When a new conditional rule lands (e.g. a new `allOf` block), add or extend the fixture that exercises it.
|
|
47
|
+
- Treat these as the canonical regression suite for any change to lint, audit, manifest generation, or routing.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 6
|
|
3
|
+
name: comprehension-full
|
|
4
|
+
description: "Use as the v6-conformant fixture exercising the full Understanding surface — flat top-level fields (mental_model, purpose, boundary, analogy, misconception) AND the nested v5 concept block for anyOf back-compat. Activate this skill when verifying that lint accepts both presentation forms when comprehension_state is present. Do NOT use as a production skill (use a real capability skill from the canonical library)."
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
type: capability
|
|
7
|
+
category: engineering
|
|
8
|
+
scope: portable
|
|
9
|
+
owner: skill-graph-fixture-suite
|
|
10
|
+
freshness: "2026-05-19"
|
|
11
|
+
comprehension_state: present
|
|
12
|
+
mental_model: "Understanding fields are the comprehension grader's reading surface. The grader expects five primitives — mental_model, purpose, boundary, analogy, misconception — each with its own grading dimension and weight. v6 promotes them to flat top-level fields; v5 nested them inside a concept block. Both shapes must round-trip cleanly through lint, manifest generation, and the grader."
|
|
13
|
+
purpose: "Comprehension grading checks whether an agent given the SKILL.md can answer realistic scenarios. The Understanding fields anchor that grading by declaring what the skill claims to teach. Before v6, these primitives lived as bold-label body sections that parsers had to scrape; v5 lifted them into the nested concept block; v6 promotes them to flat top-level fields so consumers no longer need to walk a sub-object to read them."
|
|
14
|
+
boundary: "Comprehension grading is NOT routing-eval (which tests whether the router picks the right skill) and NOT lint (which tests schema conformance). The flat top-level boundary field (concept-layer) is also distinct from relations.boundary (routing-layer handoff): one declares what the skill is NOT conceptually; the other declares which sibling skill should handle a misrouted query."
|
|
15
|
+
analogy: "Like the difference between a book's table of contents and its index. Both let a reader find content, but they answer different questions. Flat Understanding fields are the index — direct, addressable, no nesting. The legacy concept block was the table of contents — hierarchical, requiring traversal."
|
|
16
|
+
misconception: "Believing that comprehension_state: present means the skill ships a passing comprehension eval. It does not. comprehension_state: present means the skill carries the Understanding fields the grader reads against; eval_state: passing is a separate, independent claim that the eval has been run and succeeded."
|
|
17
|
+
concept:
|
|
18
|
+
definition: "The legacy nested v5 concept block. Seven required sub-fields covering definition, mental_model, purpose, boundary, taxonomy, analogy, and misconception. Retained in v6 for back-compat so v5 skills not yet migrated still satisfy the comprehension_state: present requirement."
|
|
19
|
+
mental_model: "v5 grouped the seven primitives under one frontmatter key (concept) for namespacing. v6 unbundled them to flat top-level fields. The grader reads from the flat fields first when both are present; the nested block remains valid as a fallback."
|
|
20
|
+
purpose: "Allow v5 skills to satisfy the comprehension_state: present requirement during the multi-cycle v5→v6 migration without forcing a flag-day rewrite of every author skill."
|
|
21
|
+
boundary: "Not a replacement for the flat fields in v6 — when both are present in a v6 skill, the flat fields win. Do not author new v6 skills that only set the nested block; treat the nested block as a back-compat surface, not the canonical home."
|
|
22
|
+
taxonomy: "Subset of the v6 Understanding surface — every nested concept.* sub-field has a flat top-level equivalent (or, for definition, is absorbed by description; for taxonomy, by category + relations.broader)."
|
|
23
|
+
analogy: "Like the v3.1 alias pattern (e.g., grounding.subject for grounding.domain_object). Both shapes validate; both round-trip; the preferred form takes precedence when both are present."
|
|
24
|
+
misconception: "Believing the v6 schema removed the nested concept block. It did not — the schema retains it under an anyOf rule so v5 skills continue to validate without modification. v6 deprecates the nested form for new skills but does not eliminate it."
|
|
25
|
+
drift_check:
|
|
26
|
+
last_verified: "2026-05-19"
|
|
27
|
+
eval_artifacts: none
|
|
28
|
+
eval_state: unverified
|
|
29
|
+
routing_eval: absent
|
|
30
|
+
stability: experimental
|
|
31
|
+
license: Apache-2.0
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
# Comprehension-Full Fixture
|
|
35
|
+
|
|
36
|
+
This fixture exercises the full Understanding surface in two presentation
|
|
37
|
+
forms simultaneously: the v6 flat top-level fields (`mental_model`,
|
|
38
|
+
`purpose`, `boundary`, `analogy`, `misconception`) AND the nested v5
|
|
39
|
+
`concept` block. The lint and the comprehension grader must both accept
|
|
40
|
+
either shape, and when both are present the flat fields must win.
|
|
41
|
+
|
|
42
|
+
## Coverage
|
|
43
|
+
|
|
44
|
+
The five flat Understanding fields (v6 canonical) and the seven nested
|
|
45
|
+
`concept` sub-fields (v5 back-compat) co-existing in one skill, plus
|
|
46
|
+
`comprehension_state: present` to trigger the conditional requirement.
|
|
47
|
+
No grounding (scope: portable), no relations, no Health Block.
|
|
48
|
+
|
|
49
|
+
## Philosophy
|
|
50
|
+
|
|
51
|
+
The v5 → v6 migration cannot happen as a flag-day — there are too many
|
|
52
|
+
adopter skills to rewrite atomically. v6 keeps the nested `concept` block
|
|
53
|
+
under an `anyOf` rule so v5 skills validate without changes, while the
|
|
54
|
+
new flat top-level fields become the canonical authoring surface for
|
|
55
|
+
new skills. This fixture is the smallest configuration that proves both
|
|
56
|
+
shapes round-trip through lint together, anchoring the regression test
|
|
57
|
+
that detects any future change that would force a flag-day rewrite.
|
|
58
|
+
|
|
59
|
+
## Verification
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
node scripts/skill-lint.js --path examples/fixture-skills/comprehension-full
|
|
63
|
+
# expected: 0 errors
|
|
64
|
+
node scripts/skill-lint.js --path examples/fixture-skills
|
|
65
|
+
# expected: 0 errors across all four fixtures
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Lint must accept the dual-shape skill: `comprehension_state: present`
|
|
69
|
+
satisfied by the nested `concept` block (per the v6 anyOf back-compat
|
|
70
|
+
rule) AND the flat top-level fields present alongside it. If the grader
|
|
71
|
+
reads from both, the flat values must take precedence — that contract is
|
|
72
|
+
documented in the v5-to-v6 migration note in `skill-metadata-protocol`.
|
|
73
|
+
|
|
74
|
+
## Do NOT Use When
|
|
75
|
+
|
|
76
|
+
- You need to test the bare-minimum frontmatter — use `minimal-capability`.
|
|
77
|
+
- You need to test codebase grounding — use `with-grounding`.
|
|
78
|
+
- You need to test typed relations — use `with-relations`.
|
|
79
|
+
- You need to test v6-only flat Understanding fields without the nested back-compat block — author a separate fixture or use a real v6-only canonical skill.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 6
|
|
3
|
+
name: minimal-capability
|
|
4
|
+
description: "Use as the smallest v6-conformant capability fixture for skill-graph package tests. Activate this skill when verifying that lint, manifest generation, and routing accept the bare-minimum required v6 frontmatter. Do NOT use as a production skill (use a real capability skill from the canonical library)."
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
type: capability
|
|
7
|
+
category: engineering
|
|
8
|
+
scope: portable
|
|
9
|
+
owner: skill-graph-fixture-suite
|
|
10
|
+
freshness: "2026-05-19"
|
|
11
|
+
drift_check:
|
|
12
|
+
last_verified: "2026-05-19"
|
|
13
|
+
eval_artifacts: none
|
|
14
|
+
eval_state: unverified
|
|
15
|
+
routing_eval: absent
|
|
16
|
+
stability: experimental
|
|
17
|
+
license: Apache-2.0
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Minimal Capability Fixture
|
|
21
|
+
|
|
22
|
+
This fixture exercises the bare-minimum required v6 frontmatter. It contains
|
|
23
|
+
only the required fields, the recommended stability + license fields, and the
|
|
24
|
+
four capability-archetype body sections.
|
|
25
|
+
|
|
26
|
+
## Coverage
|
|
27
|
+
|
|
28
|
+
The 13 required v6 frontmatter fields, plus `stability` and `license`. No
|
|
29
|
+
optional fields, no relations, no grounding, no Understanding fields, no
|
|
30
|
+
Health Block.
|
|
31
|
+
|
|
32
|
+
## Philosophy
|
|
33
|
+
|
|
34
|
+
The simplest possible v6 skill should still pass lint. If this fixture ever
|
|
35
|
+
starts failing lint without a deliberate schema change, the lint check has
|
|
36
|
+
regressed or grown a new required field that this fixture should adopt
|
|
37
|
+
together with the canonical library.
|
|
38
|
+
|
|
39
|
+
## Verification
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
node scripts/skill-lint.js --path examples/fixture-skills/minimal-capability
|
|
43
|
+
# expected: 0 errors
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Do NOT Use When
|
|
47
|
+
|
|
48
|
+
- You need to exercise codebase grounding — see the `with-grounding` planned fixture in [`../README.md`](../README.md).
|
|
49
|
+
- You need to exercise typed relations — see the `with-relations` planned fixture in [`../README.md`](../README.md).
|
|
50
|
+
- You need to exercise flat Understanding fields or the Health Block — see the `comprehension-full` planned fixture in [`../README.md`](../README.md).
|
|
51
|
+
- You need a real production-grade authoring example — use a canonical skill from `skills/`.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 6
|
|
3
|
+
name: with-grounding
|
|
4
|
+
description: "Use as the minimal v6-conformant codebase-grounded fixture for skill-graph package tests. Activate this skill when verifying that lint enforces grounding requireds (domain_object, grounding_mode, truth_sources, failure_modes, evidence_priority) and non-empty keywords for scope: codebase. Do NOT use as a production skill (use a real grounded skill from the canonical library)."
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
type: capability
|
|
7
|
+
category: engineering
|
|
8
|
+
scope: codebase
|
|
9
|
+
owner: skill-graph-fixture-suite
|
|
10
|
+
freshness: "2026-05-19"
|
|
11
|
+
keywords:
|
|
12
|
+
- grounding
|
|
13
|
+
- fixture
|
|
14
|
+
- truth-sources
|
|
15
|
+
- hermetic-test
|
|
16
|
+
grounding:
|
|
17
|
+
domain_object: "v6 grounding contract"
|
|
18
|
+
grounding_mode: repo_specific
|
|
19
|
+
truth_sources:
|
|
20
|
+
- path: "examples/fixture-skills/README.md"
|
|
21
|
+
anchor: "Invariants"
|
|
22
|
+
note: "The hermetic-fixture invariants document what every fixture in this directory must satisfy."
|
|
23
|
+
failure_modes:
|
|
24
|
+
- "If the v6 schema renames or removes a grounding sub-field, this fixture must move in lockstep with the schema bump."
|
|
25
|
+
- "If the fixture-skills README anchor 'Invariants' is renamed, the anchor reference above breaks and lint fails."
|
|
26
|
+
evidence_priority: repo_code_first
|
|
27
|
+
drift_check:
|
|
28
|
+
last_verified: "2026-05-19"
|
|
29
|
+
eval_artifacts: none
|
|
30
|
+
eval_state: unverified
|
|
31
|
+
routing_eval: absent
|
|
32
|
+
stability: experimental
|
|
33
|
+
license: Apache-2.0
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
# With-Grounding Fixture
|
|
37
|
+
|
|
38
|
+
This fixture exercises the v6 conditional rule `scope: codebase → grounding
|
|
39
|
+
required`, plus the lint rule that `scope: codebase` skills must declare
|
|
40
|
+
non-empty `keywords`. Together those two rules form the smallest
|
|
41
|
+
routing-discoverable, drift-trackable v6 skill.
|
|
42
|
+
|
|
43
|
+
## Coverage
|
|
44
|
+
|
|
45
|
+
The five required `grounding` sub-fields (`domain_object`, `grounding_mode`,
|
|
46
|
+
`truth_sources`, `failure_modes`, `evidence_priority`), an object-shaped
|
|
47
|
+
truth_source entry with `path` + `anchor` + `note`, and the non-empty
|
|
48
|
+
`keywords` array that scope: codebase demands. No relations, no Health Block,
|
|
49
|
+
no Understanding fields.
|
|
50
|
+
|
|
51
|
+
## Philosophy
|
|
52
|
+
|
|
53
|
+
The grounding block is the contract that distinguishes a knowledge skill from
|
|
54
|
+
a hallucinated one. A `scope: codebase` skill is making claims about specific
|
|
55
|
+
local files; those claims rot when the files move. The grounding block records
|
|
56
|
+
*which* files anchor the claim, *how* to detect drift (anchor or line_range
|
|
57
|
+
hashing), and *what* failure modes appear when drift occurs. This fixture is
|
|
58
|
+
the smallest configuration that exercises every grounding required field
|
|
59
|
+
without depending on a sibling skills clone.
|
|
60
|
+
|
|
61
|
+
## Verification
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
node scripts/skill-lint.js --path examples/fixture-skills/with-grounding
|
|
65
|
+
# expected: 0 errors
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Lint must accept this fixture even when the published `@skill-graph/cli`
|
|
69
|
+
package is installed standalone (no sibling `../skills/skills/` clone). The
|
|
70
|
+
truth_source path resolves under the package's own `examples/fixture-skills/`
|
|
71
|
+
tree, not under the canonical skill library.
|
|
72
|
+
|
|
73
|
+
## Do NOT Use When
|
|
74
|
+
|
|
75
|
+
- You need to test the bare-minimum frontmatter — use `minimal-capability`.
|
|
76
|
+
- You need to test typed relations — use `with-relations`.
|
|
77
|
+
- You need to test flat Understanding fields or the nested concept block — use `comprehension-full`.
|
|
78
|
+
- You need a production codebase-grounded skill — use a real grounded skill from `skills/` (e.g. `nextauth-patterns`, `query-tier-safety`).
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 6
|
|
3
|
+
name: with-relations
|
|
4
|
+
description: "Use as the v6-conformant fixture exercising all four typed relation predicates (related, boundary, verify_with, depends_on) using the {skill, reason} object shape. Activate this skill when verifying that lint resolves cross-fixture relation targets without a sibling skills clone. Do NOT use as a production skill (use a real capability skill from the canonical library)."
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
type: capability
|
|
7
|
+
category: engineering
|
|
8
|
+
scope: portable
|
|
9
|
+
owner: skill-graph-fixture-suite
|
|
10
|
+
freshness: "2026-05-19"
|
|
11
|
+
relations:
|
|
12
|
+
related:
|
|
13
|
+
- skill: minimal-capability
|
|
14
|
+
reason: "Same fixture-suite kind (capability/portable) — minimal-capability is the bare-minimum baseline this fixture extends with relation edges."
|
|
15
|
+
boundary:
|
|
16
|
+
- skill: with-grounding
|
|
17
|
+
reason: "Use with-grounding instead when the test target is grounding-block requireds or scope: codebase keyword enforcement — this fixture is portable and groundless by design."
|
|
18
|
+
verify_with:
|
|
19
|
+
- skill: comprehension-full
|
|
20
|
+
reason: "When this fixture's relation edges are exercised in a routing-eval pass, comprehension-full provides the flat Understanding fields the grader reads against."
|
|
21
|
+
depends_on:
|
|
22
|
+
- skill: minimal-capability
|
|
23
|
+
reason: "Composition signal: this fixture assumes the lint passes for the minimal-capability baseline; if minimal-capability regresses, this fixture is meaningless until the baseline is repaired."
|
|
24
|
+
drift_check:
|
|
25
|
+
last_verified: "2026-05-19"
|
|
26
|
+
eval_artifacts: none
|
|
27
|
+
eval_state: unverified
|
|
28
|
+
routing_eval: absent
|
|
29
|
+
stability: experimental
|
|
30
|
+
license: Apache-2.0
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
# With-Relations Fixture
|
|
34
|
+
|
|
35
|
+
This fixture exercises every typed relation predicate in the v6 contract using
|
|
36
|
+
the canonical `{skill, reason}` object shape. Together with the sibling
|
|
37
|
+
fixtures (`minimal-capability`, `with-grounding`, `comprehension-full`) it
|
|
38
|
+
forms a closed cross-reference cluster — lint resolves every relation target
|
|
39
|
+
from the fixtures directory alone, with no dependency on the sibling
|
|
40
|
+
`../skills/skills/` canonical library.
|
|
41
|
+
|
|
42
|
+
## Coverage
|
|
43
|
+
|
|
44
|
+
The four relation kinds with distinct semantics:
|
|
45
|
+
|
|
46
|
+
| Predicate | Meaning | Target here |
|
|
47
|
+
|---|---|---|
|
|
48
|
+
| `related` | Adjacency for browse / routing expansion | `minimal-capability` |
|
|
49
|
+
| `boundary` | Routing-layer handoff ("use that one instead because...") | `with-grounding` |
|
|
50
|
+
| `verify_with` | Cross-check: when applied, verify with another | `comprehension-full` |
|
|
51
|
+
| `depends_on` | Composition: this assumes the other is in scope | `minimal-capability` |
|
|
52
|
+
|
|
53
|
+
Each entry carries a non-empty `reason` string — lint warns on relations that
|
|
54
|
+
omit the reason field because routing decisions become unauditable without it.
|
|
55
|
+
|
|
56
|
+
## Philosophy
|
|
57
|
+
|
|
58
|
+
Relations are the edges of the Skill Graph. The four predicates are
|
|
59
|
+
intentionally orthogonal: `related` is symmetric and weakly directional,
|
|
60
|
+
`boundary` is asymmetric and routing-routed, `verify_with` is symmetric and
|
|
61
|
+
quality-routed, `depends_on` is asymmetric and load-order-routed. Conflating
|
|
62
|
+
them would force the router to guess intent. This fixture is the smallest
|
|
63
|
+
configuration that demonstrates the distinction across every predicate at
|
|
64
|
+
once, hermetically, without leaking any canonical-skill name into the test
|
|
65
|
+
surface.
|
|
66
|
+
|
|
67
|
+
## Verification
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
node scripts/skill-lint.js --path examples/fixture-skills/with-relations
|
|
71
|
+
# expected: 0 errors
|
|
72
|
+
node scripts/skill-lint.js --path examples/fixture-skills
|
|
73
|
+
# expected: 0 errors across all four fixtures with relations resolved
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Lint must resolve every relation target from the union of configured roots
|
|
77
|
+
plus the explicit `--path` set. In a hermetic package-test environment
|
|
78
|
+
(no sibling skills clone), the four fixtures in this directory form a closed
|
|
79
|
+
cross-reference set: every `relations.*` target above names another fixture
|
|
80
|
+
that lives in the same directory.
|
|
81
|
+
|
|
82
|
+
## Do NOT Use When
|
|
83
|
+
|
|
84
|
+
- You need to test the bare-minimum frontmatter — use `minimal-capability`.
|
|
85
|
+
- You need to test codebase grounding — use `with-grounding`.
|
|
86
|
+
- You need to test flat Understanding fields or the nested concept block — use `comprehension-full`.
|
|
87
|
+
- You need to test relation-target resolution against the canonical library — use any real skill from `skills/` (e.g. `naming-conventions` → `semantics`).
|