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,369 @@
|
|
|
1
|
+
# Extended Violation Examples
|
|
2
|
+
|
|
3
|
+
Additional code smell patterns and violations beyond the core examples in SKILL.md.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Result Types - Extended Violations
|
|
8
|
+
|
|
9
|
+
### Try/Catch in Business Logic
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
// VIOLATION: Try/catch in business logic
|
|
13
|
+
function calculate(items: Item[]): number {
|
|
14
|
+
try {
|
|
15
|
+
return items.reduce((sum, i) => sum + i.price, 0);
|
|
16
|
+
} catch {
|
|
17
|
+
return 0; // Silent failure - BAD
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// VIOLATION: Nested try/catch
|
|
22
|
+
async function processOrder(id: string): Promise<Order> {
|
|
23
|
+
try {
|
|
24
|
+
const order = await fetchOrder(id);
|
|
25
|
+
try {
|
|
26
|
+
await validateOrder(order);
|
|
27
|
+
} catch {
|
|
28
|
+
// Swallowed validation error
|
|
29
|
+
}
|
|
30
|
+
return order;
|
|
31
|
+
} catch {
|
|
32
|
+
return null; // Silent failure
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// VIOLATION: Error type erasure
|
|
37
|
+
function parseConfig(raw: string): Config {
|
|
38
|
+
try {
|
|
39
|
+
return JSON.parse(raw);
|
|
40
|
+
} catch (e) {
|
|
41
|
+
throw new Error('Parse failed'); // Lost original error context
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Implicit Error States
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
// VIOLATION: Using null/undefined for errors
|
|
50
|
+
function findUser(id: string): User | null {
|
|
51
|
+
// Caller can't distinguish "not found" from "error occurred"
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// VIOLATION: Using sentinel values
|
|
56
|
+
function calculateDiscount(userId: string): number {
|
|
57
|
+
// Returns -1 for errors - magic value
|
|
58
|
+
if (!userId) return -1;
|
|
59
|
+
return computeDiscount(userId);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// VIOLATION: Throwing in async without Result
|
|
63
|
+
async function fetchData(url: string): Promise<Data> {
|
|
64
|
+
const response = await fetch(url);
|
|
65
|
+
if (!response.ok) {
|
|
66
|
+
throw new Error('Fetch failed'); // Should return Result
|
|
67
|
+
}
|
|
68
|
+
return response.json();
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Dependency Injection - Extended Violations
|
|
75
|
+
|
|
76
|
+
### Hidden Dependencies
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
// VIOLATION: Hidden dependencies via imports
|
|
80
|
+
import { config } from './config'; // Global config
|
|
81
|
+
import { analytics } from './analytics'; // Global analytics
|
|
82
|
+
|
|
83
|
+
class UserService {
|
|
84
|
+
createUser(data: UserData) {
|
|
85
|
+
// Uses global config - can't test with different config
|
|
86
|
+
if (config.features.requireEmailVerification) {
|
|
87
|
+
// ...
|
|
88
|
+
}
|
|
89
|
+
// Uses global analytics - can't mock in tests
|
|
90
|
+
analytics.track('user_created', data);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// VIOLATION: Static method dependencies
|
|
95
|
+
class OrderService {
|
|
96
|
+
processOrder(order: Order) {
|
|
97
|
+
// Can't mock static methods
|
|
98
|
+
const tax = TaxCalculator.calculate(order.total);
|
|
99
|
+
const shipping = ShippingService.getRate(order.address);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// VIOLATION: Service locator anti-pattern
|
|
104
|
+
class PaymentService {
|
|
105
|
+
process(payment: Payment) {
|
|
106
|
+
// Runtime dependency resolution - untestable
|
|
107
|
+
const gateway = ServiceLocator.resolve<PaymentGateway>('paymentGateway');
|
|
108
|
+
return gateway.charge(payment);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Partial Injection
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
// VIOLATION: Some dependencies injected, others not
|
|
117
|
+
class ReportService {
|
|
118
|
+
constructor(private db: Database) {} // Injected
|
|
119
|
+
|
|
120
|
+
generate(reportId: string) {
|
|
121
|
+
const data = this.db.query(reportId);
|
|
122
|
+
// But logger is global
|
|
123
|
+
logger.info('Report generated'); // BAD
|
|
124
|
+
// And config is imported
|
|
125
|
+
if (config.features.pdfExport) { // BAD
|
|
126
|
+
// ...
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Immutability - Extended Violations
|
|
135
|
+
|
|
136
|
+
### Array Mutations
|
|
137
|
+
|
|
138
|
+
```typescript
|
|
139
|
+
// VIOLATION: In-place array modifications
|
|
140
|
+
function processItems(items: Item[]): Item[] {
|
|
141
|
+
items.push({ id: 'new' }); // BAD - mutates input
|
|
142
|
+
items.splice(0, 1); // BAD - mutates input
|
|
143
|
+
items.reverse(); // BAD - mutates in place
|
|
144
|
+
items.fill({ id: 'default' }); // BAD - mutates in place
|
|
145
|
+
return items;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// VIOLATION: Sorting without copy
|
|
149
|
+
function getSortedUsers(users: User[]): User[] {
|
|
150
|
+
return users.sort((a, b) => a.name.localeCompare(b.name)); // Mutates original!
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// VIOLATION: Using forEach for transformation
|
|
154
|
+
function transformItems(items: Item[]): Item[] {
|
|
155
|
+
items.forEach(item => {
|
|
156
|
+
item.processed = true; // BAD - mutation
|
|
157
|
+
});
|
|
158
|
+
return items;
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Object Mutations
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
// VIOLATION: Nested object mutation
|
|
166
|
+
function updateAddress(user: User, city: string): User {
|
|
167
|
+
user.address.city = city; // BAD - nested mutation
|
|
168
|
+
return user;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// VIOLATION: Object.assign mutating first argument
|
|
172
|
+
function mergeConfig(base: Config, overrides: Partial<Config>): Config {
|
|
173
|
+
return Object.assign(base, overrides); // BAD - mutates base
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// VIOLATION: Deleting properties
|
|
177
|
+
function removeField(obj: Record<string, unknown>, field: string) {
|
|
178
|
+
delete obj[field]; // BAD - mutation
|
|
179
|
+
return obj;
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Pure Functions - Extended Violations
|
|
186
|
+
|
|
187
|
+
### Side Effect Patterns
|
|
188
|
+
|
|
189
|
+
```typescript
|
|
190
|
+
// VIOLATION: Accessing global state
|
|
191
|
+
let counter = 0;
|
|
192
|
+
function getNextId(): string {
|
|
193
|
+
return `id-${counter++}`; // BAD - global state modification
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// VIOLATION: Date/time dependency
|
|
197
|
+
function isExpired(expiry: Date): boolean {
|
|
198
|
+
return new Date() > expiry; // BAD - depends on current time
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// VIOLATION: Random values
|
|
202
|
+
function generateToken(): string {
|
|
203
|
+
return Math.random().toString(36); // BAD - non-deterministic
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// VIOLATION: Environment access
|
|
207
|
+
function getApiUrl(): string {
|
|
208
|
+
return process.env.API_URL || 'http://localhost'; // BAD - env dependency
|
|
209
|
+
}
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Hidden I/O
|
|
213
|
+
|
|
214
|
+
```typescript
|
|
215
|
+
// VIOLATION: Caching with side effects
|
|
216
|
+
const cache = new Map();
|
|
217
|
+
function expensiveCalculation(input: string): number {
|
|
218
|
+
if (cache.has(input)) return cache.get(input); // BAD - reads global state
|
|
219
|
+
const result = compute(input);
|
|
220
|
+
cache.set(input, result); // BAD - writes global state
|
|
221
|
+
return result;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// VIOLATION: Lazy initialization
|
|
225
|
+
let initialized = false;
|
|
226
|
+
function ensureInitialized(): void {
|
|
227
|
+
if (!initialized) {
|
|
228
|
+
performSetup(); // BAD - side effect
|
|
229
|
+
initialized = true; // BAD - global state
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## Type Safety - Extended Violations
|
|
237
|
+
|
|
238
|
+
### Type Assertions Abuse
|
|
239
|
+
|
|
240
|
+
```typescript
|
|
241
|
+
// VIOLATION: Unsafe type assertion
|
|
242
|
+
const user = data as User; // No runtime check
|
|
243
|
+
|
|
244
|
+
// VIOLATION: Non-null assertion
|
|
245
|
+
const name = user!.profile!.name!; // Assumes non-null
|
|
246
|
+
|
|
247
|
+
// VIOLATION: Any escape hatch
|
|
248
|
+
function process(data: unknown) {
|
|
249
|
+
return (data as any).property.nested; // BAD
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
// VIOLATION: Type assertion to bypass checks
|
|
253
|
+
const items: Item[] = response.data as Item[]; // No validation
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### Incomplete Discrimination
|
|
257
|
+
|
|
258
|
+
```typescript
|
|
259
|
+
// VIOLATION: Default case hiding missing patterns
|
|
260
|
+
function handleEvent(event: Event): void {
|
|
261
|
+
switch (event.type) {
|
|
262
|
+
case 'click':
|
|
263
|
+
handleClick(event);
|
|
264
|
+
break;
|
|
265
|
+
default:
|
|
266
|
+
// Silently ignores new event types
|
|
267
|
+
break;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// VIOLATION: Using if/else instead of exhaustive switch
|
|
272
|
+
function getLabel(status: Status): string {
|
|
273
|
+
if (status === 'pending') return 'Waiting';
|
|
274
|
+
if (status === 'active') return 'Running';
|
|
275
|
+
return 'Unknown'; // BAD - misses new status types
|
|
276
|
+
}
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## Resource Cleanup - Extended Violations
|
|
282
|
+
|
|
283
|
+
### Connection Leaks
|
|
284
|
+
|
|
285
|
+
```typescript
|
|
286
|
+
// VIOLATION: Connection not released on error
|
|
287
|
+
async function queryDatabase(sql: string) {
|
|
288
|
+
const conn = await pool.getConnection();
|
|
289
|
+
const result = await conn.query(sql); // If this throws, connection leaks
|
|
290
|
+
conn.release();
|
|
291
|
+
return result;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
// VIOLATION: Stream not closed
|
|
295
|
+
function readFile(path: string) {
|
|
296
|
+
const stream = fs.createReadStream(path);
|
|
297
|
+
stream.on('data', chunk => process(chunk));
|
|
298
|
+
// No close handler - stream never closed on error
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
// VIOLATION: Subscription not unsubscribed
|
|
302
|
+
function setupListener(emitter: EventEmitter) {
|
|
303
|
+
emitter.on('event', handler);
|
|
304
|
+
// No cleanup - memory leak
|
|
305
|
+
}
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### Timer Leaks
|
|
309
|
+
|
|
310
|
+
```typescript
|
|
311
|
+
// VIOLATION: Interval not cleared
|
|
312
|
+
function startPolling() {
|
|
313
|
+
setInterval(() => {
|
|
314
|
+
fetchData();
|
|
315
|
+
}, 1000);
|
|
316
|
+
// No way to stop polling
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
// VIOLATION: Timeout not cleared on early exit
|
|
320
|
+
async function withTimeout(promise: Promise<unknown>, ms: number) {
|
|
321
|
+
const timeout = setTimeout(() => { throw new Error('Timeout'); }, ms);
|
|
322
|
+
const result = await promise; // If this resolves, timeout still pending
|
|
323
|
+
return result;
|
|
324
|
+
}
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## API Consistency - Extended Violations
|
|
330
|
+
|
|
331
|
+
### Mixed Error Handling
|
|
332
|
+
|
|
333
|
+
```typescript
|
|
334
|
+
// VIOLATION: Mixed error handling in same module
|
|
335
|
+
class UserRepository {
|
|
336
|
+
// Returns null for not found
|
|
337
|
+
findById(id: string): User | null { ... }
|
|
338
|
+
|
|
339
|
+
// Throws for not found
|
|
340
|
+
getById(id: string): User {
|
|
341
|
+
const user = this.findById(id);
|
|
342
|
+
if (!user) throw new NotFoundError(); // Inconsistent!
|
|
343
|
+
return user;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
// Returns Result
|
|
347
|
+
findByEmail(email: string): Result<User, Error> { ... } // Third pattern!
|
|
348
|
+
}
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
### Mixed Async Patterns
|
|
352
|
+
|
|
353
|
+
```typescript
|
|
354
|
+
// VIOLATION: Mixing callbacks and promises
|
|
355
|
+
function fetchUser(id: string, callback?: (err: Error, user: User) => void): Promise<User> {
|
|
356
|
+
const promise = api.get(`/users/${id}`);
|
|
357
|
+
if (callback) {
|
|
358
|
+
promise.then(user => callback(null, user)).catch(err => callback(err, null));
|
|
359
|
+
}
|
|
360
|
+
return promise;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
// VIOLATION: Fire-and-forget async
|
|
364
|
+
async function processOrder(order: Order) {
|
|
365
|
+
saveOrder(order); // Missing await - fire and forget
|
|
366
|
+
await sendEmail(order.email); // This one awaits
|
|
367
|
+
logAnalytics(order); // Missing await again
|
|
368
|
+
}
|
|
369
|
+
```
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docs-framework
|
|
3
|
+
description: This skill should be used when the user asks to "create a review report", "write a status log", "add documentation", "name this artifact", or creates files in the .docs/ directory. Provides naming conventions, templates, and directory structure for reviews, debug sessions, design docs, and all persistent DevFlow documentation artifacts.
|
|
4
|
+
user-invocable: false
|
|
5
|
+
allowed-tools: Read, Bash, Glob
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Documentation Framework
|
|
9
|
+
|
|
10
|
+
The canonical source for documentation conventions in DevFlow. All agents that persist artifacts must follow these standards.
|
|
11
|
+
|
|
12
|
+
## Iron Law
|
|
13
|
+
|
|
14
|
+
> **ALL ARTIFACTS FOLLOW NAMING CONVENTIONS**
|
|
15
|
+
>
|
|
16
|
+
> Timestamps are `YYYY-MM-DD_HHMM`. Branch slugs replace `/` with `-`. Topic slugs are
|
|
17
|
+
> lowercase alphanumeric with dashes. No exceptions. Inconsistent naming breaks tooling,
|
|
18
|
+
> searching, and automation. Follow the pattern or fix the pattern for everyone.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Directory Structure
|
|
23
|
+
|
|
24
|
+
All generated documentation lives under `.docs/` in the project root:
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
.docs/
|
|
28
|
+
├── reviews/{branch-slug}/ # Code review reports per branch
|
|
29
|
+
│ ├── {type}-report.{timestamp}.md
|
|
30
|
+
│ └── review-summary.{timestamp}.md
|
|
31
|
+
├── status/ # Development logs
|
|
32
|
+
│ ├── {timestamp}.md
|
|
33
|
+
│ ├── compact/{timestamp}.md
|
|
34
|
+
│ └── INDEX.md
|
|
35
|
+
├── swarm/ # Swarm operation state
|
|
36
|
+
│ ├── state.json
|
|
37
|
+
│ └── plans/
|
|
38
|
+
└── WORKING-MEMORY.md # Auto-maintained by Stop hook (overwritten)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Naming Conventions
|
|
44
|
+
|
|
45
|
+
### Timestamps
|
|
46
|
+
Format: `YYYY-MM-DD_HHMM` (sortable, readable)
|
|
47
|
+
```bash
|
|
48
|
+
TIMESTAMP=$(date +%Y-%m-%d_%H%M) # Example: 2025-12-26_1430
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Branch Slugs
|
|
52
|
+
Replace `/` with `-`, sanitize special characters:
|
|
53
|
+
```bash
|
|
54
|
+
BRANCH_SLUG=$(git branch --show-current 2>/dev/null | sed 's/\//-/g' || echo "standalone")
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Topic Slugs
|
|
58
|
+
Lowercase, dashes, alphanumeric only, max 50 chars:
|
|
59
|
+
```bash
|
|
60
|
+
TOPIC_SLUG=$(echo "$TOPIC" | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | sed 's/[^a-z0-9-]//g' | cut -c1-50)
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### File Naming Patterns
|
|
64
|
+
|
|
65
|
+
| Type | Pattern | Example |
|
|
66
|
+
|------|---------|---------|
|
|
67
|
+
| Special indexes | `UPPERCASE.md` | `WORKING-MEMORY.md`, `INDEX.md` |
|
|
68
|
+
| Reports | `{type}-report.{timestamp}.md` | `security-report.2025-12-26_1430.md` |
|
|
69
|
+
| Status logs | `{timestamp}.md` | `2025-12-26_1430.md` |
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Helper Functions
|
|
74
|
+
|
|
75
|
+
Source helpers for consistent naming:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
source .devflow/scripts/docs-helpers.sh 2>/dev/null || {
|
|
79
|
+
get_timestamp() { date +%Y-%m-%d_%H%M; }
|
|
80
|
+
get_branch_slug() { git branch --show-current 2>/dev/null | sed 's/\//-/g' || echo "standalone"; }
|
|
81
|
+
get_topic_slug() { echo "$1" | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | sed 's/[^a-z0-9-]//g' | cut -c1-50; }
|
|
82
|
+
ensure_docs_dir() { mkdir -p ".docs/$1"; }
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Agent Persistence Rules
|
|
89
|
+
|
|
90
|
+
### Agents That Persist Artifacts
|
|
91
|
+
|
|
92
|
+
| Agent | Output Location | Behavior |
|
|
93
|
+
|-------|-----------------|----------|
|
|
94
|
+
| Reviewer | `.docs/reviews/{branch-slug}/{type}-report.{timestamp}.md` | Creates new |
|
|
95
|
+
| Working Memory | `.docs/WORKING-MEMORY.md` | Overwrites (auto-maintained by Stop hook) |
|
|
96
|
+
|
|
97
|
+
### Agents That Don't Persist
|
|
98
|
+
|
|
99
|
+
- Git (fetch-issue: read-only, comment-pr: PR comments only)
|
|
100
|
+
- Coder (commits to git, no .docs/ output)
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Implementation Checklist
|
|
105
|
+
|
|
106
|
+
When creating or modifying persisting agents:
|
|
107
|
+
|
|
108
|
+
- [ ] Use standard timestamp format (`YYYY-MM-DD_HHMM`)
|
|
109
|
+
- [ ] Sanitize branch names (replace `/` with `-`)
|
|
110
|
+
- [ ] Sanitize topic names (lowercase, dashes, alphanumeric)
|
|
111
|
+
- [ ] Create directory with `mkdir -p .docs/{subdir}`
|
|
112
|
+
- [ ] Document output location in agent's final message
|
|
113
|
+
- [ ] Follow special file naming (UPPERCASE for indexes)
|
|
114
|
+
- [ ] Use helper functions when possible
|
|
115
|
+
- [ ] Update relevant index files
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Integration
|
|
120
|
+
|
|
121
|
+
This framework is used by:
|
|
122
|
+
- **Review agents**: Creates review reports
|
|
123
|
+
- **Working Memory hooks**: Auto-maintains `.docs/WORKING-MEMORY.md`
|
|
124
|
+
|
|
125
|
+
All persisting agents should load this skill to ensure consistent documentation.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Extended References
|
|
130
|
+
|
|
131
|
+
For detailed patterns and violation examples:
|
|
132
|
+
|
|
133
|
+
- **[patterns.md](./references/patterns.md)** - Full templates, helper functions, naming examples, edge cases
|
|
134
|
+
- **[violations.md](./references/violations.md)** - Common violations with detection patterns and fixes
|