devflow-kit 0.9.0 → 1.1.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 +197 -29
- package/LICENSE +1 -1
- package/README.md +185 -309
- package/dist/cli.js +7 -1
- package/dist/commands/ambient.d.ts +18 -0
- package/dist/commands/ambient.js +136 -0
- package/dist/commands/init.d.ts +23 -0
- package/dist/commands/init.js +393 -571
- package/dist/commands/list.d.ts +3 -0
- package/dist/commands/list.js +20 -0
- package/dist/commands/memory.d.ts +22 -0
- package/dist/commands/memory.js +175 -0
- package/dist/commands/uninstall.d.ts +10 -0
- package/dist/commands/uninstall.js +418 -78
- package/dist/plugins.d.ts +46 -0
- package/dist/plugins.js +169 -0
- package/dist/utils/cli.d.ts +5 -0
- package/dist/utils/cli.js +14 -0
- package/dist/utils/installer.d.ts +41 -0
- package/dist/utils/installer.js +177 -0
- package/dist/utils/paths.d.ts +10 -0
- package/dist/utils/paths.js +23 -3
- package/dist/utils/post-install.d.ts +80 -0
- package/dist/utils/post-install.js +508 -0
- package/dist/utils/safe-delete-install.d.ts +29 -0
- package/dist/utils/safe-delete-install.js +191 -0
- package/dist/utils/safe-delete.d.ts +12 -0
- package/dist/utils/safe-delete.js +83 -0
- package/package.json +18 -8
- package/plugins/devflow-ambient/.claude-plugin/plugin.json +7 -0
- package/plugins/devflow-ambient/README.md +49 -0
- package/plugins/devflow-ambient/commands/ambient.md +110 -0
- package/plugins/devflow-ambient/skills/ambient-router/SKILL.md +89 -0
- package/plugins/devflow-ambient/skills/ambient-router/references/skill-catalog.md +64 -0
- package/plugins/devflow-audit-claude/.claude-plugin/plugin.json +7 -0
- package/plugins/devflow-audit-claude/README.md +46 -0
- package/plugins/devflow-audit-claude/agents/claude-md-auditor.md +134 -0
- package/plugins/devflow-audit-claude/commands/audit-claude.md +85 -0
- package/plugins/devflow-code-review/.claude-plugin/plugin.json +31 -0
- package/plugins/devflow-code-review/README.md +73 -0
- package/plugins/devflow-code-review/agents/git.md +272 -0
- package/plugins/devflow-code-review/agents/reviewer.md +119 -0
- package/plugins/devflow-code-review/agents/synthesizer.md +204 -0
- package/plugins/devflow-code-review/commands/code-review-teams.md +262 -0
- package/plugins/devflow-code-review/commands/code-review.md +141 -0
- package/plugins/devflow-code-review/skills/accessibility/SKILL.md +229 -0
- package/plugins/devflow-code-review/skills/accessibility/references/detection.md +171 -0
- package/plugins/devflow-code-review/skills/accessibility/references/patterns.md +670 -0
- package/plugins/devflow-code-review/skills/accessibility/references/violations.md +419 -0
- package/plugins/devflow-code-review/skills/agent-teams/SKILL.md +124 -0
- package/plugins/devflow-code-review/skills/agent-teams/references/cleanup.md +104 -0
- package/plugins/devflow-code-review/skills/agent-teams/references/communication.md +122 -0
- package/plugins/devflow-code-review/skills/agent-teams/references/team-patterns.md +217 -0
- package/plugins/devflow-code-review/skills/architecture-patterns/SKILL.md +153 -0
- package/plugins/devflow-code-review/skills/architecture-patterns/references/detection.md +337 -0
- package/plugins/devflow-code-review/skills/architecture-patterns/references/patterns.md +873 -0
- package/plugins/devflow-code-review/skills/architecture-patterns/references/violations.md +575 -0
- package/plugins/devflow-code-review/skills/complexity-patterns/SKILL.md +143 -0
- package/plugins/devflow-code-review/skills/complexity-patterns/references/detection.md +264 -0
- package/plugins/devflow-code-review/skills/complexity-patterns/references/patterns.md +487 -0
- package/plugins/devflow-code-review/skills/complexity-patterns/references/violations.md +361 -0
- package/plugins/devflow-code-review/skills/consistency-patterns/SKILL.md +140 -0
- package/plugins/devflow-code-review/skills/consistency-patterns/references/detection.md +207 -0
- package/plugins/devflow-code-review/skills/consistency-patterns/references/patterns.md +202 -0
- package/plugins/devflow-code-review/skills/consistency-patterns/references/violations.md +213 -0
- package/plugins/devflow-code-review/skills/database-patterns/SKILL.md +134 -0
- package/plugins/devflow-code-review/skills/database-patterns/references/detection.md +208 -0
- package/plugins/devflow-code-review/skills/database-patterns/references/patterns.md +394 -0
- package/plugins/devflow-code-review/skills/database-patterns/references/violations.md +332 -0
- package/plugins/devflow-code-review/skills/dependencies-patterns/SKILL.md +141 -0
- package/plugins/devflow-code-review/skills/dependencies-patterns/references/detection.md +181 -0
- package/plugins/devflow-code-review/skills/dependencies-patterns/references/patterns.md +225 -0
- package/plugins/devflow-code-review/skills/dependencies-patterns/references/violations.md +247 -0
- package/plugins/devflow-code-review/skills/documentation-patterns/SKILL.md +125 -0
- package/plugins/devflow-code-review/skills/documentation-patterns/references/detection.md +190 -0
- package/plugins/devflow-code-review/skills/documentation-patterns/references/patterns.md +189 -0
- package/plugins/devflow-code-review/skills/documentation-patterns/references/violations.md +163 -0
- package/plugins/devflow-code-review/skills/frontend-design/SKILL.md +254 -0
- package/plugins/devflow-code-review/skills/frontend-design/references/detection.md +184 -0
- package/plugins/devflow-code-review/skills/frontend-design/references/patterns.md +511 -0
- package/plugins/devflow-code-review/skills/frontend-design/references/violations.md +453 -0
- package/plugins/devflow-code-review/skills/performance-patterns/SKILL.md +154 -0
- package/plugins/devflow-code-review/skills/performance-patterns/references/detection.md +351 -0
- package/plugins/devflow-code-review/skills/performance-patterns/references/patterns.md +503 -0
- package/plugins/devflow-code-review/skills/performance-patterns/references/violations.md +354 -0
- package/plugins/devflow-code-review/skills/react/SKILL.md +276 -0
- package/plugins/devflow-code-review/skills/react/references/patterns.md +1331 -0
- package/plugins/devflow-code-review/skills/react/references/violations.md +565 -0
- package/plugins/devflow-code-review/skills/regression-patterns/SKILL.md +146 -0
- package/plugins/devflow-code-review/skills/regression-patterns/references/detection.md +237 -0
- package/plugins/devflow-code-review/skills/regression-patterns/references/patterns.md +226 -0
- package/plugins/devflow-code-review/skills/regression-patterns/references/violations.md +225 -0
- package/plugins/devflow-code-review/skills/review-methodology/SKILL.md +119 -0
- package/plugins/devflow-code-review/skills/review-methodology/references/patterns.md +186 -0
- package/plugins/devflow-code-review/skills/review-methodology/references/report-template.md +142 -0
- package/plugins/devflow-code-review/skills/review-methodology/references/violations.md +125 -0
- package/plugins/devflow-code-review/skills/security-patterns/SKILL.md +156 -0
- package/plugins/devflow-code-review/skills/security-patterns/references/detection.md +287 -0
- package/plugins/devflow-code-review/skills/security-patterns/references/patterns.md +507 -0
- package/plugins/devflow-code-review/skills/security-patterns/references/violations.md +237 -0
- package/plugins/devflow-code-review/skills/test-patterns/SKILL.md +183 -0
- package/plugins/devflow-code-review/skills/test-patterns/references/detection.md +149 -0
- package/plugins/devflow-code-review/skills/test-patterns/references/patterns.md +220 -0
- package/plugins/devflow-code-review/skills/test-patterns/references/report-template.md +108 -0
- package/plugins/devflow-code-review/skills/test-patterns/references/violations.md +221 -0
- package/plugins/devflow-core-skills/.claude-plugin/plugin.json +28 -0
- package/plugins/devflow-core-skills/README.md +50 -0
- package/plugins/devflow-core-skills/skills/accessibility/SKILL.md +229 -0
- package/plugins/devflow-core-skills/skills/accessibility/references/detection.md +171 -0
- package/plugins/devflow-core-skills/skills/accessibility/references/patterns.md +670 -0
- package/plugins/devflow-core-skills/skills/accessibility/references/violations.md +419 -0
- package/plugins/devflow-core-skills/skills/core-patterns/SKILL.md +162 -0
- package/plugins/devflow-core-skills/skills/core-patterns/references/checklist.md +276 -0
- package/plugins/devflow-core-skills/skills/core-patterns/references/code-smell-violations.md +144 -0
- package/plugins/devflow-core-skills/skills/core-patterns/references/detection.md +303 -0
- package/plugins/devflow-core-skills/skills/core-patterns/references/patterns.md +576 -0
- package/plugins/devflow-core-skills/skills/core-patterns/references/violations.md +369 -0
- package/plugins/devflow-core-skills/skills/docs-framework/SKILL.md +138 -0
- package/plugins/devflow-core-skills/skills/docs-framework/references/patterns.md +346 -0
- package/plugins/devflow-core-skills/skills/docs-framework/references/violations.md +221 -0
- package/plugins/devflow-core-skills/skills/frontend-design/SKILL.md +254 -0
- package/plugins/devflow-core-skills/skills/frontend-design/references/detection.md +184 -0
- package/plugins/devflow-core-skills/skills/frontend-design/references/patterns.md +511 -0
- package/plugins/devflow-core-skills/skills/frontend-design/references/violations.md +453 -0
- package/plugins/devflow-core-skills/skills/git-safety/SKILL.md +122 -0
- package/plugins/devflow-core-skills/skills/git-safety/references/detection.md +290 -0
- package/plugins/devflow-core-skills/skills/git-safety/references/patterns.md +289 -0
- package/plugins/devflow-core-skills/skills/git-safety/references/violations.md +18 -0
- package/plugins/devflow-core-skills/skills/git-workflow/SKILL.md +158 -0
- package/plugins/devflow-core-skills/skills/git-workflow/references/commit-patterns.md +115 -0
- package/plugins/devflow-core-skills/skills/git-workflow/references/commit-violations.md +77 -0
- package/plugins/devflow-core-skills/skills/git-workflow/references/pr-patterns.md +127 -0
- package/plugins/devflow-core-skills/skills/git-workflow/references/pr-violations.md +96 -0
- package/plugins/devflow-core-skills/skills/github-patterns/SKILL.md +153 -0
- package/plugins/devflow-core-skills/skills/github-patterns/references/patterns.md +572 -0
- package/plugins/devflow-core-skills/skills/github-patterns/references/violations.md +298 -0
- package/plugins/devflow-core-skills/skills/input-validation/SKILL.md +148 -0
- package/plugins/devflow-core-skills/skills/input-validation/references/detection.md +283 -0
- package/plugins/devflow-core-skills/skills/input-validation/references/patterns.md +361 -0
- package/plugins/devflow-core-skills/skills/input-validation/references/violations.md +224 -0
- package/plugins/devflow-core-skills/skills/react/SKILL.md +276 -0
- package/plugins/devflow-core-skills/skills/react/references/patterns.md +1331 -0
- package/plugins/devflow-core-skills/skills/react/references/violations.md +565 -0
- package/plugins/devflow-core-skills/skills/test-driven-development/SKILL.md +139 -0
- package/plugins/devflow-core-skills/skills/test-driven-development/references/rationalization-prevention.md +111 -0
- package/plugins/devflow-core-skills/skills/test-patterns/SKILL.md +183 -0
- package/plugins/devflow-core-skills/skills/test-patterns/references/detection.md +149 -0
- package/plugins/devflow-core-skills/skills/test-patterns/references/patterns.md +220 -0
- package/plugins/devflow-core-skills/skills/test-patterns/references/report-template.md +108 -0
- package/plugins/devflow-core-skills/skills/test-patterns/references/violations.md +221 -0
- package/plugins/devflow-core-skills/skills/typescript/SKILL.md +176 -0
- package/plugins/devflow-core-skills/skills/typescript/references/patterns.md +1105 -0
- package/plugins/devflow-core-skills/skills/typescript/references/violations.md +433 -0
- package/plugins/devflow-debug/.claude-plugin/plugin.json +18 -0
- package/plugins/devflow-debug/README.md +65 -0
- package/plugins/devflow-debug/agents/git.md +272 -0
- package/plugins/devflow-debug/commands/debug-teams.md +231 -0
- package/plugins/devflow-debug/commands/debug.md +160 -0
- package/plugins/devflow-debug/skills/agent-teams/SKILL.md +124 -0
- package/plugins/devflow-debug/skills/agent-teams/references/cleanup.md +104 -0
- package/plugins/devflow-debug/skills/agent-teams/references/communication.md +122 -0
- package/plugins/devflow-debug/skills/agent-teams/references/team-patterns.md +217 -0
- package/plugins/devflow-debug/skills/git-safety/SKILL.md +122 -0
- package/plugins/devflow-debug/skills/git-safety/references/detection.md +290 -0
- package/plugins/devflow-debug/skills/git-safety/references/patterns.md +289 -0
- package/plugins/devflow-debug/skills/git-safety/references/violations.md +18 -0
- package/plugins/devflow-implement/.claude-plugin/plugin.json +21 -0
- package/plugins/devflow-implement/README.md +71 -0
- package/plugins/devflow-implement/agents/coder.md +122 -0
- package/plugins/devflow-implement/agents/git.md +272 -0
- package/plugins/devflow-implement/agents/scrutinizer.md +80 -0
- package/plugins/devflow-implement/agents/shepherd.md +94 -0
- package/plugins/devflow-implement/agents/simplifier.md +62 -0
- package/plugins/devflow-implement/agents/skimmer.md +88 -0
- package/plugins/devflow-implement/agents/synthesizer.md +204 -0
- package/plugins/devflow-implement/agents/validator.md +86 -0
- package/plugins/devflow-implement/commands/implement-teams.md +608 -0
- package/plugins/devflow-implement/commands/implement.md +426 -0
- package/plugins/devflow-implement/skills/accessibility/SKILL.md +229 -0
- package/plugins/devflow-implement/skills/accessibility/references/detection.md +171 -0
- package/plugins/devflow-implement/skills/accessibility/references/patterns.md +670 -0
- package/plugins/devflow-implement/skills/accessibility/references/violations.md +419 -0
- package/plugins/devflow-implement/skills/agent-teams/SKILL.md +124 -0
- package/plugins/devflow-implement/skills/agent-teams/references/cleanup.md +104 -0
- package/plugins/devflow-implement/skills/agent-teams/references/communication.md +122 -0
- package/plugins/devflow-implement/skills/agent-teams/references/team-patterns.md +217 -0
- package/plugins/devflow-implement/skills/frontend-design/SKILL.md +254 -0
- package/plugins/devflow-implement/skills/frontend-design/references/detection.md +184 -0
- package/plugins/devflow-implement/skills/frontend-design/references/patterns.md +511 -0
- package/plugins/devflow-implement/skills/frontend-design/references/violations.md +453 -0
- package/plugins/devflow-implement/skills/implementation-patterns/SKILL.md +162 -0
- package/plugins/devflow-implement/skills/implementation-patterns/references/patterns.md +1063 -0
- package/plugins/devflow-implement/skills/implementation-patterns/references/violations.md +483 -0
- package/plugins/devflow-implement/skills/self-review/SKILL.md +149 -0
- package/plugins/devflow-implement/skills/self-review/references/patterns.md +405 -0
- package/plugins/devflow-implement/skills/self-review/references/report-template.md +253 -0
- package/plugins/devflow-implement/skills/self-review/references/violations.md +308 -0
- package/plugins/devflow-resolve/.claude-plugin/plugin.json +19 -0
- package/plugins/devflow-resolve/README.md +65 -0
- package/plugins/devflow-resolve/agents/git.md +272 -0
- package/plugins/devflow-resolve/agents/resolver.md +131 -0
- package/plugins/devflow-resolve/agents/simplifier.md +62 -0
- package/plugins/devflow-resolve/commands/resolve-teams.md +298 -0
- package/plugins/devflow-resolve/commands/resolve.md +237 -0
- package/plugins/devflow-resolve/skills/agent-teams/SKILL.md +124 -0
- package/plugins/devflow-resolve/skills/agent-teams/references/cleanup.md +104 -0
- package/plugins/devflow-resolve/skills/agent-teams/references/communication.md +122 -0
- package/plugins/devflow-resolve/skills/agent-teams/references/team-patterns.md +217 -0
- package/plugins/devflow-resolve/skills/implementation-patterns/SKILL.md +162 -0
- package/plugins/devflow-resolve/skills/implementation-patterns/references/patterns.md +1063 -0
- package/plugins/devflow-resolve/skills/implementation-patterns/references/violations.md +483 -0
- package/plugins/devflow-resolve/skills/security-patterns/SKILL.md +156 -0
- package/plugins/devflow-resolve/skills/security-patterns/references/detection.md +287 -0
- package/plugins/devflow-resolve/skills/security-patterns/references/patterns.md +507 -0
- package/plugins/devflow-resolve/skills/security-patterns/references/violations.md +237 -0
- package/plugins/devflow-self-review/.claude-plugin/plugin.json +7 -0
- package/plugins/devflow-self-review/README.md +38 -0
- package/plugins/devflow-self-review/agents/scrutinizer.md +80 -0
- package/plugins/devflow-self-review/agents/simplifier.md +62 -0
- package/plugins/devflow-self-review/agents/validator.md +86 -0
- package/plugins/devflow-self-review/commands/self-review.md +126 -0
- package/plugins/devflow-self-review/skills/core-patterns/SKILL.md +162 -0
- package/plugins/devflow-self-review/skills/core-patterns/references/checklist.md +276 -0
- package/plugins/devflow-self-review/skills/core-patterns/references/code-smell-violations.md +144 -0
- package/plugins/devflow-self-review/skills/core-patterns/references/detection.md +303 -0
- package/plugins/devflow-self-review/skills/core-patterns/references/patterns.md +576 -0
- package/plugins/devflow-self-review/skills/core-patterns/references/violations.md +369 -0
- package/plugins/devflow-self-review/skills/self-review/SKILL.md +149 -0
- package/plugins/devflow-self-review/skills/self-review/references/patterns.md +405 -0
- package/plugins/devflow-self-review/skills/self-review/references/report-template.md +253 -0
- package/plugins/devflow-self-review/skills/self-review/references/violations.md +308 -0
- package/plugins/devflow-specify/.claude-plugin/plugin.json +15 -0
- package/plugins/devflow-specify/README.md +46 -0
- package/plugins/devflow-specify/agents/skimmer.md +88 -0
- package/plugins/devflow-specify/agents/synthesizer.md +204 -0
- package/plugins/devflow-specify/commands/specify-teams.md +314 -0
- package/plugins/devflow-specify/commands/specify.md +179 -0
- package/plugins/devflow-specify/skills/agent-teams/SKILL.md +124 -0
- package/plugins/devflow-specify/skills/agent-teams/references/cleanup.md +104 -0
- package/plugins/devflow-specify/skills/agent-teams/references/communication.md +122 -0
- package/plugins/devflow-specify/skills/agent-teams/references/team-patterns.md +217 -0
- package/scripts/hooks/ambient-prompt.sh +48 -0
- package/scripts/hooks/background-memory-update.sh +208 -0
- package/scripts/hooks/ensure-memory-gitignore.sh +17 -0
- package/scripts/hooks/pre-compact-memory.sh +87 -0
- package/scripts/hooks/session-start-memory.sh +126 -0
- package/scripts/hooks/stop-update-memory.sh +85 -0
- package/shared/agents/coder.md +122 -0
- package/shared/agents/git.md +272 -0
- package/shared/agents/resolver.md +131 -0
- package/shared/agents/reviewer.md +119 -0
- package/shared/agents/scrutinizer.md +80 -0
- package/shared/agents/shepherd.md +94 -0
- package/shared/agents/simplifier.md +62 -0
- package/shared/agents/skimmer.md +88 -0
- package/shared/agents/synthesizer.md +204 -0
- package/shared/agents/validator.md +86 -0
- package/shared/skills/accessibility/SKILL.md +229 -0
- package/shared/skills/accessibility/references/detection.md +171 -0
- package/shared/skills/accessibility/references/patterns.md +670 -0
- package/shared/skills/accessibility/references/violations.md +419 -0
- package/shared/skills/agent-teams/SKILL.md +124 -0
- package/shared/skills/agent-teams/references/cleanup.md +104 -0
- package/shared/skills/agent-teams/references/communication.md +122 -0
- package/shared/skills/agent-teams/references/team-patterns.md +217 -0
- package/shared/skills/ambient-router/SKILL.md +89 -0
- package/shared/skills/ambient-router/references/skill-catalog.md +64 -0
- package/shared/skills/architecture-patterns/SKILL.md +153 -0
- package/shared/skills/architecture-patterns/references/detection.md +337 -0
- package/shared/skills/architecture-patterns/references/patterns.md +873 -0
- package/shared/skills/architecture-patterns/references/violations.md +575 -0
- package/shared/skills/complexity-patterns/SKILL.md +143 -0
- package/shared/skills/complexity-patterns/references/detection.md +264 -0
- package/shared/skills/complexity-patterns/references/patterns.md +487 -0
- package/shared/skills/complexity-patterns/references/violations.md +361 -0
- package/shared/skills/consistency-patterns/SKILL.md +140 -0
- package/shared/skills/consistency-patterns/references/detection.md +207 -0
- package/shared/skills/consistency-patterns/references/patterns.md +202 -0
- package/shared/skills/consistency-patterns/references/violations.md +213 -0
- package/shared/skills/core-patterns/SKILL.md +162 -0
- package/shared/skills/core-patterns/references/checklist.md +276 -0
- package/shared/skills/core-patterns/references/code-smell-violations.md +144 -0
- package/shared/skills/core-patterns/references/detection.md +303 -0
- package/shared/skills/core-patterns/references/patterns.md +576 -0
- package/shared/skills/core-patterns/references/violations.md +369 -0
- package/shared/skills/database-patterns/SKILL.md +134 -0
- package/shared/skills/database-patterns/references/detection.md +208 -0
- package/shared/skills/database-patterns/references/patterns.md +394 -0
- package/shared/skills/database-patterns/references/violations.md +332 -0
- package/shared/skills/dependencies-patterns/SKILL.md +141 -0
- package/shared/skills/dependencies-patterns/references/detection.md +181 -0
- package/shared/skills/dependencies-patterns/references/patterns.md +225 -0
- package/shared/skills/dependencies-patterns/references/violations.md +247 -0
- package/shared/skills/docs-framework/SKILL.md +138 -0
- package/shared/skills/docs-framework/references/patterns.md +346 -0
- package/shared/skills/docs-framework/references/violations.md +221 -0
- package/shared/skills/documentation-patterns/SKILL.md +125 -0
- package/shared/skills/documentation-patterns/references/detection.md +190 -0
- package/shared/skills/documentation-patterns/references/patterns.md +189 -0
- package/shared/skills/documentation-patterns/references/violations.md +163 -0
- package/shared/skills/frontend-design/SKILL.md +254 -0
- package/shared/skills/frontend-design/references/detection.md +184 -0
- package/shared/skills/frontend-design/references/patterns.md +511 -0
- package/shared/skills/frontend-design/references/violations.md +453 -0
- package/shared/skills/git-safety/SKILL.md +122 -0
- package/shared/skills/git-safety/references/detection.md +290 -0
- package/shared/skills/git-safety/references/patterns.md +289 -0
- package/shared/skills/git-safety/references/violations.md +18 -0
- package/shared/skills/git-workflow/SKILL.md +158 -0
- package/shared/skills/git-workflow/references/commit-patterns.md +115 -0
- package/shared/skills/git-workflow/references/commit-violations.md +77 -0
- package/shared/skills/git-workflow/references/pr-patterns.md +127 -0
- package/shared/skills/git-workflow/references/pr-violations.md +96 -0
- package/shared/skills/github-patterns/SKILL.md +153 -0
- package/shared/skills/github-patterns/references/patterns.md +572 -0
- package/shared/skills/github-patterns/references/violations.md +298 -0
- package/shared/skills/implementation-patterns/SKILL.md +162 -0
- package/shared/skills/implementation-patterns/references/patterns.md +1063 -0
- package/shared/skills/implementation-patterns/references/violations.md +483 -0
- package/shared/skills/input-validation/SKILL.md +148 -0
- package/shared/skills/input-validation/references/detection.md +283 -0
- package/shared/skills/input-validation/references/patterns.md +361 -0
- package/shared/skills/input-validation/references/violations.md +224 -0
- package/shared/skills/performance-patterns/SKILL.md +154 -0
- package/shared/skills/performance-patterns/references/detection.md +351 -0
- package/shared/skills/performance-patterns/references/patterns.md +503 -0
- package/shared/skills/performance-patterns/references/violations.md +354 -0
- package/shared/skills/react/SKILL.md +276 -0
- package/shared/skills/react/references/patterns.md +1331 -0
- package/shared/skills/react/references/violations.md +565 -0
- package/shared/skills/regression-patterns/SKILL.md +146 -0
- package/shared/skills/regression-patterns/references/detection.md +237 -0
- package/shared/skills/regression-patterns/references/patterns.md +226 -0
- package/shared/skills/regression-patterns/references/violations.md +225 -0
- package/shared/skills/review-methodology/SKILL.md +119 -0
- package/shared/skills/review-methodology/references/patterns.md +186 -0
- package/shared/skills/review-methodology/references/report-template.md +142 -0
- package/shared/skills/review-methodology/references/violations.md +125 -0
- package/shared/skills/security-patterns/SKILL.md +156 -0
- package/shared/skills/security-patterns/references/detection.md +287 -0
- package/shared/skills/security-patterns/references/patterns.md +507 -0
- package/shared/skills/security-patterns/references/violations.md +237 -0
- package/shared/skills/self-review/SKILL.md +149 -0
- package/shared/skills/self-review/references/patterns.md +405 -0
- package/shared/skills/self-review/references/report-template.md +253 -0
- package/shared/skills/self-review/references/violations.md +308 -0
- package/shared/skills/test-driven-development/SKILL.md +139 -0
- package/shared/skills/test-driven-development/references/rationalization-prevention.md +111 -0
- package/shared/skills/test-patterns/SKILL.md +183 -0
- package/shared/skills/test-patterns/references/detection.md +149 -0
- package/shared/skills/test-patterns/references/patterns.md +220 -0
- package/shared/skills/test-patterns/references/report-template.md +108 -0
- package/shared/skills/test-patterns/references/violations.md +221 -0
- package/shared/skills/typescript/SKILL.md +176 -0
- package/shared/skills/typescript/references/patterns.md +1105 -0
- package/shared/skills/typescript/references/violations.md +433 -0
- package/src/templates/claudeignore.template +188 -0
- package/src/templates/managed-settings.json +160 -0
- package/src/templates/settings.json +59 -0
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/uninstall.d.ts.map +0 -1
- package/dist/commands/uninstall.js.map +0 -1
- package/dist/utils/git.d.ts.map +0 -1
- package/dist/utils/git.js.map +0 -1
- package/dist/utils/paths.d.ts.map +0 -1
- package/dist/utils/paths.js.map +0 -1
- package/src/claude/CLAUDE.md +0 -400
- package/src/claude/agents/devflow/audit-architecture.md +0 -132
- package/src/claude/agents/devflow/audit-complexity.md +0 -132
- package/src/claude/agents/devflow/audit-database.md +0 -132
- package/src/claude/agents/devflow/audit-dependencies.md +0 -132
- package/src/claude/agents/devflow/audit-documentation.md +0 -132
- package/src/claude/agents/devflow/audit-performance.md +0 -256
- package/src/claude/agents/devflow/audit-security.md +0 -259
- package/src/claude/agents/devflow/audit-tests.md +0 -132
- package/src/claude/agents/devflow/audit-typescript.md +0 -132
- package/src/claude/agents/devflow/brainstorm.md +0 -279
- package/src/claude/agents/devflow/catch-up.md +0 -345
- package/src/claude/agents/devflow/code-review.md +0 -307
- package/src/claude/agents/devflow/commit.md +0 -380
- package/src/claude/agents/devflow/debug.md +0 -476
- package/src/claude/agents/devflow/design.md +0 -491
- package/src/claude/agents/devflow/get-issue.md +0 -286
- package/src/claude/agents/devflow/pr-comments.md +0 -285
- package/src/claude/agents/devflow/project-state.md +0 -419
- package/src/claude/agents/devflow/pull-request.md +0 -493
- package/src/claude/agents/devflow/release.md +0 -1137
- package/src/claude/agents/devflow/tech-debt.md +0 -338
- package/src/claude/commands/devflow/brainstorm.md +0 -68
- package/src/claude/commands/devflow/breakdown.md +0 -125
- package/src/claude/commands/devflow/catch-up.md +0 -29
- package/src/claude/commands/devflow/code-review.md +0 -237
- package/src/claude/commands/devflow/commit.md +0 -17
- package/src/claude/commands/devflow/debug.md +0 -56
- package/src/claude/commands/devflow/design.md +0 -82
- package/src/claude/commands/devflow/devlog.md +0 -408
- package/src/claude/commands/devflow/get-issue.md +0 -16
- package/src/claude/commands/devflow/implement.md +0 -100
- package/src/claude/commands/devflow/plan.md +0 -223
- package/src/claude/commands/devflow/pull-request.md +0 -20
- package/src/claude/commands/devflow/release.md +0 -251
- package/src/claude/commands/devflow/resolve-comments.md +0 -583
- package/src/claude/scripts/statusline.sh +0 -47
- package/src/claude/settings.json +0 -6
- package/src/claude/skills/devflow/code-smell/SKILL.md +0 -428
- package/src/claude/skills/devflow/debug/SKILL.md +0 -119
- package/src/claude/skills/devflow/error-handling/SKILL.md +0 -597
- package/src/claude/skills/devflow/input-validation/SKILL.md +0 -514
- package/src/claude/skills/devflow/pattern-check/SKILL.md +0 -238
- package/src/claude/skills/devflow/research/SKILL.md +0 -138
- package/src/claude/skills/devflow/test-design/SKILL.md +0 -384
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
# Extended Violation Examples
|
|
2
|
+
|
|
3
|
+
Additional code smell patterns and violations beyond the core examples in SKILL.md.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Result Types - Extended Violations
|
|
8
|
+
|
|
9
|
+
### Try/Catch in Business Logic
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
// VIOLATION: Try/catch in business logic
|
|
13
|
+
function calculate(items: Item[]): number {
|
|
14
|
+
try {
|
|
15
|
+
return items.reduce((sum, i) => sum + i.price, 0);
|
|
16
|
+
} catch {
|
|
17
|
+
return 0; // Silent failure - BAD
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// VIOLATION: Nested try/catch
|
|
22
|
+
async function processOrder(id: string): Promise<Order> {
|
|
23
|
+
try {
|
|
24
|
+
const order = await fetchOrder(id);
|
|
25
|
+
try {
|
|
26
|
+
await validateOrder(order);
|
|
27
|
+
} catch {
|
|
28
|
+
// Swallowed validation error
|
|
29
|
+
}
|
|
30
|
+
return order;
|
|
31
|
+
} catch {
|
|
32
|
+
return null; // Silent failure
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// VIOLATION: Error type erasure
|
|
37
|
+
function parseConfig(raw: string): Config {
|
|
38
|
+
try {
|
|
39
|
+
return JSON.parse(raw);
|
|
40
|
+
} catch (e) {
|
|
41
|
+
throw new Error('Parse failed'); // Lost original error context
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Implicit Error States
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
// VIOLATION: Using null/undefined for errors
|
|
50
|
+
function findUser(id: string): User | null {
|
|
51
|
+
// Caller can't distinguish "not found" from "error occurred"
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// VIOLATION: Using sentinel values
|
|
56
|
+
function calculateDiscount(userId: string): number {
|
|
57
|
+
// Returns -1 for errors - magic value
|
|
58
|
+
if (!userId) return -1;
|
|
59
|
+
return computeDiscount(userId);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// VIOLATION: Throwing in async without Result
|
|
63
|
+
async function fetchData(url: string): Promise<Data> {
|
|
64
|
+
const response = await fetch(url);
|
|
65
|
+
if (!response.ok) {
|
|
66
|
+
throw new Error('Fetch failed'); // Should return Result
|
|
67
|
+
}
|
|
68
|
+
return response.json();
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Dependency Injection - Extended Violations
|
|
75
|
+
|
|
76
|
+
### Hidden Dependencies
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
// VIOLATION: Hidden dependencies via imports
|
|
80
|
+
import { config } from './config'; // Global config
|
|
81
|
+
import { analytics } from './analytics'; // Global analytics
|
|
82
|
+
|
|
83
|
+
class UserService {
|
|
84
|
+
createUser(data: UserData) {
|
|
85
|
+
// Uses global config - can't test with different config
|
|
86
|
+
if (config.features.requireEmailVerification) {
|
|
87
|
+
// ...
|
|
88
|
+
}
|
|
89
|
+
// Uses global analytics - can't mock in tests
|
|
90
|
+
analytics.track('user_created', data);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// VIOLATION: Static method dependencies
|
|
95
|
+
class OrderService {
|
|
96
|
+
processOrder(order: Order) {
|
|
97
|
+
// Can't mock static methods
|
|
98
|
+
const tax = TaxCalculator.calculate(order.total);
|
|
99
|
+
const shipping = ShippingService.getRate(order.address);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// VIOLATION: Service locator anti-pattern
|
|
104
|
+
class PaymentService {
|
|
105
|
+
process(payment: Payment) {
|
|
106
|
+
// Runtime dependency resolution - untestable
|
|
107
|
+
const gateway = ServiceLocator.resolve<PaymentGateway>('paymentGateway');
|
|
108
|
+
return gateway.charge(payment);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Partial Injection
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
// VIOLATION: Some dependencies injected, others not
|
|
117
|
+
class ReportService {
|
|
118
|
+
constructor(private db: Database) {} // Injected
|
|
119
|
+
|
|
120
|
+
generate(reportId: string) {
|
|
121
|
+
const data = this.db.query(reportId);
|
|
122
|
+
// But logger is global
|
|
123
|
+
logger.info('Report generated'); // BAD
|
|
124
|
+
// And config is imported
|
|
125
|
+
if (config.features.pdfExport) { // BAD
|
|
126
|
+
// ...
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Immutability - Extended Violations
|
|
135
|
+
|
|
136
|
+
### Array Mutations
|
|
137
|
+
|
|
138
|
+
```typescript
|
|
139
|
+
// VIOLATION: In-place array modifications
|
|
140
|
+
function processItems(items: Item[]): Item[] {
|
|
141
|
+
items.push({ id: 'new' }); // BAD - mutates input
|
|
142
|
+
items.splice(0, 1); // BAD - mutates input
|
|
143
|
+
items.reverse(); // BAD - mutates in place
|
|
144
|
+
items.fill({ id: 'default' }); // BAD - mutates in place
|
|
145
|
+
return items;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// VIOLATION: Sorting without copy
|
|
149
|
+
function getSortedUsers(users: User[]): User[] {
|
|
150
|
+
return users.sort((a, b) => a.name.localeCompare(b.name)); // Mutates original!
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// VIOLATION: Using forEach for transformation
|
|
154
|
+
function transformItems(items: Item[]): Item[] {
|
|
155
|
+
items.forEach(item => {
|
|
156
|
+
item.processed = true; // BAD - mutation
|
|
157
|
+
});
|
|
158
|
+
return items;
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Object Mutations
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
// VIOLATION: Nested object mutation
|
|
166
|
+
function updateAddress(user: User, city: string): User {
|
|
167
|
+
user.address.city = city; // BAD - nested mutation
|
|
168
|
+
return user;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// VIOLATION: Object.assign mutating first argument
|
|
172
|
+
function mergeConfig(base: Config, overrides: Partial<Config>): Config {
|
|
173
|
+
return Object.assign(base, overrides); // BAD - mutates base
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// VIOLATION: Deleting properties
|
|
177
|
+
function removeField(obj: Record<string, unknown>, field: string) {
|
|
178
|
+
delete obj[field]; // BAD - mutation
|
|
179
|
+
return obj;
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Pure Functions - Extended Violations
|
|
186
|
+
|
|
187
|
+
### Side Effect Patterns
|
|
188
|
+
|
|
189
|
+
```typescript
|
|
190
|
+
// VIOLATION: Accessing global state
|
|
191
|
+
let counter = 0;
|
|
192
|
+
function getNextId(): string {
|
|
193
|
+
return `id-${counter++}`; // BAD - global state modification
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// VIOLATION: Date/time dependency
|
|
197
|
+
function isExpired(expiry: Date): boolean {
|
|
198
|
+
return new Date() > expiry; // BAD - depends on current time
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// VIOLATION: Random values
|
|
202
|
+
function generateToken(): string {
|
|
203
|
+
return Math.random().toString(36); // BAD - non-deterministic
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// VIOLATION: Environment access
|
|
207
|
+
function getApiUrl(): string {
|
|
208
|
+
return process.env.API_URL || 'http://localhost'; // BAD - env dependency
|
|
209
|
+
}
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Hidden I/O
|
|
213
|
+
|
|
214
|
+
```typescript
|
|
215
|
+
// VIOLATION: Caching with side effects
|
|
216
|
+
const cache = new Map();
|
|
217
|
+
function expensiveCalculation(input: string): number {
|
|
218
|
+
if (cache.has(input)) return cache.get(input); // BAD - reads global state
|
|
219
|
+
const result = compute(input);
|
|
220
|
+
cache.set(input, result); // BAD - writes global state
|
|
221
|
+
return result;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// VIOLATION: Lazy initialization
|
|
225
|
+
let initialized = false;
|
|
226
|
+
function ensureInitialized(): void {
|
|
227
|
+
if (!initialized) {
|
|
228
|
+
performSetup(); // BAD - side effect
|
|
229
|
+
initialized = true; // BAD - global state
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## Type Safety - Extended Violations
|
|
237
|
+
|
|
238
|
+
### Type Assertions Abuse
|
|
239
|
+
|
|
240
|
+
```typescript
|
|
241
|
+
// VIOLATION: Unsafe type assertion
|
|
242
|
+
const user = data as User; // No runtime check
|
|
243
|
+
|
|
244
|
+
// VIOLATION: Non-null assertion
|
|
245
|
+
const name = user!.profile!.name!; // Assumes non-null
|
|
246
|
+
|
|
247
|
+
// VIOLATION: Any escape hatch
|
|
248
|
+
function process(data: unknown) {
|
|
249
|
+
return (data as any).property.nested; // BAD
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
// VIOLATION: Type assertion to bypass checks
|
|
253
|
+
const items: Item[] = response.data as Item[]; // No validation
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### Incomplete Discrimination
|
|
257
|
+
|
|
258
|
+
```typescript
|
|
259
|
+
// VIOLATION: Default case hiding missing patterns
|
|
260
|
+
function handleEvent(event: Event): void {
|
|
261
|
+
switch (event.type) {
|
|
262
|
+
case 'click':
|
|
263
|
+
handleClick(event);
|
|
264
|
+
break;
|
|
265
|
+
default:
|
|
266
|
+
// Silently ignores new event types
|
|
267
|
+
break;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// VIOLATION: Using if/else instead of exhaustive switch
|
|
272
|
+
function getLabel(status: Status): string {
|
|
273
|
+
if (status === 'pending') return 'Waiting';
|
|
274
|
+
if (status === 'active') return 'Running';
|
|
275
|
+
return 'Unknown'; // BAD - misses new status types
|
|
276
|
+
}
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## Resource Cleanup - Extended Violations
|
|
282
|
+
|
|
283
|
+
### Connection Leaks
|
|
284
|
+
|
|
285
|
+
```typescript
|
|
286
|
+
// VIOLATION: Connection not released on error
|
|
287
|
+
async function queryDatabase(sql: string) {
|
|
288
|
+
const conn = await pool.getConnection();
|
|
289
|
+
const result = await conn.query(sql); // If this throws, connection leaks
|
|
290
|
+
conn.release();
|
|
291
|
+
return result;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
// VIOLATION: Stream not closed
|
|
295
|
+
function readFile(path: string) {
|
|
296
|
+
const stream = fs.createReadStream(path);
|
|
297
|
+
stream.on('data', chunk => process(chunk));
|
|
298
|
+
// No close handler - stream never closed on error
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
// VIOLATION: Subscription not unsubscribed
|
|
302
|
+
function setupListener(emitter: EventEmitter) {
|
|
303
|
+
emitter.on('event', handler);
|
|
304
|
+
// No cleanup - memory leak
|
|
305
|
+
}
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### Timer Leaks
|
|
309
|
+
|
|
310
|
+
```typescript
|
|
311
|
+
// VIOLATION: Interval not cleared
|
|
312
|
+
function startPolling() {
|
|
313
|
+
setInterval(() => {
|
|
314
|
+
fetchData();
|
|
315
|
+
}, 1000);
|
|
316
|
+
// No way to stop polling
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
// VIOLATION: Timeout not cleared on early exit
|
|
320
|
+
async function withTimeout(promise: Promise<unknown>, ms: number) {
|
|
321
|
+
const timeout = setTimeout(() => { throw new Error('Timeout'); }, ms);
|
|
322
|
+
const result = await promise; // If this resolves, timeout still pending
|
|
323
|
+
return result;
|
|
324
|
+
}
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## API Consistency - Extended Violations
|
|
330
|
+
|
|
331
|
+
### Mixed Error Handling
|
|
332
|
+
|
|
333
|
+
```typescript
|
|
334
|
+
// VIOLATION: Mixed error handling in same module
|
|
335
|
+
class UserRepository {
|
|
336
|
+
// Returns null for not found
|
|
337
|
+
findById(id: string): User | null { ... }
|
|
338
|
+
|
|
339
|
+
// Throws for not found
|
|
340
|
+
getById(id: string): User {
|
|
341
|
+
const user = this.findById(id);
|
|
342
|
+
if (!user) throw new NotFoundError(); // Inconsistent!
|
|
343
|
+
return user;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
// Returns Result
|
|
347
|
+
findByEmail(email: string): Result<User, Error> { ... } // Third pattern!
|
|
348
|
+
}
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
### Mixed Async Patterns
|
|
352
|
+
|
|
353
|
+
```typescript
|
|
354
|
+
// VIOLATION: Mixing callbacks and promises
|
|
355
|
+
function fetchUser(id: string, callback?: (err: Error, user: User) => void): Promise<User> {
|
|
356
|
+
const promise = api.get(`/users/${id}`);
|
|
357
|
+
if (callback) {
|
|
358
|
+
promise.then(user => callback(null, user)).catch(err => callback(err, null));
|
|
359
|
+
}
|
|
360
|
+
return promise;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
// VIOLATION: Fire-and-forget async
|
|
364
|
+
async function processOrder(order: Order) {
|
|
365
|
+
saveOrder(order); // Missing await - fire and forget
|
|
366
|
+
await sendEmail(order.email); // This one awaits
|
|
367
|
+
logAnalytics(order); // Missing await again
|
|
368
|
+
}
|
|
369
|
+
```
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: self-review
|
|
3
|
+
description: Self-review framework evaluating implementation quality against 9 pillars (correctness, completeness, security, performance, maintainability, testing, documentation, error handling, simplicity). Fixes P0/P1 issues immediately rather than reporting them. Used by the Scrutinizer agent as a quality gate.
|
|
4
|
+
user-invocable: false
|
|
5
|
+
allowed-tools: Read, Grep, Glob, Edit, Write, Bash
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Self-Review Framework
|
|
9
|
+
|
|
10
|
+
Systematic self-review for the Scrutinizer agent. Evaluate implementation against 9 pillars. **Fix issues, don't just report them.**
|
|
11
|
+
|
|
12
|
+
Based on [Google Engineering Practices](https://google.github.io/eng-practices/review/reviewer/looking-for.html).
|
|
13
|
+
|
|
14
|
+
## Iron Law
|
|
15
|
+
|
|
16
|
+
> **FIX BEFORE RETURNING**
|
|
17
|
+
>
|
|
18
|
+
> Self-review is not a report generator. It's a quality gate. If you find a P0 or P1 issue,
|
|
19
|
+
> you fix it. You only return when all critical issues are resolved. Pride in craftsmanship.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## The 9 Pillars
|
|
24
|
+
|
|
25
|
+
| Priority | Action | Pillars |
|
|
26
|
+
|----------|--------|---------|
|
|
27
|
+
| **P0** | MUST fix | Design, Functionality, Security |
|
|
28
|
+
| **P1** | SHOULD fix | Complexity, Error Handling, Tests |
|
|
29
|
+
| **P2** | FIX if time | Naming, Consistency, Documentation |
|
|
30
|
+
|
|
31
|
+
### P0 - Design
|
|
32
|
+
Does the implementation fit the architecture? Follows existing patterns, respects layer boundaries, dependencies injected.
|
|
33
|
+
|
|
34
|
+
### P0 - Functionality
|
|
35
|
+
Does the code work? Happy path, edge cases (null, empty, boundary), no race conditions.
|
|
36
|
+
|
|
37
|
+
### P0 - Security
|
|
38
|
+
Any vulnerabilities? No injection, input validated, no hardcoded secrets, auth checked.
|
|
39
|
+
|
|
40
|
+
### P1 - Complexity
|
|
41
|
+
Understandable in 5 minutes? Functions < 50 lines, nesting < 4 levels, no magic numbers.
|
|
42
|
+
|
|
43
|
+
### P1 - Error Handling
|
|
44
|
+
Errors handled explicitly? No swallowed exceptions, helpful messages, resources cleaned up.
|
|
45
|
+
|
|
46
|
+
### P1 - Tests
|
|
47
|
+
New code tested? Covers happy path, errors, edges. Tests behavior, not implementation.
|
|
48
|
+
|
|
49
|
+
### P2 - Naming
|
|
50
|
+
Names clear and descriptive? No cryptic abbreviations, consistent style.
|
|
51
|
+
|
|
52
|
+
### P2 - Consistency
|
|
53
|
+
Matches existing patterns? Same style, same conventions, no unnecessary divergence.
|
|
54
|
+
|
|
55
|
+
### P2 - Documentation
|
|
56
|
+
Will others understand? Complex logic commented, public APIs documented, no outdated comments.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Quick Examples
|
|
61
|
+
|
|
62
|
+
### Design Red Flag
|
|
63
|
+
```typescript
|
|
64
|
+
// BAD: Direct DB in controller (violates layers)
|
|
65
|
+
class UserController {
|
|
66
|
+
async getUser(req, res) {
|
|
67
|
+
const user = await db.query('SELECT * FROM users WHERE id = ?', [req.params.id]);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Security Red Flag
|
|
73
|
+
```typescript
|
|
74
|
+
// BAD: SQL injection
|
|
75
|
+
const query = `SELECT * FROM users WHERE email = '${email}'`;
|
|
76
|
+
|
|
77
|
+
// BAD: Missing auth
|
|
78
|
+
app.delete('/api/users/:id', async (req, res) => {
|
|
79
|
+
await deleteUser(req.params.id); // No auth check!
|
|
80
|
+
});
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Self-Review Process
|
|
86
|
+
|
|
87
|
+
### Step 1: Gather Changes
|
|
88
|
+
```bash
|
|
89
|
+
git diff --name-only HEAD~1
|
|
90
|
+
git diff HEAD~1
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Step 2: Evaluate P0 Pillars
|
|
94
|
+
Check Design, Functionality, Security. If issues found and fixable, fix immediately. If unfixable, STOP and report blocker.
|
|
95
|
+
|
|
96
|
+
### Step 3: Evaluate P1 Pillars
|
|
97
|
+
Check Complexity, Error Handling, Tests. Fix issues found.
|
|
98
|
+
|
|
99
|
+
### Step 4: Evaluate P2 Pillars
|
|
100
|
+
Check Naming, Consistency, Documentation. Fix if time permits.
|
|
101
|
+
|
|
102
|
+
### Step 5: Generate Report
|
|
103
|
+
Document status of each pillar, fixes applied, and overall readiness.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Output Format
|
|
108
|
+
|
|
109
|
+
```markdown
|
|
110
|
+
## Self-Review Report
|
|
111
|
+
|
|
112
|
+
### P0 Pillars
|
|
113
|
+
- Design: PASS/FIXED
|
|
114
|
+
- Functionality: PASS/FIXED
|
|
115
|
+
- Security: PASS/FIXED
|
|
116
|
+
|
|
117
|
+
### P1 Pillars
|
|
118
|
+
- Complexity: PASS/FIXED
|
|
119
|
+
- Error Handling: PASS/FIXED
|
|
120
|
+
- Tests: PASS/FIXED
|
|
121
|
+
|
|
122
|
+
### P2 Pillars
|
|
123
|
+
- Naming: PASS/FIXED/SKIP
|
|
124
|
+
- Consistency: PASS/FIXED/SKIP
|
|
125
|
+
- Documentation: PASS/FIXED/SKIP
|
|
126
|
+
|
|
127
|
+
### Summary
|
|
128
|
+
Issues Found: {n}, Fixed: {n}
|
|
129
|
+
Status: READY / BLOCKED
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Extended References
|
|
135
|
+
|
|
136
|
+
For detailed checklists, examples, and red flags for each pillar:
|
|
137
|
+
- See `references/pillars.md`
|
|
138
|
+
|
|
139
|
+
For complete report templates and examples:
|
|
140
|
+
- See `references/report-template.md`
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Integration
|
|
145
|
+
|
|
146
|
+
Used by:
|
|
147
|
+
- **Scrutinizer agent**: Dedicated self-review in fresh context after Coder completes
|
|
148
|
+
|
|
149
|
+
The self-review ensures implementations meet quality standards before external review, catching issues early.
|