coding-agent-skills 0.2.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/AGENTS.md +44 -0
- package/CHANGELOG.md +205 -0
- package/CONTRIBUTING.md +54 -0
- package/LICENSE +21 -0
- package/README.md +85 -0
- package/ROADMAP.md +87 -0
- package/RUNBOOK.md +47 -0
- package/bin/coding-agent-skills +75 -0
- package/contracts/evidence-pack/README.md +22 -0
- package/contracts/evidence-pack/evidence-pack.example.json +60 -0
- package/contracts/evidence-pack/evidence-pack.example.md +49 -0
- package/contracts/evidence-pack/evidence-pack.schema.json +156 -0
- package/docs/adapters/README.md +82 -0
- package/docs/adapters/discovery.md +50 -0
- package/docs/adapters/external-adapters.md +42 -0
- package/docs/adapters/project-installation.md +135 -0
- package/docs/adapters/real-project-adoption.md +193 -0
- package/docs/adapters/upgrade-evidence.md +67 -0
- package/docs/adapters/upgrades.md +83 -0
- package/docs/architecture/README.md +23 -0
- package/docs/authoring/README.md +54 -0
- package/docs/evidence-bundles/README.md +94 -0
- package/docs/privacy/README.md +26 -0
- package/docs/release/README.md +42 -0
- package/docs/release/npm-package.md +85 -0
- package/docs/safety/README.md +94 -0
- package/docs/testing/README.md +100 -0
- package/docs/usage/README.md +89 -0
- package/docs/versioning/README.md +30 -0
- package/docs/versioning/adapter-compatibility.md +54 -0
- package/examples/README.md +12 -0
- package/examples/adapters/README.md +9 -0
- package/examples/adapters/documentation-precedence.json +62 -0
- package/examples/adapters/narrow-repo-map.json +64 -0
- package/examples/adapters/runtime-status-hints.json +76 -0
- package/examples/command-policies/README.md +3 -0
- package/examples/command-policies/build-verify.json +57 -0
- package/examples/command-policies/git-preflight.json +44 -0
- package/examples/command-policies/llm-drift-control.json +45 -0
- package/examples/command-policies/repo-map.json +59 -0
- package/examples/command-policies/runtime-truth.json +59 -0
- package/examples/evidence-packs/README.md +3 -0
- package/examples/evidence-packs/build-verify.json +68 -0
- package/examples/evidence-packs/git-preflight.json +55 -0
- package/examples/evidence-packs/llm-drift-control.json +55 -0
- package/examples/evidence-packs/repo-map.json +55 -0
- package/examples/evidence-packs/runtime-truth.json +55 -0
- package/examples/manifests/README.md +3 -0
- package/examples/manifests/build-verify.json +14 -0
- package/examples/manifests/git-preflight.json +14 -0
- package/examples/manifests/llm-drift-control.json +14 -0
- package/examples/manifests/repo-map.json +14 -0
- package/examples/manifests/runtime-truth.json +14 -0
- package/examples/upgrade-evidence/README.md +14 -0
- package/examples/upgrade-evidence/chain-fail.evidence.json +155 -0
- package/examples/upgrade-evidence/chain-fail.evidence.md +14 -0
- package/examples/upgrade-evidence/chain-pass.evidence.json +156 -0
- package/examples/upgrade-evidence/stale-pin.evidence.json +117 -0
- package/examples/upgrade-evidence/unsafe-upgrade.evidence.json +128 -0
- package/examples/upgrade-evidence/valid-upgrade.evidence.json +105 -0
- package/examples/upgrade-evidence/valid-upgrade.evidence.md +13 -0
- package/examples/workflows/README.md +3 -0
- package/examples/workflows/build-verify.md +20 -0
- package/examples/workflows/git-preflight.md +18 -0
- package/examples/workflows/llm-drift-control.md +16 -0
- package/examples/workflows/repo-map.md +20 -0
- package/examples/workflows/runtime-truth.md +17 -0
- package/package.json +58 -0
- package/runs/skill-runs.md +162 -0
- package/schemas/adapter-upgrade-evidence.schema.json +443 -0
- package/schemas/archive-index.schema.json +174 -0
- package/schemas/archive-report.schema.json +322 -0
- package/schemas/command-policy.schema.json +125 -0
- package/schemas/evidence-bundle.schema.json +394 -0
- package/schemas/project-adapter-installation.schema.json +127 -0
- package/schemas/project-adapter.schema.json +328 -0
- package/schemas/skill-manifest.schema.json +40 -0
- package/scripts/check-adapter-upgrade-chain.mjs +32 -0
- package/scripts/check-adapter-upgrade.mjs +31 -0
- package/scripts/lib/adapter-discovery.mjs +441 -0
- package/scripts/lib/adapter-repo-map.mjs +358 -0
- package/scripts/lib/adapter-upgrade-chain.mjs +261 -0
- package/scripts/lib/adapter-upgrade.mjs +434 -0
- package/scripts/lib/evidence-bundle.mjs +831 -0
- package/scripts/lib/pack-rules.mjs +704 -0
- package/scripts/lib/project-adapter-installation.mjs +327 -0
- package/scripts/lib/safe-evidence-output.mjs +92 -0
- package/scripts/lib/schema-validator.mjs +146 -0
- package/scripts/lib/semver.mjs +54 -0
- package/scripts/lib/upgrade-evidence.mjs +276 -0
- package/scripts/render-adapter-repo-map.mjs +8 -0
- package/scripts/render-evidence-archive-report.mjs +18 -0
- package/scripts/run-next +220 -0
- package/scripts/test-pack.mjs +2232 -0
- package/scripts/validate-adapters.mjs +10 -0
- package/scripts/validate-maintainer-loop.mjs +146 -0
- package/scripts/validate-pack.mjs +950 -0
- package/scripts/validate-project-adapters.mjs +8 -0
- package/scripts/verify-evidence-bundle.mjs +18 -0
- package/skills/build-verify/SKILL.md +62 -0
- package/skills/build-verify/adapter-interface.md +7 -0
- package/skills/build-verify/agents/openai.yaml +4 -0
- package/skills/build-verify/checklist.md +12 -0
- package/skills/build-verify/evidence-template.md +11 -0
- package/skills/build-verify/examples.md +16 -0
- package/skills/build-verify/failure-modes.md +14 -0
- package/skills/git-preflight/SKILL.md +65 -0
- package/skills/git-preflight/adapter-interface.md +7 -0
- package/skills/git-preflight/agents/openai.yaml +4 -0
- package/skills/git-preflight/checklist.md +11 -0
- package/skills/git-preflight/evidence-template.md +10 -0
- package/skills/git-preflight/examples.md +18 -0
- package/skills/git-preflight/failure-modes.md +13 -0
- package/skills/llm-drift-control/SKILL.md +67 -0
- package/skills/llm-drift-control/adapter-interface.md +7 -0
- package/skills/llm-drift-control/agents/openai.yaml +4 -0
- package/skills/llm-drift-control/checklist.md +11 -0
- package/skills/llm-drift-control/evidence-template.md +13 -0
- package/skills/llm-drift-control/examples.md +15 -0
- package/skills/llm-drift-control/failure-modes.md +13 -0
- package/skills/repo-map/SKILL.md +71 -0
- package/skills/repo-map/adapter-interface.md +18 -0
- package/skills/repo-map/agents/openai.yaml +4 -0
- package/skills/repo-map/checklist.md +15 -0
- package/skills/repo-map/evidence-template.md +29 -0
- package/skills/repo-map/examples.md +19 -0
- package/skills/repo-map/failure-modes.md +16 -0
- package/skills/runtime-truth/SKILL.md +62 -0
- package/skills/runtime-truth/adapter-interface.md +7 -0
- package/skills/runtime-truth/agents/openai.yaml +4 -0
- package/skills/runtime-truth/checklist.md +11 -0
- package/skills/runtime-truth/evidence-template.md +12 -0
- package/skills/runtime-truth/examples.md +20 -0
- package/skills/runtime-truth/failure-modes.md +13 -0
- package/tests/README.md +44 -0
- package/tests/adapters/README.md +15 -0
- package/tests/completion/README.md +15 -0
- package/tests/evidence/README.md +15 -0
- package/tests/fixtures/README.md +23 -0
- package/tests/fixtures/adapters/allow-deploy.json +60 -0
- package/tests/fixtures/adapters/allow-git-push.json +60 -0
- package/tests/fixtures/adapters/expand-scope.json +53 -0
- package/tests/fixtures/adapters/expose-secrets.json +53 -0
- package/tests/fixtures/adapters/incompatible-version.json +53 -0
- package/tests/fixtures/adapters/override-audit-only.json +53 -0
- package/tests/fixtures/adapters/redefine-completion.json +53 -0
- package/tests/fixtures/adapters/remove-required-evidence.json +53 -0
- package/tests/fixtures/adapters/suppress-failures.json +53 -0
- package/tests/fixtures/adapters/valid-narrowing.json +53 -0
- package/tests/fixtures/adapters/valid-repo-map.json +53 -0
- package/tests/fixtures/adapters/weakening-repo-map.json +42 -0
- package/tests/fixtures/completion/cases.json +143 -0
- package/tests/fixtures/completion/false-complete.json +51 -0
- package/tests/fixtures/evidence-bundles/advisory-review-soon/archive/evidence-archive-index.json +52 -0
- package/tests/fixtures/evidence-bundles/advisory-review-soon/evidence/repo-map.evidence.json +68 -0
- package/tests/fixtures/evidence-bundles/advisory-review-soon/evidence/valid-upgrade.evidence.json +105 -0
- package/tests/fixtures/evidence-bundles/advisory-review-soon/evidence-bundle.json +109 -0
- package/tests/fixtures/evidence-bundles/invalid-archive/archive/evidence-archive-index.json +52 -0
- package/tests/fixtures/evidence-bundles/invalid-archive/evidence/repo-map.evidence.json +68 -0
- package/tests/fixtures/evidence-bundles/invalid-archive/evidence/valid-upgrade.evidence.json +105 -0
- package/tests/fixtures/evidence-bundles/invalid-archive/evidence-bundle.json +109 -0
- package/tests/fixtures/evidence-bundles/invalid-archive-index/archive/evidence-archive-index.json +52 -0
- package/tests/fixtures/evidence-bundles/invalid-archive-index/evidence/repo-map.evidence.json +68 -0
- package/tests/fixtures/evidence-bundles/invalid-archive-index/evidence/valid-upgrade.evidence.json +105 -0
- package/tests/fixtures/evidence-bundles/invalid-archive-index/evidence-bundle.json +109 -0
- package/tests/fixtures/evidence-bundles/invalid-hash/archive/evidence-archive-index.json +52 -0
- package/tests/fixtures/evidence-bundles/invalid-hash/evidence/repo-map.evidence.json +68 -0
- package/tests/fixtures/evidence-bundles/invalid-hash/evidence/valid-upgrade.evidence.json +105 -0
- package/tests/fixtures/evidence-bundles/invalid-hash/evidence-bundle.json +109 -0
- package/tests/fixtures/evidence-bundles/invalid-missing-entry/archive/evidence-archive-index.json +52 -0
- package/tests/fixtures/evidence-bundles/invalid-missing-entry/evidence/repo-map.evidence.json +68 -0
- package/tests/fixtures/evidence-bundles/invalid-missing-entry/evidence/valid-upgrade.evidence.json +105 -0
- package/tests/fixtures/evidence-bundles/invalid-missing-entry/evidence-bundle.json +109 -0
- package/tests/fixtures/evidence-bundles/invalid-path/archive/evidence-archive-index.json +52 -0
- package/tests/fixtures/evidence-bundles/invalid-path/evidence/repo-map.evidence.json +68 -0
- package/tests/fixtures/evidence-bundles/invalid-path/evidence/valid-upgrade.evidence.json +105 -0
- package/tests/fixtures/evidence-bundles/invalid-path/evidence-bundle.json +109 -0
- package/tests/fixtures/evidence-bundles/invalid-provenance/archive/evidence-archive-index.json +52 -0
- package/tests/fixtures/evidence-bundles/invalid-provenance/evidence/repo-map.evidence.json +68 -0
- package/tests/fixtures/evidence-bundles/invalid-provenance/evidence/valid-upgrade.evidence.json +105 -0
- package/tests/fixtures/evidence-bundles/invalid-provenance/evidence-bundle.json +109 -0
- package/tests/fixtures/evidence-bundles/invalid-regression/archive/evidence-archive-index.json +52 -0
- package/tests/fixtures/evidence-bundles/invalid-regression/evidence/repo-map.evidence.json +68 -0
- package/tests/fixtures/evidence-bundles/invalid-regression/evidence/valid-upgrade.evidence.json +105 -0
- package/tests/fixtures/evidence-bundles/invalid-regression/evidence-bundle.json +113 -0
- package/tests/fixtures/evidence-bundles/invalid-retention/archive/evidence-archive-index.json +52 -0
- package/tests/fixtures/evidence-bundles/invalid-retention/evidence/repo-map.evidence.json +68 -0
- package/tests/fixtures/evidence-bundles/invalid-retention/evidence/valid-upgrade.evidence.json +105 -0
- package/tests/fixtures/evidence-bundles/invalid-retention/evidence-bundle.json +109 -0
- package/tests/fixtures/evidence-bundles/invalid-signature-plan/archive/evidence-archive-index.json +52 -0
- package/tests/fixtures/evidence-bundles/invalid-signature-plan/evidence/repo-map.evidence.json +68 -0
- package/tests/fixtures/evidence-bundles/invalid-signature-plan/evidence/valid-upgrade.evidence.json +105 -0
- package/tests/fixtures/evidence-bundles/invalid-signature-plan/evidence-bundle.json +109 -0
- package/tests/fixtures/evidence-bundles/valid-bundle/archive/evidence-archive-index.json +52 -0
- package/tests/fixtures/evidence-bundles/valid-bundle/evidence/repo-map.evidence.json +68 -0
- package/tests/fixtures/evidence-bundles/valid-bundle/evidence/valid-upgrade.evidence.json +105 -0
- package/tests/fixtures/evidence-bundles/valid-bundle/evidence-bundle.json +109 -0
- package/tests/fixtures/external-adapters/empty/README.md +3 -0
- package/tests/fixtures/external-adapters/invalid-completion-override/.coding-agent/adapters/completion/adapter.json +53 -0
- package/tests/fixtures/external-adapters/invalid-deploy/.coding-agent/adapters/deploy/adapter.json +60 -0
- package/tests/fixtures/external-adapters/invalid-evidence-suppression/.coding-agent/adapters/evidence/adapter.json +53 -0
- package/tests/fixtures/external-adapters/invalid-failure-suppression/.coding-agent/adapters/failures/adapter.json +53 -0
- package/tests/fixtures/external-adapters/invalid-git-push/.coding-agent/adapters/publish/adapter.json +60 -0
- package/tests/fixtures/external-adapters/invalid-malformed/.coding-agent/adapters/malformed/adapter.json +1 -0
- package/tests/fixtures/external-adapters/invalid-malformed/malformed-adapter.txt +1 -0
- package/tests/fixtures/external-adapters/invalid-mode-escalation/.coding-agent/adapters/mode/adapter.json +53 -0
- package/tests/fixtures/external-adapters/invalid-path-traversal/.coding-agent/adapters/path/adapter.json +53 -0
- package/tests/fixtures/external-adapters/invalid-restriction-removal/.coding-agent/adapters/restrictions/adapter.json +52 -0
- package/tests/fixtures/external-adapters/invalid-scope-expansion/.coding-agent/adapters/scope/adapter.json +53 -0
- package/tests/fixtures/external-adapters/invalid-secret-exposure/.coding-agent/adapters/secrets/adapter.json +53 -0
- package/tests/fixtures/external-adapters/invalid-skill-id/.coding-agent/adapters/skill/adapter.json +53 -0
- package/tests/fixtures/external-adapters/invalid-skill-version/.coding-agent/adapters/skill-version/adapter.json +53 -0
- package/tests/fixtures/external-adapters/invalid-unknown-manifest/.coding-agent/adapters/unknown/manifest.json +1 -0
- package/tests/fixtures/external-adapters/invalid-version/.coding-agent/adapters/version/adapter.json +53 -0
- package/tests/fixtures/external-adapters/mixed/.coding-agent/adapters/invalid/adapter.json +60 -0
- package/tests/fixtures/external-adapters/mixed/.coding-agent/adapters/valid/adapter.json +53 -0
- package/tests/fixtures/external-adapters/valid-basic/.coding-agent/adapters/basic/adapter.json +53 -0
- package/tests/fixtures/external-adapters/valid-doc-precedence/coding-agent/adapters/docs/adapter.json +53 -0
- package/tests/fixtures/external-adapters/valid-runtime-status/adapters/coding-agent/runtime/adapter.json +65 -0
- package/tests/fixtures/mutation/cases.json +87 -0
- package/tests/fixtures/mutation/snapshot-target/README.md +3 -0
- package/tests/fixtures/mutation/snapshot-target/state.json +4 -0
- package/tests/fixtures/policy/commands.json +164 -0
- package/tests/fixtures/policy/properties.json +126 -0
- package/tests/fixtures/privacy/cases.json +47 -0
- package/tests/fixtures/project-adapter-installation/invalid-adapter-location/.agents/adapters/basic/adapter.json +53 -0
- package/tests/fixtures/project-adapter-installation/invalid-adapter-location/.coding-agent/skills.json +23 -0
- package/tests/fixtures/project-adapter-installation/invalid-adapter-schema-version/.coding-agent/adapters/basic/adapter.json +53 -0
- package/tests/fixtures/project-adapter-installation/invalid-adapter-schema-version/.coding-agent/skills.json +23 -0
- package/tests/fixtures/project-adapter-installation/invalid-adapter-version-mismatch/.coding-agent/adapters/basic/adapter.json +53 -0
- package/tests/fixtures/project-adapter-installation/invalid-adapter-version-mismatch/.coding-agent/skills.json +23 -0
- package/tests/fixtures/project-adapter-installation/invalid-bad-semver/.coding-agent/adapters/basic/adapter.json +53 -0
- package/tests/fixtures/project-adapter-installation/invalid-bad-semver/.coding-agent/skills.json +23 -0
- package/tests/fixtures/project-adapter-installation/invalid-completion-override/.coding-agent/adapters/basic/adapter.json +53 -0
- package/tests/fixtures/project-adapter-installation/invalid-completion-override/.coding-agent/skills.json +23 -0
- package/tests/fixtures/project-adapter-installation/invalid-failure-suppression/.coding-agent/adapters/basic/adapter.json +53 -0
- package/tests/fixtures/project-adapter-installation/invalid-failure-suppression/.coding-agent/skills.json +23 -0
- package/tests/fixtures/project-adapter-installation/invalid-missing-declaration/.coding-agent/adapters/basic/adapter.json +53 -0
- package/tests/fixtures/project-adapter-installation/invalid-mode-escalation/.coding-agent/adapters/basic/adapter.json +53 -0
- package/tests/fixtures/project-adapter-installation/invalid-mode-escalation/.coding-agent/skills.json +23 -0
- package/tests/fixtures/project-adapter-installation/invalid-path-traversal/.coding-agent/adapters/basic/adapter.json +53 -0
- package/tests/fixtures/project-adapter-installation/invalid-path-traversal/.coding-agent/skills.json +23 -0
- package/tests/fixtures/project-adapter-installation/invalid-scope-expansion/.coding-agent/adapters/basic/adapter.json +53 -0
- package/tests/fixtures/project-adapter-installation/invalid-scope-expansion/.coding-agent/skills.json +23 -0
- package/tests/fixtures/project-adapter-installation/invalid-secret-exposure/.coding-agent/adapters/basic/adapter.json +53 -0
- package/tests/fixtures/project-adapter-installation/invalid-secret-exposure/.coding-agent/skills.json +23 -0
- package/tests/fixtures/project-adapter-installation/invalid-skill-mismatch/.coding-agent/adapters/basic/adapter.json +53 -0
- package/tests/fixtures/project-adapter-installation/invalid-skill-mismatch/.coding-agent/skills.json +23 -0
- package/tests/fixtures/project-adapter-installation/invalid-unknown-skill/.coding-agent/adapters/basic/adapter.json +53 -0
- package/tests/fixtures/project-adapter-installation/invalid-unknown-skill/.coding-agent/skills.json +23 -0
- package/tests/fixtures/project-adapter-installation/invalid-unsupported-core-version/.coding-agent/adapters/basic/adapter.json +53 -0
- package/tests/fixtures/project-adapter-installation/invalid-unsupported-core-version/.coding-agent/skills.json +23 -0
- package/tests/fixtures/project-adapter-installation/invalid-weakens-restrictions/.coding-agent/adapters/basic/adapter.json +52 -0
- package/tests/fixtures/project-adapter-installation/invalid-weakens-restrictions/.coding-agent/skills.json +23 -0
- package/tests/fixtures/project-adapter-installation/valid-compatible-range/coding-agent/adapters/docs/adapter.json +53 -0
- package/tests/fixtures/project-adapter-installation/valid-compatible-range/coding-agent.skills.json +23 -0
- package/tests/fixtures/project-adapter-installation/valid-exact-pin/.coding-agent/adapters/basic/adapter.json +53 -0
- package/tests/fixtures/project-adapter-installation/valid-exact-pin/.coding-agent/skills.json +23 -0
- package/tests/fixtures/project-adapter-installation/valid-multiple-adapters/.coding-agent/skills.json +28 -0
- package/tests/fixtures/project-adapter-installation/valid-multiple-adapters/adapters/coding-agent/repo/adapter.json +53 -0
- package/tests/fixtures/project-adapter-installation/valid-multiple-adapters/adapters/coding-agent/runtime/adapter.json +58 -0
- package/tests/fixtures/project-adapter-upgrade-chains/broken-compatibility-chain/01-current/.coding-agent/adapters/fixture-chain-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrade-chains/broken-compatibility-chain/01-current/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrade-chains/broken-compatibility-chain/02-incompatible/.coding-agent/adapters/fixture-chain-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrade-chains/broken-compatibility-chain/02-incompatible/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrade-chains/broken-compatibility-chain/03-target/.coding-agent/adapters/fixture-chain-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrade-chains/broken-compatibility-chain/03-target/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrade-chains/schema-drift-chain/01-current/.coding-agent/adapters/fixture-chain-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrade-chains/schema-drift-chain/01-current/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrade-chains/schema-drift-chain/02-schema-drift/.coding-agent/adapters/fixture-chain-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrade-chains/schema-drift-chain/02-schema-drift/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrade-chains/skill-drift-chain/01-current/.coding-agent/adapters/fixture-chain-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrade-chains/skill-drift-chain/01-current/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrade-chains/skill-drift-chain/02-skill-drift/.coding-agent/adapters/fixture-chain-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrade-chains/skill-drift-chain/02-skill-drift/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrade-chains/stale-pin-chain/01-current/.coding-agent/adapters/fixture-chain-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrade-chains/stale-pin-chain/01-current/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrade-chains/stale-pin-chain/02-stale/.coding-agent/adapters/fixture-chain-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrade-chains/stale-pin-chain/02-stale/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrade-chains/stale-pin-chain/03-target/.coding-agent/adapters/fixture-chain-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrade-chains/stale-pin-chain/03-target/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrade-chains/unsafe-weakening-chain/01-current/.coding-agent/adapters/fixture-chain-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrade-chains/unsafe-weakening-chain/01-current/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrade-chains/unsafe-weakening-chain/02-safe/.coding-agent/adapters/fixture-chain-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrade-chains/unsafe-weakening-chain/02-safe/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrade-chains/unsafe-weakening-chain/03-weakens-restrictions/.coding-agent/adapters/fixture-chain-adapter/adapter.json +69 -0
- package/tests/fixtures/project-adapter-upgrade-chains/unsafe-weakening-chain/03-weakens-restrictions/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrade-chains/valid-chain/01-current/.coding-agent/adapters/fixture-chain-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrade-chains/valid-chain/01-current/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrade-chains/valid-chain/02-upgrade/.coding-agent/adapters/fixture-chain-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrade-chains/valid-chain/02-upgrade/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrade-chains/valid-chain/03-upgrade/.coding-agent/adapters/fixture-chain-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrade-chains/valid-chain/03-upgrade/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrade-chains/valid-chain/04-upgrade/.coding-agent/adapters/fixture-chain-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrade-chains/valid-chain/04-upgrade/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrade-chains/valid-chain/05-upgrade/.coding-agent/adapters/fixture-chain-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrade-chains/valid-chain/05-upgrade/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrade-chains/valid-chain/06-upgrade/.coding-agent/adapters/fixture-chain-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrade-chains/valid-chain/06-upgrade/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrade-chains/valid-chain/07-upgrade/.coding-agent/adapters/fixture-chain-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrade-chains/valid-chain/07-upgrade/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/adapter-schema-drift/after/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrades/adapter-schema-drift/after/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/adapter-schema-drift/before/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrades/adapter-schema-drift/before/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/safe-upgrade-preserves-restrictions/after/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +71 -0
- package/tests/fixtures/project-adapter-upgrades/safe-upgrade-preserves-restrictions/after/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/safe-upgrade-preserves-restrictions/before/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrades/safe-upgrade-preserves-restrictions/before/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/skill-compatibility-drift/after/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrades/skill-compatibility-drift/after/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/skill-compatibility-drift/before/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrades/skill-compatibility-drift/before/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/stale-compatible-range/after/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrades/stale-compatible-range/after/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/stale-compatible-range/before/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrades/stale-compatible-range/before/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/stale-exact-pin/after/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrades/stale-exact-pin/after/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/stale-exact-pin/before/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrades/stale-exact-pin/before/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/unsafe-upgrade-mode-escalation/after/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrades/unsafe-upgrade-mode-escalation/after/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/unsafe-upgrade-mode-escalation/before/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrades/unsafe-upgrade-mode-escalation/before/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/unsafe-upgrade-removes-evidence/after/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +69 -0
- package/tests/fixtures/project-adapter-upgrades/unsafe-upgrade-removes-evidence/after/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/unsafe-upgrade-removes-evidence/before/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrades/unsafe-upgrade-removes-evidence/before/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/unsafe-upgrade-weakens-restrictions/after/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +69 -0
- package/tests/fixtures/project-adapter-upgrades/unsafe-upgrade-weakens-restrictions/after/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/unsafe-upgrade-weakens-restrictions/before/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrades/unsafe-upgrade-weakens-restrictions/before/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/unsupported-future-core/after/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrades/unsupported-future-core/after/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/unsupported-future-core/before/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrades/unsupported-future-core/before/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/unsupported-old-core/after/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrades/unsupported-old-core/after/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/unsupported-old-core/before/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrades/unsupported-old-core/before/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/valid-upgrade/after/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrades/valid-upgrade/after/.coding-agent/skills.json +27 -0
- package/tests/fixtures/project-adapter-upgrades/valid-upgrade/before/.coding-agent/adapters/fixture-upgrade-adapter/adapter.json +70 -0
- package/tests/fixtures/project-adapter-upgrades/valid-upgrade/before/.coding-agent/skills.json +27 -0
- package/tests/fixtures/sample-repo/.env.example +1 -0
- package/tests/fixtures/sample-repo/README.md +4 -0
- package/tests/fixtures/sample-repo/docs/architecture.md +3 -0
- package/tests/fixtures/sample-repo/package.json +11 -0
- package/tests/fixtures/sample-repo/src/index.js +3 -0
- package/tests/fixtures/sample-repo/test/index.test.js +8 -0
- package/tests/fixtures/triggers/cases.json +101 -0
- package/tests/policy/README.md +16 -0
- package/tests/privacy/README.md +14 -0
- package/tests/safety/README.md +17 -0
- package/tests/trigger/README.md +11 -0
- package/work-ledger.md +159 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"contractVersion": "1.0.0",
|
|
3
|
+
"skill": {"name": "repo-map", "version": "0.2.3"},
|
|
4
|
+
"invocation": {
|
|
5
|
+
"id": "example-repo-map-001",
|
|
6
|
+
"startedAt": "2026-01-01T12:00:00Z",
|
|
7
|
+
"endedAt": "2026-01-01T12:02:00Z"
|
|
8
|
+
},
|
|
9
|
+
"repository": {
|
|
10
|
+
"root": "/workspace/example-project",
|
|
11
|
+
"branch": "main",
|
|
12
|
+
"head": "0123456789abcdef",
|
|
13
|
+
"workingTreeState": "dirty"
|
|
14
|
+
},
|
|
15
|
+
"userIntent": "Map the repository before changing its API layer.",
|
|
16
|
+
"declaredScope": ["/workspace/example-project"],
|
|
17
|
+
"projectAdapter": null,
|
|
18
|
+
"environmentSummary": {"shell": "bash", "platform": "linux"},
|
|
19
|
+
"status": "complete",
|
|
20
|
+
"confidence": {
|
|
21
|
+
"level": "high",
|
|
22
|
+
"reason": "Repository identity, manifests, entry points, tests, CI, and documentation were inspected."
|
|
23
|
+
},
|
|
24
|
+
"commands": [
|
|
25
|
+
{
|
|
26
|
+
"command": "git status --short --branch",
|
|
27
|
+
"family": "git-status",
|
|
28
|
+
"workingDirectory": "/workspace/example-project",
|
|
29
|
+
"startedAt": "2026-01-01T12:00:10Z",
|
|
30
|
+
"endedAt": "2026-01-01T12:00:11Z",
|
|
31
|
+
"exitStatus": 0,
|
|
32
|
+
"resultStatus": "success",
|
|
33
|
+
"safetyClass": "allowed",
|
|
34
|
+
"approvalReference": null,
|
|
35
|
+
"purpose": "Record branch and working-tree state.",
|
|
36
|
+
"outputSummary": "Branch main; existing user changes present."
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"skippedChecks": [],
|
|
40
|
+
"findings": [
|
|
41
|
+
{
|
|
42
|
+
"summary": "The repository contains separate web and API packages.",
|
|
43
|
+
"evidence": ["package.json", "apps/web/package.json", "apps/api/package.json"]
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
"risks": [
|
|
47
|
+
{
|
|
48
|
+
"summary": "The working tree contains pre-existing changes.",
|
|
49
|
+
"evidence": ["git status --short --branch"]
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"failures": [],
|
|
53
|
+
"unresolvedQuestions": [],
|
|
54
|
+
"changedState": {
|
|
55
|
+
"changed": false,
|
|
56
|
+
"summary": "The audit-only skill made no intentional project, Git, runtime, or remote changes."
|
|
57
|
+
},
|
|
58
|
+
"handoffSummary": "Repository boundaries and primary validation entry points are mapped.",
|
|
59
|
+
"recommendedNextAction": "Trace the requested API route before editing."
|
|
60
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Evidence Pack
|
|
2
|
+
|
|
3
|
+
## Scope
|
|
4
|
+
|
|
5
|
+
- Skill: `repo-map` `0.2.3`
|
|
6
|
+
- Intent: Map the repository before changing its API layer.
|
|
7
|
+
- Scope: `/workspace/example-project`
|
|
8
|
+
- Status: `complete`
|
|
9
|
+
- Confidence: High; repository identity and required structural areas were inspected.
|
|
10
|
+
|
|
11
|
+
## Repository Identity
|
|
12
|
+
|
|
13
|
+
- Root: `/workspace/example-project`
|
|
14
|
+
- Branch: `main`
|
|
15
|
+
- HEAD: `0123456789abcdef`
|
|
16
|
+
- Working tree: Dirty with pre-existing user changes
|
|
17
|
+
|
|
18
|
+
## Checks Performed
|
|
19
|
+
|
|
20
|
+
| Check | Result | Evidence |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| Repository identity | Passed | Git root, branch, remote, and HEAD |
|
|
23
|
+
| Structure | Passed | Package and application directories |
|
|
24
|
+
| Tests and CI | Passed | Package scripts and workflow files |
|
|
25
|
+
|
|
26
|
+
## Skipped Checks
|
|
27
|
+
|
|
28
|
+
None.
|
|
29
|
+
|
|
30
|
+
## Findings
|
|
31
|
+
|
|
32
|
+
- Separate web and API packages exist.
|
|
33
|
+
- Project changes were already present before inspection.
|
|
34
|
+
|
|
35
|
+
## Risks And Failures
|
|
36
|
+
|
|
37
|
+
- Preserve the existing working-tree changes.
|
|
38
|
+
|
|
39
|
+
## Unresolved Questions
|
|
40
|
+
|
|
41
|
+
None.
|
|
42
|
+
|
|
43
|
+
## State Change
|
|
44
|
+
|
|
45
|
+
No intentional project, Git, runtime, dependency, or remote state changed.
|
|
46
|
+
|
|
47
|
+
## Handoff
|
|
48
|
+
|
|
49
|
+
The repository is mapped. Trace the requested API route before editing.
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://coding-agent-skills.local/schemas/evidence-pack.schema.json",
|
|
4
|
+
"title": "Coding Agent Evidence Pack",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"contractVersion",
|
|
9
|
+
"skill",
|
|
10
|
+
"invocation",
|
|
11
|
+
"repository",
|
|
12
|
+
"userIntent",
|
|
13
|
+
"declaredScope",
|
|
14
|
+
"projectAdapter",
|
|
15
|
+
"environmentSummary",
|
|
16
|
+
"status",
|
|
17
|
+
"confidence",
|
|
18
|
+
"commands",
|
|
19
|
+
"skippedChecks",
|
|
20
|
+
"findings",
|
|
21
|
+
"risks",
|
|
22
|
+
"failures",
|
|
23
|
+
"unresolvedQuestions",
|
|
24
|
+
"changedState",
|
|
25
|
+
"handoffSummary",
|
|
26
|
+
"recommendedNextAction"
|
|
27
|
+
],
|
|
28
|
+
"properties": {
|
|
29
|
+
"contractVersion": {"type": "string", "const": "1.0.0"},
|
|
30
|
+
"skill": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"additionalProperties": false,
|
|
33
|
+
"required": ["name", "version"],
|
|
34
|
+
"properties": {
|
|
35
|
+
"name": {"type": "string", "minLength": 1},
|
|
36
|
+
"version": {"type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$"}
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"invocation": {
|
|
40
|
+
"type": "object",
|
|
41
|
+
"additionalProperties": false,
|
|
42
|
+
"required": ["id", "startedAt", "endedAt"],
|
|
43
|
+
"properties": {
|
|
44
|
+
"id": {"type": "string", "minLength": 1},
|
|
45
|
+
"startedAt": {"type": "string", "format": "date-time"},
|
|
46
|
+
"endedAt": {"type": "string", "format": "date-time"}
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"repository": {
|
|
50
|
+
"type": "object",
|
|
51
|
+
"additionalProperties": false,
|
|
52
|
+
"required": ["root", "branch", "head", "workingTreeState"],
|
|
53
|
+
"properties": {
|
|
54
|
+
"root": {"type": ["string", "null"]},
|
|
55
|
+
"branch": {"type": ["string", "null"]},
|
|
56
|
+
"head": {"type": ["string", "null"]},
|
|
57
|
+
"workingTreeState": {
|
|
58
|
+
"type": "string",
|
|
59
|
+
"enum": ["clean", "dirty", "not-git", "unknown"]
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"userIntent": {"type": "string", "minLength": 1},
|
|
64
|
+
"declaredScope": {"type": "array", "items": {"type": "string"}},
|
|
65
|
+
"projectAdapter": {"type": ["string", "null"]},
|
|
66
|
+
"environmentSummary": {"type": "object"},
|
|
67
|
+
"status": {
|
|
68
|
+
"type": "string",
|
|
69
|
+
"enum": ["complete", "partial", "failed", "blocked"]
|
|
70
|
+
},
|
|
71
|
+
"confidence": {
|
|
72
|
+
"type": "object",
|
|
73
|
+
"additionalProperties": false,
|
|
74
|
+
"required": ["level", "reason"],
|
|
75
|
+
"properties": {
|
|
76
|
+
"level": {"type": "string", "enum": ["high", "medium", "low"]},
|
|
77
|
+
"reason": {"type": "string", "minLength": 1}
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"commands": {"type": "array", "items": {"$ref": "#/$defs/commandRecord"}},
|
|
81
|
+
"skippedChecks": {"type": "array", "items": {"$ref": "#/$defs/skippedCheck"}},
|
|
82
|
+
"findings": {"type": "array", "items": {"$ref": "#/$defs/note"}},
|
|
83
|
+
"risks": {"type": "array", "items": {"$ref": "#/$defs/note"}},
|
|
84
|
+
"failures": {"type": "array", "items": {"$ref": "#/$defs/note"}},
|
|
85
|
+
"unresolvedQuestions": {"type": "array", "items": {"type": "string"}},
|
|
86
|
+
"changedState": {
|
|
87
|
+
"type": "object",
|
|
88
|
+
"additionalProperties": false,
|
|
89
|
+
"required": ["changed", "summary"],
|
|
90
|
+
"properties": {
|
|
91
|
+
"changed": {"type": "boolean"},
|
|
92
|
+
"summary": {"type": "string", "minLength": 1}
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"handoffSummary": {"type": "string"},
|
|
96
|
+
"recommendedNextAction": {"type": ["string", "null"]}
|
|
97
|
+
},
|
|
98
|
+
"$defs": {
|
|
99
|
+
"commandRecord": {
|
|
100
|
+
"type": "object",
|
|
101
|
+
"additionalProperties": false,
|
|
102
|
+
"required": [
|
|
103
|
+
"command",
|
|
104
|
+
"family",
|
|
105
|
+
"workingDirectory",
|
|
106
|
+
"startedAt",
|
|
107
|
+
"endedAt",
|
|
108
|
+
"exitStatus",
|
|
109
|
+
"resultStatus",
|
|
110
|
+
"safetyClass",
|
|
111
|
+
"approvalReference",
|
|
112
|
+
"purpose",
|
|
113
|
+
"outputSummary"
|
|
114
|
+
],
|
|
115
|
+
"properties": {
|
|
116
|
+
"command": {"type": "string"},
|
|
117
|
+
"family": {"type": "string"},
|
|
118
|
+
"workingDirectory": {"type": "string"},
|
|
119
|
+
"startedAt": {"type": "string", "format": "date-time"},
|
|
120
|
+
"endedAt": {"type": "string", "format": "date-time"},
|
|
121
|
+
"exitStatus": {"type": ["integer", "null"]},
|
|
122
|
+
"resultStatus": {
|
|
123
|
+
"type": "string",
|
|
124
|
+
"enum": ["success", "failure", "running", "unknown"]
|
|
125
|
+
},
|
|
126
|
+
"safetyClass": {
|
|
127
|
+
"type": "string",
|
|
128
|
+
"enum": ["allowed", "approved-exception", "rejected"]
|
|
129
|
+
},
|
|
130
|
+
"approvalReference": {"type": ["string", "null"]},
|
|
131
|
+
"purpose": {"type": "string"},
|
|
132
|
+
"outputSummary": {"type": "string"}
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
"skippedCheck": {
|
|
136
|
+
"type": "object",
|
|
137
|
+
"additionalProperties": false,
|
|
138
|
+
"required": ["name", "reason", "consequence", "completionPermitted"],
|
|
139
|
+
"properties": {
|
|
140
|
+
"name": {"type": "string"},
|
|
141
|
+
"reason": {"type": "string"},
|
|
142
|
+
"consequence": {"type": "string"},
|
|
143
|
+
"completionPermitted": {"type": "boolean"}
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
"note": {
|
|
147
|
+
"type": "object",
|
|
148
|
+
"additionalProperties": false,
|
|
149
|
+
"required": ["summary", "evidence"],
|
|
150
|
+
"properties": {
|
|
151
|
+
"summary": {"type": "string"},
|
|
152
|
+
"evidence": {"type": "array", "items": {"type": "string"}}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Project Adapters
|
|
2
|
+
|
|
3
|
+
Project-specific adapters live in their owning project repositories, not this shared repository.
|
|
4
|
+
They add bounded project context to a compatible shared skill. They are data, not executable plugins.
|
|
5
|
+
|
|
6
|
+
Every adapter must validate against [the project-adapter schema](../../schemas/project-adapter.schema.json).
|
|
7
|
+
|
|
8
|
+
## Convention And Discovery
|
|
9
|
+
|
|
10
|
+
External discovery is opt-in and bounded to three project-relative locations. Each adapter
|
|
11
|
+
uses the exact manifest name `adapter.json`. See [the discovery convention](discovery.md)
|
|
12
|
+
for path and symlink rules, [external validation](external-adapters.md) for manifest-only
|
|
13
|
+
CLI behavior, and [project installation](project-installation.md) for declaration and
|
|
14
|
+
version-pinning rules. Use [upgrade checks](upgrades.md) to compare two declared revisions
|
|
15
|
+
or a multi-step compatibility chain before changing a real project. The
|
|
16
|
+
[upgrade evidence contract](upgrade-evidence.md) defines sanitized review output. The
|
|
17
|
+
[real project adoption gate](real-project-adoption.md) defines the approval and evidence
|
|
18
|
+
requirements that must be met before any real project adapter is created.
|
|
19
|
+
|
|
20
|
+
Discovery validates schema, skill compatibility, command policy, and inherited restrictions
|
|
21
|
+
before accepting any extension. It never executes adapter commands.
|
|
22
|
+
|
|
23
|
+
## Adapter-Aware Repo Map Consumption
|
|
24
|
+
|
|
25
|
+
The shared pack can consume a validated project-owned adapter as agent context for
|
|
26
|
+
`repo-map` orientation:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
node scripts/render-adapter-repo-map.mjs <project-root>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The renderer validates the project declaration first, confirms that `repo-map` is enabled,
|
|
33
|
+
then reports only adapter-declared metadata: documentation precedence, safe read paths,
|
|
34
|
+
ignored paths, required evidence, package-manager hints, repository bounds, and sanitized
|
|
35
|
+
Git branch state. It does not read target project file contents, run project tests or
|
|
36
|
+
builds, install packages, perform runtime checks, deploy, migrate, or read `.env` files.
|
|
37
|
+
|
|
38
|
+
This is agent context for safer repository understanding. It is not target-application
|
|
39
|
+
product behavior.
|
|
40
|
+
|
|
41
|
+
## What Adapters May Do
|
|
42
|
+
|
|
43
|
+
- Add bounded relative read paths and ignored paths.
|
|
44
|
+
- Declare project-root markers and a bounded detection depth.
|
|
45
|
+
- Add documentation precedence and package-manager hints.
|
|
46
|
+
- Add command aliases that already satisfy the shared command policy.
|
|
47
|
+
- Add status-only runtime commands and manager hints.
|
|
48
|
+
- Require additional evidence or named approval for exceptional reads.
|
|
49
|
+
|
|
50
|
+
## What Adapters Must Never Do
|
|
51
|
+
|
|
52
|
+
- Remove inherited denied-operation categories.
|
|
53
|
+
- Change an audit-only skill into an action-capable skill.
|
|
54
|
+
- Permit deployment, Git publication, installation, migration, or service mutation.
|
|
55
|
+
- Expose secrets or add secret-bearing paths.
|
|
56
|
+
- Suppress failures, contradictions, dirty state, or required evidence.
|
|
57
|
+
- Redefine completion semantics.
|
|
58
|
+
- Expand scanning outside the declared project root without named approval.
|
|
59
|
+
|
|
60
|
+
## Compatibility And Inheritance
|
|
61
|
+
|
|
62
|
+
Skill manifests declare the adapter contract and compatible adapter versions. An adapter separately declares supported skill IDs, compatible skill versions, and the unchanged skill mode.
|
|
63
|
+
|
|
64
|
+
Compatibility requires both declarations to agree. Exact pilot versions and the `0.2.x`
|
|
65
|
+
compatibility form are supported in v0.2.3. Upgrade comparisons also preserve adapter
|
|
66
|
+
identity, inherited restrictions, and required evidence across revisions.
|
|
67
|
+
|
|
68
|
+
The `inheritance` object is mandatory. Shared restrictions always win, and every permission-like safety flag is fixed to `false`.
|
|
69
|
+
|
|
70
|
+
The shared skill repository stores only synthetic fixture roots. The first external
|
|
71
|
+
project-owned adapter was adopted in `/home/oneclickwebsitedesignfactory/tax-lien-platform`
|
|
72
|
+
at candidate commit `c548b1a6cbb3455a70b89d0e301e22435bfccac9`. That adapter is
|
|
73
|
+
`repo-map` only, docs/metadata-only, and contains no commands, runtime checks,
|
|
74
|
+
build/test/package behavior, platform behavior, deployment behavior, or secret-aware
|
|
75
|
+
behavior.
|
|
76
|
+
|
|
77
|
+
During publication, the candidate repository's normal pre-push hook attempted package
|
|
78
|
+
operations, including install, audit, and typecheck. The run was interrupted to preserve
|
|
79
|
+
the approved boundary, validation was kept to the shared adapter validators and safe
|
|
80
|
+
checks, and publication completed with hook verification bypass. Future real-project
|
|
81
|
+
adapter adoption must decide explicitly whether repository hooks are allowed or must be
|
|
82
|
+
bypassed to preserve a no-install/no-build/no-test boundary.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# External Adapter Discovery
|
|
2
|
+
|
|
3
|
+
External adapters are extension-only JSON data stored outside this shared skill repository.
|
|
4
|
+
The discovery harness accepts a confirmed project or fixture root and inspects only these
|
|
5
|
+
relative locations:
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
.coding-agent/adapters/
|
|
9
|
+
coding-agent/adapters/
|
|
10
|
+
adapters/coding-agent/
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Each immediate child directory represents one adapter and must contain the exact manifest
|
|
14
|
+
filename `adapter.json`. Discovery does not recursively scan the rest of the project.
|
|
15
|
+
|
|
16
|
+
## Discovery Rules
|
|
17
|
+
|
|
18
|
+
1. Resolve the supplied root without accepting `..` path traversal.
|
|
19
|
+
2. Inspect only the three declared adapter locations.
|
|
20
|
+
3. Reject adapter containers, directories, or manifests that are symlinks.
|
|
21
|
+
4. Accept only regular `adapter.json` files no larger than the harness limit.
|
|
22
|
+
5. Parse JSON without returning source snippets in errors.
|
|
23
|
+
6. Reject secret-like content before semantic validation.
|
|
24
|
+
7. Validate against adapter schema version `1.0.0`.
|
|
25
|
+
8. Confirm skill ID, skill version, declared mode, command policy, and manifest compatibility.
|
|
26
|
+
9. Apply shared restrictions before every adapter extension.
|
|
27
|
+
10. Return a nonzero exit code when any discovered adapter or container is invalid.
|
|
28
|
+
|
|
29
|
+
An empty root is valid and reports that zero adapters were discovered. A missing root,
|
|
30
|
+
malformed manifest, unexpected container entry, or mixed valid and invalid root fails.
|
|
31
|
+
|
|
32
|
+
## Inheritance
|
|
33
|
+
|
|
34
|
+
Adapters may add bounded read paths, documentation precedence, safe aliases, status-only
|
|
35
|
+
runtime hints, package-manager hints, approvals, and evidence requirements. They remain
|
|
36
|
+
extension-only: shared denied operations, skill modes, evidence requirements, failure
|
|
37
|
+
reporting, completion semantics, secret handling, and scope approval rules always win.
|
|
38
|
+
|
|
39
|
+
Symlink escapes and path traversal are rejected even when their target would otherwise
|
|
40
|
+
contain a structurally valid adapter.
|
|
41
|
+
|
|
42
|
+
Project repositories may later reference a versioned checkout or installed copy of this
|
|
43
|
+
shared core. That integration must run the core validator against the project root; it must
|
|
44
|
+
not copy or redefine shared restrictions locally.
|
|
45
|
+
|
|
46
|
+
The [project installation contract](project-installation.md) defines the declaration and
|
|
47
|
+
version pin required before a project-owned adapter can be considered installed.
|
|
48
|
+
|
|
49
|
+
No real project adapters are added in v0.2.3. The committed roots are disposable synthetic
|
|
50
|
+
fixtures only.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Validating External Adapters
|
|
2
|
+
|
|
3
|
+
Run the dependency-free validator from the shared core repository:
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
node scripts/validate-adapters.mjs <adapter-root>
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
The argument is the project or fixture root beneath which the declared discovery locations
|
|
10
|
+
may exist. The validator reads only core schemas and policies plus discovered `adapter.json`
|
|
11
|
+
files. It does not read `.env`, install dependencies, run adapter commands, or change the
|
|
12
|
+
target project.
|
|
13
|
+
|
|
14
|
+
## Results
|
|
15
|
+
|
|
16
|
+
- Exit `0`: every discovered adapter is accepted, including the explicit zero-adapter case.
|
|
17
|
+
- Exit `1`: a root, container, manifest, schema, compatibility, inheritance, or path-safety
|
|
18
|
+
rejection occurred.
|
|
19
|
+
- Exit `2`: the command is missing its required root argument.
|
|
20
|
+
|
|
21
|
+
Output contains counts, public pilot skill IDs for accepted adapters, and stable rejection
|
|
22
|
+
codes. It does not echo adapter IDs, commands, paths from manifest values, parse snippets,
|
|
23
|
+
or secret-like values.
|
|
24
|
+
|
|
25
|
+
Common rejection categories include unsupported adapter or skill versions, unsupported
|
|
26
|
+
skill IDs, mode override, restriction weakening, unsafe command alias, secret exposure,
|
|
27
|
+
failure suppression, completion override, required-evidence removal, scope expansion,
|
|
28
|
+
unsafe path, malformed JSON, missing manifest, and symlink escape.
|
|
29
|
+
|
|
30
|
+
## Fixture Model
|
|
31
|
+
|
|
32
|
+
Synthetic fixture roots under `tests/fixtures/external-adapters/` exercise all three
|
|
33
|
+
locations, valid adapters, isolated invalid adapters, mixed roots, empty roots, malformed
|
|
34
|
+
input, traversal, and temporary symlink escapes. Fixtures contain no real project details.
|
|
35
|
+
|
|
36
|
+
Real project adapters remain deferred. When approved later, they should be owned by their
|
|
37
|
+
project repository, declare compatibility with a released shared core, and pass this
|
|
38
|
+
validator without changing shared restrictions.
|
|
39
|
+
|
|
40
|
+
Manifest-only validation does not prove that a project has declared or pinned the shared
|
|
41
|
+
core. Use the [project installation validator](project-installation.md) for that stronger
|
|
42
|
+
workflow.
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Project-Owned Adapter Installation
|
|
2
|
+
|
|
3
|
+
A future project repository owns its adapter manifests while the shared repository owns
|
|
4
|
+
schemas, skill manifests, command policies, completion rules, and validators. Installation
|
|
5
|
+
means declaring and validating that relationship; it does not copy or execute adapter code.
|
|
6
|
+
|
|
7
|
+
## Required Layout
|
|
8
|
+
|
|
9
|
+
Choose one supported adapter root:
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
.coding-agent/adapters/
|
|
13
|
+
coding-agent/adapters/
|
|
14
|
+
adapters/coding-agent/
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Each immediate child directory contains one `adapter.json`. The project must also contain
|
|
18
|
+
exactly one declaration:
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
.coding-agent/skills.json
|
|
22
|
+
coding-agent.skills.json
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Two declarations are ambiguous and fail validation.
|
|
26
|
+
|
|
27
|
+
## Declaration Contract
|
|
28
|
+
|
|
29
|
+
The declaration validates against
|
|
30
|
+
[`project-adapter-installation.schema.json`](../../schemas/project-adapter-installation.schema.json).
|
|
31
|
+
It records:
|
|
32
|
+
|
|
33
|
+
- Declaration and adapter schema versions.
|
|
34
|
+
- Project ID and one supported adapter root.
|
|
35
|
+
- Expected shared core version and an exact pin or compatible range.
|
|
36
|
+
- Compatible pilot skill IDs.
|
|
37
|
+
- Every installed adapter ID, adapter version, and skill set.
|
|
38
|
+
- The validation command template.
|
|
39
|
+
- A repository-relative evidence output location.
|
|
40
|
+
- A repository-relative approval policy reference.
|
|
41
|
+
- An explicit `noSecrets: true` guarantee.
|
|
42
|
+
|
|
43
|
+
The validation command is declared as:
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
node <shared-core>/scripts/validate-project-adapters.mjs <project-root>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The validator checks this field; it does not execute it.
|
|
50
|
+
|
|
51
|
+
## Version Pinning
|
|
52
|
+
|
|
53
|
+
Two version pin forms are supported:
|
|
54
|
+
|
|
55
|
+
```text
|
|
56
|
+
0.2.3
|
|
57
|
+
>=0.2.2 <0.3.0
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The expected version must equal the running shared core version. The pin must contain both
|
|
61
|
+
that version and the declared expected version. Missing versions, prefixes, wildcards,
|
|
62
|
+
caret ranges, unsupported old or future versions, and malformed comparators fail closed.
|
|
63
|
+
|
|
64
|
+
Adapter schema version `1.0.0` and every declared adapter version must match the discovered
|
|
65
|
+
manifest. Skill IDs and modes must remain compatible with the shared pilot manifests.
|
|
66
|
+
|
|
67
|
+
## Validation Flow
|
|
68
|
+
|
|
69
|
+
Run:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
node scripts/validate-project-adapters.mjs <project-root>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
The dependency-free validator:
|
|
76
|
+
|
|
77
|
+
1. Finds exactly one project declaration.
|
|
78
|
+
2. Validates declaration structure and safe relative paths.
|
|
79
|
+
3. Checks the current core version against the exact pin or compatible range.
|
|
80
|
+
4. Runs bounded external adapter discovery.
|
|
81
|
+
5. Matches project ID, adapter root, adapter IDs, versions, and skill IDs.
|
|
82
|
+
6. Applies shared schema, command-policy, inheritance, and path-safety checks.
|
|
83
|
+
7. Returns counts and stable rejection codes without echoing declaration values.
|
|
84
|
+
|
|
85
|
+
Exit `0` means the project declaration and all installed adapters are compatible. Exit `1`
|
|
86
|
+
means validation failed. Exit `2` means the project-root argument is missing.
|
|
87
|
+
|
|
88
|
+
## Repo-Map Consumption
|
|
89
|
+
|
|
90
|
+
After validation passes, a project-owned adapter can be consumed as read-only `repo-map`
|
|
91
|
+
context:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
node scripts/render-adapter-repo-map.mjs <project-root>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
The renderer uses the same project declaration and adapter validation path before it reads
|
|
98
|
+
adapter metadata. It requires `repo-map` compatibility and then renders:
|
|
99
|
+
|
|
100
|
+
- Documentation precedence.
|
|
101
|
+
- Safe read paths.
|
|
102
|
+
- Ignored paths.
|
|
103
|
+
- Required evidence.
|
|
104
|
+
- Root markers, declared scope, and detection depth.
|
|
105
|
+
- Package-manager hints.
|
|
106
|
+
- Sanitized Git branch state and warnings.
|
|
107
|
+
|
|
108
|
+
The renderer is metadata-only. It does not read target project file contents, run target
|
|
109
|
+
project tests, run builds, install packages, perform runtime checks, deploy, migrate, read
|
|
110
|
+
`.env` files, or modify project state.
|
|
111
|
+
|
|
112
|
+
## Safety Boundary
|
|
113
|
+
|
|
114
|
+
Project adapters are extension-only. They cannot remove denied operations, change an
|
|
115
|
+
audit-only mode, add deployment or publication, suppress failures, redefine completion,
|
|
116
|
+
remove evidence, expose secrets, expand scope without approval, or escape through symlinks
|
|
117
|
+
or traversal.
|
|
118
|
+
|
|
119
|
+
The validator reads only the declaration, discovered `adapter.json` files, and shared core
|
|
120
|
+
metadata. It ignores unrelated `.env` files and never installs packages, runs adapter
|
|
121
|
+
commands, deploys, migrates, or changes project state.
|
|
122
|
+
|
|
123
|
+
Use [the upgrade checker](upgrades.md) to compare a current declaration with a proposed
|
|
124
|
+
revision and detect stale pins or compatibility drift before adoption.
|
|
125
|
+
|
|
126
|
+
Before any real project adapter is created, use the
|
|
127
|
+
[real project adoption gate](real-project-adoption.md) to confirm candidate criteria,
|
|
128
|
+
required evidence, approval gates, stop conditions, and rollback boundaries.
|
|
129
|
+
|
|
130
|
+
All committed project roots in this shared repository remain disposable synthetic fixtures.
|
|
131
|
+
The first external project-owned adapter was adopted in
|
|
132
|
+
`/home/oneclickwebsitedesignfactory/tax-lien-platform` at candidate commit
|
|
133
|
+
`c548b1a6cbb3455a70b89d0e301e22435bfccac9`. The shared repository still owns the schemas,
|
|
134
|
+
completion rules, command policy, and validators; the project repository owns its adapter
|
|
135
|
+
manifest and declaration.
|