devrites 5.10.1 → 5.11.0
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 +13 -0
- package/README.md +24 -10
- package/bin/devrites.mjs +2 -0
- package/docs/cli.md +4 -1
- package/docs/command-map.md +7 -5
- package/docs/engine/commands.md +7 -5
- package/docs/orchestration.md +5 -2
- package/docs/skills.md +10 -4
- package/docs/usage.md +3 -1
- package/engine/commands.go +3 -0
- package/engine/help.go +190 -0
- package/engine/help_test.go +98 -0
- package/engine/internal/devritespaths/paths.go +2 -0
- package/engine/internal/hostpack/hostpack.go +39 -5
- package/engine/internal/hostpack/hostpack_test.go +27 -13
- package/engine/internal/install/apply.go +17 -4
- package/engine/internal/install/install.go +9 -2
- package/engine/internal/install/install_test.go +15 -2
- package/engine/internal/install/preflight.go +8 -2
- package/engine/internal/install/update.go +1 -1
- package/engine/internal/parallel/cli.go +90 -32
- package/engine/internal/parallel/cli_test.go +32 -0
- package/engine/main.go +15 -8
- package/engine/root_routing_test.go +4 -0
- package/install.sh +4 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +15 -8
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +10 -5
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +12 -7
- package/pack/.claude/skills/rite-build/SKILL.md +3 -1
- package/pack/.claude/skills/rite-build/reference/afk-discipline.md +4 -3
- package/pack/.claude/skills/rite-build/reference/parallel-batch.md +3 -1
- package/pack/.claude/skills/rite-define/reference/plan-template.md +1 -1
- package/pack/generated/README.md +4 -2
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +15 -8
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +10 -5
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +12 -7
- package/pack/generated/claude/skills/rite-build/SKILL.md +3 -1
- package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +4 -3
- package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +3 -1
- package/pack/generated/claude/skills/rite-define/reference/plan-template.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +15 -8
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +10 -5
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +12 -7
- package/pack/generated/codex/skills/rite-build/SKILL.md +3 -1
- package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +4 -3
- package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +3 -1
- package/pack/generated/codex/skills/rite-define/reference/plan-template.md +1 -1
- package/pack/generated/devin/AGENTS.md +23 -0
- package/pack/generated/devin/agents/devrites-code-reviewer.md +145 -0
- package/pack/generated/devin/agents/devrites-devex-reviewer.md +126 -0
- package/pack/generated/devin/agents/devrites-doubt-reviewer.md +91 -0
- package/pack/generated/devin/agents/devrites-evidence-scout.md +77 -0
- package/pack/generated/devin/agents/devrites-frontend-reviewer.md +119 -0
- package/pack/generated/devin/agents/devrites-performance-reviewer.md +117 -0
- package/pack/generated/devin/agents/devrites-plan-drafter.md +102 -0
- package/pack/generated/devin/agents/devrites-plan-reviewer.md +144 -0
- package/pack/generated/devin/agents/devrites-proof-runner.md +76 -0
- package/pack/generated/devin/agents/devrites-retrospector.md +64 -0
- package/pack/generated/devin/agents/devrites-security-auditor.md +112 -0
- package/pack/generated/devin/agents/devrites-simplifier-reviewer.md +97 -0
- package/pack/generated/devin/agents/devrites-slice-wright.md +219 -0
- package/pack/generated/devin/agents/devrites-spec-reviewer.md +99 -0
- package/pack/generated/devin/agents/devrites-strategy-reviewer.md +102 -0
- package/pack/generated/devin/agents/devrites-test-analyst.md +97 -0
- package/pack/generated/devin/agents/devrites-upgrade-planner.md +91 -0
- package/pack/generated/devin/skills/devrites-api-interface/SKILL.md +64 -0
- package/pack/generated/devin/skills/devrites-audit/SKILL.md +51 -0
- package/pack/generated/devin/skills/devrites-browser-proof/SKILL.md +77 -0
- package/pack/generated/devin/skills/devrites-browser-proof/reference/browser-performance.md +15 -0
- package/pack/generated/devin/skills/devrites-browser-proof/reference/visual-verdict.md +34 -0
- package/pack/generated/devin/skills/devrites-debug-recovery/SKILL.md +97 -0
- package/pack/generated/devin/skills/devrites-debug-recovery/reference/build-the-loop.md +58 -0
- package/pack/generated/devin/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +34 -0
- package/pack/generated/devin/skills/devrites-debug-recovery/reference/hypotheses.md +17 -0
- package/pack/generated/devin/skills/devrites-debug-recovery/reference/instrumentation.md +21 -0
- package/pack/generated/devin/skills/devrites-debug-recovery/reference/regression-test.md +30 -0
- package/pack/generated/devin/skills/devrites-debug-recovery/reference/trace.md +25 -0
- package/pack/generated/devin/skills/devrites-doubt/SKILL.md +80 -0
- package/pack/generated/devin/skills/devrites-frontend-craft/SKILL.md +87 -0
- package/pack/generated/devin/skills/devrites-frontend-craft/reference/craft.md +63 -0
- package/pack/generated/devin/skills/devrites-frontend-craft/reference/design-references.md +116 -0
- package/pack/generated/devin/skills/devrites-frontend-craft/reference/fullstack.md +46 -0
- package/pack/generated/devin/skills/devrites-frontend-craft/reference/quality-standards.md +294 -0
- package/pack/generated/devin/skills/devrites-frontend-craft/reference/reuse-first.md +53 -0
- package/pack/generated/devin/skills/devrites-frontend-craft/reference/shape.md +56 -0
- package/pack/generated/devin/skills/devrites-interview/SKILL.md +103 -0
- package/pack/generated/devin/skills/devrites-lib/SKILL.md +57 -0
- package/pack/generated/devin/skills/devrites-lib/reference/candidate-integrity.md +42 -0
- package/pack/generated/devin/skills/devrites-lib/reference/intent-map.md +64 -0
- package/pack/generated/devin/skills/devrites-lib/reference/orchestration-profiles.md +27 -0
- package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +73 -0
- package/pack/generated/devin/skills/devrites-lib/reference/reply-contract.md +88 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/README.md +60 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +30 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +415 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +99 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/anti-patterns.md +48 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/browser-proof-checklist.md +24 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/ci-cd.md +50 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/code-navigation.md +43 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/code-review.md +108 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/coding-style.md +48 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/context-hygiene.md +109 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/core.md +167 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/data-integrity.md +118 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/debug-recovery.md +28 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/definition-of-done.md +19 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/deprecation.md +31 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/developer-experience.md +119 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/development-workflow.md +29 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/documentation.md +43 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/edge-case-trace.md +92 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/elicitation.md +85 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/error-handling.md +47 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/git-workflow.md +49 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/hooks.md +25 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/integration-reliability.md +102 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/loop-operations.md +85 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/observability.md +88 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/one-shot-actions.md +97 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/patterns.md +68 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/performance.md +51 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/principles.md +42 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/prose-style.md +123 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/release/ship-checklist.md +8 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/repository-topology.md +80 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/review-checklist.md +12 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/security-checklist.md +25 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/security.md +202 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/skill-authoring.md +209 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/spec-grammar.md +197 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/test-proof-checklist.md +13 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/testing.md +212 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/tooling.md +92 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/workflow-artifacts.md +427 -0
- package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/code.md +44 -0
- package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/comparison.md +42 -0
- package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/diagram.md +51 -0
- package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/index.md +66 -0
- package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/input.md +46 -0
- package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/outline-template.md +106 -0
- package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/plan.md +48 -0
- package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/slides.md +40 -0
- package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/table.md +42 -0
- package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +267 -0
- package/pack/generated/devin/skills/devrites-prose-craft/SKILL.md +74 -0
- package/pack/generated/devin/skills/devrites-prose-craft/reference/banned-phrases.md +132 -0
- package/pack/generated/devin/skills/devrites-prose-craft/reference/examples.md +131 -0
- package/pack/generated/devin/skills/devrites-prose-craft/reference/structures.md +196 -0
- package/pack/generated/devin/skills/devrites-source-driven/SKILL.md +53 -0
- package/pack/generated/devin/skills/devrites-ux-shape/SKILL.md +135 -0
- package/pack/generated/devin/skills/devrites-ux-shape/reference/brief-template.md +108 -0
- package/pack/generated/devin/skills/devrites-ux-shape/reference/visual-direction-probe.md +48 -0
- package/pack/generated/devin/skills/rite/SKILL.md +148 -0
- package/pack/generated/devin/skills/rite/reference/menu.md +48 -0
- package/pack/generated/devin/skills/rite-adopt/SKILL.md +51 -0
- package/pack/generated/devin/skills/rite-adopt/reference/adoption.md +19 -0
- package/pack/generated/devin/skills/rite-adopt/reference/anti-patterns.md +19 -0
- package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +142 -0
- package/pack/generated/devin/skills/rite-autocomplete/reference/decision-policy.md +43 -0
- package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +151 -0
- package/pack/generated/devin/skills/rite-autocomplete/reference/stop-conditions.md +97 -0
- package/pack/generated/devin/skills/rite-build/SKILL.md +102 -0
- package/pack/generated/devin/skills/rite-build/reference/afk-discipline.md +148 -0
- package/pack/generated/devin/skills/rite-build/reference/anti-patterns.md +27 -0
- package/pack/generated/devin/skills/rite-build/reference/checkpoint-protocol.md +120 -0
- package/pack/generated/devin/skills/rite-build/reference/checkpoint.md +56 -0
- package/pack/generated/devin/skills/rite-build/reference/frontend-trigger.md +39 -0
- package/pack/generated/devin/skills/rite-build/reference/one-slice-cycle.md +51 -0
- package/pack/generated/devin/skills/rite-build/reference/output.md +33 -0
- package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +214 -0
- package/pack/generated/devin/skills/rite-build/reference/phase-contract.md +89 -0
- package/pack/generated/devin/skills/rite-build/reference/spec-drift-guard.md +84 -0
- package/pack/generated/devin/skills/rite-build/reference/tdd.md +27 -0
- package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +96 -0
- package/pack/generated/devin/skills/rite-clarify/SKILL.md +98 -0
- package/pack/generated/devin/skills/rite-clarify/reference/anti-patterns.md +24 -0
- package/pack/generated/devin/skills/rite-clarify/reference/decision-coverage.md +55 -0
- package/pack/generated/devin/skills/rite-converge/SKILL.md +144 -0
- package/pack/generated/devin/skills/rite-converge/reference/anti-patterns.md +35 -0
- package/pack/generated/devin/skills/rite-converge/reference/convergence-assessment.md +65 -0
- package/pack/generated/devin/skills/rite-customize/SKILL.md +60 -0
- package/pack/generated/devin/skills/rite-define/SKILL.md +168 -0
- package/pack/generated/devin/skills/rite-define/reference/anti-patterns.md +26 -0
- package/pack/generated/devin/skills/rite-define/reference/gates.md +159 -0
- package/pack/generated/devin/skills/rite-define/reference/plan-template.md +149 -0
- package/pack/generated/devin/skills/rite-doctor/SKILL.md +68 -0
- package/pack/generated/devin/skills/rite-dogfood/SKILL.md +55 -0
- package/pack/generated/devin/skills/rite-explain/SKILL.md +152 -0
- package/pack/generated/devin/skills/rite-explain/reference/intake.md +89 -0
- package/pack/generated/devin/skills/rite-frame/SKILL.md +114 -0
- package/pack/generated/devin/skills/rite-frame/reference/failure-modes.md +66 -0
- package/pack/generated/devin/skills/rite-handoff/SKILL.md +97 -0
- package/pack/generated/devin/skills/rite-handoff/reference/handoff-template.md +44 -0
- package/pack/generated/devin/skills/rite-learn/SKILL.md +72 -0
- package/pack/generated/devin/skills/rite-plan/SKILL.md +185 -0
- package/pack/generated/devin/skills/rite-plan/reference/anti-patterns.md +34 -0
- package/pack/generated/devin/skills/rite-plan/reference/dependency-graph.md +48 -0
- package/pack/generated/devin/skills/rite-plan/reference/replan-and-repair.md +105 -0
- package/pack/generated/devin/skills/rite-plan/reference/slicing.md +168 -0
- package/pack/generated/devin/skills/rite-plan/reference/task-breakdown.md +42 -0
- package/pack/generated/devin/skills/rite-polish/SKILL.md +105 -0
- package/pack/generated/devin/skills/rite-polish/reference/adr-promotion.md +11 -0
- package/pack/generated/devin/skills/rite-polish/reference/anti-ai-slop.md +187 -0
- package/pack/generated/devin/skills/rite-polish/reference/anti-patterns.md +30 -0
- package/pack/generated/devin/skills/rite-polish/reference/backend-polish.md +80 -0
- package/pack/generated/devin/skills/rite-polish/reference/browser-polish-evidence.md +33 -0
- package/pack/generated/devin/skills/rite-polish/reference/code.md +82 -0
- package/pack/generated/devin/skills/rite-polish/reference/design-memory.md +117 -0
- package/pack/generated/devin/skills/rite-polish/reference/design-system-discovery.md +8 -0
- package/pack/generated/devin/skills/rite-polish/reference/harden-checklist.md +109 -0
- package/pack/generated/devin/skills/rite-polish/reference/ledger.md +65 -0
- package/pack/generated/devin/skills/rite-polish/reference/ui.md +137 -0
- package/pack/generated/devin/skills/rite-pov/SKILL.md +57 -0
- package/pack/generated/devin/skills/rite-pr-feedback/SKILL.md +54 -0
- package/pack/generated/devin/skills/rite-pressure-test/SKILL.md +66 -0
- package/pack/generated/devin/skills/rite-prototype/SKILL.md +104 -0
- package/pack/generated/devin/skills/rite-prove/SKILL.md +122 -0
- package/pack/generated/devin/skills/rite-prove/reference/acceptance-proof.md +88 -0
- package/pack/generated/devin/skills/rite-prove/reference/anti-patterns.md +25 -0
- package/pack/generated/devin/skills/rite-prove/reference/browser-proof.md +51 -0
- package/pack/generated/devin/skills/rite-prove/reference/failure-triage.md +43 -0
- package/pack/generated/devin/skills/rite-prove/reference/proof-ladder.md +28 -0
- package/pack/generated/devin/skills/rite-prove/reference/test-command-discovery.md +30 -0
- package/pack/generated/devin/skills/rite-quick/SKILL.md +81 -0
- package/pack/generated/devin/skills/rite-resolve/SKILL.md +98 -0
- package/pack/generated/devin/skills/rite-resolve/reference/answer-protocol.md +118 -0
- package/pack/generated/devin/skills/rite-review/SKILL.md +171 -0
- package/pack/generated/devin/skills/rite-review/reference/anti-patterns.md +32 -0
- package/pack/generated/devin/skills/rite-review/reference/cognitive-load.md +90 -0
- package/pack/generated/devin/skills/rite-review/reference/feature-scoped-review.md +26 -0
- package/pack/generated/devin/skills/rite-review/reference/five-axis-review.md +66 -0
- package/pack/generated/devin/skills/rite-review/reference/nielsen-heuristics.md +126 -0
- package/pack/generated/devin/skills/rite-review/reference/performance-checklist.md +80 -0
- package/pack/generated/devin/skills/rite-review/reference/performance-review.md +14 -0
- package/pack/generated/devin/skills/rite-review/reference/security-review.md +42 -0
- package/pack/generated/devin/skills/rite-seal/SKILL.md +74 -0
- package/pack/generated/devin/skills/rite-seal/reference/anti-patterns.md +29 -0
- package/pack/generated/devin/skills/rite-seal/reference/final-evidence.md +41 -0
- package/pack/generated/devin/skills/rite-seal/reference/go-no-go.md +29 -0
- package/pack/generated/devin/skills/rite-seal/reference/output.md +5 -0
- package/pack/generated/devin/skills/rite-seal/reference/phase-contract.md +47 -0
- package/pack/generated/devin/skills/rite-seal/reference/risk-and-rollback.md +56 -0
- package/pack/generated/devin/skills/rite-seal/reference/seal-template.md +27 -0
- package/pack/generated/devin/skills/rite-ship/SKILL.md +87 -0
- package/pack/generated/devin/skills/rite-ship/reference/anti-patterns.md +28 -0
- package/pack/generated/devin/skills/rite-ship/reference/close-out.md +68 -0
- package/pack/generated/devin/skills/rite-ship/reference/git-ship.md +120 -0
- package/pack/generated/devin/skills/rite-ship/reference/rollout.md +62 -0
- package/pack/generated/devin/skills/rite-ship/reference/ship-template.md +39 -0
- package/pack/generated/devin/skills/rite-spec/SKILL.md +149 -0
- package/pack/generated/devin/skills/rite-spec/reference/acceptance-criteria.md +31 -0
- package/pack/generated/devin/skills/rite-spec/reference/ai-spec-template.md +40 -0
- package/pack/generated/devin/skills/rite-spec/reference/anti-patterns.md +27 -0
- package/pack/generated/devin/skills/rite-spec/reference/interview-patterns.md +56 -0
- package/pack/generated/devin/skills/rite-spec/reference/investigation.md +83 -0
- package/pack/generated/devin/skills/rite-spec/reference/question-protocol.md +36 -0
- package/pack/generated/devin/skills/rite-spec/reference/references-intake.md +62 -0
- package/pack/generated/devin/skills/rite-spec/reference/spec-checklists.md +89 -0
- package/pack/generated/devin/skills/rite-spec/reference/spec-template.md +154 -0
- package/pack/generated/devin/skills/rite-spec/reference/state-workspace.md +227 -0
- package/pack/generated/devin/skills/rite-status/SKILL.md +57 -0
- package/pack/generated/devin/skills/rite-temper/SKILL.md +129 -0
- package/pack/generated/devin/skills/rite-temper/reference/anti-patterns.md +30 -0
- package/pack/generated/devin/skills/rite-temper/reference/review-dimensions.md +66 -0
- package/pack/generated/devin/skills/rite-temper/reference/scope-modes.md +53 -0
- package/pack/generated/devin/skills/rite-temper/reference/significance.md +46 -0
- package/pack/generated/devin/skills/rite-temper/reference/strategy-template.md +90 -0
- package/pack/generated/devin/skills/rite-upgrade/SKILL.md +121 -0
- package/pack/generated/devin/skills/rite-vet/SKILL.md +192 -0
- package/pack/generated/devin/skills/rite-vet/reference/anti-patterns.md +43 -0
- package/pack/generated/devin/skills/rite-vet/reference/artifacts.md +202 -0
- package/pack/generated/devin/skills/rite-vet/reference/cross-model.md +19 -0
- package/pack/generated/devin/skills/rite-vet/reference/depth.md +59 -0
- package/pack/generated/devin/skills/rite-vet/reference/eng-lenses.md +48 -0
- package/pack/generated/devin/skills/rite-vet/reference/review-axes.md +201 -0
- package/pack/generated/devin/skills/rite-watch-pr/SKILL.md +84 -0
- package/pack/generated/devin/skills/rite-zoom-out/SKILL.md +69 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +15 -8
- package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +10 -5
- package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +12 -7
- package/pack/generated/omp/skills/rite-build/SKILL.md +3 -1
- package/pack/generated/omp/skills/rite-build/reference/afk-discipline.md +4 -3
- package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +3 -1
- package/pack/generated/omp/skills/rite-define/reference/plan-template.md +1 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +15 -8
- package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +10 -5
- package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +12 -7
- package/pack/generated/pi/skills/rite-build/SKILL.md +3 -1
- package/pack/generated/pi/skills/rite-build/reference/afk-discipline.md +4 -3
- package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +3 -1
- package/pack/generated/pi/skills/rite-define/reference/plan-template.md +1 -1
- package/package.json +4 -2
- package/scripts/build-host-artifacts.sh +48 -5
- package/scripts/devin-generate.sh +222 -0
- package/update.sh +2 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# rite-spec: anti-patterns
|
|
2
|
+
|
|
3
|
+
Load this when standing a non-trivial decision in `/rite-spec`, or when the
|
|
4
|
+
agent feels reluctance toward investigation depth, gap-closing, or
|
|
5
|
+
placement decisions.
|
|
6
|
+
|
|
7
|
+
Pack-wide rationalizations + red flags: see [standards/anti-patterns.md](../../devrites-lib/reference/standards/anti-patterns.md).
|
|
8
|
+
|
|
9
|
+
## Phase-specific rationalizations
|
|
10
|
+
|
|
11
|
+
| Excuse | Rebuttal |
|
|
12
|
+
|---|---|
|
|
13
|
+
| "User said *just make it work*: no spec needed." | Vague asks are exactly where `/rite-spec` earns its keep; load `devrites-interview` and ask one question at a time. |
|
|
14
|
+
| "I already understand the request." | Then writing the placement + acceptance criteria takes minutes and saves drift later. Investigation isn't for *you*, it's for `/rite-define`. |
|
|
15
|
+
| "Too small for a spec." | If it's big enough for `/rite-build`, it's big enough for one paragraph of WHAT/WHY + measurable acceptance. |
|
|
16
|
+
| "No design refs were attached, so skip references." | Skip the *gathering*, not the *acknowledgement*. Note "no references provided" in the spec: silence is ambiguous. |
|
|
17
|
+
| "I can resolve gaps as I build." | Drift discovered at slice 3 costs more than 5 questions answered now. |
|
|
18
|
+
| "I'm confident of the answer, so I'll just decide this myself." | Confidence changes the *cost* of the question, not its *owner*. A material decision (scope · placement · data model · UX · security · migration · acceptance) is put to the human as a ranked option set: near-certainty just makes it a one-pick confirm, never a silent decision. |
|
|
19
|
+
| "Presenting options for every gap is over-asking." | Over-asking is many questions at once or asking what the codebase answers. One ranked option set per *material* gap, recommended-first, is the opposite: it hands the human the decision cheaply. Reversible low-impact details you still auto-decide and log. |
|
|
20
|
+
|
|
21
|
+
## Red Flags
|
|
22
|
+
|
|
23
|
+
- About to start writing `spec.md` without a Placement & integration section.
|
|
24
|
+
- Spec has no measurable acceptance criteria: "works as expected" is not measurable.
|
|
25
|
+
- A `[NEEDS CLARIFICATION]` marker remains on a blocking item.
|
|
26
|
+
- Design references were attached but never opened, saved, or indexed in `references.md`.
|
|
27
|
+
- The investigation didn't read the module/component that currently owns this area.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Interview patterns
|
|
2
|
+
|
|
3
|
+
Question ladders by domain. Pull the rung that matches the biggest current unknown.
|
|
4
|
+
Each question still follows the protocol: one at a time, best guess attached.
|
|
5
|
+
|
|
6
|
+
## Vague ask? Map the decision tree first
|
|
7
|
+
For a fuzzy one-liner (`"design a contact page"`, `"add reporting"`), sketch the branches
|
|
8
|
+
the answer splits into, then resolve each **depth-first**: one branch to a decision before
|
|
9
|
+
opening the next:
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
contact page
|
|
13
|
+
├─ purpose? ── sales lead | support request | general
|
|
14
|
+
├─ fields? ── name/email/message | + company/phone | file upload
|
|
15
|
+
├─ on submit? ── email | ticket/CRM | DB row | embedded third-party form
|
|
16
|
+
└─ success? ── inline confirm | redirect | autoresponder
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Once per interview you may **challenge the premise** instead of refining it
|
|
20
|
+
(*"is a form even the right answer, or a mailto / booking link?"*): a good reframe
|
|
21
|
+
collapses whole branches. Then use the domain ladders below for each open branch.
|
|
22
|
+
|
|
23
|
+
## Objective / problem
|
|
24
|
+
- "What does success look like in one sentence?"
|
|
25
|
+
- "Who hits this, how often, and what do they do today instead?"
|
|
26
|
+
- "If we shipped only one thing here, what must it be?"
|
|
27
|
+
|
|
28
|
+
## Scope boundaries
|
|
29
|
+
- "What is explicitly **out** of scope for this first version?"
|
|
30
|
+
- "Is this a new capability or a change to an existing flow?"
|
|
31
|
+
- "What's the smallest version that's still useful?" (→ slice 1)
|
|
32
|
+
|
|
33
|
+
## Data model
|
|
34
|
+
- "What are the core entities and how do they relate?"
|
|
35
|
+
- "What's the source of truth, and can these fields change after creation?"
|
|
36
|
+
- "Any uniqueness, ordering, or soft-delete needs?"
|
|
37
|
+
|
|
38
|
+
## UX / flow
|
|
39
|
+
- "Walk me through the happy path screen by screen."
|
|
40
|
+
- "What are the empty / loading / error / permission-denied states?"
|
|
41
|
+
- "Brand surface (marketing) or product surface (app UI)?" (drives craft)
|
|
42
|
+
|
|
43
|
+
## Integration / external
|
|
44
|
+
- "Which external systems or APIs are involved, and who owns them?"
|
|
45
|
+
- "Sync or async? What happens when the dependency is down?"
|
|
46
|
+
|
|
47
|
+
## Non-functional
|
|
48
|
+
- "Any latency, scale, or volume targets I should design to?"
|
|
49
|
+
- "Auth/permission rules? Anything sensitive (PII, secrets, payments)?"
|
|
50
|
+
|
|
51
|
+
## Acceptance
|
|
52
|
+
- "How will we *prove* this works: what's the test or observation?"
|
|
53
|
+
- "What would make you reject the PR?"
|
|
54
|
+
|
|
55
|
+
## Anti-references (taste)
|
|
56
|
+
- "Show me one thing that does this well, and one that does it badly."
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Investigation before specification
|
|
2
|
+
|
|
3
|
+
Understand the requirement, decide where it belongs, define the outcome, and identify
|
|
4
|
+
every issue and gap. Resolve material gaps with the user before the spec is ready. A
|
|
5
|
+
gap first found during `/rite-build` is a drift event.
|
|
6
|
+
|
|
7
|
+
Use a code-intelligence index if available (see
|
|
8
|
+
`../../devrites-lib/reference/standards/tooling.md`) for structural questions such as
|
|
9
|
+
where code lives, what calls it, and what it could break. With none present, use
|
|
10
|
+
Read/Grep/Glob. When a gap depends on an external fact, such as a standard, UX pattern,
|
|
11
|
+
or comparable product, **search the web if available** (brave MCP preferred;
|
|
12
|
+
`../../devrites-lib/reference/standards/tooling.md`). Cite the finding in the option
|
|
13
|
+
presented to the human.
|
|
14
|
+
|
|
15
|
+
## Check the archive first
|
|
16
|
+
Before external research, check whether the project already shipped related work. Search
|
|
17
|
+
the archive for the feature's key nouns. A hit may indicate an extension, conflict, or
|
|
18
|
+
replacement and provides prior decisions:
|
|
19
|
+
Use native file search over `.devrites/archive/*/{spec,decisions}.md`.
|
|
20
|
+
- **Overlap found** → read the overlapping `spec.md` + its `decisions.md`, then put it to
|
|
21
|
+
the human as a ranked option (*extend the shipped feature* · *this supersedes it* ·
|
|
22
|
+
*genuinely distinct*) same option-set contract as a gap.
|
|
23
|
+
- **No archive / no hit** → skip silently; never block a spec on absent history (the
|
|
24
|
+
brownfield / principles no-op discipline).
|
|
25
|
+
|
|
26
|
+
## Produce these findings (write into spec.md)
|
|
27
|
+
1. **The request and problem:** restate the goal and the problem behind it (people ask
|
|
28
|
+
for "a dashboard" when they want an answer to a question). Who hits it, how often,
|
|
29
|
+
what they do today instead.
|
|
30
|
+
2. **Current behavior:** how it works today, or what's absent. Read the actual code and
|
|
31
|
+
flows; don't assume.
|
|
32
|
+
3. **Placement**
|
|
33
|
+
- Which module / layer / file / component should own this; the right seam.
|
|
34
|
+
- Existing patterns/components/utilities to **extend or reuse** instead of duplicating.
|
|
35
|
+
- **Integration points**: callers and dependents, the data it reads/writes, the
|
|
36
|
+
APIs/events/contracts it touches (interface analysis: how it interacts with the
|
|
37
|
+
rest of the system).
|
|
38
|
+
4. **Outcome:** the result and how to observe it (feeds
|
|
39
|
+
success + acceptance criteria).
|
|
40
|
+
5. **Issues:** conflicts with existing code/UX/data/permissions, constraints, and
|
|
41
|
+
anything that makes the obvious approach wrong. Each issue gets a disposition.
|
|
42
|
+
6. **Gaps:** unknowns, ambiguities, undecided behavior, missing inputs. **Every gap
|
|
43
|
+
becomes a question** (next section).
|
|
44
|
+
7. **Blast radius:** what this change could break (use the code graph's impact/callers).
|
|
45
|
+
Informs risks, test strategy, and rollback.
|
|
46
|
+
8. **Human prerequisites:** credentials, accounts, approval windows, or irreversible
|
|
47
|
+
action-time decisions the acceptance path requires. Separate these from agent-owned
|
|
48
|
+
implementation and diagnostic work.
|
|
49
|
+
|
|
50
|
+
Design/reference materials the human supplies: see [references-intake](references-intake.md).
|
|
51
|
+
|
|
52
|
+
## Gap analysis (present → desired)
|
|
53
|
+
State the present and desired states. Their delta defines the work; unknowns in that
|
|
54
|
+
delta are gaps. Resolve them before `/rite-define`. Mark each gap inline with
|
|
55
|
+
`[NEEDS CLARIFICATION: question]`.
|
|
56
|
+
|
|
57
|
+
## Present gaps and issues as options
|
|
58
|
+
For each material gap or issue that changes scope, placement, data model, UX, security,
|
|
59
|
+
migration risk, or acceptance, **ask the human** one gap at a time with a ranked
|
|
60
|
+
option set with the recommended option **first and marked `(Recommended)`** plus an escape
|
|
61
|
+
hatch (via `AskUserQuestion` in HITL):
|
|
62
|
+
```
|
|
63
|
+
<gap/issue stated in one line>. Why it matters: <...>
|
|
64
|
+
1. <recommended option> (Recommended) — <implication / where it places the work; cite any web/docs finding>
|
|
65
|
+
2. <alternative> — <implication>
|
|
66
|
+
3. <alternative> — <implication>
|
|
67
|
+
4. Something else — I'll describe it
|
|
68
|
+
```
|
|
69
|
+
Investigate and recommend, but do not settle a material decision. High confidence may
|
|
70
|
+
make the answer a one-pick confirmation; it does not change the decision owner.
|
|
71
|
+
Only a **genuinely reversible, low-impact** gap is decided and recorded in `assumptions.md`
|
|
72
|
+
without asking. Full render contract + AFK behaviour: [`afk-hitl.md`](../../devrites-lib/reference/standards/afk-hitl.md).
|
|
73
|
+
|
|
74
|
+
## Done when
|
|
75
|
+
- The shipped archive was checked for prior art; any overlap was surfaced to the human.
|
|
76
|
+
- The problem, current behavior, placement, and outcome are written down.
|
|
77
|
+
- Every issue has a disposition; every material gap is resolved **by a human pick** from its
|
|
78
|
+
option set (or explicitly deferred as non-blocking), not settled silently on your confidence.
|
|
79
|
+
- Every foreseeable build-time human prerequisite is resolved, assigned, or justified as an
|
|
80
|
+
action-time gate; objective repair/retry work is not disguised as a question.
|
|
81
|
+
- No blocking `[NEEDS CLARIFICATION]` remains. The spec covers the gaps found during
|
|
82
|
+
authoring and records correct placement. This is the `/rite-spec` readiness gate
|
|
83
|
+
before `/rite-clarify` performs the systematic topology scan.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Spec question protocol
|
|
2
|
+
|
|
3
|
+
For vague or unknown intent, invoke `devrites-interview` for ordered one-question turns,
|
|
4
|
+
recommendations, option sets, pass limits, reframing, and closure.
|
|
5
|
+
This file owns only Spec-specific coverage and recording. Render through
|
|
6
|
+
[`Option set`](../../devrites-lib/reference/standards/afk-hitl.md#option-set-how-every-gap-is-presented).
|
|
7
|
+
|
|
8
|
+
## Coverage gate: am I done asking?
|
|
9
|
+
Each dimension MUST be **resolved** or **explicitly deferred** (logged, non-blocking),
|
|
10
|
+
never skipped:
|
|
11
|
+
- [ ] **Objective:** one-sentence success + the real problem behind it.
|
|
12
|
+
- [ ] **Scope**: what's in vs explicitly out for v1.
|
|
13
|
+
- [ ] **Data model**: core entities + relationships (or "none").
|
|
14
|
+
- [ ] **UX / flow**: happy path + empty/loading/error/permission states (or "no UI").
|
|
15
|
+
- [ ] **Integration**: external systems/APIs/contracts (or "none").
|
|
16
|
+
- [ ] **Non-functional**: auth, sensitive data, latency/scale (or "n/a").
|
|
17
|
+
- [ ] **Acceptance**: how each requirement is *proven* (test/observation).
|
|
18
|
+
- [ ] **Human prerequisites**: credentials, approval windows, irreversible action-time gates
|
|
19
|
+
(or "none").
|
|
20
|
+
|
|
21
|
+
An agent recommendation is not a user answer. A human-owned material product, scope, UX,
|
|
22
|
+
compatibility, or acceptance choice closes only by the user's option selection, free-form
|
|
23
|
+
answer, or explicit deferral. Packets MAY be bounded; readiness MUST NOT. Rescan and continue
|
|
24
|
+
while blockers remain. If the user stops, keep them blocking and MUST NOT pass `/rite-spec`
|
|
25
|
+
readiness.
|
|
26
|
+
|
|
27
|
+
## Spec question boundary
|
|
28
|
+
- Search code, decisions, authoritative docs before asking discoverable facts.
|
|
29
|
+
- Decide and log agent-owned reversible implementation/test details.
|
|
30
|
+
- Record tooling failures as prerequisites or blockers; never ask the human to authorize repair.
|
|
31
|
+
- Ask only material choices, not everything at once.
|
|
32
|
+
|
|
33
|
+
## Record
|
|
34
|
+
Confirmed answers → `decisions.md` (with rationale). Agent-owned reversible, low-impact
|
|
35
|
+
technical assumptions →
|
|
36
|
+
`assumptions.md`. Open non-blocking items → `questions.md`.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Reference intake: design/style materials from the human
|
|
2
|
+
|
|
3
|
+
During spec, the human may supply screenshots, Figma, video, sites, or docs showing how the
|
|
4
|
+
feature should look or behave. When present, inspect them, save local copies, and classify
|
|
5
|
+
each as a fidelity **target**, hard **constraint**, or **inspiration** so a mood reference
|
|
6
|
+
cannot become a pixel-match contract. No references is valid; skip this intake.
|
|
7
|
+
|
|
8
|
+
## Gather + understand each reference
|
|
9
|
+
- **Images / screenshots / mockups:** open and **view** them (the Read tool renders
|
|
10
|
+
images). Describe what they show: layout, components, spacing, states, the target look.
|
|
11
|
+
- **Figma link:** if a Figma integration is available, pull its design context (frames,
|
|
12
|
+
tokens, components); otherwise record the link and ask the human for an export/screenshot
|
|
13
|
+
so there's something concrete to match offline.
|
|
14
|
+
- **Links / reference sites / docs:** fetch and read for the relevant intent (tone,
|
|
15
|
+
layout, interaction, quality bar). Capture *why* it's a reference, not just the URL.
|
|
16
|
+
- **Video:** note what it demonstrates (the expected interaction/flow). Save it; later
|
|
17
|
+
phases can step through it as tooling allows.
|
|
18
|
+
|
|
19
|
+
## Save local assets into the workspace
|
|
20
|
+
Copy any local file (screenshot, mockup, video, export) into
|
|
21
|
+
`.devrites/work/<slug>/references/` so it's durable and connectable later:
|
|
22
|
+
```
|
|
23
|
+
mkdir -p .devrites/work/<slug>/references
|
|
24
|
+
cp "<the file the human gave>" .devrites/work/<slug>/references/<clear-name>.<ext>
|
|
25
|
+
```
|
|
26
|
+
Use clear names (`login-mockup.png`, `checkout-flow.mp4`). Don't move the user's
|
|
27
|
+
original; copy it. For remote-only refs (a live Figma/URL), record the link in the index.
|
|
28
|
+
Index source/owner/license and **reference-only** or **may ship** usage; external screenshots
|
|
29
|
+
never grant rights to copy brand, copy, or assets.
|
|
30
|
+
|
|
31
|
+
## Index in `references.md`
|
|
32
|
+
```markdown
|
|
33
|
+
# References: <slug>
|
|
34
|
+
| Ref | Role | Usage / provenance | Type | Location | Shows / why it's a reference | Informs |
|
|
35
|
+
|-----|------|--------------------|------|----------|------------------------------|---------|
|
|
36
|
+
| R1 | target | project; may ship | screenshot | references/login-mockup.png | approved composition + spacing | spec UI, slice 2, proof |
|
|
37
|
+
| R2 | constraint | project; may ship | figma | https://figma.com/… | required tokens + components | all UI |
|
|
38
|
+
| R3 | target | user; reference-only | video | references/checkout-flow.mp4 | approved step order + transitions | build, proof |
|
|
39
|
+
| R4 | inspiration | external; reference-only | link | https://example.com | tone + density, not identity/layout | shape |
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Roles are normative: **target** means compare fidelity, **constraint** means satisfy the
|
|
43
|
+
named rule, and **inspiration** means extract the cited principle without copying identity,
|
|
44
|
+
composition, copy, or distinctive assets. Usage is normative too: only **may ship** assets
|
|
45
|
+
enter product code.
|
|
46
|
+
|
|
47
|
+
## Feed them into the spec + the design brief
|
|
48
|
+
- Use references to sharpen `spec.md` (UI impact, success/acceptance: e.g. "matches R1").
|
|
49
|
+
- When the feature touches UI, these references are the primary input to **`devrites-ux-shape`**
|
|
50
|
+
(spec step 3a): they anchor the design direction and can seed the visual-direction probe
|
|
51
|
+
(a Figma link → pulled design context; reference sites → screenshots). The resulting
|
|
52
|
+
`design-brief.md` cites them by R-id **and role**.
|
|
53
|
+
- A reference can *resolve a gap* ("which layout?"): record that in the gaps table.
|
|
54
|
+
- If a reference **conflicts** with the existing design system, that's an issue to raise
|
|
55
|
+
with the human (match the system, or adopt the reference: their call).
|
|
56
|
+
|
|
57
|
+
## Later phases use them (wire-through)
|
|
58
|
+
`devrites-frontend-craft` builds to the approved brief and its **target** references,
|
|
59
|
+
honors **constraints**, and uses **inspiration** only for the named principle. `/rite-prove`
|
|
60
|
+
records rendered comparisons in `browser-evidence.md`; `/rite-polish` and `/rite-seal`
|
|
61
|
+
reuse that same contract. Save and classify once here so every downstream phase makes the
|
|
62
|
+
same fidelity decision.
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Spec-quality checklists
|
|
2
|
+
|
|
3
|
+
Before `/rite-define`, test requirement prose for completeness, clarity, and
|
|
4
|
+
measurability—not implementation. “Banner is prominent” lacks a threshold; ask
|
|
5
|
+
whether export defines empty data, never whether `exportCsv()` handles `[]`.
|
|
6
|
+
Function/file/library checks belong to `/rite-vet` and `/rite-prove`.
|
|
7
|
+
|
|
8
|
+
## Output: one file per requirement domain
|
|
9
|
+
|
|
10
|
+
Emit `.devrites/work/<slug>/checklists/<domain>.md` per covered domain; skip
|
|
11
|
+
`none`. Each domain maps gaps to a `devrites-interview` dimension:
|
|
12
|
+
|
|
13
|
+
| Domain file | Tests the prose of |
|
|
14
|
+
| --- | --- |
|
|
15
|
+
| `functional.md` | Functional requirements + scenarios: is each capability stated, bounded, testable? |
|
|
16
|
+
| `data-model.md` | Key entities / data model: shapes, fields, lifecycle, relationships (skip if "none"). |
|
|
17
|
+
| `interaction.md` | API / UI impact + UX states: every screen state and contract named (skip if no UI/API). |
|
|
18
|
+
| `non-functional.md` | Invariants; security/privacy/accessibility, latency/scale, compatibility, operations, and human-only proof prerequisites. |
|
|
19
|
+
| `edge-cases.md` | Empty/boundary/invalid/concurrent/failure/recovery paths plus the spec's applicability map. |
|
|
20
|
+
|
|
21
|
+
## Each item: a question, a verdict, the line it interrogates
|
|
22
|
+
|
|
23
|
+
```markdown
|
|
24
|
+
# Spec checklist: <domain> — <slug>
|
|
25
|
+
Scored: <iso> Verdict: pass | gaps (<n CRITICAL / n minor>)
|
|
26
|
+
|
|
27
|
+
| # | Question (tests the requirement prose) | Verdict | Spec line | Severity |
|
|
28
|
+
|---|---|---|---|---|
|
|
29
|
+
| 1 | Is every quantitative qualifier ("prominent", "fast", "large") given a number or reference? | fail | "banner is prominent" | **CRITICAL** |
|
|
30
|
+
| 2 | Does each requirement name an observable outcome a test could check? | pass | REQ-001..004 | — |
|
|
31
|
+
| 3 | Are all enumerations closed — no "etc." / "and so on" / open "…"? | pass | — | — |
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Verdict: `pass | fail | n/a`. A fail is **CRITICAL** when ambiguity changes build
|
|
35
|
+
or acceptance: unquantified success, open enumeration, ambiguous data shape,
|
|
36
|
+
undefined stated-flow edge, or contradictory requirements. Other vague prose is
|
|
37
|
+
**minor**: record it; do not block.
|
|
38
|
+
|
|
39
|
+
## Question bank
|
|
40
|
+
|
|
41
|
+
Each question checks one requirement-prose failure mode:
|
|
42
|
+
|
|
43
|
+
- **Measurability:** every "good / fast / prominent / simple / secure" carries a number, a budget,
|
|
44
|
+
or a named reference. No adjective stands in for a threshold.
|
|
45
|
+
- **Completeness:** every enumeration is closed (no "etc."); every requirement with a precondition
|
|
46
|
+
states the failure branch; every entity names its required fields + lifecycle; every stated flow
|
|
47
|
+
names its empty / error / boundary behaviour.
|
|
48
|
+
- **Clarity:** one entity, one name (no `user`/`customer`/`account` drift); no requirement two
|
|
49
|
+
readers would implement differently; no "should" where "MUST" is meant.
|
|
50
|
+
- **Assumptions:** no material behavior, scope, data, security, or proof fact survives as a
|
|
51
|
+
hidden assumption; verify it or record an owned/deadlined assumption or blocking question.
|
|
52
|
+
- **Testability:** each acceptance criterion is binary and names (or clearly implies) its evidence.
|
|
53
|
+
A criterion only provable by reading code is a fail.
|
|
54
|
+
- **Consistency:** no requirement contradicts another, the data model, or a non-goal.
|
|
55
|
+
- **Stakeholders:** affected actors/operators are named; conflicting outcomes have an
|
|
56
|
+
explicit priority or decision owner rather than two simultaneously impossible promises.
|
|
57
|
+
- **Applicability:** topology, data, integration, security, UI/i18n/time zone, and
|
|
58
|
+
compatibility/delivery rows are `applies` with IDs or specifically justified `not applicable`.
|
|
59
|
+
- **Failure/recovery:** each partial, timeout, invalid, interrupted, or unavailable state
|
|
60
|
+
implied by an applicable row has a user outcome, system state, and safe retry/recovery rule.
|
|
61
|
+
- **Data:** schema/backfill/concurrency/tenant/retention implications state invariants and
|
|
62
|
+
prohibited loss/leakage; implementation detail stays for Define.
|
|
63
|
+
- **Integration:** timeout, invalid/partial response, auth/rate-limit/outage, duplicate,
|
|
64
|
+
ordering, and version-change behavior is specified when the boundary can produce it.
|
|
65
|
+
- **Preservation:** each material brownfield outcome appears in `Existing behavior
|
|
66
|
+
to preserve` with preserving REQ/AC and current evidence. Missing/vague “no
|
|
67
|
+
regressions” or unjustified `none` is CRITICAL.
|
|
68
|
+
**Failing case:** brownfield login still works but the table has no evidence column
|
|
69
|
+
→ CRITICAL until a test path, command, or observed contract is named.
|
|
70
|
+
- **Backstops:** each row names an independent held-out, property/metamorphic, or
|
|
71
|
+
direct behavioral check and the failure it discriminates; confidence/presence/self-review fail.
|
|
72
|
+
- **Non-functional:** each NFR names affected REQ/AC IDs or a bounded `global` scope;
|
|
73
|
+
human-only proof prerequisites name their owner.
|
|
74
|
+
|
|
75
|
+
## Readiness gate
|
|
76
|
+
|
|
77
|
+
The spec **Readiness gate** at the bottom of
|
|
78
|
+
[`spec-template.md`](spec-template.md) requires every
|
|
79
|
+
emitted `checklists/<domain>.md` to reach `Verdict: pass` (zero CRITICAL fails) before the gate
|
|
80
|
+
passes. Minor fails are logged, not blocking. A single open CRITICAL keeps the spec `Status: Draft`.
|
|
81
|
+
`/rite-define` reads the checklists at step 0 and **hard-blocks while any CRITICAL is
|
|
82
|
+
unchecked**. A spec without checklists is not yet checked, so define stops and routes
|
|
83
|
+
back here.
|
|
84
|
+
|
|
85
|
+
## Discipline
|
|
86
|
+
|
|
87
|
+
- Score honestly. Do not soften a checklist question to pass a weak spec.
|
|
88
|
+
- Don't pad. Five real questions that find one CRITICAL beat thirty rubber-stamped rows.
|
|
89
|
+
- If a question needs a function name, it belongs in `/rite-vet`'s `test-plan.md`.
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# `spec.md` template
|
|
2
|
+
|
|
3
|
+
Contract WHAT users get, WHY, success, and scope. HOW belongs in `plan.md`,
|
|
4
|
+
topology in `architecture.md`/`flows.md`, coverage in `traceability.md`.
|
|
5
|
+
|
|
6
|
+
Use `[NEEDS CLARIFICATION: <question>]` (blocking stops `/rite-clarify`); before readiness
|
|
7
|
+
every surviving marker converts to a gated `Q-###` open question ([`spec-grammar.md`](../../devrites-lib/reference/standards/spec-grammar.md) §
|
|
8
|
+
Unresolved-question markers — fail closed). Stable `REQ-001`/`AC-001` IDs; link, never
|
|
9
|
+
duplicate, source artifacts; over-budget requires `Budget override: <reason>`.
|
|
10
|
+
|
|
11
|
+
```markdown
|
|
12
|
+
# Spec: <Feature>
|
|
13
|
+
Slug: <kebab-case>
|
|
14
|
+
Status: Draft | Ready
|
|
15
|
+
Created: <date>
|
|
16
|
+
|
|
17
|
+
## Problem
|
|
18
|
+
<What is broken, missing, or costly.>
|
|
19
|
+
|
|
20
|
+
## Goal
|
|
21
|
+
<User-visible outcome and why it matters.>
|
|
22
|
+
|
|
23
|
+
Capability impact: <affected capability/ies and change | none — specific justification>
|
|
24
|
+
|
|
25
|
+
## Non-goals
|
|
26
|
+
- <Explicitly out of scope.>
|
|
27
|
+
|
|
28
|
+
## Existing behavior to preserve
|
|
29
|
+
List affected observable public/security/data/operational outcomes that MUST
|
|
30
|
+
survive; map preserving REQ/AC plus current test/runtime/contract/source evidence.
|
|
31
|
+
No implementation detail. True greenfield: `none — no existing behavior in the affected scope`.
|
|
32
|
+
|
|
33
|
+
| Existing outcome | Preserved by | Current evidence |
|
|
34
|
+
| --- | --- | --- |
|
|
35
|
+
| <outcome that must not regress> | REQ-001 / AC-001 | <current evidence> |
|
|
36
|
+
|
|
37
|
+
Each preservation row **must** cite current evidence (test, runtime, contract, or
|
|
38
|
+
observed behavior). An empty or vague evidence cell blocks Spec readiness.
|
|
39
|
+
|
|
40
|
+
**Failing case:** row lists REQ-001 with evidence "none" or "TBD" → readiness gate
|
|
41
|
+
fails until evidence is named or the outcome is removed from scope.
|
|
42
|
+
|
|
43
|
+
## Stakeholders and priorities
|
|
44
|
+
| Actor/stakeholder | Observable outcome | Conflict / priority rule |
|
|
45
|
+
| --- | --- | --- |
|
|
46
|
+
| <actor or affected owner> | <goal, protection, or operational need> | <none or how competing goals resolve> |
|
|
47
|
+
|
|
48
|
+
## Constraints and invariants
|
|
49
|
+
- INV-001: <fact that MUST remain true across success, failure, retry, and recovery>.
|
|
50
|
+
- <security/privacy/accessibility/performance/compatibility/data/operational constraint,
|
|
51
|
+
or `none — <specific reason>` for a materially relevant category>.
|
|
52
|
+
|
|
53
|
+
## Requirements
|
|
54
|
+
- REQ-001: The system MUST <observable product behavior>.
|
|
55
|
+
- REQ-002: The system MUST NOT <prohibited behavior>.
|
|
56
|
+
|
|
57
|
+
## Acceptance criteria
|
|
58
|
+
Binary/evidence-backed; each maps to a requirement and later a traceability slice.
|
|
59
|
+
|
|
60
|
+
- [ ] AC-001: Given <state>, when <action>, then <outcome>. (REQ-001)
|
|
61
|
+
- [ ] AC-002: Given <state>, when <action>, then <outcome>. (REQ-002)
|
|
62
|
+
|
|
63
|
+
Behavioral/high-risk work uses this grammar, with the AC ID inside the scenario:
|
|
64
|
+
|
|
65
|
+
### Requirement: <name>
|
|
66
|
+
The system SHALL <core observable behavior>.
|
|
67
|
+
|
|
68
|
+
#### Scenario: <name>
|
|
69
|
+
- [ ] AC-003: **WHEN** <trigger> **THEN** <observable outcome>. (REQ-001)
|
|
70
|
+
|
|
71
|
+
## Edge Coverage
|
|
72
|
+
Use `covered | backstop | dismissed | unresolved`; target an existing REQ/AC
|
|
73
|
+
unless dismissed. `backstop` requires a named independent held-out,
|
|
74
|
+
property/metamorphic, or direct behavioral check plus the wrong behavior it
|
|
75
|
+
discriminates. If unavailable, use `unresolved`; presence/prose/self-judgment cannot pass.
|
|
76
|
+
|
|
77
|
+
| Edge ID | Requirement/AC | Class | Status | Reason/backstop |
|
|
78
|
+
| --- | --- | --- | --- | --- |
|
|
79
|
+
| EDGE-001 | AC-001 | empty/error/permission/race/migration | covered | <evidence/rationale> |
|
|
80
|
+
|
|
81
|
+
## Prohibitions (must-NOT)
|
|
82
|
+
Bespoke only; generic security/privacy stays in standards. Status:
|
|
83
|
+
`resolved/test | resolved/judgment | dismissed | unresolved`.
|
|
84
|
+
|
|
85
|
+
| Prohibition ID | Requirement/AC | Status | Test/evidence |
|
|
86
|
+
| --- | --- | --- | --- |
|
|
87
|
+
| PROH-001 | REQ-002 | resolved/test | <test/evidence link> |
|
|
88
|
+
|
|
89
|
+
## Failure and recovery behavior
|
|
90
|
+
| Trigger / partial state | User-visible outcome | System state | Recovery / retry rule | Requirement/AC |
|
|
91
|
+
| --- | --- | --- | --- | --- |
|
|
92
|
+
| <timeout, invalid input, interruption, dependency loss> | <clear bounded outcome> | <unchanged/pending/reconciling> | <who/what can safely recover> | <REQ/AC> |
|
|
93
|
+
|
|
94
|
+
## Applicability map
|
|
95
|
+
Use `applies | not applicable`; a non-applicable row needs a specific reason. The
|
|
96
|
+
status routes Define/Vet/Build/Prove to the named standard without copying it here.
|
|
97
|
+
|
|
98
|
+
| Concern | Status and trigger | Affected REQ/AC/invariant |
|
|
99
|
+
| --- | --- | --- |
|
|
100
|
+
| Repository topology (nested/mono/multi-repo, languages, services, generated/vendor) | <status + reason> | <ids> |
|
|
101
|
+
| Data integrity (writes, schema/migration, concurrency, tenant, retention/privacy) | <status + reason> | <ids> |
|
|
102
|
+
| Integration reliability (API/webhook/queue/job/cache/cross-service) | <status + reason> | <ids> |
|
|
103
|
+
| Security boundary (authn/authz, hostile input/files, secrets, privilege) | <status + reason> | <ids> |
|
|
104
|
+
| UI/accessibility/i18n/time-zone behavior | <status + reason> | <ids> |
|
|
105
|
+
| Compatibility/delivery (old/new versions, config, flag, rollout/rollback) | <status + reason> | <ids> |
|
|
106
|
+
|
|
107
|
+
## Edge cases
|
|
108
|
+
- <Boundary note not captured above.>
|
|
109
|
+
|
|
110
|
+
## AI-SPEC annex
|
|
111
|
+
- Model/RAG/agent/eval/LLM-output scope: `ai-spec.md` from `ai-spec-template.md`.
|
|
112
|
+
- Otherwise: not applicable.
|
|
113
|
+
|
|
114
|
+
## Success metrics
|
|
115
|
+
- <Metric or observable proof.>
|
|
116
|
+
|
|
117
|
+
## Scope boundaries
|
|
118
|
+
- Owns: <surface/behavior>.
|
|
119
|
+
- Does not own: <adjacent area>.
|
|
120
|
+
- Placement summary: <module/layer>; full map in `architecture.md`.
|
|
121
|
+
|
|
122
|
+
## Coverage seed
|
|
123
|
+
- Actors/journeys/components: <material surfaces>.
|
|
124
|
+
- States/data/contracts/integrations: <material boundaries>.
|
|
125
|
+
- Operations/proof: <config, observability, rollout/rollback, evidence constraints>.
|
|
126
|
+
|
|
127
|
+
## References
|
|
128
|
+
- `brief.md`: request/outcome/scope; `architecture.md`: placement/integration;
|
|
129
|
+
`flows.md`: Mermaid-first diagrams (optional `visual/<flow>.html`+`.outline.md` companion
|
|
130
|
+
+ link when richer presentation earns it — load playbooks via
|
|
131
|
+
[`index.md`](../../devrites-lib/reference/visual-playbooks/index.md)); `decisions.md`: decisions;
|
|
132
|
+
`decision-coverage.md`: Clarify topology/verdict; `traceability.md`: Define coverage;
|
|
133
|
+
`design-brief.md`: UI direction.
|
|
134
|
+
|
|
135
|
+
## Open questions
|
|
136
|
+
| Question ID | Gate | Question | Impact |
|
|
137
|
+
| --- | --- | --- | --- |
|
|
138
|
+
| Q-001 | blocking | [NEEDS CLARIFICATION: <question>] | AC-001 |
|
|
139
|
+
|
|
140
|
+
## Readiness gate
|
|
141
|
+
- [ ] No blocking clarification or open `blocking`/`escalating` question; REQ/AC IDs are valid and ACs independently provable.
|
|
142
|
+
- [ ] Stakeholder conflicts/priority rules, constraints, and invariants are explicit;
|
|
143
|
+
implementation preferences are not disguised as requirements.
|
|
144
|
+
- [ ] Existing affected behavior maps to preserving REQ/AC + current evidence, or uses the exact justified greenfield `none`.
|
|
145
|
+
- [ ] Edge rows target REQ/AC or justify dismissal; every backstop names independent discriminating evidence, else `unresolved`.
|
|
146
|
+
- [ ] Prohibitions resolve/dismiss; `resolved/test` links evidence.
|
|
147
|
+
- [ ] Each material failure/partial state names user outcome, system state, recovery,
|
|
148
|
+
and REQ/AC; no silent success or blind retry remains.
|
|
149
|
+
- [ ] Every applicability row is `applies` with affected IDs or has a specific
|
|
150
|
+
evidence-backed `not applicable` reason.
|
|
151
|
+
- [ ] AI has `ai-spec.md` and UI has `design-brief.md`; out-of-scope work states not applicable.
|
|
152
|
+
- [ ] Non-goals/scope are explicit; capability impact is singular/specific and matches ledger deltas.
|
|
153
|
+
- [ ] Architecture/flows/decisions are linked, not duplicated; Coverage seed names Clarify surfaces.
|
|
154
|
+
```
|