devrites 5.11.0 → 5.12.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 +6 -0
- package/README.md +1 -1
- package/docs/agents/issue-driven-rites.md +1 -1
- package/docs/agents/issue-tracker.md +3 -0
- package/docs/cli.md +90 -0
- package/docs/command-map.md +4 -2
- package/docs/engine/commands.md +21 -0
- package/docs/engine/state-schema.md +1 -1
- package/docs/engine/workspace-schema.md +10 -2
- package/docs/usage.md +2 -0
- package/engine/commands.go +11 -5
- package/engine/help.go +80 -3
- package/engine/help_test.go +7 -1
- package/engine/internal/acceptance/acceptance_test.go +655 -0
- package/engine/internal/acceptance/approve.go +142 -0
- package/engine/internal/acceptance/cli.go +426 -0
- package/engine/internal/acceptance/evidence.go +139 -0
- package/engine/internal/acceptance/exec.go +131 -0
- package/engine/internal/acceptance/exec_unix.go +22 -0
- package/engine/internal/acceptance/exec_windows.go +16 -0
- package/engine/internal/acceptance/ledger.go +259 -0
- package/engine/internal/acceptance/lint.go +115 -0
- package/engine/internal/acceptance/run.go +207 -0
- package/engine/internal/acceptance/scaffold.go +55 -0
- package/engine/internal/gate/gate.go +12 -2
- package/engine/internal/gate/gate_test.go +17 -9
- package/engine/internal/gate/gates_ledger.go +76 -0
- package/engine/internal/gate/readiness_binding.go +39 -0
- package/engine/internal/gate/readiness_binding_test.go +4 -3
- package/engine/internal/install/install.go +7 -1
- package/engine/internal/install/install_test.go +17 -4
- package/engine/internal/install/merge.go +82 -22
- package/engine/internal/install/update.go +7 -1
- package/engine/internal/install/workspace_advisory.go +46 -0
- package/engine/internal/install/workspace_advisory_test.go +54 -0
- package/engine/internal/lib/candidate_test.go +1 -1
- package/engine/internal/lib/claims.go +411 -0
- package/engine/internal/lib/claims_test.go +182 -0
- package/engine/internal/lib/closeout_test.go +3 -3
- package/engine/internal/lib/context.go +445 -0
- package/engine/internal/lib/context_next_test.go +521 -0
- package/engine/internal/lib/detect.go +346 -0
- package/engine/internal/lib/detect_test.go +105 -0
- package/engine/internal/lib/diffscope.go +189 -0
- package/engine/internal/lib/dispatch.go +302 -0
- package/engine/internal/lib/drift.go +219 -0
- package/engine/internal/lib/drift_test.go +106 -0
- package/engine/internal/lib/dup.go +1243 -0
- package/engine/internal/lib/dup_test.go +488 -0
- package/engine/internal/lib/environment_report.go +1 -0
- package/engine/internal/lib/environment_report_test.go +2 -2
- package/engine/internal/lib/handoff.go +194 -0
- package/engine/internal/lib/handoff_test.go +83 -0
- package/engine/internal/lib/manifest_union_test.go +1 -1
- package/engine/internal/lib/metrics.go +256 -0
- package/engine/internal/lib/migrate_test.go +6 -6
- package/engine/internal/lib/next.go +155 -0
- package/engine/internal/lib/observe_budgets_test.go +3 -3
- package/engine/internal/lib/regression.go +378 -0
- package/engine/internal/lib/regression_test.go +179 -0
- package/engine/internal/lib/resolve_remediation_test.go +1 -1
- package/engine/internal/lib/secretscan_test.go +1 -1
- package/engine/internal/lib/slicecheck.go +179 -0
- package/engine/internal/lib/slicecheck_test.go +111 -0
- package/engine/internal/lib/taskgraph_test.go +2 -2
- package/engine/internal/lib/triggers.go +133 -0
- package/engine/internal/lib/windows.go +353 -0
- package/engine/internal/lib/windows_test.go +237 -0
- package/engine/internal/notes/cli.go +349 -0
- package/engine/internal/notes/notes.go +384 -0
- package/engine/internal/notes/notes_test.go +173 -0
- package/engine/internal/parallel/lease.go +3 -8
- package/engine/internal/parallel/parallel_test.go +34 -0
- package/engine/internal/state/budgets.go +13 -8
- package/engine/internal/state/observation_test.go +1 -0
- package/engine/internal/state/schema.go +4 -3
- package/engine/internal/state/state_test.go +3 -3
- package/engine/internal/state/workflow_manifest.json +13 -4
- package/engine/internal/state/workspaceschema_test.go +2 -2
- package/engine/internal/testutil/testutil.go +4 -0
- package/engine/main.go +59 -0
- package/engine/note_routing_test.go +95 -0
- package/engine/observation_contract_test.go +1 -0
- package/engine/root_routing_test.go +13 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/gates.md +4 -0
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/state.md +1 -1
- package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/state.md +1 -1
- package/engine/testdata/golden/TestParityResolve/answer/state.md.golden +1 -1
- package/engine/testdata/golden/TestParityResolve/drop/state.md.golden +1 -1
- package/engine/tests/adr_0027_readiness_binding_test.go +1 -0
- package/engine/tests/gate_test.go +3 -0
- package/engine/tests/parity_closeout_test.go +3 -3
- package/engine/tests/parity_resolve_test.go +1 -1
- package/engine/tests/workspace_observation_migration_test.go +8 -4
- package/pack/.claude/agents/_shared/composition-findings.md +1 -0
- package/pack/.claude/agents/_shared/composition-result.md +1 -0
- package/pack/.claude/agents/_shared/result-admission.md +3 -0
- package/pack/.claude/agents/_shared/untrusted-input-devex.md +1 -0
- package/pack/.claude/agents/_shared/untrusted-input-retrospector.md +1 -0
- package/pack/.claude/agents/_shared/untrusted-input.md +1 -0
- package/pack/.claude/agents/devrites-code-reviewer.md +19 -3
- package/pack/.claude/agents/devrites-devex-reviewer.md +3 -3
- package/pack/.claude/agents/devrites-doubt-reviewer.md +3 -3
- package/pack/.claude/agents/devrites-evidence-scout.md +3 -3
- package/pack/.claude/agents/devrites-frontend-reviewer.md +3 -3
- package/pack/.claude/agents/devrites-performance-reviewer.md +3 -3
- package/pack/.claude/agents/devrites-plan-drafter.md +3 -3
- package/pack/.claude/agents/devrites-plan-reviewer.md +3 -3
- package/pack/.claude/agents/devrites-proof-runner.md +3 -3
- package/pack/.claude/agents/devrites-retrospector.md +3 -3
- package/pack/.claude/agents/devrites-security-auditor.md +25 -3
- package/pack/.claude/agents/devrites-simplifier-reviewer.md +15 -5
- package/pack/.claude/agents/devrites-slice-wright.md +3 -3
- package/pack/.claude/agents/devrites-spec-reviewer.md +3 -3
- package/pack/.claude/agents/devrites-strategy-reviewer.md +3 -3
- package/pack/.claude/agents/devrites-test-analyst.md +3 -3
- package/pack/.claude/agents/devrites-upgrade-planner.md +3 -3
- package/pack/.claude/settings.json +39 -2
- package/pack/.claude/skills/devrites-api-interface/SKILL.md +2 -0
- package/pack/.claude/skills/devrites-audit/SKILL.md +9 -0
- package/pack/.claude/skills/devrites-browser-proof/SKILL.md +2 -0
- package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +2 -0
- package/pack/.claude/skills/devrites-doubt/SKILL.md +2 -0
- package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +2 -0
- package/pack/.claude/skills/devrites-frontend-craft/reference/design-references.md +4 -0
- package/pack/.claude/skills/devrites-frontend-craft/reference/shape.md +5 -0
- package/pack/.claude/skills/devrites-interview/SKILL.md +5 -0
- package/pack/.claude/skills/devrites-lib/SKILL.md +40 -5
- package/pack/.claude/skills/devrites-lib/reference/_shared/reslice-autocomplete.md +3 -0
- package/pack/.claude/skills/devrites-lib/reference/_shared/reslice-plan.md +3 -0
- package/pack/.claude/skills/devrites-lib/reference/_shared/reslice-vet.md +3 -0
- package/pack/.claude/skills/devrites-lib/reference/candidate-integrity.md +17 -0
- package/pack/.claude/skills/devrites-lib/reference/orchestration-profiles.md +20 -0
- package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +36 -4
- package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +24 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/README.md +10 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +21 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/anti-patterns.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/architecture-health.md +64 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/assumption-checkpoints.md +42 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/audit-coverage.md +103 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/ci-cd.md +11 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/code-navigation.md +71 -4
- package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +67 -7
- package/pack/.claude/skills/devrites-lib/reference/standards/coding-style.md +9 -4
- package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +20 -3
- package/pack/.claude/skills/devrites-lib/reference/standards/core.md +10 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/data-integrity.md +24 -2
- package/pack/.claude/skills/devrites-lib/reference/standards/debug-recovery.md +14 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/definition-of-done.md +6 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/deprecation.md +18 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/developer-experience.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/development-workflow.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/documentation.md +12 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/duplicate-code.md +118 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/edge-case-trace.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/elicitation.md +29 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/error-handling.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/gates.md +117 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/git-workflow.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/glossary.md +40 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/hooks.md +16 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/integration-reliability.md +19 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/loop-operations.md +32 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/observability.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/one-shot-actions.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/patterns.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/performance.md +8 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/principles.md +14 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/prose-style.md +3 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/release/ship-checklist.md +4 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/repository-topology.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/review/README.md +23 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/review/ci-workflows.md +50 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/review/default.md +42 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/review/go.md +47 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/review/python.md +46 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/review/shell.md +40 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/review/ts-js.md +54 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/review-checklist.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/security-checklist.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/security.md +58 -6
- package/pack/.claude/skills/devrites-lib/reference/standards/skill-authoring.md +48 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/spec-grammar.md +18 -4
- package/pack/.claude/skills/devrites-lib/reference/standards/test-proof-checklist.md +5 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +19 -2
- package/pack/.claude/skills/devrites-lib/reference/standards/tooling.md +12 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/verification-methods.md +110 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/windows.md +51 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +28 -3
- package/pack/.claude/skills/devrites-prose-craft/SKILL.md +3 -1
- package/pack/.claude/skills/devrites-source-driven/SKILL.md +2 -0
- package/pack/.claude/skills/devrites-ux-shape/SKILL.md +2 -0
- package/pack/.claude/skills/rite/SKILL.md +2 -0
- package/pack/.claude/skills/rite-adopt/SKILL.md +2 -0
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +7 -4
- package/pack/.claude/skills/rite-autocomplete/reference/decision-policy.md +1 -3
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +8 -4
- package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +1 -3
- package/pack/.claude/skills/rite-build/SKILL.md +28 -14
- package/pack/.claude/skills/rite-build/reference/checkpoint.md +6 -0
- package/pack/.claude/skills/rite-build/reference/parallel-batch.md +11 -2
- package/pack/.claude/skills/rite-build/reference/phase-contract.md +8 -4
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +34 -8
- package/pack/.claude/skills/rite-clarify/SKILL.md +4 -0
- package/pack/.claude/skills/rite-converge/SKILL.md +14 -2
- package/pack/.claude/skills/rite-customize/SKILL.md +2 -0
- package/pack/.claude/skills/rite-define/SKILL.md +8 -2
- package/pack/.claude/skills/rite-doctor/SKILL.md +6 -1
- package/pack/.claude/skills/rite-dogfood/SKILL.md +2 -0
- package/pack/.claude/skills/rite-explain/SKILL.md +2 -0
- package/pack/.claude/skills/rite-frame/SKILL.md +4 -0
- package/pack/.claude/skills/rite-handoff/SKILL.md +8 -1
- package/pack/.claude/skills/rite-learn/SKILL.md +2 -0
- package/pack/.claude/skills/rite-plan/SKILL.md +7 -3
- package/pack/.claude/skills/rite-plan/reference/anti-patterns.md +1 -3
- package/pack/.claude/skills/rite-plan/reference/replan-and-repair.md +1 -3
- package/pack/.claude/skills/rite-plan/reference/task-breakdown.md +3 -1
- package/pack/.claude/skills/rite-polish/SKILL.md +13 -2
- package/pack/.claude/skills/rite-polish/reference/code.md +6 -1
- package/pack/.claude/skills/rite-polish/reference/ledger.md +3 -1
- package/pack/.claude/skills/rite-pov/SKILL.md +2 -0
- package/pack/.claude/skills/rite-pr-feedback/SKILL.md +2 -0
- package/pack/.claude/skills/rite-pressure-test/SKILL.md +2 -0
- package/pack/.claude/skills/rite-prototype/SKILL.md +2 -0
- package/pack/.claude/skills/rite-prove/SKILL.md +17 -3
- package/pack/.claude/skills/rite-prove/reference/test-command-discovery.md +6 -0
- package/pack/.claude/skills/rite-quick/SKILL.md +7 -1
- package/pack/.claude/skills/rite-resolve/SKILL.md +2 -0
- package/pack/.claude/skills/rite-review/SKILL.md +5 -1
- package/pack/.claude/skills/rite-review/reference/performance-checklist.md +14 -3
- package/pack/.claude/skills/rite-seal/SKILL.md +27 -3
- package/pack/.claude/skills/rite-seal/reference/go-no-go.md +1 -0
- package/pack/.claude/skills/rite-seal/reference/phase-contract.md +3 -1
- package/pack/.claude/skills/rite-ship/SKILL.md +5 -1
- package/pack/.claude/skills/rite-spec/SKILL.md +10 -3
- package/pack/.claude/skills/rite-spec/reference/state-workspace.md +5 -0
- package/pack/.claude/skills/rite-status/SKILL.md +9 -0
- package/pack/.claude/skills/rite-temper/SKILL.md +5 -1
- package/pack/.claude/skills/rite-upgrade/SKILL.md +9 -1
- package/pack/.claude/skills/rite-vet/SKILL.md +29 -9
- package/pack/.claude/skills/rite-vet/reference/anti-patterns.md +1 -3
- package/pack/.claude/skills/rite-vet/reference/artifacts.md +20 -3
- package/pack/.claude/skills/rite-vet/reference/depth.md +1 -3
- package/pack/.claude/skills/rite-vet/reference/review-axes.md +6 -3
- package/pack/.claude/skills/rite-watch-pr/SKILL.md +2 -0
- package/pack/.claude/skills/rite-zoom-out/SKILL.md +2 -0
- package/pack/generated/claude/agents/devrites-code-reviewer.md +17 -1
- package/pack/generated/claude/agents/devrites-devex-reviewer.md +1 -1
- package/pack/generated/claude/agents/devrites-doubt-reviewer.md +1 -1
- package/pack/generated/claude/agents/devrites-evidence-scout.md +1 -1
- package/pack/generated/claude/agents/devrites-frontend-reviewer.md +1 -1
- package/pack/generated/claude/agents/devrites-performance-reviewer.md +1 -1
- package/pack/generated/claude/agents/devrites-plan-drafter.md +1 -1
- package/pack/generated/claude/agents/devrites-plan-reviewer.md +1 -1
- package/pack/generated/claude/agents/devrites-proof-runner.md +1 -1
- package/pack/generated/claude/agents/devrites-retrospector.md +1 -1
- package/pack/generated/claude/agents/devrites-security-auditor.md +23 -1
- package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +13 -3
- package/pack/generated/claude/agents/devrites-slice-wright.md +1 -1
- package/pack/generated/claude/agents/devrites-spec-reviewer.md +1 -1
- package/pack/generated/claude/agents/devrites-strategy-reviewer.md +1 -1
- package/pack/generated/claude/agents/devrites-test-analyst.md +1 -1
- package/pack/generated/claude/agents/devrites-upgrade-planner.md +1 -1
- package/pack/generated/claude/settings.json +39 -2
- package/pack/generated/claude/skills/devrites-api-interface/SKILL.md +2 -0
- package/pack/generated/claude/skills/devrites-audit/SKILL.md +9 -0
- package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +2 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +2 -0
- package/pack/generated/claude/skills/devrites-doubt/SKILL.md +2 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/SKILL.md +2 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/design-references.md +4 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/shape.md +5 -0
- package/pack/generated/claude/skills/devrites-interview/SKILL.md +5 -0
- package/pack/generated/claude/skills/devrites-lib/SKILL.md +40 -5
- package/pack/generated/claude/skills/devrites-lib/reference/candidate-integrity.md +17 -0
- package/pack/generated/claude/skills/devrites-lib/reference/orchestration-profiles.md +20 -0
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +36 -4
- package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +24 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +10 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +21 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/anti-patterns.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/architecture-health.md +64 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/assumption-checkpoints.md +42 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/audit-coverage.md +103 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/ci-cd.md +11 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/code-navigation.md +71 -4
- package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +67 -7
- package/pack/generated/claude/skills/devrites-lib/reference/standards/coding-style.md +9 -4
- package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +20 -3
- package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +10 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/data-integrity.md +24 -2
- package/pack/generated/claude/skills/devrites-lib/reference/standards/debug-recovery.md +14 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/definition-of-done.md +6 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/deprecation.md +18 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/developer-experience.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/development-workflow.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/documentation.md +12 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/duplicate-code.md +118 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/edge-case-trace.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/elicitation.md +29 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/error-handling.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/gates.md +117 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/git-workflow.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/glossary.md +40 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/hooks.md +16 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/integration-reliability.md +19 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/loop-operations.md +32 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/observability.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/one-shot-actions.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/patterns.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +8 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/principles.md +14 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/prose-style.md +3 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/release/ship-checklist.md +4 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/repository-topology.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/review/README.md +23 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/review/ci-workflows.md +50 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/review/default.md +42 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/review/go.md +47 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/review/python.md +46 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/review/shell.md +40 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/review/ts-js.md +54 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/review-checklist.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/security-checklist.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +58 -6
- package/pack/generated/claude/skills/devrites-lib/reference/standards/skill-authoring.md +48 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/spec-grammar.md +18 -4
- package/pack/generated/claude/skills/devrites-lib/reference/standards/test-proof-checklist.md +5 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +19 -2
- package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +12 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/verification-methods.md +110 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/windows.md +51 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +28 -3
- package/pack/generated/claude/skills/devrites-prose-craft/SKILL.md +3 -1
- package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +2 -0
- package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +2 -0
- package/pack/generated/claude/skills/rite/SKILL.md +2 -0
- package/pack/generated/claude/skills/rite-adopt/SKILL.md +2 -0
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +6 -1
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +7 -1
- package/pack/generated/claude/skills/rite-build/SKILL.md +28 -14
- package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +6 -0
- package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +11 -2
- package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +8 -4
- package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +34 -8
- package/pack/generated/claude/skills/rite-clarify/SKILL.md +4 -0
- package/pack/generated/claude/skills/rite-converge/SKILL.md +14 -2
- package/pack/generated/claude/skills/rite-customize/SKILL.md +2 -0
- package/pack/generated/claude/skills/rite-define/SKILL.md +8 -2
- package/pack/generated/claude/skills/rite-doctor/SKILL.md +6 -1
- package/pack/generated/claude/skills/rite-dogfood/SKILL.md +2 -0
- package/pack/generated/claude/skills/rite-explain/SKILL.md +2 -0
- package/pack/generated/claude/skills/rite-frame/SKILL.md +4 -0
- package/pack/generated/claude/skills/rite-handoff/SKILL.md +8 -1
- package/pack/generated/claude/skills/rite-learn/SKILL.md +2 -0
- package/pack/generated/claude/skills/rite-plan/SKILL.md +6 -0
- package/pack/generated/claude/skills/rite-plan/reference/task-breakdown.md +3 -1
- package/pack/generated/claude/skills/rite-polish/SKILL.md +13 -2
- package/pack/generated/claude/skills/rite-polish/reference/code.md +6 -1
- package/pack/generated/claude/skills/rite-polish/reference/ledger.md +3 -1
- package/pack/generated/claude/skills/rite-pov/SKILL.md +2 -0
- package/pack/generated/claude/skills/rite-pr-feedback/SKILL.md +2 -0
- package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +2 -0
- package/pack/generated/claude/skills/rite-prototype/SKILL.md +2 -0
- package/pack/generated/claude/skills/rite-prove/SKILL.md +17 -3
- package/pack/generated/claude/skills/rite-prove/reference/test-command-discovery.md +6 -0
- package/pack/generated/claude/skills/rite-quick/SKILL.md +7 -1
- package/pack/generated/claude/skills/rite-resolve/SKILL.md +2 -0
- package/pack/generated/claude/skills/rite-review/SKILL.md +5 -1
- package/pack/generated/claude/skills/rite-review/reference/performance-checklist.md +14 -3
- package/pack/generated/claude/skills/rite-seal/SKILL.md +27 -3
- package/pack/generated/claude/skills/rite-seal/reference/go-no-go.md +1 -0
- package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +3 -1
- package/pack/generated/claude/skills/rite-ship/SKILL.md +5 -1
- package/pack/generated/claude/skills/rite-spec/SKILL.md +10 -3
- package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +5 -0
- package/pack/generated/claude/skills/rite-status/SKILL.md +9 -0
- package/pack/generated/claude/skills/rite-temper/SKILL.md +5 -1
- package/pack/generated/claude/skills/rite-upgrade/SKILL.md +9 -1
- package/pack/generated/claude/skills/rite-vet/SKILL.md +28 -6
- package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +19 -0
- package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +5 -0
- package/pack/generated/claude/skills/rite-watch-pr/SKILL.md +2 -0
- package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +2 -0
- package/pack/generated/codex/agents/devrites-code-reviewer.toml +16 -0
- package/pack/generated/codex/agents/devrites-security-auditor.toml +22 -0
- package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +12 -2
- package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +2 -0
- package/pack/generated/codex/skills/devrites-audit/SKILL.md +9 -0
- package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +2 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +2 -0
- package/pack/generated/codex/skills/devrites-doubt/SKILL.md +2 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +2 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/design-references.md +4 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/shape.md +5 -0
- package/pack/generated/codex/skills/devrites-interview/SKILL.md +5 -0
- package/pack/generated/codex/skills/devrites-lib/SKILL.md +40 -5
- package/pack/generated/codex/skills/devrites-lib/reference/candidate-integrity.md +17 -0
- package/pack/generated/codex/skills/devrites-lib/reference/orchestration-profiles.md +20 -0
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +36 -4
- package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +24 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +10 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +21 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/anti-patterns.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/architecture-health.md +64 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/assumption-checkpoints.md +42 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/audit-coverage.md +103 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/browser-proof-checklist.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/ci-cd.md +11 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/code-navigation.md +71 -4
- package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +67 -7
- package/pack/generated/codex/skills/devrites-lib/reference/standards/coding-style.md +9 -4
- package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +20 -3
- package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +10 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/data-integrity.md +24 -2
- package/pack/generated/codex/skills/devrites-lib/reference/standards/debug-recovery.md +14 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/definition-of-done.md +6 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/deprecation.md +18 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/developer-experience.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/development-workflow.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/documentation.md +12 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/duplicate-code.md +118 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/edge-case-trace.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/elicitation.md +29 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/error-handling.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/gates.md +117 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/git-workflow.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/glossary.md +40 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/hooks.md +16 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/integration-reliability.md +19 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/loop-operations.md +32 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/observability.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/one-shot-actions.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/patterns.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +8 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/principles.md +14 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/prose-style.md +3 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/release/ship-checklist.md +4 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/repository-topology.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/review/README.md +23 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/review/ci-workflows.md +50 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/review/default.md +42 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/review/go.md +47 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/review/python.md +46 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/review/shell.md +40 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/review/ts-js.md +54 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/review-checklist.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/security-checklist.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +58 -6
- package/pack/generated/codex/skills/devrites-lib/reference/standards/skill-authoring.md +48 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/spec-grammar.md +18 -4
- package/pack/generated/codex/skills/devrites-lib/reference/standards/test-proof-checklist.md +5 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +19 -2
- package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +12 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/verification-methods.md +110 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/windows.md +51 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +28 -3
- package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +3 -1
- package/pack/generated/codex/skills/devrites-source-driven/SKILL.md +2 -0
- package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +2 -0
- package/pack/generated/codex/skills/rite/SKILL.md +2 -0
- package/pack/generated/codex/skills/rite-adopt/SKILL.md +2 -0
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +6 -1
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +7 -1
- package/pack/generated/codex/skills/rite-build/SKILL.md +28 -14
- package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +6 -0
- package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +11 -2
- package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +8 -4
- package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +34 -8
- package/pack/generated/codex/skills/rite-clarify/SKILL.md +4 -0
- package/pack/generated/codex/skills/rite-converge/SKILL.md +14 -2
- package/pack/generated/codex/skills/rite-customize/SKILL.md +2 -0
- package/pack/generated/codex/skills/rite-define/SKILL.md +8 -2
- package/pack/generated/codex/skills/rite-doctor/SKILL.md +6 -1
- package/pack/generated/codex/skills/rite-dogfood/SKILL.md +2 -0
- package/pack/generated/codex/skills/rite-explain/SKILL.md +2 -0
- package/pack/generated/codex/skills/rite-frame/SKILL.md +4 -0
- package/pack/generated/codex/skills/rite-handoff/SKILL.md +8 -1
- package/pack/generated/codex/skills/rite-learn/SKILL.md +2 -0
- package/pack/generated/codex/skills/rite-plan/SKILL.md +6 -0
- package/pack/generated/codex/skills/rite-plan/reference/task-breakdown.md +3 -1
- package/pack/generated/codex/skills/rite-polish/SKILL.md +13 -2
- package/pack/generated/codex/skills/rite-polish/reference/code.md +6 -1
- package/pack/generated/codex/skills/rite-polish/reference/ledger.md +3 -1
- package/pack/generated/codex/skills/rite-pov/SKILL.md +2 -0
- package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +2 -0
- package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +2 -0
- package/pack/generated/codex/skills/rite-prototype/SKILL.md +2 -0
- package/pack/generated/codex/skills/rite-prove/SKILL.md +17 -3
- package/pack/generated/codex/skills/rite-prove/reference/test-command-discovery.md +6 -0
- package/pack/generated/codex/skills/rite-quick/SKILL.md +7 -1
- package/pack/generated/codex/skills/rite-resolve/SKILL.md +2 -0
- package/pack/generated/codex/skills/rite-review/SKILL.md +5 -1
- package/pack/generated/codex/skills/rite-review/reference/performance-checklist.md +14 -3
- package/pack/generated/codex/skills/rite-seal/SKILL.md +27 -3
- package/pack/generated/codex/skills/rite-seal/reference/go-no-go.md +1 -0
- package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +3 -1
- package/pack/generated/codex/skills/rite-ship/SKILL.md +5 -1
- package/pack/generated/codex/skills/rite-spec/SKILL.md +10 -3
- package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +5 -0
- package/pack/generated/codex/skills/rite-status/SKILL.md +9 -0
- package/pack/generated/codex/skills/rite-temper/SKILL.md +5 -1
- package/pack/generated/codex/skills/rite-upgrade/SKILL.md +9 -1
- package/pack/generated/codex/skills/rite-vet/SKILL.md +28 -6
- package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +19 -0
- package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +5 -0
- package/pack/generated/codex/skills/rite-watch-pr/SKILL.md +2 -0
- package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +2 -0
- package/pack/generated/devin/agents/devrites-code-reviewer.md +16 -0
- package/pack/generated/devin/agents/devrites-security-auditor.md +22 -0
- package/pack/generated/devin/agents/devrites-simplifier-reviewer.md +12 -2
- package/pack/generated/devin/skills/devrites-api-interface/SKILL.md +2 -0
- package/pack/generated/devin/skills/devrites-audit/SKILL.md +9 -0
- package/pack/generated/devin/skills/devrites-browser-proof/SKILL.md +2 -0
- package/pack/generated/devin/skills/devrites-debug-recovery/SKILL.md +2 -0
- package/pack/generated/devin/skills/devrites-doubt/SKILL.md +2 -0
- package/pack/generated/devin/skills/devrites-frontend-craft/SKILL.md +2 -0
- package/pack/generated/devin/skills/devrites-frontend-craft/reference/design-references.md +4 -0
- package/pack/generated/devin/skills/devrites-frontend-craft/reference/shape.md +5 -0
- package/pack/generated/devin/skills/devrites-interview/SKILL.md +5 -0
- package/pack/generated/devin/skills/devrites-lib/SKILL.md +40 -5
- package/pack/generated/devin/skills/devrites-lib/reference/candidate-integrity.md +17 -0
- package/pack/generated/devin/skills/devrites-lib/reference/orchestration-profiles.md +20 -0
- package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +36 -4
- package/pack/generated/devin/skills/devrites-lib/reference/reply-contract.md +24 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/README.md +10 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +2 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +21 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/anti-patterns.md +2 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/architecture-health.md +64 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/assumption-checkpoints.md +42 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/audit-coverage.md +103 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/browser-proof-checklist.md +2 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/ci-cd.md +11 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/code-navigation.md +71 -4
- package/pack/generated/devin/skills/devrites-lib/reference/standards/code-review.md +67 -7
- package/pack/generated/devin/skills/devrites-lib/reference/standards/coding-style.md +9 -4
- package/pack/generated/devin/skills/devrites-lib/reference/standards/context-hygiene.md +20 -3
- package/pack/generated/devin/skills/devrites-lib/reference/standards/core.md +10 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/data-integrity.md +24 -2
- package/pack/generated/devin/skills/devrites-lib/reference/standards/debug-recovery.md +14 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/definition-of-done.md +6 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/deprecation.md +18 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/developer-experience.md +2 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/development-workflow.md +2 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/documentation.md +12 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/duplicate-code.md +118 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/edge-case-trace.md +2 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/elicitation.md +29 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/error-handling.md +2 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/gates.md +117 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/git-workflow.md +2 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/glossary.md +40 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/hooks.md +16 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/integration-reliability.md +19 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/loop-operations.md +32 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/observability.md +2 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/one-shot-actions.md +2 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/patterns.md +2 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/performance.md +8 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/principles.md +14 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/prose-style.md +3 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/release/ship-checklist.md +4 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/repository-topology.md +2 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/review/README.md +23 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/review/ci-workflows.md +50 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/review/default.md +42 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/review/go.md +47 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/review/python.md +46 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/review/shell.md +40 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/review/ts-js.md +54 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/review-checklist.md +2 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/security-checklist.md +2 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/security.md +58 -6
- package/pack/generated/devin/skills/devrites-lib/reference/standards/skill-authoring.md +48 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/spec-grammar.md +18 -4
- package/pack/generated/devin/skills/devrites-lib/reference/standards/test-proof-checklist.md +5 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/testing.md +19 -2
- package/pack/generated/devin/skills/devrites-lib/reference/standards/tooling.md +12 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/verification-methods.md +110 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/windows.md +51 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
- package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +28 -3
- package/pack/generated/devin/skills/devrites-prose-craft/SKILL.md +3 -1
- package/pack/generated/devin/skills/devrites-source-driven/SKILL.md +2 -0
- package/pack/generated/devin/skills/devrites-ux-shape/SKILL.md +2 -0
- package/pack/generated/devin/skills/rite/SKILL.md +2 -0
- package/pack/generated/devin/skills/rite-adopt/SKILL.md +2 -0
- package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +6 -1
- package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +7 -1
- package/pack/generated/devin/skills/rite-build/SKILL.md +28 -14
- package/pack/generated/devin/skills/rite-build/reference/checkpoint.md +6 -0
- package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +11 -2
- package/pack/generated/devin/skills/rite-build/reference/phase-contract.md +8 -4
- package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +34 -8
- package/pack/generated/devin/skills/rite-clarify/SKILL.md +4 -0
- package/pack/generated/devin/skills/rite-converge/SKILL.md +14 -2
- package/pack/generated/devin/skills/rite-customize/SKILL.md +2 -0
- package/pack/generated/devin/skills/rite-define/SKILL.md +8 -2
- package/pack/generated/devin/skills/rite-doctor/SKILL.md +6 -1
- package/pack/generated/devin/skills/rite-dogfood/SKILL.md +2 -0
- package/pack/generated/devin/skills/rite-explain/SKILL.md +2 -0
- package/pack/generated/devin/skills/rite-frame/SKILL.md +4 -0
- package/pack/generated/devin/skills/rite-handoff/SKILL.md +8 -1
- package/pack/generated/devin/skills/rite-learn/SKILL.md +2 -0
- package/pack/generated/devin/skills/rite-plan/SKILL.md +6 -0
- package/pack/generated/devin/skills/rite-plan/reference/task-breakdown.md +3 -1
- package/pack/generated/devin/skills/rite-polish/SKILL.md +13 -2
- package/pack/generated/devin/skills/rite-polish/reference/code.md +6 -1
- package/pack/generated/devin/skills/rite-polish/reference/ledger.md +3 -1
- package/pack/generated/devin/skills/rite-pov/SKILL.md +2 -0
- package/pack/generated/devin/skills/rite-pr-feedback/SKILL.md +2 -0
- package/pack/generated/devin/skills/rite-pressure-test/SKILL.md +2 -0
- package/pack/generated/devin/skills/rite-prototype/SKILL.md +2 -0
- package/pack/generated/devin/skills/rite-prove/SKILL.md +17 -3
- package/pack/generated/devin/skills/rite-prove/reference/test-command-discovery.md +6 -0
- package/pack/generated/devin/skills/rite-quick/SKILL.md +7 -1
- package/pack/generated/devin/skills/rite-resolve/SKILL.md +2 -0
- package/pack/generated/devin/skills/rite-review/SKILL.md +5 -1
- package/pack/generated/devin/skills/rite-review/reference/performance-checklist.md +14 -3
- package/pack/generated/devin/skills/rite-seal/SKILL.md +27 -3
- package/pack/generated/devin/skills/rite-seal/reference/go-no-go.md +1 -0
- package/pack/generated/devin/skills/rite-seal/reference/phase-contract.md +3 -1
- package/pack/generated/devin/skills/rite-ship/SKILL.md +5 -1
- package/pack/generated/devin/skills/rite-spec/SKILL.md +10 -3
- package/pack/generated/devin/skills/rite-spec/reference/state-workspace.md +5 -0
- package/pack/generated/devin/skills/rite-status/SKILL.md +9 -0
- package/pack/generated/devin/skills/rite-temper/SKILL.md +5 -1
- package/pack/generated/devin/skills/rite-upgrade/SKILL.md +9 -1
- package/pack/generated/devin/skills/rite-vet/SKILL.md +28 -6
- package/pack/generated/devin/skills/rite-vet/reference/artifacts.md +19 -0
- package/pack/generated/devin/skills/rite-vet/reference/review-axes.md +5 -0
- package/pack/generated/devin/skills/rite-watch-pr/SKILL.md +2 -0
- package/pack/generated/devin/skills/rite-zoom-out/SKILL.md +2 -0
- package/pack/generated/omp/agents/devrites-code-reviewer.md +16 -0
- package/pack/generated/omp/agents/devrites-security-auditor.md +22 -0
- package/pack/generated/omp/agents/devrites-simplifier-reviewer.md +12 -2
- package/pack/generated/omp/skills/devrites-api-interface/SKILL.md +2 -0
- package/pack/generated/omp/skills/devrites-audit/SKILL.md +9 -0
- package/pack/generated/omp/skills/devrites-browser-proof/SKILL.md +2 -0
- package/pack/generated/omp/skills/devrites-debug-recovery/SKILL.md +2 -0
- package/pack/generated/omp/skills/devrites-doubt/SKILL.md +2 -0
- package/pack/generated/omp/skills/devrites-frontend-craft/SKILL.md +2 -0
- package/pack/generated/omp/skills/devrites-frontend-craft/reference/design-references.md +4 -0
- package/pack/generated/omp/skills/devrites-frontend-craft/reference/shape.md +5 -0
- package/pack/generated/omp/skills/devrites-interview/SKILL.md +5 -0
- package/pack/generated/omp/skills/devrites-lib/SKILL.md +40 -5
- package/pack/generated/omp/skills/devrites-lib/reference/candidate-integrity.md +17 -0
- package/pack/generated/omp/skills/devrites-lib/reference/orchestration-profiles.md +20 -0
- package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +36 -4
- package/pack/generated/omp/skills/devrites-lib/reference/reply-contract.md +24 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/README.md +10 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +2 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +21 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/anti-patterns.md +2 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/architecture-health.md +64 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/assumption-checkpoints.md +42 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/audit-coverage.md +103 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/browser-proof-checklist.md +2 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/ci-cd.md +11 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/code-navigation.md +71 -4
- package/pack/generated/omp/skills/devrites-lib/reference/standards/code-review.md +67 -7
- package/pack/generated/omp/skills/devrites-lib/reference/standards/coding-style.md +9 -4
- package/pack/generated/omp/skills/devrites-lib/reference/standards/context-hygiene.md +20 -3
- package/pack/generated/omp/skills/devrites-lib/reference/standards/core.md +10 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/data-integrity.md +24 -2
- package/pack/generated/omp/skills/devrites-lib/reference/standards/debug-recovery.md +14 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/definition-of-done.md +6 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/deprecation.md +18 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/developer-experience.md +2 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/development-workflow.md +2 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/documentation.md +12 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/duplicate-code.md +118 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/edge-case-trace.md +2 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/elicitation.md +29 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/error-handling.md +2 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/gates.md +117 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/git-workflow.md +2 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/glossary.md +40 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/hooks.md +16 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/integration-reliability.md +19 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/loop-operations.md +32 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/observability.md +2 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/one-shot-actions.md +2 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/patterns.md +2 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/performance.md +8 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/principles.md +14 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/prose-style.md +3 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/release/ship-checklist.md +4 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/repository-topology.md +2 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/review/README.md +23 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/review/ci-workflows.md +50 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/review/default.md +42 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/review/go.md +47 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/review/python.md +46 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/review/shell.md +40 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/review/ts-js.md +54 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/review-checklist.md +2 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/security-checklist.md +2 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/security.md +58 -6
- package/pack/generated/omp/skills/devrites-lib/reference/standards/skill-authoring.md +48 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/spec-grammar.md +18 -4
- package/pack/generated/omp/skills/devrites-lib/reference/standards/test-proof-checklist.md +5 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/testing.md +19 -2
- package/pack/generated/omp/skills/devrites-lib/reference/standards/tooling.md +12 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/verification-methods.md +110 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/windows.md +51 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
- package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +28 -3
- package/pack/generated/omp/skills/devrites-prose-craft/SKILL.md +3 -1
- package/pack/generated/omp/skills/devrites-source-driven/SKILL.md +2 -0
- package/pack/generated/omp/skills/devrites-ux-shape/SKILL.md +2 -0
- package/pack/generated/omp/skills/rite/SKILL.md +2 -0
- package/pack/generated/omp/skills/rite-adopt/SKILL.md +2 -0
- package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +6 -1
- package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +7 -1
- package/pack/generated/omp/skills/rite-build/SKILL.md +28 -14
- package/pack/generated/omp/skills/rite-build/reference/checkpoint.md +6 -0
- package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +11 -2
- package/pack/generated/omp/skills/rite-build/reference/phase-contract.md +8 -4
- package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +34 -8
- package/pack/generated/omp/skills/rite-clarify/SKILL.md +4 -0
- package/pack/generated/omp/skills/rite-converge/SKILL.md +14 -2
- package/pack/generated/omp/skills/rite-customize/SKILL.md +2 -0
- package/pack/generated/omp/skills/rite-define/SKILL.md +8 -2
- package/pack/generated/omp/skills/rite-doctor/SKILL.md +6 -1
- package/pack/generated/omp/skills/rite-dogfood/SKILL.md +2 -0
- package/pack/generated/omp/skills/rite-explain/SKILL.md +2 -0
- package/pack/generated/omp/skills/rite-frame/SKILL.md +4 -0
- package/pack/generated/omp/skills/rite-handoff/SKILL.md +8 -1
- package/pack/generated/omp/skills/rite-learn/SKILL.md +2 -0
- package/pack/generated/omp/skills/rite-plan/SKILL.md +6 -0
- package/pack/generated/omp/skills/rite-plan/reference/task-breakdown.md +3 -1
- package/pack/generated/omp/skills/rite-polish/SKILL.md +13 -2
- package/pack/generated/omp/skills/rite-polish/reference/code.md +6 -1
- package/pack/generated/omp/skills/rite-polish/reference/ledger.md +3 -1
- package/pack/generated/omp/skills/rite-pov/SKILL.md +2 -0
- package/pack/generated/omp/skills/rite-pr-feedback/SKILL.md +2 -0
- package/pack/generated/omp/skills/rite-pressure-test/SKILL.md +2 -0
- package/pack/generated/omp/skills/rite-prototype/SKILL.md +2 -0
- package/pack/generated/omp/skills/rite-prove/SKILL.md +17 -3
- package/pack/generated/omp/skills/rite-prove/reference/test-command-discovery.md +6 -0
- package/pack/generated/omp/skills/rite-quick/SKILL.md +7 -1
- package/pack/generated/omp/skills/rite-resolve/SKILL.md +2 -0
- package/pack/generated/omp/skills/rite-review/SKILL.md +5 -1
- package/pack/generated/omp/skills/rite-review/reference/performance-checklist.md +14 -3
- package/pack/generated/omp/skills/rite-seal/SKILL.md +27 -3
- package/pack/generated/omp/skills/rite-seal/reference/go-no-go.md +1 -0
- package/pack/generated/omp/skills/rite-seal/reference/phase-contract.md +3 -1
- package/pack/generated/omp/skills/rite-ship/SKILL.md +5 -1
- package/pack/generated/omp/skills/rite-spec/SKILL.md +10 -3
- package/pack/generated/omp/skills/rite-spec/reference/state-workspace.md +5 -0
- package/pack/generated/omp/skills/rite-status/SKILL.md +9 -0
- package/pack/generated/omp/skills/rite-temper/SKILL.md +5 -1
- package/pack/generated/omp/skills/rite-upgrade/SKILL.md +9 -1
- package/pack/generated/omp/skills/rite-vet/SKILL.md +28 -6
- package/pack/generated/omp/skills/rite-vet/reference/artifacts.md +19 -0
- package/pack/generated/omp/skills/rite-vet/reference/review-axes.md +5 -0
- package/pack/generated/omp/skills/rite-watch-pr/SKILL.md +2 -0
- package/pack/generated/omp/skills/rite-zoom-out/SKILL.md +2 -0
- package/pack/generated/pi/agents/devrites-code-reviewer.md +16 -0
- package/pack/generated/pi/agents/devrites-security-auditor.md +22 -0
- package/pack/generated/pi/agents/devrites-simplifier-reviewer.md +12 -2
- package/pack/generated/pi/skills/devrites-api-interface/SKILL.md +2 -0
- package/pack/generated/pi/skills/devrites-audit/SKILL.md +9 -0
- package/pack/generated/pi/skills/devrites-browser-proof/SKILL.md +2 -0
- package/pack/generated/pi/skills/devrites-debug-recovery/SKILL.md +2 -0
- package/pack/generated/pi/skills/devrites-doubt/SKILL.md +2 -0
- package/pack/generated/pi/skills/devrites-frontend-craft/SKILL.md +2 -0
- package/pack/generated/pi/skills/devrites-frontend-craft/reference/design-references.md +4 -0
- package/pack/generated/pi/skills/devrites-frontend-craft/reference/shape.md +5 -0
- package/pack/generated/pi/skills/devrites-interview/SKILL.md +5 -0
- package/pack/generated/pi/skills/devrites-lib/SKILL.md +40 -5
- package/pack/generated/pi/skills/devrites-lib/reference/candidate-integrity.md +17 -0
- package/pack/generated/pi/skills/devrites-lib/reference/orchestration-profiles.md +20 -0
- package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +36 -4
- package/pack/generated/pi/skills/devrites-lib/reference/reply-contract.md +24 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/README.md +10 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +2 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +21 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/anti-patterns.md +2 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/architecture-health.md +64 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/assumption-checkpoints.md +42 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/audit-coverage.md +103 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/browser-proof-checklist.md +2 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/ci-cd.md +11 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/code-navigation.md +71 -4
- package/pack/generated/pi/skills/devrites-lib/reference/standards/code-review.md +67 -7
- package/pack/generated/pi/skills/devrites-lib/reference/standards/coding-style.md +9 -4
- package/pack/generated/pi/skills/devrites-lib/reference/standards/context-hygiene.md +20 -3
- package/pack/generated/pi/skills/devrites-lib/reference/standards/core.md +10 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/data-integrity.md +24 -2
- package/pack/generated/pi/skills/devrites-lib/reference/standards/debug-recovery.md +14 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/definition-of-done.md +6 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/deprecation.md +18 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/developer-experience.md +2 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/development-workflow.md +2 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/documentation.md +12 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/duplicate-code.md +118 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/edge-case-trace.md +2 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/elicitation.md +29 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/error-handling.md +2 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/gates.md +117 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/git-workflow.md +2 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/glossary.md +40 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/hooks.md +16 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/integration-reliability.md +19 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/loop-operations.md +32 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/observability.md +2 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/one-shot-actions.md +2 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/patterns.md +2 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/performance.md +8 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/principles.md +14 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/prose-style.md +3 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/release/ship-checklist.md +4 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/repository-topology.md +2 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/review/README.md +23 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/review/ci-workflows.md +50 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/review/default.md +42 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/review/go.md +47 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/review/python.md +46 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/review/shell.md +40 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/review/ts-js.md +54 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/review-checklist.md +2 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/security-checklist.md +2 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/security.md +58 -6
- package/pack/generated/pi/skills/devrites-lib/reference/standards/skill-authoring.md +48 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/spec-grammar.md +18 -4
- package/pack/generated/pi/skills/devrites-lib/reference/standards/test-proof-checklist.md +5 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/testing.md +19 -2
- package/pack/generated/pi/skills/devrites-lib/reference/standards/tooling.md +12 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/verification-methods.md +110 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/windows.md +51 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
- package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +28 -3
- package/pack/generated/pi/skills/devrites-prose-craft/SKILL.md +3 -1
- package/pack/generated/pi/skills/devrites-source-driven/SKILL.md +2 -0
- package/pack/generated/pi/skills/devrites-ux-shape/SKILL.md +2 -0
- package/pack/generated/pi/skills/rite/SKILL.md +2 -0
- package/pack/generated/pi/skills/rite-adopt/SKILL.md +2 -0
- package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +6 -1
- package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +7 -1
- package/pack/generated/pi/skills/rite-build/SKILL.md +28 -14
- package/pack/generated/pi/skills/rite-build/reference/checkpoint.md +6 -0
- package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +11 -2
- package/pack/generated/pi/skills/rite-build/reference/phase-contract.md +8 -4
- package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +34 -8
- package/pack/generated/pi/skills/rite-clarify/SKILL.md +4 -0
- package/pack/generated/pi/skills/rite-converge/SKILL.md +14 -2
- package/pack/generated/pi/skills/rite-customize/SKILL.md +2 -0
- package/pack/generated/pi/skills/rite-define/SKILL.md +8 -2
- package/pack/generated/pi/skills/rite-doctor/SKILL.md +6 -1
- package/pack/generated/pi/skills/rite-dogfood/SKILL.md +2 -0
- package/pack/generated/pi/skills/rite-explain/SKILL.md +2 -0
- package/pack/generated/pi/skills/rite-frame/SKILL.md +4 -0
- package/pack/generated/pi/skills/rite-handoff/SKILL.md +8 -1
- package/pack/generated/pi/skills/rite-learn/SKILL.md +2 -0
- package/pack/generated/pi/skills/rite-plan/SKILL.md +6 -0
- package/pack/generated/pi/skills/rite-plan/reference/task-breakdown.md +3 -1
- package/pack/generated/pi/skills/rite-polish/SKILL.md +13 -2
- package/pack/generated/pi/skills/rite-polish/reference/code.md +6 -1
- package/pack/generated/pi/skills/rite-polish/reference/ledger.md +3 -1
- package/pack/generated/pi/skills/rite-pov/SKILL.md +2 -0
- package/pack/generated/pi/skills/rite-pr-feedback/SKILL.md +2 -0
- package/pack/generated/pi/skills/rite-pressure-test/SKILL.md +2 -0
- package/pack/generated/pi/skills/rite-prototype/SKILL.md +2 -0
- package/pack/generated/pi/skills/rite-prove/SKILL.md +17 -3
- package/pack/generated/pi/skills/rite-prove/reference/test-command-discovery.md +6 -0
- package/pack/generated/pi/skills/rite-quick/SKILL.md +7 -1
- package/pack/generated/pi/skills/rite-resolve/SKILL.md +2 -0
- package/pack/generated/pi/skills/rite-review/SKILL.md +5 -1
- package/pack/generated/pi/skills/rite-review/reference/performance-checklist.md +14 -3
- package/pack/generated/pi/skills/rite-seal/SKILL.md +27 -3
- package/pack/generated/pi/skills/rite-seal/reference/go-no-go.md +1 -0
- package/pack/generated/pi/skills/rite-seal/reference/phase-contract.md +3 -1
- package/pack/generated/pi/skills/rite-ship/SKILL.md +5 -1
- package/pack/generated/pi/skills/rite-spec/SKILL.md +10 -3
- package/pack/generated/pi/skills/rite-spec/reference/state-workspace.md +5 -0
- package/pack/generated/pi/skills/rite-status/SKILL.md +9 -0
- package/pack/generated/pi/skills/rite-temper/SKILL.md +5 -1
- package/pack/generated/pi/skills/rite-upgrade/SKILL.md +9 -1
- package/pack/generated/pi/skills/rite-vet/SKILL.md +28 -6
- package/pack/generated/pi/skills/rite-vet/reference/artifacts.md +19 -0
- package/pack/generated/pi/skills/rite-vet/reference/review-axes.md +5 -0
- package/pack/generated/pi/skills/rite-watch-pr/SKILL.md +2 -0
- package/pack/generated/pi/skills/rite-zoom-out/SKILL.md +2 -0
- package/package.json +1 -1
- package/scripts/build-host-artifacts.sh +48 -2
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
package lib
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"bytes"
|
|
5
|
+
"os"
|
|
6
|
+
"path/filepath"
|
|
7
|
+
"strings"
|
|
8
|
+
"testing"
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
const regressionTasks = `# Tasks
|
|
12
|
+
|
|
13
|
+
| Slice | Outcome | Depends on |
|
|
14
|
+
| --- | --- | --- |
|
|
15
|
+
| SLICE-001 | first | none |
|
|
16
|
+
| SLICE-002 | second | SLICE-001 |
|
|
17
|
+
|
|
18
|
+
## SLICE-001 first
|
|
19
|
+
Goal: one.
|
|
20
|
+
Status: built
|
|
21
|
+
|
|
22
|
+
## SLICE-002 second
|
|
23
|
+
Goal: two.
|
|
24
|
+
Status: pending
|
|
25
|
+
`
|
|
26
|
+
|
|
27
|
+
const regressionSpec = `# Spec
|
|
28
|
+
|
|
29
|
+
## Acceptance criteria
|
|
30
|
+
- [x] AC-001: first thing works
|
|
31
|
+
- [ ] AC-002: second thing works
|
|
32
|
+
`
|
|
33
|
+
|
|
34
|
+
const regressionGates = `# Gates
|
|
35
|
+
|
|
36
|
+
- [x] AC-001: first thing works
|
|
37
|
+
EVIDENCE: attested by reviewer
|
|
38
|
+
- [ ] AC-002: second thing works
|
|
39
|
+
CHECK: go test ./...
|
|
40
|
+
EXPECT: ok
|
|
41
|
+
EVIDENCE: pending
|
|
42
|
+
`
|
|
43
|
+
|
|
44
|
+
const regressionQuestions = `# Questions
|
|
45
|
+
|
|
46
|
+
## q-2026-01-01-001 pick a store
|
|
47
|
+
status: answered
|
|
48
|
+
answer: sqlite
|
|
49
|
+
answered_at: 2026-01-02T00:00:00Z
|
|
50
|
+
|
|
51
|
+
## q-2026-01-01-002 pick a cache
|
|
52
|
+
status: open
|
|
53
|
+
`
|
|
54
|
+
|
|
55
|
+
func regressionWorkspace(t *testing.T, phase string) (root, featureDir string) {
|
|
56
|
+
t.Helper()
|
|
57
|
+
root, featureDir = newWorkspace(t, phase)
|
|
58
|
+
writeFile(t, filepath.Join(featureDir, "spec.md"), regressionSpec)
|
|
59
|
+
writeFile(t, filepath.Join(featureDir, "tasks.md"), regressionTasks)
|
|
60
|
+
writeFile(t, filepath.Join(featureDir, "gates.md"), regressionGates)
|
|
61
|
+
writeFile(t, filepath.Join(featureDir, "questions.md"), regressionQuestions)
|
|
62
|
+
return root, featureDir
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
func checkRegression(t *testing.T, root string, args ...string) (int, string) {
|
|
66
|
+
t.Helper()
|
|
67
|
+
stdout, stderr := &bytes.Buffer{}, &bytes.Buffer{}
|
|
68
|
+
code := RunCheckRegression(root, args, stdout, stderr)
|
|
69
|
+
return code, stdout.String() + stderr.String()
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
func TestRegressionUnprovenWithoutBaseline(t *testing.T) {
|
|
73
|
+
root, _ := regressionWorkspace(t, "build")
|
|
74
|
+
code, out := checkRegression(t, root, "feat")
|
|
75
|
+
if code != 0 || !strings.Contains(out, "unproven") {
|
|
76
|
+
t.Fatalf("code=%d out=%s", code, out)
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
func TestRegressionBaselineUpdateThenCleanPass(t *testing.T) {
|
|
81
|
+
root, _ := regressionWorkspace(t, "build")
|
|
82
|
+
code, out := checkRegression(t, root, "feat", "--update")
|
|
83
|
+
if code != 0 || !strings.Contains(out, "baseline updated") {
|
|
84
|
+
t.Fatalf("update code=%d out=%s", code, out)
|
|
85
|
+
}
|
|
86
|
+
code, out = checkRegression(t, root, "feat")
|
|
87
|
+
if code != 0 || !strings.Contains(out, "PASS") {
|
|
88
|
+
t.Fatalf("check code=%d out=%s", code, out)
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
func TestRegressionDetectsProgressLoss(t *testing.T) {
|
|
93
|
+
root, dir := regressionWorkspace(t, "prove")
|
|
94
|
+
if code, out := checkRegression(t, root, "feat", "--update"); code != 0 {
|
|
95
|
+
t.Fatalf("update code=%d out=%s", code, out)
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
writeFile(t, filepath.Join(dir, "spec.md"), `# Spec
|
|
99
|
+
|
|
100
|
+
## Acceptance criteria
|
|
101
|
+
- [ ] AC-001: first thing works
|
|
102
|
+
- [ ] AC-002: second thing works
|
|
103
|
+
`)
|
|
104
|
+
writeFile(t, filepath.Join(dir, "tasks.md"), strings.Replace(regressionTasks, "Status: built", "Status: in-progress", 1))
|
|
105
|
+
writeFile(t, filepath.Join(dir, "gates.md"), strings.Replace(regressionGates, "- [x] AC-001", "- [ ] AC-001", 1))
|
|
106
|
+
writeFile(t, filepath.Join(dir, "questions.md"), strings.Replace(regressionQuestions, "status: answered", "status: open", 1))
|
|
107
|
+
writeFile(t, filepath.Join(dir, "state.md"), "# State\n\n## Cursor\n| Key | Value |\n| --- | --- |\n| phase | build |\n| status | running |\n")
|
|
108
|
+
|
|
109
|
+
code, out := checkRegression(t, root, "feat")
|
|
110
|
+
if code != 3 {
|
|
111
|
+
t.Fatalf("expected blocked, code=%d out=%s", code, out)
|
|
112
|
+
}
|
|
113
|
+
for _, want := range []string{"AC-001", "gate AC-001", "SLICE-001", "q-2026-01-01-001", "phase moved backward"} {
|
|
114
|
+
if !strings.Contains(out, want) {
|
|
115
|
+
t.Fatalf("missing %q in:\n%s", want, out)
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
func TestRegressionDetectsRemovedArtifact(t *testing.T) {
|
|
121
|
+
root, dir := regressionWorkspace(t, "build")
|
|
122
|
+
if code, _ := checkRegression(t, root, "feat", "--update"); code != 0 {
|
|
123
|
+
t.Fatalf("update failed")
|
|
124
|
+
}
|
|
125
|
+
if err := os.Remove(filepath.Join(dir, "gates.md")); err != nil {
|
|
126
|
+
t.Fatal(err)
|
|
127
|
+
}
|
|
128
|
+
code, out := checkRegression(t, root, "feat")
|
|
129
|
+
if code != 3 || !strings.Contains(out, "gates.md") {
|
|
130
|
+
t.Fatalf("code=%d out=%s", code, out)
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
func TestRegressionIgnoresFencedDecoys(t *testing.T) {
|
|
135
|
+
root, dir := regressionWorkspace(t, "build")
|
|
136
|
+
writeFile(t, filepath.Join(dir, "spec.md"), "# Spec\n\n```\n- [x] AC-099: fenced decoy\n```\n\n## Acceptance criteria\n- [ ] AC-001: real\n")
|
|
137
|
+
if code, out := checkRegression(t, root, "feat", "--update"); code != 0 {
|
|
138
|
+
t.Fatalf("update code=%d out=%s", code, out)
|
|
139
|
+
}
|
|
140
|
+
writeFile(t, filepath.Join(dir, "spec.md"), "# Spec\n\n## Acceptance criteria\n- [ ] AC-001: real\n")
|
|
141
|
+
code, out := checkRegression(t, root, "feat")
|
|
142
|
+
if code != 0 {
|
|
143
|
+
t.Fatalf("fenced decoy was recorded: code=%d out=%s", code, out)
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
func TestRegressionUpdateBlessesAndReports(t *testing.T) {
|
|
148
|
+
root, dir := regressionWorkspace(t, "build")
|
|
149
|
+
if code, _ := checkRegression(t, root, "feat", "--update"); code != 0 {
|
|
150
|
+
t.Fatalf("update failed")
|
|
151
|
+
}
|
|
152
|
+
writeFile(t, filepath.Join(dir, "spec.md"), strings.Replace(regressionSpec, "- [x] AC-001", "- [ ] AC-001", 1))
|
|
153
|
+
code, out := checkRegression(t, root, "feat", "--update")
|
|
154
|
+
if code != 0 || !strings.Contains(out, "REGRESSION-BLESSED") {
|
|
155
|
+
t.Fatalf("update code=%d out=%s", code, out)
|
|
156
|
+
}
|
|
157
|
+
if code, out := checkRegression(t, root, "feat"); code != 0 {
|
|
158
|
+
t.Fatalf("post-bless check should pass: code=%d out=%s", code, out)
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
func TestRegressionCorruptBaselineBlocks(t *testing.T) {
|
|
163
|
+
root, dir := regressionWorkspace(t, "build")
|
|
164
|
+
writeFile(t, filepath.Join(dir, regressionBaselineFile), "{not json")
|
|
165
|
+
code, out := checkRegression(t, root, "feat")
|
|
166
|
+
if code != 3 || !strings.Contains(out, "unreadable") {
|
|
167
|
+
t.Fatalf("code=%d out=%s", code, out)
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
func TestRegressionUsageErrors(t *testing.T) {
|
|
172
|
+
root, _ := regressionWorkspace(t, "build")
|
|
173
|
+
if code, _ := checkRegression(t, root); code != 2 {
|
|
174
|
+
t.Fatalf("no args code=%d", code)
|
|
175
|
+
}
|
|
176
|
+
if code, _ := checkRegression(t, root, "feat", "--bogus"); code != 2 {
|
|
177
|
+
t.Fatalf("bad flag code=%d", code)
|
|
178
|
+
}
|
|
179
|
+
}
|
|
@@ -55,6 +55,6 @@ func resolveWorkspace(t *testing.T, questions string) string {
|
|
|
55
55
|
root := t.TempDir()
|
|
56
56
|
testutil.WriteFile(t, filepath.Join(root, "ACTIVE"), "feat\n")
|
|
57
57
|
testutil.WriteFile(t, filepath.Join(root, "work", "feat", "questions.md"), questions)
|
|
58
|
-
testutil.WriteFile(t, filepath.Join(root, "work", "feat", "state.md"), "- Status: running\n- Next step: continue\n- Schema:
|
|
58
|
+
testutil.WriteFile(t, filepath.Join(root, "work", "feat", "state.md"), "- Status: running\n- Next step: continue\n- Schema: 4\n")
|
|
59
59
|
return root
|
|
60
60
|
}
|
|
@@ -348,7 +348,7 @@ func TestSecretScanBlocksHighSeverityTouchedFile(t *testing.T) {
|
|
|
348
348
|
root := filepath.Join(project, ".devrites")
|
|
349
349
|
testutil.WriteFile(t, filepath.Join(root, "ACTIVE"), "leak\n")
|
|
350
350
|
testutil.WriteFile(t, filepath.Join(root, "work", "leak", "touched-files.md"), candidateTestManifest(candidateTestRow{state: "present", path: "secrets.txt", slice: "S-1", reason: "Credential check."}))
|
|
351
|
-
testutil.WriteFile(t, filepath.Join(root, "work", "leak", "state.md"), "| schema |
|
|
351
|
+
testutil.WriteFile(t, filepath.Join(root, "work", "leak", "state.md"), "| schema | 4 |\n")
|
|
352
352
|
secret := "ghp_" + strings.Repeat("f", 32)
|
|
353
353
|
testutil.WriteFile(t, filepath.Join(project, "secrets.txt"), secret+"\n")
|
|
354
354
|
var out, err bytes.Buffer
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
package lib
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"fmt"
|
|
5
|
+
"io"
|
|
6
|
+
"regexp"
|
|
7
|
+
"strings"
|
|
8
|
+
|
|
9
|
+
"github.com/devrites/devrites/internal/state"
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
// slicecheck.go: pre-dispatch lint for one slice's wright contract. A wright
|
|
13
|
+
// dispatch is the most expensive step in a lifecycle; contract defects (missing
|
|
14
|
+
// allowlist, non-exact paths, AC references that do not exist in spec.md, no
|
|
15
|
+
// proof plan) surface only at return inspection — after the tokens are spent.
|
|
16
|
+
// This check fails before dispatch instead.
|
|
17
|
+
//
|
|
18
|
+
// devrites-engine check slice <slug> <SLICE-ID>
|
|
19
|
+
//
|
|
20
|
+
// 0 contract holds 2 usage error 3 blocked: problems listed
|
|
21
|
+
|
|
22
|
+
var (
|
|
23
|
+
sliceFieldRe = regexp.MustCompile(`(?m)^([A-Za-z][A-Za-z /_-]*):\s*(.*)$`)
|
|
24
|
+
sliceACRe = regexp.MustCompile(`\bAC-\d+\b`)
|
|
25
|
+
pathGlobCharRe = regexp.MustCompile(`[*?\[\]{}]`)
|
|
26
|
+
pathTraversalRe = regexp.MustCompile(`(^|/)\.\.(/|$)`)
|
|
27
|
+
devritesPathRe = regexp.MustCompile(`(?i)^\.?devrites(/|$)`)
|
|
28
|
+
windowsDrivePath = regexp.MustCompile(`^[A-Za-z]:[\\/]`)
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
// sliceFields extracts the single-line `Field: value` pairs of a slice block.
|
|
32
|
+
func sliceFields(block string) map[string]string {
|
|
33
|
+
fields := map[string]string{}
|
|
34
|
+
for _, m := range sliceFieldRe.FindAllStringSubmatch(block, -1) {
|
|
35
|
+
key := strings.ToLower(strings.TrimSpace(m[1]))
|
|
36
|
+
if _, seen := fields[key]; !seen {
|
|
37
|
+
fields[key] = strings.TrimSpace(m[2])
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return fields
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// fieldValue returns the first matching field value among aliases.
|
|
44
|
+
func fieldValue(fields map[string]string, aliases ...string) (string, bool) {
|
|
45
|
+
for _, name := range aliases {
|
|
46
|
+
if v, ok := fields[name]; ok {
|
|
47
|
+
return v, true
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return "", false
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// parsePathList splits a `;` or `,` separated project-relative path list.
|
|
54
|
+
func parsePathList(raw string) []string {
|
|
55
|
+
var out []string
|
|
56
|
+
for _, part := range strings.FieldsFunc(raw, func(r rune) bool { return r == ';' || r == ',' }) {
|
|
57
|
+
p := strings.Trim(strings.TrimSpace(part), "`'\"")
|
|
58
|
+
if p != "" && !strings.EqualFold(p, "none") {
|
|
59
|
+
out = append(out, p)
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return out
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// checkAllowlistPaths validates the exact-path contract: project-relative files
|
|
66
|
+
// only — no directories, globs, traversal, .devrites, or duplicates.
|
|
67
|
+
func checkAllowlistPaths(paths []string) []string {
|
|
68
|
+
var problems []string
|
|
69
|
+
seen := map[string]bool{}
|
|
70
|
+
for _, p := range paths {
|
|
71
|
+
switch {
|
|
72
|
+
case strings.HasPrefix(p, "/") || windowsDrivePath.MatchString(p):
|
|
73
|
+
problems = append(problems, fmt.Sprintf("allowlist path %q is not project-relative", p))
|
|
74
|
+
case pathTraversalRe.MatchString(p):
|
|
75
|
+
problems = append(problems, fmt.Sprintf("allowlist path %q escapes the project (..)", p))
|
|
76
|
+
case pathGlobCharRe.MatchString(p):
|
|
77
|
+
problems = append(problems, fmt.Sprintf("allowlist path %q uses a glob — exact paths only", p))
|
|
78
|
+
case strings.HasSuffix(p, "/"):
|
|
79
|
+
problems = append(problems, fmt.Sprintf("allowlist path %q is a directory — exact files only", p))
|
|
80
|
+
case devritesPathRe.MatchString(p):
|
|
81
|
+
problems = append(problems, fmt.Sprintf("allowlist path %q targets .devrites — wrights never write workflow state", p))
|
|
82
|
+
case seen[p]:
|
|
83
|
+
problems = append(problems, fmt.Sprintf("allowlist path %q is duplicated", p))
|
|
84
|
+
}
|
|
85
|
+
seen[p] = true
|
|
86
|
+
}
|
|
87
|
+
return problems
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// RunCheckSlice lints one slice's dispatch contract.
|
|
91
|
+
func RunCheckSlice(root string, args []string, stdout, stderr io.Writer) int {
|
|
92
|
+
if len(args) != 2 {
|
|
93
|
+
fmt.Fprintln(stderr, "usage: devrites-engine check slice <slug> <SLICE-ID>")
|
|
94
|
+
return 2
|
|
95
|
+
}
|
|
96
|
+
slug, sliceID := args[0], args[1]
|
|
97
|
+
if !state.ValidSliceID(sliceID) {
|
|
98
|
+
fmt.Fprintf(stderr, "check slice: %q is not a SLICE-### id\n", sliceID)
|
|
99
|
+
return 2
|
|
100
|
+
}
|
|
101
|
+
tasks, err := readWorkspaceArtifact(root, slug, "tasks.md")
|
|
102
|
+
if err != nil {
|
|
103
|
+
fmt.Fprintf(stderr, "check slice: %v\n", err)
|
|
104
|
+
return 3
|
|
105
|
+
}
|
|
106
|
+
block, ok := state.ExtractTaskSlice(tasks, sliceID)
|
|
107
|
+
if !ok {
|
|
108
|
+
fmt.Fprintf(stderr, "check slice: %s not found in tasks.md\n", sliceID)
|
|
109
|
+
return 3
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
var problems []string
|
|
113
|
+
fields := sliceFields(block)
|
|
114
|
+
|
|
115
|
+
if goal, ok := fieldValue(fields, "goal"); !ok || goal == "" {
|
|
116
|
+
problems = append(problems, "Goal field missing or empty")
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
allowRaw, hasAllow := fieldValue(fields, "writer allowlist")
|
|
120
|
+
var allowlist []string
|
|
121
|
+
if !hasAllow || len(parsePathList(allowRaw)) == 0 {
|
|
122
|
+
problems = append(problems, "Writer allowlist missing or empty — dispatch requires exact project-relative paths")
|
|
123
|
+
} else {
|
|
124
|
+
allowlist = parsePathList(allowRaw)
|
|
125
|
+
problems = append(problems, checkAllowlistPaths(allowlist)...)
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if touchedRaw, ok := fieldValue(fields, "files likely touched"); ok {
|
|
129
|
+
allowed := map[string]bool{}
|
|
130
|
+
for _, p := range allowlist {
|
|
131
|
+
allowed[p] = true
|
|
132
|
+
}
|
|
133
|
+
for _, p := range parsePathList(touchedRaw) {
|
|
134
|
+
if hasAllow && !allowed[p] {
|
|
135
|
+
problems = append(problems, fmt.Sprintf("Files likely touched %q is outside the Writer allowlist", p))
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
acs := sliceACRe.FindAllString(block, -1)
|
|
141
|
+
if len(acs) == 0 {
|
|
142
|
+
problems = append(problems, "no AC-### coverage declared — every slice must satisfy acceptance criteria")
|
|
143
|
+
} else {
|
|
144
|
+
spec, specErr := readWorkspaceArtifact(root, slug, "spec.md")
|
|
145
|
+
if specErr != nil {
|
|
146
|
+
problems = append(problems, fmt.Sprintf("spec.md unavailable — cannot verify %d AC reference(s)", len(acs)))
|
|
147
|
+
} else {
|
|
148
|
+
specText := string(spec)
|
|
149
|
+
seen := map[string]bool{}
|
|
150
|
+
var unknown []string
|
|
151
|
+
for _, ac := range acs {
|
|
152
|
+
if seen[ac] {
|
|
153
|
+
continue
|
|
154
|
+
}
|
|
155
|
+
seen[ac] = true
|
|
156
|
+
if !strings.Contains(specText, ac) {
|
|
157
|
+
unknown = append(unknown, ac)
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
for _, ac := range unknown {
|
|
161
|
+
problems = append(problems, fmt.Sprintf("%s is referenced but not declared in spec.md", ac))
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if proof, ok := fieldValue(fields, "tests/proof", "tests", "proof"); !ok || proof == "" {
|
|
167
|
+
problems = append(problems, "Tests/proof field missing or empty — no evidence plan for the slice")
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
if len(problems) > 0 {
|
|
171
|
+
fmt.Fprintf(stdout, "check slice: %s BLOCKED\n", sliceID)
|
|
172
|
+
for _, p := range problems {
|
|
173
|
+
fmt.Fprintf(stdout, " - %s\n", p)
|
|
174
|
+
}
|
|
175
|
+
return 3
|
|
176
|
+
}
|
|
177
|
+
fmt.Fprintf(stdout, "check slice: %s ok (paths=%d acs=%d)\n", sliceID, len(allowlist), len(acs))
|
|
178
|
+
return 0
|
|
179
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
package lib
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"bytes"
|
|
5
|
+
"path/filepath"
|
|
6
|
+
"strings"
|
|
7
|
+
"testing"
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
func sliceWorkspace(t *testing.T, tasks, spec string) (root string) {
|
|
11
|
+
t.Helper()
|
|
12
|
+
root, featureDir := newWorkspace(t, "build")
|
|
13
|
+
writeFile(t, filepath.Join(featureDir, "tasks.md"), tasks)
|
|
14
|
+
if spec != "" {
|
|
15
|
+
writeFile(t, filepath.Join(featureDir, "spec.md"), spec)
|
|
16
|
+
}
|
|
17
|
+
return root
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const goodSliceTasks = `# Tasks
|
|
21
|
+
|
|
22
|
+
## SLICE-001 Wire the thing
|
|
23
|
+
Goal: do the thing.
|
|
24
|
+
Satisfies: AC-001, AC-002
|
|
25
|
+
Acceptance criteria: thing works
|
|
26
|
+
Dependencies: none
|
|
27
|
+
depends_on: []
|
|
28
|
+
Writer allowlist: src/a.go; src/a_test.go
|
|
29
|
+
Files likely touched: src/a.go; src/a_test.go
|
|
30
|
+
Tests/proof: run go test ./...
|
|
31
|
+
Status: pending
|
|
32
|
+
`
|
|
33
|
+
|
|
34
|
+
const sliceSpec = `# Spec
|
|
35
|
+
|
|
36
|
+
- [ ] AC-001: thing works.
|
|
37
|
+
- [ ] AC-002: thing is verified.
|
|
38
|
+
`
|
|
39
|
+
|
|
40
|
+
func TestCheckSlicePassesValidContract(t *testing.T) {
|
|
41
|
+
root := sliceWorkspace(t, goodSliceTasks, sliceSpec)
|
|
42
|
+
stdout, stderr := &bytes.Buffer{}, &bytes.Buffer{}
|
|
43
|
+
code := RunCheckSlice(root, []string{"feat", "SLICE-001"}, stdout, stderr)
|
|
44
|
+
if code != 0 {
|
|
45
|
+
t.Fatalf("code=%d want 0\n%s%s", code, stdout, stderr)
|
|
46
|
+
}
|
|
47
|
+
if !strings.Contains(stdout.String(), "paths=2") || !strings.Contains(stdout.String(), "acs=2") {
|
|
48
|
+
t.Fatalf("unexpected output:\n%s", stdout)
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
func TestCheckSliceBlocksContractDefects(t *testing.T) {
|
|
53
|
+
tasks := `# Tasks
|
|
54
|
+
|
|
55
|
+
## SLICE-001 Bad contract
|
|
56
|
+
Satisfies: AC-099
|
|
57
|
+
Writer allowlist: ../escape.go; src/*.go; .devrites/state.md; src/dup.go; src/dup.go
|
|
58
|
+
Files likely touched: src/not-listed.go
|
|
59
|
+
`
|
|
60
|
+
root := sliceWorkspace(t, tasks, sliceSpec)
|
|
61
|
+
stdout, stderr := &bytes.Buffer{}, &bytes.Buffer{}
|
|
62
|
+
code := RunCheckSlice(root, []string{"feat", "SLICE-001"}, stdout, stderr)
|
|
63
|
+
if code != 3 {
|
|
64
|
+
t.Fatalf("code=%d want 3\n%s%s", code, stdout, stderr)
|
|
65
|
+
}
|
|
66
|
+
out := stdout.String()
|
|
67
|
+
for _, want := range []string{
|
|
68
|
+
"Goal field missing",
|
|
69
|
+
"escapes the project",
|
|
70
|
+
"glob",
|
|
71
|
+
".devrites",
|
|
72
|
+
"duplicated",
|
|
73
|
+
"outside the Writer allowlist",
|
|
74
|
+
"AC-099",
|
|
75
|
+
"Tests/proof field missing",
|
|
76
|
+
} {
|
|
77
|
+
if !strings.Contains(out, want) {
|
|
78
|
+
t.Fatalf("missing problem %q:\n%s", want, out)
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
func TestCheckSliceMissingSliceAndArgs(t *testing.T) {
|
|
84
|
+
root := sliceWorkspace(t, goodSliceTasks, sliceSpec)
|
|
85
|
+
stdout, stderr := &bytes.Buffer{}, &bytes.Buffer{}
|
|
86
|
+
if code := RunCheckSlice(root, []string{"feat", "SLICE-042"}, stdout, stderr); code != 3 {
|
|
87
|
+
t.Fatalf("unknown slice code=%d want 3", code)
|
|
88
|
+
}
|
|
89
|
+
if code := RunCheckSlice(root, []string{"feat", "not-a-slice"}, stdout, stderr); code != 2 {
|
|
90
|
+
t.Fatalf("bad id code=%d want 2", code)
|
|
91
|
+
}
|
|
92
|
+
if code := RunCheckSlice(root, []string{"feat"}, stdout, stderr); code != 2 {
|
|
93
|
+
t.Fatalf("missing arg code=%d want 2", code)
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
func TestCheckSliceRejectsSliceWithNoAC(t *testing.T) {
|
|
98
|
+
tasks := `# Tasks
|
|
99
|
+
|
|
100
|
+
## SLICE-001 Chore
|
|
101
|
+
Goal: tidy.
|
|
102
|
+
Writer allowlist: src/a.go
|
|
103
|
+
Tests/proof: none needed
|
|
104
|
+
`
|
|
105
|
+
root := sliceWorkspace(t, tasks, sliceSpec)
|
|
106
|
+
stdout, stderr := &bytes.Buffer{}, &bytes.Buffer{}
|
|
107
|
+
code := RunCheckSlice(root, []string{"feat", "SLICE-001"}, stdout, stderr)
|
|
108
|
+
if code != 3 || !strings.Contains(stdout.String(), "no AC-### coverage") {
|
|
109
|
+
t.Fatalf("code=%d out:\n%s%s", code, stdout, stderr)
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -259,7 +259,7 @@ func TestObserveSummaryExposesTaskGraphProblems(t *testing.T) {
|
|
|
259
259
|
if err := os.MkdirAll(workspace, 0o755); err != nil {
|
|
260
260
|
t.Fatal(err)
|
|
261
261
|
}
|
|
262
|
-
if err := os.WriteFile(filepath.Join(workspace, "state.md"), []byte("| phase | define |\n| schema |
|
|
262
|
+
if err := os.WriteFile(filepath.Join(workspace, "state.md"), []byte("| phase | define |\n| schema | 4 |\n"), 0o644); err != nil {
|
|
263
263
|
t.Fatal(err)
|
|
264
264
|
}
|
|
265
265
|
body := `# Tasks
|
|
@@ -308,7 +308,7 @@ func TestObserveSummaryExposesProblemsWhenNoSliceHeaders(t *testing.T) {
|
|
|
308
308
|
if err := os.MkdirAll(workspace, 0o755); err != nil {
|
|
309
309
|
t.Fatal(err)
|
|
310
310
|
}
|
|
311
|
-
if err := os.WriteFile(filepath.Join(workspace, "state.md"), []byte("| phase | define |\n| schema |
|
|
311
|
+
if err := os.WriteFile(filepath.Join(workspace, "state.md"), []byte("| phase | define |\n| schema | 4 |\n"), 0o644); err != nil {
|
|
312
312
|
t.Fatal(err)
|
|
313
313
|
}
|
|
314
314
|
if err := os.WriteFile(filepath.Join(workspace, "tasks.md"), []byte("# Tasks\n\n- do the work\n"), 0o644); err != nil {
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
package lib
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"os"
|
|
5
|
+
"path/filepath"
|
|
6
|
+
"regexp"
|
|
7
|
+
"slices"
|
|
8
|
+
"sort"
|
|
9
|
+
"strings"
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
// triggers.go: advisory trigger suggestions for `context`. Declared triggers are
|
|
13
|
+
// semantic — only the model may apply them — but the *facts* that make one
|
|
14
|
+
// relevant are deterministic: sentinel files, workspace-artifact keywords, and
|
|
15
|
+
// the dispatch role. Suggesting from facts removes per-invocation guesswork and
|
|
16
|
+
// the two failure modes it causes (over-loading wastes tokens; under-loading
|
|
17
|
+
// skips rules and costs a repair round). Suggestions are additive only: they
|
|
18
|
+
// never veto a caller-selected trigger and are never applied automatically.
|
|
19
|
+
|
|
20
|
+
// triggerFacts is the evidence base for suggestions.
|
|
21
|
+
type triggerFacts struct {
|
|
22
|
+
role string
|
|
23
|
+
afk bool
|
|
24
|
+
afkParallel bool
|
|
25
|
+
principles bool
|
|
26
|
+
corpus string // lowercased text of spec/plan/tasks/design brief
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// triggerEvidenceFiles bounds which workspace artifacts feed keyword matching.
|
|
30
|
+
var triggerEvidenceFiles = []string{"spec.md", "plan.md", "tasks.md", "design-brief.md"}
|
|
31
|
+
|
|
32
|
+
const triggerEvidenceFileCap = 256 << 10
|
|
33
|
+
|
|
34
|
+
var (
|
|
35
|
+
uiSignalRe = regexp.MustCompile(`\b(frontend|front-end|\bui\b|\bux\b|css|tailwind|stylesheet|component|responsive|layout|browser|viewport|screen reader|landing page|design[- ]brief|react|vue|svelte|next\.?js)\b`)
|
|
36
|
+
secSignalRe = regexp.MustCompile(`\b(auth|authentication|authorization|login|password|secret|token|credential|permission|encrypt|crypto|oauth|session|cookie|inject|xss|csrf|ssrf|webhook|untrusted|input validat)`)
|
|
37
|
+
tddSignalRe = regexp.MustCompile(`\b(tdd|test[- ]first|test driven)\b`)
|
|
38
|
+
topoSignalRe = regexp.MustCompile(`(migrat|\bschema\b|\bsql\b|database|postgres|mysql|sqlite|mongo|\bqueue\b|kafka|rabbitmq|redis|\bcache\b|webhook|monorepo|multi[- ]root|multi[- ]service|microservice|\bgrpc\b|graphql|\brest\b|\bapi\b|message broker)`)
|
|
39
|
+
wfaSignalRe = regexp.MustCompile(`workflow[- ]artifact`)
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
// triggerSignals maps declared trigger-name shapes to facts. nameRe is matched
|
|
43
|
+
// case-insensitively against each declared (unselected) trigger name.
|
|
44
|
+
var triggerSignals = []struct {
|
|
45
|
+
nameRe *regexp.Regexp
|
|
46
|
+
fires func(triggerFacts) bool
|
|
47
|
+
}{
|
|
48
|
+
{regexp.MustCompile(`afk`), func(f triggerFacts) bool { return f.afk }},
|
|
49
|
+
{regexp.MustCompile(`parallel`), func(f triggerFacts) bool { return f.afkParallel }},
|
|
50
|
+
{regexp.MustCompile(`frontend|^ui$|ux|design`), func(f triggerFacts) bool { return uiSignalRe.MatchString(f.corpus) }},
|
|
51
|
+
{regexp.MustCompile(`security|^sec`), func(f triggerFacts) bool { return secSignalRe.MatchString(f.corpus) }},
|
|
52
|
+
{regexp.MustCompile(`tdd`), func(f triggerFacts) bool { return tddSignalRe.MatchString(f.corpus) }},
|
|
53
|
+
{regexp.MustCompile(`applicability|topology|data[-_]?integrity|integration|repository`), func(f triggerFacts) bool {
|
|
54
|
+
return topoSignalRe.MatchString(f.corpus)
|
|
55
|
+
}},
|
|
56
|
+
{regexp.MustCompile(`principles`), func(f triggerFacts) bool { return f.principles }},
|
|
57
|
+
{regexp.MustCompile(`workflow[-_]?artifacts?`), func(f triggerFacts) bool {
|
|
58
|
+
return wfaSignalRe.MatchString(f.corpus)
|
|
59
|
+
}},
|
|
60
|
+
// A writer role authors product source/tests; the craft-rule triggers apply.
|
|
61
|
+
{regexp.MustCompile(`coding|errors?|patterns?|^dod$|definition|testing`), func(f triggerFacts) bool {
|
|
62
|
+
return f.role == "slice-wright"
|
|
63
|
+
}},
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// suggestTriggers returns declared, unselected trigger names whose firing facts
|
|
67
|
+
// hold in this workspace. Sorted for stable output.
|
|
68
|
+
func suggestTriggers(manifest loadsManifest, root, featureDir string, opts contextOpts) []string {
|
|
69
|
+
facts := gatherTriggerFacts(root, featureDir, opts.role)
|
|
70
|
+
var suggested []string
|
|
71
|
+
for name := range manifest.Triggers {
|
|
72
|
+
if slices.Contains(opts.triggers, name) {
|
|
73
|
+
continue
|
|
74
|
+
}
|
|
75
|
+
lower := strings.ToLower(name)
|
|
76
|
+
for _, signal := range triggerSignals {
|
|
77
|
+
if signal.nameRe.MatchString(lower) && signal.fires(facts) {
|
|
78
|
+
suggested = append(suggested, name)
|
|
79
|
+
break
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
sort.Strings(suggested)
|
|
84
|
+
return suggested
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
func gatherTriggerFacts(root, featureDir, role string) triggerFacts {
|
|
88
|
+
facts := triggerFacts{role: role}
|
|
89
|
+
if root != "" {
|
|
90
|
+
afkPath := filepath.Join(root, "AFK")
|
|
91
|
+
if info, err := os.Stat(afkPath); err == nil && info.Mode().IsRegular() {
|
|
92
|
+
facts.afk = true
|
|
93
|
+
if data, err := os.ReadFile(afkPath); err == nil { // #nosec G304 -- .devrites/AFK sentinel
|
|
94
|
+
facts.afkParallel = afkAllowsParallel(string(data))
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if info, err := os.Stat(filepath.Join(root, "principles.md")); err == nil && info.Mode().IsRegular() {
|
|
98
|
+
facts.principles = true
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if featureDir != "" {
|
|
102
|
+
var corpus strings.Builder
|
|
103
|
+
for _, name := range triggerEvidenceFiles {
|
|
104
|
+
path := filepath.Join(featureDir, name)
|
|
105
|
+
info, err := os.Stat(path)
|
|
106
|
+
if err != nil || !info.Mode().IsRegular() || info.Size() > triggerEvidenceFileCap {
|
|
107
|
+
continue
|
|
108
|
+
}
|
|
109
|
+
// #nosec G304 -- workspace artifact; size cap checked above
|
|
110
|
+
if data, err := os.ReadFile(path); err == nil {
|
|
111
|
+
corpus.Write(data)
|
|
112
|
+
corpus.WriteByte('\n')
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
facts.corpus = strings.ToLower(corpus.String())
|
|
116
|
+
}
|
|
117
|
+
return facts
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
var afkParallelRe = regexp.MustCompile(`(?m)^\s*max_parallel\s*:\s*([0-9]+)\s*$`)
|
|
121
|
+
|
|
122
|
+
// afkAllowsParallel reports whether the AFK sentinel declares max_parallel > 1.
|
|
123
|
+
func afkAllowsParallel(content string) bool {
|
|
124
|
+
m := afkParallelRe.FindStringSubmatch(content)
|
|
125
|
+
if len(m) < 2 {
|
|
126
|
+
return false
|
|
127
|
+
}
|
|
128
|
+
n := 0
|
|
129
|
+
for _, r := range m[1] {
|
|
130
|
+
n = n*10 + int(r-'0')
|
|
131
|
+
}
|
|
132
|
+
return n > 1
|
|
133
|
+
}
|