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,283 @@
|
|
|
1
|
+
# Validation Issue Detection
|
|
2
|
+
|
|
3
|
+
Grep patterns and report templates for finding validation issues.
|
|
4
|
+
|
|
5
|
+
## Quick Detection Commands
|
|
6
|
+
|
|
7
|
+
### Find Unvalidated Request Body Usage
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Express/Node.js
|
|
11
|
+
grep -rn "req\.body" --include="*.ts" --include="*.js" | grep -v "safeParse\|validate\|schema"
|
|
12
|
+
|
|
13
|
+
# Look for direct property access without validation
|
|
14
|
+
grep -rn "req\.body\.\w" --include="*.ts" --include="*.js"
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### Find Unvalidated Parameters
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Path parameters
|
|
21
|
+
grep -rn "req\.params\.\w" --include="*.ts" --include="*.js" | grep -v "safeParse\|validate"
|
|
22
|
+
|
|
23
|
+
# Query parameters
|
|
24
|
+
grep -rn "req\.query\.\w" --include="*.ts" --include="*.js" | grep -v "safeParse\|validate"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Find SQL Injection Risks
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Template literals with SQL
|
|
31
|
+
grep -rn '`.*SELECT.*\${' --include="*.ts" --include="*.js"
|
|
32
|
+
grep -rn '`.*INSERT.*\${' --include="*.ts" --include="*.js"
|
|
33
|
+
grep -rn '`.*UPDATE.*\${' --include="*.ts" --include="*.js"
|
|
34
|
+
grep -rn '`.*DELETE.*\${' --include="*.ts" --include="*.js"
|
|
35
|
+
|
|
36
|
+
# String concatenation in queries
|
|
37
|
+
grep -rn "'\s*\+\s*.*\+\s*'" --include="*.ts" --include="*.js" | grep -i "select\|insert\|update\|delete"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Find Unvalidated External Data
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# JSON.parse without validation
|
|
44
|
+
grep -rn "JSON\.parse" --include="*.ts" --include="*.js" | grep -v "safeParse\|try"
|
|
45
|
+
|
|
46
|
+
# fetch responses used directly
|
|
47
|
+
grep -rn "\.json()" --include="*.ts" --include="*.js" | grep -v "safeParse\|schema\|validate"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Find Unvalidated Environment Variables
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Direct process.env usage
|
|
54
|
+
grep -rn "process\.env\.\w" --include="*.ts" --include="*.js" | grep -v "safeParse\|validate\|ConfigSchema"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Find Dangerous Functions
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# eval and Function constructor
|
|
61
|
+
grep -rn "eval\s*(" --include="*.ts" --include="*.js"
|
|
62
|
+
grep -rn "new\s*Function\s*(" --include="*.ts" --include="*.js"
|
|
63
|
+
|
|
64
|
+
# JWT decode without verify
|
|
65
|
+
grep -rn "jwt\.decode" --include="*.ts" --include="*.js" | grep -v "jwt\.verify"
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Validation Report Format
|
|
71
|
+
|
|
72
|
+
When validation issues detected:
|
|
73
|
+
|
|
74
|
+
```markdown
|
|
75
|
+
# INPUT VALIDATION ISSUES DETECTED
|
|
76
|
+
|
|
77
|
+
## CRITICAL - Missing Boundary Validation
|
|
78
|
+
**File**: src/api/routes/users.ts:45
|
|
79
|
+
**Issue**: API endpoint accepts unvalidated user input
|
|
80
|
+
**Security Risk**: HIGH - Injection attacks, data corruption possible
|
|
81
|
+
|
|
82
|
+
**Current Code**:
|
|
83
|
+
```typescript
|
|
84
|
+
app.post('/api/users', async (req, res) => {
|
|
85
|
+
const user = await createUser(req.body); // NO VALIDATION
|
|
86
|
+
res.json(user);
|
|
87
|
+
});
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Required Fix**:
|
|
91
|
+
```typescript
|
|
92
|
+
const UserRequestSchema = z.object({
|
|
93
|
+
body: z.object({
|
|
94
|
+
email: z.string().email().max(255),
|
|
95
|
+
name: z.string().min(1).max(100),
|
|
96
|
+
age: z.number().int().min(0).max(150)
|
|
97
|
+
})
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
app.post('/api/users', async (req, res) => {
|
|
101
|
+
const validation = UserRequestSchema.safeParse(req);
|
|
102
|
+
|
|
103
|
+
if (!validation.success) {
|
|
104
|
+
return res.status(400).json({ error: validation.error });
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const result = await createUser(validation.data.body);
|
|
108
|
+
// ... handle result
|
|
109
|
+
});
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**Impact**: Prevents malicious input, ensures data integrity
|
|
113
|
+
|
|
114
|
+
## CRITICAL - Manual Validation Instead of Schema
|
|
115
|
+
**File**: src/services/validation.ts:23
|
|
116
|
+
**Issue**: Manual type checking instead of schema validation
|
|
117
|
+
**Problem**: Scattered validation logic, incomplete checks
|
|
118
|
+
|
|
119
|
+
**Current Code**:
|
|
120
|
+
```typescript
|
|
121
|
+
if (!data.email || typeof data.email !== 'string') {
|
|
122
|
+
throw new Error('Invalid email');
|
|
123
|
+
}
|
|
124
|
+
if (!data.age || typeof data.age !== 'number') {
|
|
125
|
+
throw new Error('Invalid age');
|
|
126
|
+
}
|
|
127
|
+
// ... 15 more manual checks
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**Required Fix**:
|
|
131
|
+
```typescript
|
|
132
|
+
const UserSchema = z.object({
|
|
133
|
+
email: z.string().email().max(255),
|
|
134
|
+
age: z.number().int().min(0).max(150),
|
|
135
|
+
name: z.string().min(1).max(100),
|
|
136
|
+
// All validation rules in one place
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
const validation = UserSchema.safeParse(data);
|
|
140
|
+
if (!validation.success) {
|
|
141
|
+
return { ok: false, error: validation.error };
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Impact**: Centralized validation, type safety, better error messages
|
|
146
|
+
|
|
147
|
+
## CRITICAL - SQL Injection Risk
|
|
148
|
+
**File**: src/database/queries.ts:67
|
|
149
|
+
**Issue**: String interpolation in SQL query
|
|
150
|
+
**Security Risk**: CRITICAL - SQL injection possible
|
|
151
|
+
|
|
152
|
+
**Current Code**:
|
|
153
|
+
```typescript
|
|
154
|
+
const query = `SELECT * FROM users WHERE email = '${email}'`;
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Required Fix**:
|
|
158
|
+
```typescript
|
|
159
|
+
// 1. Validate input
|
|
160
|
+
const validation = EmailSchema.safeParse(email);
|
|
161
|
+
if (!validation.success) {
|
|
162
|
+
return { ok: false, error: new Error('Invalid email') };
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// 2. Use parameterized query
|
|
166
|
+
const query = 'SELECT * FROM users WHERE email = $1';
|
|
167
|
+
const result = await db.query(query, [validation.data]);
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**Impact**: Prevents SQL injection attacks (critical security issue)
|
|
171
|
+
|
|
172
|
+
## HIGH - External API Response Not Validated
|
|
173
|
+
**File**: src/integrations/payment.ts:89
|
|
174
|
+
**Issue**: Trusting external API response without validation
|
|
175
|
+
**Risk**: Application crash if API changes structure
|
|
176
|
+
|
|
177
|
+
**Current Code**:
|
|
178
|
+
```typescript
|
|
179
|
+
const data = await response.json();
|
|
180
|
+
return data.amount; // No validation
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
**Required Fix**:
|
|
184
|
+
```typescript
|
|
185
|
+
const PaymentResponseSchema = z.object({
|
|
186
|
+
amount: z.number().positive(),
|
|
187
|
+
currency: z.string().length(3),
|
|
188
|
+
status: z.enum(['success', 'failed', 'pending'])
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
const validation = PaymentResponseSchema.safeParse(await response.json());
|
|
192
|
+
if (!validation.success) {
|
|
193
|
+
return { ok: false, error: new Error('Invalid payment response') };
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
return { ok: true, value: validation.data.amount };
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Summary
|
|
200
|
+
- **Critical**: X validation issues (Y missing, Z SQL injection risks)
|
|
201
|
+
- **High**: X external data issues
|
|
202
|
+
- **Security Risk**: CRITICAL/HIGH/MEDIUM
|
|
203
|
+
- **Files affected**: X
|
|
204
|
+
|
|
205
|
+
## SECURITY GATE FAILED
|
|
206
|
+
|
|
207
|
+
These validation gaps create serious security vulnerabilities:
|
|
208
|
+
1. SQL injection possible in X locations
|
|
209
|
+
2. Unvalidated user input in Y API endpoints
|
|
210
|
+
3. External data trusted without validation
|
|
211
|
+
|
|
212
|
+
**DO NOT deploy until these are fixed.**
|
|
213
|
+
|
|
214
|
+
## Required Actions
|
|
215
|
+
|
|
216
|
+
1. **Immediate** (Security Critical):
|
|
217
|
+
- Fix SQL injection risks
|
|
218
|
+
- Add validation to all API endpoints
|
|
219
|
+
|
|
220
|
+
2. **High Priority**:
|
|
221
|
+
- Validate all external API responses
|
|
222
|
+
- Validate environment variables on startup
|
|
223
|
+
|
|
224
|
+
3. **Standard**:
|
|
225
|
+
- Replace manual validation with schemas
|
|
226
|
+
- Add validation tests
|
|
227
|
+
|
|
228
|
+
## Implementation Guide
|
|
229
|
+
|
|
230
|
+
**Step 1**: Install validation library
|
|
231
|
+
```bash
|
|
232
|
+
npm install zod # or appropriate library
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
**Step 2**: Define schemas for all boundaries
|
|
236
|
+
```typescript
|
|
237
|
+
// src/validation/schemas.ts
|
|
238
|
+
export const schemas = {
|
|
239
|
+
createUser: UserSchema,
|
|
240
|
+
updateUser: UpdateUserSchema,
|
|
241
|
+
searchQuery: SearchQuerySchema,
|
|
242
|
+
// ... all input shapes
|
|
243
|
+
};
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**Step 3**: Apply at boundaries
|
|
247
|
+
```typescript
|
|
248
|
+
// Validate at entry point
|
|
249
|
+
const validation = schema.safeParse(input);
|
|
250
|
+
// Check result and proceed
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
**Step 4**: Add tests
|
|
254
|
+
```typescript
|
|
255
|
+
// Verify validation catches invalid input
|
|
256
|
+
```
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## Risk Classification
|
|
262
|
+
|
|
263
|
+
| Issue Type | Risk Level | Fix Priority |
|
|
264
|
+
|------------|------------|--------------|
|
|
265
|
+
| SQL injection | CRITICAL | Immediate |
|
|
266
|
+
| Command injection | CRITICAL | Immediate |
|
|
267
|
+
| Path traversal | CRITICAL | Immediate |
|
|
268
|
+
| Missing auth validation | CRITICAL | Immediate |
|
|
269
|
+
| Unvalidated API input | HIGH | Same day |
|
|
270
|
+
| Unvalidated external data | HIGH | Same day |
|
|
271
|
+
| Manual validation | MEDIUM | This sprint |
|
|
272
|
+
| Missing env validation | MEDIUM | This sprint |
|
|
273
|
+
| Incomplete schemas | LOW | Next sprint |
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## Integration Points
|
|
278
|
+
|
|
279
|
+
This skill works with:
|
|
280
|
+
|
|
281
|
+
- **devflow:software-design**: Ensures validation uses Result types, catches fake/incomplete validation
|
|
282
|
+
- **devflow:testing**: Validates boundary tests exist
|
|
283
|
+
- **devflow:security**: Broader security review context
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
# Boundary Validation — Correct Patterns
|
|
2
|
+
|
|
3
|
+
Extended examples of proper validation patterns with literature citations.
|
|
4
|
+
|
|
5
|
+
## Schema Validation at Boundary [1][5]
|
|
6
|
+
|
|
7
|
+
Parse at the boundary, then trust the typed result downstream. The schema is the
|
|
8
|
+
single source of truth for what valid data looks like.
|
|
9
|
+
|
|
10
|
+
```typescript
|
|
11
|
+
import { z } from 'zod';
|
|
12
|
+
|
|
13
|
+
// Schema IS the type definition — no drift possible [5]
|
|
14
|
+
const UserSchema = z.object({
|
|
15
|
+
email: z.string().email().max(255),
|
|
16
|
+
age: z.number().int().min(0).max(150),
|
|
17
|
+
name: z.string().min(1).max(100),
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
type User = z.infer<typeof UserSchema>;
|
|
21
|
+
|
|
22
|
+
// Parse, don't validate: unknown → User | error [1]
|
|
23
|
+
function createUser(data: unknown): Result<User, ValidationError> {
|
|
24
|
+
const parsed = UserSchema.safeParse(data);
|
|
25
|
+
if (!parsed.success) {
|
|
26
|
+
return { ok: false, error: new ValidationError('Invalid user data', parsed.error) };
|
|
27
|
+
}
|
|
28
|
+
return { ok: true, value: parsed.data };
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## API Endpoint — Zero Trust Boundary [3][4]
|
|
35
|
+
|
|
36
|
+
HTTP request data is always hostile. Parse the entire request shape, not just body.
|
|
37
|
+
|
|
38
|
+
```typescript
|
|
39
|
+
const CreateUserRequestSchema = z.object({
|
|
40
|
+
body: UserSchema,
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
app.post('/api/users', async (req, res) => {
|
|
44
|
+
const parsed = CreateUserRequestSchema.safeParse(req);
|
|
45
|
+
if (!parsed.success) {
|
|
46
|
+
return res.status(400).json({
|
|
47
|
+
error: 'Validation failed',
|
|
48
|
+
details: parsed.error.issues, // structured errors for client [5]
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
const result = await createUser(parsed.data.body);
|
|
52
|
+
if (!result.ok) return res.status(500).json({ error: result.error.message });
|
|
53
|
+
res.json(result.value);
|
|
54
|
+
});
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## External API Response [2][3]
|
|
60
|
+
|
|
61
|
+
External APIs can change without notice. Parse responses to detect contract violations
|
|
62
|
+
before they propagate through your system.
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
const ExternalUserSchema = z.object({
|
|
66
|
+
id: z.string().uuid(),
|
|
67
|
+
name: z.string(),
|
|
68
|
+
email: z.string().email(),
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
async function fetchUserData(userId: string): Promise<Result<UserData, Error>> {
|
|
72
|
+
try {
|
|
73
|
+
const response = await fetch(`https://api.example.com/users/${userId}`);
|
|
74
|
+
const parsed = ExternalUserSchema.safeParse(await response.json());
|
|
75
|
+
if (!parsed.success) {
|
|
76
|
+
return { ok: false, error: new Error('External API returned invalid data') };
|
|
77
|
+
}
|
|
78
|
+
return { ok: true, value: parsed.data };
|
|
79
|
+
} catch (error) {
|
|
80
|
+
return { ok: false, error: error as Error };
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Environment Variables — Fail Fast [8]
|
|
88
|
+
|
|
89
|
+
Validate configuration on startup. A misconfigured environment should crash
|
|
90
|
+
immediately, not fail subtly at 3am. [8]
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
const ConfigSchema = z.object({
|
|
94
|
+
port: z.string().regex(/^\d+$/).transform(Number).pipe(z.number().min(1).max(65535)),
|
|
95
|
+
dbUrl: z.string().url().startsWith('postgresql://'),
|
|
96
|
+
apiKey: z.string().min(32).max(128),
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
function loadConfig(): Result<Config, Error> {
|
|
100
|
+
const parsed = ConfigSchema.safeParse({
|
|
101
|
+
port: process.env.PORT,
|
|
102
|
+
dbUrl: process.env.DATABASE_URL,
|
|
103
|
+
apiKey: process.env.API_KEY,
|
|
104
|
+
});
|
|
105
|
+
if (!parsed.success) {
|
|
106
|
+
return { ok: false, error: new Error(`Invalid config: ${parsed.error.message}`) };
|
|
107
|
+
}
|
|
108
|
+
return { ok: true, value: parsed.data };
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Startup: fail-fast pattern [8]
|
|
112
|
+
const configResult = loadConfig();
|
|
113
|
+
if (!configResult.ok) {
|
|
114
|
+
console.error('Failed to load configuration:', configResult.error);
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
const config = configResult.value; // typed, validated, safe
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Database Query with Input Parsing [7][15]
|
|
123
|
+
|
|
124
|
+
Parse input before query. Always use parameterized queries — never interpolate. [15]
|
|
125
|
+
|
|
126
|
+
```typescript
|
|
127
|
+
const EmailSchema = z.string().email().max(255);
|
|
128
|
+
const SearchTermSchema = z.string().min(1).max(100).regex(/^[a-zA-Z0-9\s-]+$/);
|
|
129
|
+
|
|
130
|
+
async function getUserByEmail(email: unknown): Promise<Result<User, Error>> {
|
|
131
|
+
const parsed = EmailSchema.safeParse(email);
|
|
132
|
+
if (!parsed.success) return { ok: false, error: new Error('Invalid email format') };
|
|
133
|
+
try {
|
|
134
|
+
const user = await db.query('SELECT * FROM users WHERE email = $1', [parsed.data]);
|
|
135
|
+
return { ok: true, value: user };
|
|
136
|
+
} catch (error) {
|
|
137
|
+
return { ok: false, error: error as Error };
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## File Upload — Defense in Depth [4]
|
|
145
|
+
|
|
146
|
+
Validate metadata, verify content type matches declared type, enforce size limits.
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
const FileUploadSchema = z.object({
|
|
150
|
+
name: z.string().max(255).regex(/^[a-zA-Z0-9._-]+$/),
|
|
151
|
+
size: z.number().max(10 * 1024 * 1024), // 10MB max
|
|
152
|
+
mimetype: z.enum(['image/jpeg', 'image/png', 'application/pdf']),
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
async function handleUpload(file: unknown): Promise<Result<string, Error>> {
|
|
156
|
+
const parsed = FileUploadSchema.safeParse(file);
|
|
157
|
+
if (!parsed.success) return { ok: false, error: new Error('Invalid file') };
|
|
158
|
+
|
|
159
|
+
// Content sniffing: verify actual content matches declared type [4]
|
|
160
|
+
const buffer = await readFileBuffer(file);
|
|
161
|
+
const detectedType = await fileType.fromBuffer(buffer);
|
|
162
|
+
if (detectedType?.mime !== parsed.data.mimetype) {
|
|
163
|
+
return { ok: false, error: new Error('File type mismatch') };
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
const safeFilename = `${uuid()}_${parsed.data.name}`;
|
|
167
|
+
const safePath = path.join(UPLOAD_DIR, safeFilename);
|
|
168
|
+
await fs.writeFile(safePath, buffer);
|
|
169
|
+
return { ok: true, value: safeFilename };
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## URL Parameters and Query Strings [3][4]
|
|
176
|
+
|
|
177
|
+
```typescript
|
|
178
|
+
const UserIdSchema = z.string().uuid();
|
|
179
|
+
|
|
180
|
+
app.get('/users/:id', async (req, res) => {
|
|
181
|
+
const parsed = UserIdSchema.safeParse(req.params.id);
|
|
182
|
+
if (!parsed.success) return res.status(400).json({ error: 'Invalid user ID' });
|
|
183
|
+
const result = await getUserById(parsed.data);
|
|
184
|
+
if (!result.ok) return res.status(404).json({ error: 'User not found' });
|
|
185
|
+
res.json(result.value);
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
const SearchQuerySchema = z.object({
|
|
189
|
+
q: z.string().min(1).max(100),
|
|
190
|
+
page: z.coerce.number().int().min(1).default(1),
|
|
191
|
+
limit: z.coerce.number().int().min(1).max(100).default(20),
|
|
192
|
+
sort: z.enum(['name', 'date', 'relevance']).default('relevance'),
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
app.get('/search', async (req, res) => {
|
|
196
|
+
const parsed = SearchQuerySchema.safeParse(req.query);
|
|
197
|
+
if (!parsed.success) {
|
|
198
|
+
return res.status(400).json({ error: 'Invalid query', details: parsed.error.issues });
|
|
199
|
+
}
|
|
200
|
+
const { q, page, limit, sort } = parsed.data;
|
|
201
|
+
res.json(await searchService.search(q, { page, limit, sort }));
|
|
202
|
+
});
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Webhook — Verify Then Parse [4][9]
|
|
208
|
+
|
|
209
|
+
Always verify signature before parsing payload. Signature verification prevents
|
|
210
|
+
spoofed events; schema parsing prevents malformed data.
|
|
211
|
+
|
|
212
|
+
```typescript
|
|
213
|
+
const WebhookPayloadSchema = z.object({
|
|
214
|
+
event: z.enum(['payment.completed', 'payment.failed', 'subscription.created']),
|
|
215
|
+
data: z.object({ id: z.string(), amount: z.number().optional(), status: z.string() }),
|
|
216
|
+
timestamp: z.number(),
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
app.post('/webhook', async (req, res) => {
|
|
220
|
+
// Step 1: Verify signature [9]
|
|
221
|
+
const signature = req.headers['x-webhook-signature'];
|
|
222
|
+
const expected = crypto.createHmac('sha256', WEBHOOK_SECRET)
|
|
223
|
+
.update(JSON.stringify(req.body)).digest('hex');
|
|
224
|
+
if (!timingSafeEqual(Buffer.from(signature ?? ''), Buffer.from(expected))) {
|
|
225
|
+
return res.status(401).json({ error: 'Invalid signature' });
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// Step 2: Parse payload [5]
|
|
229
|
+
const parsed = WebhookPayloadSchema.safeParse(req.body);
|
|
230
|
+
if (!parsed.success) return res.status(400).json({ error: 'Invalid payload' });
|
|
231
|
+
|
|
232
|
+
await processWebhookEvent(parsed.data);
|
|
233
|
+
res.sendStatus(200);
|
|
234
|
+
});
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## Form Data Sanitization [3][4]
|
|
240
|
+
|
|
241
|
+
Parse structure, then sanitize content. Output encoding prevents XSS.
|
|
242
|
+
|
|
243
|
+
```typescript
|
|
244
|
+
import DOMPurify from 'isomorphic-dompurify';
|
|
245
|
+
|
|
246
|
+
const ProfileUpdateSchema = z.object({
|
|
247
|
+
bio: z.string().max(500).transform(s => DOMPurify.sanitize(s)),
|
|
248
|
+
website: z.string().url().optional(),
|
|
249
|
+
displayName: z.string().min(1).max(50),
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
app.post('/profile', async (req, res) => {
|
|
253
|
+
const parsed = ProfileUpdateSchema.safeParse(req.body);
|
|
254
|
+
if (!parsed.success) return res.status(400).json({ error: parsed.error });
|
|
255
|
+
await db.users.update(req.userId, parsed.data); // bio already sanitized
|
|
256
|
+
res.json({ success: true });
|
|
257
|
+
});
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## GraphQL Input [3]
|
|
263
|
+
|
|
264
|
+
```typescript
|
|
265
|
+
const UserFilterSchema = z.object({
|
|
266
|
+
name: z.string().max(100).optional(),
|
|
267
|
+
email: z.string().email().optional(),
|
|
268
|
+
status: z.enum(['active', 'inactive']).optional(),
|
|
269
|
+
limit: z.number().int().min(1).max(100).default(20),
|
|
270
|
+
});
|
|
271
|
+
|
|
272
|
+
const resolvers = {
|
|
273
|
+
Query: {
|
|
274
|
+
users: async (_, { filter }) => {
|
|
275
|
+
const parsed = UserFilterSchema.safeParse(filter);
|
|
276
|
+
if (!parsed.success) {
|
|
277
|
+
throw new GraphQLError('Invalid filter', { extensions: { code: 'BAD_USER_INPUT' } });
|
|
278
|
+
}
|
|
279
|
+
return userService.findUsers(parsed.data);
|
|
280
|
+
},
|
|
281
|
+
},
|
|
282
|
+
};
|
|
283
|
+
```
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Boundary Validation — Sources
|
|
2
|
+
|
|
3
|
+
## Primary References
|
|
4
|
+
|
|
5
|
+
| # | Source | Author(s) | Year | Access | Topics |
|
|
6
|
+
|---|--------|-----------|------|--------|--------|
|
|
7
|
+
| 1 | "Parse, don't validate" | Alexis King | 2019 | [Free](https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/) | Core principle: parsing vs validation, type-driven design |
|
|
8
|
+
| 2 | "Secure by Design" Ch. 3–5 | Bernsmed, Deogun, Sawano | 2019 | Purchase | Domain primitives, trust boundaries, input validation architecture |
|
|
9
|
+
| 3 | OWASP Input Validation Cheat Sheet | OWASP Foundation | 2024 | [Free](https://cheatsheetseries.owasp.org/cheatsheets/Input_Validation_Cheat_Sheet.html) | Allow-lists, deny-lists, canonicalization, validation strategies |
|
|
10
|
+
| 4 | OWASP Top 10 (2021) | OWASP Foundation | 2021 | [Free](https://owasp.org/Top10/) | A03:Injection, A08:Software and Data Integrity Failures |
|
|
11
|
+
| 5 | Zod Documentation | Colin McDonnell | 2024 | [Free](https://zod.dev) | TypeScript-first schema validation, safeParse, transforms, pipes |
|
|
12
|
+
| 6 | "Railway Oriented Programming" | Scott Wlaschin | 2014 | [Free](https://fsharpforfunandprofit.com/rop/) | Result type composition, error handling as data flow |
|
|
13
|
+
| 7 | CWE-20: Improper Input Validation | MITRE | 2024 | [Free](https://cwe.mitre.org/data/definitions/20.html) | Root cause taxonomy for input validation failures |
|
|
14
|
+
| 8 | "The Twelve-Factor App" (III. Config) | Adam Wiggins | 2011 | [Free](https://12factor.net/config) | Environment-based config, strict separation, fail-fast startup |
|
|
15
|
+
| 9 | OWASP Webhook Security | OWASP Foundation | 2024 | [Free](https://cheatsheetseries.owasp.org/cheatsheets/Webhook_Security_Cheat_Sheet.html) | Signature verification, replay protection, payload validation |
|
|
16
|
+
| 10 | Pydantic Documentation | Samuel Colvin | 2024 | [Free](https://docs.pydantic.dev) | Python data validation, model_validate, strict mode, custom validators |
|
|
17
|
+
| 11 | go-playground/validator | Dean Karn | 2024 | [Free](https://pkg.go.dev/github.com/go-playground/validator/v10) | Go struct validation, tag-based rules, custom validators |
|
|
18
|
+
| 12 | Serde Documentation | David Tolnay | 2024 | [Free](https://serde.rs) | Rust serialization/deserialization framework |
|
|
19
|
+
| 13 | validator (Rust crate) | Keats | 2024 | [Free](https://docs.rs/validator) | Derive-based Rust validation, struct-level and field-level rules |
|
|
20
|
+
| 14 | Jakarta Bean Validation (JSR 380) | JCP | 2017 | [Free](https://beanvalidation.org/2.0/spec/) | Java annotation-based validation, constraint composition |
|
|
21
|
+
| 15 | OWASP SQL Injection Prevention | OWASP Foundation | 2024 | [Free](https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html) | Parameterized queries, stored procedures, allow-list validation |
|
|
22
|
+
|
|
23
|
+
## Standards & Specifications
|
|
24
|
+
|
|
25
|
+
| # | Source | Org | Access | Topics |
|
|
26
|
+
|---|--------|-----|--------|--------|
|
|
27
|
+
| 16 | "Object-Oriented Software Construction" Ch. 11 | Bertrand Meyer | 1997 | Purchase | Design by Contract — preconditions, postconditions, invariants |
|
|
28
|
+
| 17 | "Making illegal states unrepresentable" | Yaron Minsky | 2011 | [Free](https://blog.janestreet.com/effective-ml-video/) | Type-driven design, eliminating invalid states at compile time |
|
|
29
|
+
| 18 | "Domain Modeling Made Functional" Ch. 3–4 | Scott Wlaschin | 2018 | Purchase | Constrained types, smart constructors, making invalid values impossible |
|
|
30
|
+
| 19 | JSON Schema Specification | JSON Schema Org | 2020 | [Free](https://json-schema.org/specification) | Schema vocabulary, validation keywords, format annotations |
|
|
31
|
+
| 20 | OpenAPI Specification 3.1 | OpenAPI Initiative | 2024 | [Free](https://spec.openapis.org/oas/latest.html) | API schema definitions, request/response validation |
|
|
32
|
+
|
|
33
|
+
## Academic & Research
|
|
34
|
+
|
|
35
|
+
| # | Source | Author(s) | Year | Access | Topics |
|
|
36
|
+
|---|--------|-----------|------|--------|--------|
|
|
37
|
+
| 21 | "The Emperor's Old Clothes" | C.A.R. Hoare | 1981 | [Free](https://dl.acm.org/doi/10.1145/358549.358561) | Billion-dollar mistake (null), importance of type safety |
|
|
38
|
+
| 22 | "Propositions as Types" | Philip Wadler | 2015 | [Free](https://homepages.inf.ed.ac.uk/wadler/papers/propositions-as-types/propositions-as-types.pdf) | Curry-Howard correspondence — types as proofs of properties |
|
|
39
|
+
| 23 | "Typestates for Objects" | Aldrich, Sunshine, Saini, Sparks | 2009 | [Free](https://www.cs.cmu.edu/~aldrich/papers/onward2009-state.pdf) | Typestate pattern — encoding protocol states in the type system |
|
|
40
|
+
| 24 | NIST SP 800-53 Rev. 5 (SI-10) | NIST | 2020 | [Free](https://csrc.nist.gov/publications/detail/sp/800-53/rev-5/final) | Federal information input validation requirements |
|
|
41
|
+
| 25 | "Robustness and Least Power" | Tim Berners-Lee | 2001 | [Free](https://www.w3.org/2001/tag/doc/leastPower.html) | Rule of Least Power — accept strictly, produce liberally (and when not to) |
|