devflow-kit 1.8.3 → 2.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 +183 -6
- package/LICENSE +1 -1
- package/README.md +139 -219
- package/dist/cli/agents-view/index.js +9 -0
- package/dist/cli/agents-view/render.js +310 -0
- package/dist/cli/agents-view/state.js +423 -0
- package/dist/cli/agents-view/terminal.js +179 -0
- package/dist/cli/commands/agents.js +585 -0
- package/dist/cli/commands/ambient.js +231 -0
- package/dist/cli/commands/capture.js +133 -0
- package/dist/cli/commands/compliance-prompts.js +174 -0
- package/dist/cli/commands/compliance.js +337 -0
- package/dist/cli/commands/context.js +66 -0
- package/dist/cli/commands/debug.js +122 -0
- package/dist/cli/commands/flags.js +119 -0
- package/dist/cli/commands/hud.js +229 -0
- package/dist/cli/commands/init-seed.js +226 -0
- package/dist/cli/commands/init.js +1786 -0
- package/dist/cli/commands/knowledge/index.js +25 -0
- package/dist/cli/commands/knowledge/list.js +115 -0
- package/dist/cli/commands/knowledge/toggle.js +84 -0
- package/dist/cli/commands/learning.js +311 -0
- package/dist/cli/commands/legacy-hooks.js +40 -0
- package/dist/cli/commands/memory.js +349 -0
- package/dist/cli/commands/proxy.js +1435 -0
- package/dist/cli/commands/rules.js +334 -0
- package/dist/cli/commands/safe-delete.js +140 -0
- package/dist/cli/commands/security.js +179 -0
- package/dist/cli/commands/skills.js +140 -0
- package/dist/cli/commands/uninstall.js +1214 -0
- package/dist/cli.js +35 -10
- package/dist/commands/bug-analysis.md +400 -0
- package/dist/commands/code-review.md +403 -0
- package/dist/commands/debug.md +282 -0
- package/dist/commands/dynamic-build.md +972 -0
- package/dist/commands/dynamic-plan.md +383 -0
- package/dist/commands/dynamic-profile.md +206 -0
- package/dist/commands/dynamic-tickets.md +583 -0
- package/dist/commands/explore.md +208 -0
- package/dist/commands/implement.md +590 -0
- package/dist/commands/plan.md +570 -0
- package/dist/commands/release.md +206 -0
- package/dist/commands/research.md +212 -0
- package/dist/commands/resolve.md +731 -0
- package/dist/commands/self-review.md +251 -0
- package/dist/core/agent-frontmatter.js +209 -0
- package/dist/core/agent-models.js +556 -0
- package/dist/core/agent-state.js +44 -0
- package/dist/core/assets.js +39 -0
- package/dist/core/cache.js +205 -0
- package/dist/core/codex-auth-inspect.js +128 -0
- package/dist/core/compliance-compose.js +458 -0
- package/dist/core/compliance.js +165 -0
- package/dist/core/external-models.js +76 -0
- package/dist/core/feature-config.js +125 -0
- package/dist/core/flags.js +309 -0
- package/dist/core/fs-atomic.js +74 -0
- package/dist/core/git.js +61 -0
- package/dist/core/learning-queue-cleanup.js +92 -0
- package/dist/core/learning-tuning-config.js +78 -0
- package/dist/core/manifest.js +171 -0
- package/dist/core/migrations.js +330 -0
- package/dist/core/model-discovery.js +655 -0
- package/dist/core/observation-io.js +50 -0
- package/dist/core/observations.js +109 -0
- package/dist/core/orphan-sweep.js +92 -0
- package/dist/core/paths.js +48 -0
- package/dist/core/plugins.js +525 -0
- package/dist/core/project-paths.js +159 -0
- package/dist/core/proxy-log.js +165 -0
- package/dist/core/proxy-state.js +305 -0
- package/dist/core/safe-delete-install.js +191 -0
- package/dist/core/teammate-mode-cleanup.js +33 -0
- package/dist/hud/colors.js +13 -2
- package/dist/hud/components/config-counts.js +2 -2
- package/dist/hud/components/context-usage.js +2 -2
- package/dist/hud/components/learning-counts.js +92 -0
- package/dist/hud/components/session-cost.js +10 -2
- package/dist/hud/components/usage-quota.js +43 -8
- package/dist/hud/components/version-badge.js +14 -4
- package/dist/hud/config.js +4 -2
- package/dist/hud/cost-history.js +281 -0
- package/dist/hud/git.js +112 -71
- package/dist/hud/index.js +47 -4
- package/dist/hud/render.js +8 -20
- package/dist/hud/transcript.js +5 -6
- package/dist/targets/claude-code/claude-paths.js +106 -0
- package/dist/targets/claude-code/compliance-install.js +305 -0
- package/dist/targets/claude-code/hooks.js +9 -0
- package/dist/targets/claude-code/installer.js +458 -0
- package/dist/targets/claude-code/legacy.js +239 -0
- package/dist/targets/claude-code/post-install.js +971 -0
- package/package.json +23 -17
- package/src/assets/agents/code.md +244 -0
- package/src/assets/agents/design.md +113 -0
- package/src/assets/agents/diagnose.md +210 -0
- package/src/assets/agents/evaluate.md +117 -0
- package/src/assets/agents/git.md +938 -0
- package/src/assets/agents/knowledge.md +89 -0
- package/src/assets/agents/learning.md +203 -0
- package/src/assets/agents/research.md +134 -0
- package/src/assets/agents/review.md +220 -0
- package/src/assets/agents/scrutinize.md +95 -0
- package/src/assets/agents/simplify.md +108 -0
- package/src/assets/agents/skim.md +136 -0
- package/src/assets/agents/synthesize.md +402 -0
- package/src/assets/agents/test.md +155 -0
- package/src/assets/agents/triage.md +141 -0
- package/src/assets/agents/validate.md +103 -0
- package/src/assets/commands/_partials/_compliance.mds +5 -0
- package/src/assets/commands/_partials/_decisions.mds +20 -0
- package/src/assets/commands/_partials/_engine.mds +244 -0
- package/src/assets/commands/_partials/_factory.mds +216 -0
- package/src/assets/commands/_partials/_knowledge.mds +95 -0
- package/src/assets/commands/_partials/_plan_contract.mds +51 -0
- package/src/assets/commands/_partials/_preamble.mds +82 -0
- package/src/assets/commands/_partials/_publication.mds +7 -0
- package/src/assets/commands/_partials/_roster.mds +31 -0
- package/src/assets/commands/_partials/_ticket_template.mds +59 -0
- package/src/assets/commands/_partials/_wave.mds +123 -0
- package/src/assets/commands/bug-analysis.mds +353 -0
- package/src/assets/commands/code-review.mds +355 -0
- package/src/assets/commands/debug.mds +224 -0
- package/src/assets/commands/dynamic-build.mds +534 -0
- package/src/assets/commands/dynamic-plan.mds +244 -0
- package/src/assets/commands/dynamic-profile.mds +132 -0
- package/src/assets/commands/dynamic-tickets.mds +226 -0
- package/src/assets/commands/explore.mds +150 -0
- package/src/assets/commands/implement.mds +496 -0
- package/src/assets/commands/plan.mds +523 -0
- package/src/assets/commands/release.md +206 -0
- package/src/assets/commands/research.mds +164 -0
- package/src/assets/commands/resolve.mds +636 -0
- package/src/assets/commands/self-review.mds +156 -0
- package/src/assets/rules/accessibility.md +11 -0
- package/src/assets/rules/compliance.md +15 -0
- package/src/assets/rules/engineering.md +13 -0
- package/src/assets/rules/go.md +12 -0
- package/src/assets/rules/java.md +12 -0
- package/src/assets/rules/python.md +12 -0
- package/src/assets/rules/quality.md +14 -0
- package/src/assets/rules/react.md +11 -0
- package/src/assets/rules/reliability.md +12 -0
- package/src/assets/rules/rust.md +12 -0
- package/src/assets/rules/security.md +12 -0
- package/src/assets/rules/typescript.md +12 -0
- package/src/assets/rules/ui-design.md +11 -0
- package/src/assets/scripts/hooks/assets/orchestrator-charter.md +21 -0
- package/src/assets/scripts/hooks/background-memory-update +460 -0
- package/src/assets/scripts/hooks/capture-prompt +87 -0
- package/src/assets/scripts/hooks/capture-question +153 -0
- package/src/assets/scripts/hooks/capture-turn +105 -0
- package/src/assets/scripts/hooks/debug-trace +75 -0
- package/src/assets/scripts/hooks/decisions-usage-scan.cjs +131 -0
- package/src/assets/scripts/hooks/ensure-devflow-init +39 -0
- package/src/assets/scripts/hooks/ensure-proxy +294 -0
- package/src/assets/scripts/hooks/ensure-root-gitignore +116 -0
- package/src/assets/scripts/hooks/get-mtime +23 -0
- package/src/assets/scripts/hooks/git-marker +16 -0
- package/src/assets/scripts/hooks/hook-bootstrap +25 -0
- package/src/assets/scripts/hooks/hook-log-init +41 -0
- package/src/assets/scripts/hooks/json-helper.cjs +725 -0
- package/src/assets/scripts/hooks/json-parse +243 -0
- package/src/assets/scripts/hooks/learning-lock +44 -0
- package/src/assets/scripts/hooks/lib/decisions-format.cjs +301 -0
- package/src/assets/scripts/hooks/lib/mkdir-lock.cjs +106 -0
- package/src/assets/scripts/hooks/lib/project-paths.cjs +230 -0
- package/src/assets/scripts/hooks/lib/render-decisions.cjs +398 -0
- package/src/assets/scripts/hooks/lib/safe-path.cjs +29 -0
- package/src/assets/scripts/hooks/log-paths +24 -0
- package/src/assets/scripts/hooks/memory-worker +101 -0
- package/src/assets/scripts/hooks/pre-compact-memory +126 -0
- package/src/assets/scripts/hooks/preamble +77 -0
- package/src/assets/scripts/hooks/queue-append +120 -0
- package/src/assets/scripts/hooks/resolve-project-root +37 -0
- package/src/assets/scripts/hooks/run-hook +31 -0
- package/src/assets/scripts/hooks/session-start-context +180 -0
- package/src/assets/scripts/hooks/session-start-memory +318 -0
- package/src/assets/scripts/hooks/session-start-orchestrator +54 -0
- package/src/assets/scripts/hud.sh +5 -0
- package/src/assets/scripts/redact-secrets.cjs +410 -0
- package/src/assets/skills/accessibility/SKILL.md +145 -0
- package/src/assets/skills/accessibility/references/patterns.md +398 -0
- package/src/assets/skills/accessibility/references/sources.md +26 -0
- package/src/assets/skills/accessibility/references/violations.md +358 -0
- package/src/assets/skills/apply-decisions/SKILL.md +100 -0
- package/src/assets/skills/apply-feature-knowledge/SKILL.md +69 -0
- package/src/assets/skills/architecture/SKILL.md +138 -0
- package/src/assets/skills/architecture/references/patterns.md +378 -0
- package/src/assets/skills/architecture/references/sources.md +41 -0
- package/src/assets/skills/architecture/references/violations.md +314 -0
- package/src/assets/skills/boundary-validation/SKILL.md +119 -0
- package/src/assets/skills/boundary-validation/references/detection.md +283 -0
- package/src/assets/skills/boundary-validation/references/patterns.md +283 -0
- package/src/assets/skills/boundary-validation/references/sources.md +41 -0
- package/src/assets/skills/boundary-validation/references/violations.md +211 -0
- package/src/assets/skills/complexity/SKILL.md +150 -0
- package/src/assets/skills/compliance/SKILL.md +121 -0
- package/src/assets/skills/compliance/frameworks/gdpr/fragment.md +11 -0
- package/src/assets/skills/compliance/frameworks/gdpr/reference.md +50 -0
- package/src/assets/skills/compliance/frameworks/hipaa/fragment.md +11 -0
- package/src/assets/skills/compliance/frameworks/hipaa/reference.md +44 -0
- package/src/assets/skills/compliance/frameworks/iso-27001/fragment.md +10 -0
- package/src/assets/skills/compliance/frameworks/iso-27001/reference.md +45 -0
- package/src/assets/skills/compliance/frameworks/pci-dss/fragment.md +11 -0
- package/src/assets/skills/compliance/frameworks/pci-dss/reference.md +55 -0
- package/src/assets/skills/compliance/frameworks/soc2/fragment.md +10 -0
- package/src/assets/skills/compliance/frameworks/soc2/reference.md +53 -0
- package/src/assets/skills/compliance/frameworks/sox/fragment.md +10 -0
- package/src/assets/skills/compliance/frameworks/sox/reference.md +67 -0
- package/src/assets/skills/compliance/references/detection.md +108 -0
- package/src/assets/skills/compliance/references/sources.md +28 -0
- package/src/assets/skills/consistency/SKILL.md +140 -0
- package/src/assets/skills/database/SKILL.md +134 -0
- package/src/assets/skills/dependencies/SKILL.md +141 -0
- package/src/assets/skills/dependency-research/SKILL.md +133 -0
- package/src/assets/skills/dependency-research/references/evaluation-criteria.md +101 -0
- package/src/assets/skills/design-review/SKILL.md +155 -0
- package/src/assets/skills/design-review/references/anti-patterns.md +207 -0
- package/src/assets/skills/docs-framework/SKILL.md +190 -0
- package/src/assets/skills/docs-framework/references/patterns.md +381 -0
- package/src/assets/skills/docs-framework/references/violations.md +221 -0
- package/src/assets/skills/documentation/SKILL.md +126 -0
- package/src/assets/skills/feature-knowledge/SKILL.md +341 -0
- package/src/assets/skills/gap-analysis/SKILL.md +151 -0
- package/src/assets/skills/gap-analysis/references/check-layers.md +125 -0
- package/src/assets/skills/git/SKILL.md +287 -0
- package/src/assets/skills/git/references/github-api.md +666 -0
- package/src/assets/skills/git/references/patterns.md +324 -0
- package/src/assets/skills/git/references/sources.md +16 -0
- package/src/assets/skills/git/references/violations.md +128 -0
- package/src/assets/skills/go/SKILL.md +147 -0
- package/src/assets/skills/go/references/concurrency.md +335 -0
- package/src/assets/skills/go/references/patterns.md +278 -0
- package/src/assets/skills/go/references/sources.md +41 -0
- package/src/assets/skills/go/references/violations.md +262 -0
- package/src/assets/skills/java/SKILL.md +148 -0
- package/src/assets/skills/java/references/modern-java.md +335 -0
- package/src/assets/skills/java/references/patterns.md +311 -0
- package/src/assets/skills/java/references/sources.md +44 -0
- package/src/assets/skills/java/references/violations.md +257 -0
- package/src/assets/skills/patterns/SKILL.md +162 -0
- package/src/assets/skills/performance/SKILL.md +135 -0
- package/src/assets/skills/performance/references/patterns.md +516 -0
- package/src/assets/skills/performance/references/sources.md +41 -0
- package/src/assets/skills/performance/references/violations.md +417 -0
- package/src/assets/skills/python/SKILL.md +156 -0
- package/src/assets/skills/python/references/async.md +255 -0
- package/src/assets/skills/python/references/patterns.md +280 -0
- package/src/assets/skills/python/references/sources.md +41 -0
- package/src/assets/skills/python/references/violations.md +272 -0
- package/src/assets/skills/qa/SKILL.md +136 -0
- package/src/assets/skills/qa/references/browser-testing.md +97 -0
- package/src/assets/skills/qa/references/patterns.md +118 -0
- package/src/assets/skills/qa/references/scenario-templates.md +102 -0
- package/src/assets/skills/qa/references/sources.md +30 -0
- package/src/assets/skills/qa/references/violations.md +98 -0
- package/src/assets/skills/quality-gates/SKILL.md +152 -0
- package/src/assets/skills/quality-gates/references/stub-detection.md +135 -0
- package/src/assets/skills/react/SKILL.md +143 -0
- package/src/assets/skills/react/references/error-handling.md +179 -0
- package/src/assets/skills/react/references/forms.md +214 -0
- package/src/assets/skills/react/references/hooks.md +193 -0
- package/src/assets/skills/react/references/patterns.md +1336 -0
- package/src/assets/skills/react/references/sources.md +35 -0
- package/src/assets/skills/react/references/violations.md +570 -0
- package/src/assets/skills/regression/SKILL.md +146 -0
- package/src/assets/skills/reliability/SKILL.md +153 -0
- package/src/assets/skills/reliability/references/detection.md +66 -0
- package/src/assets/skills/reliability/references/patterns.md +151 -0
- package/src/assets/skills/reliability/references/sources.md +27 -0
- package/src/assets/skills/reliability/references/violations.md +125 -0
- package/src/assets/skills/research-codebase/SKILL.md +135 -0
- package/src/assets/skills/research-competitor/SKILL.md +145 -0
- package/src/assets/skills/research-external/SKILL.md +141 -0
- package/src/assets/skills/research-market/SKILL.md +145 -0
- package/src/assets/skills/research-technology/SKILL.md +180 -0
- package/src/assets/skills/review-methodology/SKILL.md +121 -0
- package/src/assets/skills/review-methodology/references/patterns.md +186 -0
- package/src/assets/skills/review-methodology/references/report-template.md +142 -0
- package/src/assets/skills/review-methodology/references/violations.md +125 -0
- package/src/assets/skills/rust/SKILL.md +148 -0
- package/src/assets/skills/rust/references/ownership.md +278 -0
- package/src/assets/skills/rust/references/patterns.md +247 -0
- package/src/assets/skills/rust/references/sources.md +46 -0
- package/src/assets/skills/rust/references/violations.md +252 -0
- package/src/assets/skills/security/SKILL.md +121 -0
- package/src/assets/skills/security/references/patterns.md +271 -0
- package/src/assets/skills/security/references/sources.md +41 -0
- package/src/assets/skills/security/references/violations.md +241 -0
- package/src/assets/skills/software-design/SKILL.md +143 -0
- package/src/assets/skills/software-design/references/checklist.md +259 -0
- package/src/assets/skills/software-design/references/code-smell-violations.md +189 -0
- package/src/assets/skills/software-design/references/patterns.md +359 -0
- package/src/assets/skills/software-design/references/sources.md +41 -0
- package/src/assets/skills/software-design/references/violations.md +341 -0
- package/src/assets/skills/test-driven-development/SKILL.md +197 -0
- package/src/assets/skills/testing/SKILL.md +139 -0
- package/src/assets/skills/testing/references/patterns.md +346 -0
- package/src/assets/skills/testing/references/sources.md +53 -0
- package/src/assets/skills/testing/references/violations.md +322 -0
- package/src/assets/skills/typescript/SKILL.md +150 -0
- package/src/assets/skills/typescript/references/async.md +333 -0
- package/src/assets/skills/typescript/references/patterns.md +440 -0
- package/src/assets/skills/typescript/references/sources.md +41 -0
- package/src/assets/skills/typescript/references/type-guards.md +333 -0
- package/src/assets/skills/typescript/references/utility-types.md +255 -0
- package/src/assets/skills/typescript/references/violations.md +285 -0
- package/src/assets/skills/ui-design/SKILL.md +144 -0
- package/src/assets/skills/ui-design/references/patterns.md +341 -0
- package/src/assets/skills/ui-design/references/sources.md +41 -0
- package/src/assets/skills/ui-design/references/violations.md +312 -0
- package/src/assets/skills/worktree-support/SKILL.md +92 -0
- package/src/targets/claude-code/templates/claudeignore.template +188 -0
- package/src/targets/claude-code/templates/settings.json +86 -0
- package/dist/cli.d.ts +0 -3
- package/dist/commands/ambient.d.ts +0 -18
- package/dist/commands/ambient.js +0 -137
- package/dist/commands/hud.d.ts +0 -22
- package/dist/commands/hud.js +0 -180
- package/dist/commands/init.d.ts +0 -16
- package/dist/commands/init.js +0 -738
- package/dist/commands/list.d.ts +0 -24
- package/dist/commands/list.js +0 -89
- package/dist/commands/memory.d.ts +0 -22
- package/dist/commands/memory.js +0 -175
- package/dist/commands/skills.d.ts +0 -11
- package/dist/commands/skills.js +0 -116
- package/dist/commands/uninstall.d.ts +0 -22
- package/dist/commands/uninstall.js +0 -558
- package/dist/hud/cache.d.ts +0 -14
- package/dist/hud/cache.js +0 -54
- package/dist/hud/colors.d.ts +0 -23
- package/dist/hud/components/config-counts.d.ts +0 -8
- package/dist/hud/components/context-usage.d.ts +0 -8
- package/dist/hud/components/diff-stats.d.ts +0 -3
- package/dist/hud/components/directory.d.ts +0 -3
- package/dist/hud/components/git-ahead-behind.d.ts +0 -3
- package/dist/hud/components/git-branch.d.ts +0 -3
- package/dist/hud/components/model.d.ts +0 -3
- package/dist/hud/components/release-info.d.ts +0 -3
- package/dist/hud/components/session-cost.d.ts +0 -3
- package/dist/hud/components/session-duration.d.ts +0 -3
- package/dist/hud/components/todo-progress.d.ts +0 -3
- package/dist/hud/components/usage-quota.d.ts +0 -3
- package/dist/hud/components/version-badge.d.ts +0 -3
- package/dist/hud/components/worktree-count.d.ts +0 -3
- package/dist/hud/config.d.ts +0 -10
- package/dist/hud/credentials.d.ts +0 -17
- package/dist/hud/credentials.js +0 -99
- package/dist/hud/git.d.ts +0 -7
- package/dist/hud/index.d.ts +0 -2
- package/dist/hud/render.d.ts +0 -7
- package/dist/hud/stdin.d.ts +0 -6
- package/dist/hud/transcript.d.ts +0 -7
- package/dist/hud/types.d.ts +0 -116
- package/dist/hud/usage-api.d.ts +0 -7
- package/dist/hud/usage-api.js +0 -84
- package/dist/plugins.d.ts +0 -46
- package/dist/plugins.js +0 -233
- package/dist/utils/cli.d.ts +0 -5
- package/dist/utils/cli.js +0 -14
- package/dist/utils/git.d.ts +0 -11
- package/dist/utils/git.js +0 -36
- package/dist/utils/installer.d.ts +0 -41
- package/dist/utils/installer.js +0 -195
- package/dist/utils/manifest.d.ts +0 -46
- package/dist/utils/manifest.js +0 -100
- package/dist/utils/paths.d.ts +0 -42
- package/dist/utils/paths.js +0 -106
- package/dist/utils/post-install.d.ts +0 -87
- package/dist/utils/post-install.js +0 -546
- package/dist/utils/safe-delete-install.d.ts +0 -29
- package/dist/utils/safe-delete-install.js +0 -191
- package/dist/utils/safe-delete.d.ts +0 -12
- package/plugins/devflow-accessibility/.claude-plugin/plugin.json +0 -21
- package/plugins/devflow-accessibility/skills/accessibility/SKILL.md +0 -229
- package/plugins/devflow-accessibility/skills/accessibility/references/patterns.md +0 -670
- package/plugins/devflow-accessibility/skills/accessibility/references/violations.md +0 -419
- package/plugins/devflow-ambient/.claude-plugin/plugin.json +0 -33
- package/plugins/devflow-ambient/README.md +0 -68
- package/plugins/devflow-ambient/agents/coder.md +0 -135
- package/plugins/devflow-ambient/agents/reviewer.md +0 -165
- package/plugins/devflow-ambient/agents/scrutinizer.md +0 -82
- package/plugins/devflow-ambient/agents/shepherd.md +0 -108
- package/plugins/devflow-ambient/agents/simplifier.md +0 -102
- package/plugins/devflow-ambient/agents/skimmer.md +0 -143
- package/plugins/devflow-ambient/agents/validator.md +0 -86
- package/plugins/devflow-ambient/skills/ambient-router/SKILL.md +0 -145
- package/plugins/devflow-ambient/skills/ambient-router/references/skill-catalog.md +0 -74
- package/plugins/devflow-ambient/skills/debug-orchestration/SKILL.md +0 -69
- package/plugins/devflow-ambient/skills/implementation-orchestration/SKILL.md +0 -92
- package/plugins/devflow-ambient/skills/plan-orchestration/SKILL.md +0 -71
- package/plugins/devflow-audit-claude/.claude-plugin/plugin.json +0 -19
- package/plugins/devflow-audit-claude/README.md +0 -46
- package/plugins/devflow-audit-claude/agents/claude-md-auditor.md +0 -134
- package/plugins/devflow-audit-claude/commands/audit-claude.md +0 -89
- package/plugins/devflow-code-review/.claude-plugin/plugin.json +0 -38
- package/plugins/devflow-code-review/README.md +0 -73
- package/plugins/devflow-code-review/agents/git.md +0 -277
- package/plugins/devflow-code-review/agents/reviewer.md +0 -165
- package/plugins/devflow-code-review/agents/synthesizer.md +0 -211
- package/plugins/devflow-code-review/commands/code-review-teams.md +0 -285
- package/plugins/devflow-code-review/commands/code-review.md +0 -163
- package/plugins/devflow-code-review/skills/agent-teams/SKILL.md +0 -124
- package/plugins/devflow-code-review/skills/agent-teams/references/cleanup.md +0 -104
- package/plugins/devflow-code-review/skills/agent-teams/references/communication.md +0 -122
- package/plugins/devflow-code-review/skills/agent-teams/references/team-patterns.md +0 -217
- package/plugins/devflow-code-review/skills/architecture-patterns/SKILL.md +0 -153
- package/plugins/devflow-code-review/skills/architecture-patterns/references/patterns.md +0 -873
- package/plugins/devflow-code-review/skills/architecture-patterns/references/violations.md +0 -575
- package/plugins/devflow-code-review/skills/complexity-patterns/SKILL.md +0 -143
- package/plugins/devflow-code-review/skills/consistency-patterns/SKILL.md +0 -140
- package/plugins/devflow-code-review/skills/database-patterns/SKILL.md +0 -134
- package/plugins/devflow-code-review/skills/dependencies-patterns/SKILL.md +0 -141
- package/plugins/devflow-code-review/skills/documentation-patterns/SKILL.md +0 -125
- package/plugins/devflow-code-review/skills/knowledge-persistence/SKILL.md +0 -128
- package/plugins/devflow-code-review/skills/knowledge-persistence/references/examples.md +0 -44
- package/plugins/devflow-code-review/skills/performance-patterns/SKILL.md +0 -154
- package/plugins/devflow-code-review/skills/performance-patterns/references/patterns.md +0 -503
- package/plugins/devflow-code-review/skills/performance-patterns/references/violations.md +0 -354
- package/plugins/devflow-code-review/skills/regression-patterns/SKILL.md +0 -146
- package/plugins/devflow-code-review/skills/review-methodology/SKILL.md +0 -119
- package/plugins/devflow-code-review/skills/review-methodology/references/patterns.md +0 -186
- package/plugins/devflow-code-review/skills/review-methodology/references/report-template.md +0 -142
- package/plugins/devflow-code-review/skills/review-methodology/references/violations.md +0 -125
- package/plugins/devflow-code-review/skills/security-patterns/SKILL.md +0 -156
- package/plugins/devflow-code-review/skills/security-patterns/references/patterns.md +0 -507
- package/plugins/devflow-code-review/skills/security-patterns/references/violations.md +0 -237
- package/plugins/devflow-code-review/skills/test-patterns/SKILL.md +0 -183
- package/plugins/devflow-code-review/skills/test-patterns/references/patterns.md +0 -220
- package/plugins/devflow-code-review/skills/test-patterns/references/violations.md +0 -221
- package/plugins/devflow-core-skills/.claude-plugin/plugin.json +0 -31
- package/plugins/devflow-core-skills/README.md +0 -50
- package/plugins/devflow-core-skills/skills/core-patterns/SKILL.md +0 -162
- package/plugins/devflow-core-skills/skills/core-patterns/references/checklist.md +0 -276
- package/plugins/devflow-core-skills/skills/core-patterns/references/code-smell-violations.md +0 -144
- package/plugins/devflow-core-skills/skills/core-patterns/references/patterns.md +0 -576
- package/plugins/devflow-core-skills/skills/core-patterns/references/violations.md +0 -369
- package/plugins/devflow-core-skills/skills/docs-framework/SKILL.md +0 -143
- package/plugins/devflow-core-skills/skills/docs-framework/references/patterns.md +0 -346
- package/plugins/devflow-core-skills/skills/docs-framework/references/violations.md +0 -221
- package/plugins/devflow-core-skills/skills/git-safety/SKILL.md +0 -122
- package/plugins/devflow-core-skills/skills/git-safety/references/patterns.md +0 -289
- package/plugins/devflow-core-skills/skills/git-safety/references/violations.md +0 -18
- package/plugins/devflow-core-skills/skills/git-workflow/SKILL.md +0 -158
- package/plugins/devflow-core-skills/skills/git-workflow/references/commit-patterns.md +0 -115
- package/plugins/devflow-core-skills/skills/git-workflow/references/commit-violations.md +0 -77
- package/plugins/devflow-core-skills/skills/git-workflow/references/pr-patterns.md +0 -127
- package/plugins/devflow-core-skills/skills/git-workflow/references/pr-violations.md +0 -96
- package/plugins/devflow-core-skills/skills/github-patterns/SKILL.md +0 -153
- package/plugins/devflow-core-skills/skills/github-patterns/references/patterns.md +0 -572
- package/plugins/devflow-core-skills/skills/github-patterns/references/violations.md +0 -298
- package/plugins/devflow-core-skills/skills/input-validation/SKILL.md +0 -148
- package/plugins/devflow-core-skills/skills/input-validation/references/detection.md +0 -283
- package/plugins/devflow-core-skills/skills/input-validation/references/patterns.md +0 -361
- package/plugins/devflow-core-skills/skills/input-validation/references/violations.md +0 -224
- package/plugins/devflow-core-skills/skills/search-first/SKILL.md +0 -133
- package/plugins/devflow-core-skills/skills/search-first/references/evaluation-criteria.md +0 -101
- package/plugins/devflow-core-skills/skills/test-driven-development/SKILL.md +0 -137
- package/plugins/devflow-core-skills/skills/test-patterns/SKILL.md +0 -183
- package/plugins/devflow-core-skills/skills/test-patterns/references/detection.md +0 -149
- package/plugins/devflow-core-skills/skills/test-patterns/references/patterns.md +0 -220
- package/plugins/devflow-core-skills/skills/test-patterns/references/report-template.md +0 -108
- package/plugins/devflow-core-skills/skills/test-patterns/references/violations.md +0 -221
- package/plugins/devflow-debug/.claude-plugin/plugin.json +0 -26
- package/plugins/devflow-debug/README.md +0 -65
- package/plugins/devflow-debug/agents/git.md +0 -277
- package/plugins/devflow-debug/agents/synthesizer.md +0 -211
- package/plugins/devflow-debug/commands/debug-teams.md +0 -245
- package/plugins/devflow-debug/commands/debug.md +0 -174
- package/plugins/devflow-debug/skills/agent-teams/SKILL.md +0 -124
- package/plugins/devflow-debug/skills/agent-teams/references/cleanup.md +0 -104
- package/plugins/devflow-debug/skills/agent-teams/references/communication.md +0 -122
- package/plugins/devflow-debug/skills/agent-teams/references/team-patterns.md +0 -217
- package/plugins/devflow-debug/skills/git-safety/SKILL.md +0 -122
- package/plugins/devflow-debug/skills/git-safety/references/detection.md +0 -290
- package/plugins/devflow-debug/skills/git-safety/references/patterns.md +0 -289
- package/plugins/devflow-debug/skills/git-safety/references/violations.md +0 -18
- package/plugins/devflow-debug/skills/knowledge-persistence/SKILL.md +0 -128
- package/plugins/devflow-debug/skills/knowledge-persistence/references/examples.md +0 -44
- package/plugins/devflow-frontend-design/.claude-plugin/plugin.json +0 -21
- package/plugins/devflow-frontend-design/skills/frontend-design/SKILL.md +0 -254
- package/plugins/devflow-frontend-design/skills/frontend-design/references/patterns.md +0 -511
- package/plugins/devflow-frontend-design/skills/frontend-design/references/violations.md +0 -453
- package/plugins/devflow-go/.claude-plugin/plugin.json +0 -21
- package/plugins/devflow-go/skills/go/SKILL.md +0 -187
- package/plugins/devflow-go/skills/go/references/concurrency.md +0 -312
- package/plugins/devflow-go/skills/go/references/patterns.md +0 -232
- package/plugins/devflow-go/skills/go/references/violations.md +0 -205
- package/plugins/devflow-implement/.claude-plugin/plugin.json +0 -35
- package/plugins/devflow-implement/README.md +0 -71
- package/plugins/devflow-implement/agents/coder.md +0 -135
- package/plugins/devflow-implement/agents/git.md +0 -277
- package/plugins/devflow-implement/agents/scrutinizer.md +0 -82
- package/plugins/devflow-implement/agents/shepherd.md +0 -108
- package/plugins/devflow-implement/agents/simplifier.md +0 -102
- package/plugins/devflow-implement/agents/skimmer.md +0 -143
- package/plugins/devflow-implement/agents/synthesizer.md +0 -211
- package/plugins/devflow-implement/agents/validator.md +0 -86
- package/plugins/devflow-implement/commands/implement-teams.md +0 -620
- package/plugins/devflow-implement/commands/implement.md +0 -430
- package/plugins/devflow-implement/skills/agent-teams/SKILL.md +0 -124
- package/plugins/devflow-implement/skills/agent-teams/references/cleanup.md +0 -104
- package/plugins/devflow-implement/skills/agent-teams/references/communication.md +0 -122
- package/plugins/devflow-implement/skills/agent-teams/references/team-patterns.md +0 -217
- package/plugins/devflow-implement/skills/implementation-patterns/SKILL.md +0 -162
- package/plugins/devflow-implement/skills/knowledge-persistence/SKILL.md +0 -128
- package/plugins/devflow-implement/skills/knowledge-persistence/references/examples.md +0 -44
- package/plugins/devflow-implement/skills/self-review/SKILL.md +0 -149
- package/plugins/devflow-implement/skills/self-review/references/stub-detection.md +0 -135
- package/plugins/devflow-java/.claude-plugin/plugin.json +0 -21
- package/plugins/devflow-java/skills/java/SKILL.md +0 -183
- package/plugins/devflow-java/skills/java/references/modern-java.md +0 -270
- package/plugins/devflow-java/skills/java/references/patterns.md +0 -235
- package/plugins/devflow-java/skills/java/references/violations.md +0 -213
- package/plugins/devflow-python/.claude-plugin/plugin.json +0 -21
- package/plugins/devflow-python/skills/python/SKILL.md +0 -188
- package/plugins/devflow-python/skills/python/references/async.md +0 -220
- package/plugins/devflow-python/skills/python/references/patterns.md +0 -226
- package/plugins/devflow-python/skills/python/references/violations.md +0 -204
- package/plugins/devflow-react/.claude-plugin/plugin.json +0 -21
- package/plugins/devflow-react/skills/react/SKILL.md +0 -276
- package/plugins/devflow-react/skills/react/references/patterns.md +0 -1331
- package/plugins/devflow-react/skills/react/references/violations.md +0 -565
- package/plugins/devflow-resolve/.claude-plugin/plugin.json +0 -29
- package/plugins/devflow-resolve/README.md +0 -65
- package/plugins/devflow-resolve/agents/git.md +0 -277
- package/plugins/devflow-resolve/agents/resolver.md +0 -131
- package/plugins/devflow-resolve/agents/simplifier.md +0 -102
- package/plugins/devflow-resolve/commands/resolve-teams.md +0 -307
- package/plugins/devflow-resolve/commands/resolve.md +0 -246
- package/plugins/devflow-resolve/skills/agent-teams/SKILL.md +0 -124
- package/plugins/devflow-resolve/skills/agent-teams/references/cleanup.md +0 -104
- package/plugins/devflow-resolve/skills/agent-teams/references/communication.md +0 -122
- package/plugins/devflow-resolve/skills/agent-teams/references/team-patterns.md +0 -217
- package/plugins/devflow-resolve/skills/implementation-patterns/SKILL.md +0 -162
- package/plugins/devflow-resolve/skills/implementation-patterns/references/patterns.md +0 -1063
- package/plugins/devflow-resolve/skills/implementation-patterns/references/violations.md +0 -483
- package/plugins/devflow-resolve/skills/knowledge-persistence/SKILL.md +0 -128
- package/plugins/devflow-resolve/skills/knowledge-persistence/references/examples.md +0 -44
- package/plugins/devflow-resolve/skills/security-patterns/SKILL.md +0 -156
- package/plugins/devflow-resolve/skills/security-patterns/references/detection.md +0 -287
- package/plugins/devflow-resolve/skills/security-patterns/references/patterns.md +0 -507
- package/plugins/devflow-resolve/skills/security-patterns/references/violations.md +0 -237
- package/plugins/devflow-rust/.claude-plugin/plugin.json +0 -21
- package/plugins/devflow-rust/skills/rust/SKILL.md +0 -193
- package/plugins/devflow-rust/skills/rust/references/ownership.md +0 -242
- package/plugins/devflow-rust/skills/rust/references/patterns.md +0 -210
- package/plugins/devflow-rust/skills/rust/references/violations.md +0 -191
- package/plugins/devflow-self-review/.claude-plugin/plugin.json +0 -26
- package/plugins/devflow-self-review/README.md +0 -38
- package/plugins/devflow-self-review/agents/scrutinizer.md +0 -82
- package/plugins/devflow-self-review/agents/simplifier.md +0 -102
- package/plugins/devflow-self-review/agents/validator.md +0 -86
- package/plugins/devflow-self-review/commands/self-review.md +0 -132
- package/plugins/devflow-self-review/skills/core-patterns/SKILL.md +0 -162
- package/plugins/devflow-self-review/skills/core-patterns/references/checklist.md +0 -276
- package/plugins/devflow-self-review/skills/core-patterns/references/code-smell-violations.md +0 -144
- package/plugins/devflow-self-review/skills/core-patterns/references/detection.md +0 -303
- package/plugins/devflow-self-review/skills/core-patterns/references/patterns.md +0 -576
- package/plugins/devflow-self-review/skills/core-patterns/references/violations.md +0 -369
- package/plugins/devflow-self-review/skills/self-review/SKILL.md +0 -149
- package/plugins/devflow-self-review/skills/self-review/references/patterns.md +0 -405
- package/plugins/devflow-self-review/skills/self-review/references/report-template.md +0 -253
- package/plugins/devflow-self-review/skills/self-review/references/stub-detection.md +0 -135
- package/plugins/devflow-self-review/skills/self-review/references/violations.md +0 -308
- package/plugins/devflow-specify/.claude-plugin/plugin.json +0 -25
- package/plugins/devflow-specify/README.md +0 -46
- package/plugins/devflow-specify/agents/skimmer.md +0 -143
- package/plugins/devflow-specify/agents/synthesizer.md +0 -211
- package/plugins/devflow-specify/commands/specify-teams.md +0 -321
- package/plugins/devflow-specify/commands/specify.md +0 -186
- package/plugins/devflow-specify/skills/agent-teams/SKILL.md +0 -124
- package/plugins/devflow-specify/skills/agent-teams/references/cleanup.md +0 -104
- package/plugins/devflow-specify/skills/agent-teams/references/communication.md +0 -122
- package/plugins/devflow-specify/skills/agent-teams/references/team-patterns.md +0 -217
- package/plugins/devflow-typescript/.claude-plugin/plugin.json +0 -21
- package/plugins/devflow-typescript/skills/typescript/SKILL.md +0 -176
- package/plugins/devflow-typescript/skills/typescript/references/patterns.md +0 -1105
- package/plugins/devflow-typescript/skills/typescript/references/violations.md +0 -433
- package/scripts/hooks/ambient-prompt +0 -50
- package/scripts/hooks/background-memory-update +0 -257
- package/scripts/hooks/ensure-memory-gitignore +0 -17
- package/scripts/hooks/pre-compact-memory +0 -87
- package/scripts/hooks/run-hook +0 -23
- package/scripts/hooks/session-start-memory +0 -165
- package/scripts/hooks/stop-update-memory +0 -85
- package/scripts/hud/cache.d.ts +0 -14
- package/scripts/hud/cache.d.ts.map +0 -1
- package/scripts/hud/cache.js +0 -54
- package/scripts/hud/cache.js.map +0 -1
- package/scripts/hud/colors.d.ts +0 -23
- package/scripts/hud/colors.d.ts.map +0 -1
- package/scripts/hud/colors.js +0 -62
- package/scripts/hud/colors.js.map +0 -1
- package/scripts/hud/components/config-counts.d.ts +0 -8
- package/scripts/hud/components/config-counts.d.ts.map +0 -1
- package/scripts/hud/components/config-counts.js +0 -91
- package/scripts/hud/components/config-counts.js.map +0 -1
- package/scripts/hud/components/context-usage.d.ts +0 -8
- package/scripts/hud/components/context-usage.d.ts.map +0 -1
- package/scripts/hud/components/context-usage.js +0 -49
- package/scripts/hud/components/context-usage.js.map +0 -1
- package/scripts/hud/components/diff-stats.d.ts +0 -3
- package/scripts/hud/components/diff-stats.d.ts.map +0 -1
- package/scripts/hud/components/diff-stats.js +0 -36
- package/scripts/hud/components/diff-stats.js.map +0 -1
- package/scripts/hud/components/directory.d.ts +0 -3
- package/scripts/hud/components/directory.d.ts.map +0 -1
- package/scripts/hud/components/directory.js +0 -10
- package/scripts/hud/components/directory.js.map +0 -1
- package/scripts/hud/components/git-ahead-behind.d.ts +0 -3
- package/scripts/hud/components/git-ahead-behind.d.ts.map +0 -1
- package/scripts/hud/components/git-ahead-behind.js +0 -16
- package/scripts/hud/components/git-ahead-behind.js.map +0 -1
- package/scripts/hud/components/git-branch.d.ts +0 -3
- package/scripts/hud/components/git-branch.d.ts.map +0 -1
- package/scripts/hud/components/git-branch.js +0 -14
- package/scripts/hud/components/git-branch.js.map +0 -1
- package/scripts/hud/components/model.d.ts +0 -3
- package/scripts/hud/components/model.d.ts.map +0 -1
- package/scripts/hud/components/model.js +0 -21
- package/scripts/hud/components/model.js.map +0 -1
- package/scripts/hud/components/release-info.d.ts +0 -3
- package/scripts/hud/components/release-info.d.ts.map +0 -1
- package/scripts/hud/components/release-info.js +0 -9
- package/scripts/hud/components/release-info.js.map +0 -1
- package/scripts/hud/components/session-cost.d.ts +0 -3
- package/scripts/hud/components/session-cost.d.ts.map +0 -1
- package/scripts/hud/components/session-cost.js +0 -9
- package/scripts/hud/components/session-cost.js.map +0 -1
- package/scripts/hud/components/session-duration.d.ts +0 -3
- package/scripts/hud/components/session-duration.d.ts.map +0 -1
- package/scripts/hud/components/session-duration.js +0 -18
- package/scripts/hud/components/session-duration.js.map +0 -1
- package/scripts/hud/components/todo-progress.d.ts +0 -3
- package/scripts/hud/components/todo-progress.d.ts.map +0 -1
- package/scripts/hud/components/todo-progress.js +0 -11
- package/scripts/hud/components/todo-progress.js.map +0 -1
- package/scripts/hud/components/usage-quota.d.ts +0 -3
- package/scripts/hud/components/usage-quota.d.ts.map +0 -1
- package/scripts/hud/components/usage-quota.js +0 -45
- package/scripts/hud/components/usage-quota.js.map +0 -1
- package/scripts/hud/components/version-badge.d.ts +0 -3
- package/scripts/hud/components/version-badge.d.ts.map +0 -1
- package/scripts/hud/components/version-badge.js +0 -80
- package/scripts/hud/components/version-badge.js.map +0 -1
- package/scripts/hud/components/worktree-count.d.ts +0 -3
- package/scripts/hud/components/worktree-count.d.ts.map +0 -1
- package/scripts/hud/components/worktree-count.js +0 -8
- package/scripts/hud/components/worktree-count.js.map +0 -1
- package/scripts/hud/config.d.ts +0 -10
- package/scripts/hud/config.d.ts.map +0 -1
- package/scripts/hud/config.js +0 -55
- package/scripts/hud/config.js.map +0 -1
- package/scripts/hud/credentials.d.ts +0 -17
- package/scripts/hud/credentials.d.ts.map +0 -1
- package/scripts/hud/credentials.js +0 -99
- package/scripts/hud/credentials.js.map +0 -1
- package/scripts/hud/git.d.ts +0 -7
- package/scripts/hud/git.d.ts.map +0 -1
- package/scripts/hud/git.js +0 -153
- package/scripts/hud/git.js.map +0 -1
- package/scripts/hud/index.d.ts +0 -2
- package/scripts/hud/index.d.ts.map +0 -1
- package/scripts/hud/index.js +0 -81
- package/scripts/hud/index.js.map +0 -1
- package/scripts/hud/render.d.ts +0 -7
- package/scripts/hud/render.d.ts.map +0 -1
- package/scripts/hud/render.js +0 -111
- package/scripts/hud/render.js.map +0 -1
- package/scripts/hud/stdin.d.ts +0 -6
- package/scripts/hud/stdin.d.ts.map +0 -1
- package/scripts/hud/stdin.js +0 -25
- package/scripts/hud/stdin.js.map +0 -1
- package/scripts/hud/transcript.d.ts +0 -7
- package/scripts/hud/transcript.d.ts.map +0 -1
- package/scripts/hud/transcript.js +0 -130
- package/scripts/hud/transcript.js.map +0 -1
- package/scripts/hud/types.d.ts +0 -116
- package/scripts/hud/types.d.ts.map +0 -1
- package/scripts/hud/types.js +0 -2
- package/scripts/hud/types.js.map +0 -1
- package/scripts/hud/usage-api.d.ts +0 -7
- package/scripts/hud/usage-api.d.ts.map +0 -1
- package/scripts/hud/usage-api.js +0 -84
- package/scripts/hud/usage-api.js.map +0 -1
- package/scripts/hud.sh +0 -5
- package/shared/agents/coder.md +0 -135
- package/shared/agents/git.md +0 -277
- package/shared/agents/resolver.md +0 -131
- package/shared/agents/reviewer.md +0 -165
- package/shared/agents/scrutinizer.md +0 -82
- package/shared/agents/shepherd.md +0 -108
- package/shared/agents/simplifier.md +0 -102
- package/shared/agents/skimmer.md +0 -143
- package/shared/agents/synthesizer.md +0 -211
- package/shared/agents/validator.md +0 -86
- package/shared/skills/accessibility/SKILL.md +0 -229
- package/shared/skills/accessibility/references/detection.md +0 -171
- package/shared/skills/accessibility/references/patterns.md +0 -670
- package/shared/skills/accessibility/references/violations.md +0 -419
- package/shared/skills/agent-teams/SKILL.md +0 -124
- package/shared/skills/agent-teams/references/cleanup.md +0 -104
- package/shared/skills/agent-teams/references/communication.md +0 -122
- package/shared/skills/agent-teams/references/team-patterns.md +0 -217
- package/shared/skills/ambient-router/SKILL.md +0 -145
- package/shared/skills/ambient-router/references/skill-catalog.md +0 -74
- package/shared/skills/architecture-patterns/SKILL.md +0 -153
- package/shared/skills/architecture-patterns/references/detection.md +0 -337
- package/shared/skills/architecture-patterns/references/patterns.md +0 -873
- package/shared/skills/architecture-patterns/references/violations.md +0 -575
- package/shared/skills/complexity-patterns/SKILL.md +0 -143
- package/shared/skills/complexity-patterns/references/detection.md +0 -264
- package/shared/skills/complexity-patterns/references/patterns.md +0 -487
- package/shared/skills/complexity-patterns/references/violations.md +0 -361
- package/shared/skills/consistency-patterns/SKILL.md +0 -140
- package/shared/skills/consistency-patterns/references/detection.md +0 -207
- package/shared/skills/consistency-patterns/references/patterns.md +0 -202
- package/shared/skills/consistency-patterns/references/violations.md +0 -213
- package/shared/skills/core-patterns/SKILL.md +0 -162
- package/shared/skills/core-patterns/references/checklist.md +0 -276
- package/shared/skills/core-patterns/references/code-smell-violations.md +0 -144
- package/shared/skills/core-patterns/references/detection.md +0 -303
- package/shared/skills/core-patterns/references/patterns.md +0 -576
- package/shared/skills/core-patterns/references/violations.md +0 -369
- package/shared/skills/database-patterns/SKILL.md +0 -134
- package/shared/skills/database-patterns/references/detection.md +0 -208
- package/shared/skills/database-patterns/references/patterns.md +0 -394
- package/shared/skills/database-patterns/references/violations.md +0 -332
- package/shared/skills/debug-orchestration/SKILL.md +0 -69
- package/shared/skills/dependencies-patterns/SKILL.md +0 -141
- package/shared/skills/dependencies-patterns/references/detection.md +0 -181
- package/shared/skills/dependencies-patterns/references/patterns.md +0 -225
- package/shared/skills/dependencies-patterns/references/violations.md +0 -247
- package/shared/skills/docs-framework/SKILL.md +0 -143
- package/shared/skills/docs-framework/references/patterns.md +0 -346
- package/shared/skills/docs-framework/references/violations.md +0 -221
- package/shared/skills/documentation-patterns/SKILL.md +0 -125
- package/shared/skills/documentation-patterns/references/detection.md +0 -190
- package/shared/skills/documentation-patterns/references/patterns.md +0 -189
- package/shared/skills/documentation-patterns/references/violations.md +0 -163
- package/shared/skills/frontend-design/SKILL.md +0 -254
- package/shared/skills/frontend-design/references/detection.md +0 -184
- package/shared/skills/frontend-design/references/patterns.md +0 -511
- package/shared/skills/frontend-design/references/violations.md +0 -453
- package/shared/skills/git-safety/SKILL.md +0 -122
- package/shared/skills/git-safety/references/detection.md +0 -290
- package/shared/skills/git-safety/references/patterns.md +0 -289
- package/shared/skills/git-safety/references/violations.md +0 -18
- package/shared/skills/git-workflow/SKILL.md +0 -158
- package/shared/skills/git-workflow/references/commit-patterns.md +0 -115
- package/shared/skills/git-workflow/references/commit-violations.md +0 -77
- package/shared/skills/git-workflow/references/pr-patterns.md +0 -127
- package/shared/skills/git-workflow/references/pr-violations.md +0 -96
- package/shared/skills/github-patterns/SKILL.md +0 -153
- package/shared/skills/github-patterns/references/patterns.md +0 -572
- package/shared/skills/github-patterns/references/violations.md +0 -298
- package/shared/skills/go/SKILL.md +0 -187
- package/shared/skills/go/references/concurrency.md +0 -312
- package/shared/skills/go/references/detection.md +0 -129
- package/shared/skills/go/references/patterns.md +0 -232
- package/shared/skills/go/references/violations.md +0 -205
- package/shared/skills/implementation-orchestration/SKILL.md +0 -92
- package/shared/skills/implementation-patterns/SKILL.md +0 -162
- package/shared/skills/implementation-patterns/references/patterns.md +0 -1063
- package/shared/skills/implementation-patterns/references/violations.md +0 -483
- package/shared/skills/input-validation/SKILL.md +0 -148
- package/shared/skills/input-validation/references/detection.md +0 -283
- package/shared/skills/input-validation/references/patterns.md +0 -361
- package/shared/skills/input-validation/references/violations.md +0 -224
- package/shared/skills/java/SKILL.md +0 -183
- package/shared/skills/java/references/detection.md +0 -120
- package/shared/skills/java/references/modern-java.md +0 -270
- package/shared/skills/java/references/patterns.md +0 -235
- package/shared/skills/java/references/violations.md +0 -213
- package/shared/skills/knowledge-persistence/SKILL.md +0 -128
- package/shared/skills/knowledge-persistence/references/examples.md +0 -44
- package/shared/skills/performance-patterns/SKILL.md +0 -154
- package/shared/skills/performance-patterns/references/detection.md +0 -351
- package/shared/skills/performance-patterns/references/patterns.md +0 -503
- package/shared/skills/performance-patterns/references/violations.md +0 -354
- package/shared/skills/plan-orchestration/SKILL.md +0 -71
- package/shared/skills/python/SKILL.md +0 -188
- package/shared/skills/python/references/async.md +0 -220
- package/shared/skills/python/references/detection.md +0 -128
- package/shared/skills/python/references/patterns.md +0 -226
- package/shared/skills/python/references/violations.md +0 -204
- package/shared/skills/react/SKILL.md +0 -276
- package/shared/skills/react/references/patterns.md +0 -1331
- package/shared/skills/react/references/violations.md +0 -565
- package/shared/skills/regression-patterns/SKILL.md +0 -146
- package/shared/skills/regression-patterns/references/detection.md +0 -237
- package/shared/skills/regression-patterns/references/patterns.md +0 -226
- package/shared/skills/regression-patterns/references/violations.md +0 -225
- package/shared/skills/review-methodology/SKILL.md +0 -119
- package/shared/skills/review-methodology/references/patterns.md +0 -186
- package/shared/skills/review-methodology/references/report-template.md +0 -142
- package/shared/skills/review-methodology/references/violations.md +0 -125
- package/shared/skills/rust/SKILL.md +0 -193
- package/shared/skills/rust/references/detection.md +0 -131
- package/shared/skills/rust/references/ownership.md +0 -242
- package/shared/skills/rust/references/patterns.md +0 -210
- package/shared/skills/rust/references/violations.md +0 -191
- package/shared/skills/search-first/SKILL.md +0 -133
- package/shared/skills/search-first/references/evaluation-criteria.md +0 -101
- package/shared/skills/security-patterns/SKILL.md +0 -156
- package/shared/skills/security-patterns/references/detection.md +0 -287
- package/shared/skills/security-patterns/references/patterns.md +0 -507
- package/shared/skills/security-patterns/references/violations.md +0 -237
- package/shared/skills/self-review/SKILL.md +0 -149
- package/shared/skills/self-review/references/patterns.md +0 -405
- package/shared/skills/self-review/references/report-template.md +0 -253
- package/shared/skills/self-review/references/stub-detection.md +0 -135
- package/shared/skills/self-review/references/violations.md +0 -308
- package/shared/skills/test-driven-development/SKILL.md +0 -137
- package/shared/skills/test-driven-development/references/rationalization-prevention.md +0 -111
- package/shared/skills/test-patterns/SKILL.md +0 -183
- package/shared/skills/test-patterns/references/detection.md +0 -149
- package/shared/skills/test-patterns/references/patterns.md +0 -220
- package/shared/skills/test-patterns/references/report-template.md +0 -108
- package/shared/skills/test-patterns/references/violations.md +0 -221
- package/shared/skills/typescript/SKILL.md +0 -176
- package/shared/skills/typescript/references/patterns.md +0 -1105
- package/shared/skills/typescript/references/violations.md +0 -433
- package/src/templates/claudeignore.template +0 -188
- package/src/templates/settings.json +0 -59
- /package/dist/{utils → core}/safe-delete.js +0 -0
- /package/{plugins/devflow-accessibility → src/assets}/skills/accessibility/references/detection.md +0 -0
- /package/{plugins/devflow-code-review/skills/architecture-patterns → src/assets/skills/architecture}/references/detection.md +0 -0
- /package/{plugins/devflow-code-review/skills/complexity-patterns → src/assets/skills/complexity}/references/detection.md +0 -0
- /package/{plugins/devflow-code-review/skills/complexity-patterns → src/assets/skills/complexity}/references/patterns.md +0 -0
- /package/{plugins/devflow-code-review/skills/complexity-patterns → src/assets/skills/complexity}/references/violations.md +0 -0
- /package/{plugins/devflow-code-review/skills/consistency-patterns → src/assets/skills/consistency}/references/detection.md +0 -0
- /package/{plugins/devflow-code-review/skills/consistency-patterns → src/assets/skills/consistency}/references/patterns.md +0 -0
- /package/{plugins/devflow-code-review/skills/consistency-patterns → src/assets/skills/consistency}/references/violations.md +0 -0
- /package/{plugins/devflow-code-review/skills/database-patterns → src/assets/skills/database}/references/detection.md +0 -0
- /package/{plugins/devflow-code-review/skills/database-patterns → src/assets/skills/database}/references/patterns.md +0 -0
- /package/{plugins/devflow-code-review/skills/database-patterns → src/assets/skills/database}/references/violations.md +0 -0
- /package/{plugins/devflow-code-review/skills/dependencies-patterns → src/assets/skills/dependencies}/references/detection.md +0 -0
- /package/{plugins/devflow-code-review/skills/dependencies-patterns → src/assets/skills/dependencies}/references/patterns.md +0 -0
- /package/{plugins/devflow-code-review/skills/dependencies-patterns → src/assets/skills/dependencies}/references/violations.md +0 -0
- /package/{plugins/devflow-code-review/skills/documentation-patterns → src/assets/skills/documentation}/references/detection.md +0 -0
- /package/{plugins/devflow-code-review/skills/documentation-patterns → src/assets/skills/documentation}/references/patterns.md +0 -0
- /package/{plugins/devflow-code-review/skills/documentation-patterns → src/assets/skills/documentation}/references/violations.md +0 -0
- /package/{plugins/devflow-core-skills/skills/git-safety → src/assets/skills/git}/references/detection.md +0 -0
- /package/{plugins/devflow-go → src/assets}/skills/go/references/detection.md +0 -0
- /package/{plugins/devflow-java → src/assets}/skills/java/references/detection.md +0 -0
- /package/{plugins/devflow-implement/skills/implementation-patterns → src/assets/skills/patterns}/references/patterns.md +0 -0
- /package/{plugins/devflow-implement/skills/implementation-patterns → src/assets/skills/patterns}/references/violations.md +0 -0
- /package/{plugins/devflow-code-review/skills/performance-patterns → src/assets/skills/performance}/references/detection.md +0 -0
- /package/{plugins/devflow-python → src/assets}/skills/python/references/detection.md +0 -0
- /package/{plugins/devflow-implement/skills/self-review → src/assets/skills/quality-gates}/references/patterns.md +0 -0
- /package/{plugins/devflow-implement/skills/self-review → src/assets/skills/quality-gates}/references/report-template.md +0 -0
- /package/{plugins/devflow-implement/skills/self-review → src/assets/skills/quality-gates}/references/violations.md +0 -0
- /package/{plugins/devflow-code-review/skills/regression-patterns → src/assets/skills/regression}/references/detection.md +0 -0
- /package/{plugins/devflow-code-review/skills/regression-patterns → src/assets/skills/regression}/references/patterns.md +0 -0
- /package/{plugins/devflow-code-review/skills/regression-patterns → src/assets/skills/regression}/references/violations.md +0 -0
- /package/{plugins/devflow-rust → src/assets}/skills/rust/references/detection.md +0 -0
- /package/{plugins/devflow-code-review/skills/security-patterns → src/assets/skills/security}/references/detection.md +0 -0
- /package/{plugins/devflow-core-skills/skills/core-patterns → src/assets/skills/software-design}/references/detection.md +0 -0
- /package/{plugins/devflow-core-skills → src/assets}/skills/test-driven-development/references/rationalization-prevention.md +0 -0
- /package/{plugins/devflow-code-review/skills/test-patterns → src/assets/skills/testing}/references/detection.md +0 -0
- /package/{plugins/devflow-code-review/skills/test-patterns → src/assets/skills/testing}/references/report-template.md +0 -0
- /package/{plugins/devflow-frontend-design/skills/frontend-design → src/assets/skills/ui-design}/references/detection.md +0 -0
- /package/src/{templates → targets/claude-code/templates}/managed-settings.json +0 -0
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
# Security — Correct Patterns
|
|
2
|
+
|
|
3
|
+
Extended correct patterns for security implementation with literature citations.
|
|
4
|
+
|
|
5
|
+
## Injection Prevention
|
|
6
|
+
|
|
7
|
+
### SQL Injection Prevention [1][6]
|
|
8
|
+
```typescript
|
|
9
|
+
// SECURE: Parameterized queries — never interpolate user data [6]
|
|
10
|
+
const user = await db.query('SELECT * FROM users WHERE id = $1', [userId]);
|
|
11
|
+
const result = await db.query('SELECT * FROM products WHERE name LIKE $1', [`%${search}%`]);
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
### NoSQL Injection Prevention [1][6]
|
|
15
|
+
```typescript
|
|
16
|
+
// SECURE: Coerce to string — reject operator objects
|
|
17
|
+
const username = String(req.body.username);
|
|
18
|
+
const user = await db.users.findOne({ username });
|
|
19
|
+
|
|
20
|
+
// SECURE: Escape regex special characters
|
|
21
|
+
const escaped = userInput.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
22
|
+
db.users.find({ name: { $regex: escaped } });
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Command Injection Prevention [6][9]
|
|
26
|
+
```typescript
|
|
27
|
+
// SECURE: Use execFile with arguments array — OS escapes args [9]
|
|
28
|
+
execFile('ls', [userInput]);
|
|
29
|
+
spawn('convert', [filename, 'output.png']);
|
|
30
|
+
|
|
31
|
+
// SECURE: Validate input format before use
|
|
32
|
+
const hostnamePattern = /^[a-zA-Z0-9.-]+$/;
|
|
33
|
+
if (!hostnamePattern.test(hostname)) throw new Error('Invalid hostname');
|
|
34
|
+
spawn('ping', ['-c', '4', hostname]);
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Path Traversal Prevention [1][6]
|
|
38
|
+
```typescript
|
|
39
|
+
// SECURE: Normalize and validate path stays within upload dir
|
|
40
|
+
const requestedPath = path.normalize(path.join('./uploads', path.basename(req.params.filename)));
|
|
41
|
+
const absoluteUploads = path.resolve('./uploads');
|
|
42
|
+
const absoluteRequested = path.resolve(requestedPath);
|
|
43
|
+
|
|
44
|
+
if (!absoluteRequested.startsWith(absoluteUploads + path.sep)) {
|
|
45
|
+
throw new Error('Path traversal attempt blocked');
|
|
46
|
+
}
|
|
47
|
+
fs.readFile(absoluteRequested);
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### LDAP Injection Prevention [6][9]
|
|
51
|
+
```typescript
|
|
52
|
+
// SECURE: Escape LDAP special characters
|
|
53
|
+
function escapeLDAP(str: string): string {
|
|
54
|
+
return str.replace(/[\\*()]/g, char => `\\${char.charCodeAt(0).toString(16)}`);
|
|
55
|
+
}
|
|
56
|
+
const filter = `(uid=${escapeLDAP(username)})`;
|
|
57
|
+
ldap.search(baseDN, filter);
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Template Injection Prevention [1][20]
|
|
61
|
+
```typescript
|
|
62
|
+
// SECURE: Never build templates from user input — pass data as context only
|
|
63
|
+
const template = 'Hello <%= name %>!';
|
|
64
|
+
ejs.render(template, { name: req.body.name });
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Authentication Patterns
|
|
70
|
+
|
|
71
|
+
### Password Validation [2][7]
|
|
72
|
+
```typescript
|
|
73
|
+
import { z } from 'zod';
|
|
74
|
+
|
|
75
|
+
// NIST 800-63 minimum: 15-char passphrase or 12-char with complexity [7]
|
|
76
|
+
const PasswordSchema = z.string()
|
|
77
|
+
.min(12, 'Password must be at least 12 characters')
|
|
78
|
+
.max(128)
|
|
79
|
+
.regex(/[A-Z]/).regex(/[a-z]/).regex(/[0-9]/).regex(/[^A-Za-z0-9]/);
|
|
80
|
+
|
|
81
|
+
async function validatePassword(password: string): Promise<Result<void, Error>> {
|
|
82
|
+
const schemaResult = PasswordSchema.safeParse(password);
|
|
83
|
+
if (!schemaResult.success) {
|
|
84
|
+
return { ok: false, error: new Error(schemaResult.error.message) };
|
|
85
|
+
}
|
|
86
|
+
// Check against breach databases (HaveIBeenPwned) [7]
|
|
87
|
+
const breachCount = await pwnedPassword(password);
|
|
88
|
+
if (breachCount > 0) return { ok: false, error: new Error('Password found in breach database') };
|
|
89
|
+
return { ok: true, value: undefined };
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Secure Session Management [4][7]
|
|
94
|
+
```typescript
|
|
95
|
+
// SECURE: httpOnly + Secure + SameSite cookie [4][16]
|
|
96
|
+
res.cookie('session', token, {
|
|
97
|
+
httpOnly: true,
|
|
98
|
+
secure: true,
|
|
99
|
+
sameSite: 'strict', // CSRF prevention [16]
|
|
100
|
+
maxAge: 3600000 // 1 hour
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
// Rotate session ID on privilege change to prevent session fixation [4][7]
|
|
104
|
+
async function login(userId: string, res: Response): Promise<void> {
|
|
105
|
+
const newSessionId = crypto.randomBytes(32).toString('hex');
|
|
106
|
+
await sessionStore.destroy(req.sessionID);
|
|
107
|
+
await sessionStore.create(newSessionId, { userId, createdAt: Date.now(), lastAccess: Date.now() });
|
|
108
|
+
res.cookie('session', newSessionId, { httpOnly: true, secure: true, sameSite: 'strict', maxAge: 3600000 });
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Secure JWT Handling [17]
|
|
113
|
+
```typescript
|
|
114
|
+
// SECURE: Explicit algorithm, expiry, issuer — RFC 8725 requirements [17]
|
|
115
|
+
jwt.sign(payload, process.env.JWT_SECRET, {
|
|
116
|
+
algorithm: 'HS256', // pin algorithm — prevents "none" and RS→HS confusion [17]
|
|
117
|
+
expiresIn: '15m',
|
|
118
|
+
issuer: 'myapp'
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
jwt.verify(token, secret, {
|
|
122
|
+
algorithms: ['HS256'], // allowlist — block algorithm substitution [17]
|
|
123
|
+
issuer: 'myapp'
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
// Refresh token rotation — store JTI for revocation [17]
|
|
127
|
+
async function createTokenPair(userId: string): Promise<TokenPair> {
|
|
128
|
+
const accessToken = jwt.sign({ userId, type: 'access' }, process.env.JWT_ACCESS_SECRET,
|
|
129
|
+
{ algorithm: 'HS256', expiresIn: '15m' });
|
|
130
|
+
const refreshToken = jwt.sign(
|
|
131
|
+
{ userId, type: 'refresh', jti: crypto.randomUUID() },
|
|
132
|
+
process.env.JWT_REFRESH_SECRET, { algorithm: 'HS256', expiresIn: '7d' });
|
|
133
|
+
// Store refresh token hash for revocation
|
|
134
|
+
await tokenStore.save({ jti: jwt.decode(refreshToken).jti, userId,
|
|
135
|
+
expiresAt: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000) });
|
|
136
|
+
return { accessToken, refreshToken };
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Authorization Patterns [2][4]
|
|
141
|
+
```typescript
|
|
142
|
+
// RBAC: Role-Based Access Control [4]
|
|
143
|
+
type Permission = 'read' | 'write' | 'delete' | 'admin';
|
|
144
|
+
const ROLES: Record<string, Permission[]> = {
|
|
145
|
+
viewer: ['read'],
|
|
146
|
+
editor: ['read', 'write'],
|
|
147
|
+
admin: ['read', 'write', 'delete', 'admin']
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
function requirePermission(...required: Permission[]) {
|
|
151
|
+
return (req: Request, res: Response, next: NextFunction) => {
|
|
152
|
+
const userPerms = ROLES[req.user.role] ?? [];
|
|
153
|
+
if (!required.every(p => userPerms.includes(p))) {
|
|
154
|
+
return res.status(403).json({ error: 'Insufficient permissions' });
|
|
155
|
+
}
|
|
156
|
+
next();
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// ABAC: Attribute-Based Access Control for ownership checks [2]
|
|
161
|
+
const policies = [
|
|
162
|
+
{ resource: 'post', action: 'delete',
|
|
163
|
+
check: (user: User, post: Post) => user.role === 'admin' || post.authorId === user.id }
|
|
164
|
+
];
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## Cryptography Patterns
|
|
170
|
+
|
|
171
|
+
### Secret Management [4][8]
|
|
172
|
+
```typescript
|
|
173
|
+
// SECURE: Validate secrets schema at startup — fail fast [8]
|
|
174
|
+
const SecretsSchema = z.object({
|
|
175
|
+
DB_PASSWORD: z.string().min(20),
|
|
176
|
+
JWT_SECRET: z.string().min(64),
|
|
177
|
+
ENCRYPTION_KEY: z.string().length(64)
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
function loadSecrets(): Result<Secrets, Error> {
|
|
181
|
+
const result = SecretsSchema.safeParse(process.env);
|
|
182
|
+
if (!result.success) return { ok: false, error: new Error('Invalid secrets configuration') };
|
|
183
|
+
return { ok: true, value: result.data };
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Password Hashing [24]
|
|
188
|
+
```typescript
|
|
189
|
+
// SECURE: Argon2id — PHC winner, memory-hard, side-channel resistant [24]
|
|
190
|
+
import argon2 from 'argon2';
|
|
191
|
+
|
|
192
|
+
async function hashPassword(password: string): Promise<string> {
|
|
193
|
+
return argon2.hash(password, {
|
|
194
|
+
type: argon2.argon2id,
|
|
195
|
+
memoryCost: 65536, // 64 MB
|
|
196
|
+
timeCost: 3,
|
|
197
|
+
parallelism: 4
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// SECURE: bcrypt cost ≥12 — widely supported alternative [24]
|
|
202
|
+
import bcrypt from 'bcrypt';
|
|
203
|
+
async function hashPasswordBcrypt(password: string): Promise<string> {
|
|
204
|
+
return bcrypt.hash(password, 12);
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Authenticated Encryption [25]
|
|
209
|
+
```typescript
|
|
210
|
+
// SECURE: AES-256-GCM — authenticated encryption prevents tampering [25]
|
|
211
|
+
function encrypt(plaintext: string, key: Buffer): EncryptedData {
|
|
212
|
+
const iv = crypto.randomBytes(12); // 96-bit IV for GCM
|
|
213
|
+
const cipher = crypto.createCipheriv('aes-256-gcm', key, iv);
|
|
214
|
+
let ciphertext = cipher.update(plaintext, 'utf8', 'hex');
|
|
215
|
+
ciphertext += cipher.final('hex');
|
|
216
|
+
return { ciphertext, iv: iv.toString('hex'), authTag: cipher.getAuthTag().toString('hex') };
|
|
217
|
+
}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Timing-Safe Comparison [25]
|
|
221
|
+
```typescript
|
|
222
|
+
// SECURE: Constant-time comparison — prevents timing oracle attacks [25]
|
|
223
|
+
import { timingSafeEqual } from 'crypto';
|
|
224
|
+
|
|
225
|
+
function verifyToken(provided: string, stored: string): boolean {
|
|
226
|
+
if (provided.length !== stored.length) return false;
|
|
227
|
+
return timingSafeEqual(Buffer.from(provided), Buffer.from(stored));
|
|
228
|
+
}
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### Secure Random Generation [25]
|
|
232
|
+
```typescript
|
|
233
|
+
const token = crypto.randomBytes(32).toString('hex'); // session tokens
|
|
234
|
+
const id = crypto.randomUUID(); // IDs
|
|
235
|
+
const code = crypto.randomInt(100000, 1000000); // OTP codes
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Headers & CSP [10][15]
|
|
241
|
+
|
|
242
|
+
```typescript
|
|
243
|
+
// Content-Security-Policy: nonce-based CSP preferred over unsafe-inline [15]
|
|
244
|
+
const nonce = crypto.randomBytes(16).toString('base64');
|
|
245
|
+
res.setHeader('Content-Security-Policy',
|
|
246
|
+
`default-src 'self'; script-src 'self' 'nonce-${nonce}'; style-src 'self'`);
|
|
247
|
+
|
|
248
|
+
// HSTS: preload after testing [10]
|
|
249
|
+
res.setHeader('Strict-Transport-Security', 'max-age=63072000; includeSubDomains; preload');
|
|
250
|
+
res.setHeader('X-Content-Type-Options', 'nosniff');
|
|
251
|
+
res.setHeader('X-Frame-Options', 'DENY');
|
|
252
|
+
res.setHeader('Referrer-Policy', 'strict-origin-when-cross-origin');
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
## Subresource Integrity (SRI) [18]
|
|
256
|
+
```html
|
|
257
|
+
<!-- SECURE: Verify CDN assets by hash — prevents CDN compromise [18] -->
|
|
258
|
+
<script src="https://cdn.example.com/lib.js"
|
|
259
|
+
integrity="sha384-ABC123..." crossorigin="anonymous"></script>
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
## Supply Chain [12][13]
|
|
263
|
+
```bash
|
|
264
|
+
# Pin exact versions
|
|
265
|
+
npm install --save-exact lodash@4.17.21
|
|
266
|
+
|
|
267
|
+
# Generate provenance with Sigstore in CI [13]
|
|
268
|
+
cosign sign --key cosign.key artifact.tar.gz
|
|
269
|
+
|
|
270
|
+
# SLSA Level 2+: hermetic build with provenance attestation [12]
|
|
271
|
+
```
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Security — Sources
|
|
2
|
+
|
|
3
|
+
## Primary References
|
|
4
|
+
|
|
5
|
+
| # | Source | Author(s) | Year | Access | Topics |
|
|
6
|
+
|---|--------|-----------|------|--------|--------|
|
|
7
|
+
| 1 | OWASP Top 10 (2021) | OWASP Foundation | 2021 | [Free](https://owasp.org/Top10/) | Top vulnerability categories: injection, broken auth, misconfiguration, SSRF |
|
|
8
|
+
| 2 | OWASP Application Security Verification Standard (ASVS) 4.0 | OWASP Foundation | 2021 | [Free](https://owasp.org/www-project-application-security-verification-standard/) | Application security verification requirements at three assurance levels |
|
|
9
|
+
| 3 | OWASP Proactive Controls (2024) | OWASP Foundation | 2024 | [Free](https://owasp.org/www-project-proactive-controls/) | Top 10 preventive security measures for developers |
|
|
10
|
+
| 4 | OWASP Cheat Sheet Series | OWASP Foundation | 2024 | [Free](https://cheatsheetseries.owasp.org) | Auth, crypto, XSS, injection, session management prevention patterns |
|
|
11
|
+
| 5 | CWE Top 25 Most Dangerous Software Weaknesses (2024) | MITRE | 2024 | [Free](https://cwe.mitre.org/top25/) | Most exploited weakness categories ranked by prevalence and severity |
|
|
12
|
+
| 6 | CWE-20: Improper Input Validation | MITRE | 2024 | [Free](https://cwe.mitre.org/data/definitions/20.html) | Root cause of injection and boundary-violation vulnerabilities |
|
|
13
|
+
| 7 | NIST SP 800-63 Rev 4 — Digital Identity Guidelines | NIST | 2024 | [Free](https://pages.nist.gov/800-63-4/) | Password length/complexity, MFA, phishing-resistant authenticators |
|
|
14
|
+
| 8 | NIST SP 800-218 — Secure Software Development Framework (SSDF) | NIST | 2022 | [Free](https://csrc.nist.gov/publications/detail/sp/800-218/final) | Secure coding practices, code review requirements, vulnerability response |
|
|
15
|
+
| 9 | CERT Secure Coding Standards | SEI Carnegie Mellon | 2024 | [Free](https://wiki.sei.cmu.edu/confluence/display/seccode) | Language-specific secure coding rules (C, C++, Java, Android, Perl) |
|
|
16
|
+
| 10 | Mozilla Web Security Guidelines | Mozilla Corporation | 2024 | [Free](https://infosec.mozilla.org/guidelines/web_security) | CSP, CORS, HSTS, Referrer-Policy, X-Frame-Options recommendations |
|
|
17
|
+
| 11 | OWASP API Security Top 10 (2023) | OWASP Foundation | 2023 | [Free](https://owasp.org/API-Security/editions/2023/en/0x00-header/) | API-specific vulnerabilities: broken object auth, mass assignment, SSRF |
|
|
18
|
+
| 12 | SLSA Framework — Supply-chain Levels for Software Artifacts | Google / OpenSSF | 2024 | [Free](https://slsa.dev) | Supply chain integrity levels, provenance requirements, build hardening |
|
|
19
|
+
| 13 | Sigstore Documentation | Linux Foundation / OpenSSF | 2024 | [Free](https://docs.sigstore.dev) | Keyless code signing, artifact verification, transparency log |
|
|
20
|
+
| 14 | STRIDE Threat Model | Microsoft | 2022 | [Free](https://learn.microsoft.com/en-us/azure/security/develop/threat-modeling-tool-threats) | Spoofing, Tampering, Repudiation, Information Disclosure, DoS, Elevation |
|
|
21
|
+
| 15 | Content Security Policy (CSP) Level 3 | W3C | 2023 | [Free](https://www.w3.org/TR/CSP3/) | Directive syntax, nonce/hash-based allow-lists, XSS mitigation mechanism |
|
|
22
|
+
| 16 | SameSite Cookies Explained | web.dev (Google) | 2020 | [Free](https://web.dev/articles/samesite-cookies-explained) | CSRF prevention, SameSite=Strict/Lax/None, cookie attribute semantics |
|
|
23
|
+
| 17 | JWT Best Practices — RFC 8725 | IETF | 2020 | [Free](https://www.rfc-editor.org/rfc/rfc8725) | Algorithm confusion, weak secrets, missing validation, claim verification |
|
|
24
|
+
| 18 | Subresource Integrity (SRI) | W3C | 2022 | [Free](https://www.w3.org/TR/SRI/) | Hash-based CDN tamper prevention, integrity attribute for script/link tags |
|
|
25
|
+
| 19 | OWASP Testing Guide (WSTG) v4.2 | OWASP Foundation | 2021 | [Free](https://owasp.org/www-project-web-security-testing-guide/) | Security testing methodology, test cases for each vulnerability category |
|
|
26
|
+
| 20 | Stanford CS 253: Web Security | Feross Aboukhadijeh | 2019 | [Free](https://web.stanford.edu/class/cs253/) | Comprehensive academic web security: XSS, CSRF, SQLi, clickjacking, CSP |
|
|
27
|
+
|
|
28
|
+
## Books
|
|
29
|
+
|
|
30
|
+
| # | Source | Author(s) | Year | Access | Topics |
|
|
31
|
+
|---|--------|-----------|------|--------|--------|
|
|
32
|
+
| 21 | "The Web Application Hacker's Handbook" 2nd ed. | Stuttard & Pinto | 2011 | Purchase | Comprehensive web app attack and defense: auth, logic flaws, injection |
|
|
33
|
+
| 22 | "Secure by Design" | Deogun, Sawano & Johnsson | 2019 | Purchase | Security as architectural property, domain primitives, trust boundaries |
|
|
34
|
+
| 23 | "Threat Modeling: Designing for Security" | Adam Shostack | 2014 | Purchase | Systematic threat analysis, STRIDE application, mitigation strategies |
|
|
35
|
+
|
|
36
|
+
## Algorithms & Specifications
|
|
37
|
+
|
|
38
|
+
| # | Source | Author(s) | Year | Access | Topics |
|
|
39
|
+
|---|--------|-----------|------|--------|--------|
|
|
40
|
+
| 24 | Argon2 Reference Implementation and Specification | Biryukov, Dinu & Khovratovich | 2021 | [Free](https://github.com/P-H-C/phc-winner-argon2) | Winner of PHC; memory-hard password hashing; recommended over bcrypt/scrypt |
|
|
41
|
+
| 25 | "Cryptography Engineering" Ch. 3–6 | Ferguson, Schneier & Kohno | 2010 | Purchase | Random number generation, symmetric encryption, hash functions, MACs |
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
# Security — Violation Examples
|
|
2
|
+
|
|
3
|
+
Extended violation patterns for security reviews with literature citations.
|
|
4
|
+
|
|
5
|
+
## Injection Vulnerabilities [1][6]
|
|
6
|
+
|
|
7
|
+
### SQL Injection [1][6]
|
|
8
|
+
```typescript
|
|
9
|
+
// VULNERABLE: String interpolation in query — A03:Injection [1]
|
|
10
|
+
const user = await db.query(`SELECT * FROM users WHERE id = '${userId}'`);
|
|
11
|
+
const result = await db.query(`SELECT * FROM products WHERE name LIKE '%${search}%'`);
|
|
12
|
+
```
|
|
13
|
+
**CWE-89** (SQL Injection) is in the CWE Top 25 [5]. Any unsanitized string in a query
|
|
14
|
+
is exploitable. Parameterized queries are the only reliable fix [6].
|
|
15
|
+
|
|
16
|
+
### NoSQL Injection [1][6]
|
|
17
|
+
```typescript
|
|
18
|
+
// VULNERABLE: Direct object from request — operator injection possible
|
|
19
|
+
const user = await db.users.findOne({ username: req.body.username });
|
|
20
|
+
// Attacker sends: { username: { $gt: "" } } — matches all users
|
|
21
|
+
|
|
22
|
+
// VULNERABLE: $where operator accepts arbitrary JS execution
|
|
23
|
+
db.users.find({ $where: `this.name === '${userInput}'` });
|
|
24
|
+
|
|
25
|
+
// VULNERABLE: Unescaped regex — catastrophic backtracking or full-table match
|
|
26
|
+
db.users.find({ name: { $regex: userInput } });
|
|
27
|
+
// Attacker sends: ".*"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Command Injection [1][6][9]
|
|
31
|
+
```typescript
|
|
32
|
+
// VULNERABLE: User input in shell command — A03:Injection [1]
|
|
33
|
+
exec(`ls ${userInput}`);
|
|
34
|
+
exec(`convert ${filename} output.png`);
|
|
35
|
+
exec(`ping -c 4 ${hostname}`);
|
|
36
|
+
// Dangerous chars: ; | & $ ` ( ) < > \ ' "
|
|
37
|
+
// Attack: userInput = "file.txt; rm -rf /"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Path Traversal [1][6]
|
|
41
|
+
```typescript
|
|
42
|
+
// VULNERABLE: Direct path concatenation — CWE-22 [5]
|
|
43
|
+
fs.readFile(`./uploads/${req.params.filename}`); // Attack: ../../../etc/passwd
|
|
44
|
+
|
|
45
|
+
// VULNERABLE: Encoded traversal not decoded before validation
|
|
46
|
+
const decoded = decodeURIComponent(req.params.filename);
|
|
47
|
+
fs.readFile(`./uploads/${decoded}`); // %2e%2e%2f = ../
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### LDAP Injection [6][9]
|
|
51
|
+
```typescript
|
|
52
|
+
// VULNERABLE: Unescaped LDAP filter — CWE-90 [5]
|
|
53
|
+
const filter = `(uid=${username})`;
|
|
54
|
+
ldap.search(baseDN, filter);
|
|
55
|
+
// Attack: username = "admin)(&(password=*)"
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Template Injection (SSTI) [1][20]
|
|
59
|
+
```typescript
|
|
60
|
+
// VULNERABLE: User input as template string
|
|
61
|
+
const template = `Hello ${req.body.name}!`;
|
|
62
|
+
ejs.render(template);
|
|
63
|
+
// Attack: name = "<%= process.env.SECRET %>" — exfiltrates env vars
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Header Injection (CRLF) [1][4]
|
|
67
|
+
```typescript
|
|
68
|
+
// VULNERABLE: CRLF injection in redirect header
|
|
69
|
+
res.setHeader('Location', `/user/${userInput}`);
|
|
70
|
+
// Attack: userInput = "test\r\nSet-Cookie: admin=true" — injects cookie
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Authentication Vulnerabilities [1][2][7]
|
|
76
|
+
|
|
77
|
+
### Weak Password Policies [7]
|
|
78
|
+
```typescript
|
|
79
|
+
// VULNERABLE: Below NIST 800-63 minimum [7]
|
|
80
|
+
if (password.length >= 6) { /* accept */ }
|
|
81
|
+
// NIST requires: ≥8 chars minimum (recommend 15-char passphrase or 12-char complex)
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Session Management Issues [4][7]
|
|
85
|
+
```typescript
|
|
86
|
+
// VULNERABLE: Session ID in URL — logged in access logs, Referer header
|
|
87
|
+
app.get('/dashboard?session=abc123');
|
|
88
|
+
|
|
89
|
+
// VULNERABLE: Predictable session IDs — CWE-330 [5]
|
|
90
|
+
const sessionId = `user_${userId}`; // sequential, enumerable
|
|
91
|
+
|
|
92
|
+
// VULNERABLE: No session timeout — indefinite access after token theft [7]
|
|
93
|
+
// VULNERABLE: No session rotation on login — session fixation attack [4]
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### JWT Misuse [17]
|
|
97
|
+
```typescript
|
|
98
|
+
// VULNERABLE: Weak secret — brute-forceable [17]
|
|
99
|
+
jwt.sign(payload, 'secret123');
|
|
100
|
+
|
|
101
|
+
// VULNERABLE: No expiration — stolen token never expires [17]
|
|
102
|
+
jwt.sign(payload, secret); // no expiresIn
|
|
103
|
+
|
|
104
|
+
// VULNERABLE: No algorithm specification — algorithm confusion attack [17]
|
|
105
|
+
jwt.verify(token, secret); // accepts 'none' algorithm or RS256→HS256 downgrade
|
|
106
|
+
|
|
107
|
+
// VULNERABLE: Storing JWT in localStorage — XSS can exfiltrate [4]
|
|
108
|
+
localStorage.setItem('token', jwt);
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Missing Authorization [1][2]
|
|
112
|
+
```typescript
|
|
113
|
+
// VULNERABLE: No auth check — any user can delete any user [1]
|
|
114
|
+
app.delete('/api/users/:id', async (req, res) => {
|
|
115
|
+
await deleteUser(req.params.id);
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
// VULNERABLE: IDOR — no ownership check (API1: Broken Object Level Auth) [11]
|
|
119
|
+
app.get('/api/orders/:id', requireAuth, async (req, res) => {
|
|
120
|
+
const order = await getOrder(req.params.id); // any user can read any order
|
|
121
|
+
res.json(order);
|
|
122
|
+
});
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Cryptography Vulnerabilities [5][24][25]
|
|
128
|
+
|
|
129
|
+
### Hardcoded Secrets [1][4]
|
|
130
|
+
```typescript
|
|
131
|
+
// VULNERABLE: Secrets in source code — A02:Cryptographic Failures [1]
|
|
132
|
+
const API_KEY = 'sk-abc123xyz789';
|
|
133
|
+
const dbPassword = 'admin123';
|
|
134
|
+
const jwtSecret = 'mysecret';
|
|
135
|
+
|
|
136
|
+
// VULNERABLE: Secrets in config objects committed to git [8]
|
|
137
|
+
const config = { database: { password: 'prod_password_123' } };
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Weak Cryptography [5][25]
|
|
141
|
+
```typescript
|
|
142
|
+
// VULNERABLE: MD5/SHA1 for passwords — broken, rainbow table viable [5][25]
|
|
143
|
+
crypto.createHash('md5').update(password);
|
|
144
|
+
crypto.createHash('sha1').update(password);
|
|
145
|
+
|
|
146
|
+
// VULNERABLE: Password as raw encryption key — no stretching [24]
|
|
147
|
+
crypto.createCipheriv('aes-256-gcm', password, iv); // must use scrypt/Argon2 first
|
|
148
|
+
|
|
149
|
+
// VULNERABLE: ECB mode — identical plaintext blocks produce identical ciphertext [25]
|
|
150
|
+
crypto.createCipheriv('aes-256-ecb', key, null);
|
|
151
|
+
|
|
152
|
+
// VULNERABLE: CBC without authentication — padding oracle, bit-flipping attacks [25]
|
|
153
|
+
crypto.createCipheriv('aes-256-cbc', key, iv); // use GCM for authenticated encryption
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Insecure Random [5][25]
|
|
157
|
+
```typescript
|
|
158
|
+
// VULNERABLE: Math.random for security — predictable, not cryptographic [25]
|
|
159
|
+
const token = Math.random().toString(36);
|
|
160
|
+
const id = Date.now().toString(); // timestamp-based — guessable
|
|
161
|
+
const code = Math.floor(Math.random() * 1000000); // 2FA code — predictable
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Timing Attacks [25]
|
|
165
|
+
```typescript
|
|
166
|
+
// VULNERABLE: Early exit reveals length info through timing [25]
|
|
167
|
+
function verifyToken(provided: string, stored: string): boolean {
|
|
168
|
+
return provided === stored; // short-circuits on first mismatch — timing oracle
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Configuration Vulnerabilities [1][10][15]
|
|
175
|
+
|
|
176
|
+
### Missing Security Headers [10][15]
|
|
177
|
+
```typescript
|
|
178
|
+
// VULNERABLE: No CSP — XSS can load arbitrary scripts [15]
|
|
179
|
+
// VULNERABLE: No HSTS — downgrade to HTTP possible [10]
|
|
180
|
+
// VULNERABLE: No X-Frame-Options — clickjacking possible [10]
|
|
181
|
+
// DETECTION: Check with: curl -I https://yoursite.com | grep -i "content-security\|strict-transport\|x-frame"
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Permissive CORS [1][4]
|
|
185
|
+
```typescript
|
|
186
|
+
// VULNERABLE: Wildcard origin with credentials — CORS bypass [4]
|
|
187
|
+
app.use(cors({ origin: '*', credentials: true }));
|
|
188
|
+
// Credentials + wildcard is rejected by browsers but indicates configuration intent
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Error Information Exposure [4][8]
|
|
192
|
+
```typescript
|
|
193
|
+
// VULNERABLE: Stack trace to client — reveals internals [8]
|
|
194
|
+
res.status(500).json({ error: err.stack });
|
|
195
|
+
|
|
196
|
+
// VULNERABLE: Verbose DB errors — reveals schema structure
|
|
197
|
+
res.status(500).json({ error: err.message }); // e.g. "column 'admin' does not exist"
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## Business Logic Vulnerabilities [1][3]
|
|
203
|
+
|
|
204
|
+
### Race Conditions (TOCTOU) [1][3]
|
|
205
|
+
```typescript
|
|
206
|
+
// VULNERABLE: Time-of-check to time-of-use — double-spend possible [3]
|
|
207
|
+
if (balance >= amount) {
|
|
208
|
+
await withdraw(userId, amount); // another request can execute between check and write
|
|
209
|
+
}
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Mass Assignment [1][11]
|
|
213
|
+
```typescript
|
|
214
|
+
// VULNERABLE: API6:Mass Assignment — user can set role, verified, etc. [11]
|
|
215
|
+
await User.create(req.body);
|
|
216
|
+
await User.update(userId, req.body);
|
|
217
|
+
// Attack: POST { "email": "x@y.com", "role": "admin", "verified": true }
|
|
218
|
+
|
|
219
|
+
// VULNERABLE: Spread operator passes all request fields
|
|
220
|
+
const user = { ...req.body, createdAt: new Date() };
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### SSRF (Server-Side Request Forgery) [1][11]
|
|
224
|
+
```typescript
|
|
225
|
+
// VULNERABLE: Unvalidated URL — can reach internal services [11]
|
|
226
|
+
const response = await fetch(req.body.webhookUrl);
|
|
227
|
+
// Attack: webhookUrl = "http://169.254.169.254/latest/meta-data/" (AWS metadata)
|
|
228
|
+
// Attack: webhookUrl = "http://internal-db:5432/"
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## Supply Chain Vulnerabilities [12][13][18]
|
|
234
|
+
|
|
235
|
+
```typescript
|
|
236
|
+
// VULNERABLE: Unpinned CDN script — CDN compromise delivers malicious code
|
|
237
|
+
// <script src="https://cdn.example.com/lib.js"></script> // no integrity attribute [18]
|
|
238
|
+
|
|
239
|
+
// VULNERABLE: Floating dependency versions — supply chain attack surface [12]
|
|
240
|
+
// "dependencies": { "lodash": "^4.17.0" } // range allows malicious patch releases
|
|
241
|
+
```
|