devrites 3.0.4 → 3.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +40 -1
- package/README.md +280 -521
- package/SECURITY.md +91 -77
- package/docs/adr/README.md +7 -9
- package/docs/agents/domain.md +5 -5
- package/docs/agents/issue-driven-rites.md +5 -5
- package/docs/agents/issue-tracker.md +1 -1
- package/docs/agents/triage-labels.md +2 -2
- package/docs/architecture.md +101 -85
- package/docs/capability-surface-selection.md +3 -1
- package/docs/cli.md +20 -13
- package/docs/command-map.md +39 -35
- package/docs/engine/agent-contract.md +11 -9
- package/docs/engine/commands.md +92 -78
- package/docs/engine/state-schema.md +23 -19
- package/docs/engine/workspace-schema.md +12 -11
- package/docs/extensions.md +17 -17
- package/docs/flow.md +34 -23
- package/docs/harness-compliance.md +2 -2
- package/docs/orchestration.md +21 -20
- package/docs/porting-to-a-new-harness.md +6 -2
- package/docs/release.md +30 -12
- package/docs/research/go-authoritative-workflow-schema-and-quality-2026-07-20.md +3 -3
- package/docs/skills.md +77 -52
- package/docs/templates/CRITIC_REVIEW_PACKET_TEMPLATE.md +35 -0
- package/docs/usage.md +56 -45
- package/engine/Makefile +2 -2
- package/engine/commands.go +3 -3
- package/engine/harnessmatrix.go +2 -2
- package/engine/hookpolicy.go +9 -9
- package/engine/hooks.go +11 -11
- package/engine/hooks_workspace.go +11 -11
- package/engine/internal/doctor/doctor.go +7 -7
- package/engine/internal/gate/gate.go +11 -11
- package/engine/internal/harness/compliance.go +1 -1
- package/engine/internal/harness/harness.go +7 -7
- package/engine/internal/install/install.go +2 -0
- package/engine/internal/install/install_test.go +3 -3
- package/engine/internal/iohooks/detach_unix.go +1 -1
- package/engine/internal/iohooks/iohooks.go +8 -8
- package/engine/internal/lib/adoption.go +1 -1
- package/engine/internal/lib/analyze.go +15 -15
- package/engine/internal/lib/archivesearch.go +3 -3
- package/engine/internal/lib/budget.go +3 -3
- package/engine/internal/lib/buildreadiness.go +6 -6
- package/engine/internal/lib/checkacceptance.go +10 -10
- package/engine/internal/lib/closeout.go +5 -5
- package/engine/internal/lib/conventions.go +3 -3
- package/engine/internal/lib/coverage.go +4 -4
- package/engine/internal/lib/doubtcoverage.go +9 -9
- package/engine/internal/lib/evidencefresh.go +6 -6
- package/engine/internal/lib/extensions.go +9 -9
- package/engine/internal/lib/footprint.go +13 -13
- package/engine/internal/lib/jsonout.go +2 -2
- package/engine/internal/lib/lanes.go +2 -2
- package/engine/internal/lib/learnings.go +9 -9
- package/engine/internal/lib/ledger.go +8 -8
- package/engine/internal/lib/ledger_test.go +5 -5
- package/engine/internal/lib/mutationgate.go +4 -4
- package/engine/internal/lib/overrides.go +9 -9
- package/engine/internal/lib/overrides_test.go +2 -2
- package/engine/internal/lib/packageexistence.go +732 -55
- package/engine/internal/lib/packageexistence_test.go +343 -0
- package/engine/internal/lib/preamble.go +6 -6
- package/engine/internal/lib/progress.go +5 -5
- package/engine/internal/lib/reconcile.go +80 -20
- package/engine/internal/lib/reconcile_test.go +13 -5
- package/engine/internal/lib/resolve.go +3 -3
- package/engine/internal/lib/reviewerstats.go +2 -2
- package/engine/internal/lib/reviewintegrity.go +13 -13
- package/engine/internal/lib/reviewintegrity_test.go +6 -6
- package/engine/internal/lib/runbook.go +1 -1
- package/engine/internal/lib/session.go +1 -1
- package/engine/internal/lib/session_test.go +2 -2
- package/engine/internal/lib/specparse.go +4 -4
- package/engine/internal/lib/specskeleton.go +2 -2
- package/engine/internal/lib/specvalidate.go +13 -13
- package/engine/internal/lib/stuck.go +13 -13
- package/engine/internal/lib/templates/conventions_ledger_header.md +1 -1
- package/engine/internal/lib/templates/conventions_orient_header.txt +1 -1
- package/engine/internal/lib/testintegrity.go +9 -9
- package/engine/internal/lib/tickafk.go +4 -4
- package/engine/internal/lib/util.go +1 -1
- package/engine/internal/migrate/migrate.go +2 -2
- package/engine/internal/migrate/migrate_test.go +1 -0
- package/engine/internal/orient/firstrun.go +8 -8
- package/engine/internal/orient/orient.go +5 -5
- package/engine/internal/state/concurrency_test.go +4 -4
- package/engine/internal/state/feature.go +6 -6
- package/engine/internal/state/lock_unix.go +1 -1
- package/engine/internal/state/schema.go +1 -1
- package/engine/internal/state/snapshot.go +2 -2
- package/engine/internal/state/write.go +1 -1
- package/engine/internal/version/version.go +1 -1
- package/engine/main.go +5 -5
- package/engine/subagent_orient_context.txt +4 -4
- package/engine/testdata/golden/TestParityA1Guard/source-edit-enforce-denies.golden +1 -1
- package/engine/testdata/golden/TestParityAnalyze/slug=covered.golden +2 -2
- package/engine/testdata/golden/TestParityAnalyze/slug=dangling.golden +3 -3
- package/engine/testdata/golden/TestParityAnalyze/slug=noac.golden +2 -2
- package/engine/testdata/golden/TestParityAnalyze/slug=order.golden +4 -4
- package/engine/testdata/golden/TestParityAnalyze/slug=orphan.golden +3 -3
- package/engine/testdata/golden/TestParityAnalyze/slug=uncovered.golden +3 -3
- package/engine/testdata/golden/TestParityBudget/extra-md.golden +1 -1
- package/engine/testdata/golden/TestParityBudget/over-advisory.golden +1 -1
- package/engine/testdata/golden/TestParityBudget/over-strict.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=approved.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=emptystatus.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=trailhash.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=trailpipe.golden +1 -1
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-ok.golden +1 -1
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=id-ok.golden +1 -1
- package/engine/testdata/golden/TestParityCloseOut/active_pointed_elsewhere.golden +1 -1
- package/engine/testdata/golden/TestParityCoverage/arg=speconly.golden +2 -2
- package/engine/testdata/golden/TestParityCursor/bare.golden +1 -1
- package/engine/testdata/golden/TestParityCursor/full-afk.golden +1 -1
- package/engine/testdata/golden/TestParityCursor/full-hitl.golden +1 -1
- package/engine/testdata/golden/TestParityCursor/red.golden +2 -2
- package/engine/testdata/golden/TestParityCursor/zerogates.golden +1 -1
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=ghost.golden +1 -1
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=inline.golden +1 -1
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=missing-inline.golden +1 -1
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=missing.golden +1 -1
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=nodoubt.golden +1 -1
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=nolog.golden +1 -1
- package/engine/testdata/golden/TestParityLearnings/mine-no-archive.golden +1 -1
- package/engine/testdata/golden/TestParityLearnings/mine.golden +1 -1
- package/engine/testdata/golden/TestParityLearnings/nudge.golden +1 -1
- package/engine/testdata/golden/TestParityMutationGate/active-slug.golden +1 -1
- package/engine/testdata/golden/TestParityMutationGate/explicit-slug.golden +1 -1
- package/engine/testdata/golden/TestParityPackageExistence/declared.golden +1 -1
- package/engine/testdata/golden/TestParityPackageExistence/default-import-subpath.golden +1 -1
- package/engine/testdata/golden/TestParityReconcile/check-clean.golden +1 -1
- package/engine/testdata/golden/TestParityRedwatch/fail-writes-red.golden +1 -1
- package/engine/testdata/golden/TestParityResolve/answer/state.md.golden +1 -1
- package/engine/testdata/golden/TestParityResolve/batch.golden +1 -1
- package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-devrites-agent-denies.golden +1 -1
- package/engine/testdata/golden/TestParityReviewerReadonly/enforce-deny-git-commit.golden +1 -1
- package/engine/testdata/golden/TestParityReviewerReadonly/enforce-deny-mutating.golden +1 -1
- package/engine/testdata/golden/TestParitySpecValidate/arg=flat.golden +1 -1
- package/engine/testdata/golden/TestParitySpecValidate/arg=valid/spec.md.golden +1 -1
- package/engine/testdata/golden/TestParitySpecValidate/arg=valid.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/custom-window-2.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/dominant.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/few.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/ghost.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/identical.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/nolog.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/pingpong.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/varied.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/window-04-identical.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/window-2.5-varied4.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/window-4x-varied4.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/window-leadspace-varied4.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/window-plus4-identical.golden +1 -1
- package/engine/testdata/golden/TestParitySubagentOrient/devrites-agent-subagent-type-key.golden +1 -1
- package/engine/testdata/golden/TestParitySubagentOrient/devrites-agent.golden +1 -1
- package/engine/testdata/golden/TestParityTestIntegrity/clean.golden +1 -1
- package/engine/testdata/golden/TestParityTickAfk/missingField.golden +1 -1
- package/engine/testdata/golden/TestParityTickAfk/none.golden +1 -1
- package/engine/testdata/golden/TestParityWrightScope/out-of-scope-enforce-denies.golden +1 -1
- package/engine/testdata/golden/TestSpecSkeleton/missing-some.golden +1 -1
- package/engine/testdata/golden/TestSpecSkeleton/present-all.golden +1 -1
- package/engine/tests/adr_0004_required_by_phase_test.go +2 -2
- package/engine/tests/adr_0006_clock_seam_test.go +1 -1
- package/engine/tests/budget_test.go +1 -1
- package/engine/tests/canonical_ac_ids_test.go +2 -2
- package/engine/tests/cli_test.go +1 -1
- package/engine/tests/concurrency_cli_test.go +1 -1
- package/engine/tests/gate_test.go +4 -4
- package/engine/tests/hook_test.go +3 -3
- package/engine/tests/hooks_io_test.go +1 -1
- package/engine/tests/lib_parity_test.go +29 -29
- package/engine/tests/meta_test.go +2 -2
- package/engine/tests/parity_closeout_test.go +1 -1
- package/engine/tests/parity_learnings_test.go +2 -2
- package/engine/tests/parity_mutationgate_test.go +2 -2
- package/engine/tests/parity_resolve_test.go +1 -1
- package/engine/tests/parity_test.go +3 -3
- package/engine/tests/parity_tickafk_test.go +1 -1
- package/engine/validatepack.go +5 -5
- package/engine/validatepackskills.go +9 -9
- package/pack/.claude/agents/devrites-code-reviewer.md +21 -22
- package/pack/.claude/agents/devrites-devex-reviewer.md +17 -17
- package/pack/.claude/agents/devrites-doubt-reviewer.md +6 -6
- package/pack/.claude/agents/devrites-forge-judge.md +26 -26
- package/pack/.claude/agents/devrites-frontend-reviewer.md +17 -17
- package/pack/.claude/agents/devrites-performance-reviewer.md +19 -18
- package/pack/.claude/agents/devrites-plan-reviewer.md +29 -27
- package/pack/.claude/agents/devrites-retrospector.md +19 -19
- package/pack/.claude/agents/devrites-security-auditor.md +15 -15
- package/pack/.claude/agents/devrites-simplifier-reviewer.md +14 -14
- package/pack/.claude/agents/devrites-slice-wright.md +52 -51
- package/pack/.claude/agents/devrites-spec-reviewer.md +11 -11
- package/pack/.claude/agents/devrites-strategy-reviewer.md +21 -21
- package/pack/.claude/agents/devrites-test-analyst.md +13 -13
- package/pack/.claude/settings.json +1 -1
- package/pack/.claude/skills/devrites-api-interface/SKILL.md +12 -12
- package/pack/.claude/skills/devrites-audit/SKILL.md +7 -7
- package/pack/.claude/skills/devrites-browser-proof/SKILL.md +16 -16
- package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +14 -14
- package/pack/.claude/skills/devrites-debug-recovery/reference/build-the-loop.md +16 -16
- package/pack/.claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +2 -2
- package/pack/.claude/skills/devrites-debug-recovery/reference/hypotheses.md +2 -2
- package/pack/.claude/skills/devrites-debug-recovery/reference/regression-test.md +3 -3
- package/pack/.claude/skills/devrites-debug-recovery/reference/trace.md +4 -4
- package/pack/.claude/skills/devrites-doubt/SKILL.md +14 -14
- package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +18 -18
- package/pack/.claude/skills/devrites-frontend-craft/reference/craft.md +17 -17
- package/pack/.claude/skills/devrites-frontend-craft/reference/design-references.md +25 -25
- package/pack/.claude/skills/devrites-frontend-craft/reference/fullstack.md +6 -6
- package/pack/.claude/skills/devrites-frontend-craft/reference/quality-standards.md +44 -44
- package/pack/.claude/skills/devrites-frontend-craft/reference/reuse-first.md +9 -9
- package/pack/.claude/skills/devrites-frontend-craft/reference/shape.md +13 -13
- package/pack/.claude/skills/devrites-interview/SKILL.md +27 -27
- package/pack/.claude/skills/devrites-lib/SKILL.md +25 -27
- package/pack/.claude/skills/devrites-lib/reference/model-tiers.md +5 -5
- package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +36 -36
- package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +11 -3
- package/pack/.claude/skills/devrites-lib/reference/standards/README.md +10 -10
- package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +33 -33
- package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +37 -37
- package/pack/.claude/skills/devrites-lib/reference/standards/anti-patterns.md +9 -9
- package/pack/.claude/skills/devrites-lib/reference/standards/ci-cd.md +12 -12
- package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +40 -40
- package/pack/.claude/skills/devrites-lib/reference/standards/coding-style.md +7 -7
- package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +24 -25
- package/pack/.claude/skills/devrites-lib/reference/standards/core.md +23 -23
- package/pack/.claude/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/deprecation.md +18 -18
- package/pack/.claude/skills/devrites-lib/reference/standards/developer-experience.md +29 -29
- package/pack/.claude/skills/devrites-lib/reference/standards/development-workflow.md +12 -13
- package/pack/.claude/skills/devrites-lib/reference/standards/documentation.md +4 -4
- package/pack/.claude/skills/devrites-lib/reference/standards/edge-case-trace.md +1 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/elicitation.md +26 -26
- package/pack/.claude/skills/devrites-lib/reference/standards/error-handling.md +4 -4
- package/pack/.claude/skills/devrites-lib/reference/standards/git-workflow.md +9 -9
- package/pack/.claude/skills/devrites-lib/reference/standards/hooks.md +3 -3
- package/pack/.claude/skills/devrites-lib/reference/standards/observability.md +15 -15
- package/pack/.claude/skills/devrites-lib/reference/standards/patterns.md +8 -8
- package/pack/.claude/skills/devrites-lib/reference/standards/performance.md +5 -5
- package/pack/.claude/skills/devrites-lib/reference/standards/principles.md +31 -31
- package/pack/.claude/skills/devrites-lib/reference/standards/prose-style.md +25 -25
- package/pack/.claude/skills/devrites-lib/reference/standards/security.md +30 -30
- package/pack/.claude/skills/devrites-lib/reference/standards/skill-authoring.md +11 -11
- package/pack/.claude/skills/devrites-lib/reference/standards/spec-grammar.md +30 -30
- package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +40 -40
- package/pack/.claude/skills/devrites-lib/reference/standards/tooling.md +26 -26
- package/pack/.claude/skills/devrites-prose-craft/SKILL.md +5 -5
- package/pack/.claude/skills/devrites-refresh-indexes/SKILL.md +6 -6
- package/pack/.claude/skills/devrites-source-driven/SKILL.md +8 -8
- package/pack/.claude/skills/devrites-ux-shape/SKILL.md +33 -33
- package/pack/.claude/skills/devrites-ux-shape/reference/brief-template.md +6 -6
- package/pack/.claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +9 -9
- package/pack/.claude/skills/rite/SKILL.md +13 -14
- package/pack/.claude/skills/rite/reference/menu.md +10 -10
- package/pack/.claude/skills/rite-adopt/SKILL.md +17 -18
- package/pack/.claude/skills/rite-adopt/reference/adoption.md +9 -9
- package/pack/.claude/skills/rite-adopt/reference/anti-patterns.md +6 -6
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +14 -14
- package/pack/.claude/skills/rite-autocomplete/reference/decision-policy.md +4 -4
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +7 -7
- package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +7 -7
- package/pack/.claude/skills/rite-build/SKILL.md +22 -22
- package/pack/.claude/skills/rite-build/reference/afk-discipline.md +9 -9
- package/pack/.claude/skills/rite-build/reference/anti-patterns.md +6 -6
- package/pack/.claude/skills/rite-build/reference/checkpoint-protocol.md +14 -14
- package/pack/.claude/skills/rite-build/reference/checkpoint.md +8 -8
- package/pack/.claude/skills/rite-build/reference/evidence-standard.md +1 -1
- package/pack/.claude/skills/rite-build/reference/forge.md +28 -29
- package/pack/.claude/skills/rite-build/reference/frontend-trigger.md +2 -2
- package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +3 -3
- package/pack/.claude/skills/rite-build/reference/output.md +1 -1
- package/pack/.claude/skills/rite-build/reference/phase-contract.md +44 -44
- package/pack/.claude/skills/rite-build/reference/spec-drift-guard.md +1 -1
- package/pack/.claude/skills/rite-build/reference/tdd.md +6 -6
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +23 -23
- package/pack/.claude/skills/rite-converge/SKILL.md +17 -17
- package/pack/.claude/skills/rite-converge/reference/anti-patterns.md +7 -7
- package/pack/.claude/skills/rite-converge/reference/convergence-assessment.md +14 -14
- package/pack/.claude/skills/rite-customize/SKILL.md +2 -2
- package/pack/.claude/skills/rite-define/SKILL.md +25 -25
- package/pack/.claude/skills/rite-define/reference/anti-patterns.md +5 -5
- package/pack/.claude/skills/rite-define/reference/gates.md +13 -13
- package/pack/.claude/skills/rite-define/reference/plan-template.md +1 -1
- package/pack/.claude/skills/rite-doctor/SKILL.md +11 -11
- package/pack/.claude/skills/rite-dogfood/SKILL.md +2 -2
- package/pack/.claude/skills/rite-explain/SKILL.md +22 -22
- package/pack/.claude/skills/rite-explain/reference/intake.md +16 -16
- package/pack/.claude/skills/rite-frame/SKILL.md +22 -22
- package/pack/.claude/skills/rite-frame/reference/failure-modes.md +13 -13
- package/pack/.claude/skills/rite-handoff/SKILL.md +12 -12
- package/pack/.claude/skills/rite-learn/SKILL.md +23 -23
- package/pack/.claude/skills/rite-plan/SKILL.md +21 -21
- package/pack/.claude/skills/rite-plan/reference/anti-patterns.md +3 -3
- package/pack/.claude/skills/rite-plan/reference/dependency-graph.md +1 -1
- package/pack/.claude/skills/rite-plan/reference/replan-and-repair.md +3 -3
- package/pack/.claude/skills/rite-plan/reference/slicing.md +9 -9
- package/pack/.claude/skills/rite-plan/reference/task-breakdown.md +3 -3
- package/pack/.claude/skills/rite-polish/SKILL.md +11 -11
- package/pack/.claude/skills/rite-polish/reference/anti-patterns.md +8 -8
- package/pack/.claude/skills/rite-polish/reference/backend-polish.md +13 -13
- package/pack/.claude/skills/rite-polish/reference/browser-polish-evidence.md +4 -4
- package/pack/.claude/skills/rite-polish/reference/code.md +26 -26
- package/pack/.claude/skills/rite-polish/reference/harden-checklist.md +31 -31
- package/pack/.claude/skills/rite-polish/reference/ui.md +23 -23
- package/pack/.claude/skills/rite-pov/SKILL.md +3 -3
- package/pack/.claude/skills/rite-pr-feedback/SKILL.md +2 -2
- package/pack/.claude/skills/rite-pressure-test/SKILL.md +14 -14
- package/pack/.claude/skills/rite-prototype/SKILL.md +13 -13
- package/pack/.claude/skills/rite-prove/SKILL.md +17 -17
- package/pack/.claude/skills/rite-prove/reference/anti-patterns.md +4 -4
- package/pack/.claude/skills/rite-prove/reference/browser-proof.md +2 -2
- package/pack/.claude/skills/rite-prove/reference/failure-triage.md +4 -4
- package/pack/.claude/skills/rite-prove/reference/proof-ladder.md +6 -6
- package/pack/.claude/skills/rite-prove/reference/test-command-discovery.md +1 -1
- package/pack/.claude/skills/rite-quick/SKILL.md +22 -22
- package/pack/.claude/skills/rite-resolve/SKILL.md +18 -18
- package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +7 -7
- package/pack/.claude/skills/rite-review/SKILL.md +34 -34
- package/pack/.claude/skills/rite-review/reference/anti-patterns.md +4 -4
- package/pack/.claude/skills/rite-review/reference/cognitive-load.md +22 -22
- package/pack/.claude/skills/rite-review/reference/feature-scoped-review.md +2 -2
- package/pack/.claude/skills/rite-review/reference/five-axis-review.md +8 -8
- package/pack/.claude/skills/rite-review/reference/nielsen-heuristics.md +14 -14
- package/pack/.claude/skills/rite-review/reference/performance-checklist.md +14 -14
- package/pack/.claude/skills/rite-review/reference/security-review.md +9 -9
- package/pack/.claude/skills/rite-seal/SKILL.md +26 -26
- package/pack/.claude/skills/rite-seal/reference/anti-patterns.md +8 -8
- package/pack/.claude/skills/rite-seal/reference/conventions-ledger.md +8 -8
- package/pack/.claude/skills/rite-seal/reference/final-evidence.md +9 -9
- package/pack/.claude/skills/rite-seal/reference/go-no-go.md +9 -9
- package/pack/.claude/skills/rite-seal/reference/phase-contract.md +43 -43
- package/pack/.claude/skills/rite-ship/SKILL.md +12 -12
- package/pack/.claude/skills/rite-ship/reference/anti-patterns.md +5 -5
- package/pack/.claude/skills/rite-ship/reference/close-out.md +2 -2
- package/pack/.claude/skills/rite-ship/reference/design-memory.md +22 -22
- package/pack/.claude/skills/rite-ship/reference/git-ship.md +10 -10
- package/pack/.claude/skills/rite-ship/reference/ledger.md +9 -9
- package/pack/.claude/skills/rite-ship/reference/rollout.md +11 -11
- package/pack/.claude/skills/rite-ship/reference/ship-template.md +1 -1
- package/pack/.claude/skills/rite-spec/SKILL.md +45 -45
- package/pack/.claude/skills/rite-spec/reference/acceptance-criteria.md +4 -4
- package/pack/.claude/skills/rite-spec/reference/anti-patterns.md +6 -6
- package/pack/.claude/skills/rite-spec/reference/interview-patterns.md +3 -3
- package/pack/.claude/skills/rite-spec/reference/investigation.md +21 -21
- package/pack/.claude/skills/rite-spec/reference/question-protocol.md +9 -9
- package/pack/.claude/skills/rite-spec/reference/references-intake.md +8 -8
- package/pack/.claude/skills/rite-spec/reference/spec-checklists.md +19 -19
- package/pack/.claude/skills/rite-status/SKILL.md +13 -13
- package/pack/.claude/skills/rite-temper/SKILL.md +29 -29
- package/pack/.claude/skills/rite-temper/reference/anti-patterns.md +11 -11
- package/pack/.claude/skills/rite-temper/reference/review-dimensions.md +20 -20
- package/pack/.claude/skills/rite-temper/reference/scope-modes.md +16 -16
- package/pack/.claude/skills/rite-temper/reference/significance.md +10 -10
- package/pack/.claude/skills/rite-temper/reference/strategy-template.md +14 -14
- package/pack/.claude/skills/rite-vet/SKILL.md +31 -31
- package/pack/.claude/skills/rite-vet/reference/anti-patterns.md +14 -14
- package/pack/.claude/skills/rite-vet/reference/artifacts.md +10 -10
- package/pack/.claude/skills/rite-vet/reference/cross-model.md +9 -9
- package/pack/.claude/skills/rite-vet/reference/depth.md +14 -14
- package/pack/.claude/skills/rite-vet/reference/eng-lenses.md +9 -9
- package/pack/.claude/skills/rite-vet/reference/review-axes.md +28 -28
- package/pack/.claude/skills/rite-zoom-out/SKILL.md +18 -18
- package/pack/generated/claude/agents/devrites-code-reviewer.md +21 -22
- package/pack/generated/claude/agents/devrites-devex-reviewer.md +17 -17
- package/pack/generated/claude/agents/devrites-doubt-reviewer.md +6 -6
- package/pack/generated/claude/agents/devrites-forge-judge.md +26 -26
- package/pack/generated/claude/agents/devrites-frontend-reviewer.md +17 -17
- package/pack/generated/claude/agents/devrites-performance-reviewer.md +19 -18
- package/pack/generated/claude/agents/devrites-plan-reviewer.md +29 -27
- package/pack/generated/claude/agents/devrites-retrospector.md +19 -19
- package/pack/generated/claude/agents/devrites-security-auditor.md +15 -15
- package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +14 -14
- package/pack/generated/claude/agents/devrites-slice-wright.md +52 -51
- package/pack/generated/claude/agents/devrites-spec-reviewer.md +11 -11
- package/pack/generated/claude/agents/devrites-strategy-reviewer.md +21 -21
- package/pack/generated/claude/agents/devrites-test-analyst.md +13 -13
- package/pack/generated/claude/settings.json +1 -1
- package/pack/generated/claude/skills/devrites-api-interface/SKILL.md +12 -12
- package/pack/generated/claude/skills/devrites-audit/SKILL.md +7 -7
- package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +16 -16
- package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +14 -14
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/build-the-loop.md +16 -16
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +2 -2
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/hypotheses.md +2 -2
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/regression-test.md +3 -3
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/trace.md +4 -4
- package/pack/generated/claude/skills/devrites-doubt/SKILL.md +14 -14
- package/pack/generated/claude/skills/devrites-frontend-craft/SKILL.md +18 -18
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/craft.md +17 -17
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/design-references.md +25 -25
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/fullstack.md +6 -6
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/quality-standards.md +44 -44
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/reuse-first.md +9 -9
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/shape.md +13 -13
- package/pack/generated/claude/skills/devrites-interview/SKILL.md +27 -27
- package/pack/generated/claude/skills/devrites-lib/SKILL.md +25 -27
- package/pack/generated/claude/skills/devrites-lib/reference/model-tiers.md +5 -5
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +36 -36
- package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +11 -3
- package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +10 -10
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +33 -33
- package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +37 -37
- package/pack/generated/claude/skills/devrites-lib/reference/standards/anti-patterns.md +9 -9
- package/pack/generated/claude/skills/devrites-lib/reference/standards/ci-cd.md +12 -12
- package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +40 -40
- package/pack/generated/claude/skills/devrites-lib/reference/standards/coding-style.md +7 -7
- package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +24 -25
- package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +23 -23
- package/pack/generated/claude/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/deprecation.md +18 -18
- package/pack/generated/claude/skills/devrites-lib/reference/standards/developer-experience.md +29 -29
- package/pack/generated/claude/skills/devrites-lib/reference/standards/development-workflow.md +12 -13
- package/pack/generated/claude/skills/devrites-lib/reference/standards/documentation.md +4 -4
- package/pack/generated/claude/skills/devrites-lib/reference/standards/edge-case-trace.md +1 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/elicitation.md +26 -26
- package/pack/generated/claude/skills/devrites-lib/reference/standards/error-handling.md +4 -4
- package/pack/generated/claude/skills/devrites-lib/reference/standards/git-workflow.md +9 -9
- package/pack/generated/claude/skills/devrites-lib/reference/standards/hooks.md +3 -3
- package/pack/generated/claude/skills/devrites-lib/reference/standards/observability.md +15 -15
- package/pack/generated/claude/skills/devrites-lib/reference/standards/patterns.md +8 -8
- package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +5 -5
- package/pack/generated/claude/skills/devrites-lib/reference/standards/principles.md +31 -31
- package/pack/generated/claude/skills/devrites-lib/reference/standards/prose-style.md +25 -25
- package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +30 -30
- package/pack/generated/claude/skills/devrites-lib/reference/standards/skill-authoring.md +11 -11
- package/pack/generated/claude/skills/devrites-lib/reference/standards/spec-grammar.md +30 -30
- package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +40 -40
- package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +26 -26
- package/pack/generated/claude/skills/devrites-prose-craft/SKILL.md +5 -5
- package/pack/generated/claude/skills/devrites-refresh-indexes/SKILL.md +6 -6
- package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +8 -8
- package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +33 -33
- package/pack/generated/claude/skills/devrites-ux-shape/reference/brief-template.md +6 -6
- package/pack/generated/claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +9 -9
- package/pack/generated/claude/skills/rite/SKILL.md +13 -14
- package/pack/generated/claude/skills/rite/reference/menu.md +10 -10
- package/pack/generated/claude/skills/rite-adopt/SKILL.md +17 -18
- package/pack/generated/claude/skills/rite-adopt/reference/adoption.md +9 -9
- package/pack/generated/claude/skills/rite-adopt/reference/anti-patterns.md +6 -6
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +14 -14
- package/pack/generated/claude/skills/rite-autocomplete/reference/decision-policy.md +4 -4
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +7 -7
- package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +7 -7
- package/pack/generated/claude/skills/rite-build/SKILL.md +22 -22
- package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +9 -9
- package/pack/generated/claude/skills/rite-build/reference/anti-patterns.md +6 -6
- package/pack/generated/claude/skills/rite-build/reference/checkpoint-protocol.md +14 -14
- package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +8 -8
- package/pack/generated/claude/skills/rite-build/reference/evidence-standard.md +1 -1
- package/pack/generated/claude/skills/rite-build/reference/forge.md +28 -29
- package/pack/generated/claude/skills/rite-build/reference/frontend-trigger.md +2 -2
- package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +3 -3
- package/pack/generated/claude/skills/rite-build/reference/output.md +1 -1
- package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +44 -44
- package/pack/generated/claude/skills/rite-build/reference/spec-drift-guard.md +1 -1
- package/pack/generated/claude/skills/rite-build/reference/tdd.md +6 -6
- package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +23 -23
- package/pack/generated/claude/skills/rite-converge/SKILL.md +17 -17
- package/pack/generated/claude/skills/rite-converge/reference/anti-patterns.md +7 -7
- package/pack/generated/claude/skills/rite-converge/reference/convergence-assessment.md +14 -14
- package/pack/generated/claude/skills/rite-customize/SKILL.md +2 -2
- package/pack/generated/claude/skills/rite-define/SKILL.md +25 -25
- package/pack/generated/claude/skills/rite-define/reference/anti-patterns.md +5 -5
- package/pack/generated/claude/skills/rite-define/reference/gates.md +13 -13
- package/pack/generated/claude/skills/rite-define/reference/plan-template.md +1 -1
- package/pack/generated/claude/skills/rite-doctor/SKILL.md +11 -11
- package/pack/generated/claude/skills/rite-dogfood/SKILL.md +2 -2
- package/pack/generated/claude/skills/rite-explain/SKILL.md +22 -22
- package/pack/generated/claude/skills/rite-explain/reference/intake.md +16 -16
- package/pack/generated/claude/skills/rite-frame/SKILL.md +22 -22
- package/pack/generated/claude/skills/rite-frame/reference/failure-modes.md +13 -13
- package/pack/generated/claude/skills/rite-handoff/SKILL.md +12 -12
- package/pack/generated/claude/skills/rite-learn/SKILL.md +23 -23
- package/pack/generated/claude/skills/rite-plan/SKILL.md +21 -21
- package/pack/generated/claude/skills/rite-plan/reference/anti-patterns.md +3 -3
- package/pack/generated/claude/skills/rite-plan/reference/dependency-graph.md +1 -1
- package/pack/generated/claude/skills/rite-plan/reference/replan-and-repair.md +3 -3
- package/pack/generated/claude/skills/rite-plan/reference/slicing.md +9 -9
- package/pack/generated/claude/skills/rite-plan/reference/task-breakdown.md +3 -3
- package/pack/generated/claude/skills/rite-polish/SKILL.md +11 -11
- package/pack/generated/claude/skills/rite-polish/reference/anti-patterns.md +8 -8
- package/pack/generated/claude/skills/rite-polish/reference/backend-polish.md +13 -13
- package/pack/generated/claude/skills/rite-polish/reference/browser-polish-evidence.md +4 -4
- package/pack/generated/claude/skills/rite-polish/reference/code.md +26 -26
- package/pack/generated/claude/skills/rite-polish/reference/harden-checklist.md +31 -31
- package/pack/generated/claude/skills/rite-polish/reference/ui.md +23 -23
- package/pack/generated/claude/skills/rite-pov/SKILL.md +3 -3
- package/pack/generated/claude/skills/rite-pr-feedback/SKILL.md +2 -2
- package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +14 -14
- package/pack/generated/claude/skills/rite-prototype/SKILL.md +13 -13
- package/pack/generated/claude/skills/rite-prove/SKILL.md +17 -17
- package/pack/generated/claude/skills/rite-prove/reference/anti-patterns.md +4 -4
- package/pack/generated/claude/skills/rite-prove/reference/browser-proof.md +2 -2
- package/pack/generated/claude/skills/rite-prove/reference/failure-triage.md +4 -4
- package/pack/generated/claude/skills/rite-prove/reference/proof-ladder.md +6 -6
- package/pack/generated/claude/skills/rite-prove/reference/test-command-discovery.md +1 -1
- package/pack/generated/claude/skills/rite-quick/SKILL.md +22 -22
- package/pack/generated/claude/skills/rite-resolve/SKILL.md +18 -18
- package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +7 -7
- package/pack/generated/claude/skills/rite-review/SKILL.md +34 -34
- package/pack/generated/claude/skills/rite-review/reference/anti-patterns.md +4 -4
- package/pack/generated/claude/skills/rite-review/reference/cognitive-load.md +22 -22
- package/pack/generated/claude/skills/rite-review/reference/feature-scoped-review.md +2 -2
- package/pack/generated/claude/skills/rite-review/reference/five-axis-review.md +8 -8
- package/pack/generated/claude/skills/rite-review/reference/nielsen-heuristics.md +14 -14
- package/pack/generated/claude/skills/rite-review/reference/performance-checklist.md +14 -14
- package/pack/generated/claude/skills/rite-review/reference/security-review.md +9 -9
- package/pack/generated/claude/skills/rite-seal/SKILL.md +26 -26
- package/pack/generated/claude/skills/rite-seal/reference/anti-patterns.md +8 -8
- package/pack/generated/claude/skills/rite-seal/reference/conventions-ledger.md +8 -8
- package/pack/generated/claude/skills/rite-seal/reference/final-evidence.md +9 -9
- package/pack/generated/claude/skills/rite-seal/reference/go-no-go.md +9 -9
- package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +43 -43
- package/pack/generated/claude/skills/rite-ship/SKILL.md +12 -12
- package/pack/generated/claude/skills/rite-ship/reference/anti-patterns.md +5 -5
- package/pack/generated/claude/skills/rite-ship/reference/close-out.md +2 -2
- package/pack/generated/claude/skills/rite-ship/reference/design-memory.md +22 -22
- package/pack/generated/claude/skills/rite-ship/reference/git-ship.md +10 -10
- package/pack/generated/claude/skills/rite-ship/reference/ledger.md +9 -9
- package/pack/generated/claude/skills/rite-ship/reference/rollout.md +11 -11
- package/pack/generated/claude/skills/rite-ship/reference/ship-template.md +1 -1
- package/pack/generated/claude/skills/rite-spec/SKILL.md +45 -45
- package/pack/generated/claude/skills/rite-spec/reference/acceptance-criteria.md +4 -4
- package/pack/generated/claude/skills/rite-spec/reference/anti-patterns.md +6 -6
- package/pack/generated/claude/skills/rite-spec/reference/interview-patterns.md +3 -3
- package/pack/generated/claude/skills/rite-spec/reference/investigation.md +21 -21
- package/pack/generated/claude/skills/rite-spec/reference/question-protocol.md +9 -9
- package/pack/generated/claude/skills/rite-spec/reference/references-intake.md +8 -8
- package/pack/generated/claude/skills/rite-spec/reference/spec-checklists.md +19 -19
- package/pack/generated/claude/skills/rite-status/SKILL.md +13 -13
- package/pack/generated/claude/skills/rite-temper/SKILL.md +29 -29
- package/pack/generated/claude/skills/rite-temper/reference/anti-patterns.md +11 -11
- package/pack/generated/claude/skills/rite-temper/reference/review-dimensions.md +20 -20
- package/pack/generated/claude/skills/rite-temper/reference/scope-modes.md +16 -16
- package/pack/generated/claude/skills/rite-temper/reference/significance.md +10 -10
- package/pack/generated/claude/skills/rite-temper/reference/strategy-template.md +14 -14
- package/pack/generated/claude/skills/rite-vet/SKILL.md +31 -31
- package/pack/generated/claude/skills/rite-vet/reference/anti-patterns.md +14 -14
- package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +10 -10
- package/pack/generated/claude/skills/rite-vet/reference/cross-model.md +9 -9
- package/pack/generated/claude/skills/rite-vet/reference/depth.md +14 -14
- package/pack/generated/claude/skills/rite-vet/reference/eng-lenses.md +9 -9
- package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +28 -28
- package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +18 -18
- package/pack/generated/codex/agents/devrites-code-reviewer.toml +21 -22
- package/pack/generated/codex/agents/devrites-devex-reviewer.toml +17 -17
- package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +6 -6
- package/pack/generated/codex/agents/devrites-forge-judge.toml +26 -26
- package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +17 -17
- package/pack/generated/codex/agents/devrites-performance-reviewer.toml +19 -18
- package/pack/generated/codex/agents/devrites-plan-reviewer.toml +29 -27
- package/pack/generated/codex/agents/devrites-retrospector.toml +19 -19
- package/pack/generated/codex/agents/devrites-security-auditor.toml +15 -15
- package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +14 -14
- package/pack/generated/codex/agents/devrites-slice-wright.toml +52 -51
- package/pack/generated/codex/agents/devrites-spec-reviewer.toml +11 -11
- package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +21 -21
- package/pack/generated/codex/agents/devrites-test-analyst.toml +13 -13
- package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +15 -15
- package/pack/generated/codex/skills/devrites-audit/SKILL.md +10 -10
- package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +19 -19
- package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +17 -17
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/build-the-loop.md +16 -16
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +2 -2
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/hypotheses.md +2 -2
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/regression-test.md +3 -3
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/trace.md +4 -4
- package/pack/generated/codex/skills/devrites-doubt/SKILL.md +17 -17
- package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +20 -20
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/craft.md +17 -17
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/design-references.md +25 -25
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/fullstack.md +6 -6
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/quality-standards.md +44 -44
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/reuse-first.md +9 -9
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/shape.md +13 -13
- package/pack/generated/codex/skills/devrites-interview/SKILL.md +30 -30
- package/pack/generated/codex/skills/devrites-lib/SKILL.md +28 -30
- package/pack/generated/codex/skills/devrites-lib/reference/model-tiers.md +5 -5
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +36 -36
- package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +11 -3
- package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +10 -10
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +33 -33
- package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +37 -37
- package/pack/generated/codex/skills/devrites-lib/reference/standards/anti-patterns.md +9 -9
- package/pack/generated/codex/skills/devrites-lib/reference/standards/ci-cd.md +12 -12
- package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +40 -40
- package/pack/generated/codex/skills/devrites-lib/reference/standards/coding-style.md +7 -7
- package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +24 -25
- package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +23 -23
- package/pack/generated/codex/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/deprecation.md +18 -18
- package/pack/generated/codex/skills/devrites-lib/reference/standards/developer-experience.md +29 -29
- package/pack/generated/codex/skills/devrites-lib/reference/standards/development-workflow.md +12 -13
- package/pack/generated/codex/skills/devrites-lib/reference/standards/documentation.md +4 -4
- package/pack/generated/codex/skills/devrites-lib/reference/standards/edge-case-trace.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/elicitation.md +26 -26
- package/pack/generated/codex/skills/devrites-lib/reference/standards/error-handling.md +4 -4
- package/pack/generated/codex/skills/devrites-lib/reference/standards/git-workflow.md +9 -9
- package/pack/generated/codex/skills/devrites-lib/reference/standards/hooks.md +3 -3
- package/pack/generated/codex/skills/devrites-lib/reference/standards/observability.md +15 -15
- package/pack/generated/codex/skills/devrites-lib/reference/standards/patterns.md +8 -8
- package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +5 -5
- package/pack/generated/codex/skills/devrites-lib/reference/standards/principles.md +31 -31
- package/pack/generated/codex/skills/devrites-lib/reference/standards/prose-style.md +25 -25
- package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +30 -30
- package/pack/generated/codex/skills/devrites-lib/reference/standards/skill-authoring.md +11 -11
- package/pack/generated/codex/skills/devrites-lib/reference/standards/spec-grammar.md +30 -30
- package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +40 -40
- package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +26 -26
- package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +8 -8
- package/pack/generated/codex/skills/devrites-refresh-indexes/SKILL.md +9 -9
- package/pack/generated/codex/skills/devrites-source-driven/SKILL.md +11 -11
- package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +36 -36
- package/pack/generated/codex/skills/devrites-ux-shape/reference/brief-template.md +6 -6
- package/pack/generated/codex/skills/devrites-ux-shape/reference/visual-direction-probe.md +9 -9
- package/pack/generated/codex/skills/rite/SKILL.md +16 -17
- package/pack/generated/codex/skills/rite/reference/menu.md +10 -10
- package/pack/generated/codex/skills/rite-adopt/SKILL.md +20 -21
- package/pack/generated/codex/skills/rite-adopt/reference/adoption.md +9 -9
- package/pack/generated/codex/skills/rite-adopt/reference/anti-patterns.md +6 -6
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +17 -17
- package/pack/generated/codex/skills/rite-autocomplete/reference/decision-policy.md +4 -4
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +7 -7
- package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +7 -7
- package/pack/generated/codex/skills/rite-build/SKILL.md +25 -25
- package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +9 -9
- package/pack/generated/codex/skills/rite-build/reference/anti-patterns.md +6 -6
- package/pack/generated/codex/skills/rite-build/reference/checkpoint-protocol.md +14 -14
- package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +8 -8
- package/pack/generated/codex/skills/rite-build/reference/evidence-standard.md +1 -1
- package/pack/generated/codex/skills/rite-build/reference/forge.md +28 -29
- package/pack/generated/codex/skills/rite-build/reference/frontend-trigger.md +2 -2
- package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +3 -3
- package/pack/generated/codex/skills/rite-build/reference/output.md +1 -1
- package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +44 -44
- package/pack/generated/codex/skills/rite-build/reference/spec-drift-guard.md +1 -1
- package/pack/generated/codex/skills/rite-build/reference/tdd.md +6 -6
- package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +23 -23
- package/pack/generated/codex/skills/rite-converge/SKILL.md +20 -20
- package/pack/generated/codex/skills/rite-converge/reference/anti-patterns.md +7 -7
- package/pack/generated/codex/skills/rite-converge/reference/convergence-assessment.md +14 -14
- package/pack/generated/codex/skills/rite-customize/SKILL.md +5 -5
- package/pack/generated/codex/skills/rite-define/SKILL.md +28 -28
- package/pack/generated/codex/skills/rite-define/reference/anti-patterns.md +5 -5
- package/pack/generated/codex/skills/rite-define/reference/gates.md +13 -13
- package/pack/generated/codex/skills/rite-define/reference/plan-template.md +1 -1
- package/pack/generated/codex/skills/rite-doctor/SKILL.md +14 -14
- package/pack/generated/codex/skills/rite-dogfood/SKILL.md +5 -5
- package/pack/generated/codex/skills/rite-explain/SKILL.md +25 -25
- package/pack/generated/codex/skills/rite-explain/reference/intake.md +16 -16
- package/pack/generated/codex/skills/rite-frame/SKILL.md +25 -25
- package/pack/generated/codex/skills/rite-frame/reference/failure-modes.md +13 -13
- package/pack/generated/codex/skills/rite-handoff/SKILL.md +15 -15
- package/pack/generated/codex/skills/rite-learn/SKILL.md +26 -26
- package/pack/generated/codex/skills/rite-plan/SKILL.md +24 -24
- package/pack/generated/codex/skills/rite-plan/reference/anti-patterns.md +3 -3
- package/pack/generated/codex/skills/rite-plan/reference/dependency-graph.md +1 -1
- package/pack/generated/codex/skills/rite-plan/reference/replan-and-repair.md +3 -3
- package/pack/generated/codex/skills/rite-plan/reference/slicing.md +9 -9
- package/pack/generated/codex/skills/rite-plan/reference/task-breakdown.md +3 -3
- package/pack/generated/codex/skills/rite-polish/SKILL.md +14 -14
- package/pack/generated/codex/skills/rite-polish/reference/anti-patterns.md +8 -8
- package/pack/generated/codex/skills/rite-polish/reference/backend-polish.md +13 -13
- package/pack/generated/codex/skills/rite-polish/reference/browser-polish-evidence.md +4 -4
- package/pack/generated/codex/skills/rite-polish/reference/code.md +26 -26
- package/pack/generated/codex/skills/rite-polish/reference/harden-checklist.md +31 -31
- package/pack/generated/codex/skills/rite-polish/reference/ui.md +23 -23
- package/pack/generated/codex/skills/rite-pov/SKILL.md +6 -6
- package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +5 -5
- package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +17 -17
- package/pack/generated/codex/skills/rite-prototype/SKILL.md +16 -16
- package/pack/generated/codex/skills/rite-prove/SKILL.md +20 -20
- package/pack/generated/codex/skills/rite-prove/reference/anti-patterns.md +4 -4
- package/pack/generated/codex/skills/rite-prove/reference/browser-proof.md +2 -2
- package/pack/generated/codex/skills/rite-prove/reference/failure-triage.md +4 -4
- package/pack/generated/codex/skills/rite-prove/reference/proof-ladder.md +6 -6
- package/pack/generated/codex/skills/rite-prove/reference/test-command-discovery.md +1 -1
- package/pack/generated/codex/skills/rite-quick/SKILL.md +25 -25
- package/pack/generated/codex/skills/rite-resolve/SKILL.md +21 -21
- package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +7 -7
- package/pack/generated/codex/skills/rite-review/SKILL.md +37 -37
- package/pack/generated/codex/skills/rite-review/reference/anti-patterns.md +4 -4
- package/pack/generated/codex/skills/rite-review/reference/cognitive-load.md +22 -22
- package/pack/generated/codex/skills/rite-review/reference/feature-scoped-review.md +2 -2
- package/pack/generated/codex/skills/rite-review/reference/five-axis-review.md +8 -8
- package/pack/generated/codex/skills/rite-review/reference/nielsen-heuristics.md +14 -14
- package/pack/generated/codex/skills/rite-review/reference/performance-checklist.md +14 -14
- package/pack/generated/codex/skills/rite-review/reference/security-review.md +9 -9
- package/pack/generated/codex/skills/rite-seal/SKILL.md +29 -29
- package/pack/generated/codex/skills/rite-seal/reference/anti-patterns.md +8 -8
- package/pack/generated/codex/skills/rite-seal/reference/conventions-ledger.md +8 -8
- package/pack/generated/codex/skills/rite-seal/reference/final-evidence.md +9 -9
- package/pack/generated/codex/skills/rite-seal/reference/go-no-go.md +9 -9
- package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +43 -43
- package/pack/generated/codex/skills/rite-ship/SKILL.md +15 -15
- package/pack/generated/codex/skills/rite-ship/reference/anti-patterns.md +5 -5
- package/pack/generated/codex/skills/rite-ship/reference/close-out.md +2 -2
- package/pack/generated/codex/skills/rite-ship/reference/design-memory.md +22 -22
- package/pack/generated/codex/skills/rite-ship/reference/git-ship.md +10 -10
- package/pack/generated/codex/skills/rite-ship/reference/ledger.md +9 -9
- package/pack/generated/codex/skills/rite-ship/reference/rollout.md +11 -11
- package/pack/generated/codex/skills/rite-ship/reference/ship-template.md +1 -1
- package/pack/generated/codex/skills/rite-spec/SKILL.md +48 -48
- package/pack/generated/codex/skills/rite-spec/reference/acceptance-criteria.md +4 -4
- package/pack/generated/codex/skills/rite-spec/reference/anti-patterns.md +6 -6
- package/pack/generated/codex/skills/rite-spec/reference/interview-patterns.md +3 -3
- package/pack/generated/codex/skills/rite-spec/reference/investigation.md +21 -21
- package/pack/generated/codex/skills/rite-spec/reference/question-protocol.md +9 -9
- package/pack/generated/codex/skills/rite-spec/reference/references-intake.md +8 -8
- package/pack/generated/codex/skills/rite-spec/reference/spec-checklists.md +19 -19
- package/pack/generated/codex/skills/rite-status/SKILL.md +16 -16
- package/pack/generated/codex/skills/rite-temper/SKILL.md +32 -32
- package/pack/generated/codex/skills/rite-temper/reference/anti-patterns.md +11 -11
- package/pack/generated/codex/skills/rite-temper/reference/review-dimensions.md +20 -20
- package/pack/generated/codex/skills/rite-temper/reference/scope-modes.md +16 -16
- package/pack/generated/codex/skills/rite-temper/reference/significance.md +10 -10
- package/pack/generated/codex/skills/rite-temper/reference/strategy-template.md +14 -14
- package/pack/generated/codex/skills/rite-vet/SKILL.md +34 -34
- package/pack/generated/codex/skills/rite-vet/reference/anti-patterns.md +14 -14
- package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +10 -10
- package/pack/generated/codex/skills/rite-vet/reference/cross-model.md +9 -9
- package/pack/generated/codex/skills/rite-vet/reference/depth.md +14 -14
- package/pack/generated/codex/skills/rite-vet/reference/eng-lenses.md +9 -9
- package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +28 -28
- package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +21 -21
- package/package.json +2 -2
- package/scripts/build-binaries.sh +1 -1
- package/scripts/build-host-artifacts.sh +1 -1
- package/scripts/build-release-tarball.sh +1 -1
- package/scripts/check-cross-refs.py +8 -8
- package/scripts/check-invocation-integrity.py +4 -4
- package/scripts/check-no-global-writes.sh +2 -2
- package/scripts/check-reply-contract.sh +1 -1
- package/scripts/check-rule-uniqueness.sh +2 -2
- package/scripts/codex-generate.sh +5 -5
- package/scripts/devrites-detect.sh +33 -33
- package/scripts/eval-runner.py +7 -7
- package/scripts/grade-feature.sh +14 -14
- package/scripts/install-lib.sh +2 -2
- package/scripts/pin.sh +12 -12
- package/scripts/run-behavioral-evals.sh +12 -12
- package/scripts/run-evals.sh +1 -1
- package/scripts/run-outcome-evals.sh +12 -12
- package/scripts/scan-pack-security.py +4 -4
- package/scripts/scan-supply-chain-iocs.py +7 -7
- package/scripts/skills-inventory.mjs +21 -4
- package/scripts/sync-version.sh +2 -2
- package/scripts/validate-workflow-security.py +12 -6
- package/scripts/validate-workspace-schema.py +2 -2
- package/scripts/validate.sh +7 -7
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# Spec grammar
|
|
1
|
+
# Spec grammar: testable requirements, parseable by tooling
|
|
2
2
|
|
|
3
3
|
Acceptance criteria are the contract the seal checks ([`testing.md`](testing.md),
|
|
4
4
|
[`code-review.md`](code-review.md)). Prose criteria work, but a requirement written as free
|
|
5
|
-
text is graded by a human reading carefully
|
|
5
|
+
text is graded by a human reading carefully, and an ambiguous one ("handle errors
|
|
6
6
|
gracefully") slips past every gate because nothing can falsify it. This rule adds an
|
|
7
7
|
**optional, recommended structure** that makes a behavioral requirement testable by
|
|
8
8
|
construction and parseable by a deterministic linter, so the spec phase catches a malformed
|
|
@@ -11,24 +11,24 @@ requirement before `$rite-define` plans against it.
|
|
|
11
11
|
It is the grammar counterpart to [`testing.md`](testing.md): testing says *prove every
|
|
12
12
|
behavior*; this says *write each behavior so it can be proven*.
|
|
13
13
|
|
|
14
|
-
## Progressive rigor
|
|
14
|
+
## Progressive rigor: when to use the structured form
|
|
15
15
|
|
|
16
16
|
Match the rigor to the stakes; don't pay grammar ceremony for a one-liner.
|
|
17
17
|
|
|
18
|
-
- **Simple / routine change
|
|
18
|
+
- **Simple / routine change:** the flat checklist form is correct and stays. One bullet per
|
|
19
19
|
criterion, each tagged with an `AC-###` id:
|
|
20
20
|
```markdown
|
|
21
21
|
## Acceptance criteria
|
|
22
22
|
- [ ] AC-001: export returns a CSV with a header row
|
|
23
23
|
- [ ] AC-002: an empty dataset returns 204, not an empty 200
|
|
24
24
|
```
|
|
25
|
-
- **Behavioral / high-risk / cross-boundary requirement
|
|
26
|
-
public API, money, a migration, anything with non-obvious edge cases
|
|
25
|
+
- **Behavioral / high-risk / cross-boundary requirement:** auth, data model, state machine,
|
|
26
|
+
public API, money, a migration, anything with non-obvious edge cases: use the structured
|
|
27
27
|
**Requirement / Scenario** grammar below. The act of writing the WHEN/THEN forces the edge
|
|
28
28
|
cases into the open at spec time, where they're cheapest to resolve.
|
|
29
29
|
|
|
30
30
|
A spec mixes both: most criteria stay flat bullets; the two or three that carry real risk get
|
|
31
|
-
the structured treatment. **Absence of structured requirements is never a failure
|
|
31
|
+
the structured treatment. **Absence of structured requirements is never a failure**: the
|
|
32
32
|
validator no-ops on a flat-bullet spec, the same discipline as the principles gate
|
|
33
33
|
([`principles.md`](principles.md)).
|
|
34
34
|
|
|
@@ -49,26 +49,26 @@ The system SHALL reject any session token older than 15 minutes of inactivity.
|
|
|
49
49
|
|
|
50
50
|
The rules the validator enforces (`devrites-engine spec-validate`):
|
|
51
51
|
|
|
52
|
-
- **`### Requirement: <name
|
|
52
|
+
- **`### Requirement: <name>`:** a level-3 heading. Its block MUST carry a **SHALL** or
|
|
53
53
|
**MUST** statement (in the header or the body) describing the core behavior. Keep the name
|
|
54
54
|
descriptive and under ~50 characters.
|
|
55
|
-
- **Header identity is the key.** Requirement names are **unique** within a spec
|
|
55
|
+
- **Header identity is the key.** Requirement names are **unique** within a spec: tooling (and
|
|
56
56
|
any future spec sync) matches a requirement by its header text, so two requirements can't
|
|
57
57
|
share a name. Renaming a requirement is a remove + add, not an in-place edit, so the change
|
|
58
58
|
is visible.
|
|
59
|
-
- **`#### Scenario: <name
|
|
59
|
+
- **`#### Scenario: <name>`:** every requirement owns **at least one**. A requirement with no
|
|
60
60
|
scenario is an assertion no test can target.
|
|
61
|
-
- **WHEN / THEN
|
|
61
|
+
- **WHEN / THEN:** every scenario states a trigger (**WHEN**) and an observable outcome
|
|
62
62
|
(**THEN**); chain extra conditions with **AND**. Keywords are uppercase so they parse
|
|
63
63
|
unambiguously. A scenario missing either half isn't falsifiable.
|
|
64
64
|
|
|
65
|
-
## Behavior first
|
|
65
|
+
## Behavior first: WHAT, not HOW
|
|
66
66
|
|
|
67
67
|
A spec requirement describes observable behavior, not the implementation that delivers it
|
|
68
|
-
(the spec stays technology-agnostic
|
|
68
|
+
(the spec stays technology-agnostic: see `rite-spec/reference/spec-template.md`). "**THEN**
|
|
69
69
|
respond 401" is behavior; "**THEN** call `AuthGuard.reject()`" leaks the design and locks the
|
|
70
70
|
plan before `$rite-define` has chosen it. Name the input, the observable output, and the state
|
|
71
|
-
change
|
|
71
|
+
change, not the function, class, or library. Implementation belongs in `plan.md`, not the
|
|
72
72
|
requirement.
|
|
73
73
|
|
|
74
74
|
Acceptance criteria are **surface-anchored**: they observe the outermost surface the user or
|
|
@@ -80,10 +80,10 @@ support proof, but they are not the criterion unless the spec's surface is expli
|
|
|
80
80
|
|
|
81
81
|
- **`AC-###` ids nest inside scenarios.** Tag each scenario's checkable line with an `AC-###` id
|
|
82
82
|
exactly as the flat form does. The same `devrites-engine check-acceptance` grades it against `seal.md` at
|
|
83
|
-
the end of the lifecycle
|
|
83
|
+
the end of the lifecycle. This grammar checks the requirement's **shape**, that script
|
|
84
84
|
checks its **proof**. The two compose; neither replaces the other.
|
|
85
85
|
- **`$rite-prove` and `$rite-review` get concrete hooks.** Each scenario is one behavior to
|
|
86
|
-
prove and the test analyst's unit of "is this
|
|
86
|
+
prove and the test analyst's unit of "is this covered": the WHEN/THEN maps
|
|
87
87
|
straight to an arrange/assert ([`testing.md`](testing.md)).
|
|
88
88
|
- **The spec-quality checklists still apply.** The grammar makes a requirement *parseable*; the
|
|
89
89
|
`checklists/<domain>.md` "unit tests for English" still score whether it's *complete and
|
|
@@ -92,8 +92,8 @@ support proof, but they are not the criterion unless the spec's surface is expli
|
|
|
92
92
|
## Outcome metrics are not acceptance criteria
|
|
93
93
|
|
|
94
94
|
A **buildable** acceptance criterion names an observable behavior a slice delivers and a test
|
|
95
|
-
proves
|
|
96
|
-
**outcome metric** names a post-launch business result
|
|
95
|
+
proves: "export returns a CSV with a header row", "a token past 15m is rejected with 401". An
|
|
96
|
+
**outcome metric** names a post-launch business result: "reduce support tickets 50%", "lift
|
|
97
97
|
signup conversion 3pts", "cut p95 latency in prod under real traffic". The distinction is not
|
|
98
98
|
pedantic: it decides what the coverage gate is allowed to check.
|
|
99
99
|
|
|
@@ -109,16 +109,16 @@ a separate **`## Success metrics`** heading:
|
|
|
109
109
|
```
|
|
110
110
|
|
|
111
111
|
Why the split earns its place: an outcome metric tagged `AC-###` poisons the coverage gate in
|
|
112
|
-
both directions. `devrites-engine analyze` flags it CRITICAL forever
|
|
112
|
+
both directions. `devrites-engine analyze` flags it CRITICAL forever: no slice can `Satisfies:` a KPI:
|
|
113
113
|
so a genuinely complete plan reads as uncovered. And `devrites-engine check-acceptance` can never mark it
|
|
114
114
|
proven at `$rite-seal`, because no end-to-end test run inside the feature observes a quarter of
|
|
115
|
-
production traffic. The metric still matters
|
|
115
|
+
production traffic. The metric still matters (it's *why* the feature exists) but it belongs to
|
|
116
116
|
intent (`brief.md` / `spec.md` overview), not to the criteria the lifecycle mechanically proves.
|
|
117
117
|
The load-bearing test: **can one slice make this true and one test show it?** If no, it's a
|
|
118
118
|
success metric, not an acceptance criterion. (`analyze` scopes its coverage count to `AC-###`
|
|
119
119
|
ids, so an untagged `## Success metrics` line is correctly ignored by the gate.)
|
|
120
120
|
|
|
121
|
-
## The validator
|
|
121
|
+
## The validator: `devrites-engine spec-validate`
|
|
122
122
|
|
|
123
123
|
Deterministic, zero-token. Run it on the workspace (or a spec path) at the spec readiness gate:
|
|
124
124
|
|
|
@@ -126,18 +126,18 @@ Deterministic, zero-token. Run it on the workspace (or a spec path) at the spec
|
|
|
126
126
|
devrites-engine spec-validate .devrites/work/<slug>
|
|
127
127
|
```
|
|
128
128
|
|
|
129
|
-
Exit codes: `0` valid (or no structured requirements
|
|
129
|
+
Exit codes: `0` valid (or no structured requirements: nothing to lint), `1` grammar
|
|
130
130
|
violation(s) with `file:line` locations, `2` usage, `5` missing `spec.md`. A non-zero exit is a
|
|
131
131
|
blocking spec-readiness failure: fix the requirement, never soften the check. It runs as part
|
|
132
132
|
of `$rite-spec`'s readiness gate and is safe to re-run any time the spec changes.
|
|
133
133
|
|
|
134
|
-
## Delta form
|
|
134
|
+
## Delta form: when the capability ledger already holds this behavior
|
|
135
135
|
|
|
136
|
-
The Requirement / Scenario block is the unit the **capability ledger** stores
|
|
136
|
+
The Requirement / Scenario block is the unit the **capability ledger** stores: the living
|
|
137
137
|
`.devrites/specs/<capability>/spec.md` record of *what the system does now*, folded in on ship
|
|
138
138
|
([ledger reference](../../../rite-ship/reference/ledger.md)). When a feature changes behavior a
|
|
139
139
|
ledger already describes, write its spec as **deltas against the ledger** instead of a flat
|
|
140
|
-
snapshot, so the change
|
|
140
|
+
snapshot, so the change (not merely the end state) is explicit and the fold is unambiguous.
|
|
141
141
|
|
|
142
142
|
Group the structured `### Requirement:` blocks under three H2 sections, each tagged with the
|
|
143
143
|
capability it folds into. One feature spec MAY carry deltas across several capabilities:
|
|
@@ -158,22 +158,22 @@ The system SHALL default to the OS colour-scheme on first load.
|
|
|
158
158
|
Removed — superseded by system-preference detection.
|
|
159
159
|
```
|
|
160
160
|
|
|
161
|
-
Fold semantics on `devrites-engine ledger sync
|
|
161
|
+
Fold semantics on `devrites-engine ledger sync`. **ADDED** appends, **MODIFIED** replaces the
|
|
162
162
|
same-named requirement, **REMOVED** deletes it. Matching is by **header identity** (the rule
|
|
163
163
|
above: names are unique and a rename is a remove + add), so the section MUST use the exact ledger
|
|
164
164
|
header text for MODIFIED / REMOVED.
|
|
165
165
|
|
|
166
166
|
- **The `— capability: <name>` suffix is the fold target.** Omit it and the fold defaults to the
|
|
167
|
-
feature slug
|
|
167
|
+
feature slug: correct for a single-capability feature; name it explicitly when a feature spans
|
|
168
168
|
more than one, or when the capability differs from the slug.
|
|
169
169
|
- **Pick the kind against the current ledger, not from memory.** `devrites-engine ledger show
|
|
170
170
|
<capability>` prints what it holds. A real change marked ADDED yields two competing
|
|
171
171
|
requirements; new behavior marked MODIFIED has nothing to replace.
|
|
172
|
-
- **Greenfield stays flat.** A capability with no ledger entry is all-new
|
|
172
|
+
- **Greenfield stays flat.** A capability with no ledger entry is all-new: write plain
|
|
173
173
|
`### Requirement:` blocks with no delta H2; the first `ledger sync` seeds the capability as if
|
|
174
174
|
every block were ADDED. Never pay delta ceremony for behavior that has no prior record.
|
|
175
175
|
|
|
176
|
-
Validate the classification deterministically at the spec gate
|
|
176
|
+
Validate the classification deterministically at the spec gate: `--against` points the linter at
|
|
177
177
|
the ledger root so it flags an ADDED that already exists or a MODIFIED/REMOVED that doesn't:
|
|
178
178
|
|
|
179
179
|
```bash
|
|
@@ -181,5 +181,5 @@ devrites-engine spec-validate .devrites/work/<slug> --against .devrites/specs
|
|
|
181
181
|
```
|
|
182
182
|
|
|
183
183
|
Exit `1` on a mismatch (a blocking spec-readiness failure); `0` when the deltas reconcile. The
|
|
184
|
-
plain-grammar checks (SHALL, WHEN/THEN, unique headers) run in the same pass
|
|
184
|
+
plain-grammar checks (SHALL, WHEN/THEN, unique headers) run in the same pass: delta H2 headers
|
|
185
185
|
are transparent to them, so a flat spec and a delta spec lint identically.
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
# Testing
|
|
2
2
|
|
|
3
|
-
Tests are evidence. They exist to prove behavior and to catch regressions
|
|
3
|
+
Tests are evidence. They exist to prove behavior and to catch regressions, not to hit a
|
|
4
4
|
coverage number.
|
|
5
5
|
|
|
6
6
|
## Shape: a pyramid
|
|
7
7
|
- **Many** fast, isolated unit tests at the base.
|
|
8
|
-
- **Some** integration tests for how components
|
|
8
|
+
- **Some** integration tests for how components fit together.
|
|
9
9
|
- **Few** end-to-end tests for critical user journeys (they're slow and the most
|
|
10
|
-
flake-prone
|
|
10
|
+
flake-prone: reserve them for what matters).
|
|
11
11
|
|
|
12
|
-
Size by **resource cost**, not by folder. A **small** test runs in one process, no I/O
|
|
12
|
+
Size by **resource cost**, not by folder. A **small** test runs in one process, no I/O: the
|
|
13
13
|
base of the pyramid, and the only size allowed to be many. A **medium** test touches the local
|
|
14
14
|
machine (filesystem, a container, `localhost`). A **large** test crosses the network or a real
|
|
15
|
-
external service
|
|
15
|
+
external service: the flaky, slow tier E2E lives in. Push every behavior to the smallest size
|
|
16
16
|
that can still prove it; a behavior provable small but written large is a slow test you'll
|
|
17
17
|
learn to skip.
|
|
18
18
|
|
|
19
|
-
## Completeness
|
|
19
|
+
## Completeness: every behavior, element, and flow has a test (at the right level)
|
|
20
20
|
"Tested" means *every* observable behavior, *every* interactive element (input field,
|
|
21
21
|
checkbox, radio, select, toggle, button, actionable link), and *every* user flow has at
|
|
22
|
-
least one **asserting** test
|
|
22
|
+
least one **asserting** test, not that a coverage % is hit. Completeness counts behaviors
|
|
23
23
|
covered, not lines executed: 100% line coverage can still leave a button's click untested,
|
|
24
24
|
and a button with one asserting unit test is "covered" at far less than 100% lines. Chase the
|
|
25
25
|
behavior, not the number.
|
|
@@ -27,97 +27,97 @@ behavior, not the number.
|
|
|
27
27
|
Acceptance and tests are **surface-anchored**: assert the outermost surface the intent names. If the feature promised an API response, assert the API response; a database row behind it is supporting evidence, not proof.
|
|
28
28
|
|
|
29
29
|
Put each test at the level that proves it cheapest and most reliably (the pyramid above):
|
|
30
|
-
- **Element / field behavior
|
|
30
|
+
- **Element / field behavior:** validation, required, format, min/max, toggle on→off, select
|
|
31
31
|
options load + change fires, button enabled/disabled, handler runs → a **unit / component**
|
|
32
32
|
test. The bulk of element coverage lives here.
|
|
33
|
-
- **Wiring across a few components
|
|
34
|
-
- **A critical end-to-end journey
|
|
33
|
+
- **Wiring across a few components:** form submit → store → re-render → an **integration** test.
|
|
34
|
+
- **A critical end-to-end journey:** login, checkout, a destructive / data-loss path → **one
|
|
35
35
|
E2E** test. E2E is slow + flake-prone; reserve it for journeys, **never one-per-field**.
|
|
36
36
|
|
|
37
|
-
An interactive element or a user flow with **zero asserting test is a defect
|
|
37
|
+
An interactive element or a user flow with **zero asserting test is a defect**: surfaced as an
|
|
38
38
|
unproven gap at `$rite-prove` and a NO-GO at `$rite-seal`, the same standing as an unproven
|
|
39
39
|
acceptance criterion. Assert what the element *does*, not that the markup exists.
|
|
40
40
|
|
|
41
|
-
## Assertion strength
|
|
41
|
+
## Assertion strength: a test that can't fail proves nothing
|
|
42
42
|
Completeness counts tests; strength makes them mean something. A test that passes for *any*
|
|
43
|
-
implementation is theatre
|
|
43
|
+
implementation is theatre, and it's the shape AI reaches for by default. Reject the weak forms:
|
|
44
44
|
|
|
45
45
|
- **No tautological assertions.** `expect(result).toBeDefined()` / `.not.toBeNull()` /
|
|
46
46
|
`assert x is not None` pass for almost any return value. Assert the **actual value or
|
|
47
|
-
observable effect
|
|
47
|
+
observable effect**: `expect(total).toBe(42)`, the specific error thrown, the state changed,
|
|
48
48
|
the row written, the event emitted.
|
|
49
49
|
- **Don't assert the mock.** A test that stubs a dependency to return `X` then asserts `X` came
|
|
50
50
|
back tests the stub, not your code. Assert the real effect on real (or realistic) data.
|
|
51
51
|
- **Cover the unhappy edges, not just the happy path.** AI is strong on "valid input → success"
|
|
52
|
-
and weak on empty / boundary / invalid-state / long-or-weird input
|
|
52
|
+
and weak on empty / boundary / invalid-state / long-or-weird input: write those explicitly.
|
|
53
53
|
- **Prove it can fail (fault injection).** For a critical or regression path, after green,
|
|
54
54
|
**break the code on purpose** (flip a comparison, drop a guard, return a constant) and confirm
|
|
55
|
-
the test goes **red**. A test never seen failing against broken code is unproven
|
|
55
|
+
the test goes **red**. A test never seen failing against broken code is unproven. This is
|
|
56
56
|
"see it fail first" extended past the happy path. Use the project's **mutation-testing** runner
|
|
57
57
|
to automate it where one exists; otherwise spot-check the criticals by hand.
|
|
58
58
|
- **Don't mirror the implementation.** A test whose assertions restate the code under test
|
|
59
59
|
(same constant, same formula, same branch) stays green even when the logic is wrong. Assert
|
|
60
|
-
an **independently-derived** expected value
|
|
60
|
+
an **independently-derived** expected value: reasoned from the spec, not copied from the code.
|
|
61
61
|
- **Don't grep the source.** A test that reads a source file as text and asserts it
|
|
62
|
-
`contains("foo")` proves a string exists, not that the behavior works
|
|
62
|
+
`contains("foo")` proves a string exists, not that the behavior works. It passes on dead code
|
|
63
63
|
and breaks on a harmless rename. **Execute** the code and assert its effect; reserve text
|
|
64
64
|
scanning for genuinely textual artifacts (generated output, a committed manifest, a golden snapshot).
|
|
65
65
|
- **Coverage says "ran"; mutation says "checked".** Line coverage proves a line executed, not
|
|
66
66
|
that a test would catch it breaking. Where the project has a mutation runner, the changed-files
|
|
67
67
|
mutation gate (`devrites-engine mutation-gate`) certifies the suite would fail on a wrong implementation; a
|
|
68
|
-
surviving mutant is a behaviour no test
|
|
68
|
+
surviving mutant is a behaviour no test checks.
|
|
69
69
|
|
|
70
70
|
## Never weaken a failing test (test integrity)
|
|
71
71
|
A failing test is a signal, not an obstacle. Never delete it, skip it (`it.skip`, `xit`,
|
|
72
72
|
`@pytest.mark.skip`, `t.Skip`, `#[ignore]`), mark it `xfail`, narrow the run with `.only`, or
|
|
73
73
|
loosen its assertions to turn the suite green. A red test means one of two things: the code is
|
|
74
74
|
wrong (fix the code) or the test is wrong (surface it as a blocking question and get the change
|
|
75
|
-
agreed)
|
|
75
|
+
agreed): never quietly make the red go away. A test weakened to clear a gate is a **Critical**
|
|
76
76
|
finding; `devrites-engine test-integrity` diffs the test files against the slice base and exits non-zero when
|
|
77
77
|
one is deleted, skipped, or loses assertions.
|
|
78
78
|
|
|
79
|
-
## The verification gap
|
|
79
|
+
## The verification gap: green, but the test doesn't prove the change
|
|
80
80
|
Test-integrity catches reaching green by *weakening* a test. This catches the quieter failure: a
|
|
81
81
|
test that was never touched, is fully green, and still doesn't exercise the behavior that changed.
|
|
82
|
-
A passing suite is not proof the *change* is proven
|
|
82
|
+
A passing suite is not proof the *change* is proven: the suite could pass identically with the
|
|
83
83
|
change reverted. Run this trace for each behavioral change in the diff:
|
|
84
84
|
|
|
85
85
|
1. **Screen for behavioral change.** What in this diff changes an observable output, not just its
|
|
86
|
-
shape? Treat a dependency bump, a build/config edit, or a data change as behavioral too
|
|
86
|
+
shape? Treat a dependency bump, a build/config edit, or a data change as behavioral too: the
|
|
87
87
|
load-bearing change often isn't the line that looks important.
|
|
88
88
|
2. **Name what changed.** State the old behavior and the new one in one sentence each.
|
|
89
|
-
3. **Trace to the consumer.** Find where the changed code is
|
|
89
|
+
3. **Trace to the consumer.** Find where the changed code is called from.
|
|
90
90
|
4. **Inspect the consumer's test.** Does an *asserting*, surface-anchored test drive that consumer through the
|
|
91
|
-
**new** behavior
|
|
91
|
+
**new** behavior, not merely execute the path, and not assert the old expectation still?
|
|
92
92
|
5. **Confirm the gap is real.** A finding is: `<change at file:line>` has no test that would go red
|
|
93
|
-
if it regressed
|
|
93
|
+
if it regressed: cite the test that *should* cover it and show what it misses. No general
|
|
94
94
|
advice; a gap you can't point at is not a finding (the verification gate applies).
|
|
95
95
|
|
|
96
|
-
A changed behavior with no test that would fail on its regression is an **unproven gap
|
|
96
|
+
A changed behavior with no test that would fail on its regression is an **unproven gap**: the same
|
|
97
97
|
standing as an untested element or an unproven acceptance criterion. `devrites-engine test-integrity`
|
|
98
98
|
emits an advisory when a diff changes source but touches no test file; that signal is a pointer to
|
|
99
99
|
run this trace, never a verdict on its own.
|
|
100
100
|
|
|
101
101
|
## Test behavior, not implementation
|
|
102
|
-
- Assert on observable behavior and public interfaces, not private internals
|
|
102
|
+
- Assert on observable behavior and public interfaces, not private internals, so a
|
|
103
103
|
refactor that preserves behavior keeps tests green.
|
|
104
104
|
- One behavior per test; name the test for the behavior. A failure should point straight
|
|
105
105
|
at what broke.
|
|
106
106
|
- Cover the unhappy paths: empty, boundary, error, permission-denied, and concurrency
|
|
107
|
-
cases
|
|
107
|
+
cases, not just the happy path.
|
|
108
108
|
- **Test state, not interactions.** Assert the outcome (the value returned, the row written,
|
|
109
109
|
the event emitted), not the sequence of internal calls that produced it. A test that asserts
|
|
110
110
|
"method X was called then Y" locks in today's implementation and breaks on every refactor.
|
|
111
111
|
|
|
112
112
|
## DAMP over DRY in tests
|
|
113
113
|
Test code optimizes for a different reader than production code: someone staring at a failure who
|
|
114
|
-
needs the whole scenario in front of them. A test should read like a spec
|
|
114
|
+
needs the whole scenario in front of them. A test should read like a spec: arrange, act, assert,
|
|
115
115
|
visible in one screen. Prefer a little repetition over a clever shared helper that hides what the
|
|
116
|
-
test
|
|
117
|
-
here. (This trades against production `coding-style.md` reuse-first on purpose
|
|
116
|
+
test exercises; **D**escriptive **A**nd **M**eaningful **P**hrases beat **D**on't **R**epeat **Y**ourself
|
|
117
|
+
here. (This trades against production `coding-style.md` reuse-first on purpose: a shared fixture
|
|
118
118
|
that makes the reader scroll away to understand the case has cost more than the duplication saved.)
|
|
119
119
|
|
|
120
|
-
## Test doubles
|
|
120
|
+
## Test doubles: reach for the real thing first
|
|
121
121
|
Prefer, in order: **real > fake > stub > mock**. Use the real collaborator when it's fast and
|
|
122
122
|
deterministic; a **fake** (an in-memory implementation that honors the contract) when it isn't; a
|
|
123
123
|
**stub** for a canned return; a **mock** (asserting *how* it was called) only at a true boundary
|
|
@@ -130,8 +130,8 @@ breaks, because it tested the stubs, not the code (see "Don't assert the mock" a
|
|
|
130
130
|
| A third-party API or paid/rate-limited service | Your own internal utilities and transforms |
|
|
131
131
|
| Anything non-deterministic or slow | Validation and mapping under test |
|
|
132
132
|
|
|
133
|
-
## The Beyoncé Rule
|
|
134
|
-
A refactor, a dependency bump, or CI is not responsible for catching your regressions
|
|
133
|
+
## The Beyoncé Rule: if you liked it, you should have put a test on it
|
|
134
|
+
A refactor, a dependency bump, or CI is not responsible for catching your regressions: your tests
|
|
135
135
|
are. If a behavior matters, it has an asserting test that goes red when the behavior breaks;
|
|
136
136
|
otherwise the next person to touch the area is free to break it and every gate will stay green.
|
|
137
137
|
"It worked when I ran it" is not the same as "a test holds it." This is the completeness bar above,
|
|
@@ -141,7 +141,7 @@ stated as the rule you'll quote when a untested behavior regresses.
|
|
|
141
141
|
For new behavior, watch the test fail for the *expected* reason before you make it pass.
|
|
142
142
|
A green test you never saw red proves nothing.
|
|
143
143
|
|
|
144
|
-
## Determinism
|
|
144
|
+
## Determinism: no flaky tests
|
|
145
145
|
- A flaky test is a broken test. Isolate and fix it immediately; don't paper over it with
|
|
146
146
|
retries or `sleep`.
|
|
147
147
|
- Mock/stub external services so tests are predictable and fast. Use stable selectors in
|
|
@@ -150,13 +150,13 @@ A green test you never saw red proves nothing.
|
|
|
150
150
|
- **Seam the clock; never read it raw in a tested path.** Route wall-clock reads through one
|
|
151
151
|
injectable seam (an env override like `DEVRITES_NOW`, or an injected clock) so time/date-derived
|
|
152
152
|
output is pinned in tests. A raw `time.Now()` feeding output makes a golden snapshot rot at the
|
|
153
|
-
next day boundary
|
|
154
|
-
next-qid` did exactly this until the seam landed
|
|
153
|
+
next day boundary: green today, red tomorrow, for no code change. (Live example: `resolve
|
|
154
|
+
next-qid` did exactly this until the seam landed: see ADR-0006.)
|
|
155
155
|
- **No elapsed-time assertions.** `assert elapsed < 200ms` / `took` under a threshold tests the
|
|
156
|
-
CI runner's load, not your code
|
|
156
|
+
CI runner's load, not your code: flaky by construction. Assert the *result*, not the duration;
|
|
157
157
|
for ordering or concurrency use a deterministic signal (a fake clock, a channel), never a `sleep`.
|
|
158
158
|
|
|
159
159
|
## Use the project's tooling
|
|
160
160
|
Run the project's existing test commands and framework. Don't introduce a new test runner
|
|
161
|
-
to prove one change. If a project has no tests, propose the minimal setup
|
|
161
|
+
to prove one change. If a project has no tests, propose the minimal setup: ask before
|
|
162
162
|
adding a framework.
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
# Optional tooling
|
|
1
|
+
# Optional tooling: code intelligence, docs, memory
|
|
2
2
|
|
|
3
3
|
Every external tool DevRites can use is **optional**. Detect what's present, use the best fit
|
|
4
4
|
for the job, and **degrade gracefully to `Read` / `Grep` / `Glob`** (always available) when
|
|
5
5
|
nothing is. Never assume a tool is installed, never require installing one to run a phase, and
|
|
6
|
-
never block on a missing tool
|
|
6
|
+
never block on a missing tool: the fallback path is a first-class path, not a failure.
|
|
7
7
|
|
|
8
8
|
DevRites is stack-agnostic and installs into arbitrary projects; an index or MCP server that
|
|
9
9
|
exists in one repo is absent in the next. Treat the tools below as accelerators you reach for
|
|
10
10
|
*when available*, not dependencies.
|
|
11
11
|
|
|
12
|
-
## Code intelligence
|
|
12
|
+
## Code intelligence: structure, placement, callers, impact, blast-radius, trace
|
|
13
13
|
|
|
14
14
|
For "where is X / what calls X / what would changing X break / how does X reach Y", reach for a
|
|
15
15
|
code-intelligence index when available. The three indexes below are **recommended, not
|
|
16
|
-
mandatory
|
|
16
|
+
mandatory**: follow this order and skip any that isn't installed:
|
|
17
17
|
|
|
18
|
-
1. **codebase-memory-mcp
|
|
18
|
+
1. **codebase-memory-mcp: primary.** When available, answer the structural question here
|
|
19
19
|
**first**: `search_graph`, `trace_path`, `detect_changes` (git-diff → affected symbols +
|
|
20
20
|
blast radius), `get_architecture`, `get_code_snippet`, `query_graph`.
|
|
21
21
|
2. **Cross-verify with codegraph *and* graphify (both, when present).** Re-ask the same
|
|
22
22
|
structural question of `codegraph` (`.codegraph/`, `codegraph_*`) **and** `graphify`
|
|
23
|
-
(`graphify-out/`), and confirm they agree with the codebase-memory-mcp answer
|
|
23
|
+
(`graphify-out/`), and confirm they agree with the codebase-memory-mcp answer, especially
|
|
24
24
|
for load-bearing claims (blast radius, every caller of a thing you're about to change,
|
|
25
25
|
"nothing else uses this"). A disagreement between indexes is a signal, not noise: trust a
|
|
26
26
|
fresh read of the **live code** over any index, and investigate the gap before relying on it.
|
|
27
|
-
3. **Standard methods
|
|
28
|
-
present
|
|
27
|
+
3. **Standard methods: the always-available fallback.** When none of the three indexes is
|
|
28
|
+
present (or to pin an exact reference an index is unsure of) use **LSP** (Claude Code Code
|
|
29
29
|
Intelligence: go-to-definition, find-references, hover / signature, diagnostics, document &
|
|
30
30
|
workspace symbols) plus **`Read` / `Grep` / `Glob`**, reading comprehensively rather than
|
|
31
31
|
stopping at the first match (see `core.md` rule 1).
|
|
32
32
|
|
|
33
33
|
Use whatever subset is installed: codebase-memory-mcp alone is fine; codebase-memory-mcp plus
|
|
34
34
|
one of the others still cross-verifies; none present → standard methods. The fallback path is a
|
|
35
|
-
first-class path
|
|
35
|
+
first-class path: never block a phase on a missing index.
|
|
36
36
|
|
|
37
37
|
### Keeping the indexes fresh
|
|
38
38
|
|
|
39
39
|
An index only helps if it matches the live code; after edits, a stale graph manufactures the
|
|
40
40
|
very index-disagreement step 2 treats as a signal. DevRites keeps the three mechanical indexes
|
|
41
|
-
current automatically
|
|
41
|
+
current automatically: the [`devrites-refresh-indexes`](../../../devrites-refresh-indexes/SKILL.md)
|
|
42
42
|
Stop hook incrementally reindexes whichever of codebase-memory-mcp, codegraph, and graphify
|
|
43
43
|
track the repo, at end of turn, in a detached process. It self-guards on changes, no-ops when no
|
|
44
|
-
index is present, and is disabled by `DEVRITES_REFRESH_INDEXES=off`.
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
index is present, and is disabled by `DEVRITES_REFRESH_INDEXES=off`. Use that skill to force a
|
|
45
|
+
synchronous refresh or rerun graphify's semantic pass after **doc** changes
|
|
46
|
+
(`/graphify --update`). Still trust a fresh read of the live code over any index when they disagree.
|
|
47
47
|
|
|
48
|
-
## Up-to-date library / framework docs
|
|
48
|
+
## Up-to-date library / framework docs: context7
|
|
49
49
|
|
|
50
50
|
When implementing against, choosing, or verifying an **external** library/framework whose
|
|
51
51
|
current API or version behaviour matters, use **context7 if available**: `resolve-library-id`
|
|
@@ -53,45 +53,45 @@ current API or version behaviour matters, use **context7 if available**: `resolv
|
|
|
53
53
|
|
|
54
54
|
context7 pairs with [`devrites-source-driven`](../../../devrites-source-driven/SKILL.md), it
|
|
55
55
|
doesn't replace it: the project's **installed / pinned source still wins** for the version the
|
|
56
|
-
project
|
|
56
|
+
project runs. Reach for context7 when the local source/docs are missing, or when you
|
|
57
57
|
need the *current upstream* behaviour the installed copy may predate. Record the fact + its
|
|
58
|
-
source in `decisions.md` / `evidence.md` the same way
|
|
58
|
+
source in `decisions.md` / `evidence.md` the same way: a context7 lookup is a cited source,
|
|
59
59
|
not a memory.
|
|
60
60
|
|
|
61
|
-
## Up-to-date web facts
|
|
61
|
+
## Up-to-date web facts: web search
|
|
62
62
|
|
|
63
63
|
When a **material decision** turns on a fact neither the codebase nor the installed docs can
|
|
64
|
-
answer
|
|
65
|
-
products solve it, a pricing/compatibility fact
|
|
64
|
+
answer: a common UX pattern, a standard/spec, a prevailing best practice, how comparable
|
|
65
|
+
products solve it, a pricing/compatibility fact: **search the web if a search tool is
|
|
66
66
|
available**, and fold the finding into the option you present the human (below). Order of
|
|
67
67
|
preference: **brave MCP is the primary** (`mcp__brave-search__brave_web_search`, or
|
|
68
68
|
`brave_local_search` for place/region queries); **fall back to the harness's native web search
|
|
69
|
-
only when brave MCP is unavailable
|
|
69
|
+
only when brave MCP is unavailable**. Claude Code `WebSearch` / `WebFetch`, Codex `web_search`
|
|
70
70
|
(`--search` / `web_search = "live"` for fresh pages; its default `"cached"` mode serves an
|
|
71
71
|
OpenAI-indexed snapshot); else skip and log the open question. A web fact is a **cited source**,
|
|
72
|
-
not a memory
|
|
72
|
+
not a memory: record the claim + its URL in `decisions.md` (or the option's rationale) exactly as
|
|
73
73
|
a context7 lookup is recorded.
|
|
74
74
|
|
|
75
75
|
Graceful degradation is the rule: no search tool present is a first-class path, never a
|
|
76
|
-
blocker. Search to *inform the human's decision*, not to replace it
|
|
76
|
+
blocker. Search to *inform the human's decision*, not to replace it: the finding sharpens the
|
|
77
77
|
recommended option and its trade-off; the human still picks.
|
|
78
78
|
|
|
79
79
|
**Re-fetching a doc URL is cheap.** On Claude Code a `WebFetch` is transparently cached per project
|
|
80
|
-
and, on reuse, revalidated against the origin
|
|
80
|
+
and, on reuse, revalidated against the origin: the cached reading is replayed **only** on an HTTP
|
|
81
81
|
304 (unchanged), so a citation stays as sound as a fresh fetch without the round trip. Fetch freely;
|
|
82
82
|
don't skip a verification to save a request. Mechanism: the `devrites-source-cache` hooks
|
|
83
83
|
(`DEVRITES_SOURCE_CACHE=off` to disable); it pairs with
|
|
84
|
-
[`devrites-source-driven`](../../../devrites-source-driven/SKILL.md). (Claude-only
|
|
84
|
+
[`devrites-source-driven`](../../../devrites-source-driven/SKILL.md). (Claude-only. Codex has no
|
|
85
85
|
`WebFetch` tool to intercept, and its `web_search` already serves from a cached index, so the same
|
|
86
86
|
caching is built in there.)
|
|
87
87
|
|
|
88
|
-
## Architecture & decision memory
|
|
88
|
+
## Architecture & decision memory: codebase-memory-mcp
|
|
89
89
|
|
|
90
90
|
Where a fast codebase map or a durable decision record helps, and codebase-memory-mcp is
|
|
91
91
|
available: `get_architecture` for an overview (languages, packages, routes, hotspots, clusters)
|
|
92
92
|
during `$rite-spec`, `$rite-define`, or `$rite-zoom-out`; `manage_adr` for an ADR-style record
|
|
93
93
|
at `$rite-define` / `$rite-seal`. This complements the workspace `decisions.md`; it never
|
|
94
|
-
replaces it
|
|
94
|
+
replaces it: the workspace files remain the canonical source of truth.
|
|
95
95
|
|
|
96
96
|
## Output hygiene
|
|
97
97
|
|
|
@@ -10,13 +10,13 @@ This is the Codex mirror of a DevRites skill. In Codex:
|
|
|
10
10
|
|
|
11
11
|
- Load DevRites engineering standards from `.agents/skills/devrites-lib/reference/standards/`. Read `.agents/skills/devrites-lib/reference/standards/core.md` before workflow work, then load the other `.agents/skills/devrites-lib/reference/standards/*.md` files exactly when this skill asks for them.
|
|
12
12
|
- Use the installed `devrites-engine` binary as the canonical runtime helper surface for orientation, gates, and state mutation.
|
|
13
|
-
- When this skill asks for a DevRites specialist or writer agent, **explicitly** spawn the matching Codex custom agent from `.codex/agents/devrites-*.toml` through Codex subagents (`spawn_agent`), then wait for its result and reconcile it as the skill instructs. Do not do the review inline just because the instruction to spawn is embedded here
|
|
14
|
-
- The independence of a fresh-context subagent is the point. If Codex genuinely cannot spawn subagents in the current surface, run the documented inline fallback and **label the result an inline fallback, not an independent review
|
|
13
|
+
- When this skill asks for a DevRites specialist or writer agent, **explicitly** spawn the matching Codex custom agent from `.codex/agents/devrites-*.toml` through Codex subagents (`spawn_agent`), then wait for its result and reconcile it as the skill instructs. Do not do the review inline just because the instruction to spawn is embedded here: Codex under-fires embedded spawn/skill instructions (openai/codex #23496), so treat the spawn as required, not optional.
|
|
14
|
+
- The independence of a fresh-context subagent is the point. If Codex genuinely cannot spawn subagents in the current surface, run the documented inline fallback and **label the result an inline fallback, not an independent review**: an inline pass shares the calling context and is weaker evidence.
|
|
15
15
|
- Codex project hooks are installed in `.codex/hooks.json`. Review and trust them with `/hooks` before relying on hook enforcement.
|
|
16
|
-
- When this skill asks a HITL question via `AskUserQuestion`: Codex's equivalent (`request_user_input`) exists only in Plan mode. Outside Plan mode, render the option set as a plain numbered list in chat and **end the turn** so the human answers
|
|
16
|
+
- When this skill asks a HITL question via `AskUserQuestion`: Codex's equivalent (`request_user_input`) exists only in Plan mode. Outside Plan mode, render the option set as a plain numbered list in chat and **end the turn** so the human answers: NEVER silently pick an option yourself; auto-picking is AFK's contract, gated by the `.devrites/AFK` sentinel.
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
# devrites-prose-craft
|
|
19
|
+
# devrites-prose-craft: prose that reads human
|
|
20
20
|
|
|
21
21
|
Write for a teammate who will rely on the result. Remove model-shaped filler without sanding
|
|
22
22
|
off the author's voice or weakening technical content.
|
|
@@ -26,15 +26,15 @@ off the author's voice or weakening technical content.
|
|
|
26
26
|
`$rite-define` / `$rite-plan` (plan narrative), `$rite-temper` / `$rite-vet` (review prose),
|
|
27
27
|
`$rite-review` / `$rite-seal` (findings + verdict prose), `$rite-ship` (commit/PR body),
|
|
28
28
|
`devrites-doubt` / `rite-handoff` (notes).
|
|
29
|
-
- Any phase composes a substantive **user-facing reply
|
|
30
|
-
|
|
29
|
+
- Any phase composes a substantive **user-facing reply**. Deterministic progress footers are
|
|
30
|
+
script-rendered and exact by design.
|
|
31
31
|
- `$rite-polish` Phase 1 as the **catch** pass on prose that slipped through at write time.
|
|
32
32
|
|
|
33
33
|
## Two modes
|
|
34
34
|
- **Rewrite (default).** When DevRites writes the artifact/reply or polishes it, fix the prose
|
|
35
35
|
in place.
|
|
36
|
-
- **Detect-only.** When auditing prose you shouldn't silently change
|
|
37
|
-
`spec.md` at `$rite-adopt
|
|
36
|
+
- **Detect-only.** When auditing prose you shouldn't silently change, such as a user's existing
|
|
37
|
+
`spec.md` at `$rite-adopt` or text under `$rite-review`, list the tells with quotes and leave
|
|
38
38
|
the text untouched. Mirrors `devrites-audit`'s read-only stance.
|
|
39
39
|
|
|
40
40
|
Order findings by severity: **P0** credibility-killers (vague attribution, a marketing
|
|
@@ -10,16 +10,16 @@ This is the Codex mirror of a DevRites skill. In Codex:
|
|
|
10
10
|
|
|
11
11
|
- Load DevRites engineering standards from `.agents/skills/devrites-lib/reference/standards/`. Read `.agents/skills/devrites-lib/reference/standards/core.md` before workflow work, then load the other `.agents/skills/devrites-lib/reference/standards/*.md` files exactly when this skill asks for them.
|
|
12
12
|
- Use the installed `devrites-engine` binary as the canonical runtime helper surface for orientation, gates, and state mutation.
|
|
13
|
-
- When this skill asks for a DevRites specialist or writer agent, **explicitly** spawn the matching Codex custom agent from `.codex/agents/devrites-*.toml` through Codex subagents (`spawn_agent`), then wait for its result and reconcile it as the skill instructs. Do not do the review inline just because the instruction to spawn is embedded here
|
|
14
|
-
- The independence of a fresh-context subagent is the point. If Codex genuinely cannot spawn subagents in the current surface, run the documented inline fallback and **label the result an inline fallback, not an independent review
|
|
13
|
+
- When this skill asks for a DevRites specialist or writer agent, **explicitly** spawn the matching Codex custom agent from `.codex/agents/devrites-*.toml` through Codex subagents (`spawn_agent`), then wait for its result and reconcile it as the skill instructs. Do not do the review inline just because the instruction to spawn is embedded here: Codex under-fires embedded spawn/skill instructions (openai/codex #23496), so treat the spawn as required, not optional.
|
|
14
|
+
- The independence of a fresh-context subagent is the point. If Codex genuinely cannot spawn subagents in the current surface, run the documented inline fallback and **label the result an inline fallback, not an independent review**: an inline pass shares the calling context and is weaker evidence.
|
|
15
15
|
- Codex project hooks are installed in `.codex/hooks.json`. Review and trust them with `/hooks` before relying on hook enforcement.
|
|
16
|
-
- When this skill asks a HITL question via `AskUserQuestion`: Codex's equivalent (`request_user_input`) exists only in Plan mode. Outside Plan mode, render the option set as a plain numbered list in chat and **end the turn** so the human answers
|
|
16
|
+
- When this skill asks a HITL question via `AskUserQuestion`: Codex's equivalent (`request_user_input`) exists only in Plan mode. Outside Plan mode, render the option set as a plain numbered list in chat and **end the turn** so the human answers: NEVER silently pick an option yourself; auto-picking is AFK's contract, gated by the `.devrites/AFK` sentinel.
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
# devrites-refresh-indexes
|
|
19
|
+
# devrites-refresh-indexes: keep the code-intelligence indexes fresh
|
|
20
20
|
|
|
21
21
|
`tooling.md` says to cross-verify structural claims across codebase-memory-mcp, codegraph, and
|
|
22
|
-
graphify, and that **a disagreement between indexes is a signal
|
|
22
|
+
graphify, and that **a disagreement between indexes is a signal**: a fresh read of live code
|
|
23
23
|
beats any index. A *stale* index manufactures exactly that disagreement. This keeps the three
|
|
24
24
|
mechanical indexes current after edits so the next lookup is trustworthy.
|
|
25
25
|
|
|
@@ -33,7 +33,7 @@ anything, never blocks. Same incremental shape for all three; no LLM needed for
|
|
|
33
33
|
| **codegraph** | `.codegraph/` exists + `codegraph` on PATH | `codegraph sync` |
|
|
34
34
|
| **graphify** | `graphify-out/` exists + `graphify` on PATH | `graphify update .` |
|
|
35
35
|
|
|
36
|
-
## Automatic (already wired
|
|
36
|
+
## Automatic (already wired: no action needed)
|
|
37
37
|
|
|
38
38
|
The `Stop` hook `devrites-engine hook refresh-indexes` runs at end of turn. It self-guards: exits
|
|
39
39
|
instantly unless an index tracks the repo, exits instantly if no source file changed since the
|
|
@@ -42,7 +42,7 @@ ON by default; disable with `DEVRITES_REFRESH_INDEXES=off`.
|
|
|
42
42
|
|
|
43
43
|
## Manual / thorough refresh (this skill)
|
|
44
44
|
|
|
45
|
-
Force a synchronous refresh now and print the report
|
|
45
|
+
Force a synchronous refresh now and print the report: resolve the hook across install layouts:
|
|
46
46
|
|
|
47
47
|
```bash
|
|
48
48
|
devrites-engine hook refresh-indexes --force .
|
|
@@ -58,6 +58,6 @@ Then the one case the hook can't cover:
|
|
|
58
58
|
- codegraph and codebase-memory-mcp each have their own background watcher; the explicit
|
|
59
59
|
reindex is the belt-and-suspenders fallback for when a watcher isn't running. graphify has no
|
|
60
60
|
default watcher, so this is its primary freshness path.
|
|
61
|
-
- The index lags writes by ~1s after a refresh
|
|
62
|
-
- Output hygiene (`prose-style.md`): don't name these tools to the user
|
|
61
|
+
- The index lags writes by ~1s after a refresh: don't re-query in the same instant you edit.
|
|
62
|
+
- Output hygiene (`prose-style.md`): don't name these tools to the user: say what changed
|
|
63
63
|
("re-indexed the edited files"), not which tool did it.
|