devrites 7.1.1 → 7.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/README.md +9 -4
- package/docs/dsh.md +46 -0
- package/engine/internal/devritespaths/paths.go +2 -0
- package/engine/internal/hostpack/hostpack.go +29 -5
- package/engine/internal/install/apply.go +14 -2
- package/engine/internal/install/install.go +7 -3
- package/engine/internal/install/merge.go +1 -0
- package/engine/internal/install/preflight.go +9 -2
- package/engine/internal/install/update.go +1 -1
- package/engine/internal/lib/dispatch_packet.go +1 -1
- package/pack/.claude/agents/devrites-upgrade-planner.md +12 -4
- package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +21 -4
- package/pack/.claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +10 -3
- package/pack/.claude/skills/devrites-debug-recovery/reference/regression-test.md +7 -4
- package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +11 -11
- package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +52 -56
- package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +11 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/core.md +41 -40
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +12 -14
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +34 -38
- package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +38 -39
- package/pack/.claude/skills/rite-define/SKILL.md +28 -27
- package/pack/.claude/skills/rite-plan/SKILL.md +7 -2
- package/pack/.claude/skills/rite-plan/reference/replan-and-repair.md +5 -2
- package/pack/.claude/skills/rite-resolve/SKILL.md +17 -10
- package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +18 -6
- package/pack/.claude/skills/rite-review/SKILL.md +4 -4
- package/pack/.claude/skills/rite-review/reference/security-review.md +4 -2
- package/pack/.claude/skills/rite-seal/SKILL.md +28 -33
- package/pack/.claude/skills/rite-ship/SKILL.md +14 -7
- package/pack/.claude/skills/rite-temper/SKILL.md +18 -18
- package/pack/.claude/skills/rite-temper/reference/scope-modes.md +6 -7
- package/pack/.claude/skills/rite-upgrade/SKILL.md +7 -2
- package/pack/.claude/skills/rite-vet/SKILL.md +33 -34
- package/pack/generated/README.md +3 -1
- package/pack/generated/claude/agents/devrites-upgrade-planner.md +12 -4
- package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +21 -4
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +10 -3
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/regression-test.md +7 -4
- package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +11 -11
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +52 -56
- package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +11 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +41 -40
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +12 -14
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +34 -38
- package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +38 -39
- package/pack/generated/claude/skills/rite-define/SKILL.md +28 -27
- package/pack/generated/claude/skills/rite-plan/SKILL.md +7 -2
- package/pack/generated/claude/skills/rite-plan/reference/replan-and-repair.md +5 -2
- package/pack/generated/claude/skills/rite-resolve/SKILL.md +17 -10
- package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +18 -6
- package/pack/generated/claude/skills/rite-review/SKILL.md +4 -4
- package/pack/generated/claude/skills/rite-review/reference/security-review.md +4 -2
- package/pack/generated/claude/skills/rite-seal/SKILL.md +28 -33
- package/pack/generated/claude/skills/rite-ship/SKILL.md +14 -7
- package/pack/generated/claude/skills/rite-temper/SKILL.md +18 -18
- package/pack/generated/claude/skills/rite-temper/reference/scope-modes.md +6 -7
- package/pack/generated/claude/skills/rite-upgrade/SKILL.md +7 -2
- package/pack/generated/claude/skills/rite-vet/SKILL.md +33 -34
- package/pack/generated/codex/agents/devrites-upgrade-planner.toml +12 -4
- package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +21 -4
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +10 -3
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/regression-test.md +7 -4
- package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +11 -11
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +52 -56
- package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +11 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +41 -40
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +12 -14
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +34 -38
- package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +38 -39
- package/pack/generated/codex/skills/rite-define/SKILL.md +28 -27
- package/pack/generated/codex/skills/rite-plan/SKILL.md +7 -2
- package/pack/generated/codex/skills/rite-plan/reference/replan-and-repair.md +5 -2
- package/pack/generated/codex/skills/rite-resolve/SKILL.md +17 -10
- package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +18 -6
- package/pack/generated/codex/skills/rite-review/SKILL.md +4 -4
- package/pack/generated/codex/skills/rite-review/reference/security-review.md +4 -2
- package/pack/generated/codex/skills/rite-seal/SKILL.md +28 -33
- package/pack/generated/codex/skills/rite-ship/SKILL.md +14 -7
- package/pack/generated/codex/skills/rite-temper/SKILL.md +18 -18
- package/pack/generated/codex/skills/rite-temper/reference/scope-modes.md +6 -7
- package/pack/generated/codex/skills/rite-upgrade/SKILL.md +7 -2
- package/pack/generated/codex/skills/rite-vet/SKILL.md +33 -34
- package/pack/generated/devin/agents/devrites-upgrade-planner.md +12 -4
- package/pack/generated/devin/skills/devrites-debug-recovery/SKILL.md +21 -4
- package/pack/generated/devin/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +10 -3
- package/pack/generated/devin/skills/devrites-debug-recovery/reference/regression-test.md +7 -4
- package/pack/generated/devin/skills/devrites-lib/reference/reply-contract.md +11 -11
- package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +52 -56
- package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +11 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/core.md +41 -40
- package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +12 -14
- package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +34 -38
- package/pack/generated/devin/skills/rite-autocomplete/reference/stop-conditions.md +38 -39
- package/pack/generated/devin/skills/rite-define/SKILL.md +28 -27
- package/pack/generated/devin/skills/rite-plan/SKILL.md +7 -2
- package/pack/generated/devin/skills/rite-plan/reference/replan-and-repair.md +5 -2
- package/pack/generated/devin/skills/rite-resolve/SKILL.md +17 -10
- package/pack/generated/devin/skills/rite-resolve/reference/answer-protocol.md +18 -6
- package/pack/generated/devin/skills/rite-review/SKILL.md +4 -4
- package/pack/generated/devin/skills/rite-review/reference/security-review.md +4 -2
- package/pack/generated/devin/skills/rite-seal/SKILL.md +28 -33
- package/pack/generated/devin/skills/rite-ship/SKILL.md +14 -7
- package/pack/generated/devin/skills/rite-temper/SKILL.md +18 -18
- package/pack/generated/devin/skills/rite-temper/reference/scope-modes.md +6 -7
- package/pack/generated/devin/skills/rite-upgrade/SKILL.md +7 -2
- package/pack/generated/devin/skills/rite-vet/SKILL.md +33 -34
- package/pack/generated/dsh/AGENTS.md +20 -0
- package/pack/generated/dsh/agents/devrites-code-reviewer.md +180 -0
- package/pack/generated/dsh/agents/devrites-devex-reviewer.md +137 -0
- package/pack/generated/dsh/agents/devrites-doubt-reviewer.md +100 -0
- package/pack/generated/dsh/agents/devrites-evidence-scout.md +93 -0
- package/pack/generated/dsh/agents/devrites-frontend-reviewer.md +139 -0
- package/pack/generated/dsh/agents/devrites-performance-reviewer.md +142 -0
- package/pack/generated/dsh/agents/devrites-plan-drafter.md +113 -0
- package/pack/generated/dsh/agents/devrites-plan-reviewer.md +167 -0
- package/pack/generated/dsh/agents/devrites-proof-runner.md +101 -0
- package/pack/generated/dsh/agents/devrites-retrospector.md +82 -0
- package/pack/generated/dsh/agents/devrites-security-auditor.md +146 -0
- package/pack/generated/dsh/agents/devrites-simplifier-reviewer.md +113 -0
- package/pack/generated/dsh/agents/devrites-slice-wright.md +240 -0
- package/pack/generated/dsh/agents/devrites-spec-reviewer.md +105 -0
- package/pack/generated/dsh/agents/devrites-strategy-reviewer.md +109 -0
- package/pack/generated/dsh/agents/devrites-test-analyst.md +110 -0
- package/pack/generated/dsh/agents/devrites-upgrade-planner.md +107 -0
- package/pack/generated/dsh/agents/fast-builder.md +92 -0
- package/pack/generated/dsh/agents/fast-checker.md +61 -0
- package/pack/generated/dsh/agents/fast-critic.md +71 -0
- package/pack/generated/dsh/agents/fast-planner.md +95 -0
- package/pack/generated/dsh/agents/overhaul-backend-engineer.md +70 -0
- package/pack/generated/dsh/agents/overhaul-boundary.md +64 -0
- package/pack/generated/dsh/agents/overhaul-craft.md +85 -0
- package/pack/generated/dsh/agents/overhaul-frontend-engineer.md +73 -0
- package/pack/generated/dsh/agents/overhaul-implementer.md +72 -0
- package/pack/generated/dsh/agents/overhaul-recon.md +77 -0
- package/pack/generated/dsh/agents/overhaul-specialist.md +67 -0
- package/pack/generated/dsh/agents/overhaul-verifier.md +73 -0
- package/pack/generated/dsh/runtime/cordis.patch.yml +1450 -0
- package/pack/generated/dsh/runtime/specialist.mjs +62 -0
- package/pack/generated/dsh/skills/devrites-api-interface/SKILL.md +65 -0
- package/pack/generated/dsh/skills/devrites-audit/SKILL.md +60 -0
- package/pack/generated/dsh/skills/devrites-browser-proof/SKILL.md +109 -0
- package/pack/generated/dsh/skills/devrites-browser-proof/reference/browser-performance.md +19 -0
- package/pack/generated/dsh/skills/devrites-browser-proof/reference/visual-verdict.md +38 -0
- package/pack/generated/dsh/skills/devrites-debug-recovery/SKILL.md +119 -0
- package/pack/generated/dsh/skills/devrites-debug-recovery/reference/build-the-loop.md +58 -0
- package/pack/generated/dsh/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +41 -0
- package/pack/generated/dsh/skills/devrites-debug-recovery/reference/hypotheses.md +23 -0
- package/pack/generated/dsh/skills/devrites-debug-recovery/reference/instrumentation.md +21 -0
- package/pack/generated/dsh/skills/devrites-debug-recovery/reference/regression-test.md +33 -0
- package/pack/generated/dsh/skills/devrites-debug-recovery/reference/trace.md +25 -0
- package/pack/generated/dsh/skills/devrites-doubt/SKILL.md +83 -0
- package/pack/generated/dsh/skills/devrites-frontend-craft/SKILL.md +89 -0
- package/pack/generated/dsh/skills/devrites-frontend-craft/reference/craft.md +63 -0
- package/pack/generated/dsh/skills/devrites-frontend-craft/reference/design-references.md +120 -0
- package/pack/generated/dsh/skills/devrites-frontend-craft/reference/fullstack.md +46 -0
- package/pack/generated/dsh/skills/devrites-frontend-craft/reference/quality-standards.md +286 -0
- package/pack/generated/dsh/skills/devrites-frontend-craft/reference/reuse-first.md +53 -0
- package/pack/generated/dsh/skills/devrites-frontend-craft/reference/shape.md +61 -0
- package/pack/generated/dsh/skills/devrites-interview/SKILL.md +107 -0
- package/pack/generated/dsh/skills/devrites-lib/SKILL.md +98 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/candidate-integrity.md +59 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/intent-map.md +86 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/orchestration-profiles.md +48 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/parallel-dispatch.md +184 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/reply-contract.md +123 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/README.md +70 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +32 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/afk-hitl.md +467 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/agents.md +231 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/anti-patterns.md +50 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/architecture-health.md +64 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/assumption-checkpoints.md +42 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/audit-coverage.md +107 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/browser-proof-checklist.md +37 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/ci-cd.md +62 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/code-index.md +111 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/code-navigation.md +69 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/code-review.md +178 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/coding-style.md +53 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/context-hygiene.md +136 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/core.md +202 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/data-integrity.md +144 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/debug-recovery.md +42 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/definition-of-done.md +25 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/deprecation.md +49 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/developer-experience.md +128 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/development-workflow.md +31 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/documentation.md +55 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/duplicate-code.md +129 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/edge-case-trace.md +94 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/elicitation.md +114 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/error-handling.md +49 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/gates.md +159 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/git-workflow.md +51 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/glossary.md +40 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/hooks.md +41 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/integration-reliability.md +121 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/loop-operations.md +123 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/observability.md +90 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/one-shot-actions.md +105 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/patterns.md +70 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/performance.md +88 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/principles.md +56 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/prose-style.md +127 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/release/ship-checklist.md +12 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/repository-topology.md +82 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/README.md +28 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/ci-workflows.md +50 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/default.md +42 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/go.md +47 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/python.md +46 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/react.md +55 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/shell.md +40 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/stack-profile.md +155 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/ts-js.md +74 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/review-checklist.md +14 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/security-checklist.md +30 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/security.md +283 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/skill-authoring.md +269 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/spec-grammar.md +214 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/test-proof-checklist.md +18 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/testing.md +295 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/tooling.md +125 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/verification-methods.md +143 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/windows.md +60 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/workflow-artifacts.md +435 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/code.md +44 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/comparison.md +42 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/diagram.md +51 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/index.md +66 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/input.md +46 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/outline-template.md +106 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/plan.md +48 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/slides.md +40 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/table.md +42 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/workspace-artifact-schema.md +312 -0
- package/pack/generated/dsh/skills/devrites-prose-craft/SKILL.md +81 -0
- package/pack/generated/dsh/skills/devrites-prose-craft/reference/banned-phrases.md +132 -0
- package/pack/generated/dsh/skills/devrites-prose-craft/reference/examples.md +136 -0
- package/pack/generated/dsh/skills/devrites-prose-craft/reference/structures.md +196 -0
- package/pack/generated/dsh/skills/devrites-source-driven/SKILL.md +54 -0
- package/pack/generated/dsh/skills/devrites-ux-shape/SKILL.md +135 -0
- package/pack/generated/dsh/skills/devrites-ux-shape/reference/brief-template.md +108 -0
- package/pack/generated/dsh/skills/devrites-ux-shape/reference/visual-direction-probe.md +50 -0
- package/pack/generated/dsh/skills/overhaul/SKILL.md +221 -0
- package/pack/generated/dsh/skills/overhaul/references/audit-domains.md +390 -0
- package/pack/generated/dsh/skills/overhaul/references/lifecycle.md +314 -0
- package/pack/generated/dsh/skills/overhaul/references/orchestration.md +291 -0
- package/pack/generated/dsh/skills/overhaul/references/records.md +203 -0
- package/pack/generated/dsh/skills/overhaul/references/repair-and-measurement.md +310 -0
- package/pack/generated/dsh/skills/overhaul/references/review-and-report.md +139 -0
- package/pack/generated/dsh/skills/overhaul/references/scope-and-safety.md +233 -0
- package/pack/generated/dsh/skills/overhaul/references/scoring.md +261 -0
- package/pack/generated/dsh/skills/overhaul/references/stack-profiles.md +316 -0
- package/pack/generated/dsh/skills/rite/SKILL.md +157 -0
- package/pack/generated/dsh/skills/rite/reference/menu.md +49 -0
- package/pack/generated/dsh/skills/rite-adopt/SKILL.md +64 -0
- package/pack/generated/dsh/skills/rite-adopt/reference/adoption.md +25 -0
- package/pack/generated/dsh/skills/rite-adopt/reference/anti-patterns.md +19 -0
- package/pack/generated/dsh/skills/rite-autocomplete/SKILL.md +167 -0
- package/pack/generated/dsh/skills/rite-autocomplete/reference/decision-policy.md +44 -0
- package/pack/generated/dsh/skills/rite-autocomplete/reference/lookahead.md +50 -0
- package/pack/generated/dsh/skills/rite-autocomplete/reference/loop.md +164 -0
- package/pack/generated/dsh/skills/rite-autocomplete/reference/stop-conditions.md +118 -0
- package/pack/generated/dsh/skills/rite-build/SKILL.md +126 -0
- package/pack/generated/dsh/skills/rite-build/reference/afk-discipline.md +153 -0
- package/pack/generated/dsh/skills/rite-build/reference/anti-patterns.md +27 -0
- package/pack/generated/dsh/skills/rite-build/reference/checkpoint-protocol.md +115 -0
- package/pack/generated/dsh/skills/rite-build/reference/checkpoint.md +79 -0
- package/pack/generated/dsh/skills/rite-build/reference/frontend-trigger.md +39 -0
- package/pack/generated/dsh/skills/rite-build/reference/one-slice-cycle.md +57 -0
- package/pack/generated/dsh/skills/rite-build/reference/output.md +29 -0
- package/pack/generated/dsh/skills/rite-build/reference/parallel-batch.md +260 -0
- package/pack/generated/dsh/skills/rite-build/reference/phase-contract.md +130 -0
- package/pack/generated/dsh/skills/rite-build/reference/spec-drift-guard.md +91 -0
- package/pack/generated/dsh/skills/rite-build/reference/tdd.md +27 -0
- package/pack/generated/dsh/skills/rite-build/reference/wright-dispatch.md +198 -0
- package/pack/generated/dsh/skills/rite-clarify/SKILL.md +104 -0
- package/pack/generated/dsh/skills/rite-clarify/reference/anti-patterns.md +24 -0
- package/pack/generated/dsh/skills/rite-clarify/reference/decision-coverage.md +56 -0
- package/pack/generated/dsh/skills/rite-converge/SKILL.md +167 -0
- package/pack/generated/dsh/skills/rite-converge/reference/anti-patterns.md +35 -0
- package/pack/generated/dsh/skills/rite-converge/reference/convergence-assessment.md +70 -0
- package/pack/generated/dsh/skills/rite-customize/SKILL.md +64 -0
- package/pack/generated/dsh/skills/rite-define/SKILL.md +203 -0
- package/pack/generated/dsh/skills/rite-define/reference/anti-patterns.md +26 -0
- package/pack/generated/dsh/skills/rite-define/reference/gates.md +160 -0
- package/pack/generated/dsh/skills/rite-define/reference/plan-template.md +153 -0
- package/pack/generated/dsh/skills/rite-doctor/SKILL.md +107 -0
- package/pack/generated/dsh/skills/rite-dogfood/SKILL.md +57 -0
- package/pack/generated/dsh/skills/rite-explain/SKILL.md +154 -0
- package/pack/generated/dsh/skills/rite-explain/reference/intake.md +89 -0
- package/pack/generated/dsh/skills/rite-fast/SKILL.md +185 -0
- package/pack/generated/dsh/skills/rite-fast/reference/artifacts.md +107 -0
- package/pack/generated/dsh/skills/rite-fast/reference/check-and-triage.md +51 -0
- package/pack/generated/dsh/skills/rite-frame/SKILL.md +119 -0
- package/pack/generated/dsh/skills/rite-frame/reference/failure-modes.md +66 -0
- package/pack/generated/dsh/skills/rite-handoff/SKILL.md +117 -0
- package/pack/generated/dsh/skills/rite-handoff/reference/handoff-template.md +56 -0
- package/pack/generated/dsh/skills/rite-harness/SKILL.md +76 -0
- package/pack/generated/dsh/skills/rite-harness/reference/feature-map.md +60 -0
- package/pack/generated/dsh/skills/rite-learn/SKILL.md +107 -0
- package/pack/generated/dsh/skills/rite-plan/SKILL.md +215 -0
- package/pack/generated/dsh/skills/rite-plan/reference/anti-patterns.md +34 -0
- package/pack/generated/dsh/skills/rite-plan/reference/dependency-graph.md +48 -0
- package/pack/generated/dsh/skills/rite-plan/reference/replan-and-repair.md +114 -0
- package/pack/generated/dsh/skills/rite-plan/reference/slicing.md +187 -0
- package/pack/generated/dsh/skills/rite-plan/reference/task-breakdown.md +50 -0
- package/pack/generated/dsh/skills/rite-polish/SKILL.md +128 -0
- package/pack/generated/dsh/skills/rite-polish/reference/adr-promotion.md +11 -0
- package/pack/generated/dsh/skills/rite-polish/reference/anti-ai-slop.md +210 -0
- package/pack/generated/dsh/skills/rite-polish/reference/anti-patterns.md +30 -0
- package/pack/generated/dsh/skills/rite-polish/reference/backend-polish.md +80 -0
- package/pack/generated/dsh/skills/rite-polish/reference/browser-polish-evidence.md +33 -0
- package/pack/generated/dsh/skills/rite-polish/reference/code.md +87 -0
- package/pack/generated/dsh/skills/rite-polish/reference/design-memory.md +117 -0
- package/pack/generated/dsh/skills/rite-polish/reference/design-system-discovery.md +8 -0
- package/pack/generated/dsh/skills/rite-polish/reference/harden-checklist.md +110 -0
- package/pack/generated/dsh/skills/rite-polish/reference/ledger.md +67 -0
- package/pack/generated/dsh/skills/rite-polish/reference/ui.md +146 -0
- package/pack/generated/dsh/skills/rite-pov/SKILL.md +71 -0
- package/pack/generated/dsh/skills/rite-pr-feedback/SKILL.md +61 -0
- package/pack/generated/dsh/skills/rite-pressure-test/SKILL.md +76 -0
- package/pack/generated/dsh/skills/rite-prototype/SKILL.md +106 -0
- package/pack/generated/dsh/skills/rite-prove/SKILL.md +151 -0
- package/pack/generated/dsh/skills/rite-prove/reference/acceptance-proof.md +88 -0
- package/pack/generated/dsh/skills/rite-prove/reference/anti-patterns.md +25 -0
- package/pack/generated/dsh/skills/rite-prove/reference/browser-proof.md +51 -0
- package/pack/generated/dsh/skills/rite-prove/reference/failure-triage.md +53 -0
- package/pack/generated/dsh/skills/rite-prove/reference/proof-ladder.md +39 -0
- package/pack/generated/dsh/skills/rite-prove/reference/test-command-discovery.md +36 -0
- package/pack/generated/dsh/skills/rite-quick/SKILL.md +97 -0
- package/pack/generated/dsh/skills/rite-resolve/SKILL.md +113 -0
- package/pack/generated/dsh/skills/rite-resolve/reference/answer-protocol.md +129 -0
- package/pack/generated/dsh/skills/rite-review/SKILL.md +190 -0
- package/pack/generated/dsh/skills/rite-review/reference/anti-patterns.md +32 -0
- package/pack/generated/dsh/skills/rite-review/reference/cognitive-load.md +90 -0
- package/pack/generated/dsh/skills/rite-review/reference/feature-scoped-review.md +26 -0
- package/pack/generated/dsh/skills/rite-review/reference/five-axis-review.md +66 -0
- package/pack/generated/dsh/skills/rite-review/reference/nielsen-heuristics.md +126 -0
- package/pack/generated/dsh/skills/rite-review/reference/performance-checklist.md +99 -0
- package/pack/generated/dsh/skills/rite-review/reference/performance-review.md +14 -0
- package/pack/generated/dsh/skills/rite-review/reference/security-review.md +44 -0
- package/pack/generated/dsh/skills/rite-seal/SKILL.md +99 -0
- package/pack/generated/dsh/skills/rite-seal/reference/anti-patterns.md +29 -0
- package/pack/generated/dsh/skills/rite-seal/reference/final-evidence.md +41 -0
- package/pack/generated/dsh/skills/rite-seal/reference/go-no-go.md +32 -0
- package/pack/generated/dsh/skills/rite-seal/reference/output.md +5 -0
- package/pack/generated/dsh/skills/rite-seal/reference/phase-contract.md +56 -0
- package/pack/generated/dsh/skills/rite-seal/reference/risk-and-rollback.md +56 -0
- package/pack/generated/dsh/skills/rite-seal/reference/seal-template.md +32 -0
- package/pack/generated/dsh/skills/rite-ship/SKILL.md +101 -0
- package/pack/generated/dsh/skills/rite-ship/reference/anti-patterns.md +28 -0
- package/pack/generated/dsh/skills/rite-ship/reference/close-out.md +69 -0
- package/pack/generated/dsh/skills/rite-ship/reference/git-ship.md +128 -0
- package/pack/generated/dsh/skills/rite-ship/reference/rollout.md +62 -0
- package/pack/generated/dsh/skills/rite-ship/reference/ship-template.md +40 -0
- package/pack/generated/dsh/skills/rite-spec/SKILL.md +169 -0
- package/pack/generated/dsh/skills/rite-spec/reference/acceptance-criteria.md +31 -0
- package/pack/generated/dsh/skills/rite-spec/reference/ai-spec-template.md +40 -0
- package/pack/generated/dsh/skills/rite-spec/reference/anti-patterns.md +27 -0
- package/pack/generated/dsh/skills/rite-spec/reference/interview-patterns.md +56 -0
- package/pack/generated/dsh/skills/rite-spec/reference/investigation.md +83 -0
- package/pack/generated/dsh/skills/rite-spec/reference/question-protocol.md +36 -0
- package/pack/generated/dsh/skills/rite-spec/reference/references-intake.md +62 -0
- package/pack/generated/dsh/skills/rite-spec/reference/spec-checklists.md +89 -0
- package/pack/generated/dsh/skills/rite-spec/reference/spec-template.md +160 -0
- package/pack/generated/dsh/skills/rite-spec/reference/state-workspace.md +240 -0
- package/pack/generated/dsh/skills/rite-status/SKILL.md +74 -0
- package/pack/generated/dsh/skills/rite-temper/SKILL.md +137 -0
- package/pack/generated/dsh/skills/rite-temper/reference/anti-patterns.md +30 -0
- package/pack/generated/dsh/skills/rite-temper/reference/review-dimensions.md +66 -0
- package/pack/generated/dsh/skills/rite-temper/reference/scope-modes.md +52 -0
- package/pack/generated/dsh/skills/rite-temper/reference/significance.md +55 -0
- package/pack/generated/dsh/skills/rite-temper/reference/strategy-template.md +101 -0
- package/pack/generated/dsh/skills/rite-upgrade/SKILL.md +142 -0
- package/pack/generated/dsh/skills/rite-vet/SKILL.md +242 -0
- package/pack/generated/dsh/skills/rite-vet/reference/anti-patterns.md +43 -0
- package/pack/generated/dsh/skills/rite-vet/reference/artifacts.md +248 -0
- package/pack/generated/dsh/skills/rite-vet/reference/cross-model.md +19 -0
- package/pack/generated/dsh/skills/rite-vet/reference/depth.md +59 -0
- package/pack/generated/dsh/skills/rite-vet/reference/eng-lenses.md +48 -0
- package/pack/generated/dsh/skills/rite-vet/reference/review-axes.md +210 -0
- package/pack/generated/dsh/skills/rite-watch-pr/SKILL.md +87 -0
- package/pack/generated/dsh/skills/rite-zoom-out/SKILL.md +76 -0
- package/pack/generated/omp/agents/devrites-upgrade-planner.md +12 -4
- package/pack/generated/omp/skills/devrites-debug-recovery/SKILL.md +21 -4
- package/pack/generated/omp/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +10 -3
- package/pack/generated/omp/skills/devrites-debug-recovery/reference/regression-test.md +7 -4
- package/pack/generated/omp/skills/devrites-lib/reference/reply-contract.md +11 -11
- package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +52 -56
- package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +11 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/core.md +41 -40
- package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +12 -14
- package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +34 -38
- package/pack/generated/omp/skills/rite-autocomplete/reference/stop-conditions.md +38 -39
- package/pack/generated/omp/skills/rite-define/SKILL.md +28 -27
- package/pack/generated/omp/skills/rite-plan/SKILL.md +7 -2
- package/pack/generated/omp/skills/rite-plan/reference/replan-and-repair.md +5 -2
- package/pack/generated/omp/skills/rite-resolve/SKILL.md +17 -10
- package/pack/generated/omp/skills/rite-resolve/reference/answer-protocol.md +18 -6
- package/pack/generated/omp/skills/rite-review/SKILL.md +4 -4
- package/pack/generated/omp/skills/rite-review/reference/security-review.md +4 -2
- package/pack/generated/omp/skills/rite-seal/SKILL.md +28 -33
- package/pack/generated/omp/skills/rite-ship/SKILL.md +14 -7
- package/pack/generated/omp/skills/rite-temper/SKILL.md +18 -18
- package/pack/generated/omp/skills/rite-temper/reference/scope-modes.md +6 -7
- package/pack/generated/omp/skills/rite-upgrade/SKILL.md +7 -2
- package/pack/generated/omp/skills/rite-vet/SKILL.md +33 -34
- package/pack/generated/pi/agents/devrites-upgrade-planner.md +12 -4
- package/pack/generated/pi/skills/devrites-debug-recovery/SKILL.md +21 -4
- package/pack/generated/pi/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +10 -3
- package/pack/generated/pi/skills/devrites-debug-recovery/reference/regression-test.md +7 -4
- package/pack/generated/pi/skills/devrites-lib/reference/reply-contract.md +11 -11
- package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +52 -56
- package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +11 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/core.md +41 -40
- package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +12 -14
- package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +34 -38
- package/pack/generated/pi/skills/rite-autocomplete/reference/stop-conditions.md +38 -39
- package/pack/generated/pi/skills/rite-define/SKILL.md +28 -27
- package/pack/generated/pi/skills/rite-plan/SKILL.md +7 -2
- package/pack/generated/pi/skills/rite-plan/reference/replan-and-repair.md +5 -2
- package/pack/generated/pi/skills/rite-resolve/SKILL.md +17 -10
- package/pack/generated/pi/skills/rite-resolve/reference/answer-protocol.md +18 -6
- package/pack/generated/pi/skills/rite-review/SKILL.md +4 -4
- package/pack/generated/pi/skills/rite-review/reference/security-review.md +4 -2
- package/pack/generated/pi/skills/rite-seal/SKILL.md +28 -33
- package/pack/generated/pi/skills/rite-ship/SKILL.md +14 -7
- package/pack/generated/pi/skills/rite-temper/SKILL.md +18 -18
- package/pack/generated/pi/skills/rite-temper/reference/scope-modes.md +6 -7
- package/pack/generated/pi/skills/rite-upgrade/SKILL.md +7 -2
- package/pack/generated/pi/skills/rite-vet/SKILL.md +33 -34
- package/package.json +3 -1
- package/scripts/build-host-artifacts.sh +6 -2
- package/scripts/dsh-generate.py +135 -0
- package/scripts/dsh-specialist.mjs +62 -0
- package/scripts/install-lib.sh +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to DevRites are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and DevRites adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Releases are generated automatically by [semantic-release](https://semantic-release.gitbook.io/) from Conventional Commits on `main`.
|
|
4
4
|
|
|
5
|
+
## [7.2.0](https://github.com/ViktorsBaikers/DevRites/compare/v7.1.2...v7.2.0) (2026-10-28)
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
* **installer:** add DSH specialist integration ([#184](https://github.com/ViktorsBaikers/DevRites/issues/184)) ([0fe9f07](https://github.com/ViktorsBaikers/DevRites/commit/0fe9f07be170eef1c581b9401b565a8688dc64b4))
|
|
10
|
+
|
|
11
|
+
## [7.1.2](https://github.com/ViktorsBaikers/DevRites/compare/v7.1.1...v7.1.2) (2026-10-28)
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
* **no-release:** align autocomplete lifecycle continuation ([#181](https://github.com/ViktorsBaikers/DevRites/issues/181)) ([ed1c0fa](https://github.com/ViktorsBaikers/DevRites/commit/ed1c0fae38ea774b7ce2376589e501c2281deb62))
|
|
16
|
+
* **skills:** bring cross-phase workflow fixes to main ([#183](https://github.com/ViktorsBaikers/DevRites/issues/183)) ([18b9fb0](https://github.com/ViktorsBaikers/DevRites/commit/18b9fb095a80c4b9cc41c99cfe1c04e02015990f)), references [#182](https://github.com/ViktorsBaikers/DevRites/issues/182)
|
|
17
|
+
|
|
5
18
|
## [7.1.1](https://github.com/ViktorsBaikers/DevRites/compare/v7.1.0...v7.1.1) (2026-10-28)
|
|
6
19
|
|
|
7
20
|
### Fixed
|
package/README.md
CHANGED
|
@@ -24,14 +24,14 @@
|
|
|
24
24
|
DevRites is a repository-local workflow for AI coding agents. It turns a
|
|
25
25
|
feature request into a spec, a sliced plan, working code, recorded proof, a
|
|
26
26
|
release decision, and an explicit ship step. It runs inside Claude Code, Codex,
|
|
27
|
-
omp, pi,
|
|
27
|
+
omp, pi, Devin CLI, and DSH.
|
|
28
28
|
|
|
29
29
|
DevRites keeps that work in `.devrites/` inside your repository, where chat
|
|
30
30
|
history can't lose it. After you clear the conversation, switch hosts, or hand
|
|
31
31
|
the feature to another engineer, the next session reads the same plan,
|
|
32
32
|
decisions, and evidence before it continues.
|
|
33
33
|
|
|
34
|
-
**Status:** [`v7.
|
|
34
|
+
**Status:** [`v7.2.0`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v7.2.0): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
|
|
35
35
|
|
|
36
36
|
This is the latest published release; `main` may contain unreleased work.
|
|
37
37
|
|
|
@@ -64,8 +64,7 @@ root, then run /rite-doctor ($rite-doctor in Codex) and report any FAIL line
|
|
|
64
64
|
with its fix.
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
-
The installer adds project-local support for Claude Code, Codex, omp, pi, and
|
|
68
|
-
Devin CLI. It does not write skills, agents, or hooks to `~/.claude`,
|
|
67
|
+
The installer adds project-local support for Claude Code, Codex, omp, pi, Devin CLI, and DSH. It does not write skills, agents, or hooks to `~/.claude`,
|
|
69
68
|
`~/.codex`, `~/.pi`, or `~/.config/devin`.
|
|
70
69
|
|
|
71
70
|
**2. Pick the smallest route** that still protects the work.
|
|
@@ -306,6 +305,7 @@ Run `npx devrites@latest --help` for common flags and
|
|
|
306
305
|
| `--no-omp` | Skip `.omp` skills, agents, and command stubs. |
|
|
307
306
|
| `--no-pi` | Skip `.pi` skills, agents, prompt commands, and the pi `AGENTS.md` block. |
|
|
308
307
|
| `--no-devin` | Skip `.devin` skills, agents, and the Devin `AGENTS.md` block. |
|
|
308
|
+
| `--no-dsh` | Skip `.dsh` skills, named presets, permission guard, and the DSH `AGENTS.md` block. |
|
|
309
309
|
| `--no-agents` | Skip hook-free native specialist profiles. |
|
|
310
310
|
| `--no-skills` | Skip skills and their bundled standards. |
|
|
311
311
|
| `--no-binary` | Do not keep the shared `devrites-engine` binary in a user or system bin directory. On `uninstall`, keep the existing binary. |
|
|
@@ -424,6 +424,10 @@ that the intended publishing step produced it. See
|
|
|
424
424
|
|
|
425
425
|
## Hosts
|
|
426
426
|
|
|
427
|
+
For DSH, launch `npx @deepseek-ai/dsh web --patch .dsh/cordis.patch.yml`
|
|
428
|
+
and select the **DevRites** agent preset before starting a workflow. See the
|
|
429
|
+
[DSH integration guide](docs/dsh.md) for permissions, dispatch, and result collection.
|
|
430
|
+
|
|
427
431
|
| Host | Skills | Agents | Also installs | Invoke |
|
|
428
432
|
| --- | --- | --- | --- | --- |
|
|
429
433
|
| **Claude Code** | `.claude/skills/` | `.claude/agents/` | Native root permissions merged into `.claude/settings.json` | `/rite-spec` |
|
|
@@ -431,6 +435,7 @@ that the intended publishing step produced it. See
|
|
|
431
435
|
| **omp** | `.omp/skills/` | `.omp/agents/` | Command stubs in `.omp/commands/`; `.omp/config.yml` hiding duplicate DevRites skills (only if absent) | `/rite-spec` or `/skill:rite-spec` |
|
|
432
436
|
| **pi** | `.pi/skills/` | `.pi/agents/` | Prompt commands in `.pi/prompts/`, marked block in `AGENTS.md`; with Codex, `.pi/settings.json` skipping the `.agents/skills` copies (only if absent) | `/rite-spec` or `/skill:rite-spec` |
|
|
433
437
|
| **Devin CLI** | `.devin/skills/` | `.devin/agents/` | Marked block in `AGENTS.md` | `/rite-spec` |
|
|
438
|
+
| **DSH** | `.dsh/skills/` | Named native agent presets; profiles in `.dsh/agents/` | `.dsh/cordis.patch.yml`, role permission guard, marked block in `AGENTS.md` | `/rite-spec` in the DevRites preset |
|
|
434
439
|
|
|
435
440
|
On every host, among the lifecycle `devrites-*` specialists only
|
|
436
441
|
`devrites-slice-wright` is writable and the rest are read-only and hook-free;
|
package/docs/dsh.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# DSH integration
|
|
2
|
+
|
|
3
|
+
The standard DevRites installer ships project-local DSH skills and named native
|
|
4
|
+
agent presets. To launch from the installed project's root:
|
|
5
|
+
|
|
6
|
+
```sh
|
|
7
|
+
npx @deepseek-ai/dsh web --patch .dsh/cordis.patch.yml
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
Choose **DevRites** (`devrites-orchestrator`) in the agent preset selector for a
|
|
11
|
+
new conversation, then use `/rite` or `/rite-spec`. The overlay loads alongside
|
|
12
|
+
your DSH profile; the installer does not edit your global DSH configuration.
|
|
13
|
+
Use `--no-dsh` with DevRites install/update to omit this host. Updates and
|
|
14
|
+
uninstall manage the same files through the existing hashed manifest.
|
|
15
|
+
|
|
16
|
+
Skills live under `.dsh/skills`, with native invocation flags preserved. The
|
|
17
|
+
`.dsh/agents` files retain the expanded canonical specialist instructions.
|
|
18
|
+
`.dsh/cordis.patch.yml` and `.dsh/specialist.mjs` register those exact identities
|
|
19
|
+
as native DSH presets and enforce their tool and permission boundaries.
|
|
20
|
+
|
|
21
|
+
The orchestrator calls `subagent` with an exact `agent_preset`, a self-contained
|
|
22
|
+
`prompt`, and a short `description`. Its configured backend is `spawn`, which creates a fresh
|
|
23
|
+
Session without the parent conversation. An omitted or unknown role is denied;
|
|
24
|
+
generic dispatch and fork are not substitutes. Specialists cannot delegate.
|
|
25
|
+
The root may use `list_agents`, `send_message`, and `interrupt_agent` to manage
|
|
26
|
+
its native children.
|
|
27
|
+
|
|
28
|
+
DSH delivers each child's final text and terminal status to the parent in a
|
|
29
|
+
settlement notice. A returned child id means dispatch was admitted; `inactive`
|
|
30
|
+
activity alone does not prove successful completion. The orchestrator collects
|
|
31
|
+
and reconciles every terminal result, including failures, before dependent work.
|
|
32
|
+
|
|
33
|
+
Read-only roles retain only their mapped tools and run shell commands under the
|
|
34
|
+
read-only sandbox. Shell-capable roles also receive native job tools to collect
|
|
35
|
+
background command output and stop their jobs. Writers have a workspace-write ceiling. The guard narrows
|
|
36
|
+
DSH's inherited parent override before each allowed call, preserves an existing
|
|
37
|
+
read-only parent boundary, and denies explicit sandbox escalation. Confining
|
|
38
|
+
shell and filesystem providers are required; an unconfined composition fails
|
|
39
|
+
closed. Tool access derives from canonical agent frontmatter; unsupported
|
|
40
|
+
Claude-specific tools and MCP grants are omitted. The writer's exact file list
|
|
41
|
+
remains a task contract checked by the orchestrator, as on the other hosts.
|
|
42
|
+
|
|
43
|
+
The adapter targets the published DSH `0.2.1-rc.2` plugin interfaces, checked
|
|
44
|
+
against [DeepSeek Harness source](https://github.com/deepseek-ai/deepseek-harness)
|
|
45
|
+
at `f3803c96974ad4a94195fb97e5c637e9c2a3afe3`. DSH is a developer preview;
|
|
46
|
+
changes to its preset, tools, or sandbox interfaces require revalidation.
|
|
@@ -18,12 +18,14 @@ const (
|
|
|
18
18
|
OmpSkillsTarget = ".omp/skills"
|
|
19
19
|
PiSkillsTarget = ".pi/skills"
|
|
20
20
|
DevinSkillsTarget = ".devin/skills"
|
|
21
|
+
DshSkillsTarget = ".dsh/skills"
|
|
21
22
|
ClaudeAgentsTarget = ".claude/agents"
|
|
22
23
|
CodexAgentsTarget = ".codex/agents"
|
|
23
24
|
OmpAgentsTarget = ".omp/agents"
|
|
24
25
|
OmpCommandsTarget = ".omp/commands"
|
|
25
26
|
PiAgentsTarget = ".pi/agents"
|
|
26
27
|
DevinAgentsTarget = ".devin/agents"
|
|
28
|
+
DshAgentsTarget = ".dsh/agents"
|
|
27
29
|
PiPromptsTarget = ".pi/prompts"
|
|
28
30
|
ClaudeWorkflowsTarget = ".claude/workflows"
|
|
29
31
|
|
|
@@ -19,12 +19,14 @@ const (
|
|
|
19
19
|
OmpSkillsTarget = devritespaths.OmpSkillsTarget
|
|
20
20
|
PiSkillsTarget = devritespaths.PiSkillsTarget
|
|
21
21
|
DevinSkillsTarget = devritespaths.DevinSkillsTarget
|
|
22
|
+
DshSkillsTarget = devritespaths.DshSkillsTarget
|
|
22
23
|
ClaudeAgentsTarget = devritespaths.ClaudeAgentsTarget
|
|
23
24
|
CodexAgentsTarget = devritespaths.CodexAgentsTarget
|
|
24
25
|
OmpAgentsTarget = devritespaths.OmpAgentsTarget
|
|
25
26
|
OmpCommandsTarget = devritespaths.OmpCommandsTarget
|
|
26
27
|
PiAgentsTarget = devritespaths.PiAgentsTarget
|
|
27
28
|
DevinAgentsTarget = devritespaths.DevinAgentsTarget
|
|
29
|
+
DshAgentsTarget = devritespaths.DshAgentsTarget
|
|
28
30
|
PiPromptsTarget = devritespaths.PiPromptsTarget
|
|
29
31
|
ClaudeWorkflowsTarget = devritespaths.ClaudeWorkflowsTarget
|
|
30
32
|
)
|
|
@@ -111,6 +113,15 @@ var DevinAgentsMerge = MarkerMerge{
|
|
|
111
113
|
MarkerText: "AGENTS.md contains a DevRites managed block between BEGIN/END DEVRITES DEVIN markers.",
|
|
112
114
|
}
|
|
113
115
|
|
|
116
|
+
var DshAgentsMerge = MarkerMerge{
|
|
117
|
+
TargetRel: "AGENTS.md",
|
|
118
|
+
PayloadRel: "dsh/AGENTS.md",
|
|
119
|
+
Begin: "<!-- BEGIN DEVRITES DSH -->",
|
|
120
|
+
End: "<!-- END DEVRITES DSH -->",
|
|
121
|
+
MarkerRel: ".claude/devrites.dsh-agents-merge",
|
|
122
|
+
MarkerText: "AGENTS.md contains a DevRites managed block between BEGIN/END DEVRITES DSH markers.\n",
|
|
123
|
+
}
|
|
124
|
+
|
|
114
125
|
var CodexConfigMerge = MarkerMerge{
|
|
115
126
|
TargetRel: ".codex/config.toml",
|
|
116
127
|
PayloadRel: "codex/config.toml",
|
|
@@ -166,6 +177,7 @@ var LegacyCodexHooksMerge = ManagedMerge{
|
|
|
166
177
|
}
|
|
167
178
|
|
|
168
179
|
var managedMerges = []ManagedMerge{
|
|
180
|
+
{MarkerRel: DshAgentsMerge.MarkerRel, TargetRel: DshAgentsMerge.TargetRel, Begin: DshAgentsMerge.Begin, End: DshAgentsMerge.End, DryRun: "AGENTS.md DevRites DSH block"},
|
|
169
181
|
{
|
|
170
182
|
MarkerRel: CodexAgentsMerge.MarkerRel,
|
|
171
183
|
TargetRel: CodexAgentsMerge.TargetRel,
|
|
@@ -202,7 +214,7 @@ var managedMerges = []ManagedMerge{
|
|
|
202
214
|
LegacyCodexHooksMerge,
|
|
203
215
|
}
|
|
204
216
|
|
|
205
|
-
func RequiredPayload(withCodex, withOmp, withPi, withDevin bool) []string {
|
|
217
|
+
func RequiredPayload(withCodex, withOmp, withPi, withDevin, withDsh bool) []string {
|
|
206
218
|
required := []string{
|
|
207
219
|
"claude/skills",
|
|
208
220
|
"claude/agents",
|
|
@@ -240,11 +252,14 @@ func RequiredPayload(withCodex, withOmp, withPi, withDevin bool) []string {
|
|
|
240
252
|
"devin/AGENTS.md",
|
|
241
253
|
)
|
|
242
254
|
}
|
|
255
|
+
if withDsh {
|
|
256
|
+
required = append(required, "dsh/skills", "dsh/agents", "dsh/runtime/cordis.patch.yml", "dsh/runtime/specialist.mjs", "dsh/AGENTS.md")
|
|
257
|
+
}
|
|
243
258
|
return required
|
|
244
259
|
}
|
|
245
260
|
|
|
246
|
-
func ValidatePayload(payload fs.FS, withCodex, withOmp, withPi, withDevin bool) error {
|
|
247
|
-
for _, rel := range RequiredPayload(withCodex, withOmp, withPi, withDevin) {
|
|
261
|
+
func ValidatePayload(payload fs.FS, withCodex, withOmp, withPi, withDevin, withDsh bool) error {
|
|
262
|
+
for _, rel := range RequiredPayload(withCodex, withOmp, withPi, withDevin, withDsh) {
|
|
248
263
|
if _, err := fs.Stat(payload, rel); err != nil {
|
|
249
264
|
return fmt.Errorf("missing %s", rel)
|
|
250
265
|
}
|
|
@@ -252,7 +267,7 @@ func ValidatePayload(payload fs.FS, withCodex, withOmp, withPi, withDevin bool)
|
|
|
252
267
|
return nil
|
|
253
268
|
}
|
|
254
269
|
|
|
255
|
-
func InstallTrees(withSkills, withAgents, withCodex, withOmp, withPi, withDevin bool) []Tree {
|
|
270
|
+
func InstallTrees(withSkills, withAgents, withCodex, withOmp, withPi, withDevin, withDsh bool) []Tree {
|
|
256
271
|
var trees []Tree
|
|
257
272
|
if withSkills {
|
|
258
273
|
trees = append(trees, Tree{PayloadPrefix: "claude/skills", TargetPrefix: ClaudeSkillsTarget})
|
|
@@ -274,6 +289,9 @@ func InstallTrees(withSkills, withAgents, withCodex, withOmp, withPi, withDevin
|
|
|
274
289
|
if withDevin {
|
|
275
290
|
trees = append(trees, Tree{PayloadPrefix: "devin/skills", TargetPrefix: DevinSkillsTarget})
|
|
276
291
|
}
|
|
292
|
+
if withDsh {
|
|
293
|
+
trees = append(trees, Tree{PayloadPrefix: "dsh/skills", TargetPrefix: DshSkillsTarget})
|
|
294
|
+
}
|
|
277
295
|
}
|
|
278
296
|
if withAgents {
|
|
279
297
|
trees = append(trees, Tree{PayloadPrefix: "claude/agents", TargetPrefix: ClaudeAgentsTarget})
|
|
@@ -290,13 +308,16 @@ func InstallTrees(withSkills, withAgents, withCodex, withOmp, withPi, withDevin
|
|
|
290
308
|
trees = append(trees, Tree{PayloadPrefix: "devin/agents", TargetPrefix: DevinAgentsTarget})
|
|
291
309
|
}
|
|
292
310
|
}
|
|
311
|
+
if withAgents && withDsh {
|
|
312
|
+
trees = append(trees, Tree{PayloadPrefix: "dsh/agents", TargetPrefix: DshAgentsTarget}, Tree{PayloadPrefix: "dsh/runtime", TargetPrefix: ".dsh"})
|
|
313
|
+
}
|
|
293
314
|
if withSkills && withAgents {
|
|
294
315
|
trees = append(trees, Tree{PayloadPrefix: "claude/workflows", TargetPrefix: ClaudeWorkflowsTarget})
|
|
295
316
|
}
|
|
296
317
|
return trees
|
|
297
318
|
}
|
|
298
319
|
|
|
299
|
-
func AliasTargets(alias Alias, withCodex, withOmp, withPi, withDevin bool) []string {
|
|
320
|
+
func AliasTargets(alias Alias, withCodex, withOmp, withPi, withDevin, withDsh bool) []string {
|
|
300
321
|
targets := []string{filepath.ToSlash(filepath.Join(ClaudeSkillsTarget, alias.Name, "SKILL.md"))}
|
|
301
322
|
if withCodex {
|
|
302
323
|
targets = append(targets, filepath.ToSlash(filepath.Join(CodexSkillsTarget, alias.Name, "SKILL.md")))
|
|
@@ -310,6 +331,9 @@ func AliasTargets(alias Alias, withCodex, withOmp, withPi, withDevin bool) []str
|
|
|
310
331
|
if withDevin {
|
|
311
332
|
targets = append(targets, filepath.ToSlash(filepath.Join(DevinSkillsTarget, alias.Name, "SKILL.md")))
|
|
312
333
|
}
|
|
334
|
+
if withDsh {
|
|
335
|
+
targets = append(targets, filepath.ToSlash(filepath.Join(DshSkillsTarget, alias.Name, "SKILL.md")))
|
|
336
|
+
}
|
|
313
337
|
return targets
|
|
314
338
|
}
|
|
315
339
|
|
|
@@ -26,6 +26,7 @@ func (r *runner) install() error {
|
|
|
26
26
|
fmt.Fprintf(r.opts.Stdout, " omp : %s\n", yesno(r.opts.WithOmp))
|
|
27
27
|
fmt.Fprintf(r.opts.Stdout, " pi : %s\n", yesno(r.opts.WithPi))
|
|
28
28
|
fmt.Fprintf(r.opts.Stdout, " devin : %s\n", yesno(r.opts.WithDevin))
|
|
29
|
+
fmt.Fprintf(r.opts.Stdout, " dsh : %s\n", yesno(r.opts.WithDsh))
|
|
29
30
|
fmt.Fprintf(r.opts.Stdout, " aliases: %s\n", r.opts.AliasMode)
|
|
30
31
|
if r.opts.DryRun {
|
|
31
32
|
fmt.Fprintln(r.opts.Stdout, " (dry run - no changes will be made)")
|
|
@@ -43,7 +44,7 @@ func (r *runner) install() error {
|
|
|
43
44
|
return err
|
|
44
45
|
}
|
|
45
46
|
|
|
46
|
-
for _, tree := range hostpack.InstallTrees(r.opts.WithSkills, r.opts.WithAgents, r.opts.WithCodex, r.opts.WithOmp, r.opts.WithPi, r.opts.WithDevin) {
|
|
47
|
+
for _, tree := range hostpack.InstallTrees(r.opts.WithSkills, r.opts.WithAgents, r.opts.WithCodex, r.opts.WithOmp, r.opts.WithPi, r.opts.WithDevin, r.opts.WithDsh) {
|
|
47
48
|
if err := r.installTree(tree.PayloadPrefix, tree.TargetPrefix); err != nil {
|
|
48
49
|
return fmt.Errorf("install tree %s: %w", tree.TargetPrefix, err)
|
|
49
50
|
}
|
|
@@ -54,7 +55,7 @@ func (r *runner) install() error {
|
|
|
54
55
|
if err != nil {
|
|
55
56
|
return fmt.Errorf("render alias skill %s: %w", alias.Name, err)
|
|
56
57
|
}
|
|
57
|
-
for _, rel := range hostpack.AliasTargets(alias, r.opts.WithCodex, r.opts.WithOmp, r.opts.WithPi, r.opts.WithDevin) {
|
|
58
|
+
for _, rel := range hostpack.AliasTargets(alias, r.opts.WithCodex, r.opts.WithOmp, r.opts.WithPi, r.opts.WithDevin, r.opts.WithDsh) {
|
|
58
59
|
if err := r.installData(data, rel); err != nil {
|
|
59
60
|
return fmt.Errorf("install alias: %w", err)
|
|
60
61
|
}
|
|
@@ -79,6 +80,11 @@ func (r *runner) install() error {
|
|
|
79
80
|
return fmt.Errorf("merge %s: %w", hostpack.DevinAgentsMerge.TargetRel, err)
|
|
80
81
|
}
|
|
81
82
|
}
|
|
83
|
+
if r.opts.WithSkills && r.opts.WithDsh {
|
|
84
|
+
if err := r.mergeMarkerFile(hostpack.DshAgentsMerge); err != nil {
|
|
85
|
+
return fmt.Errorf("merge %s: %w", hostpack.DshAgentsMerge.TargetRel, err)
|
|
86
|
+
}
|
|
87
|
+
}
|
|
82
88
|
if r.opts.WithSkills {
|
|
83
89
|
if err := r.seedClaudeSettings(); err != nil {
|
|
84
90
|
return fmt.Errorf("seed claude settings: %w", err)
|
|
@@ -112,6 +118,9 @@ func (r *runner) install() error {
|
|
|
112
118
|
}
|
|
113
119
|
fmt.Fprintf(r.opts.Stdout, " installed: %d overwritten: %d skipped(conflict): %d pruned: %d\n", r.stats.installed, r.stats.overwrote, r.stats.skipped, r.stats.pruned)
|
|
114
120
|
if !r.opts.DryRun && r.opts.WithSkills {
|
|
121
|
+
if r.opts.WithDsh && r.opts.WithAgents {
|
|
122
|
+
fmt.Fprintln(r.opts.Stdout, "DSH: run npx @deepseek-ai/dsh web --patch .dsh/cordis.patch.yml, then select the DevRites preset.")
|
|
123
|
+
}
|
|
115
124
|
claudeHosts := "Claude"
|
|
116
125
|
if r.opts.WithDevin {
|
|
117
126
|
claudeHosts = "Claude/Devin"
|
|
@@ -445,6 +454,9 @@ func (r *runner) flagsString() string {
|
|
|
445
454
|
if !r.opts.WithDevin {
|
|
446
455
|
flags = append(flags, "--no-devin")
|
|
447
456
|
}
|
|
457
|
+
if !r.opts.WithDsh {
|
|
458
|
+
flags = append(flags, "--no-dsh")
|
|
459
|
+
}
|
|
448
460
|
if !r.opts.WithBinary {
|
|
449
461
|
flags = append(flags, "--no-binary")
|
|
450
462
|
}
|
|
@@ -37,6 +37,7 @@ type Options struct {
|
|
|
37
37
|
WithOmp bool
|
|
38
38
|
WithPi bool
|
|
39
39
|
WithDevin bool
|
|
40
|
+
WithDsh bool
|
|
40
41
|
WithBinary bool
|
|
41
42
|
KeepBinary bool
|
|
42
43
|
AliasMode string
|
|
@@ -91,6 +92,7 @@ func DefaultOptions(mode Mode) Options {
|
|
|
91
92
|
WithOmp: true,
|
|
92
93
|
WithPi: true,
|
|
93
94
|
WithDevin: true,
|
|
95
|
+
WithDsh: true,
|
|
94
96
|
WithBinary: true,
|
|
95
97
|
AliasMode: "safe",
|
|
96
98
|
Stdout: io.Discard,
|
|
@@ -145,6 +147,7 @@ func parseArgs(args []string, opts *Options) error {
|
|
|
145
147
|
noOmp := flags.Bool("no-omp", !opts.WithOmp, "")
|
|
146
148
|
noPi := flags.Bool("no-pi", !opts.WithPi, "")
|
|
147
149
|
noDevin := flags.Bool("no-devin", !opts.WithDevin, "")
|
|
150
|
+
noDsh := flags.Bool("no-dsh", !opts.WithDsh, "")
|
|
148
151
|
noAgents := flags.Bool("no-agents", !opts.WithAgents, "")
|
|
149
152
|
noSkills := flags.Bool("no-skills", !opts.WithSkills, "")
|
|
150
153
|
noBinary := flags.Bool("no-binary", !opts.WithBinary, "")
|
|
@@ -174,6 +177,7 @@ func parseArgs(args []string, opts *Options) error {
|
|
|
174
177
|
opts.WithOmp = !*noOmp
|
|
175
178
|
opts.WithPi = !*noPi
|
|
176
179
|
opts.WithDevin = !*noDevin
|
|
180
|
+
opts.WithDsh = !*noDsh
|
|
177
181
|
opts.WithAgents = !*noAgents
|
|
178
182
|
opts.WithSkills = !*noSkills
|
|
179
183
|
opts.WithBinary = !*noBinary
|
|
@@ -220,7 +224,7 @@ func usage(mode Mode) string {
|
|
|
220
224
|
case ModeUpdate:
|
|
221
225
|
return "usage: devrites-engine update [--target DIR] [--dry-run] [--force] [--check] [install flags] [--source-dir DIR --payload-dir DIR]\n"
|
|
222
226
|
default:
|
|
223
|
-
return "usage: devrites-engine install [--target DIR] [--dry-run] [--force] [--no-codex] [--no-omp] [--no-pi] [--no-devin] [--no-agents] [--no-skills] [--no-binary] [--short-aliases=all]\n"
|
|
227
|
+
return "usage: devrites-engine install [--target DIR] [--dry-run] [--force] [--no-codex] [--no-omp] [--no-pi] [--no-devin] [--no-dsh] [--no-agents] [--no-skills] [--no-binary] [--short-aliases=all]\n"
|
|
224
228
|
}
|
|
225
229
|
}
|
|
226
230
|
|
|
@@ -351,7 +355,7 @@ func (r *runner) validatePayload() error {
|
|
|
351
355
|
if r.payload == "" {
|
|
352
356
|
return fmt.Errorf("generated install payload not found; pass --payload-dir or run scripts/build-host-artifacts.sh")
|
|
353
357
|
}
|
|
354
|
-
if err := hostpack.ValidatePayload(r.payloadFS, r.opts.WithCodex, r.opts.WithOmp, r.opts.WithPi, r.opts.WithDevin); err != nil {
|
|
358
|
+
if err := hostpack.ValidatePayload(r.payloadFS, r.opts.WithCodex, r.opts.WithOmp, r.opts.WithPi, r.opts.WithDevin, r.opts.WithDsh); err != nil {
|
|
355
359
|
return fmt.Errorf("generated install payload under %s: %w", r.payload, err)
|
|
356
360
|
}
|
|
357
361
|
return nil
|
|
@@ -370,7 +374,7 @@ func isGlobalTarget(target string) bool {
|
|
|
370
374
|
if target == h {
|
|
371
375
|
return true
|
|
372
376
|
}
|
|
373
|
-
for _, rel := range []string{".claude", ".codex", ".omp", ".pi", ".devin", filepath.Join(".config", "devin"), ".agents"} {
|
|
377
|
+
for _, rel := range []string{".claude", ".codex", ".omp", ".pi", ".devin", ".dsh", filepath.Join(".config", "devin"), ".agents"} {
|
|
374
378
|
global := filepath.Join(h, rel)
|
|
375
379
|
globals := []string{global}
|
|
376
380
|
if resolved, err := filepath.EvalSymlinks(global); err == nil {
|
|
@@ -176,6 +176,7 @@ func (r *runner) sharedMarkerMerges(merge hostpack.MarkerMerge) []hostpack.Marke
|
|
|
176
176
|
{r.opts.WithCodex, hostpack.CodexAgentsMerge},
|
|
177
177
|
{r.opts.WithPi, hostpack.PiAgentsMerge},
|
|
178
178
|
{r.opts.WithDevin, hostpack.DevinAgentsMerge},
|
|
179
|
+
{r.opts.WithDsh, hostpack.DshAgentsMerge},
|
|
179
180
|
} {
|
|
180
181
|
if other.enabled && other.merge.TargetRel == merge.TargetRel && other.merge.Begin != merge.Begin {
|
|
181
182
|
merges = append(merges, other.merge)
|
|
@@ -90,6 +90,7 @@ func (r *runner) preflightMerges() error {
|
|
|
90
90
|
{r.opts.WithCodex, hostpack.CodexAgentsMerge},
|
|
91
91
|
{r.opts.WithPi, hostpack.PiAgentsMerge},
|
|
92
92
|
{r.opts.WithDevin, hostpack.DevinAgentsMerge},
|
|
93
|
+
{r.opts.WithDsh, hostpack.DshAgentsMerge},
|
|
93
94
|
} {
|
|
94
95
|
if !m.enabled {
|
|
95
96
|
continue
|
|
@@ -160,7 +161,7 @@ func (r *runner) isPinnedAlias(rel string) bool {
|
|
|
160
161
|
|
|
161
162
|
func (r *runner) desiredInstallPaths() (map[string]bool, error) {
|
|
162
163
|
out := map[string]bool{".devrites/README.md": true}
|
|
163
|
-
for _, tree := range hostpack.InstallTrees(r.opts.WithSkills, r.opts.WithAgents, r.opts.WithCodex, r.opts.WithOmp, r.opts.WithPi, r.opts.WithDevin) {
|
|
164
|
+
for _, tree := range hostpack.InstallTrees(r.opts.WithSkills, r.opts.WithAgents, r.opts.WithCodex, r.opts.WithOmp, r.opts.WithPi, r.opts.WithDevin, r.opts.WithDsh) {
|
|
164
165
|
err := fs.WalkDir(r.payloadFS, tree.PayloadPrefix, func(path string, d fs.DirEntry, err error) error {
|
|
165
166
|
if err != nil {
|
|
166
167
|
return err
|
|
@@ -181,7 +182,7 @@ func (r *runner) desiredInstallPaths() (map[string]bool, error) {
|
|
|
181
182
|
}
|
|
182
183
|
if r.opts.WithSkills && r.opts.AliasMode == "all" {
|
|
183
184
|
for _, alias := range hostpack.Aliases {
|
|
184
|
-
for _, rel := range hostpack.AliasTargets(alias, r.opts.WithCodex, r.opts.WithOmp, r.opts.WithPi, r.opts.WithDevin) {
|
|
185
|
+
for _, rel := range hostpack.AliasTargets(alias, r.opts.WithCodex, r.opts.WithOmp, r.opts.WithPi, r.opts.WithDevin, r.opts.WithDsh) {
|
|
185
186
|
out[rel] = true
|
|
186
187
|
}
|
|
187
188
|
}
|
|
@@ -196,6 +197,9 @@ func (r *runner) desiredInstallPaths() (map[string]bool, error) {
|
|
|
196
197
|
if r.opts.WithSkills && r.opts.WithDevin {
|
|
197
198
|
out[hostpack.DevinAgentsMerge.MarkerRel] = true
|
|
198
199
|
}
|
|
200
|
+
if r.opts.WithSkills && r.opts.WithDsh {
|
|
201
|
+
out[hostpack.DshAgentsMerge.MarkerRel] = true
|
|
202
|
+
}
|
|
199
203
|
if r.opts.WithSkills {
|
|
200
204
|
out[hostpack.ClaudeSettingsMerge.MarkerRel] = true
|
|
201
205
|
}
|
|
@@ -218,6 +222,9 @@ func (r *runner) installMergeTargets() []string {
|
|
|
218
222
|
if r.opts.WithDevin {
|
|
219
223
|
out = append(out, hostpack.DevinAgentsMerge.TargetRel)
|
|
220
224
|
}
|
|
225
|
+
if r.opts.WithDsh {
|
|
226
|
+
out = append(out, hostpack.DshAgentsMerge.TargetRel)
|
|
227
|
+
}
|
|
221
228
|
}
|
|
222
229
|
return out
|
|
223
230
|
}
|
|
@@ -65,7 +65,7 @@ func runUpdate(opts Options) error {
|
|
|
65
65
|
if err != nil {
|
|
66
66
|
return fmt.Errorf("resolve payload %s: %w", opts.PayloadDir, err)
|
|
67
67
|
}
|
|
68
|
-
if err := hostpack.ValidatePayload(os.DirFS(payload), true, true, true, true); err != nil {
|
|
68
|
+
if err := hostpack.ValidatePayload(os.DirFS(payload), true, true, true, true, true); err != nil {
|
|
69
69
|
return fmt.Errorf("local update payload under %s is invalid: %w", payload, err)
|
|
70
70
|
}
|
|
71
71
|
installFlags := manifestHeader(mf, "devrites-flags")
|
|
@@ -68,7 +68,7 @@ func lintKnownRoles(root, phase string, roles []string) error {
|
|
|
68
68
|
skillsRoots = append(skillsRoots, dir)
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
|
-
for _, rel := range []string{".omp/skills", ".agents/skills", ".pi/skills", ".devin/skills"} {
|
|
71
|
+
for _, rel := range []string{".omp/skills", ".agents/skills", ".pi/skills", ".devin/skills", ".dsh/skills"} {
|
|
72
72
|
dir := filepath.Join(project, filepath.FromSlash(rel))
|
|
73
73
|
if info, err := os.Stat(filepath.Join(dir, "devrites-lib")); err == nil && info.IsDir() {
|
|
74
74
|
skillsRoots = append(skillsRoots, dir)
|
|
@@ -33,7 +33,10 @@ rules cannot fail.
|
|
|
33
33
|
- `repairable`: each defect is neutral, preservation-safe, and owned by Clarify,
|
|
34
34
|
Plan repair, Converge, Vet, Prove, Polish, Review, or Seal.
|
|
35
35
|
- `unsupported`: cursor/topology is unofficial; propose no rewrite.
|
|
36
|
-
- `gap`: evidence/contracts are insufficient
|
|
36
|
+
- `gap`: evidence/contracts are insufficient or the required delta has no admitted
|
|
37
|
+
preservation-safe route. Missing input or unverifiable current rules produce `gap`,
|
|
38
|
+
never `current` or `repairable`. Required candidate-affecting rollup writes also
|
|
39
|
+
produce `gap`.
|
|
37
40
|
|
|
38
41
|
## Rules
|
|
39
42
|
|
|
@@ -47,9 +50,14 @@ rules cannot fail.
|
|
|
47
50
|
slices beyond the feature ceiling to Plan course-correct (`MVP cut` + named
|
|
48
51
|
continuation sequence); built slices and their evidence stay.
|
|
49
52
|
- For released post-Build work, route a strict-manifest, evidence/browser-binding, or
|
|
50
|
-
candidate-check defect to Prove;
|
|
51
|
-
review-binding defect to Review; and a
|
|
52
|
-
|
|
53
|
+
candidate-check defect to Prove; a workspace-only Polish refresh to Polish only
|
|
54
|
+
within Upgrade's admitted gate artifacts; a review-binding defect to Review; and a
|
|
55
|
+
seal-binding or Seal-gate defect to Seal. Required candidate-affecting capability-ledger,
|
|
56
|
+
`DESIGN.md`, or ADR rollups are outside admission: return `gap` with an explicit
|
|
57
|
+
`/rite-polish` handoff for separate user authorization, no writable paths and no admitted route.
|
|
58
|
+
Never recommend invoking those writes inside Upgrade. After authorization
|
|
59
|
+
outside Upgrade, normal affected Prove → Review → Seal applies.
|
|
60
|
+
Include only applicable admitted owners, ordered Prove, Polish, Review, Seal. Never infer scope
|
|
53
61
|
or treat an old pass as current proof. A Prove repair is admissible only when legacy
|
|
54
62
|
scope inputs are present and agree unambiguously; ambiguous candidate scope produces
|
|
55
63
|
`gap` with no route.
|
|
@@ -53,6 +53,21 @@ has no clear next move. Optional slug selects the active workspace; defaults to
|
|
|
53
53
|
gone, hypothesis recorded. Classify the failure.
|
|
54
54
|
See [cleanup-and-classify.md](reference/cleanup-and-classify.md).
|
|
55
55
|
|
|
56
|
+
## Caller-owned records and routing
|
|
57
|
+
|
|
58
|
+
The controlling root accepts and persists all recovery records in `decisions.md`,
|
|
59
|
+
`evidence.md`, and `## Dead ends` before the next admission/attempt. This rule governs
|
|
60
|
+
all loaded recovery steps, including cleanup and regression instructions. A leaf
|
|
61
|
+
returns the complete class/rationale, proposed routing, hypothesis/probe, baseline,
|
|
62
|
+
exact failure/evidence, causal fingerprint, attempt number and failed idea/dead ends,
|
|
63
|
+
and human predicate in its existing result fields (`gates`, `dead_ends`,
|
|
64
|
+
`follow_ups`, or `Escalation` as applicable); no new result schema is required.
|
|
65
|
+
A leaf never writes `.devrites/**`, changes phase, invokes agents, or commits through
|
|
66
|
+
recovery. Only the controlling root routes to owning rites and supplies later attempts
|
|
67
|
+
with accepted records. Product/test edits remain inside the caller's exact allowed
|
|
68
|
+
paths; recovery never widens them. Commit/PR wording is a returned proposal for the
|
|
69
|
+
authorized owner, not authority to commit.
|
|
70
|
+
|
|
56
71
|
## Hard rules
|
|
57
72
|
|
|
58
73
|
- Quote exact signal-bearing error text with typed redactions (not paraphrase); apply
|
|
@@ -79,8 +94,9 @@ has no clear next move. Optional slug selects the active workspace; defaults to
|
|
|
79
94
|
<!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"durable active failure or ambiguous admitted state","action":"OFFLINE_RECOVERY; correct offline, re-preflight, narrow Vet, retry only under cap","return":"saved caller or exact Plan/Vet route"} -->
|
|
80
95
|
- **Classify before routing** with
|
|
81
96
|
[cleanup-and-classify.md](reference/cleanup-and-classify.md).
|
|
82
|
-
- **Durably record class and rationale**
|
|
83
|
-
`evidence.md` or `## Dead ends`
|
|
97
|
+
- **Durably record class and rationale** through [Caller-owned records and routing](#caller-owned-records-and-routing):
|
|
98
|
+
root persists `decisions.md` and the applicable `evidence.md` or `## Dead ends`
|
|
99
|
+
entry; leaves return the full payload for root acceptance.
|
|
84
100
|
- **One causal fingerprint, counted by the caller.** Normalize the root cause as
|
|
85
101
|
`<affected boundary>: <failed invariant/failure mechanism>` and bind its minimal
|
|
86
102
|
reproduction plus decisive signal rather than hashing symptom text.
|
|
@@ -98,5 +114,6 @@ has no clear next move. Optional slug selects the active workspace; defaults to
|
|
|
98
114
|
human-only access becomes a human gate; otherwise return the spent strategy and
|
|
99
115
|
reproduction to the caller, which escalates or parks per the
|
|
100
116
|
[retry contract](../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve);
|
|
101
|
-
never request attempt four of the same strategy. While budget remains,
|
|
102
|
-
`/rite-plan repair` inline;
|
|
117
|
+
never request attempt four of the same strategy. While budget remains, the controlling
|
|
118
|
+
root routes coupled failure requiring behavior change to `/rite-plan repair` inline;
|
|
119
|
+
behavior-neutral rerouting uses `unblock` inline. Leaves return proposed routes only.
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Cleanup + classify
|
|
2
2
|
|
|
3
|
+
All recording and routing below follows
|
|
4
|
+
[`SKILL.md` § Caller-owned records and routing](../SKILL.md#caller-owned-records-and-routing):
|
|
5
|
+
root accepts/persists the full payload and owns transitions; leaves return proposals
|
|
6
|
+
and evidence only, never workspace writes, agent launches, or commits.
|
|
7
|
+
|
|
3
8
|
## Classify one causal fingerprint
|
|
4
9
|
|
|
5
10
|
Fingerprint the diagnosis, not its symptom. Reuse it until evidence disproves it; then
|
|
@@ -19,8 +24,9 @@ required before the next consumptive execution pause. Fresh authorization never
|
|
|
19
24
|
pauses offline diagnosis or correction from retained evidence; never ask for a
|
|
20
25
|
blind retry.
|
|
21
26
|
|
|
22
|
-
|
|
23
|
-
or `## Dead ends
|
|
27
|
+
Root records class/routing in `decisions.md` and each failed attempt in `evidence.md`
|
|
28
|
+
or `## Dead ends`; leaves return the complete record for root acceptance/persistence
|
|
29
|
+
before the next admission. Apply the causal-fingerprint and three-attempt rules in
|
|
24
30
|
[`SKILL.md`](../SKILL.md) Hard rules; record baseline, exact failure,
|
|
25
31
|
hypothesis/probe, attempt number, and any human predicate.
|
|
26
32
|
|
|
@@ -31,4 +37,5 @@ hypothesis/probe, attempt number, and any human predicate.
|
|
|
31
37
|
- [ ] Regression test passes (or absence of seam is documented).
|
|
32
38
|
- [ ] All `[DEBUG-...]` instrumentation removed (`grep` the prefix).
|
|
33
39
|
- [ ] Throwaway harnesses deleted (or moved to a clearly marked debug location).
|
|
34
|
-
- [ ]
|
|
40
|
+
- [ ] Root persists the correct hypothesis in `evidence.md`; leaves return it plus
|
|
41
|
+
proposed commit/PR wording for the authorized owner, without committing.
|
|
@@ -10,10 +10,13 @@ confidence.
|
|
|
10
10
|
|
|
11
11
|
## No correct seam? That itself is the finding
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
`
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
Follow [`SKILL.md` § Caller-owned records and routing](../SKILL.md#caller-owned-records-and-routing):
|
|
14
|
+
root notes it in `evidence.md` and appends a follow-up in the active feature's
|
|
15
|
+
`decisions.md` (or routes `/rite-plan repair` if the spec is affected). A leaf
|
|
16
|
+
returns the complete finding, evidence, and proposed route for root acceptance and
|
|
17
|
+
persistence; it never writes the workspace or invokes the rite. The codebase
|
|
18
|
+
architecture is preventing this class of failure from being locked down. Frame it as
|
|
19
|
+
a *deepening opportunity* ("this module needs a seam at <X>
|
|
17
20
|
so this failure can be regression-tested") so the next `/rite-plan` repair or
|
|
18
21
|
architecture cleanup pass has a concrete target.
|
|
19
22
|
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# DevRites completion reply contract
|
|
2
2
|
|
|
3
|
-
Use
|
|
4
|
-
|
|
5
|
-
artifact.
|
|
3
|
+
Use normal host responses. No progress renderer, session telemetry, health score,
|
|
4
|
+
or repetition of durable artifact state.
|
|
6
5
|
|
|
7
6
|
Keep the reply compact and evidence-backed:
|
|
8
7
|
|
|
@@ -21,16 +20,17 @@ Next: <one recommended action>
|
|
|
21
20
|
Record: <primary durable artifact path>
|
|
22
21
|
```
|
|
23
22
|
|
|
24
|
-
`Changed:`
|
|
25
|
-
or
|
|
26
|
-
|
|
27
|
-
those paths. `Record:` then names the single durable artifact a later session
|
|
28
|
-
reads first.
|
|
23
|
+
`Changed:` lists every file written/edited this turn (workspace and source),
|
|
24
|
+
individually or in one named group, so reviewers can `git diff` those paths.
|
|
25
|
+
`Record:` names the single durable artifact the next session reads first.
|
|
29
26
|
|
|
30
|
-
|
|
27
|
+
Active `/rite-autocomplete` consumes green checkpoints/`next_action` internally.
|
|
28
|
+
Continue execution or tool progress; never end with a text-only final reply between green phases.
|
|
31
29
|
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
Standalone HITL mid-flight replies follow the same economy:
|
|
31
|
+
|
|
32
|
+
- **Restate position** (`step N of M` / `state: <where things stand>`); do not rely
|
|
33
|
+
on the reader remembering it between turns.
|
|
34
34
|
- **One next action, doable now.** `Next:` names one concrete action completable in
|
|
35
35
|
under two minutes — a command, a file to open, a yes/no decision. "Want me to
|
|
36
36
|
continue?" is a stall, not an action.
|