devrites 3.0.5 → 3.0.7
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 +21 -0
- package/README.md +282 -533
- package/SECURITY.md +26 -26
- package/docs/adr/README.md +7 -9
- package/docs/agents/domain.md +5 -5
- package/docs/agents/issue-driven-rites.md +1 -1
- package/docs/agents/issue-tracker.md +1 -1
- package/docs/agents/triage-labels.md +2 -2
- package/docs/architecture.md +45 -45
- package/docs/cli.md +11 -11
- package/docs/command-map.md +33 -33
- package/docs/engine/agent-contract.md +6 -6
- package/docs/engine/commands.md +66 -65
- package/docs/engine/state-schema.md +15 -15
- package/docs/engine/workspace-schema.md +7 -7
- package/docs/extensions.md +17 -17
- package/docs/flow.md +17 -17
- package/docs/harness-compliance.md +2 -2
- package/docs/orchestration.md +21 -20
- package/docs/release.md +22 -5
- package/docs/research/go-authoritative-workflow-schema-and-quality-2026-07-20.md +3 -3
- package/docs/skills.md +77 -52
- package/docs/usage.md +33 -32
- 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 +95 -24
- package/engine/internal/install/install_test.go +111 -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 +5 -5
- 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/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 +18 -18
- 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/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 +10 -10
- 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 +7 -7
- package/pack/.claude/skills/rite/reference/menu.md +6 -6
- package/pack/.claude/skills/rite-adopt/SKILL.md +15 -15
- 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 +18 -18
- 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/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 +10 -10
- 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 +7 -7
- package/pack/generated/claude/skills/rite/reference/menu.md +6 -6
- package/pack/generated/claude/skills/rite-adopt/SKILL.md +15 -15
- 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 +21 -21
- 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/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 +10 -10
- 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 +10 -10
- package/pack/generated/codex/skills/rite/reference/menu.md +6 -6
- package/pack/generated/codex/skills/rite-adopt/SKILL.md +18 -18
- 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 +7 -8
- 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,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
|
|
|
@@ -4,7 +4,7 @@ description: Humanize prose without losing technical content. Use when asked to
|
|
|
4
4
|
user-invocable: false
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
# devrites-prose-craft
|
|
7
|
+
# devrites-prose-craft: prose that reads human
|
|
8
8
|
|
|
9
9
|
Write for a teammate who will rely on the result. Remove model-shaped filler without sanding
|
|
10
10
|
off the author's voice or weakening technical content.
|
|
@@ -14,15 +14,15 @@ off the author's voice or weakening technical content.
|
|
|
14
14
|
`/rite-define` / `/rite-plan` (plan narrative), `/rite-temper` / `/rite-vet` (review prose),
|
|
15
15
|
`/rite-review` / `/rite-seal` (findings + verdict prose), `/rite-ship` (commit/PR body),
|
|
16
16
|
`devrites-doubt` / `rite-handoff` (notes).
|
|
17
|
-
- Any phase composes a substantive **user-facing reply
|
|
18
|
-
|
|
17
|
+
- Any phase composes a substantive **user-facing reply**. Deterministic progress footers are
|
|
18
|
+
script-rendered and exact by design.
|
|
19
19
|
- `/rite-polish` Phase 1 as the **catch** pass on prose that slipped through at write time.
|
|
20
20
|
|
|
21
21
|
## Two modes
|
|
22
22
|
- **Rewrite (default).** When DevRites writes the artifact/reply or polishes it, fix the prose
|
|
23
23
|
in place.
|
|
24
|
-
- **Detect-only.** When auditing prose you shouldn't silently change
|
|
25
|
-
`spec.md` at `/rite-adopt
|
|
24
|
+
- **Detect-only.** When auditing prose you shouldn't silently change, such as a user's existing
|
|
25
|
+
`spec.md` at `/rite-adopt` or text under `/rite-review`, list the tells with quotes and leave
|
|
26
26
|
the text untouched. Mirrors `devrites-audit`'s read-only stance.
|
|
27
27
|
|
|
28
28
|
Order findings by severity: **P0** credibility-killers (vague attribution, a marketing
|
|
@@ -4,10 +4,10 @@ description: Refresh stale optional indexes. Use when structural lookup disagree
|
|
|
4
4
|
user-invocable: false
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
# devrites-refresh-indexes
|
|
7
|
+
# devrites-refresh-indexes: keep the code-intelligence indexes fresh
|
|
8
8
|
|
|
9
9
|
`tooling.md` says to cross-verify structural claims across codebase-memory-mcp, codegraph, and
|
|
10
|
-
graphify, and that **a disagreement between indexes is a signal
|
|
10
|
+
graphify, and that **a disagreement between indexes is a signal**: a fresh read of live code
|
|
11
11
|
beats any index. A *stale* index manufactures exactly that disagreement. This keeps the three
|
|
12
12
|
mechanical indexes current after edits so the next lookup is trustworthy.
|
|
13
13
|
|
|
@@ -21,7 +21,7 @@ anything, never blocks. Same incremental shape for all three; no LLM needed for
|
|
|
21
21
|
| **codegraph** | `.codegraph/` exists + `codegraph` on PATH | `codegraph sync` |
|
|
22
22
|
| **graphify** | `graphify-out/` exists + `graphify` on PATH | `graphify update .` |
|
|
23
23
|
|
|
24
|
-
## Automatic (already wired
|
|
24
|
+
## Automatic (already wired: no action needed)
|
|
25
25
|
|
|
26
26
|
The `Stop` hook `devrites-engine hook refresh-indexes` runs at end of turn. It self-guards: exits
|
|
27
27
|
instantly unless an index tracks the repo, exits instantly if no source file changed since the
|
|
@@ -30,7 +30,7 @@ ON by default; disable with `DEVRITES_REFRESH_INDEXES=off`.
|
|
|
30
30
|
|
|
31
31
|
## Manual / thorough refresh (this skill)
|
|
32
32
|
|
|
33
|
-
Force a synchronous refresh now and print the report
|
|
33
|
+
Force a synchronous refresh now and print the report: resolve the hook across install layouts:
|
|
34
34
|
|
|
35
35
|
```bash
|
|
36
36
|
devrites-engine hook refresh-indexes --force .
|
|
@@ -46,6 +46,6 @@ Then the one case the hook can't cover:
|
|
|
46
46
|
- codegraph and codebase-memory-mcp each have their own background watcher; the explicit
|
|
47
47
|
reindex is the belt-and-suspenders fallback for when a watcher isn't running. graphify has no
|
|
48
48
|
default watcher, so this is its primary freshness path.
|
|
49
|
-
- The index lags writes by ~1s after a refresh
|
|
50
|
-
- Output hygiene (`prose-style.md`): don't name these tools to the user
|
|
49
|
+
- The index lags writes by ~1s after a refresh: don't re-query in the same instant you edit.
|
|
50
|
+
- Output hygiene (`prose-style.md`): don't name these tools to the user: say what changed
|
|
51
51
|
("re-indexed the edited files"), not which tool did it.
|
|
@@ -4,7 +4,7 @@ description: Verify uncertain framework/library behavior against official docs o
|
|
|
4
4
|
user-invocable: false
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
# devrites-source-driven
|
|
7
|
+
# devrites-source-driven: verify, don't guess
|
|
8
8
|
|
|
9
9
|
A confident wrong assumption about a library is a bug waiting to ship. When behavior
|
|
10
10
|
matters and isn't certain, check the source of truth.
|
|
@@ -17,35 +17,35 @@ matters and isn't certain, check the source of truth.
|
|
|
17
17
|
- An error message points at framework behavior you don't fully understand.
|
|
18
18
|
|
|
19
19
|
## How
|
|
20
|
-
1. **Find the version** the project
|
|
20
|
+
1. **Find the version** the project uses (lockfile, manifest): behavior is
|
|
21
21
|
version-specific.
|
|
22
22
|
2. **Consult the source of truth**, in order: the installed package's own source/types
|
|
23
23
|
in `node_modules`/gem/site-packages; context7 if available (`resolve-library-id` →
|
|
24
24
|
`query-docs`) for current upstream docs; official docs for *that version*; the project's
|
|
25
25
|
existing usage of the same API.
|
|
26
|
-
3. **Confirm the specific fact
|
|
26
|
+
3. **Confirm the specific fact:** the signature, the default, the edge behavior, not a
|
|
27
27
|
general impression.
|
|
28
28
|
4. **Record it** in `decisions.md` (or `evidence.md`): the fact, the version, and the
|
|
29
29
|
source (path or URL). Future phases trust the record instead of re-checking.
|
|
30
30
|
|
|
31
31
|
## Delegate reading legwork bigger than one fact
|
|
32
|
-
When the question is an *area*, not a fact
|
|
33
|
-
subsystem's docs, a migration guide
|
|
32
|
+
When the question is an *area*, not a fact (surveying a library's API surface, an unfamiliar
|
|
33
|
+
subsystem's docs, a migration guide) dispatch a **background agent** instead of reading inline:
|
|
34
34
|
it investigates against the same source-of-truth order above, cites each claim (path or URL +
|
|
35
35
|
version), and writes one note to the active workspace's `references/` directory, linked from
|
|
36
36
|
`references.md`. You keep working while it reads; later phases trust the cited note. The inline
|
|
37
37
|
flow above stays the path for confirming a single fact.
|
|
38
38
|
|
|
39
39
|
## Rules
|
|
40
|
-
- Prefer the **installed** source over remembered docs
|
|
40
|
+
- Prefer the **installed** source over remembered docs. It can't be out of date.
|
|
41
41
|
- Quote the exact relevant detail; don't paraphrase a behavior into something convenient.
|
|
42
|
-
- If the doc/source contradicts the plan, that's a **Spec Drift Guard** event
|
|
42
|
+
- If the doc/source contradicts the plan, that's a **Spec Drift Guard** event: stop and
|
|
43
43
|
handle it.
|
|
44
44
|
- Don't rabbit-hole: confirm the one fact you need, record it, return.
|
|
45
45
|
|
|
46
46
|
## Re-fetching is cheap (and still fresh)
|
|
47
47
|
Fetching the same doc URL twice costs almost nothing: on Claude Code a WebFetch is transparently
|
|
48
|
-
cached per project and, on reuse, revalidated against the origin
|
|
48
|
+
cached per project and, on reuse, revalidated against the origin: the cached reading is replayed **only**
|
|
49
49
|
when the server confirms the page is unchanged (HTTP 304). A 304 is a fresh verification, not a
|
|
50
50
|
memory read, so citing a revalidated page is as sound as re-fetching it. Fetch freely; don't
|
|
51
51
|
skip a check to save a round trip. (Mechanism: the `devrites-source-cache` hooks; off via
|
|
@@ -4,10 +4,10 @@ description: Plan UX/UI before code: design direction, design brief, visual dire
|
|
|
4
4
|
user-invocable: false
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
# devrites-ux-shape
|
|
7
|
+
# devrites-ux-shape: plan the UX/UI before code
|
|
8
8
|
|
|
9
9
|
Decide what the UI *is* and how it should look and behave **before** code, and write it to
|
|
10
|
-
the feature's `design-brief.md
|
|
10
|
+
the feature's `design-brief.md`: the contract the build (`devrites-frontend-craft`),
|
|
11
11
|
polish, and seal all check against. This is "shape before code" raised to a **feature-level
|
|
12
12
|
artifact**: produced once at spec time, refined per slice. It is **woven into the
|
|
13
13
|
lifecycle** (`/rite-spec` calls it when UI is detected; `/rite-build` refines it), not a
|
|
@@ -18,59 +18,59 @@ separate phase the user runs.
|
|
|
18
18
|
(`../rite-build/reference/frontend-trigger.md`). Output: `design-brief.md` + a
|
|
19
19
|
confirmation pause.
|
|
20
20
|
- `/rite-build` / `devrites-frontend-craft` read the brief as the **build target** and
|
|
21
|
-
refine it for the slice's surface
|
|
21
|
+
refine it for the slice's surface. They don't re-derive it.
|
|
22
22
|
- Skip entirely for backend / data / CLI / infra-only features.
|
|
23
23
|
|
|
24
|
-
## 1. Foundation
|
|
24
|
+
## 1. Foundation: discover, don't impose
|
|
25
25
|
Reuse what's there first. Read the design system + register and any references the spec
|
|
26
26
|
gathered:
|
|
27
27
|
- Design system + register (tokens, components, type, spacing, neighbors; brand-vs-product)
|
|
28
28
|
→ `../devrites-frontend-craft/reference/design-references.md`.
|
|
29
|
-
- `PRODUCT.md` / `DESIGN.md` / `CLAUDE.md` if present
|
|
29
|
+
- `PRODUCT.md` / `DESIGN.md` / `CLAUDE.md` if present: anchors that reduce questions.
|
|
30
30
|
`DESIGN.md` is the project's **rolled-up design memory** (tokens, calibration baseline,
|
|
31
31
|
proven component behaviors) earlier features sealed via `../rite-ship/reference/design-memory.md`;
|
|
32
|
-
treat it as the inherited system
|
|
33
|
-
- `references.md` + `references
|
|
32
|
+
treat it as the inherited system: read it before re-discovering, depart only on signal.
|
|
33
|
+
- `references.md` + `references/`: the screenshots / Figma / video / links the human
|
|
34
34
|
supplied. Honor each recorded role: **target** = fidelity contract, **constraint** =
|
|
35
35
|
required rule, **inspiration** = extract only the cited principle.
|
|
36
36
|
|
|
37
|
-
## 2. Discovery
|
|
38
|
-
Understand the feature deeply enough to make excellent design calls
|
|
37
|
+
## 2. Discovery: one round, assert-then-confirm
|
|
38
|
+
Understand the feature deeply enough to make excellent design calls: **no code, no
|
|
39
39
|
markup**. Use the `devrites-interview` cadence: 2-3 questions per round, best-guess
|
|
40
40
|
attached, stop when answers converge. One round is the default; add a second only for
|
|
41
41
|
material gaps. When `PRODUCT.md` + the spec already pin an answer, **assert it and ask to
|
|
42
|
-
confirm** ("reads as Restrained
|
|
43
|
-
- **Purpose & user
|
|
44
|
-
- **Content & data
|
|
42
|
+
confirm** ("reads as Restrained: confirm?"), don't offer a four-option menu. Cover:
|
|
43
|
+
- **Purpose & user:** who, in what state of mind (rushed / exploring / anxious / focused).
|
|
44
|
+
- **Content & data:** realistic ranges (0 / typical / many), dynamic content, real
|
|
45
45
|
media/assets the surface needs.
|
|
46
|
-
- **Preserve + anti-goals
|
|
46
|
+
- **Preserve + anti-goals:** identity, IA, behavior, content voice, SEO/analytics hooks,
|
|
47
47
|
existing accessibility wins, or assets that must survive; what this must NOT become;
|
|
48
48
|
the biggest risk of getting it wrong.
|
|
49
49
|
|
|
50
|
-
## 3. Design direction
|
|
50
|
+
## 3. Design direction: the direction set (commit, don't hedge)
|
|
51
51
|
One deliberate visual decision on five fronts, each anchored in an existing reference so
|
|
52
52
|
the call is checkable, not taste:
|
|
53
|
-
- **Scene sentence
|
|
53
|
+
- **Scene sentence:** who / where / ambient light / mood, per
|
|
54
54
|
`../devrites-frontend-craft/reference/design-references.md`. Forces dark-vs-light and
|
|
55
55
|
tone from the scene, not the category.
|
|
56
|
-
- **Color strategy
|
|
56
|
+
- **Color strategy:** Restrained / Committed / Multi-role / Saturated, per the
|
|
57
57
|
color-commitment table in `../devrites-frontend-craft/reference/quality-standards.md`.
|
|
58
58
|
Pick from the scene; register doesn't decide it.
|
|
59
|
-
- **Calibration
|
|
59
|
+
- **Calibration:** density (Airy / Balanced / Dense) and motion (Minimal / Standard /
|
|
60
60
|
Expressive), per the calibration table in the same quality-standards file. Set both from
|
|
61
61
|
the scene so the build targets a calibration, not a guess (a 2am SRE → Dense + Minimal; a
|
|
62
62
|
launch hero → Airy + Expressive).
|
|
63
|
-
- **Named anchor references
|
|
63
|
+
- **Named anchor references:** 2-3 *specific* products / brands / objects to steer toward
|
|
64
64
|
(not adjectives like "modern" or "clean"), plus the saved `references/` files.
|
|
65
|
-
- **Visual thesis
|
|
65
|
+
- **Visual thesis:** the focal point and hierarchy in one sentence, plus one memorable
|
|
66
66
|
move (or `none — system continuity`) and the obvious-but-wrong direction rejected. This
|
|
67
67
|
creates intentional distinction without forcing novelty into product UI.
|
|
68
68
|
|
|
69
69
|
Respect the existing identity (default, ~90%); depart only on an explicit signal.
|
|
70
70
|
|
|
71
|
-
## 4. Scope
|
|
71
|
+
## 4. Scope: task-scoped, never persisted
|
|
72
72
|
Name the output target so sketch-vs-ship isn't guessed: **fidelity** (sketch / mid-fi /
|
|
73
|
-
high-fi / production
|
|
73
|
+
high-fi / production. DevRites default is production), **breadth** (one screen / a flow /
|
|
74
74
|
a surface), **interactivity**, **time intent**. These ride in the brief only; they do not
|
|
75
75
|
change the project's design system, and never get written to `PRODUCT.md` / `DESIGN.md`.
|
|
76
76
|
|
|
@@ -79,33 +79,33 @@ List every state the feature needs and what the user must see/feel in each (defa
|
|
|
79
79
|
loading initial+subsequent, empty→next-action, error→recovery, success, disabled/
|
|
80
80
|
no-permission, long-content/overflow), the information hierarchy (what's seen 1st / 2nd /
|
|
81
81
|
3rd; primary action unmistakable), responsive reflow, a11y must-haves, and the interaction
|
|
82
|
-
model (inline vs navigated vs
|
|
82
|
+
model (inline vs navigated vs (rarely) modal; optimistic vs pending; feedback). Name the
|
|
83
83
|
representative states, viewports, input modes, and target R-ids that will prove the result;
|
|
84
84
|
"looks polished" is not a proof target. Canonical state list:
|
|
85
85
|
`../devrites-frontend-craft/reference/shape.md`.
|
|
86
86
|
|
|
87
|
-
## 6. Visual-direction probe
|
|
87
|
+
## 6. Visual-direction probe: capability-gated
|
|
88
88
|
When the work is net-new or directionally ambiguous and fidelity ≥ mid-fi, pressure-test
|
|
89
|
-
the lane with something concrete instead of words
|
|
89
|
+
the lane with something concrete instead of words: pull Figma context, generate image
|
|
90
90
|
probes, screenshot reference sites, or route a code-fidelity question to `/rite-prototype`.
|
|
91
91
|
**Capability-gated**: announce the skip in one line if no tool is available. Flow:
|
|
92
92
|
[reference/visual-direction-probe.md](reference/visual-direction-probe.md).
|
|
93
93
|
|
|
94
94
|
## 7. AI-slop pre-check
|
|
95
95
|
Run the two-altitude category-reflex check (`../rite-polish/reference/anti-ai-slop.md`) on
|
|
96
|
-
the chosen direction *before* writing the brief
|
|
96
|
+
the chosen direction *before* writing the brief, if the palette/theme is guessable from
|
|
97
97
|
the category, rework the scene sentence and color strategy. Cheaper to catch the slop in
|
|
98
98
|
the brief than in the build.
|
|
99
99
|
|
|
100
100
|
## 8. Write the brief + gate
|
|
101
|
-
Write `design-brief.md` ([reference/brief-template.md](reference/brief-template.md))
|
|
101
|
+
Write `design-brief.md` ([reference/brief-template.md](reference/brief-template.md)):
|
|
102
102
|
**compact** (3-5 bullets) when discovery was crisp, **full** when the surface is ambiguous
|
|
103
103
|
or multi-screen. Don't pad a clear brief to look thorough; don't skip the pause to look
|
|
104
104
|
fast. Then honor the run mode (`../devrites-lib/reference/standards/afk-hitl.md`):
|
|
105
|
-
- **HITL
|
|
105
|
+
- **HITL:** present the brief and **STOP for explicit confirmation**. The pause is the
|
|
106
106
|
point: shape ends at the user's "go", not at your own certainty. Disagreement → revisit
|
|
107
107
|
the relevant discovery question.
|
|
108
|
-
- **AFK
|
|
108
|
+
- **AFK:** assert the best-guess direction, record it in `decisions.md` + an advisory
|
|
109
109
|
`questions.md` entry, and proceed. A direction touching the irreversible-risk list still
|
|
110
110
|
pauses.
|
|
111
111
|
|
|
@@ -124,11 +124,11 @@ Next: /rite-define (UI slices map to the brief's states) — or /rite-build refi
|
|
|
124
124
|
```
|
|
125
125
|
|
|
126
126
|
## NEVER (ux-shape)
|
|
127
|
-
- Never write code, markup, or a component here
|
|
127
|
+
- Never write code, markup, or a component here: produce the thinking, not the UI.
|
|
128
128
|
- Never finalize the brief without naming the **primary action** and the **full state set**
|
|
129
129
|
(not just the happy path).
|
|
130
|
-
- Never decide visual direction by taste when the project has a system
|
|
131
|
-
- Never treat an **inspiration** reference as a fidelity target
|
|
132
|
-
- Never skip the HITL confirmation pause "because the brief is obviously right"
|
|
130
|
+
- Never decide visual direction by taste when the project has a system: discover first.
|
|
131
|
+
- Never treat an **inspiration** reference as a fidelity target: honor its recorded role.
|
|
132
|
+
- Never skip the HITL confirmation pause "because the brief is obviously right": ask once,
|
|
133
133
|
wait.
|
|
134
|
-
- Never re-derive the brief from scratch in `/rite-build
|
|
134
|
+
- Never re-derive the brief from scratch in `/rite-build`: refine the existing one.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# `design-brief.md` template
|
|
1
|
+
# `design-brief.md` template: the UX/UI contract
|
|
2
2
|
|
|
3
3
|
The feature-level design decision, produced **before** code by `devrites-ux-shape` (at
|
|
4
4
|
`/rite-spec` when UI is detected) and the **target** the build, polish, and seal check
|
|
@@ -97,12 +97,12 @@ Genuinely unresolved only. If you'd write "Recommend: X", decide X instead.
|
|
|
97
97
|
```
|
|
98
98
|
|
|
99
99
|
## How downstream phases use it
|
|
100
|
-
- `/rite-define
|
|
100
|
+
- `/rite-define`: UI slices map to the **Key states**, **Interaction model**, and **Proof
|
|
101
101
|
targets**; each UI slice names the visual acceptance it proves.
|
|
102
|
-
- `/rite-build` + `devrites-frontend-craft
|
|
102
|
+
- `/rite-build` + `devrites-frontend-craft`: build **to** the brief; refine per slice;
|
|
103
103
|
append refinements above instead of re-deriving.
|
|
104
|
-
- `/rite-prove` + `browser-evidence.md
|
|
104
|
+
- `/rite-prove` + `browser-evidence.md`: render the proof targets, compare against the
|
|
105
105
|
brief + target references, and close material deltas.
|
|
106
|
-
- `/rite-polish
|
|
107
|
-
- `/rite-seal` + `devrites-frontend-reviewer
|
|
106
|
+
- `/rite-polish`: Phase 4 reads the brief so polish honors the agreed direction.
|
|
107
|
+
- `/rite-seal` + `devrites-frontend-reviewer`: check the UI matches the brief (states
|
|
108
108
|
covered, direction held, references matched).
|