devflow-kit 0.8.1 → 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 +185 -29
- package/LICENSE +1 -1
- package/README.md +179 -308
- package/dist/cli.js +3 -1
- package/dist/commands/init.d.ts +21 -0
- package/dist/commands/init.js +311 -575
- 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/pr-comments.md +0 -285
- package/src/claude/agents/devflow/project-state.md +0 -419
- package/src/claude/agents/devflow/pull-request.md +0 -423
- 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/implement.md +0 -100
- package/src/claude/commands/devflow/plan.md +0 -223
- package/src/claude/commands/devflow/pull-request.md +0 -269
- 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,453 @@
|
|
|
1
|
+
# Frontend Design Violations
|
|
2
|
+
|
|
3
|
+
Extended violation patterns for frontend design reviews. Reference from main SKILL.md.
|
|
4
|
+
|
|
5
|
+
## Typography Violations
|
|
6
|
+
|
|
7
|
+
### No Rationale for Font Choice
|
|
8
|
+
|
|
9
|
+
```css
|
|
10
|
+
/* VIOLATION: Default sans-serif without justification */
|
|
11
|
+
body {
|
|
12
|
+
font-family: 'Inter', 'Helvetica Neue', Arial, sans-serif;
|
|
13
|
+
}
|
|
14
|
+
/* Why Inter? What personality does it convey? How does it serve the product? */
|
|
15
|
+
|
|
16
|
+
/* VIOLATION: Trend-following font choice */
|
|
17
|
+
body {
|
|
18
|
+
font-family: 'Poppins', sans-serif;
|
|
19
|
+
}
|
|
20
|
+
/* Poppins is everywhere. Is it right for YOUR product? */
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Flat Hierarchy
|
|
24
|
+
|
|
25
|
+
```css
|
|
26
|
+
/* VIOLATION: No visual distinction between heading levels */
|
|
27
|
+
h1 { font-size: 24px; font-weight: 600; }
|
|
28
|
+
h2 { font-size: 22px; font-weight: 600; }
|
|
29
|
+
h3 { font-size: 20px; font-weight: 600; }
|
|
30
|
+
h4 { font-size: 18px; font-weight: 600; }
|
|
31
|
+
/* All look the same - users can't scan content */
|
|
32
|
+
|
|
33
|
+
/* VIOLATION: Only size differentiates, nothing else */
|
|
34
|
+
.title { font-size: 2rem; }
|
|
35
|
+
.subtitle { font-size: 1.5rem; }
|
|
36
|
+
.body { font-size: 1rem; }
|
|
37
|
+
/* No weight, spacing, or color variation */
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Poor Readability
|
|
41
|
+
|
|
42
|
+
```css
|
|
43
|
+
/* VIOLATION: Line height too tight for body text */
|
|
44
|
+
p {
|
|
45
|
+
font-size: 16px;
|
|
46
|
+
line-height: 1.2;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* VIOLATION: Lines too long */
|
|
50
|
+
.content {
|
|
51
|
+
max-width: 1200px; /* 150+ characters per line */
|
|
52
|
+
font-size: 16px;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/* VIOLATION: Inconsistent line heights */
|
|
56
|
+
.card-title { line-height: 1.1; }
|
|
57
|
+
.card-body { line-height: 1.8; }
|
|
58
|
+
.card-footer { line-height: 1.4; }
|
|
59
|
+
/* Random values, no system */
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Color Violations
|
|
65
|
+
|
|
66
|
+
### Random Hex Values
|
|
67
|
+
|
|
68
|
+
```css
|
|
69
|
+
/* VIOLATION: Colors without system */
|
|
70
|
+
.button-primary { background: #4f46e5; }
|
|
71
|
+
.button-secondary { background: #6366f1; }
|
|
72
|
+
.link { color: #3b82f6; }
|
|
73
|
+
.error { color: #ef4444; }
|
|
74
|
+
.success { color: #22c55e; }
|
|
75
|
+
/* Different blues, no relationship, no semantic meaning */
|
|
76
|
+
|
|
77
|
+
/* VIOLATION: Inline color overrides */
|
|
78
|
+
<span style={{ color: '#8b5cf6' }}>Special text</span>
|
|
79
|
+
<div style={{ background: '#fef3c7' }}>Warning area</div>
|
|
80
|
+
/* One-off colors that don't fit the system */
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### AI Slop Gradients
|
|
84
|
+
|
|
85
|
+
```css
|
|
86
|
+
/* VIOLATION: Template gradient with no brand relevance */
|
|
87
|
+
.hero {
|
|
88
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/* VIOLATION: Gradient just because "it's modern" */
|
|
92
|
+
.button {
|
|
93
|
+
background: linear-gradient(to right, #ec4899, #8b5cf6);
|
|
94
|
+
}
|
|
95
|
+
/* Purple-pink gradient copied from every template */
|
|
96
|
+
|
|
97
|
+
/* VIOLATION: Gradient on text without purpose */
|
|
98
|
+
.heading {
|
|
99
|
+
background: linear-gradient(90deg, #f97316, #ec4899);
|
|
100
|
+
-webkit-background-clip: text;
|
|
101
|
+
-webkit-text-fill-color: transparent;
|
|
102
|
+
}
|
|
103
|
+
/* Eye-catching but what does it communicate? */
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Dark Mode Afterthoughts
|
|
107
|
+
|
|
108
|
+
```css
|
|
109
|
+
/* VIOLATION: Invert filter hack */
|
|
110
|
+
@media (prefers-color-scheme: dark) {
|
|
111
|
+
body { filter: invert(1) hue-rotate(180deg); }
|
|
112
|
+
img { filter: invert(1) hue-rotate(180deg); }
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/* VIOLATION: Only swapping background */
|
|
116
|
+
.dark {
|
|
117
|
+
background: #1a1a1a;
|
|
118
|
+
/* Text colors, borders, shadows all broken */
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/* VIOLATION: Different design language in dark mode */
|
|
122
|
+
.card {
|
|
123
|
+
background: white;
|
|
124
|
+
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
|
|
125
|
+
}
|
|
126
|
+
.dark .card {
|
|
127
|
+
background: #2d2d2d;
|
|
128
|
+
border: 1px solid #444;
|
|
129
|
+
/* Shadows become borders - inconsistent */
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Motion Violations
|
|
136
|
+
|
|
137
|
+
### Decorative Animation
|
|
138
|
+
|
|
139
|
+
```css
|
|
140
|
+
/* VIOLATION: Animation without purpose */
|
|
141
|
+
.logo {
|
|
142
|
+
animation: float 3s ease-in-out infinite;
|
|
143
|
+
}
|
|
144
|
+
@keyframes float {
|
|
145
|
+
0%, 100% { transform: translateY(0); }
|
|
146
|
+
50% { transform: translateY(-10px); }
|
|
147
|
+
}
|
|
148
|
+
/* Why is the logo floating? */
|
|
149
|
+
|
|
150
|
+
/* VIOLATION: Pulsing buttons */
|
|
151
|
+
.cta-button {
|
|
152
|
+
animation: pulse 2s infinite;
|
|
153
|
+
}
|
|
154
|
+
/* Desperate attention-seeking, not communication */
|
|
155
|
+
|
|
156
|
+
/* VIOLATION: Spinning loaders everywhere */
|
|
157
|
+
.loading { animation: spin 1s linear infinite; }
|
|
158
|
+
/* Even for instant operations */
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Inconsistent Timing
|
|
162
|
+
|
|
163
|
+
```css
|
|
164
|
+
/* VIOLATION: Random durations */
|
|
165
|
+
.modal {
|
|
166
|
+
transition: opacity 0.35s ease, transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
|
|
167
|
+
}
|
|
168
|
+
.dropdown {
|
|
169
|
+
transition: all 0.2s linear;
|
|
170
|
+
}
|
|
171
|
+
.tooltip {
|
|
172
|
+
transition: opacity 150ms;
|
|
173
|
+
}
|
|
174
|
+
.button {
|
|
175
|
+
transition: background 0.1s, transform 0.15s, box-shadow 0.2s;
|
|
176
|
+
}
|
|
177
|
+
/* No timing system, feels inconsistent */
|
|
178
|
+
|
|
179
|
+
/* VIOLATION: "all" transition */
|
|
180
|
+
.card {
|
|
181
|
+
transition: all 0.3s ease;
|
|
182
|
+
}
|
|
183
|
+
/* Animates everything including width/height layout shifts */
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Jarring Easing
|
|
187
|
+
|
|
188
|
+
```css
|
|
189
|
+
/* VIOLATION: Linear easing for UI (feels robotic) */
|
|
190
|
+
.menu {
|
|
191
|
+
transition: transform 0.3s linear;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/* VIOLATION: Aggressive bounce on everything */
|
|
195
|
+
.button {
|
|
196
|
+
transition: transform 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55);
|
|
197
|
+
}
|
|
198
|
+
/* Bounce has its place, but not everywhere */
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Spacing Violations
|
|
204
|
+
|
|
205
|
+
### Magic Numbers
|
|
206
|
+
|
|
207
|
+
```css
|
|
208
|
+
/* VIOLATION: Random spacing values */
|
|
209
|
+
.card {
|
|
210
|
+
padding: 18px 22px;
|
|
211
|
+
margin-bottom: 13px;
|
|
212
|
+
}
|
|
213
|
+
.header {
|
|
214
|
+
padding: 14px 20px;
|
|
215
|
+
margin-bottom: 27px;
|
|
216
|
+
}
|
|
217
|
+
/* No relationship between values */
|
|
218
|
+
|
|
219
|
+
/* VIOLATION: Pixel values everywhere */
|
|
220
|
+
.section { margin: 47px 0; }
|
|
221
|
+
.title { margin-bottom: 11px; }
|
|
222
|
+
.button { padding: 9px 17px; }
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### No Spacing System
|
|
226
|
+
|
|
227
|
+
```tsx
|
|
228
|
+
// VIOLATION: Hardcoded spacing in components
|
|
229
|
+
<div style={{ padding: '12px 16px', marginBottom: '24px' }}>
|
|
230
|
+
<h2 style={{ marginBottom: '8px' }}>Title</h2>
|
|
231
|
+
<p style={{ marginBottom: '16px' }}>Content</p>
|
|
232
|
+
</div>
|
|
233
|
+
|
|
234
|
+
// VIOLATION: Inconsistent Tailwind spacing
|
|
235
|
+
<div className="p-4 mb-6">
|
|
236
|
+
<div className="p-3 mb-5">
|
|
237
|
+
<div className="p-2 mb-4">
|
|
238
|
+
{/* Different patterns at each level */}
|
|
239
|
+
</div>
|
|
240
|
+
</div>
|
|
241
|
+
</div>
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Uniform Spacing (No Hierarchy)
|
|
245
|
+
|
|
246
|
+
```css
|
|
247
|
+
/* VIOLATION: Lobotomized owl selector misuse */
|
|
248
|
+
* + * {
|
|
249
|
+
margin-top: 1rem;
|
|
250
|
+
}
|
|
251
|
+
/* Everything has same spacing - no visual grouping */
|
|
252
|
+
|
|
253
|
+
/* VIOLATION: Same gap everywhere */
|
|
254
|
+
.grid { gap: 16px; }
|
|
255
|
+
.stack { gap: 16px; }
|
|
256
|
+
.inline { gap: 16px; }
|
|
257
|
+
/* No context-appropriate spacing */
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Layout Violations
|
|
263
|
+
|
|
264
|
+
### Everything Centered
|
|
265
|
+
|
|
266
|
+
```css
|
|
267
|
+
/* VIOLATION: Centered text everywhere */
|
|
268
|
+
.page {
|
|
269
|
+
text-align: center;
|
|
270
|
+
}
|
|
271
|
+
.card {
|
|
272
|
+
text-align: center;
|
|
273
|
+
}
|
|
274
|
+
.section {
|
|
275
|
+
text-align: center;
|
|
276
|
+
}
|
|
277
|
+
/* No reading flow, no hierarchy */
|
|
278
|
+
|
|
279
|
+
/* VIOLATION: Centered layout regardless of content */
|
|
280
|
+
.container {
|
|
281
|
+
display: flex;
|
|
282
|
+
flex-direction: column;
|
|
283
|
+
align-items: center;
|
|
284
|
+
text-align: center;
|
|
285
|
+
}
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### Border Radius Overuse
|
|
289
|
+
|
|
290
|
+
```css
|
|
291
|
+
/* VIOLATION: Same radius on everything */
|
|
292
|
+
.button { border-radius: 12px; }
|
|
293
|
+
.card { border-radius: 12px; }
|
|
294
|
+
.input { border-radius: 12px; }
|
|
295
|
+
.avatar { border-radius: 12px; }
|
|
296
|
+
.badge { border-radius: 12px; }
|
|
297
|
+
.modal { border-radius: 12px; }
|
|
298
|
+
/* Avatar should be round, badge should be small radius */
|
|
299
|
+
|
|
300
|
+
/* VIOLATION: Excessive rounding */
|
|
301
|
+
.container {
|
|
302
|
+
border-radius: 24px;
|
|
303
|
+
}
|
|
304
|
+
/* Large containers look like floating blobs */
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### Shadow Abuse
|
|
308
|
+
|
|
309
|
+
```css
|
|
310
|
+
/* VIOLATION: Shadow on everything */
|
|
311
|
+
.card { box-shadow: 0 4px 6px rgba(0,0,0,0.1); }
|
|
312
|
+
.button { box-shadow: 0 4px 6px rgba(0,0,0,0.1); }
|
|
313
|
+
.input { box-shadow: 0 4px 6px rgba(0,0,0,0.1); }
|
|
314
|
+
.header { box-shadow: 0 4px 6px rgba(0,0,0,0.1); }
|
|
315
|
+
/* If everything is elevated, nothing is */
|
|
316
|
+
|
|
317
|
+
/* VIOLATION: Deep shadows for no reason */
|
|
318
|
+
.badge {
|
|
319
|
+
box-shadow: 0 10px 25px rgba(0,0,0,0.2);
|
|
320
|
+
}
|
|
321
|
+
/* Tiny element with massive shadow */
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
## Component Violations
|
|
327
|
+
|
|
328
|
+
### Generic Hero Sections
|
|
329
|
+
|
|
330
|
+
```tsx
|
|
331
|
+
// VIOLATION: Template hero with no customization
|
|
332
|
+
<section className="hero bg-gradient-to-r from-purple-600 to-pink-500">
|
|
333
|
+
<div className="container mx-auto text-center text-white">
|
|
334
|
+
<h1 className="text-5xl font-bold mb-4">Welcome to Our Platform</h1>
|
|
335
|
+
<p className="text-xl mb-8">The best solution for your needs</p>
|
|
336
|
+
<button className="bg-white text-purple-600 rounded-full px-8 py-3">
|
|
337
|
+
Get Started
|
|
338
|
+
</button>
|
|
339
|
+
</div>
|
|
340
|
+
</section>
|
|
341
|
+
/* Seen this exact layout on 10,000 websites */
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### Glassmorphism Everywhere
|
|
345
|
+
|
|
346
|
+
```css
|
|
347
|
+
/* VIOLATION: Blur background without purpose */
|
|
348
|
+
.card {
|
|
349
|
+
background: rgba(255, 255, 255, 0.2);
|
|
350
|
+
backdrop-filter: blur(10px);
|
|
351
|
+
border: 1px solid rgba(255, 255, 255, 0.3);
|
|
352
|
+
}
|
|
353
|
+
.modal {
|
|
354
|
+
background: rgba(255, 255, 255, 0.15);
|
|
355
|
+
backdrop-filter: blur(20px);
|
|
356
|
+
}
|
|
357
|
+
.nav {
|
|
358
|
+
background: rgba(255, 255, 255, 0.1);
|
|
359
|
+
backdrop-filter: blur(8px);
|
|
360
|
+
}
|
|
361
|
+
/* Glass effect is a choice, not a default */
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
### Trend-Following Patterns
|
|
365
|
+
|
|
366
|
+
```css
|
|
367
|
+
/* VIOLATION: Bento grid because it's trendy */
|
|
368
|
+
.features {
|
|
369
|
+
display: grid;
|
|
370
|
+
grid-template-columns: repeat(4, 1fr);
|
|
371
|
+
grid-template-rows: repeat(2, 1fr);
|
|
372
|
+
}
|
|
373
|
+
.feature-1 { grid-column: span 2; grid-row: span 2; }
|
|
374
|
+
.feature-2 { grid-column: span 2; }
|
|
375
|
+
/* Does this layout serve the content or is it just "cool"? */
|
|
376
|
+
|
|
377
|
+
/* VIOLATION: Scroll-triggered animations on everything */
|
|
378
|
+
.section {
|
|
379
|
+
opacity: 0;
|
|
380
|
+
transform: translateY(50px);
|
|
381
|
+
}
|
|
382
|
+
.section.visible {
|
|
383
|
+
opacity: 1;
|
|
384
|
+
transform: translateY(0);
|
|
385
|
+
transition: all 0.6s ease;
|
|
386
|
+
}
|
|
387
|
+
/* Slows down content consumption */
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
---
|
|
391
|
+
|
|
392
|
+
## Responsive Violations
|
|
393
|
+
|
|
394
|
+
### Afterthought Mobile
|
|
395
|
+
|
|
396
|
+
```css
|
|
397
|
+
/* VIOLATION: Desktop-first with broken mobile */
|
|
398
|
+
.sidebar { width: 300px; }
|
|
399
|
+
.content { margin-left: 300px; }
|
|
400
|
+
|
|
401
|
+
@media (max-width: 768px) {
|
|
402
|
+
.sidebar { display: none; } /* Just hide everything */
|
|
403
|
+
.content { margin-left: 0; }
|
|
404
|
+
}
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
### Breakpoint Chaos
|
|
408
|
+
|
|
409
|
+
```css
|
|
410
|
+
/* VIOLATION: Inconsistent breakpoints */
|
|
411
|
+
@media (max-width: 1200px) { ... }
|
|
412
|
+
@media (max-width: 992px) { ... }
|
|
413
|
+
@media (max-width: 768px) { ... }
|
|
414
|
+
@media (max-width: 576px) { ... }
|
|
415
|
+
@media (max-width: 480px) { ... }
|
|
416
|
+
@media (max-width: 375px) { ... }
|
|
417
|
+
/* Too many breakpoints, impossible to reason about */
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
---
|
|
421
|
+
|
|
422
|
+
## Dark Mode Violations (Extended)
|
|
423
|
+
|
|
424
|
+
### Contrast Inversions
|
|
425
|
+
|
|
426
|
+
```css
|
|
427
|
+
/* VIOLATION: Colors that work in light don't work in dark */
|
|
428
|
+
:root {
|
|
429
|
+
--primary: #0066cc;
|
|
430
|
+
}
|
|
431
|
+
.dark {
|
|
432
|
+
/* Same blue on dark background - poor contrast */
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
/* VIOLATION: Shadows become invisible */
|
|
436
|
+
.card {
|
|
437
|
+
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
|
|
438
|
+
}
|
|
439
|
+
.dark .card {
|
|
440
|
+
/* Same shadow on dark background - invisible */
|
|
441
|
+
}
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
### Inconsistent Dark Surfaces
|
|
445
|
+
|
|
446
|
+
```css
|
|
447
|
+
/* VIOLATION: Random dark grays */
|
|
448
|
+
.dark .bg-1 { background: #1a1a1a; }
|
|
449
|
+
.dark .bg-2 { background: #2d2d2d; }
|
|
450
|
+
.dark .bg-3 { background: #333333; }
|
|
451
|
+
.dark .bg-4 { background: #3d3d3d; }
|
|
452
|
+
/* No intentional hierarchy */
|
|
453
|
+
```
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: implementation-patterns
|
|
3
|
+
description: This skill should be used when the user asks to "create an API endpoint", "add CRUD operations", "implement event handlers", "set up logging", "add configuration", or builds features involving database operations, REST/GraphQL APIs, pub/sub patterns, or service configuration. Provides implementation patterns that follow existing codebase conventions.
|
|
4
|
+
user-invocable: false
|
|
5
|
+
allowed-tools: Read, Grep, Glob
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Implementation Patterns
|
|
9
|
+
|
|
10
|
+
Reference for common implementation patterns. Use these patterns to write consistent, maintainable code.
|
|
11
|
+
|
|
12
|
+
## Iron Law
|
|
13
|
+
|
|
14
|
+
> **FOLLOW EXISTING PATTERNS**
|
|
15
|
+
>
|
|
16
|
+
> Match the codebase style, don't invent new conventions. If the project uses Result types,
|
|
17
|
+
> use Result types. If it uses exceptions, use exceptions. Consistency trumps personal
|
|
18
|
+
> preference. The best pattern is the one already in use.
|
|
19
|
+
|
|
20
|
+
## When This Skill Activates
|
|
21
|
+
|
|
22
|
+
- Implementing CRUD operations
|
|
23
|
+
- Creating API endpoints
|
|
24
|
+
- Writing event handlers
|
|
25
|
+
- Setting up configuration
|
|
26
|
+
- Adding logging
|
|
27
|
+
- Database operations
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Pattern Categories
|
|
32
|
+
|
|
33
|
+
### CRUD Operations
|
|
34
|
+
|
|
35
|
+
Create, Read, Update, Delete with Result types and proper error handling.
|
|
36
|
+
|
|
37
|
+
**Core pattern**: Validate -> Transform -> Persist -> Return
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
async function createUser(input: CreateUserInput): Promise<Result<User, CreateError>> {
|
|
41
|
+
const validated = validateCreateUser(input);
|
|
42
|
+
if (!validated.ok) return Err({ type: 'validation', details: validated.error });
|
|
43
|
+
|
|
44
|
+
const user: User = { id: generateId(), ...validated.value, createdAt: new Date() };
|
|
45
|
+
const saved = await userRepository.save(user);
|
|
46
|
+
if (!saved.ok) return Err({ type: 'persistence', details: saved.error });
|
|
47
|
+
|
|
48
|
+
return Ok(saved.value);
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### API Endpoints
|
|
53
|
+
|
|
54
|
+
REST endpoint structure with auth, validation, and error mapping.
|
|
55
|
+
|
|
56
|
+
**Core pattern**: Parse request -> Validate auth -> Execute -> Format response
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
export async function handleGetUser(req: Request): Promise<Response> {
|
|
60
|
+
const id = parsePathParam(req, 'id');
|
|
61
|
+
if (!id.ok) return errorResponse(400, 'Invalid user ID');
|
|
62
|
+
|
|
63
|
+
const auth = await authenticate(req);
|
|
64
|
+
if (!auth.ok) return errorResponse(401, 'Unauthorized');
|
|
65
|
+
|
|
66
|
+
const result = await getUser(id.value);
|
|
67
|
+
if (!result.ok) return handleError(result.error);
|
|
68
|
+
|
|
69
|
+
return jsonResponse(200, result.value);
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Event Handlers
|
|
74
|
+
|
|
75
|
+
Async event processing with idempotency and error recovery.
|
|
76
|
+
|
|
77
|
+
**Core pattern**: Validate event -> Process -> Handle errors -> Acknowledge
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
async function handleUserCreated(event: UserCreatedEvent): Promise<void> {
|
|
81
|
+
const validated = validateEvent(event);
|
|
82
|
+
if (!validated.ok) { logger.warn('Invalid event'); return; }
|
|
83
|
+
|
|
84
|
+
await sendWelcomeEmail(event.userId);
|
|
85
|
+
await createDefaultSettings(event.userId);
|
|
86
|
+
logger.info('Event processed successfully');
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Configuration
|
|
91
|
+
|
|
92
|
+
Environment config with schema validation and feature flags.
|
|
93
|
+
|
|
94
|
+
**Core pattern**: Define schema -> Load from env -> Validate -> Export frozen
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
const ConfigSchema = z.object({
|
|
98
|
+
PORT: z.coerce.number().default(3000),
|
|
99
|
+
DATABASE_URL: z.string().url(),
|
|
100
|
+
NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
export const config = Object.freeze(ConfigSchema.parse(process.env));
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Logging
|
|
107
|
+
|
|
108
|
+
Structured logging with context propagation and operation tracking.
|
|
109
|
+
|
|
110
|
+
**Core pattern**: Context -> Level -> Message -> Data
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
const logger = createLogger({ requestId: req.id, userId: user.id });
|
|
114
|
+
logger.info('Processing order', { orderId: order.id, items: order.items.length });
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Anti-Patterns to Avoid
|
|
120
|
+
|
|
121
|
+
| Anti-Pattern | Problem | Fix |
|
|
122
|
+
|--------------|---------|-----|
|
|
123
|
+
| God functions | 500-line functions doing everything | Compose small, focused functions |
|
|
124
|
+
| Implicit dependencies | Using global state (`db.query(...)`) | Inject dependencies explicitly |
|
|
125
|
+
| Swallowing errors | Empty catch blocks | Handle or propagate with Result types |
|
|
126
|
+
| Magic values | Unexplained numbers/strings | Extract to named constants |
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Build Optimization
|
|
131
|
+
|
|
132
|
+
Production builds must exclude test files, debug artifacts, and sourcemaps.
|
|
133
|
+
|
|
134
|
+
```json
|
|
135
|
+
// tsconfig.prod.json
|
|
136
|
+
{
|
|
137
|
+
"exclude": ["**/*.test.ts", "**/*.spec.ts", "**/tests/**"]
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Implementation Checklist
|
|
144
|
+
|
|
145
|
+
Before implementing, verify:
|
|
146
|
+
|
|
147
|
+
- [ ] Using Result types for operations that can fail
|
|
148
|
+
- [ ] Validating input at system boundaries
|
|
149
|
+
- [ ] Logging with context (requestId, userId, operation)
|
|
150
|
+
- [ ] Handling all error cases explicitly
|
|
151
|
+
- [ ] Making operations idempotent where possible
|
|
152
|
+
- [ ] Using transactions for multi-step operations
|
|
153
|
+
- [ ] No hardcoded values (use config)
|
|
154
|
+
- [ ] Following existing codebase patterns
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Extended References
|
|
159
|
+
|
|
160
|
+
For full implementation examples:
|
|
161
|
+
- `references/violations.md` - Extended violation examples (CRUD, API, Events, Config, Logging)
|
|
162
|
+
- `references/patterns.md` - Extended correct patterns (CRUD, API, Events, Config, Logging)
|