@oyolincc/create 0.5.0 → 0.5.1
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/package.json +1 -1
- package/templates/{monorepo/.agents/skills/grilling → hono-fullstack/.agents/skills/ask-grilling}/SKILL.md +1 -1
- package/templates/hono-fullstack/.agents/skills/build-api-and-interface-design/SKILL.md +369 -0
- package/templates/hono-fullstack/.agents/skills/build-context-engineering/SKILL.md +353 -0
- package/templates/hono-fullstack/.agents/skills/build-incremental-implementation/SKILL.md +249 -0
- package/templates/hono-fullstack/.agents/skills/build-observability-and-instrumentation/SKILL.md +239 -0
- package/templates/hono-fullstack/.agents/skills/plan-planning-and-task-breakdown/SKILL.md +257 -0
- package/templates/{monorepo/.agents/skills/prototype → hono-fullstack/.agents/skills/plan-prototype}/LOGIC.md +1 -1
- package/templates/{monorepo/.agents/skills/prototype → hono-fullstack/.agents/skills/plan-prototype}/SKILL.md +2 -2
- package/templates/hono-fullstack/.agents/skills/{prototype → plan-prototype}/UI.md +2 -2
- package/templates/{monorepo/.agents/skills/research → hono-fullstack/.agents/skills/plan-research}/SKILL.md +2 -2
- package/templates/hono-fullstack/.agents/skills/plan-using-agent-skills/SKILL.md +185 -0
- package/templates/{monorepo/.agents/skills/wayfinder → hono-fullstack/.agents/skills/plan-wayfinder}/SKILL.md +43 -29
- package/templates/hono-fullstack/.agents/skills/review-code-review-and-quality/SKILL.md +400 -0
- package/templates/hono-fullstack/.agents/skills/review-doubt-driven-development/SKILL.md +244 -0
- package/templates/hono-fullstack/.agents/skills/review-security-and-hardening/SKILL.md +216 -0
- package/templates/hono-fullstack/.agents/skills/review-security-and-hardening/references/hardening-patterns.md +331 -0
- package/templates/hono-fullstack/.agents/skills/ship-ci-cd-and-automation/SKILL.md +393 -0
- package/templates/hono-fullstack/.agents/skills/ship-deprecation-and-migration/SKILL.md +252 -0
- package/templates/hono-fullstack/.agents/skills/ship-documentation-and-adrs/SKILL.md +298 -0
- package/templates/hono-fullstack/.agents/skills/ship-git-workflow-and-versioning/SKILL.md +355 -0
- package/templates/hono-fullstack/.agents/skills/ship-shipping-and-launch/SKILL.md +336 -0
- package/templates/hono-fullstack/.agents/skills/simplify-code-simplification/SKILL.md +332 -0
- package/templates/hono-fullstack/.agents/skills/simplify-performance-optimization/SKILL.md +268 -0
- package/templates/hono-fullstack/.agents/skills/simplify-performance-optimization/references/optimization-patterns.md +250 -0
- package/templates/hono-fullstack/.agents/skills/spec-constraint-driven-development/SKILL.md +318 -0
- package/templates/hono-fullstack/.agents/skills/spec-constraint-driven-development/references/floor-guard.md +182 -0
- package/templates/hono-fullstack/.agents/skills/spec-constraint-driven-development/scripts/quality-gate.mjs +45 -0
- package/templates/hono-fullstack/.agents/skills/spec-driven-development/SKILL.md +261 -0
- package/templates/hono-fullstack/.agents/skills/test-browser-testing-with-devtools/SKILL.md +319 -0
- package/templates/hono-fullstack/.agents/skills/test-debugging-and-error-recovery/SKILL.md +300 -0
- package/templates/hono-fullstack/.agents/skills/test-driven-development/SKILL.md +400 -0
- package/templates/hono-fullstack/AGENTS.md +9 -20
- package/templates/hono-server/.agents/skills/{grilling → ask-grilling}/SKILL.md +1 -1
- package/templates/hono-server/.agents/skills/build-api-and-interface-design/SKILL.md +369 -0
- package/templates/hono-server/.agents/skills/build-context-engineering/SKILL.md +353 -0
- package/templates/hono-server/.agents/skills/build-incremental-implementation/SKILL.md +249 -0
- package/templates/hono-server/.agents/skills/build-observability-and-instrumentation/SKILL.md +239 -0
- package/templates/hono-server/.agents/skills/plan-planning-and-task-breakdown/SKILL.md +257 -0
- package/templates/hono-server/.agents/skills/{prototype → plan-prototype}/LOGIC.md +1 -1
- package/templates/hono-server/.agents/skills/{prototype → plan-prototype}/SKILL.md +2 -2
- package/templates/{monorepo/.agents/skills/prototype → hono-server/.agents/skills/plan-prototype}/UI.md +2 -2
- package/templates/{hono-fullstack/.agents/skills/research → hono-server/.agents/skills/plan-research}/SKILL.md +2 -2
- package/templates/hono-server/.agents/skills/plan-using-agent-skills/SKILL.md +185 -0
- package/templates/{hono-fullstack/.agents/skills/wayfinder → hono-server/.agents/skills/plan-wayfinder}/SKILL.md +43 -29
- package/templates/hono-server/.agents/skills/review-code-review-and-quality/SKILL.md +400 -0
- package/templates/hono-server/.agents/skills/review-doubt-driven-development/SKILL.md +244 -0
- package/templates/hono-server/.agents/skills/review-security-and-hardening/SKILL.md +216 -0
- package/templates/hono-server/.agents/skills/review-security-and-hardening/references/hardening-patterns.md +331 -0
- package/templates/hono-server/.agents/skills/ship-ci-cd-and-automation/SKILL.md +393 -0
- package/templates/hono-server/.agents/skills/ship-deprecation-and-migration/SKILL.md +252 -0
- package/templates/hono-server/.agents/skills/ship-documentation-and-adrs/SKILL.md +298 -0
- package/templates/hono-server/.agents/skills/ship-git-workflow-and-versioning/SKILL.md +355 -0
- package/templates/hono-server/.agents/skills/ship-shipping-and-launch/SKILL.md +336 -0
- package/templates/hono-server/.agents/skills/simplify-code-simplification/SKILL.md +332 -0
- package/templates/hono-server/.agents/skills/simplify-performance-optimization/SKILL.md +268 -0
- package/templates/hono-server/.agents/skills/simplify-performance-optimization/references/optimization-patterns.md +250 -0
- package/templates/hono-server/.agents/skills/spec-constraint-driven-development/SKILL.md +318 -0
- package/templates/hono-server/.agents/skills/spec-constraint-driven-development/references/floor-guard.md +182 -0
- package/templates/hono-server/.agents/skills/spec-constraint-driven-development/scripts/quality-gate.mjs +45 -0
- package/templates/hono-server/.agents/skills/spec-driven-development/SKILL.md +261 -0
- package/templates/hono-server/.agents/skills/test-browser-testing-with-devtools/SKILL.md +319 -0
- package/templates/hono-server/.agents/skills/test-debugging-and-error-recovery/SKILL.md +300 -0
- package/templates/hono-server/.agents/skills/test-driven-development/SKILL.md +400 -0
- package/templates/hono-server/AGENTS.md +9 -20
- package/templates/{hono-fullstack/.agents/skills/grilling → monorepo/.agents/skills/ask-grilling}/SKILL.md +1 -1
- package/templates/monorepo/.agents/skills/build-api-and-interface-design/SKILL.md +369 -0
- package/templates/monorepo/.agents/skills/build-context-engineering/SKILL.md +353 -0
- package/templates/monorepo/.agents/skills/build-incremental-implementation/SKILL.md +249 -0
- package/templates/monorepo/.agents/skills/build-observability-and-instrumentation/SKILL.md +239 -0
- package/templates/monorepo/.agents/skills/plan-planning-and-task-breakdown/SKILL.md +257 -0
- package/templates/{hono-fullstack/.agents/skills/prototype → monorepo/.agents/skills/plan-prototype}/LOGIC.md +1 -1
- package/templates/{hono-fullstack/.agents/skills/prototype → monorepo/.agents/skills/plan-prototype}/SKILL.md +2 -2
- package/templates/{hono-server/.agents/skills/prototype → monorepo/.agents/skills/plan-prototype}/UI.md +2 -2
- package/templates/{hono-server/.agents/skills/research → monorepo/.agents/skills/plan-research}/SKILL.md +2 -2
- package/templates/monorepo/.agents/skills/plan-using-agent-skills/SKILL.md +185 -0
- package/templates/{hono-server/.agents/skills/wayfinder → monorepo/.agents/skills/plan-wayfinder}/SKILL.md +43 -29
- package/templates/monorepo/.agents/skills/review-code-review-and-quality/SKILL.md +400 -0
- package/templates/monorepo/.agents/skills/review-doubt-driven-development/SKILL.md +244 -0
- package/templates/monorepo/.agents/skills/review-security-and-hardening/SKILL.md +216 -0
- package/templates/monorepo/.agents/skills/review-security-and-hardening/references/hardening-patterns.md +331 -0
- package/templates/monorepo/.agents/skills/ship-ci-cd-and-automation/SKILL.md +393 -0
- package/templates/monorepo/.agents/skills/ship-deprecation-and-migration/SKILL.md +252 -0
- package/templates/monorepo/.agents/skills/ship-documentation-and-adrs/SKILL.md +298 -0
- package/templates/monorepo/.agents/skills/ship-git-workflow-and-versioning/SKILL.md +355 -0
- package/templates/monorepo/.agents/skills/ship-shipping-and-launch/SKILL.md +336 -0
- package/templates/monorepo/.agents/skills/simplify-code-simplification/SKILL.md +332 -0
- package/templates/monorepo/.agents/skills/simplify-performance-optimization/SKILL.md +268 -0
- package/templates/monorepo/.agents/skills/simplify-performance-optimization/references/optimization-patterns.md +250 -0
- package/templates/monorepo/.agents/skills/spec-constraint-driven-development/SKILL.md +318 -0
- package/templates/monorepo/.agents/skills/spec-constraint-driven-development/references/floor-guard.md +182 -0
- package/templates/monorepo/.agents/skills/spec-constraint-driven-development/scripts/quality-gate.mjs +45 -0
- package/templates/monorepo/.agents/skills/spec-driven-development/SKILL.md +261 -0
- package/templates/monorepo/.agents/skills/test-browser-testing-with-devtools/SKILL.md +319 -0
- package/templates/monorepo/.agents/skills/test-debugging-and-error-recovery/SKILL.md +300 -0
- package/templates/monorepo/.agents/skills/test-driven-development/SKILL.md +400 -0
- package/templates/monorepo/AGENTS.md +9 -20
- package/templates/hono-fullstack/.agents/skills/ask-matt/PHASE-BOUNDARIES.md +0 -55
- package/templates/hono-fullstack/.agents/skills/ask-matt/SKILL.md +0 -90
- package/templates/hono-fullstack/.agents/skills/ask-matt/agents/openai.yaml +0 -5
- package/templates/hono-fullstack/.agents/skills/code-review/SKILL.md +0 -87
- package/templates/hono-fullstack/.agents/skills/code-review/agents/openai.yaml +0 -3
- package/templates/hono-fullstack/.agents/skills/codebase-design/DEEPENING.md +0 -37
- package/templates/hono-fullstack/.agents/skills/codebase-design/DESIGN-IT-TWICE.md +0 -44
- package/templates/hono-fullstack/.agents/skills/codebase-design/SKILL.md +0 -114
- package/templates/hono-fullstack/.agents/skills/codebase-design/agents/openai.yaml +0 -3
- package/templates/hono-fullstack/.agents/skills/confirm-requirements/SKILL.md +0 -25
- package/templates/hono-fullstack/.agents/skills/diagnosing-bugs/SKILL.md +0 -140
- package/templates/hono-fullstack/.agents/skills/diagnosing-bugs/agents/openai.yaml +0 -3
- package/templates/hono-fullstack/.agents/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +0 -44
- package/templates/hono-fullstack/.agents/skills/domain-modeling/ADR-FORMAT.md +0 -47
- package/templates/hono-fullstack/.agents/skills/domain-modeling/CONTEXT-FORMAT.md +0 -60
- package/templates/hono-fullstack/.agents/skills/domain-modeling/SKILL.md +0 -74
- package/templates/hono-fullstack/.agents/skills/domain-modeling/agents/openai.yaml +0 -3
- package/templates/hono-fullstack/.agents/skills/grill-me/SKILL.md +0 -7
- package/templates/hono-fullstack/.agents/skills/grill-me/agents/openai.yaml +0 -5
- package/templates/hono-fullstack/.agents/skills/implement/SKILL.md +0 -15
- package/templates/hono-fullstack/.agents/skills/implement/agents/openai.yaml +0 -5
- package/templates/hono-fullstack/.agents/skills/improve-codebase-architecture/HTML-REPORT.md +0 -123
- package/templates/hono-fullstack/.agents/skills/improve-codebase-architecture/SKILL.md +0 -71
- package/templates/hono-fullstack/.agents/skills/improve-codebase-architecture/agents/openai.yaml +0 -5
- package/templates/hono-fullstack/.agents/skills/resolving-merge-conflicts/SKILL.md +0 -14
- package/templates/hono-fullstack/.agents/skills/resolving-merge-conflicts/agents/openai.yaml +0 -3
- package/templates/hono-fullstack/.agents/skills/scoped-code-review/SKILL.md +0 -113
- package/templates/hono-fullstack/.agents/skills/setup-matt-pocock-skills/SKILL.md +0 -116
- package/templates/hono-fullstack/.agents/skills/setup-matt-pocock-skills/agents/openai.yaml +0 -5
- package/templates/hono-fullstack/.agents/skills/setup-matt-pocock-skills/domain.md +0 -51
- package/templates/hono-fullstack/.agents/skills/setup-matt-pocock-skills/issue-tracker-github.md +0 -45
- package/templates/hono-fullstack/.agents/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +0 -46
- package/templates/hono-fullstack/.agents/skills/setup-matt-pocock-skills/issue-tracker-local.md +0 -30
- package/templates/hono-fullstack/.agents/skills/setup-matt-pocock-skills/triage-labels.md +0 -15
- package/templates/hono-fullstack/.agents/skills/tdd/SKILL.md +0 -38
- package/templates/hono-fullstack/.agents/skills/tdd/agents/openai.yaml +0 -3
- package/templates/hono-fullstack/.agents/skills/tdd/mocking.md +0 -59
- package/templates/hono-fullstack/.agents/skills/tdd/tests.md +0 -77
- package/templates/hono-fullstack/.agents/skills/teach/GLOSSARY-FORMAT.md +0 -35
- package/templates/hono-fullstack/.agents/skills/teach/LEARNING-RECORD-FORMAT.md +0 -46
- package/templates/hono-fullstack/.agents/skills/teach/MISSION-FORMAT.md +0 -31
- package/templates/hono-fullstack/.agents/skills/teach/RESOURCES-FORMAT.md +0 -32
- package/templates/hono-fullstack/.agents/skills/teach/SKILL.md +0 -140
- package/templates/hono-fullstack/.agents/skills/teach/agents/openai.yaml +0 -5
- package/templates/hono-fullstack/.agents/skills/to-questionnaire/SKILL.md +0 -53
- package/templates/hono-fullstack/.agents/skills/to-questionnaire/agents/openai.yaml +0 -5
- package/templates/hono-fullstack/.agents/skills/triage/AGENT-BRIEF.md +0 -207
- package/templates/hono-fullstack/.agents/skills/triage/OUT-OF-SCOPE.md +0 -105
- package/templates/hono-fullstack/.agents/skills/triage/SKILL.md +0 -112
- package/templates/hono-fullstack/.agents/skills/triage/agents/openai.yaml +0 -5
- package/templates/hono-fullstack/.agents/skills/wait-what/SKILL.md +0 -7
- package/templates/hono-fullstack/.agents/skills/wait-what/agents/openai.yaml +0 -5
- package/templates/hono-fullstack/.agents/skills/wizard/SKILL.md +0 -44
- package/templates/hono-fullstack/.agents/skills/wizard/agents/openai.yaml +0 -3
- package/templates/hono-fullstack/.agents/skills/wizard/template.sh +0 -204
- package/templates/hono-fullstack/.agents/skills/writing-for-agents/SKILL-MECHANICS.md +0 -22
- package/templates/hono-fullstack/.agents/skills/writing-for-agents/SKILL.md +0 -81
- package/templates/hono-fullstack/.agents/skills/writing-for-agents/agents/openai.yaml +0 -3
- package/templates/hono-fullstack/docs/agents/domain.md +0 -41
- package/templates/hono-fullstack/docs/agents/issue-tracker.md +0 -30
- package/templates/hono-fullstack/docs/agents/triage-labels.md +0 -15
- package/templates/hono-server/.agents/skills/ask-matt/PHASE-BOUNDARIES.md +0 -55
- package/templates/hono-server/.agents/skills/ask-matt/SKILL.md +0 -90
- package/templates/hono-server/.agents/skills/ask-matt/agents/openai.yaml +0 -5
- package/templates/hono-server/.agents/skills/code-review/SKILL.md +0 -87
- package/templates/hono-server/.agents/skills/code-review/agents/openai.yaml +0 -3
- package/templates/hono-server/.agents/skills/codebase-design/DEEPENING.md +0 -37
- package/templates/hono-server/.agents/skills/codebase-design/DESIGN-IT-TWICE.md +0 -44
- package/templates/hono-server/.agents/skills/codebase-design/SKILL.md +0 -114
- package/templates/hono-server/.agents/skills/codebase-design/agents/openai.yaml +0 -3
- package/templates/hono-server/.agents/skills/confirm-requirements/SKILL.md +0 -25
- package/templates/hono-server/.agents/skills/diagnosing-bugs/SKILL.md +0 -140
- package/templates/hono-server/.agents/skills/diagnosing-bugs/agents/openai.yaml +0 -3
- package/templates/hono-server/.agents/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +0 -44
- package/templates/hono-server/.agents/skills/domain-modeling/ADR-FORMAT.md +0 -47
- package/templates/hono-server/.agents/skills/domain-modeling/CONTEXT-FORMAT.md +0 -60
- package/templates/hono-server/.agents/skills/domain-modeling/SKILL.md +0 -74
- package/templates/hono-server/.agents/skills/domain-modeling/agents/openai.yaml +0 -3
- package/templates/hono-server/.agents/skills/grill-me/SKILL.md +0 -7
- package/templates/hono-server/.agents/skills/grill-me/agents/openai.yaml +0 -5
- package/templates/hono-server/.agents/skills/implement/SKILL.md +0 -15
- package/templates/hono-server/.agents/skills/implement/agents/openai.yaml +0 -5
- package/templates/hono-server/.agents/skills/improve-codebase-architecture/HTML-REPORT.md +0 -123
- package/templates/hono-server/.agents/skills/improve-codebase-architecture/SKILL.md +0 -71
- package/templates/hono-server/.agents/skills/improve-codebase-architecture/agents/openai.yaml +0 -5
- package/templates/hono-server/.agents/skills/resolving-merge-conflicts/SKILL.md +0 -14
- package/templates/hono-server/.agents/skills/resolving-merge-conflicts/agents/openai.yaml +0 -3
- package/templates/hono-server/.agents/skills/scoped-code-review/SKILL.md +0 -113
- package/templates/hono-server/.agents/skills/setup-matt-pocock-skills/SKILL.md +0 -116
- package/templates/hono-server/.agents/skills/setup-matt-pocock-skills/agents/openai.yaml +0 -5
- package/templates/hono-server/.agents/skills/setup-matt-pocock-skills/domain.md +0 -51
- package/templates/hono-server/.agents/skills/setup-matt-pocock-skills/issue-tracker-github.md +0 -45
- package/templates/hono-server/.agents/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +0 -46
- package/templates/hono-server/.agents/skills/setup-matt-pocock-skills/issue-tracker-local.md +0 -30
- package/templates/hono-server/.agents/skills/setup-matt-pocock-skills/triage-labels.md +0 -15
- package/templates/hono-server/.agents/skills/tdd/SKILL.md +0 -38
- package/templates/hono-server/.agents/skills/tdd/agents/openai.yaml +0 -3
- package/templates/hono-server/.agents/skills/tdd/mocking.md +0 -59
- package/templates/hono-server/.agents/skills/tdd/tests.md +0 -77
- package/templates/hono-server/.agents/skills/teach/GLOSSARY-FORMAT.md +0 -35
- package/templates/hono-server/.agents/skills/teach/LEARNING-RECORD-FORMAT.md +0 -46
- package/templates/hono-server/.agents/skills/teach/MISSION-FORMAT.md +0 -31
- package/templates/hono-server/.agents/skills/teach/RESOURCES-FORMAT.md +0 -32
- package/templates/hono-server/.agents/skills/teach/SKILL.md +0 -140
- package/templates/hono-server/.agents/skills/teach/agents/openai.yaml +0 -5
- package/templates/hono-server/.agents/skills/to-questionnaire/SKILL.md +0 -53
- package/templates/hono-server/.agents/skills/to-questionnaire/agents/openai.yaml +0 -5
- package/templates/hono-server/.agents/skills/triage/AGENT-BRIEF.md +0 -207
- package/templates/hono-server/.agents/skills/triage/OUT-OF-SCOPE.md +0 -105
- package/templates/hono-server/.agents/skills/triage/SKILL.md +0 -112
- package/templates/hono-server/.agents/skills/triage/agents/openai.yaml +0 -5
- package/templates/hono-server/.agents/skills/wait-what/SKILL.md +0 -7
- package/templates/hono-server/.agents/skills/wait-what/agents/openai.yaml +0 -5
- package/templates/hono-server/.agents/skills/wizard/SKILL.md +0 -44
- package/templates/hono-server/.agents/skills/wizard/agents/openai.yaml +0 -3
- package/templates/hono-server/.agents/skills/wizard/template.sh +0 -204
- package/templates/hono-server/.agents/skills/writing-for-agents/SKILL-MECHANICS.md +0 -22
- package/templates/hono-server/.agents/skills/writing-for-agents/SKILL.md +0 -81
- package/templates/hono-server/.agents/skills/writing-for-agents/agents/openai.yaml +0 -3
- package/templates/hono-server/docs/agents/domain.md +0 -41
- package/templates/hono-server/docs/agents/issue-tracker.md +0 -30
- package/templates/hono-server/docs/agents/triage-labels.md +0 -15
- package/templates/monorepo/.agents/skills/ask-matt/PHASE-BOUNDARIES.md +0 -55
- package/templates/monorepo/.agents/skills/ask-matt/SKILL.md +0 -90
- package/templates/monorepo/.agents/skills/ask-matt/agents/openai.yaml +0 -5
- package/templates/monorepo/.agents/skills/code-review/SKILL.md +0 -87
- package/templates/monorepo/.agents/skills/code-review/agents/openai.yaml +0 -3
- package/templates/monorepo/.agents/skills/codebase-design/DEEPENING.md +0 -37
- package/templates/monorepo/.agents/skills/codebase-design/DESIGN-IT-TWICE.md +0 -44
- package/templates/monorepo/.agents/skills/codebase-design/SKILL.md +0 -114
- package/templates/monorepo/.agents/skills/codebase-design/agents/openai.yaml +0 -3
- package/templates/monorepo/.agents/skills/confirm-requirements/SKILL.md +0 -25
- package/templates/monorepo/.agents/skills/diagnosing-bugs/SKILL.md +0 -140
- package/templates/monorepo/.agents/skills/diagnosing-bugs/agents/openai.yaml +0 -3
- package/templates/monorepo/.agents/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +0 -44
- package/templates/monorepo/.agents/skills/domain-modeling/ADR-FORMAT.md +0 -47
- package/templates/monorepo/.agents/skills/domain-modeling/CONTEXT-FORMAT.md +0 -60
- package/templates/monorepo/.agents/skills/domain-modeling/SKILL.md +0 -74
- package/templates/monorepo/.agents/skills/domain-modeling/agents/openai.yaml +0 -3
- package/templates/monorepo/.agents/skills/grill-me/SKILL.md +0 -7
- package/templates/monorepo/.agents/skills/grill-me/agents/openai.yaml +0 -5
- package/templates/monorepo/.agents/skills/implement/SKILL.md +0 -15
- package/templates/monorepo/.agents/skills/implement/agents/openai.yaml +0 -5
- package/templates/monorepo/.agents/skills/improve-codebase-architecture/HTML-REPORT.md +0 -123
- package/templates/monorepo/.agents/skills/improve-codebase-architecture/SKILL.md +0 -71
- package/templates/monorepo/.agents/skills/improve-codebase-architecture/agents/openai.yaml +0 -5
- package/templates/monorepo/.agents/skills/resolving-merge-conflicts/SKILL.md +0 -14
- package/templates/monorepo/.agents/skills/resolving-merge-conflicts/agents/openai.yaml +0 -3
- package/templates/monorepo/.agents/skills/scoped-code-review/SKILL.md +0 -113
- package/templates/monorepo/.agents/skills/setup-matt-pocock-skills/SKILL.md +0 -116
- package/templates/monorepo/.agents/skills/setup-matt-pocock-skills/agents/openai.yaml +0 -5
- package/templates/monorepo/.agents/skills/setup-matt-pocock-skills/domain.md +0 -51
- package/templates/monorepo/.agents/skills/setup-matt-pocock-skills/issue-tracker-github.md +0 -45
- package/templates/monorepo/.agents/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +0 -46
- package/templates/monorepo/.agents/skills/setup-matt-pocock-skills/issue-tracker-local.md +0 -30
- package/templates/monorepo/.agents/skills/setup-matt-pocock-skills/triage-labels.md +0 -15
- package/templates/monorepo/.agents/skills/tdd/SKILL.md +0 -38
- package/templates/monorepo/.agents/skills/tdd/agents/openai.yaml +0 -3
- package/templates/monorepo/.agents/skills/tdd/mocking.md +0 -59
- package/templates/monorepo/.agents/skills/tdd/tests.md +0 -77
- package/templates/monorepo/.agents/skills/teach/GLOSSARY-FORMAT.md +0 -35
- package/templates/monorepo/.agents/skills/teach/LEARNING-RECORD-FORMAT.md +0 -46
- package/templates/monorepo/.agents/skills/teach/MISSION-FORMAT.md +0 -31
- package/templates/monorepo/.agents/skills/teach/RESOURCES-FORMAT.md +0 -32
- package/templates/monorepo/.agents/skills/teach/SKILL.md +0 -140
- package/templates/monorepo/.agents/skills/teach/agents/openai.yaml +0 -5
- package/templates/monorepo/.agents/skills/to-questionnaire/SKILL.md +0 -53
- package/templates/monorepo/.agents/skills/to-questionnaire/agents/openai.yaml +0 -5
- package/templates/monorepo/.agents/skills/triage/AGENT-BRIEF.md +0 -207
- package/templates/monorepo/.agents/skills/triage/OUT-OF-SCOPE.md +0 -105
- package/templates/monorepo/.agents/skills/triage/SKILL.md +0 -112
- package/templates/monorepo/.agents/skills/triage/agents/openai.yaml +0 -5
- package/templates/monorepo/.agents/skills/wait-what/SKILL.md +0 -7
- package/templates/monorepo/.agents/skills/wait-what/agents/openai.yaml +0 -5
- package/templates/monorepo/.agents/skills/wizard/SKILL.md +0 -44
- package/templates/monorepo/.agents/skills/wizard/agents/openai.yaml +0 -3
- package/templates/monorepo/.agents/skills/wizard/template.sh +0 -204
- package/templates/monorepo/.agents/skills/writing-for-agents/SKILL-MECHANICS.md +0 -22
- package/templates/monorepo/.agents/skills/writing-for-agents/SKILL.md +0 -81
- package/templates/monorepo/.agents/skills/writing-for-agents/agents/openai.yaml +0 -3
- package/templates/monorepo/docs/agents/domain.md +0 -41
- package/templates/monorepo/docs/agents/issue-tracker.md +0 -30
- package/templates/monorepo/docs/agents/triage-labels.md +0 -15
- /package/templates/hono-fullstack/.agents/skills/{grilling → ask-grilling}/agents/openai.yaml +0 -0
- /package/templates/hono-fullstack/.agents/skills/{prototype → plan-prototype}/agents/openai.yaml +0 -0
- /package/templates/hono-fullstack/.agents/skills/{research → plan-research}/agents/openai.yaml +0 -0
- /package/templates/hono-fullstack/.agents/skills/{wayfinder → plan-wayfinder}/agents/openai.yaml +0 -0
- /package/templates/hono-server/.agents/skills/{grilling → ask-grilling}/agents/openai.yaml +0 -0
- /package/templates/hono-server/.agents/skills/{prototype → plan-prototype}/agents/openai.yaml +0 -0
- /package/templates/hono-server/.agents/skills/{research → plan-research}/agents/openai.yaml +0 -0
- /package/templates/hono-server/.agents/skills/{wayfinder → plan-wayfinder}/agents/openai.yaml +0 -0
- /package/templates/monorepo/.agents/skills/{grilling → ask-grilling}/agents/openai.yaml +0 -0
- /package/templates/monorepo/.agents/skills/{prototype → plan-prototype}/agents/openai.yaml +0 -0
- /package/templates/monorepo/.agents/skills/{research → plan-research}/agents/openai.yaml +0 -0
- /package/templates/monorepo/.agents/skills/{wayfinder → plan-wayfinder}/agents/openai.yaml +0 -0
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review-code-review-and-quality
|
|
3
|
+
description: Conducts multi-axis code review. Use before merging any change. Use when reviewing code written by yourself, another agent, or a human. Use when you need to assess code quality across multiple dimensions before it enters the main branch. Use when asked to review a diff or a pull request, even when the diff is pasted inline.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Code Review and Quality
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Multi-dimensional code review with quality gates. Every change gets reviewed before merge — no exceptions. Review covers five axes: correctness, readability, architecture, security, and performance.
|
|
11
|
+
|
|
12
|
+
**The approval standard:** Approve a change when it definitely improves overall code health, even if it isn't perfect. Perfect code doesn't exist — the goal is continuous improvement. Don't block a change because it isn't exactly how you would have written it. If it improves the codebase and follows the project's conventions, approve it.
|
|
13
|
+
|
|
14
|
+
## When to Use
|
|
15
|
+
|
|
16
|
+
- Before merging any PR or change
|
|
17
|
+
- After completing a feature implementation
|
|
18
|
+
- When another agent or model produced code you need to evaluate
|
|
19
|
+
- When refactoring existing code
|
|
20
|
+
- After any bug fix (review both the fix and the regression test)
|
|
21
|
+
|
|
22
|
+
## The Five-Axis Review
|
|
23
|
+
|
|
24
|
+
Every review evaluates code across these dimensions:
|
|
25
|
+
|
|
26
|
+
### 1. Correctness
|
|
27
|
+
|
|
28
|
+
Does the code do what it claims to do?
|
|
29
|
+
|
|
30
|
+
- Does it match the spec or task requirements?
|
|
31
|
+
- Are edge cases handled (null, empty, boundary values)?
|
|
32
|
+
- Are error paths handled (not just the happy path)?
|
|
33
|
+
- Does it pass all tests? Are the tests actually testing the right things?
|
|
34
|
+
- Are there off-by-one errors, race conditions, or state inconsistencies?
|
|
35
|
+
|
|
36
|
+
### 2. Readability & Simplicity
|
|
37
|
+
|
|
38
|
+
Can another engineer (or agent) understand this code without the author explaining it?
|
|
39
|
+
|
|
40
|
+
- Are names descriptive and consistent with project conventions? (No `temp`, `data`, `result` without context)
|
|
41
|
+
- Is the control flow straightforward (avoid nested ternaries, deep callbacks)?
|
|
42
|
+
- Is the code organized logically (related code grouped, clear module boundaries)?
|
|
43
|
+
- Are there any "clever" tricks that should be simplified?
|
|
44
|
+
- **Could this be done in fewer lines?** (1000 lines where 100 suffice is a failure)
|
|
45
|
+
- **Are abstractions earning their complexity?** (Don't generalize until the third use case)
|
|
46
|
+
- Would comments help clarify non-obvious intent? (But don't comment obvious code.)
|
|
47
|
+
- Are there dead code artifacts: no-op variables (`_unused`), backwards-compat shims, or `// removed` comments?
|
|
48
|
+
- **Is a new conditional bolted onto an unrelated flow?** That's a design smell, not a nit — push the logic into its own helper, state, or policy instead of tangling an existing path.
|
|
49
|
+
- **Do repeated conditionals on the same shape appear?** They signal a missing model or dispatcher. A "temporary" branch is usually permanent debt.
|
|
50
|
+
|
|
51
|
+
### 3. Architecture
|
|
52
|
+
|
|
53
|
+
Does the change fit the system's design?
|
|
54
|
+
|
|
55
|
+
- Does it follow existing patterns or introduce a new one? If new, is it justified?
|
|
56
|
+
- Does it maintain clean module boundaries?
|
|
57
|
+
- Is there code duplication that should be shared?
|
|
58
|
+
- Are dependencies flowing in the right direction (no circular dependencies)?
|
|
59
|
+
- Is the abstraction level appropriate (not over-engineered, not too coupled)?
|
|
60
|
+
- **Does this refactor reduce complexity or just relocate it?** Count the concepts a reader must hold to follow the change. If a "cleaner" version leaves that count unchanged, it isn't cleaner — prefer the restructuring that makes whole branches, modes, or layers disappear over one that re-centralizes the same logic. Prefer deleting an abstraction to polishing it.
|
|
61
|
+
- **Is feature-specific logic leaking into a shared or general-purpose module?** Keep logic in its owning layer, reuse the existing canonical helper instead of a near-duplicate, and don't normalize architectural drift.
|
|
62
|
+
- **Are type boundaries explicit?** Question gratuitous `any`/`unknown`/optional/casts and silent fallbacks that paper over an unclear invariant — making the boundary explicit often makes the surrounding control flow simpler.
|
|
63
|
+
|
|
64
|
+
### 4. Security
|
|
65
|
+
|
|
66
|
+
For detailed security guidance, see `review-security-and-hardening`. Does the change introduce vulnerabilities?
|
|
67
|
+
|
|
68
|
+
- Is user input validated and sanitized?
|
|
69
|
+
- Are secrets kept out of code, logs, and version control?
|
|
70
|
+
- Is authentication/authorization checked where needed?
|
|
71
|
+
- Are SQL queries parameterized (no string concatenation)?
|
|
72
|
+
- Are outputs encoded to prevent XSS?
|
|
73
|
+
- Are dependencies from trusted sources with no known vulnerabilities?
|
|
74
|
+
- Is data from external sources (APIs, logs, user content, config files) treated as untrusted?
|
|
75
|
+
- Are external data flows validated at system boundaries before use in logic or rendering?
|
|
76
|
+
|
|
77
|
+
### 5. Performance
|
|
78
|
+
|
|
79
|
+
For detailed profiling and optimization, see `simplify-performance-optimization`. Does the change introduce performance problems?
|
|
80
|
+
|
|
81
|
+
- Any N+1 query patterns?
|
|
82
|
+
- Any unbounded loops or unconstrained data fetching?
|
|
83
|
+
- Any synchronous operations that should be async?
|
|
84
|
+
- Any unnecessary re-renders in UI components?
|
|
85
|
+
- Any missing pagination on list endpoints?
|
|
86
|
+
- Any large objects created in hot paths?
|
|
87
|
+
|
|
88
|
+
## Structural Remedies
|
|
89
|
+
|
|
90
|
+
When you flag a structural problem, propose the move — not just the problem. A review that only says "this is complex" leaves the author guessing. Reach for a named restructuring:
|
|
91
|
+
|
|
92
|
+
- **Replace a chain of conditionals** with a typed model or an explicit dispatcher.
|
|
93
|
+
- **Collapse duplicate branches** into a single clearer flow.
|
|
94
|
+
- **Separate orchestration from business logic** so each reads on its own.
|
|
95
|
+
- **Move feature-specific logic** out of a shared module into the package that owns the concept.
|
|
96
|
+
- **Reuse the canonical helper** instead of a bespoke near-duplicate.
|
|
97
|
+
- **Make a type boundary explicit** so downstream branching disappears.
|
|
98
|
+
- **Delete a pass-through wrapper** that adds indirection without clarifying the API.
|
|
99
|
+
- **Extract a helper, or split a large file** into focused modules.
|
|
100
|
+
|
|
101
|
+
Prefer the remedy that removes moving pieces over one that spreads the same complexity around.
|
|
102
|
+
|
|
103
|
+
## Change Sizing
|
|
104
|
+
|
|
105
|
+
Small, focused changes are easier to review, faster to merge, and safer to deploy. Target these sizes:
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
~100 lines changed → Good. Reviewable in one sitting.
|
|
109
|
+
~300 lines changed → Acceptable if it's a single logical change.
|
|
110
|
+
~1000 lines changed → Too large. Split it.
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**Watch file size, not just diff size.** A small diff can still push a file past a healthy boundary — around 1000 *total* lines in a single file (distinct from the ~1000 *changed*-lines threshold above) is a common inspection signal, not a hard cap. When a change materially grows an already-large file, ask whether to extract helpers, subcomponents, or modules *first*, before piling more on. Decompose, then add.
|
|
114
|
+
|
|
115
|
+
**What counts as "one change":** A single self-contained modification that addresses one thing, includes related tests, and keeps the system functional after submission. One part of a feature — not the whole feature.
|
|
116
|
+
|
|
117
|
+
**Splitting strategies when a change is too large:**
|
|
118
|
+
|
|
119
|
+
| Strategy | How | When |
|
|
120
|
+
|----------|-----|------|
|
|
121
|
+
| **Stack** | Submit a small change, start the next one based on it | Sequential dependencies |
|
|
122
|
+
| **By file group** | Separate changes for groups needing different reviewers | Cross-cutting concerns |
|
|
123
|
+
| **Horizontal** | Create shared code/stubs first, then consumers | Layered architecture |
|
|
124
|
+
| **Vertical** | Break into smaller full-stack slices of the feature | Feature work |
|
|
125
|
+
|
|
126
|
+
**When large changes are acceptable:** Complete file deletions and automated refactoring where the reviewer only needs to verify intent, not every line.
|
|
127
|
+
|
|
128
|
+
**Separate refactoring from feature work.** A change that refactors existing code and adds new behavior is two changes — submit them separately. Small cleanups (variable renaming) can be included at reviewer discretion.
|
|
129
|
+
|
|
130
|
+
## Change Descriptions
|
|
131
|
+
|
|
132
|
+
Every change needs a description that stands alone in version control history.
|
|
133
|
+
|
|
134
|
+
**First line:** Short, imperative, standalone. "Delete the FizzBuzz RPC" not "Deleting the FizzBuzz RPC." Must be informative enough that someone searching history can understand the change without reading the diff.
|
|
135
|
+
|
|
136
|
+
**Body:** What is changing and why. Include context, decisions, and reasoning not visible in the code itself. Link to bug numbers, benchmark results, or design docs where relevant. Acknowledge approach shortcomings when they exist.
|
|
137
|
+
|
|
138
|
+
**Anti-patterns:** "Fix bug," "Fix build," "Add patch," "Moving code from A to B," "Phase 1," "Add convenience functions."
|
|
139
|
+
|
|
140
|
+
## Review Process
|
|
141
|
+
|
|
142
|
+
### Step 1: Understand the Context
|
|
143
|
+
|
|
144
|
+
Before looking at code, understand the intent:
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
- What is this change trying to accomplish?
|
|
148
|
+
- What spec or task does it implement?
|
|
149
|
+
- What is the expected behavior change?
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Step 2: Review the Tests First
|
|
153
|
+
|
|
154
|
+
Tests reveal intent and coverage:
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
- Do tests exist for the change?
|
|
158
|
+
- Do they test behavior (not implementation details)?
|
|
159
|
+
- Are edge cases covered?
|
|
160
|
+
- Do tests have descriptive names?
|
|
161
|
+
- Would the tests catch a regression if the code changed?
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Answer the last question by experiment, not by reading. Invert one condition the change adds (drop a negation, swap `&&` for `||`), run the suite, then restore the file from a copy. A mutation that stays green is a finding: name the test case that is missing. For a project-wide mutation score, see `spec-constraint-driven-development`.
|
|
165
|
+
|
|
166
|
+
### Step 3: Review the Implementation
|
|
167
|
+
|
|
168
|
+
Walk through the code with the five axes in mind:
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
For each file changed:
|
|
172
|
+
1. Correctness: Does this code do what the test says it should?
|
|
173
|
+
2. Readability: Can I understand this without help?
|
|
174
|
+
3. Architecture: Does this fit the system?
|
|
175
|
+
4. Security: Any vulnerabilities?
|
|
176
|
+
5. Performance: Any bottlenecks?
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Step 4: Categorize Findings
|
|
180
|
+
|
|
181
|
+
Before reporting a finding, check it against the callers, guards and tests that reach the changed code, and drop it if they rule it out. Label defects that already exist in the base separately from regressions this change introduces. Zero findings is a valid result; do not invent one.
|
|
182
|
+
|
|
183
|
+
Label every comment with its severity so the author knows what's required vs optional:
|
|
184
|
+
|
|
185
|
+
| Prefix | Meaning | Author Action |
|
|
186
|
+
|--------|---------|---------------|
|
|
187
|
+
| *(no prefix)* | Required change | Must address before merge |
|
|
188
|
+
| **Critical:** | Blocks merge | Security vulnerability, data loss, broken functionality |
|
|
189
|
+
| **Nit:** | Minor, optional | Author may ignore — formatting, style preferences |
|
|
190
|
+
| **Optional:** / **Consider:** | Suggestion | Worth considering but not required |
|
|
191
|
+
| **FYI** | Informational only | No action needed — context for future reference |
|
|
192
|
+
|
|
193
|
+
This prevents authors from treating all feedback as mandatory and wasting time on optional suggestions.
|
|
194
|
+
|
|
195
|
+
**Lead with what matters.** Order findings by leverage: correctness and security first, then structural regressions and missed simplifications, then everything else. Don't bury a real issue under cosmetic nits — a few high-conviction comments beat a long list. If you have one structural problem and ten nits, the structural problem *is* the review.
|
|
196
|
+
|
|
197
|
+
### Step 5: Verify the Verification
|
|
198
|
+
|
|
199
|
+
Check the author's verification story:
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
- What tests were run?
|
|
203
|
+
- Did the build pass?
|
|
204
|
+
- Was the change tested manually?
|
|
205
|
+
- Are there screenshots for UI changes?
|
|
206
|
+
- Is there a before/after comparison?
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## Multi-Model Review Pattern
|
|
210
|
+
|
|
211
|
+
Use different models for different review perspectives:
|
|
212
|
+
|
|
213
|
+
```
|
|
214
|
+
Model A writes the code
|
|
215
|
+
│
|
|
216
|
+
▼
|
|
217
|
+
Model B reviews for correctness and architecture
|
|
218
|
+
│
|
|
219
|
+
▼
|
|
220
|
+
Model A addresses the feedback
|
|
221
|
+
│
|
|
222
|
+
▼
|
|
223
|
+
Human makes the final call
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
This catches issues that a single model might miss — different models have different blind spots.
|
|
227
|
+
|
|
228
|
+
**Example prompt for a review agent:**
|
|
229
|
+
```
|
|
230
|
+
Review this code change for correctness, security, and adherence to
|
|
231
|
+
our project conventions. The spec says [X]. The change should [Y].
|
|
232
|
+
Flag any issues as Critical, Required, Optional, or Nit.
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
## Dead Code Hygiene
|
|
236
|
+
|
|
237
|
+
After any refactoring or implementation change, check for orphaned code:
|
|
238
|
+
|
|
239
|
+
1. Identify code that is now unreachable or unused
|
|
240
|
+
2. List it explicitly
|
|
241
|
+
3. **Ask before deleting:** "Should I remove these now-unused elements: [list]?"
|
|
242
|
+
|
|
243
|
+
Don't leave dead code lying around — it confuses future readers and agents. But don't silently delete things you're not sure about. When in doubt, ask.
|
|
244
|
+
|
|
245
|
+
```
|
|
246
|
+
DEAD CODE IDENTIFIED:
|
|
247
|
+
- formatLegacyDate() in src/utils/date.ts — replaced by formatDate()
|
|
248
|
+
- OldTaskCard component in src/components/ — replaced by TaskCard
|
|
249
|
+
- LEGACY_API_URL constant in src/config.ts — no remaining references
|
|
250
|
+
→ Safe to remove these?
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
## Review Speed
|
|
254
|
+
|
|
255
|
+
Slow reviews block entire teams. The cost of context-switching to review is less than the waiting cost imposed on others.
|
|
256
|
+
|
|
257
|
+
- **Respond within one business day** — this is the maximum, not the target
|
|
258
|
+
- **Ideal cadence:** Respond shortly after a review request arrives, unless deep in focused coding. A typical change should complete multiple review rounds in a single day
|
|
259
|
+
- **Prioritize fast individual responses** over quick final approval. Quick feedback reduces frustration even if multiple rounds are needed
|
|
260
|
+
- **Large changes:** Ask the author to split them rather than reviewing one massive changeset
|
|
261
|
+
|
|
262
|
+
## Handling Disagreements
|
|
263
|
+
|
|
264
|
+
When resolving review disputes, apply this hierarchy:
|
|
265
|
+
|
|
266
|
+
1. **Technical facts and data** override opinions and preferences
|
|
267
|
+
2. **Style guides** are the absolute authority on style matters
|
|
268
|
+
3. **Software design** must be evaluated on engineering principles, not personal preference
|
|
269
|
+
4. **Codebase consistency** is acceptable if it doesn't degrade overall health
|
|
270
|
+
|
|
271
|
+
**Don't accept "I'll clean it up later."** Experience shows deferred cleanup rarely happens. Require cleanup before submission unless it's a genuine emergency. If surrounding issues can't be addressed in this change, require filing a bug with self-assignment.
|
|
272
|
+
|
|
273
|
+
## Honesty in Review
|
|
274
|
+
|
|
275
|
+
When reviewing code — whether written by you, another agent, or a human:
|
|
276
|
+
|
|
277
|
+
- **Don't rubber-stamp.** "LGTM" without evidence of review helps no one.
|
|
278
|
+
- **Don't soften real issues.** "This might be a minor concern" when it's a bug that will hit production is dishonest.
|
|
279
|
+
- **Quantify problems when possible.** "This N+1 query will add ~50ms per item in the list" is better than "this could be slow."
|
|
280
|
+
- **Push back on approaches with clear problems.** Sycophancy is a failure mode in reviews. If the implementation has issues, say so directly and propose alternatives.
|
|
281
|
+
- **Accept override gracefully.** If the author has full context and disagrees, defer to their judgment. Comment on code, not people — reframe personal critiques to focus on the code itself.
|
|
282
|
+
|
|
283
|
+
## Dependency Discipline
|
|
284
|
+
|
|
285
|
+
Part of code review is dependency review:
|
|
286
|
+
|
|
287
|
+
**Before adding any dependency:**
|
|
288
|
+
1. Does the existing stack solve this? (Often it does.)
|
|
289
|
+
2. How large is the dependency? (Check bundle impact.)
|
|
290
|
+
3. Is it actively maintained? (Check last commit, open issues.)
|
|
291
|
+
4. Does it have known vulnerabilities? (`npm audit`)
|
|
292
|
+
5. What's the license? (Must be compatible with the project.)
|
|
293
|
+
|
|
294
|
+
**Rule:** Prefer standard library and existing utilities over new dependencies. Every dependency is a liability.
|
|
295
|
+
|
|
296
|
+
**Upgrading an existing dependency** is a code change like any other, and the riskiest upgrades are the ones merged in bulk with a message like "bump deps." Review them with the same discipline:
|
|
297
|
+
|
|
298
|
+
1. **Read the changelog, not just the version number.** Semver is a promise the maintainer may not have kept — a "patch" can carry a behavioral change. For a major bump, read the migration notes and find what breaks.
|
|
299
|
+
2. **One dependency per change.** Upgrade and merge them individually (or in small related groups). When a bulk bump breaks the build, you've lost which package did it; a single-package change makes the cause obvious and the revert clean.
|
|
300
|
+
3. **Let the tests decide.** The upgrade is verified by a green suite before *and* after, not by "it installed." If coverage around the dependency's behavior is thin, that gap is the real finding — add a test first.
|
|
301
|
+
4. **Mind the transitive graph.** Most installed packages are ones nobody chose directly. Review the lockfile diff, not just `package.json`; a single direct bump can pull in dozens of indirect changes.
|
|
302
|
+
5. **Keep the lockfile honest.** Commit it, review its diff, and never hand-edit it. The lockfile is the thing that actually pins what ships.
|
|
303
|
+
|
|
304
|
+
For triaging `npm audit` findings and supply-chain risk (typosquatting, compromised maintainers), follow the `review-security-and-hardening` skill — this section covers the upgrade *workflow*, that one covers the security verdict.
|
|
305
|
+
|
|
306
|
+
## The Review Checklist
|
|
307
|
+
|
|
308
|
+
```markdown
|
|
309
|
+
## Review: [PR/Change title]
|
|
310
|
+
|
|
311
|
+
### Context
|
|
312
|
+
- [ ] I understand what this change does and why
|
|
313
|
+
|
|
314
|
+
### Correctness
|
|
315
|
+
- [ ] Change matches spec/task requirements
|
|
316
|
+
- [ ] Edge cases handled
|
|
317
|
+
- [ ] Error paths handled
|
|
318
|
+
- [ ] Tests cover the change adequately
|
|
319
|
+
|
|
320
|
+
### Readability
|
|
321
|
+
- [ ] Names are clear and consistent
|
|
322
|
+
- [ ] Logic is straightforward
|
|
323
|
+
- [ ] No unnecessary complexity
|
|
324
|
+
|
|
325
|
+
### Architecture
|
|
326
|
+
- [ ] Follows existing patterns
|
|
327
|
+
- [ ] No unnecessary coupling or dependencies
|
|
328
|
+
- [ ] Appropriate abstraction level
|
|
329
|
+
- [ ] Refactors reduce complexity rather than relocate it
|
|
330
|
+
- [ ] No feature logic in shared modules; file stays within a healthy size
|
|
331
|
+
|
|
332
|
+
### Security
|
|
333
|
+
- [ ] No secrets in code
|
|
334
|
+
- [ ] Input validated at boundaries
|
|
335
|
+
- [ ] No injection vulnerabilities
|
|
336
|
+
- [ ] Auth checks in place
|
|
337
|
+
- [ ] External data sources treated as untrusted
|
|
338
|
+
|
|
339
|
+
### Performance
|
|
340
|
+
- [ ] No N+1 patterns
|
|
341
|
+
- [ ] No unbounded operations
|
|
342
|
+
- [ ] Pagination on list endpoints
|
|
343
|
+
|
|
344
|
+
### Verification
|
|
345
|
+
- [ ] Tests pass
|
|
346
|
+
- [ ] Build succeeds
|
|
347
|
+
- [ ] Manual verification done (if applicable)
|
|
348
|
+
|
|
349
|
+
### Verdict
|
|
350
|
+
- [ ] **Approve** — Ready to merge
|
|
351
|
+
- [ ] **Request changes** — Issues must be addressed
|
|
352
|
+
```
|
|
353
|
+
## See Also
|
|
354
|
+
|
|
355
|
+
- For detailed security review guidance, see `../../references/security-checklist.md`
|
|
356
|
+
- For performance review checks, see `../../references/performance-checklist.md`
|
|
357
|
+
|
|
358
|
+
## Common Rationalizations
|
|
359
|
+
|
|
360
|
+
| Rationalization | Reality |
|
|
361
|
+
|---|---|
|
|
362
|
+
| "It works, that's good enough" | Working code that's unreadable, insecure, or architecturally wrong creates debt that compounds. |
|
|
363
|
+
| "I wrote it, so I know it's correct" | Authors are blind to their own assumptions. Every change benefits from another set of eyes. |
|
|
364
|
+
| "We'll clean it up later" | Later never comes. The review is the quality gate — use it. Require cleanup before merge, not after. |
|
|
365
|
+
| "AI-generated code is probably fine" | AI code needs more scrutiny, not less. It's confident and plausible, even when wrong. |
|
|
366
|
+
| "The tests pass, so it's good" | Tests are necessary but not sufficient. They don't catch architecture problems, security issues, or readability concerns. |
|
|
367
|
+
| "The refactor makes it cleaner" | Relocating complexity isn't reducing it. If the reader still holds the same number of concepts, the structure didn't improve — look for the version where branches disappear. |
|
|
368
|
+
| "It's only a small addition to this file" | Small diffs still push files past a healthy size and bolt branches onto unrelated flows. Judge the resulting structure, not the diff size. |
|
|
369
|
+
| "It's just a version bump" | A bump is a behavior change you didn't write. Read the changelog; semver doesn't guarantee no breakage. |
|
|
370
|
+
| "I'll upgrade everything in one PR to save time" | A bulk bump that breaks the build hides which package did it. One dependency per change keeps the cause and the revert clean. |
|
|
371
|
+
|
|
372
|
+
## Red Flags
|
|
373
|
+
|
|
374
|
+
- PRs merged without any review
|
|
375
|
+
- Review that only checks if tests pass (ignoring other axes)
|
|
376
|
+
- "LGTM" without evidence of actual review
|
|
377
|
+
- Security-sensitive changes without security-focused review
|
|
378
|
+
- Large PRs that are "too big to review properly" (split them)
|
|
379
|
+
- No regression tests with bug fix PRs
|
|
380
|
+
- Review comments without severity labels — makes it unclear what's required vs optional
|
|
381
|
+
- Accepting "I'll fix it later" — it never happens
|
|
382
|
+
- A refactor that moves code around without reducing the number of concepts a reader must hold
|
|
383
|
+
- A change that grows an already-large file instead of decomposing it
|
|
384
|
+
- New conditionals scattered into unrelated code paths (a missing abstraction)
|
|
385
|
+
- A bespoke helper that duplicates an existing canonical one, or feature logic placed in a shared module
|
|
386
|
+
- A bulk "bump dependencies" PR with no changelog review and no per-package isolation
|
|
387
|
+
- A lockfile change that's hand-edited, uncommitted, or merged without reviewing its diff
|
|
388
|
+
|
|
389
|
+
## Verification
|
|
390
|
+
|
|
391
|
+
After review is complete:
|
|
392
|
+
|
|
393
|
+
- [ ] All Critical issues are resolved
|
|
394
|
+
- [ ] All Required (no-prefix) changes are resolved or explicitly deferred with justification
|
|
395
|
+
- [ ] Tests pass
|
|
396
|
+
- [ ] Build succeeds
|
|
397
|
+
- [ ] The verification story is documented (what changed, how it was verified)
|
|
398
|
+
- [ ] Dependency upgrades were reviewed against their changelog, isolated per package, and verified by a green suite with the lockfile diff reviewed
|
|
399
|
+
|
|
400
|
+
**Presumptive blockers:** surface and propose the simpler design for each of these; escalate to Required only when the change actively makes structure worse: a refactor that relocates complexity instead of reducing it; a change that pushes a file past the size boundary with no decomposition; feature logic added to a shared module; a near-duplicate of an existing canonical helper; a silent fallback that hides an unclear invariant.
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review-doubt-driven-development
|
|
3
|
+
description: Subjects every non-trivial decision to a fresh-context adversarial review before it stands. Use when you want every assumption cross-examined before proceeding, when stress-testing a plan for hidden failure modes, when correctness matters more than speed, when working in unfamiliar code, when stakes are high (production auth, security-sensitive logic, a high-stakes migration, irreversible operations), or any time a confident output would be cheaper to verify now than to debug later.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Doubt-Driven Development
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
A confident answer is not a correct one. Long sessions accumulate context that quietly turns assumptions into "facts" without anyone noticing. Doubt-driven development is the discipline of materializing a fresh-context reviewer — biased to **disprove**, not approve — before any non-trivial output stands.
|
|
11
|
+
|
|
12
|
+
This is not `/review`. `/review` is a verdict on a finished artifact. This is an in-flight posture: non-trivial decisions get cross-examined while course-correction is still cheap.
|
|
13
|
+
|
|
14
|
+
## When to Use
|
|
15
|
+
|
|
16
|
+
A decision is **non-trivial** when at least one of these is true:
|
|
17
|
+
|
|
18
|
+
- It introduces or modifies branching logic
|
|
19
|
+
- It crosses a module or service boundary
|
|
20
|
+
- It asserts a property the type system or compiler cannot verify (thread safety, idempotence, ordering, invariants)
|
|
21
|
+
- Its correctness depends on context the future reader cannot see
|
|
22
|
+
- Its blast radius is irreversible (production deploy, data migration, public API change)
|
|
23
|
+
|
|
24
|
+
Apply the skill when:
|
|
25
|
+
|
|
26
|
+
- About to make an architectural decision under uncertainty
|
|
27
|
+
- About to commit non-trivial code
|
|
28
|
+
- About to claim a non-obvious fact ("this is safe", "this scales", "this matches the spec")
|
|
29
|
+
- Working in code you don't fully understand
|
|
30
|
+
|
|
31
|
+
**When NOT to use:**
|
|
32
|
+
|
|
33
|
+
- Mechanical operations (renaming, formatting, file moves)
|
|
34
|
+
- Following a clear, unambiguous user instruction
|
|
35
|
+
- Reading or summarizing existing code
|
|
36
|
+
- One-line changes with obvious correctness
|
|
37
|
+
- Pure tooling operations (running tests, listing files)
|
|
38
|
+
- The user has explicitly asked for speed over verification
|
|
39
|
+
|
|
40
|
+
If you doubt every keystroke, you ship nothing. The skill applies only to non-trivial decisions as defined above.
|
|
41
|
+
|
|
42
|
+
## Loading Constraints
|
|
43
|
+
|
|
44
|
+
This skill is designed for the **main-session orchestrator**, where Step 3 (DOUBT, detailed below) can spawn a fresh-context reviewer.
|
|
45
|
+
|
|
46
|
+
- **Do NOT add this skill to a persona's `skills:` frontmatter.** A persona that follows Step 3 would spawn another persona — the orchestration anti-pattern explicitly forbidden by `../../references/orchestration-patterns.md` ("personas do not invoke other personas").
|
|
47
|
+
- **If you find yourself applying this skill from inside a subagent context** (where Claude Code prevents nested subagent spawn): the preferred path is to surface to the user that doubt-driven cannot run nested and let the main session handle it. As a last resort only, a degraded self-questioning fallback exists — rewrite ARTIFACT + CONTRACT as a fresh self-prompt with a hard mental separator from your prior reasoning, and walk Steps 1–5. This is **not fresh-context review** (you carry your own context with you), so flag the result as degraded and prefer escalation whenever the user is reachable.
|
|
48
|
+
|
|
49
|
+
## The Process
|
|
50
|
+
|
|
51
|
+
Copy this checklist when applying the skill:
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
Doubt cycle:
|
|
55
|
+
- [ ] Step 1: CLAIM — wrote the claim + why-it-matters
|
|
56
|
+
- [ ] Step 2: EXTRACT — isolated artifact + contract, stripped reasoning
|
|
57
|
+
- [ ] Step 3: DOUBT — invoked fresh-context reviewer with adversarial prompt
|
|
58
|
+
- [ ] Step 4: RECONCILE — classified every finding against the artifact text
|
|
59
|
+
- [ ] Step 5: STOP — met stop condition (trivial findings, 3 cycles, or user override)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Step 1: CLAIM — Surface what stands
|
|
63
|
+
|
|
64
|
+
Name the decision in two or three lines:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
CLAIM: "The new caching layer is thread-safe under the
|
|
68
|
+
read-heavy workload described in the spec."
|
|
69
|
+
WHY THIS MATTERS: a race here corrupts user data and is
|
|
70
|
+
hard to detect in QA.
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
If you can't write the claim that compactly, you have a vibe, not a decision. Surface it before scrutinizing it.
|
|
74
|
+
|
|
75
|
+
### Step 2: EXTRACT — Smallest reviewable unit
|
|
76
|
+
|
|
77
|
+
A fresh-context reviewer needs the **artifact** and the **contract**, not the journey.
|
|
78
|
+
|
|
79
|
+
- Code: the diff or the function — not the whole file
|
|
80
|
+
- Decision: the proposal in 3–5 sentences plus the constraints it has to satisfy
|
|
81
|
+
- Assertion: the claim plus the evidence that supposedly supports it (kept distinct from the Step 1 CLAIM block, which is the orchestrator's hypothesis under scrutiny)
|
|
82
|
+
|
|
83
|
+
Strip your reasoning. If you hand over conclusions, you'll get back validation of your conclusions. The unit must be small enough that a reviewer can hold it in mind in one read — if it's a 500-line PR, decompose first.
|
|
84
|
+
|
|
85
|
+
Strip reasoning, not evidence: if a caller, guard or test contradicts the claim, include it in the unit.
|
|
86
|
+
|
|
87
|
+
### Step 3: DOUBT — Invoke the fresh-context reviewer
|
|
88
|
+
|
|
89
|
+
The reviewer's prompt **must be adversarial**. Framing decides the answer.
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
Adversarial review. Find what is wrong with this artifact.
|
|
93
|
+
Assume the author is overconfident. Look for:
|
|
94
|
+
- Unstated assumptions
|
|
95
|
+
- Edge cases not handled
|
|
96
|
+
- Hidden coupling or shared state
|
|
97
|
+
- Ways the contract could be violated
|
|
98
|
+
- Existing conventions this might break
|
|
99
|
+
- Failure modes under unexpected input
|
|
100
|
+
|
|
101
|
+
Do NOT validate. Do NOT summarize. Find issues, or state
|
|
102
|
+
explicitly that you cannot find any after thorough examination.
|
|
103
|
+
|
|
104
|
+
ARTIFACT: <paste artifact>
|
|
105
|
+
CONTRACT: <paste contract>
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Pass ARTIFACT + CONTRACT only. Do NOT pass the CLAIM.** Handing the reviewer your conclusion biases it toward agreement. The reviewer must independently determine whether the artifact satisfies the contract.
|
|
109
|
+
|
|
110
|
+
In Claude Code, the role-based reviewers in `agents/` start with isolated context by design and are usable here — see `agents/` for the roster and per-domain match.
|
|
111
|
+
|
|
112
|
+
**The adversarial prompt above takes precedence over the persona's default response shape.** Personas like `code-reviewer` are written to produce balanced verdicts with both strengths and weaknesses; doubt-driven needs issues-only output. Paste the adversarial prompt verbatim into the invocation so it overrides the persona's default. If a persona's response shape can't be overridden cleanly, fall back to a generic subagent with the adversarial prompt.
|
|
113
|
+
|
|
114
|
+
#### Cross-model escalation
|
|
115
|
+
|
|
116
|
+
A single-model reviewer shares blind spots with the original author — a colder, different-architecture model catches them. Doubt-driven is already opt-in for non-trivial decisions, so within that scope offering cross-model is part of the skill's value, not optional friction.
|
|
117
|
+
|
|
118
|
+
**Interactive sessions: always offer. Never silently skip.**
|
|
119
|
+
|
|
120
|
+
**Step 1: Ask the user**
|
|
121
|
+
|
|
122
|
+
After the single-model review in Step 3 above, but before RECONCILE, pause and ask:
|
|
123
|
+
|
|
124
|
+
> *"Single-model review complete. Want a cross-model second opinion? Options: Gemini CLI, Codex CLI, manual external review (you paste it elsewhere), or skip."*
|
|
125
|
+
|
|
126
|
+
This question is mandatory in every interactive doubt cycle — even on artifacts that feel low-stakes. The user — not the agent — decides whether the cost is worth it. The agent's job is to surface the choice.
|
|
127
|
+
|
|
128
|
+
**Step 2: If the user picks a CLI — verify, then invoke**
|
|
129
|
+
|
|
130
|
+
1. Check the tool is in PATH (`which gemini`, `which codex`).
|
|
131
|
+
2. Test it works (`gemini --version` or equivalent) before passing the full prompt — a stale or broken binary may pass `which` but fail on real input.
|
|
132
|
+
3. Confirm the exact invocation with the user, including required flags, auth, and env vars (e.g., API keys). Implementations vary; never assume.
|
|
133
|
+
4. Pass ARTIFACT + CONTRACT + the adversarial prompt **only**. No session context, no CLAIM.
|
|
134
|
+
5. Mind shell escaping. If the artifact contains quotes, `$(...)`, or backticks, prefer stdin (`echo … | gemini`) or a heredoc over inline `-p "…"`. When in doubt, ask the user to confirm the invocation before running it.
|
|
135
|
+
6. Take the output into Step 4 (RECONCILE).
|
|
136
|
+
|
|
137
|
+
**Never interpolate the artifact into a shell-quoted argument.** Code, markdown, and review prompts routinely contain backticks, `$(...)`, and quote characters that will either truncate the prompt or execute embedded shell. Write the full prompt to a file and pipe it through stdin.
|
|
138
|
+
|
|
139
|
+
Example shapes (verify flags against your installed tool — syntax differs across implementations and versions):
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# Write the adversarial prompt + ARTIFACT + CONTRACT to a temp file first.
|
|
143
|
+
# Then pipe via stdin so shell metacharacters in the artifact stay inert.
|
|
144
|
+
|
|
145
|
+
# Codex (read-only sandbox keeps the CLI from writing to your workspace):
|
|
146
|
+
codex exec --sandbox read-only -C <repo-path> - < /tmp/doubt-prompt.md
|
|
147
|
+
|
|
148
|
+
# Gemini ('--approval-mode plan' is read-only; '-p ""' triggers non-interactive
|
|
149
|
+
# mode and the prompt is read from stdin):
|
|
150
|
+
gemini --approval-mode plan -p "" < /tmp/doubt-prompt.md
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
A read-only sandbox is the load-bearing detail: a doubt artifact may itself contain instructions (intentional or accidental prompt injection) that the cross-model CLI would otherwise execute against your workspace.
|
|
154
|
+
|
|
155
|
+
**Step 3: If the CLI is unavailable or fails**
|
|
156
|
+
|
|
157
|
+
Surface the failure explicitly. Offer: run it manually, try a different tool, or skip. Do not silently fall back to single-model — the user should know cross-model didn't happen.
|
|
158
|
+
|
|
159
|
+
**Step 4: If the user skips**
|
|
160
|
+
|
|
161
|
+
Acknowledge the skip in the output (*"Proceeding with single-model findings only"*) and continue to RECONCILE. Skipping is fine; silent skipping is not.
|
|
162
|
+
|
|
163
|
+
**Non-interactive contexts** (CI, `/loop`, autonomous-loop, scheduled runs):
|
|
164
|
+
|
|
165
|
+
- Cross-model is **skipped**, and the skip must be **announced** in the output: *"Cross-model skipped: non-interactive context."*
|
|
166
|
+
- **Never invoke an external CLI without explicit user authorization** — this is a load-bearing safety property.
|
|
167
|
+
|
|
168
|
+
Cross-model adds cost, latency, and tool fragility. The agent surfaces the choice every cycle; the user decides whether this artifact warrants it.
|
|
169
|
+
|
|
170
|
+
### Step 4: RECONCILE — Fold findings back
|
|
171
|
+
|
|
172
|
+
The reviewer's output is data, not verdict. **You are still the orchestrator.** Re-read the artifact text against each finding before classifying — rubber-stamping the reviewer is the same failure mode as ignoring it.
|
|
173
|
+
|
|
174
|
+
For each finding, classify in this **precedence order** (first matching class wins):
|
|
175
|
+
|
|
176
|
+
1. **Contract misread** — reviewer flagged something specifically because the CONTRACT you provided was unclear or incomplete. Fix the contract first, re-classify on the next cycle.
|
|
177
|
+
2. **Valid + actionable** — real issue requiring a change to the artifact. Change it, re-loop.
|
|
178
|
+
3. **Valid trade-off** — issue is real but cost of fixing exceeds cost of accepting. Document the trade-off explicitly so the user sees it.
|
|
179
|
+
4. **Noise** — reviewer flagged something that's actually correct under context the reviewer didn't have. Note it, move on, and ask: would adding that context to the contract have prevented the false flag?
|
|
180
|
+
|
|
181
|
+
A fresh reviewer can be wrong because it lacks context. Don't defer just because it's "fresh."
|
|
182
|
+
|
|
183
|
+
### Step 5: STOP — Bounded loop, not recursion
|
|
184
|
+
|
|
185
|
+
Stop when:
|
|
186
|
+
|
|
187
|
+
- Next iteration returns only trivial or already-considered findings, **or**
|
|
188
|
+
- 3 cycles completed (escalate to user, don't grind a fourth alone), **or**
|
|
189
|
+
- User explicitly says "ship it"
|
|
190
|
+
|
|
191
|
+
If after 3 cycles the reviewer still surfaces substantive issues, the artifact may not be ready. Surface this to the user — three unresolved cycles is information about the artifact, not a reason to keep looping.
|
|
192
|
+
|
|
193
|
+
If 3 cycles is "obviously insufficient" because the artifact is large: the artifact is too big — return to Step 2 and decompose. Do not lift the bound.
|
|
194
|
+
|
|
195
|
+
## Common Rationalizations
|
|
196
|
+
|
|
197
|
+
| Rationalization | Reality |
|
|
198
|
+
|---|---|
|
|
199
|
+
| "I'm confident, skip the doubt step" | Confidence correlates poorly with correctness on novel problems. Moments of certainty are exactly when blind spots hide. |
|
|
200
|
+
| "Spawning a reviewer is expensive" | Debugging a wrong commit in production is more expensive. The check is bounded; the bug isn't. |
|
|
201
|
+
| "The reviewer will just nitpick" | Only if unscoped. Constrain the prompt to "issues that would make this fail under the contract." |
|
|
202
|
+
| "I'll do doubt at the end with `/review`" | `/review` is a final gate. Doubt-driven catches wrong directions early when course-correction is cheap. By PR time it's too late. |
|
|
203
|
+
| "If I doubt every step I'll never ship" | The skill applies to non-trivial decisions, not every keystroke. Re-read "When NOT to Use." |
|
|
204
|
+
| "Two opinions are always better than one" | Not when the second has less context and produces noise. Reconcile, don't defer. |
|
|
205
|
+
| "The reviewer disagreed so I was wrong" | The reviewer lacks your context — disagreement is information, not verdict. Re-read the artifact, classify, then decide. |
|
|
206
|
+
| "Cross-model is always better" | Cross-model catches blind spots a single model shares with itself, but it adds cost and tool fragility. Offer it every interactive doubt cycle — the user decides whether the artifact warrants it. The agent's job is to surface the choice, not to gate it. |
|
|
207
|
+
| "User said yes once, so I can keep invoking the CLI" | Each invocation is its own authorization. The artifact, the prompt, and the flags change between calls — re-confirm the exact command with the user before every run. |
|
|
208
|
+
|
|
209
|
+
## Red Flags
|
|
210
|
+
|
|
211
|
+
- Spawning a fresh-context reviewer for a one-line rename or formatting change
|
|
212
|
+
- Treating reviewer output as authoritative without re-reading the artifact text
|
|
213
|
+
- Looping >3 cycles without escalating to the user
|
|
214
|
+
- Prompting the reviewer with "is this good?" instead of "find issues"
|
|
215
|
+
- Skipping doubt under time pressure on a high-stakes decision
|
|
216
|
+
- Re-spawning fresh-context on an unchanged artifact (you'll get the same findings; you're stalling)
|
|
217
|
+
- **Doubt theater (checkable signal)**: across 2 or more cycles where the reviewer surfaced substantive findings, zero findings were classified as actionable. You are validating, not doubting. Stop and escalate.
|
|
218
|
+
- Doubting only after committing — that's `/review`, not doubt-driven development
|
|
219
|
+
- Hardcoding an external CLI invocation without confirming with the user that the tool exists, is configured, and accepts that exact syntax
|
|
220
|
+
- **Silently skipping cross-model in an interactive doubt cycle.** Even when not recommending it, the offer must be visible. Skipping is fine; silent skipping is not.
|
|
221
|
+
- Falling back silently when an external CLI errors or is missing — surface the failure and let the user redirect
|
|
222
|
+
- Stripping the contract from the reviewer's input
|
|
223
|
+
- Passing the CLAIM to the reviewer (biases toward agreement)
|
|
224
|
+
|
|
225
|
+
## Interaction with Other Skills
|
|
226
|
+
|
|
227
|
+
- **`review-code-review-and-quality` / `/review`**: complementary. `/review` is post-hoc PR verdict; doubt-driven is in-flight per-decision. Use both.
|
|
228
|
+
- **`test-driven-development`**: TDD's RED step is doubt made concrete — a failing test is a disproof attempt. When TDD applies, that failing test *is* the doubt step for behavioral claims.
|
|
229
|
+
- **`test-debugging-and-error-recovery`**: when the reviewer surfaces a real failure mode, drop into the debugging skill to localize and fix.
|
|
230
|
+
- **Repo orchestration rules** (`../../references/orchestration-patterns.md`): this skill orchestrates from the main session. A persona calling another persona is anti-pattern B — see Loading Constraints above.
|
|
231
|
+
|
|
232
|
+
## Verification
|
|
233
|
+
|
|
234
|
+
After applying doubt-driven development:
|
|
235
|
+
|
|
236
|
+
- [ ] Every non-trivial decision (per the definition above) was named explicitly as a CLAIM before standing
|
|
237
|
+
- [ ] At least one fresh-context review per non-trivial artifact (a failing test produced by TDD's RED step satisfies this for behavioral claims, per Interaction with Other Skills)
|
|
238
|
+
- [ ] The reviewer received ARTIFACT + CONTRACT — NOT the CLAIM, NOT your reasoning
|
|
239
|
+
- [ ] The reviewer's prompt was adversarial ("find issues"), not validating ("is it good")
|
|
240
|
+
- [ ] Findings were classified against the artifact text (not rubber-stamped) using the precedence: contract misread / actionable / trade-off / noise
|
|
241
|
+
- [ ] A stop condition was met (trivial findings, 3 cycles, or user override)
|
|
242
|
+
- [ ] In interactive mode, cross-model was **explicitly offered** to the user (regardless of artifact stakes) and the response was acknowledged in the output
|
|
243
|
+
- [ ] In non-interactive mode, cross-model was skipped and the skip was announced
|
|
244
|
+
- [ ] Any external CLI invocation was preceded by a PATH check, a working-binary test, syntax confirmation with the user, and explicit authorization to run
|