devflow-kit 0.9.0 → 1.0.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 +167 -29
- package/LICENSE +1 -1
- package/README.md +179 -310
- package/dist/cli.js +3 -1
- package/dist/commands/init.d.ts +21 -0
- package/dist/commands/init.js +311 -576
- package/dist/commands/list.d.ts +3 -0
- package/dist/commands/list.js +20 -0
- package/dist/commands/uninstall.d.ts +10 -0
- package/dist/commands/uninstall.js +351 -78
- package/dist/plugins.d.ts +46 -0
- package/dist/plugins.js +162 -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 +68 -0
- package/dist/utils/post-install.js +427 -0
- package/dist/utils/safe-delete-install.d.ts +22 -0
- package/dist/utils/safe-delete-install.js +156 -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-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 +27 -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 +134 -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-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/background-memory-update.sh +167 -0
- package/scripts/hooks/pre-compact-memory.sh +81 -0
- package/scripts/hooks/session-start-memory.sh +84 -0
- package/scripts/hooks/stop-update-memory.sh +81 -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/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 +134 -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-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 +146 -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,202 @@
|
|
|
1
|
+
# Correct Consistency Patterns Reference
|
|
2
|
+
|
|
3
|
+
Extended examples of correct patterns to follow.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Naming Conventions
|
|
8
|
+
|
|
9
|
+
### Function Naming
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
// EXISTING PATTERN: camelCase for functions
|
|
13
|
+
function getUserById(id: string) { }
|
|
14
|
+
function createOrder(data: OrderData) { }
|
|
15
|
+
function validateInput(input: string) { }
|
|
16
|
+
function processPayment(amount: number) { }
|
|
17
|
+
|
|
18
|
+
// All new functions MUST match this style
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Class Naming
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
// EXISTING PATTERN: PascalCase for classes
|
|
25
|
+
class UserService { }
|
|
26
|
+
class OrderRepository { }
|
|
27
|
+
class PaymentGateway { }
|
|
28
|
+
class ValidationError extends Error { }
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Constant Naming
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
// EXISTING PATTERN: SCREAMING_SNAKE_CASE for true constants
|
|
35
|
+
const MAX_RETRY_ATTEMPTS = 3;
|
|
36
|
+
const API_BASE_URL = 'https://api.example.com';
|
|
37
|
+
const DEFAULT_TIMEOUT_MS = 5000;
|
|
38
|
+
|
|
39
|
+
// camelCase for configuration objects
|
|
40
|
+
const serverConfig = { port: 3000 };
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Error Handling
|
|
46
|
+
|
|
47
|
+
### Result Type Pattern
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
// EXISTING PATTERN: Result types
|
|
51
|
+
function existingFunction(): Result<User, Error> {
|
|
52
|
+
if (!valid) return Err(new ValidationError('Detailed message'));
|
|
53
|
+
return Ok(user);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// CORRECT: Match existing
|
|
57
|
+
function newFunction(): Result<Order, Error> {
|
|
58
|
+
if (!valid) return Err(new ValidationError('Detailed message'));
|
|
59
|
+
return Ok(order);
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Error Messages
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
// CORRECT: Informative error messages
|
|
67
|
+
throw new Error(`Failed to process order ${orderId}: ${reason}. Customer: ${customerId}. Items: ${itemCount}`);
|
|
68
|
+
|
|
69
|
+
// Include:
|
|
70
|
+
// - What failed
|
|
71
|
+
// - Why it failed (if known)
|
|
72
|
+
// - Context for debugging
|
|
73
|
+
// - Action the user can take (for user-facing)
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Import Organization
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
// CORRECT ORDER:
|
|
82
|
+
// 1. Node built-ins
|
|
83
|
+
import fs from 'fs';
|
|
84
|
+
import path from 'path';
|
|
85
|
+
|
|
86
|
+
// 2. External packages
|
|
87
|
+
import express from 'express';
|
|
88
|
+
import { z } from 'zod';
|
|
89
|
+
|
|
90
|
+
// 3. Internal packages (@company/*)
|
|
91
|
+
import { Logger } from '@internal/logger';
|
|
92
|
+
import { Config } from '@internal/config';
|
|
93
|
+
|
|
94
|
+
// 4. Relative imports (parent directories first)
|
|
95
|
+
import { BaseService } from '../../base';
|
|
96
|
+
import { User } from '../models';
|
|
97
|
+
import { validate } from './utils';
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Export Patterns
|
|
103
|
+
|
|
104
|
+
### Named Exports (Preferred)
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
// Functions
|
|
108
|
+
export function createUser(data: UserInput): Result<User, Error> { }
|
|
109
|
+
export function deleteUser(id: string): Result<void, Error> { }
|
|
110
|
+
|
|
111
|
+
// Classes
|
|
112
|
+
export class UserService { }
|
|
113
|
+
export class UserRepository { }
|
|
114
|
+
|
|
115
|
+
// Types
|
|
116
|
+
export type UserId = string;
|
|
117
|
+
export interface UserConfig { }
|
|
118
|
+
|
|
119
|
+
// Constants
|
|
120
|
+
export const DEFAULT_PAGE_SIZE = 20;
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Barrel Exports
|
|
124
|
+
|
|
125
|
+
```typescript
|
|
126
|
+
// src/services/index.ts
|
|
127
|
+
export { UserService } from './user-service';
|
|
128
|
+
export { OrderService } from './order-service';
|
|
129
|
+
export type { ServiceConfig } from './types';
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Configuration Preservation
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
// CORRECT: Maintain configuration flexibility
|
|
138
|
+
interface ServerConfig {
|
|
139
|
+
// Required
|
|
140
|
+
port: number;
|
|
141
|
+
host: string;
|
|
142
|
+
|
|
143
|
+
// Optional with defaults
|
|
144
|
+
timeout?: number;
|
|
145
|
+
maxConnections?: number;
|
|
146
|
+
|
|
147
|
+
// Nested configs
|
|
148
|
+
ssl?: SSLConfig;
|
|
149
|
+
logging?: LogConfig;
|
|
150
|
+
cors?: CorsConfig;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Deprecation notice when removing options
|
|
154
|
+
/**
|
|
155
|
+
* @deprecated Use `logging.level` instead. Will be removed in v3.0
|
|
156
|
+
*/
|
|
157
|
+
debugMode?: boolean;
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Event Emission Preservation
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
// CORRECT: Maintain all event emissions
|
|
166
|
+
class OrderService {
|
|
167
|
+
async createOrder(data: OrderData) {
|
|
168
|
+
const order = await this.repository.create(data);
|
|
169
|
+
|
|
170
|
+
// All existing events preserved
|
|
171
|
+
this.events.emit('order.created', order);
|
|
172
|
+
this.events.emit('inventory.reserve', order.items);
|
|
173
|
+
this.events.emit('notification.send', {
|
|
174
|
+
type: 'order_confirmation',
|
|
175
|
+
userId: order.userId,
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
return order;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// If removing events, deprecate first:
|
|
183
|
+
// DEPRECATED: 'order.legacy' event will be removed in v3.0
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## CLI Option Preservation
|
|
189
|
+
|
|
190
|
+
```typescript
|
|
191
|
+
// CORRECT: Maintain all CLI options
|
|
192
|
+
program
|
|
193
|
+
.option('-v, --verbose', 'Enable verbose output')
|
|
194
|
+
.option('-d, --debug', 'Enable debug mode')
|
|
195
|
+
.option('-c, --config <path>', 'Config file path')
|
|
196
|
+
.option('--dry-run', 'Preview without executing')
|
|
197
|
+
// New options add to existing, don't replace
|
|
198
|
+
.option('--json', 'Output in JSON format');
|
|
199
|
+
|
|
200
|
+
// If removing, add deprecation warning:
|
|
201
|
+
.option('--old-flag', '[DEPRECATED] Use --new-flag instead')
|
|
202
|
+
```
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
# Consistency Violations Reference
|
|
2
|
+
|
|
3
|
+
Extended examples of consistency violations to detect.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Unnecessary Simplification
|
|
8
|
+
|
|
9
|
+
### Content Truncation
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
// BEFORE (comprehensive)
|
|
13
|
+
const errorMessages = {
|
|
14
|
+
INVALID_EMAIL: 'Please enter a valid email address in the format user@domain.com',
|
|
15
|
+
PASSWORD_WEAK: 'Password must contain at least 8 characters, one uppercase, one lowercase, one number, and one special character',
|
|
16
|
+
USER_NOT_FOUND: 'We could not find an account with that email. Please check the email or create a new account.',
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
// AFTER (over-simplified - PROBLEM)
|
|
20
|
+
const errorMessages = {
|
|
21
|
+
INVALID_EMAIL: 'Invalid email',
|
|
22
|
+
PASSWORD_WEAK: 'Password too weak',
|
|
23
|
+
USER_NOT_FOUND: 'Not found',
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// RED FLAG: User-facing messages should be helpful, not minimal
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Removed Error Context
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
// BEFORE (informative)
|
|
33
|
+
throw new Error(`Failed to process order ${orderId}: ${reason}. Customer: ${customerId}. Items: ${itemCount}`);
|
|
34
|
+
|
|
35
|
+
// AFTER (stripped - PROBLEM)
|
|
36
|
+
throw new Error('Order failed');
|
|
37
|
+
|
|
38
|
+
// RED FLAG: Debug info removed, harder to troubleshoot
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Stripped Configuration Options
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
// BEFORE (flexible)
|
|
45
|
+
interface ServerConfig {
|
|
46
|
+
port: number;
|
|
47
|
+
host: string;
|
|
48
|
+
timeout: number;
|
|
49
|
+
maxConnections: number;
|
|
50
|
+
ssl: SSLConfig;
|
|
51
|
+
logging: LogConfig;
|
|
52
|
+
cors: CorsConfig;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// AFTER (rigid - PROBLEM)
|
|
56
|
+
interface ServerConfig {
|
|
57
|
+
port: number;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// RED FLAG: Configuration flexibility removed
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Pattern Violations
|
|
66
|
+
|
|
67
|
+
### Import Organization Inconsistency
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
// EXISTING PATTERN: External, internal, relative
|
|
71
|
+
import express from 'express'; // External
|
|
72
|
+
import { Logger } from '@internal/logger'; // Internal
|
|
73
|
+
import { User } from './models'; // Relative
|
|
74
|
+
|
|
75
|
+
// VIOLATION: Mixed order
|
|
76
|
+
import { User } from './models';
|
|
77
|
+
import express from 'express';
|
|
78
|
+
import { Logger } from '@internal/logger';
|
|
79
|
+
|
|
80
|
+
// CORRECT: Match existing organization
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Export Pattern Mismatch
|
|
84
|
+
|
|
85
|
+
```typescript
|
|
86
|
+
// EXISTING PATTERN: Named exports
|
|
87
|
+
export function createUser() { }
|
|
88
|
+
export function deleteUser() { }
|
|
89
|
+
export const UserSchema = z.object({ });
|
|
90
|
+
|
|
91
|
+
// VIOLATION: Default export
|
|
92
|
+
export default class UserService { // Different pattern!
|
|
93
|
+
create() { }
|
|
94
|
+
delete() { }
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// CORRECT: Match existing
|
|
98
|
+
export class UserService { }
|
|
99
|
+
export const userService = new UserService();
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Feature Regression
|
|
105
|
+
|
|
106
|
+
### Removed CLI Options
|
|
107
|
+
|
|
108
|
+
```typescript
|
|
109
|
+
// BEFORE
|
|
110
|
+
program
|
|
111
|
+
.option('-v, --verbose', 'Enable verbose output')
|
|
112
|
+
.option('-d, --debug', 'Enable debug mode')
|
|
113
|
+
.option('-c, --config <path>', 'Config file path')
|
|
114
|
+
.option('--dry-run', 'Preview without executing');
|
|
115
|
+
|
|
116
|
+
// AFTER (PROBLEM)
|
|
117
|
+
program
|
|
118
|
+
.option('-c, --config <path>', 'Config file path');
|
|
119
|
+
|
|
120
|
+
// RED FLAG: Users relying on removed options will break
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Changed Return Types
|
|
124
|
+
|
|
125
|
+
```typescript
|
|
126
|
+
// BEFORE
|
|
127
|
+
async function fetchUsers(): Promise<User[]> {
|
|
128
|
+
return users;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// AFTER (PROBLEM)
|
|
132
|
+
async function fetchUsers(): Promise<{ data: User[] }> {
|
|
133
|
+
return { data: users }; // Breaking change!
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// All callers expecting User[] will break
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Removed Event Emissions
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
// BEFORE
|
|
143
|
+
class OrderService {
|
|
144
|
+
async createOrder(data: OrderData) {
|
|
145
|
+
const order = await this.repository.create(data);
|
|
146
|
+
this.events.emit('order.created', order); // Other services listen
|
|
147
|
+
this.events.emit('inventory.reserve', order.items);
|
|
148
|
+
return order;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// AFTER (PROBLEM)
|
|
153
|
+
class OrderService {
|
|
154
|
+
async createOrder(data: OrderData) {
|
|
155
|
+
const order = await this.repository.create(data);
|
|
156
|
+
return order; // Events removed - listeners won't fire!
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Style Inconsistency
|
|
164
|
+
|
|
165
|
+
### Brace Style
|
|
166
|
+
|
|
167
|
+
```typescript
|
|
168
|
+
// EXISTING PATTERN: Same-line braces
|
|
169
|
+
function existing() {
|
|
170
|
+
if (condition) {
|
|
171
|
+
// ...
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// VIOLATION: Next-line braces
|
|
176
|
+
function newFunction()
|
|
177
|
+
{
|
|
178
|
+
if (condition)
|
|
179
|
+
{
|
|
180
|
+
// ...
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Quote Style
|
|
186
|
+
|
|
187
|
+
```typescript
|
|
188
|
+
// EXISTING PATTERN: Single quotes
|
|
189
|
+
const name = 'John';
|
|
190
|
+
const message = 'Hello';
|
|
191
|
+
|
|
192
|
+
// VIOLATION: Double quotes
|
|
193
|
+
const name = "Jane"; // Inconsistent
|
|
194
|
+
|
|
195
|
+
// CORRECT: Match existing
|
|
196
|
+
const name = 'Jane';
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Trailing Commas
|
|
200
|
+
|
|
201
|
+
```typescript
|
|
202
|
+
// EXISTING PATTERN: Trailing commas
|
|
203
|
+
const config = {
|
|
204
|
+
name: 'app',
|
|
205
|
+
version: '1.0',
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
// VIOLATION: No trailing comma
|
|
209
|
+
const newConfig = {
|
|
210
|
+
name: 'app',
|
|
211
|
+
version: '1.0' // Missing trailing comma
|
|
212
|
+
};
|
|
213
|
+
```
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: database-patterns
|
|
3
|
+
description: Database analysis patterns for code review. Detects missing indexes, slow queries, unsafe migrations, schema design issues, and connection pool misuse. Loaded by Reviewer agent when focus=database.
|
|
4
|
+
user-invocable: false
|
|
5
|
+
allowed-tools: Read, Grep, Glob
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Database Patterns
|
|
9
|
+
|
|
10
|
+
Domain expertise for database design and optimization. Use alongside `review-methodology` for complete database reviews.
|
|
11
|
+
|
|
12
|
+
## Iron Law
|
|
13
|
+
|
|
14
|
+
> **EVERY QUERY MUST HAVE AN EXECUTION PLAN**
|
|
15
|
+
>
|
|
16
|
+
> Never deploy a query without understanding its execution plan. Every WHERE clause needs
|
|
17
|
+
> an index analysis. Every JOIN needs cardinality consideration. "It works in dev" is not
|
|
18
|
+
> validation. Production data volumes will expose every missing index and inefficient join.
|
|
19
|
+
|
|
20
|
+
## Database Categories
|
|
21
|
+
|
|
22
|
+
### 1. Schema Design Issues
|
|
23
|
+
|
|
24
|
+
| Issue | Problem | Solution |
|
|
25
|
+
|-------|---------|----------|
|
|
26
|
+
| Missing Foreign Keys | No referential integrity, orphaned records | Add FK with ON DELETE action |
|
|
27
|
+
| Denormalization | Unnecessary duplication, update anomalies | Normalize unless performance requires |
|
|
28
|
+
| Poor Data Types | VARCHAR for everything, lost precision | Use appropriate types (DECIMAL, BOOLEAN, TIMESTAMP) |
|
|
29
|
+
| Missing Constraints | No data validation at DB level | Add NOT NULL, CHECK, UNIQUE constraints |
|
|
30
|
+
|
|
31
|
+
**Example - Missing Constraints:**
|
|
32
|
+
```sql
|
|
33
|
+
-- VIOLATION
|
|
34
|
+
CREATE TABLE products (id SERIAL, name VARCHAR(100), price DECIMAL);
|
|
35
|
+
|
|
36
|
+
-- CORRECT
|
|
37
|
+
CREATE TABLE products (
|
|
38
|
+
id SERIAL PRIMARY KEY,
|
|
39
|
+
name VARCHAR(100) NOT NULL CHECK (LENGTH(TRIM(name)) > 0),
|
|
40
|
+
price DECIMAL(10, 2) NOT NULL CHECK (price >= 0)
|
|
41
|
+
);
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 2. Query Optimization Issues
|
|
45
|
+
|
|
46
|
+
| Issue | Problem | Solution |
|
|
47
|
+
|-------|---------|----------|
|
|
48
|
+
| N+1 Queries | Query per iteration, O(n) round trips | JOIN or batch with IN/ANY |
|
|
49
|
+
| Missing Indexes | Full table scans on large tables | Add indexes for WHERE/JOIN columns |
|
|
50
|
+
| Full Table Scans | Functions prevent index use | Functional indexes or query rewrite |
|
|
51
|
+
| Inefficient JOINs | Joining before filtering | Filter early, select specific columns |
|
|
52
|
+
|
|
53
|
+
**Example - N+1 Query:**
|
|
54
|
+
```typescript
|
|
55
|
+
// VIOLATION: 101 queries for 100 users
|
|
56
|
+
for (const user of users) {
|
|
57
|
+
user.orders = await db.query('SELECT * FROM orders WHERE user_id = ?', [user.id]);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// CORRECT: 2 queries total
|
|
61
|
+
const orders = await db.query('SELECT * FROM orders WHERE user_id = ANY($1)', [userIds]);
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 3. Migration Issues
|
|
65
|
+
|
|
66
|
+
| Issue | Problem | Solution |
|
|
67
|
+
|-------|---------|----------|
|
|
68
|
+
| Breaking Changes | Data loss, no recovery path | Phased approach with backups |
|
|
69
|
+
| Data Loss Risk | Type changes truncate data | Validate before changing types |
|
|
70
|
+
| Missing Rollback | Cannot undo migration | Always implement down() method |
|
|
71
|
+
| Performance Impact | Table locks during migration | Add columns nullable, backfill in batches |
|
|
72
|
+
|
|
73
|
+
**Example - Safe Column Addition:**
|
|
74
|
+
```sql
|
|
75
|
+
-- Step 1: Add nullable (instant)
|
|
76
|
+
ALTER TABLE users ADD COLUMN phone VARCHAR(20);
|
|
77
|
+
-- Step 2: Backfill in batches
|
|
78
|
+
UPDATE users SET phone = 'UNKNOWN' WHERE phone IS NULL AND id BETWEEN 1 AND 10000;
|
|
79
|
+
-- Step 3: Add constraint after backfill
|
|
80
|
+
ALTER TABLE users ALTER COLUMN phone SET NOT NULL;
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 4. Security Issues
|
|
84
|
+
|
|
85
|
+
| Issue | Problem | Solution |
|
|
86
|
+
|-------|---------|----------|
|
|
87
|
+
| SQL Injection | String interpolation in queries | Parameterized queries only |
|
|
88
|
+
| Excessive Privileges | App has GRANT ALL | Minimum required privileges |
|
|
89
|
+
|
|
90
|
+
**Example - SQL Injection:**
|
|
91
|
+
```typescript
|
|
92
|
+
// VULNERABLE
|
|
93
|
+
const query = `SELECT * FROM users WHERE email = '${email}'`;
|
|
94
|
+
|
|
95
|
+
// SECURE
|
|
96
|
+
const query = 'SELECT * FROM users WHERE email = $1';
|
|
97
|
+
await db.query(query, [email]);
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Extended References
|
|
103
|
+
|
|
104
|
+
For detailed examples and detection commands, see:
|
|
105
|
+
|
|
106
|
+
- **[references/violations.md](references/violations.md)** - Extended violation examples with explanations
|
|
107
|
+
- **[references/patterns.md](references/patterns.md)** - Correct patterns and migration strategies
|
|
108
|
+
- **[references/detection.md](references/detection.md)** - Automated detection commands
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Severity Guidelines
|
|
113
|
+
|
|
114
|
+
| Severity | Criteria | Examples |
|
|
115
|
+
|----------|----------|----------|
|
|
116
|
+
| **CRITICAL** | Data integrity or severe performance | SQL injection, N+1 unbounded, data loss migrations, missing FK on critical relations |
|
|
117
|
+
| **HIGH** | Significant database issues | Inefficient JOINs, missing constraints, migrations without rollback |
|
|
118
|
+
| **MEDIUM** | Moderate concerns | Minor denormalization, missing non-critical indexes |
|
|
119
|
+
| **LOW** | Minor improvements | Naming conventions, index organization |
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Database Checklist
|
|
124
|
+
|
|
125
|
+
Before approving database changes:
|
|
126
|
+
|
|
127
|
+
- [ ] All queries have appropriate indexes
|
|
128
|
+
- [ ] N+1 patterns identified and resolved
|
|
129
|
+
- [ ] Migrations have rollback scripts
|
|
130
|
+
- [ ] Data types are appropriate
|
|
131
|
+
- [ ] Constraints enforce business rules
|
|
132
|
+
- [ ] Foreign keys maintain referential integrity
|
|
133
|
+
- [ ] No SQL injection vulnerabilities
|
|
134
|
+
- [ ] Performance tested with production-like data volume
|