amicus 0.1.0__tar.gz
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.
- amicus-0.1.0/.agents/skills/agent-friendly-docs/SKILL.md +81 -0
- amicus-0.1.0/.agents/skills/agent-friendly-docs/references/design-workflow.md +82 -0
- amicus-0.1.0/.agents/skills/agent-friendly-docs/references/docs-checklist.md +113 -0
- amicus-0.1.0/.agents/skills/agent-friendly-docs/references/examples.md +194 -0
- amicus-0.1.0/.agents/skills/agent-friendly-docs/references/review-workflow.md +91 -0
- amicus-0.1.0/.agents/skills/agent-friendly-docs/tests/scenarios.md +279 -0
- amicus-0.1.0/.agents/skills/agent-friendly-github/SKILL.md +108 -0
- amicus-0.1.0/.agents/skills/agent-friendly-github/decisions/001-github-fact-sheet.md +53 -0
- amicus-0.1.0/.agents/skills/agent-friendly-github/references/audit-workflow.md +196 -0
- amicus-0.1.0/.agents/skills/agent-friendly-github/references/config-checklist.md +202 -0
- amicus-0.1.0/.agents/skills/agent-friendly-github/references/examples/README.md +25 -0
- amicus-0.1.0/.agents/skills/agent-friendly-github/references/examples/codeowners.md +61 -0
- amicus-0.1.0/.agents/skills/agent-friendly-github/references/examples/harness-deny.md +85 -0
- amicus-0.1.0/.agents/skills/agent-friendly-github/references/examples/identity.md +73 -0
- amicus-0.1.0/.agents/skills/agent-friendly-github/references/examples/repo-files.md +274 -0
- amicus-0.1.0/.agents/skills/agent-friendly-github/references/examples/required-checks.md +240 -0
- amicus-0.1.0/.agents/skills/agent-friendly-github/references/examples/rulesets.md +169 -0
- amicus-0.1.0/.agents/skills/agent-friendly-github/references/examples/workflows.md +215 -0
- amicus-0.1.0/.agents/skills/agent-friendly-github/references/operating-playbook.md +37 -0
- amicus-0.1.0/.agents/skills/agent-friendly-github/references/setup-workflow.md +230 -0
- amicus-0.1.0/.agents/skills/agent-friendly-github/references/threat-model.md +152 -0
- amicus-0.1.0/.agents/skills/agent-friendly-github/tests/check_authority.py +363 -0
- amicus-0.1.0/.agents/skills/agent-friendly-github/tests/scenarios.md +221 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/SKILL.md +122 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/decisions/001-mcp-2026-07-28-rebase.md +78 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/decisions/002-machine-code-rename-rationale.md +34 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/decisions/003-offending-value-omission.md +32 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/decisions/004-ownership-boundaries.md +24 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/references/contract-checklist.md +715 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/references/design-workflow.md +215 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/references/examples.md +1229 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/references/mcp-2025-11-25-compat.md +43 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/references/mcp-vs-cli.md +97 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/references/native-wire-shapes.md +214 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/references/review-workflow.md +128 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/references/vocabulary.md +19 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/check_fact_sync.py +153 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/check_rule_ids.py +177 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/check_stale_terms.py +156 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/fixtures/github_issues.json +250 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/fixtures/github_repo_resource.json +171 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/rule-ids.txt +177 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario1-baseline.md +496 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario1-outputschema-error.md +875 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario1-with-skill.md +591 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario2-baseline.md +94 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario2-with-skill.md +153 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario3-baseline.md +535 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario3-with-skill.md +597 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario4-baseline.md +72 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario4-with-skill.md +63 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario5-baseline.md +431 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario5-with-skill.md +473 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario6-baseline.md +128 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario6-with-skill.md +139 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario7-trigger.md +33 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-29-scenario1-baseline.md +268 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-29-scenario1-with-skill.md +684 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-29-scenario3-baseline.md +300 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-29-scenario3-with-skill.md +472 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-29-scenario5-baseline.md +126 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-29-scenario5-with-skill.md +167 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-30-scenario1-with-skill.md +563 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-30-scenario8-severity-calibration.md +55 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/scenarios.md +305 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/test_check_fact_sync.py +90 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/test_check_rule_ids.py +133 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/test_validate_fixture.py +404 -0
- amicus-0.1.0/.agents/skills/agent-friendly-mcp/tests/validate_fixture.py +553 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/SKILL.md +112 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/agents/openai.yaml +4 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/references/example-audit.md +127 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/rescore-2026-08-06/preregistration.md +140 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/rescore-2026-08-06/results.md +135 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario1-baseline.md +51 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario1-with-skill.md +54 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario2-baseline.md +42 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario2-with-skill.md +35 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario3-baseline.md +41 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario3-with-skill.md +43 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario4-baseline.md +27 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario4-with-skill.md +34 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario5-baseline.md +28 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario5-with-skill.md +28 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario6-baseline.md +35 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario6-with-skill.md +55 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario7-baseline.md +29 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario7-with-skill.md +33 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario8-baseline.md +33 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario8-with-skill.md +42 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario9-trigger.md +16 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-08-06-scenario1-with-skill.md +137 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-08-06-scenario6-with-skill.md +81 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-08-23-confirmation-r1-both-directions.md +78 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-08-23-scenario1-with-skill.md +87 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-08-23-scenario2-with-skill.md +88 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-08-23-scenario5-with-skill.md +82 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-08-23-scenario6-with-skill.md +89 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-08-23-scenario7-with-skill.md +66 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/runs/2026-08-23-scenario8-with-skill.md +64 -0
- amicus-0.1.0/.agents/skills/separating-context-from-constraints/tests/scenarios.md +365 -0
- amicus-0.1.0/.claude-plugin/marketplace.json +14 -0
- amicus-0.1.0/.claude-plugin/plugin.json +27 -0
- amicus-0.1.0/.codex-plugin/plugin.json +26 -0
- amicus-0.1.0/.gitattributes +4 -0
- amicus-0.1.0/.github/CODEOWNERS +2 -0
- amicus-0.1.0/.github/PULL_REQUEST_TEMPLATE.md +17 -0
- amicus-0.1.0/.github/dependabot.yml +32 -0
- amicus-0.1.0/.github/workflows/ci.yml +18 -0
- amicus-0.1.0/.github/workflows/codeql.yml +38 -0
- amicus-0.1.0/.github/workflows/dependency-review.yml +22 -0
- amicus-0.1.0/.github/workflows/publish.yml +129 -0
- amicus-0.1.0/.github/workflows/test.yml +39 -0
- amicus-0.1.0/.gitignore +33 -0
- amicus-0.1.0/.mcp.json +51 -0
- amicus-0.1.0/AGENTS.md +104 -0
- amicus-0.1.0/CHANGELOG.md +33 -0
- amicus-0.1.0/CLAUDE.md +1 -0
- amicus-0.1.0/LICENSE +21 -0
- amicus-0.1.0/PKG-INFO +198 -0
- amicus-0.1.0/README.md +168 -0
- amicus-0.1.0/commands/amicus/adversarial.md +35 -0
- amicus-0.1.0/commands/amicus/consult.md +24 -0
- amicus-0.1.0/commands/amicus/delegate.md +28 -0
- amicus-0.1.0/commands/amicus/dry-run.md +27 -0
- amicus-0.1.0/commands/amicus/jobs.md +25 -0
- amicus-0.1.0/commands/amicus/review.md +27 -0
- amicus-0.1.0/commands/amicus/status.md +24 -0
- amicus-0.1.0/docs/2026-09-04-naming-and-scoping-notes.md +157 -0
- amicus-0.1.0/docs/DEPRECATING-SIBLINGS.md +65 -0
- amicus-0.1.0/docs/MIGRATION.md +158 -0
- amicus-0.1.0/docs/RELEASING.md +185 -0
- amicus-0.1.0/docs/adr/0001-annotations-follow-the-worst-enabled-backend.md +23 -0
- amicus-0.1.0/docs/adr/0002-backend-options-is-a-closed-superset.md +20 -0
- amicus-0.1.0/docs/adr/0003-workspace-resolution.md +18 -0
- amicus-0.1.0/docs/adr/0004-tasks-and-jobs.md +36 -0
- amicus-0.1.0/docs/adr/0005-error-envelope-and-repair-precedence.md +31 -0
- amicus-0.1.0/docs/adr/0006-fingerprint-and-surface-digest.md +22 -0
- amicus-0.1.0/docs/adr/0007-m1-codex-port-decisions.md +32 -0
- amicus-0.1.0/docs/adr/0008-m2-jobs-surface-decisions.md +32 -0
- amicus-0.1.0/docs/adr/0009-m3-kimi-port-decisions.md +32 -0
- amicus-0.1.0/docs/adr/0010-m4-claude-port-decisions.md +38 -0
- amicus-0.1.0/docs/adr/0011-m5-tasks-decisions.md +37 -0
- amicus-0.1.0/docs/adr/0012-m6-packaging-decisions.md +178 -0
- amicus-0.1.0/docs/adr/0013-proceed-without-trademark-clearance.md +47 -0
- amicus-0.1.0/docs/adr/0014-release-predicate-on-the-tag.md +71 -0
- amicus-0.1.0/docs/adr/README.md +5 -0
- amicus-0.1.0/docs/claude-help/2.1.263/FINDINGS.md +41 -0
- amicus-0.1.0/docs/claude-help/2.1.263/claude-help.txt +106 -0
- amicus-0.1.0/docs/claude-help/2.1.263/claude-version.txt +1 -0
- amicus-0.1.0/docs/claude-help/2.1.263/envelope-shape.json +23 -0
- amicus-0.1.0/docs/host-captures/claude-code/2.1.263/FINDINGS.md +15 -0
- amicus-0.1.0/docs/host-captures/claude-code/2.1.263/connection.log +1 -0
- amicus-0.1.0/docs/host-captures/claude-code/2.1.263/host-output.json +38 -0
- amicus-0.1.0/docs/host-captures/codex/0.153.4/FINDINGS.md +15 -0
- amicus-0.1.0/docs/host-captures/codex/0.153.4/connection.log +1 -0
- amicus-0.1.0/docs/host-captures/codex/0.153.4/host-output.jsonl +6 -0
- amicus-0.1.0/docs/host-captures/free-scenarios/claude-code/2.1.263/notes.md +53 -0
- amicus-0.1.0/docs/host-captures/free-scenarios/claude-code/2.1.263/server.log +23 -0
- amicus-0.1.0/docs/host-captures/free-scenarios/claude-code/2.1.263/transcript.md +121 -0
- amicus-0.1.0/docs/host-captures/install-smoke/claude-code/2.1.263/notes.md +61 -0
- amicus-0.1.0/docs/host-captures/install-smoke/claude-code/2.1.263/server.log +52 -0
- amicus-0.1.0/docs/host-captures/install-smoke/claude-code/2.1.263/transcript.md +115 -0
- amicus-0.1.0/docs/host-captures/install-smoke/codex/0.153.4/notes.md +65 -0
- amicus-0.1.0/docs/host-captures/install-smoke/codex/0.153.4/server.log +43 -0
- amicus-0.1.0/docs/host-captures/install-smoke/codex/0.153.4/transcript.md +106 -0
- amicus-0.1.0/docs/host-captures/s6-f3-recon-attempt/claude-code/2.1.265/notes.md +39 -0
- amicus-0.1.0/docs/host-captures/s6-f3-recon-attempt/claude-code/2.1.265/server.log +3 -0
- amicus-0.1.0/docs/host-captures/s6-f3-recon-attempt/claude-code/2.1.265/transcript.md +92 -0
- amicus-0.1.0/docs/host-captures/s6-old-text-new-grader/claude-code/2.1.263/notes.md +49 -0
- amicus-0.1.0/docs/host-captures/s6-old-text-new-grader/claude-code/2.1.263/server.log +3 -0
- amicus-0.1.0/docs/host-captures/s6-old-text-new-grader/claude-code/2.1.263/transcript.md +103 -0
- amicus-0.1.0/docs/host-captures/s6-rerun/claude-code/2.1.263/notes.md +44 -0
- amicus-0.1.0/docs/host-captures/s6-rerun/claude-code/2.1.263/server.log +6 -0
- amicus-0.1.0/docs/host-captures/s6-rerun/claude-code/2.1.263/transcript.md +44 -0
- amicus-0.1.0/docs/host-captures/s6-response-contract/claude-code/2.1.263/notes.md +59 -0
- amicus-0.1.0/docs/host-captures/s6-response-contract/claude-code/2.1.263/server.log +3 -0
- amicus-0.1.0/docs/host-captures/s6-response-contract/claude-code/2.1.263/transcript.md +78 -0
- amicus-0.1.0/docs/host-captures/s7-rule5-recheck/claude-code/2.1.265/notes.md +45 -0
- amicus-0.1.0/docs/host-captures/s7-rule5-recheck/claude-code/2.1.265/server.log +5 -0
- amicus-0.1.0/docs/host-captures/s7-rule5-recheck/claude-code/2.1.265/transcript.md +88 -0
- amicus-0.1.0/docs/kimi-help/0.41.0/FINDINGS.md +42 -0
- amicus-0.1.0/docs/kimi-help/0.41.0/kimi-help.txt +48 -0
- amicus-0.1.0/docs/kimi-help/0.41.0/kimi-version.txt +1 -0
- amicus-0.1.0/docs/kimi-help/0.41.0/provider-list-shape.json +18 -0
- amicus-0.1.0/docs/reviews/2026-09-07-agent-friendly-mcp-walk.md +383 -0
- amicus-0.1.0/docs/superpowers/plans/2026-09-04-amicus-execution-model.md +42 -0
- amicus-0.1.0/docs/superpowers/specs/2026-09-04-amicus-design.md +319 -0
- amicus-0.1.0/prek.toml +39 -0
- amicus-0.1.0/pyproject.toml +145 -0
- amicus-0.1.0/scripts/capture_claude_differentials.py +322 -0
- amicus-0.1.0/scripts/capture_codex_differentials.py +258 -0
- amicus-0.1.0/scripts/capture_kimi_differentials.py +263 -0
- amicus-0.1.0/scripts/check_commit_message.py +129 -0
- amicus-0.1.0/scripts/check_github_actions_pinning.py +152 -0
- amicus-0.1.0/scripts/check_release_state.py +359 -0
- amicus-0.1.0/scripts/record_live_gate_evidence.py +431 -0
- amicus-0.1.0/skills/collaborating-with-amicus/SKILL.md +137 -0
- amicus-0.1.0/skills/collaborating-with-amicus/references/choosing-a-backend.md +51 -0
- amicus-0.1.0/skills/collaborating-with-amicus/references/reviewing-a-returned-diff.md +61 -0
- amicus-0.1.0/skills/collaborating-with-amicus/references/sync-vs-async.md +55 -0
- amicus-0.1.0/skills/collaborating-with-amicus/tests/scenarios.md +666 -0
- amicus-0.1.0/src/amicus/__init__.py +6 -0
- amicus-0.1.0/src/amicus/_worker.py +161 -0
- amicus-0.1.0/src/amicus/appstate.py +22 -0
- amicus-0.1.0/src/amicus/backends/__init__.py +26 -0
- amicus-0.1.0/src/amicus/backends/claude/__init__.py +107 -0
- amicus-0.1.0/src/amicus/backends/claude/adapter.py +252 -0
- amicus-0.1.0/src/amicus/backends/claude/adversarial.py +60 -0
- amicus-0.1.0/src/amicus/backends/claude/binary.py +61 -0
- amicus-0.1.0/src/amicus/backends/claude/cli.py +392 -0
- amicus-0.1.0/src/amicus/backends/claude/config.py +229 -0
- amicus-0.1.0/src/amicus/backends/claude/contract.py +252 -0
- amicus-0.1.0/src/amicus/backends/claude/models.py +36 -0
- amicus-0.1.0/src/amicus/backends/claude/normalize.py +99 -0
- amicus-0.1.0/src/amicus/backends/claude/options.py +24 -0
- amicus-0.1.0/src/amicus/backends/claude/status.py +68 -0
- amicus-0.1.0/src/amicus/backends/codex/__init__.py +83 -0
- amicus-0.1.0/src/amicus/backends/codex/adapter.py +193 -0
- amicus-0.1.0/src/amicus/backends/codex/binary.py +119 -0
- amicus-0.1.0/src/amicus/backends/codex/cli.py +402 -0
- amicus-0.1.0/src/amicus/backends/codex/config.py +380 -0
- amicus-0.1.0/src/amicus/backends/codex/contract.py +404 -0
- amicus-0.1.0/src/amicus/backends/codex/models.py +105 -0
- amicus-0.1.0/src/amicus/backends/codex/normalize.py +148 -0
- amicus-0.1.0/src/amicus/backends/codex/options.py +22 -0
- amicus-0.1.0/src/amicus/backends/codex/status.py +60 -0
- amicus-0.1.0/src/amicus/backends/kimi/__init__.py +75 -0
- amicus-0.1.0/src/amicus/backends/kimi/adapter.py +259 -0
- amicus-0.1.0/src/amicus/backends/kimi/binary.py +61 -0
- amicus-0.1.0/src/amicus/backends/kimi/cli.py +327 -0
- amicus-0.1.0/src/amicus/backends/kimi/config.py +207 -0
- amicus-0.1.0/src/amicus/backends/kimi/contract.py +267 -0
- amicus-0.1.0/src/amicus/backends/kimi/models.py +139 -0
- amicus-0.1.0/src/amicus/backends/kimi/normalize.py +151 -0
- amicus-0.1.0/src/amicus/backends/kimi/options.py +21 -0
- amicus-0.1.0/src/amicus/backends/kimi/status.py +60 -0
- amicus-0.1.0/src/amicus/config/__init__.py +273 -0
- amicus-0.1.0/src/amicus/config/envspec.py +135 -0
- amicus-0.1.0/src/amicus/errors.py +278 -0
- amicus-0.1.0/src/amicus/jobs/__init__.py +1 -0
- amicus-0.1.0/src/amicus/jobs/delivery.py +209 -0
- amicus-0.1.0/src/amicus/jobs/lifecycle.py +436 -0
- amicus-0.1.0/src/amicus/jobs/lookup.py +169 -0
- amicus-0.1.0/src/amicus/jobs/taskmap.py +153 -0
- amicus-0.1.0/src/amicus/manifest.py +190 -0
- amicus-0.1.0/src/amicus/middleware.py +338 -0
- amicus-0.1.0/src/amicus/obs.py +51 -0
- amicus-0.1.0/src/amicus/orchestration/__init__.py +1 -0
- amicus-0.1.0/src/amicus/orchestration/finalize.py +287 -0
- amicus-0.1.0/src/amicus/orchestration/isolation.py +160 -0
- amicus-0.1.0/src/amicus/orchestration/prompts.py +225 -0
- amicus-0.1.0/src/amicus/orchestration/review.py +186 -0
- amicus-0.1.0/src/amicus/orchestration/run.py +216 -0
- amicus-0.1.0/src/amicus/orchestration/workspace.py +104 -0
- amicus-0.1.0/src/amicus/packaging.py +68 -0
- amicus-0.1.0/src/amicus/plugin.py +109 -0
- amicus-0.1.0/src/amicus/py.typed +0 -0
- amicus-0.1.0/src/amicus/registry.py +153 -0
- amicus-0.1.0/src/amicus/request.py +121 -0
- amicus-0.1.0/src/amicus/result_format_snapshot.py +121 -0
- amicus-0.1.0/src/amicus/schemas/__init__.py +1 -0
- amicus-0.1.0/src/amicus/schemas/codes.py +136 -0
- amicus-0.1.0/src/amicus/schemas/envelope.py +237 -0
- amicus-0.1.0/src/amicus/schemas/field_policy.py +46 -0
- amicus-0.1.0/src/amicus/schemas/fingerprint.py +53 -0
- amicus-0.1.0/src/amicus/schemas/instructions.py +119 -0
- amicus-0.1.0/src/amicus/schemas/options.py +92 -0
- amicus-0.1.0/src/amicus/schemas/params.py +419 -0
- amicus-0.1.0/src/amicus/schemas/publish.py +167 -0
- amicus-0.1.0/src/amicus/schemas/results.py +392 -0
- amicus-0.1.0/src/amicus/schemas/structured.py +47 -0
- amicus-0.1.0/src/amicus/server.py +227 -0
- amicus-0.1.0/src/amicus/surface.py +47 -0
- amicus-0.1.0/src/amicus/tools/__init__.py +61 -0
- amicus-0.1.0/src/amicus/tools/_guard.py +73 -0
- amicus-0.1.0/src/amicus/tools/_meta.py +70 -0
- amicus-0.1.0/src/amicus/tools/_prepare.py +300 -0
- amicus-0.1.0/src/amicus/tools/_resolve.py +82 -0
- amicus-0.1.0/src/amicus/tools/consult.py +164 -0
- amicus-0.1.0/src/amicus/tools/delegate.py +150 -0
- amicus-0.1.0/src/amicus/tools/discovery.py +648 -0
- amicus-0.1.0/src/amicus/tools/dry_run.py +251 -0
- amicus-0.1.0/src/amicus/tools/jobs.py +254 -0
- amicus-0.1.0/src/amicus/tools/resources.py +152 -0
- amicus-0.1.0/src/amicus/tools/review.py +342 -0
- amicus-0.1.0/src/amicus/wire_shape_snapshot.py +358 -0
- amicus-0.1.0/tests/conftest.py +236 -0
- amicus-0.1.0/tests/fixtures/claude_differentials.json +730 -0
- amicus-0.1.0/tests/fixtures/claude_golden_envelope.json +15 -0
- amicus-0.1.0/tests/fixtures/codex_differentials.json +647 -0
- amicus-0.1.0/tests/fixtures/fakebackend/pyproject.toml +15 -0
- amicus-0.1.0/tests/fixtures/fakebackend/src/fakebackend/__init__.py +119 -0
- amicus-0.1.0/tests/fixtures/kimi_differentials.json +662 -0
- amicus-0.1.0/tests/fixtures/manifest_snapshot.all.json +8305 -0
- amicus-0.1.0/tests/fixtures/manifest_snapshot.claude.json +8303 -0
- amicus-0.1.0/tests/fixtures/manifest_snapshot.codex-kimi.json +8304 -0
- amicus-0.1.0/tests/fixtures/result_format_snapshot.json +3619 -0
- amicus-0.1.0/tests/fixtures/wire_shape_snapshot.json +1033 -0
- amicus-0.1.0/tests/support/__init__.py +0 -0
- amicus-0.1.0/tests/support/claudefixtures.py +125 -0
- amicus-0.1.0/tests/support/codexfixtures.py +88 -0
- amicus-0.1.0/tests/support/fake_claude.py +118 -0
- amicus-0.1.0/tests/support/fake_codex.py +77 -0
- amicus-0.1.0/tests/support/fake_kimi.py +121 -0
- amicus-0.1.0/tests/support/fakeplugin.py +132 -0
- amicus-0.1.0/tests/support/kimifixtures.py +130 -0
- amicus-0.1.0/tests/test_adversarial.py +321 -0
- amicus-0.1.0/tests/test_async_tools.py +201 -0
- amicus-0.1.0/tests/test_check_commit_message.py +45 -0
- amicus-0.1.0/tests/test_check_github_actions_pinning.py +294 -0
- amicus-0.1.0/tests/test_claude_adapter.py +302 -0
- amicus-0.1.0/tests/test_claude_argv_differential.py +64 -0
- amicus-0.1.0/tests/test_claude_binary.py +40 -0
- amicus-0.1.0/tests/test_claude_cli.py +295 -0
- amicus-0.1.0/tests/test_claude_config.py +110 -0
- amicus-0.1.0/tests/test_claude_contract.py +147 -0
- amicus-0.1.0/tests/test_claude_golden_envelope.py +71 -0
- amicus-0.1.0/tests/test_claude_live.py +174 -0
- amicus-0.1.0/tests/test_claude_models.py +15 -0
- amicus-0.1.0/tests/test_claude_normalize.py +86 -0
- amicus-0.1.0/tests/test_claude_plugin.py +68 -0
- amicus-0.1.0/tests/test_claude_result_differential.py +127 -0
- amicus-0.1.0/tests/test_claude_status.py +67 -0
- amicus-0.1.0/tests/test_claude_sync_tools.py +432 -0
- amicus-0.1.0/tests/test_codes.py +107 -0
- amicus-0.1.0/tests/test_codex_adapter.py +200 -0
- amicus-0.1.0/tests/test_codex_argv_differential.py +86 -0
- amicus-0.1.0/tests/test_codex_binary.py +108 -0
- amicus-0.1.0/tests/test_codex_cli.py +344 -0
- amicus-0.1.0/tests/test_codex_config.py +143 -0
- amicus-0.1.0/tests/test_codex_contract.py +158 -0
- amicus-0.1.0/tests/test_codex_live.py +125 -0
- amicus-0.1.0/tests/test_codex_models.py +73 -0
- amicus-0.1.0/tests/test_codex_normalize.py +70 -0
- amicus-0.1.0/tests/test_codex_plugin.py +41 -0
- amicus-0.1.0/tests/test_codex_result_differential.py +93 -0
- amicus-0.1.0/tests/test_codex_status.py +73 -0
- amicus-0.1.0/tests/test_commands.py +90 -0
- amicus-0.1.0/tests/test_config.py +123 -0
- amicus-0.1.0/tests/test_conftest_guards.py +139 -0
- amicus-0.1.0/tests/test_delivery.py +152 -0
- amicus-0.1.0/tests/test_discovery.py +287 -0
- amicus-0.1.0/tests/test_discovery_cost.py +50 -0
- amicus-0.1.0/tests/test_dry_run.py +127 -0
- amicus-0.1.0/tests/test_envelope.py +171 -0
- amicus-0.1.0/tests/test_envspec.py +93 -0
- amicus-0.1.0/tests/test_errors.py +168 -0
- amicus-0.1.0/tests/test_field_policy.py +18 -0
- amicus-0.1.0/tests/test_finalize.py +193 -0
- amicus-0.1.0/tests/test_fingerprint.py +37 -0
- amicus-0.1.0/tests/test_guard.py +80 -0
- amicus-0.1.0/tests/test_host_captures.py +56 -0
- amicus-0.1.0/tests/test_import_contracts.py +17 -0
- amicus-0.1.0/tests/test_instructions.py +92 -0
- amicus-0.1.0/tests/test_isolation.py +153 -0
- amicus-0.1.0/tests/test_job_durability.py +171 -0
- amicus-0.1.0/tests/test_job_tools.py +313 -0
- amicus-0.1.0/tests/test_kimi_adapter.py +261 -0
- amicus-0.1.0/tests/test_kimi_argv_differential.py +61 -0
- amicus-0.1.0/tests/test_kimi_binary.py +47 -0
- amicus-0.1.0/tests/test_kimi_cli.py +290 -0
- amicus-0.1.0/tests/test_kimi_config.py +77 -0
- amicus-0.1.0/tests/test_kimi_contract.py +121 -0
- amicus-0.1.0/tests/test_kimi_live.py +159 -0
- amicus-0.1.0/tests/test_kimi_models.py +105 -0
- amicus-0.1.0/tests/test_kimi_normalize.py +64 -0
- amicus-0.1.0/tests/test_kimi_plugin.py +48 -0
- amicus-0.1.0/tests/test_kimi_result_differential.py +119 -0
- amicus-0.1.0/tests/test_kimi_status.py +63 -0
- amicus-0.1.0/tests/test_kimi_sync_tools.py +239 -0
- amicus-0.1.0/tests/test_lifecycle.py +757 -0
- amicus-0.1.0/tests/test_live_gate_report.py +194 -0
- amicus-0.1.0/tests/test_live_suite_hygiene.py +160 -0
- amicus-0.1.0/tests/test_lookup.py +122 -0
- amicus-0.1.0/tests/test_manifest.py +193 -0
- amicus-0.1.0/tests/test_meta.py +53 -0
- amicus-0.1.0/tests/test_middleware.py +238 -0
- amicus-0.1.0/tests/test_migration_doc.py +237 -0
- amicus-0.1.0/tests/test_obs.py +31 -0
- amicus-0.1.0/tests/test_options.py +75 -0
- amicus-0.1.0/tests/test_packaging.py +383 -0
- amicus-0.1.0/tests/test_paid_tools.py +273 -0
- amicus-0.1.0/tests/test_params.py +135 -0
- amicus-0.1.0/tests/test_plugin.py +43 -0
- amicus-0.1.0/tests/test_prepare.py +262 -0
- amicus-0.1.0/tests/test_prompts.py +95 -0
- amicus-0.1.0/tests/test_publish.py +83 -0
- amicus-0.1.0/tests/test_registry.py +144 -0
- amicus-0.1.0/tests/test_release_evidence.py +317 -0
- amicus-0.1.0/tests/test_release_state.py +452 -0
- amicus-0.1.0/tests/test_request.py +99 -0
- amicus-0.1.0/tests/test_resources.py +106 -0
- amicus-0.1.0/tests/test_result_format.py +71 -0
- amicus-0.1.0/tests/test_results.py +128 -0
- amicus-0.1.0/tests/test_review.py +148 -0
- amicus-0.1.0/tests/test_review_artifact.py +166 -0
- amicus-0.1.0/tests/test_run.py +307 -0
- amicus-0.1.0/tests/test_server.py +148 -0
- amicus-0.1.0/tests/test_structured.py +10 -0
- amicus-0.1.0/tests/test_surface.py +43 -0
- amicus-0.1.0/tests/test_surface_honesty.py +44 -0
- amicus-0.1.0/tests/test_sync_tools.py +238 -0
- amicus-0.1.0/tests/test_taskmap.py +87 -0
- amicus-0.1.0/tests/test_tasks_client.py +249 -0
- amicus-0.1.0/tests/test_tasks_spike.py +91 -0
- amicus-0.1.0/tests/test_wheel_seam.py +101 -0
- amicus-0.1.0/tests/test_wire_shape.py +138 -0
- amicus-0.1.0/tests/test_worker.py +209 -0
- amicus-0.1.0/tests/test_workspace.py +138 -0
- amicus-0.1.0/uv.lock +2208 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agent-friendly-docs
|
|
3
|
+
description: Use when designing, structuring, auditing, or reviewing the documentation surface of a repository that AI coding agents read while working — instruction files, README, docs/, ADRs, per-directory context files, and code-adjacent comments. Symptoms include agents re-deriving project context every session, reading stale or wrong docs, instruction files bloated with reference material, README token bloat, ADRs mistaken for current policy, embedded commands that fail as written, duplicated content drifting apart, and repo-wide context trapped in code comments. Covers layering and placement, discoverability and read paths, one authoritative home per fact, token economy, freshness mechanisms, and runnable examples. Not for published docs sites or llms.txt, generic prose quality, GitHub repo safety configuration, or rules-vs-context audits of instruction-file content.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Agent-Friendly Docs
|
|
7
|
+
|
|
8
|
+
Use this skill to make a repo's documentation surface cheap for agents to navigate and trust.
|
|
9
|
+
|
|
10
|
+
## Core Standard
|
|
11
|
+
|
|
12
|
+
The checks that decide a pass or a finding live in [docs-checklist.md](references/docs-checklist.md), one per section.
|
|
13
|
+
This list names what each section is about so you can pick one; it is a map, not a second copy of the rules.
|
|
14
|
+
Read the section before you apply it, and where this list and the checklist read differently, the checklist wins.
|
|
15
|
+
|
|
16
|
+
- **Layer Placement** — which layer each doc belongs to, and when a straddling section is split out.
|
|
17
|
+
- **Discoverability And Read Path**, **Task-To-Doc Routing** — whether an agent reaches the right doc by following links, per task.
|
|
18
|
+
- **Authority And Precedence** — one home per claim that could diverge, and what resolves a conflict.
|
|
19
|
+
- **Canonical Claim Validation** — whether the authoritative doc is true, checked against the code rather than against another doc.
|
|
20
|
+
- **Token Economy** — what earns a place in the always-loaded layer.
|
|
21
|
+
- **Freshness Mechanisms**, **Generated-Doc Provenance**, **ADR Status And Supersession** — what keeps a doc correct, marks a generated one, and separates a live decision from a superseded one.
|
|
22
|
+
- **Runnable Examples And Commands** — whether an embedded command runs as written.
|
|
23
|
+
- **Comment-Vs-Doc Placement** — which constraints travel with the code and which need a doc.
|
|
24
|
+
|
|
25
|
+
## When To Use
|
|
26
|
+
|
|
27
|
+
- Designing or restructuring a repo's documentation surface.
|
|
28
|
+
- Auditing an existing documentation surface for agent-friendliness.
|
|
29
|
+
- Diagnosing a concrete agent failure: missing project conventions, reading stale docs, re-deriving context every session.
|
|
30
|
+
|
|
31
|
+
## When Not To Use
|
|
32
|
+
|
|
33
|
+
- Published documentation sites or llms.txt — this skill covers repo-internal docs only.
|
|
34
|
+
- Generic prose quality or writing style with no agent-consumption angle.
|
|
35
|
+
- Instruction-file strategy and repo safety configuration — use agent-friendly-github.
|
|
36
|
+
- Rules-vs-context content audits of instruction-file prose — use separating-context-from-constraints.
|
|
37
|
+
- Trivial edits to a doc surface that is already well-layered; just make the edit.
|
|
38
|
+
|
|
39
|
+
## Vocabulary
|
|
40
|
+
|
|
41
|
+
- **Instruction layer** — always-loaded binding norms: the canonical instruction file plus thin per-harness adapters.
|
|
42
|
+
Adapter strategy itself is owned by agent-friendly-github, not this skill.
|
|
43
|
+
- **Orientation layer** — read-on-demand maps: README, architecture overviews, CONTEXT.md, per-directory context files.
|
|
44
|
+
Loaded when an agent orients itself, not on every turn.
|
|
45
|
+
- **Reference layer** — detailed how-to and API material, loaded only when a task demands it.
|
|
46
|
+
Kept out of the instruction layer precisely because it is heavy.
|
|
47
|
+
- **Decision history** — ADRs and postmortems that explain why a past choice was made.
|
|
48
|
+
Never binds unless promoted into a current-policy doc.
|
|
49
|
+
- **Code-adjacent context** — comments and docstrings carrying constraints that must travel with the code.
|
|
50
|
+
Repo-wide context does not belong here even when it is convenient to write.
|
|
51
|
+
- **Canonical instruction file** — the one instruction file a harness reads directly.
|
|
52
|
+
Other harnesses point at it through a thin adapter instead of duplicating it.
|
|
53
|
+
- **Per-harness adapter** — a thin, harness-specific file that points at the canonical instruction file instead of restating it.
|
|
54
|
+
- **Read path** — the sequence of docs an agent loads, in order, to complete a given task.
|
|
55
|
+
- **Authoritative vs historical** — whether a doc states current policy or merely records a past decision.
|
|
56
|
+
- **Generated-doc provenance** — a marker on a generated file naming its source and regeneration command.
|
|
57
|
+
- These layers are a routing lens for "what does an agent read first, what is authoritative, what is historical, what is ignorable" — not a filing system every repo must adopt.
|
|
58
|
+
|
|
59
|
+
## Workflow
|
|
60
|
+
|
|
61
|
+
1. Identify the audience: repo owner, who can restructure, versus contributor or agent operator, who works within what exists.
|
|
62
|
+
Audience decides what to lead with.
|
|
63
|
+
Where the user does not say and the repo gives no ownership signal, assume the repo owner, state that assumption, and mark each owner-only remediation as such.
|
|
64
|
+
2. Classify the task: design/restructure, audit of an existing surface, or diagnosis of a concrete failure.
|
|
65
|
+
3. For design or restructure, follow [design-workflow.md](references/design-workflow.md); for audit or diagnosis, follow [review-workflow.md](references/review-workflow.md).
|
|
66
|
+
4. Design tasks and audits walk [docs-checklist.md](references/docs-checklist.md) as the shared standard; a diagnosis names only the sections its failure touches and produces no coverage table.
|
|
67
|
+
5. Delegate instruction-file strategy questions to agent-friendly-github.
|
|
68
|
+
Delegate rules-vs-context content audits of instruction-layer docs to separating-context-from-constraints.
|
|
69
|
+
That skill counts as available when it is loaded in the current session.
|
|
70
|
+
When it is not loaded, apply one screening question — does this sentence bind behavior or just inform it? — label the result provisional, and recommend a full audit with that skill.
|
|
71
|
+
6. Use [examples.md](references/examples.md) for concrete shapes.
|
|
72
|
+
|
|
73
|
+
## Done Criteria
|
|
74
|
+
|
|
75
|
+
Before declaring done, read the relevant workflow, then apply the criteria for your task type below.
|
|
76
|
+
Only design tasks and audits walk [docs-checklist.md](references/docs-checklist.md) section by section.
|
|
77
|
+
|
|
78
|
+
- **Design tasks**: every checklist section is answered in the produced structure or explicitly marked not-applicable with a one-line justification.
|
|
79
|
+
- **Review tasks**: every checklist section is covered by a finding, marked OK with brief evidence, or noted not-checked with reason.
|
|
80
|
+
- **Diagnosis tasks**: the response names the most likely failure path, leads with the immediate mitigation, and separates it from owner-side restructuring.
|
|
81
|
+
No checklist walk and no coverage table — naming the one or two sections the failure falls under is the whole of the checklist's role here.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Design Workflow
|
|
2
|
+
|
|
3
|
+
Use this workflow when creating a new documentation surface, redesigning an existing one, or bringing an under-documented repo up to standard for agents to navigate.
|
|
4
|
+
|
|
5
|
+
## 1. Inventory
|
|
6
|
+
|
|
7
|
+
List the tracked docs that can change what an agent does on a task.
|
|
8
|
+
|
|
9
|
+
- Instruction files, wherever the harness in use looks for them.
|
|
10
|
+
- README and any docs/ directory content.
|
|
11
|
+
- Contribution, testing, and release guides.
|
|
12
|
+
- ADRs and other decision-history material.
|
|
13
|
+
- Per-directory context files, if the repo uses that pattern.
|
|
14
|
+
- Doc-comments and docstrings that carry repo-wide claims, not just code-adjacent ones.
|
|
15
|
+
|
|
16
|
+
Record what you excluded and why: vendored trees, generated internals, dependency docs, and code comments that carry only file-local constraints.
|
|
17
|
+
An inventory with no stated boundary reads as complete when it is not.
|
|
18
|
+
Walk the repo tree rather than trusting memory or a stale index.
|
|
19
|
+
A doc that isn't in the inventory can't be assigned a layer, linked from an entry point, or checked for staleness later.
|
|
20
|
+
|
|
21
|
+
## 2. Assign Layers
|
|
22
|
+
|
|
23
|
+
Give each inventoried doc one primary layer: instruction, orientation, reference, decision history, or code-adjacent context.
|
|
24
|
+
Layer definitions live in SKILL.md Vocabulary; this stage only places docs, it doesn't redefine the layers.
|
|
25
|
+
|
|
26
|
+
- A doc that reads as two layers at once — most often an instruction file carrying reference-depth material — gets its straddling section named here, and split only against the tests in docs-checklist.md Layer Placement.
|
|
27
|
+
- Reference-depth material found in the instruction layer is a Token Economy problem: flag it now, move it behind a pointer when you consolidate authority.
|
|
28
|
+
- A repo-wide claim sitting only in a code comment is a Comment-Vs-Doc Placement problem: give the fact a doc-level authoritative home and reduce the comment to a pointer to that doc, or to a narrowly code-local note — not a retained repo-wide copy.
|
|
29
|
+
|
|
30
|
+
Record every straddling or misplaced doc as you go; later stages resolve the split, this stage only finds it.
|
|
31
|
+
|
|
32
|
+
## 3. Define Read Paths
|
|
33
|
+
|
|
34
|
+
For the repo's three to five most common tasks, write the ordered list of docs an agent should load to complete each one.
|
|
35
|
+
|
|
36
|
+
Derive the task list from the repo rather than assuming it: CI job names, Makefile or justfile targets, the section headings in a contribution guide, and the titles of recent pull requests.
|
|
37
|
+
Where none of those sources gives a task list, state the three tasks you assumed and mark them as an assumption the repo owner should confirm.
|
|
38
|
+
|
|
39
|
+
- Name each read path explicitly; "the agent will find it" is not a read path.
|
|
40
|
+
- Wire every entry point (README, instruction file) to link to the first doc in each read path.
|
|
41
|
+
- Confirm every doc in a read path is reachable by following links, not by knowing its location in advance.
|
|
42
|
+
|
|
43
|
+
This stage produces Discoverability And Read Path and Task-To-Doc Routing: an entry point that names or links to the read path for each common task, and no orphaned docs.
|
|
44
|
+
|
|
45
|
+
## 4. Consolidate Authority
|
|
46
|
+
|
|
47
|
+
For each in-scope claim (see docs-checklist.md Authority And Precedence) that appears in more than one doc, pick one authoritative home and replace every other copy with a link to it.
|
|
48
|
+
|
|
49
|
+
Find the copies rather than recalling them: search the doc set for the distinctive strings that carry claims — command names, version numbers, thresholds, directory paths — instead of comparing docs sentence by sentence.
|
|
50
|
+
State the scope you searched; mark docs you did not search `not-checked` with the reason.
|
|
51
|
+
|
|
52
|
+
- Where two docs could plausibly conflict despite consolidation, record a stated precedence order that resolves which one wins.
|
|
53
|
+
- Decision history is never itself the authoritative home for current policy: if an ADR's content is still binding, promote it into a current-policy doc and link the ADR forward to that doc.
|
|
54
|
+
|
|
55
|
+
This stage produces Authority And Precedence.
|
|
56
|
+
|
|
57
|
+
## 5. Set Maintenance Mechanisms
|
|
58
|
+
|
|
59
|
+
Freshness is a mechanism, not a claim, so give each doc one.
|
|
60
|
+
|
|
61
|
+
Apply the checks in docs-checklist.md Freshness Mechanisms, Generated-Doc Provenance, and ADR Status And Supersession, and record the mechanism you chose for each doc.
|
|
62
|
+
This stage adds no rules of its own; read them from the checklist so that a later change to the standard reaches this stage as well.
|
|
63
|
+
|
|
64
|
+
Pick mechanisms that someone or something enforces.
|
|
65
|
+
A mechanism nobody runs and no gate checks is a claim wearing a mechanism's clothes.
|
|
66
|
+
|
|
67
|
+
## 6. Checklist Walk
|
|
68
|
+
|
|
69
|
+
Walk every section of docs-checklist.md against the structure you designed: Layer Placement, Discoverability And Read Path, Task-To-Doc Routing, Authority And Precedence, Canonical Claim Validation, Token Economy, Freshness Mechanisms, Runnable Examples And Commands, Comment-Vs-Doc Placement, Generated-Doc Provenance, and ADR Status And Supersession.
|
|
70
|
+
|
|
71
|
+
Design Done Criteria: every section is answered in the produced structure, or is explicitly marked not applicable with a one-line justification.
|
|
72
|
+
A section with no answer and no justification is unfinished work, not a pass.
|
|
73
|
+
|
|
74
|
+
Two sections deserve a fresh look here even where earlier stages already touched them: Token Economy and Runnable Examples And Commands.
|
|
75
|
+
Re-run their checks from docs-checklist.md against the finished structure rather than trusting earlier-stage answers; a design pass tends to accumulate exactly the convenience additions and unstated preconditions those two sections check for.
|
|
76
|
+
|
|
77
|
+
## Delegate, Don't Restate
|
|
78
|
+
|
|
79
|
+
- Instruction-file strategy — canonical instruction file choice, per-harness adapter mechanics — routes to agent-friendly-github.
|
|
80
|
+
- Content audits of instruction-layer prose — whether a given sentence binds behavior or merely informs it — route to separating-context-from-constraints.
|
|
81
|
+
|
|
82
|
+
Apply those skills' answers directly; this workflow does not re-derive them.
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Docs Checklist
|
|
2
|
+
|
|
3
|
+
Use this as the detailed standard for both design and review tasks.
|
|
4
|
+
|
|
5
|
+
## Layer Placement
|
|
6
|
+
|
|
7
|
+
- Every doc is assigned exactly one primary layer: instruction, orientation, reference, decision history, or code-adjacent context.
|
|
8
|
+
- Every section whose loading cost, authority, or lifecycle differs from its doc's primary layer is named.
|
|
9
|
+
- A named section is split out only when the audit can state the evidence for one of three tests.
|
|
10
|
+
Loading: name a task on the repo's common-task list that loads the doc and never needs that section.
|
|
11
|
+
Authority: name a second doc that states the same claim, so which one governs is open.
|
|
12
|
+
Lifecycle: name a distinct owner, generator, or change trigger for the section.
|
|
13
|
+
- A section that meets none of the three tests stays where it is.
|
|
14
|
+
A short quick-start command inside an orientation README meets none of them.
|
|
15
|
+
- The instruction layer carries binding norms and pointers only, not reference-depth material.
|
|
16
|
+
- Decision history is labeled historical, not current policy.
|
|
17
|
+
|
|
18
|
+
Layer names and definitions live in SKILL.md Vocabulary; this section only checks that every doc has been placed in one of them.
|
|
19
|
+
A doc that straddles two layers is a signal to name the straddling section, then to split it only when one of the three tests above is met.
|
|
20
|
+
Splitting on sight fragments a usable doc into many small ones and raises navigation cost.
|
|
21
|
+
Whether a given sentence in the instruction layer is a binding norm or merely informative context is a separating-context-from-constraints question, not one this checklist re-derives; see SKILL.md Workflow for when to apply that skill and what to do when it is not loaded.
|
|
22
|
+
Canonical-instruction-file and per-harness-adapter strategy is owned by agent-friendly-github; this section checks placement only, not adapter mechanics.
|
|
23
|
+
|
|
24
|
+
## Discoverability And Read Path
|
|
25
|
+
|
|
26
|
+
- Every instruction, orientation, reference, and decision-history doc is reachable by links from at least one entry point (README or an instruction file).
|
|
27
|
+
- An agent orienting itself can reach the doc that answers a given question by following links, without reading unrelated docs first.
|
|
28
|
+
- No doc in those layers is orphaned: reachable only by knowing its path in advance.
|
|
29
|
+
- Code-adjacent comments and generated internals are exempt from the link requirement, and the audit states that exemption rather than reporting them as orphans.
|
|
30
|
+
|
|
31
|
+
Entry points carry the map; a doc that no entry point links to is found only by search, and an agent that does not know it exists does not search for it.
|
|
32
|
+
|
|
33
|
+
## Task-To-Doc Routing
|
|
34
|
+
|
|
35
|
+
- Each of the repo's common tasks (add a feature, fix a bug, run tests, cut a release) has an identifiable read path: a named sequence of docs to load.
|
|
36
|
+
- The entry point names that read path, or names where to find it, for each common task.
|
|
37
|
+
- A read path can be completed by following links; it does not require guessing which file is relevant.
|
|
38
|
+
|
|
39
|
+
This is Discoverability And Read Path applied to specific, recurring tasks rather than to an arbitrary question.
|
|
40
|
+
|
|
41
|
+
## Authority And Precedence
|
|
42
|
+
|
|
43
|
+
- Every normative or operational claim has exactly one authoritative home.
|
|
44
|
+
A claim is in scope when two copies of it could diverge and change what an agent does: commands, versions, thresholds, paths, ownership, conventions, policy statements, and current-state descriptions of architecture or deployment.
|
|
45
|
+
Out of scope: names, quotations, historical statements, and explanatory background that cannot change an action.
|
|
46
|
+
Prose role does not decide this — a current-state fact written as background is in scope, because an agent implements against it.
|
|
47
|
+
- Every other mention of an in-scope claim is a link to the authoritative home, not a restatement.
|
|
48
|
+
- Every generated mirror or quotation of an in-scope claim is marked as non-authoritative, so it is not read as a second home.
|
|
49
|
+
- Where two docs stating in-scope claims can conflict, a stated precedence order resolves which one wins.
|
|
50
|
+
|
|
51
|
+
Duplication is the symptom; the fix is a link, not a rewrite in both places.
|
|
52
|
+
|
|
53
|
+
## Canonical Claim Validation
|
|
54
|
+
|
|
55
|
+
- Every command, version, path, and current-state claim in an authoritative doc is checked against the source that implements it: the code, CI configuration, build files, manifests, or schema.
|
|
56
|
+
- No claim is marked `OK` because no other doc contradicts it.
|
|
57
|
+
- Every claim that cannot be checked against a source is marked `not-checked` with the reason.
|
|
58
|
+
- Where the repo is too large to check every claim, the sampling boundary is stated.
|
|
59
|
+
|
|
60
|
+
Authority And Precedence finds two docs that disagree; it cannot find one doc that is uniformly wrong.
|
|
61
|
+
A single stale command with no competitor passes every other section in this checklist, and an agent runs it with full confidence.
|
|
62
|
+
|
|
63
|
+
## Token Economy
|
|
64
|
+
|
|
65
|
+
- Every procedure or reference statement in the instruction layer applies to every task in the repo's common-task list.
|
|
66
|
+
A procedure that fewer tasks need moves behind a pointer, and the pointer stays.
|
|
67
|
+
- A routing pointer is exempt from the rule above: a one-line pointer that names a task and the doc it routes to belongs in the instruction layer even when only one task needs it.
|
|
68
|
+
Pointers are what make the layer small; the rule removes procedures, not routes.
|
|
69
|
+
- The instruction layer carries pointers, not procedures, for anything an agent can complete a common task without.
|
|
70
|
+
- No bulk content is duplicated across layers (e.g., reference material copied into the instruction file for convenience).
|
|
71
|
+
- Every orientation-layer doc that carries reference or historical material — full API detail, changelogs — moves that material behind a pointer to its own layer.
|
|
72
|
+
|
|
73
|
+
Every always-loaded token is a token spent on every single turn; the instruction layer's size is a standing cost, not a one-time one.
|
|
74
|
+
|
|
75
|
+
## Freshness Mechanisms
|
|
76
|
+
|
|
77
|
+
- Each doc (or the section of the repo it covers) has a named owner or owning team.
|
|
78
|
+
- PRs that change behavior a doc describes carry a stated expectation to update that doc.
|
|
79
|
+
- No doc claims freshness by timestamp or "last updated" date alone, without a mechanism that keeps it true.
|
|
80
|
+
|
|
81
|
+
A timestamp records when a doc was last touched, not whether it is still correct; ownership and PR expectations are what keep it correct.
|
|
82
|
+
|
|
83
|
+
## Runnable Examples And Commands
|
|
84
|
+
|
|
85
|
+
- Every embedded command runs as written from the repo root, or the doc states the precondition needed to run it (working directory, environment variable, prior setup step).
|
|
86
|
+
- Every path referenced in an example resolves from the stated starting point.
|
|
87
|
+
- No example depends on unstated state (an unmentioned file, an unmentioned prior command) to succeed.
|
|
88
|
+
|
|
89
|
+
An agent will copy-paste the example as written; if it doesn't run, the doc has failed at its one job.
|
|
90
|
+
|
|
91
|
+
## Comment-Vs-Doc Placement
|
|
92
|
+
|
|
93
|
+
- Constraints coupled to a specific piece of code (why this line is guarded, why this default was chosen) live in a comment or docstring next to that code.
|
|
94
|
+
- Repo-wide context (architecture, conventions, cross-cutting policy) never hides in a code comment where only a reader of that one file will see it.
|
|
95
|
+
- Where a comment states a repo-wide fact, that fact also has an authoritative home in a doc, per Authority And Precedence.
|
|
96
|
+
|
|
97
|
+
Code-adjacent context travels with the code by design; repo-wide context needs to be found without first finding the code.
|
|
98
|
+
|
|
99
|
+
## Generated-Doc Provenance
|
|
100
|
+
|
|
101
|
+
- Every generated doc is marked as generated.
|
|
102
|
+
- Every generated doc names its source (the file, script, or tool that produces it).
|
|
103
|
+
- Every generated doc gives the regeneration command.
|
|
104
|
+
|
|
105
|
+
An agent that doesn't know a doc is generated will edit it directly and lose the edit on the next regeneration.
|
|
106
|
+
|
|
107
|
+
## ADR Status And Supersession
|
|
108
|
+
|
|
109
|
+
- Every ADR carries a status (e.g., proposed, accepted, superseded, rejected).
|
|
110
|
+
- Every superseded ADR links forward to the ADR or doc that superseded it.
|
|
111
|
+
- No ADR is treated as binding current policy unless its content has been promoted into a current-policy doc; ADRs are decision history by default, per SKILL.md Vocabulary.
|
|
112
|
+
|
|
113
|
+
Status and forward links are what let an agent tell a decision that is in force from a superseded decision, without reading the whole history.
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
# Examples
|
|
2
|
+
|
|
3
|
+
Worked shapes for a fictional small repo, `lighthouse` (a billing service), and a fictional monorepo, `orbit` (an API package plus a web package).
|
|
4
|
+
Use these as concrete shapes to mimic; cross-reference [docs-checklist.md](docs-checklist.md) for the rules they instantiate and [SKILL.md](../SKILL.md) Vocabulary for the layer names used in the annotations below.
|
|
5
|
+
|
|
6
|
+
## 1. Layered small-repo layout
|
|
7
|
+
|
|
8
|
+
`lighthouse` is small enough to fit every layer in one tree.
|
|
9
|
+
Each entry below is annotated with the layer it belongs to, per SKILL.md Vocabulary.
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
lighthouse/
|
|
13
|
+
├── AGENTS.md # instruction layer — canonical, always loaded
|
|
14
|
+
├── CLAUDE.md # instruction layer — per-harness adapter, points at AGENTS.md
|
|
15
|
+
├── README.md # orientation layer — entry point and map
|
|
16
|
+
├── docs/
|
|
17
|
+
│ ├── architecture.md # orientation layer — system map, read when orienting
|
|
18
|
+
│ ├── api-reference.md # reference layer — loaded only when a task touches the API
|
|
19
|
+
│ └── testing.md # reference layer — loaded only when running or writing tests
|
|
20
|
+
├── adr/
|
|
21
|
+
│ ├── 0001-use-postgres.md # decision history — why, not current policy
|
|
22
|
+
│ ├── 0002-async-job-queue.md # decision history — superseded by 0003 (see section 4)
|
|
23
|
+
│ └── 0003-replace-rabbitmq-with-kafka.md # decision history — supersedes 0002
|
|
24
|
+
└── src/
|
|
25
|
+
└── billing/
|
|
26
|
+
└── invoice.py # code-adjacent context — comments here carry constraints coupled to this file, not repo-wide claims
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Two things this layout makes visible at a glance:
|
|
30
|
+
|
|
31
|
+
- Nothing in `docs/` is always-loaded; an agent reaches `api-reference.md` or `testing.md` only by following a link from `README.md` or `AGENTS.md` when the task calls for it.
|
|
32
|
+
- `adr/` sits outside both the instruction and orientation layers; an agent that finds an ADR by search rather than by link reads its status line first, and does not treat its decision as current policy (see section 4 below).
|
|
33
|
+
|
|
34
|
+
## 2. Monorepo layout with nested context files
|
|
35
|
+
|
|
36
|
+
`orbit` has two packages with different toolchains, so the instruction layer splits: a root file for cross-cutting norms and a nested file per package for what differs.
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
orbit/
|
|
40
|
+
├── AGENTS.md # instruction layer — root: cross-cutting norms only (commit format, PR conventions, shared CI gate)
|
|
41
|
+
├── CLAUDE.md # instruction layer — root adapter, points at AGENTS.md
|
|
42
|
+
├── README.md # orientation layer — root map, links to each package's README
|
|
43
|
+
├── docs/
|
|
44
|
+
│ └── architecture.md # orientation layer — cross-package system map, root only
|
|
45
|
+
├── packages/
|
|
46
|
+
│ ├── api/
|
|
47
|
+
│ │ ├── AGENTS.md # instruction layer — package-scoped: Go toolchain, `go test ./...`, owns packages/api/
|
|
48
|
+
│ │ ├── README.md # orientation layer — package map
|
|
49
|
+
│ │ └── ...
|
|
50
|
+
│ └── web/
|
|
51
|
+
│ ├── AGENTS.md # instruction layer — package-scoped: pnpm toolchain, `pnpm test`, owns packages/web/
|
|
52
|
+
│ ├── README.md # orientation layer — package map
|
|
53
|
+
│ └── ...
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
What belongs at which level: cross-cutting norms (commit format, review expectations, the label taxonomy) live only in the root `AGENTS.md`; anything that differs by package — build command, test command, ownership, off-limits paths — lives in that package's nested `AGENTS.md` and overrides the root only where it differs.
|
|
57
|
+
An agent working in `packages/api/` reads both files: the root file for what's always true, the nested file for what's true here.
|
|
58
|
+
|
|
59
|
+
This example shows the resulting shape only.
|
|
60
|
+
The strategy question — why nest per-package instruction files at all, and how the `CLAUDE.md` adapter mechanics work — is owned by the agent-friendly-github skill's Agent-Instruction-File Strategy section; this skill does not restate those rules.
|
|
61
|
+
|
|
62
|
+
## 3. README de-bloat before/after
|
|
63
|
+
|
|
64
|
+
`lighthouse`'s `README.md` started as the only doc anyone wrote, so it accumulated reference-layer weight: a full endpoint-by-endpoint API reference sitting inside an orientation-layer doc.
|
|
65
|
+
|
|
66
|
+
**Before** (excerpt — the full file ran to roughly 2,400 words, most of it API detail):
|
|
67
|
+
|
|
68
|
+
````markdown
|
|
69
|
+
# lighthouse
|
|
70
|
+
|
|
71
|
+
A billing service.
|
|
72
|
+
|
|
73
|
+
## Setup
|
|
74
|
+
|
|
75
|
+
...
|
|
76
|
+
|
|
77
|
+
## API
|
|
78
|
+
|
|
79
|
+
### GET /invoices
|
|
80
|
+
|
|
81
|
+
Returns a paginated list of invoices. Query params: `status`, `cursor`, `limit`.
|
|
82
|
+
|
|
83
|
+
Response:
|
|
84
|
+
```json
|
|
85
|
+
{"items": [...], "next_cursor": "...", "has_more": true}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### POST /invoices
|
|
89
|
+
|
|
90
|
+
Creates an invoice. Body: `{"customer_id": "...", "line_items": [...]}`.
|
|
91
|
+
|
|
92
|
+
Response:
|
|
93
|
+
```json
|
|
94
|
+
{"id": "inv_123", "status": "draft", ...}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### PATCH /invoices/:id
|
|
98
|
+
|
|
99
|
+
... (12 more endpoints follow, each with request/response bodies)
|
|
100
|
+
````
|
|
101
|
+
|
|
102
|
+
**After** — the API detail moves to `docs/api-reference.md`; `README.md` keeps only what every task needs to orient, plus a pointer:
|
|
103
|
+
|
|
104
|
+
```markdown
|
|
105
|
+
# lighthouse
|
|
106
|
+
|
|
107
|
+
A billing service.
|
|
108
|
+
|
|
109
|
+
## Setup
|
|
110
|
+
|
|
111
|
+
...
|
|
112
|
+
|
|
113
|
+
## API
|
|
114
|
+
|
|
115
|
+
Full endpoint reference: [docs/api-reference.md](docs/api-reference.md).
|
|
116
|
+
Load it only when a task touches the API surface directly.
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Token-cost rationale: before the split, `README.md` was loaded on every orientation pass at roughly 2,400 words, even for tasks — fixing a typo, updating a test — that never touch the API.
|
|
120
|
+
After the split, `README.md` is roughly 400 words; the 2,000 words of endpoint detail sit behind an explicit link in `docs/api-reference.md`, loaded only when a task actually needs it.
|
|
121
|
+
The fact didn't move to a worse home — it moved to the layer that matches how often an agent actually needs it.
|
|
122
|
+
|
|
123
|
+
## 4. ADR header with status and supersession
|
|
124
|
+
|
|
125
|
+
`lighthouse` chose RabbitMQ for its async job queue in ADR 0002, then replaced it with Kafka in ADR 0003.
|
|
126
|
+
Both headers carry a `Status` line an agent can read before the surrounding prose.
|
|
127
|
+
|
|
128
|
+
`adr/0002-async-job-queue.md`:
|
|
129
|
+
|
|
130
|
+
```markdown
|
|
131
|
+
# ADR 0002: Use RabbitMQ for the async job queue
|
|
132
|
+
|
|
133
|
+
Status: Superseded by [ADR 0003](0003-replace-rabbitmq-with-kafka.md)
|
|
134
|
+
|
|
135
|
+
## Context
|
|
136
|
+
|
|
137
|
+
...
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
`adr/0003-replace-rabbitmq-with-kafka.md`:
|
|
141
|
+
|
|
142
|
+
```markdown
|
|
143
|
+
# ADR 0003: Replace RabbitMQ with Kafka for the async job queue
|
|
144
|
+
|
|
145
|
+
Status: Accepted
|
|
146
|
+
Supersedes: [ADR 0002](0002-async-job-queue.md)
|
|
147
|
+
|
|
148
|
+
## Context
|
|
149
|
+
|
|
150
|
+
...
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
How an agent should read this: on opening `0002-async-job-queue.md`, the `Status` line is the first fact after the title, before any context or rationale prose.
|
|
154
|
+
`Superseded by` means the decision in this ADR is historical, not current policy.
|
|
155
|
+
The agent follows the forward link to `0003-replace-rabbitmq-with-kafka.md` to find which decision replaced it.
|
|
156
|
+
`Status: Accepted` on 0003 tells the agent that this ADR is the current record of the decision — it does not by itself make the ADR current policy.
|
|
157
|
+
Per SKILL.md Vocabulary, an ADR binds only after its content is promoted into a current-policy doc, so the agent reads `docs/architecture.md` for the policy and uses 0003 only for the reason behind it.
|
|
158
|
+
If no current-policy doc states the Kafka choice, that is a finding: the decision was never promoted, and every agent must re-derive current policy from decision history.
|
|
159
|
+
If a current-policy doc still describes RabbitMQ, that is also a finding — the promotion never happened when the decision changed.
|
|
160
|
+
|
|
161
|
+
## 5. PR doc-update convention
|
|
162
|
+
|
|
163
|
+
Freshness in `lighthouse` uses two mechanisms: a PR template line that prompts the doc update, and a CODEOWNERS line that routes doc changes to a reviewer.
|
|
164
|
+
|
|
165
|
+
`.github/pull_request_template.md` (excerpt):
|
|
166
|
+
|
|
167
|
+
```markdown
|
|
168
|
+
## Checklist
|
|
169
|
+
|
|
170
|
+
- [ ] Updated the doc that describes this behavior (README, `docs/`, or the relevant `AGENTS.md`), or marked N/A with a one-line reason.
|
|
171
|
+
- [ ] Tests pass locally (`pytest`).
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
`CODEOWNERS` (excerpt):
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
docs/ @lighthouse-org/docs-owners
|
|
178
|
+
AGENTS.md @lighthouse-org/docs-owners
|
|
179
|
+
adr/ @lighthouse-org/docs-owners
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
The checklist line makes the expectation visible on every PR, but the line does not enforce the update.
|
|
183
|
+
CODEOWNERS requests a review only for the paths a PR changes, so these doc-path rules do nothing on a PR that changes behavior in `src/` and touches no doc.
|
|
184
|
+
The doc-path rules catch a bad edit to a doc; they do not catch a missing one.
|
|
185
|
+
Adding the source paths to CODEOWNERS does not enforce the update either, because a code owner can approve a source-only PR that changes no doc.
|
|
186
|
+
Source-path ownership buys routing, not enforcement: the PR reaches a reviewer who is accountable for the doc and can ask for the update.
|
|
187
|
+
Only a required check that tests for the doc change can fail the PR, and that check is the difference between a prompt and a gate.
|
|
188
|
+
Ownership rules and required checks are owned by agent-friendly-github; this example only states which mechanism catches which failure.
|
|
189
|
+
|
|
190
|
+
## 6. Harness adapters
|
|
191
|
+
|
|
192
|
+
Adapter mechanics — which file each harness reads, the include or reference syntax it supports, and what to do when it supports none — are owned by the agent-friendly-github skill's Agent-Instruction-File Strategy section.
|
|
193
|
+
Apply that skill directly; this skill states no harness-specific syntax anywhere, because a copy here would age out of step with the authoritative rule and nothing would fail when it did.
|
|
194
|
+
For doc-surface design, the only fact this skill needs is the shape shown in sections 1 and 2: one canonical instruction file, with per-harness files as adapters that point at it.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Review Workflow
|
|
2
|
+
|
|
3
|
+
Use this workflow when auditing an existing documentation surface or diagnosing a concrete agent failure.
|
|
4
|
+
|
|
5
|
+
## 1. Route Audit Vs Diagnosis
|
|
6
|
+
|
|
7
|
+
If the user reports a concrete failure — an agent missed a convention, read a stale doc, or re-derived context it should have found — start in diagnosis mode.
|
|
8
|
+
|
|
9
|
+
Diagnosis mode is the whole workflow for that request, not its first stage.
|
|
10
|
+
Produce these four things and stop:
|
|
11
|
+
|
|
12
|
+
- name the most likely failure path: which doc the agent should have read, and why it didn't
|
|
13
|
+
- lead with the smallest caller-side mitigation that unblocks the agent today (a pointer, a link, a reminder in the task prompt), stated before any restructuring
|
|
14
|
+
- separate that from the owner-side restructuring that fixes the surface itself
|
|
15
|
+
- if confirming the hypothesis needs reading a doc the caller hasn't shared, ask before assuming its contents
|
|
16
|
+
|
|
17
|
+
In diagnosis mode, do not walk the checklist, do not produce a coverage table, and do not open sections the reported failure does not touch.
|
|
18
|
+
Sections 2 to 6 below are for audits only.
|
|
19
|
+
A diagnosis answered with a full section-by-section audit buries the one fix the user needs today, and charges them for ten sections of a surface they did not ask about.
|
|
20
|
+
Use the checklist only to name which section the failure falls under, in a few words.
|
|
21
|
+
|
|
22
|
+
Only when the user asks for a general audit of the documentation surface, continue with the full workflow below.
|
|
23
|
+
|
|
24
|
+
## 2. Establish Evidence
|
|
25
|
+
|
|
26
|
+
Prefer direct evidence over inferred behavior.
|
|
27
|
+
|
|
28
|
+
Label each piece of evidence within a finding as one of:
|
|
29
|
+
|
|
30
|
+
- `observed` — you read the doc, followed the link, or ran the command yourself
|
|
31
|
+
- `inferred` — deduced from related material without reading the doc directly
|
|
32
|
+
- `absence-of-evidence` — a required piece is missing: no read path for a core task, no owner named, no regeneration command on a generated doc
|
|
33
|
+
|
|
34
|
+
Absence of a required piece is itself a finding, not a gap to note and move past.
|
|
35
|
+
|
|
36
|
+
Read the repo's actual doc tree rather than trusting an index or a prior summary of it; a doc that moved or was deleted since the index was written produces a false `OK`.
|
|
37
|
+
|
|
38
|
+
Two checks are never satisfied by reading alone:
|
|
39
|
+
|
|
40
|
+
- **Runnable Examples And Commands.** Run each embedded command from the working directory the doc states, in a checkout you can execute.
|
|
41
|
+
Where you cannot execute, resolve every path, file, and directory the command names against the repo tree, and label the result `inferred` with the unresolved parts named.
|
|
42
|
+
Never mark this section `OK` from a command that only looks correct.
|
|
43
|
+
- **Canonical Claim Validation.** Check the claim against the source that implements it, not against another doc.
|
|
44
|
+
|
|
45
|
+
A command that reads as plausible and a command that runs are different findings; only one of them is evidence.
|
|
46
|
+
|
|
47
|
+
## 3. Walk The Checklist
|
|
48
|
+
|
|
49
|
+
Walk every section of [docs-checklist.md](docs-checklist.md) in order: Layer Placement, Discoverability And Read Path, Task-To-Doc Routing, Authority And Precedence, Canonical Claim Validation, Token Economy, Freshness Mechanisms, Runnable Examples And Commands, Comment-Vs-Doc Placement, Generated-Doc Provenance, and ADR Status And Supersession.
|
|
50
|
+
|
|
51
|
+
For each section, produce at least one of:
|
|
52
|
+
|
|
53
|
+
- a finding (see Finding Format below)
|
|
54
|
+
- `OK` with the brief evidence that grounds it (the doc, link, or command you checked)
|
|
55
|
+
- `not-checked` with the reason (out of scope, no access, not applicable to this repo)
|
|
56
|
+
|
|
57
|
+
A section with no finding, no `OK`, and no `not-checked` reason is unfinished work, not a pass.
|
|
58
|
+
Cite the checklist's own checks by section name rather than restating them; this workflow does not re-derive what docs-checklist.md already defines.
|
|
59
|
+
|
|
60
|
+
## 4. Severity Scale
|
|
61
|
+
|
|
62
|
+
Assign severity by what the finding changes, and decide it in this order:
|
|
63
|
+
|
|
64
|
+
- `blocking` — the evidence shows an agent can produce a wrong result: it edits the wrong file, runs a command that fails or does the wrong thing, or follows a superseded decision as current policy.
|
|
65
|
+
Authority conflicts between two docs belong here.
|
|
66
|
+
- `degrading` — the agent still reaches the correct result, but pays an avoidable cost to get there: token bloat in the instruction layer, a missing read path that forces rediscovery, context buried where the agent finds it late.
|
|
67
|
+
- `polish` — neither cost is demonstrable from the evidence you hold: inconsistent terminology, a link that could be one hop shorter, formatting noise.
|
|
68
|
+
|
|
69
|
+
Apply the first tier whose test the evidence satisfies.
|
|
70
|
+
Where the evidence supports two tiers, assign the higher one and state the doubt in the impact line.
|
|
71
|
+
Never lower a severity because the fix is large; effort belongs in remediation, not in severity.
|
|
72
|
+
|
|
73
|
+
## 5. Finding Format
|
|
74
|
+
|
|
75
|
+
Each finding includes:
|
|
76
|
+
|
|
77
|
+
- severity: `blocking`, `degrading`, or `polish`
|
|
78
|
+
- checklist section: the docs-checklist.md section it violates
|
|
79
|
+
- location: file and section cited
|
|
80
|
+
- evidence labels: one per evidence item — `observed`, `inferred`, or `absence-of-evidence`
|
|
81
|
+
- impact: one line, stated in terms of what an agent does wrong or pays for
|
|
82
|
+
- remediation: the smallest fix first, with a larger restructuring noted separately if one is warranted
|
|
83
|
+
|
|
84
|
+
## 6. Report Format
|
|
85
|
+
|
|
86
|
+
Order the report as:
|
|
87
|
+
|
|
88
|
+
1. Findings, ordered by severity (`blocking` first, then `degrading`, then `polish`).
|
|
89
|
+
2. The section-by-section coverage table produced in Walk The Checklist: every docs-checklist.md section marked with a finding reference, `OK`, or `not-checked`.
|
|
90
|
+
|
|
91
|
+
When no findings surface, state that explicitly and name any section left `not-checked` and why.
|