devflow-kit 1.8.2 → 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 +191 -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 +17 -7
- 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,231 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { promises as fs } from 'fs';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import * as os from 'os';
|
|
5
|
+
import * as p from '@clack/prompts';
|
|
6
|
+
import color from 'picocolors';
|
|
7
|
+
import { getClaudeDirectory, getDevFlowDirectory } from '../../targets/claude-code/claude-paths.js';
|
|
8
|
+
import { syncManifestFeature } from '../../core/manifest.js';
|
|
9
|
+
import { writeFileAtomicExclusive } from '../../core/fs-atomic.js';
|
|
10
|
+
const PREAMBLE_HOOK_MARKER = 'preamble';
|
|
11
|
+
const LEGACY_HOOK_MARKER = 'ambient-prompt';
|
|
12
|
+
/** Stale marker from previous installs — cleaned on disable/re-enable */
|
|
13
|
+
const CLASSIFICATION_HOOK_MARKER = 'session-start-classification';
|
|
14
|
+
/** SessionStart orchestrator charter hook — presence-gated by ambient toggle */
|
|
15
|
+
const ORCHESTRATOR_HOOK_MARKER = 'session-start-orchestrator';
|
|
16
|
+
/**
|
|
17
|
+
* Path where the legacy commands rule was installed.
|
|
18
|
+
* The commands rule was removed — this path now exists only to purge the
|
|
19
|
+
* legacy file from prior installs. Managed by ambient.ts directly (not the
|
|
20
|
+
* plugin rules system), so only ambient enable/disable/init paths clean it up.
|
|
21
|
+
*/
|
|
22
|
+
export const COMMANDS_RULE_PATH = path.join(os.homedir(), '.claude', 'rules', 'devflow', 'commands.md');
|
|
23
|
+
/** Filter hook entries from a parsed Settings object for a given event. Returns true if any were removed. */
|
|
24
|
+
function filterHookEntries(settings, eventName, shouldRemove) {
|
|
25
|
+
if (!settings.hooks?.[eventName])
|
|
26
|
+
return false;
|
|
27
|
+
const before = settings.hooks[eventName].length;
|
|
28
|
+
settings.hooks[eventName] = settings.hooks[eventName].filter((matcher) => !shouldRemove(matcher));
|
|
29
|
+
if (settings.hooks[eventName].length === before)
|
|
30
|
+
return false;
|
|
31
|
+
if (settings.hooks[eventName].length === 0) {
|
|
32
|
+
delete settings.hooks[eventName];
|
|
33
|
+
}
|
|
34
|
+
if (Object.keys(settings.hooks).length === 0) {
|
|
35
|
+
delete settings.hooks;
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
/** Add a hook entry for an event if the marker is not already present. Returns true when an entry was added. */
|
|
40
|
+
function ensureHook(settings, eventName, marker, entry) {
|
|
41
|
+
if (settings.hooks?.[eventName]?.some((m) => m.hooks.some((h) => h.command.includes(marker)))) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
settings.hooks ??= {};
|
|
45
|
+
settings.hooks[eventName] ??= [];
|
|
46
|
+
settings.hooks[eventName].push(entry);
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
function isLegacy(matcher) {
|
|
50
|
+
return matcher.hooks.some((h) => h.command.includes(LEGACY_HOOK_MARKER));
|
|
51
|
+
}
|
|
52
|
+
function isAmbient(matcher) {
|
|
53
|
+
return matcher.hooks.some((h) => h.command.includes(PREAMBLE_HOOK_MARKER) || h.command.includes(LEGACY_HOOK_MARKER));
|
|
54
|
+
}
|
|
55
|
+
function isClassification(matcher) {
|
|
56
|
+
return matcher.hooks.some((h) => h.command.includes(CLASSIFICATION_HOOK_MARKER));
|
|
57
|
+
}
|
|
58
|
+
function isOrchestrator(matcher) {
|
|
59
|
+
return matcher.hooks.some((h) => h.command.includes(ORCHESTRATOR_HOOK_MARKER));
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Remove the legacy commands awareness rule file left by prior installs.
|
|
63
|
+
* Idempotent — no-op if the file does not exist.
|
|
64
|
+
* Fail-safe: swallows ALL errors (ENOENT, EACCES, EPERM, EROFS, etc.).
|
|
65
|
+
* This is best-effort cleanup of a deprecated file; it must never abort
|
|
66
|
+
* the primary operation (hook write or settings.json update) that calls it.
|
|
67
|
+
*/
|
|
68
|
+
export async function removeLegacyCommandsRule() {
|
|
69
|
+
try {
|
|
70
|
+
await fs.unlink(COMMANDS_RULE_PATH);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// Intentionally swallow all errors — cleanup is best-effort.
|
|
74
|
+
// ENOENT = already gone (idempotent); EACCES/EPERM/EROFS = unwritable
|
|
75
|
+
// filesystem. Neither should abort the caller's primary operation.
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Add the ambient hooks (preamble UserPromptSubmit + session-start-orchestrator SessionStart)
|
|
80
|
+
* and remove any legacy commands rule. Removes any legacy `ambient-prompt` hook first.
|
|
81
|
+
* Idempotent — each hook is checked before adding so enable repairs partial states.
|
|
82
|
+
* Legacy rule purge runs unconditionally to ensure stale files are always cleaned up.
|
|
83
|
+
*/
|
|
84
|
+
export async function addAmbientHook(settingsJson, devflowDir) {
|
|
85
|
+
const settings = JSON.parse(settingsJson);
|
|
86
|
+
const removedLegacy = filterHookEntries(settings, 'UserPromptSubmit', isLegacy);
|
|
87
|
+
// Sweep stale classification hook from prior installs — symmetric with removeAmbientHook
|
|
88
|
+
const removedClassification = filterHookEntries(settings, 'SessionStart', isClassification);
|
|
89
|
+
const addedPreamble = ensureHook(settings, 'UserPromptSubmit', PREAMBLE_HOOK_MARKER, { hooks: [{ type: 'command', command: path.join(devflowDir, 'scripts', 'hooks', 'run-hook') + ' preamble', timeout: 5 }] });
|
|
90
|
+
const addedOrchestrator = ensureHook(settings, 'SessionStart', ORCHESTRATOR_HOOK_MARKER, { hooks: [{ type: 'command', command: path.join(devflowDir, 'scripts', 'hooks', 'run-hook') + ' session-start-orchestrator', timeout: 10 }] });
|
|
91
|
+
// Purge legacy commands rule (runs before early-return so stale files are always removed)
|
|
92
|
+
await removeLegacyCommandsRule();
|
|
93
|
+
if (!removedLegacy && !removedClassification && !addedPreamble && !addedOrchestrator)
|
|
94
|
+
return settingsJson;
|
|
95
|
+
return JSON.stringify(settings, null, 2) + '\n';
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Remove the ambient hooks from settings JSON and purge any legacy commands rule.
|
|
99
|
+
* Removes preamble + legacy from UserPromptSubmit.
|
|
100
|
+
* Removes session-start-orchestrator from SessionStart.
|
|
101
|
+
* Also removes stale SessionStart classification hook from previous installs.
|
|
102
|
+
* Purges legacy COMMANDS_RULE_PATH if present (runs before early-return).
|
|
103
|
+
* Idempotent — returns unchanged JSON if no ambient hooks were present.
|
|
104
|
+
* Preserves other hooks. Cleans empty arrays/objects.
|
|
105
|
+
*/
|
|
106
|
+
export async function removeAmbientHook(settingsJson) {
|
|
107
|
+
const settings = JSON.parse(settingsJson);
|
|
108
|
+
const removedPrompt = filterHookEntries(settings, 'UserPromptSubmit', isAmbient);
|
|
109
|
+
const removedOrchestrator = filterHookEntries(settings, 'SessionStart', isOrchestrator);
|
|
110
|
+
// Clean up stale classification hooks from previous installs (no longer registered)
|
|
111
|
+
const removedClassification = filterHookEntries(settings, 'SessionStart', isClassification);
|
|
112
|
+
// Purge legacy commands rule (runs before early-return so stale files are always removed)
|
|
113
|
+
await removeLegacyCommandsRule();
|
|
114
|
+
if (!removedPrompt && !removedOrchestrator && !removedClassification)
|
|
115
|
+
return settingsJson;
|
|
116
|
+
return JSON.stringify(settings, null, 2) + '\n';
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Check if the ambient hook (legacy or current) is registered in settings JSON or parsed Settings object.
|
|
120
|
+
* Preamble-authoritative: returns true iff the UserPromptSubmit preamble hook is present.
|
|
121
|
+
* Orchestrator-only (without preamble) is broken partial state → treated as disabled.
|
|
122
|
+
*/
|
|
123
|
+
export function hasAmbientHook(input) {
|
|
124
|
+
const settings = typeof input === 'string' ? JSON.parse(input) : input;
|
|
125
|
+
return settings.hooks?.UserPromptSubmit?.some((matcher) => matcher.hooks.some((h) => h.command.includes(PREAMBLE_HOOK_MARKER) || h.command.includes(LEGACY_HOOK_MARKER))) ?? false;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Check if the orchestrator SessionStart hook is present in settings JSON or parsed Settings object.
|
|
129
|
+
*/
|
|
130
|
+
function hasOrchestratorHook(input) {
|
|
131
|
+
const settings = typeof input === 'string' ? JSON.parse(input) : input;
|
|
132
|
+
return settings.hooks?.SessionStart?.some((matcher) => matcher.hooks.some((h) => h.command.includes(ORCHESTRATOR_HOOK_MARKER))) ?? false;
|
|
133
|
+
}
|
|
134
|
+
export const ambientCommand = new Command('ambient')
|
|
135
|
+
.description('Enable or disable ambient mode (orchestrator charter + plan handoff)')
|
|
136
|
+
.option('--enable', 'Register ambient mode hooks')
|
|
137
|
+
.option('--disable', 'Remove ambient mode hooks')
|
|
138
|
+
.option('--status', 'Check if ambient mode is enabled')
|
|
139
|
+
.action(async (options) => {
|
|
140
|
+
const hasFlag = options.enable || options.disable || options.status;
|
|
141
|
+
if (!hasFlag) {
|
|
142
|
+
p.intro(color.bgMagenta(color.white(' Ambient Mode ')));
|
|
143
|
+
p.note(`${color.cyan('devflow ambient --enable')} Register orchestrator hooks\n` +
|
|
144
|
+
`${color.cyan('devflow ambient --disable')} Remove orchestrator hooks\n` +
|
|
145
|
+
`${color.cyan('devflow ambient --status')} Check current state`, 'Usage');
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
const claudeDir = getClaudeDirectory();
|
|
149
|
+
const settingsPath = path.join(claudeDir, 'settings.json');
|
|
150
|
+
let settingsContent;
|
|
151
|
+
try {
|
|
152
|
+
settingsContent = await fs.readFile(settingsPath, 'utf-8');
|
|
153
|
+
}
|
|
154
|
+
catch (err) {
|
|
155
|
+
if (err.code !== 'ENOENT')
|
|
156
|
+
throw err;
|
|
157
|
+
if (options.status) {
|
|
158
|
+
p.log.info('Ambient mode: disabled (no settings.json found)');
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
// Create minimal settings.json
|
|
162
|
+
settingsContent = '{}';
|
|
163
|
+
}
|
|
164
|
+
// Parse settings once, guarded against corrupt files.
|
|
165
|
+
// hasAmbientHook / hasOrchestratorHook accept Settings directly to avoid re-parsing.
|
|
166
|
+
let parsedSettings;
|
|
167
|
+
try {
|
|
168
|
+
parsedSettings = JSON.parse(settingsContent);
|
|
169
|
+
}
|
|
170
|
+
catch (err) {
|
|
171
|
+
p.log.error(`Could not parse settings.json: ${err.message}`);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
if (options.status) {
|
|
175
|
+
const enabled = hasAmbientHook(parsedSettings);
|
|
176
|
+
const hasOrchestrator = hasOrchestratorHook(parsedSettings);
|
|
177
|
+
const repairHint = enabled !== hasOrchestrator
|
|
178
|
+
? ` ${color.dim('(partial — run devflow ambient --enable to repair)')}`
|
|
179
|
+
: '';
|
|
180
|
+
if (enabled) {
|
|
181
|
+
p.log.info(`Ambient mode: ${color.green('enabled')}${repairHint}`);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
p.log.info(`Ambient mode: ${color.dim('disabled')}${repairHint}`);
|
|
185
|
+
}
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
// Resolve devflow scripts directory.
|
|
189
|
+
// Primary: getDevFlowDirectory() — purpose-built, not coupled to hook path layout.
|
|
190
|
+
// Fallback: infer from Stop hook command path (legacy installs where getDevFlowDirectory
|
|
191
|
+
// may not yet reflect the correct location).
|
|
192
|
+
let devflowDir = getDevFlowDirectory();
|
|
193
|
+
try {
|
|
194
|
+
const stopHook = parsedSettings.hooks?.Stop?.[0]?.hooks?.[0]?.command;
|
|
195
|
+
if (stopHook) {
|
|
196
|
+
const hookBinary = stopHook.split(' ')[0];
|
|
197
|
+
const inferred = path.resolve(hookBinary, '..', '..', '..');
|
|
198
|
+
// Only use inferred path when it differs from the canonical default —
|
|
199
|
+
// this handles legacy installs where the hook was installed to a non-standard location.
|
|
200
|
+
if (inferred !== devflowDir) {
|
|
201
|
+
devflowDir = inferred;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
catch (err) {
|
|
206
|
+
p.log.warn(`Could not resolve devflow directory from Stop hook: ${err.message}`);
|
|
207
|
+
}
|
|
208
|
+
if (options.enable) {
|
|
209
|
+
const updated = await addAmbientHook(settingsContent, devflowDir);
|
|
210
|
+
if (updated === settingsContent) {
|
|
211
|
+
// Both hooks already present — addAmbientHook purges any legacy rule anyway
|
|
212
|
+
p.log.info('Ambient mode already enabled');
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
await writeFileAtomicExclusive(settingsPath, updated);
|
|
216
|
+
await syncManifestFeature(getDevFlowDirectory(), 'ambient', true);
|
|
217
|
+
p.log.success('Ambient mode enabled — orchestrator hooks registered');
|
|
218
|
+
p.log.info(color.dim('Charter at session start, reminder per prompt, plan handoffs auto-run devflow:implement (git repos only)'));
|
|
219
|
+
}
|
|
220
|
+
if (options.disable) {
|
|
221
|
+
const updated = await removeAmbientHook(settingsContent);
|
|
222
|
+
if (updated === settingsContent) {
|
|
223
|
+
p.log.info('Ambient mode already disabled');
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
await writeFileAtomicExclusive(settingsPath, updated);
|
|
227
|
+
await syncManifestFeature(getDevFlowDirectory(), 'ambient', false);
|
|
228
|
+
p.log.success('Ambient mode disabled — hooks removed');
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
//# sourceMappingURL=ambient.js.map
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
// ─── Capture hook utilities ────────────────────────────────────────────────
|
|
3
|
+
//
|
|
4
|
+
// The capture bundle (capture-prompt, capture-turn, capture-question) is
|
|
5
|
+
// always-on, like session-start-context (context.ts) — registered
|
|
6
|
+
// unconditionally by init, removed by uninstall. There is no per-feature
|
|
7
|
+
// toggle: capture hooks only append to the memory/learning queues, gated
|
|
8
|
+
// per-queue internally by each script's own feature-config read (see
|
|
9
|
+
// queue-append's queue_read_gates). Follows the context.ts add/remove/has
|
|
10
|
+
// pattern rather than memory.ts's toggle pattern.
|
|
11
|
+
//
|
|
12
|
+
// IMPORTANT — Stop-array ordering contract: capture-turn MUST be registered
|
|
13
|
+
// BEFORE memory-worker in the Stop hook array (see memory.ts). Settings.json
|
|
14
|
+
// hook arrays run in array order, and memory-worker's throttle/spawn decision
|
|
15
|
+
// assumes the current turn has already been appended to the queue by
|
|
16
|
+
// capture-turn earlier in the same Stop event (append-before-spawn). This
|
|
17
|
+
// module only ever pushes capture-turn; callers (init.ts) must register the
|
|
18
|
+
// capture bundle before the memory bundle to preserve this ordering.
|
|
19
|
+
const CAPTURE_PROMPT_MARKER = 'capture-prompt';
|
|
20
|
+
const CAPTURE_TURN_MARKER = 'capture-turn';
|
|
21
|
+
const CAPTURE_QUESTION_MARKER = 'capture-question';
|
|
22
|
+
const CAPTURE_QUESTION_MATCHER = 'AskUserQuestion';
|
|
23
|
+
/**
|
|
24
|
+
* Map of hook event type → filename marker for the capture hooks.
|
|
25
|
+
* Three hooks total: UserPromptSubmit, Stop, PostToolUse (matcher-scoped).
|
|
26
|
+
*/
|
|
27
|
+
const CAPTURE_HOOK_CONFIG = {
|
|
28
|
+
UserPromptSubmit: CAPTURE_PROMPT_MARKER,
|
|
29
|
+
Stop: CAPTURE_TURN_MARKER,
|
|
30
|
+
PostToolUse: CAPTURE_QUESTION_MARKER,
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Add all 3 capture hooks (UserPromptSubmit, Stop, PostToolUse) to settings JSON.
|
|
34
|
+
* Idempotent — skips hooks that already exist. Returns unchanged JSON if all 3 present.
|
|
35
|
+
* The PostToolUse entry is scoped with `matcher: "AskUserQuestion"` so it only fires
|
|
36
|
+
* for AskUserQuestion tool calls.
|
|
37
|
+
*/
|
|
38
|
+
export function addCaptureHooks(settingsJson, devflowDir) {
|
|
39
|
+
const settings = JSON.parse(settingsJson);
|
|
40
|
+
if (hasCaptureHooks(settings)) {
|
|
41
|
+
return settingsJson;
|
|
42
|
+
}
|
|
43
|
+
if (!settings.hooks) {
|
|
44
|
+
settings.hooks = {};
|
|
45
|
+
}
|
|
46
|
+
for (const [hookType, marker] of Object.entries(CAPTURE_HOOK_CONFIG)) {
|
|
47
|
+
const existing = settings.hooks[hookType] ?? [];
|
|
48
|
+
const alreadyPresent = existing.some((matcher) => matcher.hooks.some((h) => h.command.includes(marker)));
|
|
49
|
+
if (!alreadyPresent) {
|
|
50
|
+
const hookCommand = path.join(devflowDir, 'scripts', 'hooks', 'run-hook') + ` ${marker}`;
|
|
51
|
+
const newEntry = {
|
|
52
|
+
hooks: [
|
|
53
|
+
{
|
|
54
|
+
type: 'command',
|
|
55
|
+
command: hookCommand,
|
|
56
|
+
timeout: 10,
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
};
|
|
60
|
+
if (hookType === 'PostToolUse') {
|
|
61
|
+
newEntry.matcher = CAPTURE_QUESTION_MATCHER;
|
|
62
|
+
}
|
|
63
|
+
if (!settings.hooks[hookType]) {
|
|
64
|
+
settings.hooks[hookType] = [];
|
|
65
|
+
}
|
|
66
|
+
settings.hooks[hookType].push(newEntry);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return JSON.stringify(settings, null, 2) + '\n';
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Remove all capture hooks (UserPromptSubmit, Stop, PostToolUse) from settings JSON.
|
|
73
|
+
* Accepts either a JSON string or a parsed Settings object.
|
|
74
|
+
* Idempotent — returns unchanged JSON if no capture hooks present.
|
|
75
|
+
* Preserves non-capture hooks (e.g. ambient preamble on UserPromptSubmit, memory-worker on Stop).
|
|
76
|
+
*/
|
|
77
|
+
export function removeCaptureHooks(input) {
|
|
78
|
+
// No-change return must match the formatted style of the mutating return
|
|
79
|
+
// below (2-space indent + trailing newline) so object callers can't
|
|
80
|
+
// observe a different representation depending on whether a change
|
|
81
|
+
// happened. String input is returned byte-identical (no re-formatting).
|
|
82
|
+
const settingsJson = typeof input === 'string' ? input : JSON.stringify(input, null, 2) + '\n';
|
|
83
|
+
const settings = typeof input === 'string' ? JSON.parse(input) : structuredClone(input);
|
|
84
|
+
if (!settings.hooks) {
|
|
85
|
+
return settingsJson;
|
|
86
|
+
}
|
|
87
|
+
let changed = false;
|
|
88
|
+
for (const [hookType, marker] of Object.entries(CAPTURE_HOOK_CONFIG)) {
|
|
89
|
+
if (!settings.hooks[hookType]) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
const before = settings.hooks[hookType].length;
|
|
93
|
+
settings.hooks[hookType] = settings.hooks[hookType].filter((matcher) => !matcher.hooks.some((h) => h.command.includes(marker)));
|
|
94
|
+
if (settings.hooks[hookType].length !== before) {
|
|
95
|
+
changed = true;
|
|
96
|
+
}
|
|
97
|
+
if (settings.hooks[hookType].length === 0) {
|
|
98
|
+
delete settings.hooks[hookType];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (settings.hooks && Object.keys(settings.hooks).length === 0) {
|
|
102
|
+
delete settings.hooks;
|
|
103
|
+
}
|
|
104
|
+
if (!changed) {
|
|
105
|
+
return settingsJson;
|
|
106
|
+
}
|
|
107
|
+
return JSON.stringify(settings, null, 2) + '\n';
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Check if ALL 3 capture hooks are registered in settings JSON or parsed Settings object.
|
|
111
|
+
*/
|
|
112
|
+
export function hasCaptureHooks(input) {
|
|
113
|
+
return countCaptureHooks(input) === Object.keys(CAPTURE_HOOK_CONFIG).length;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Count how many of the 3 capture hooks are present (0-3).
|
|
117
|
+
* Accepts either a JSON string or a parsed Settings object.
|
|
118
|
+
*/
|
|
119
|
+
export function countCaptureHooks(input) {
|
|
120
|
+
const settings = typeof input === 'string' ? JSON.parse(input) : input;
|
|
121
|
+
if (!settings.hooks) {
|
|
122
|
+
return 0;
|
|
123
|
+
}
|
|
124
|
+
let count = 0;
|
|
125
|
+
for (const [hookType, marker] of Object.entries(CAPTURE_HOOK_CONFIG)) {
|
|
126
|
+
const matchers = settings.hooks[hookType] ?? [];
|
|
127
|
+
if (matchers.some((matcher) => matcher.hooks.some((h) => h.command.includes(marker)))) {
|
|
128
|
+
count++;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return count;
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=capture.js.map
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compliance prompt helpers for devflow init.
|
|
3
|
+
*
|
|
4
|
+
* CLI-layer module (ADR-013): prompt-rendering logic lives in src/cli/commands/,
|
|
5
|
+
* core business logic stays in src/core/compliance.ts.
|
|
6
|
+
*
|
|
7
|
+
* Applies PF-029: every wizard gate keys on `modePromptShown` (was the Setup-mode
|
|
8
|
+
* p.select prompt actually shown?), never on the mode name, so --recommended (flag,
|
|
9
|
+
* no prompt) and the non-TTY fallback preserve their promptless contracts.
|
|
10
|
+
* Applies PF-014: runComplianceStep never calls process.exit() or throws — callers
|
|
11
|
+
* own the cancel idiom (p.cancel + process.exit(0)), keeping try/finally cleanup safe.
|
|
12
|
+
*/
|
|
13
|
+
import * as p from '@clack/prompts';
|
|
14
|
+
import { COMPLIANCE_FRAMEWORKS } from '../../core/compliance.js';
|
|
15
|
+
// ── Shared prompt content ──────────────────────────────────────────────────────
|
|
16
|
+
/** Message shown on the compliance framework multiselect prompt. */
|
|
17
|
+
export const FRAMEWORK_SELECT_MESSAGE = 'Select compliance frameworks (Enter to skip — generic controls only)';
|
|
18
|
+
/** Build clack multiselect/select options for the compliance framework list. */
|
|
19
|
+
export function frameworkChoices() {
|
|
20
|
+
return COMPLIANCE_FRAMEWORKS.map(fw => ({
|
|
21
|
+
value: fw.id,
|
|
22
|
+
label: fw.label,
|
|
23
|
+
hint: fw.hint,
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Format a padded framework catalogue suitable for a clack note body.
|
|
28
|
+
* Produces: ` gdpr — General Data Protection Regulation`
|
|
29
|
+
*/
|
|
30
|
+
export function formatFrameworkCatalogue() {
|
|
31
|
+
return 'Valid framework IDs:\n' +
|
|
32
|
+
COMPLIANCE_FRAMEWORKS.map(fw => ` ${fw.id.padEnd(10)} — ${fw.hint}`).join('\n');
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Format compliance state for the Recommended-mode summary line and note header.
|
|
36
|
+
*
|
|
37
|
+
* Pure function — no I/O, no side effects.
|
|
38
|
+
* Canonical source lives here; init.ts re-exports it for backward compatibility
|
|
39
|
+
* (tests/init-logic.test.ts imports from init.ts).
|
|
40
|
+
*/
|
|
41
|
+
export function formatComplianceSummary(enabled, frameworks) {
|
|
42
|
+
if (!enabled)
|
|
43
|
+
return 'disabled';
|
|
44
|
+
if (frameworks.length > 0)
|
|
45
|
+
return `enabled (${frameworks.join(', ')})`;
|
|
46
|
+
return 'enabled (generic controls only)';
|
|
47
|
+
}
|
|
48
|
+
// ── Gate predicate ─────────────────────────────────────────────────────────────
|
|
49
|
+
/**
|
|
50
|
+
* Determines whether the compliance wizard step should run for a given init invocation.
|
|
51
|
+
*
|
|
52
|
+
* Gate table (per PF-029: key on modePromptShown, never on the mode name):
|
|
53
|
+
*
|
|
54
|
+
* --recommended flag / !isTTY fallback → no (promptless contract preserved)
|
|
55
|
+
* Interactive mode-prompt → Recommended → yes (modePromptShown=true)
|
|
56
|
+
* --advanced flag / re-init (banner path) → yes (mode='advanced', isTTY=true)
|
|
57
|
+
* Interactive mode-prompt → Advanced → yes (modePromptShown=true)
|
|
58
|
+
* Any path with --compliance / --no-compliance → no (hasCliOverride wins)
|
|
59
|
+
*
|
|
60
|
+
* Pure predicate — no side effects, fully testable without a TTY.
|
|
61
|
+
*/
|
|
62
|
+
export function shouldRunComplianceStep(input) {
|
|
63
|
+
if (input.hasCliOverride)
|
|
64
|
+
return false;
|
|
65
|
+
if (!input.isTTY)
|
|
66
|
+
return false;
|
|
67
|
+
// Advanced path: non-TTY has already exit-1'd, so isTTY=true here → always run.
|
|
68
|
+
// Covers: --advanced flag, re-init banner path, interactive-prompt → advanced.
|
|
69
|
+
if (input.mode === 'advanced')
|
|
70
|
+
return true;
|
|
71
|
+
// Recommended path: only run when the Setup-mode p.select actually ran
|
|
72
|
+
// (user made an active choice). --recommended flag and !isTTY fallback never set
|
|
73
|
+
// modePromptShown=true, preserving their promptless contracts.
|
|
74
|
+
return input.modePromptShown;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Build the real (clack) CompliancePromptIO adapter.
|
|
78
|
+
* Translates clack's cancel symbol into the PromptOutcome discriminated union.
|
|
79
|
+
*/
|
|
80
|
+
export function buildClackCompliancePrompts() {
|
|
81
|
+
return {
|
|
82
|
+
note: (message, title) => p.note(message, title),
|
|
83
|
+
select: async (opts) => {
|
|
84
|
+
const result = await p.select({
|
|
85
|
+
message: opts.message,
|
|
86
|
+
options: opts.options,
|
|
87
|
+
initialValue: opts.initialValue,
|
|
88
|
+
});
|
|
89
|
+
if (p.isCancel(result))
|
|
90
|
+
return { kind: 'cancel' };
|
|
91
|
+
return { kind: 'value', value: result };
|
|
92
|
+
},
|
|
93
|
+
multiselect: async (opts) => {
|
|
94
|
+
const result = await p.multiselect({
|
|
95
|
+
message: opts.message,
|
|
96
|
+
options: opts.options,
|
|
97
|
+
initialValues: opts.initialValues,
|
|
98
|
+
required: opts.required,
|
|
99
|
+
});
|
|
100
|
+
if (p.isCancel(result))
|
|
101
|
+
return { kind: 'cancel' };
|
|
102
|
+
return { kind: 'value', value: result };
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Run the compliance wizard step.
|
|
108
|
+
*
|
|
109
|
+
* Flow:
|
|
110
|
+
* 1. Note — "Current setting: …" header then the framework catalogue.
|
|
111
|
+
* 2. Enable select — labeled Yes / No with hints (seeded from prior state);
|
|
112
|
+
* p.select is immune to Enter-through muscle memory while still preserving
|
|
113
|
+
* the seeded value (ambient-prompt style — per PF-029).
|
|
114
|
+
* 3. If Yes — framework multiselect (seeded, required:false).
|
|
115
|
+
*
|
|
116
|
+
* Returns:
|
|
117
|
+
* {kind:'resolved', state, messages} — step completed; `state` is the chosen
|
|
118
|
+
* ComplianceFeatureState; `messages` are emitted by the caller.
|
|
119
|
+
* {kind:'cancelled'} — user pressed Escape; caller runs p.cancel + process.exit(0).
|
|
120
|
+
*
|
|
121
|
+
* Invariants (PF-014):
|
|
122
|
+
* - Never calls process.exit(), never throws.
|
|
123
|
+
* - Returned arrays never alias seed arrays (defensive copies throughout).
|
|
124
|
+
* - All I/O is routed through the `prompts` parameter (injectable for tests).
|
|
125
|
+
*/
|
|
126
|
+
export async function runComplianceStep(opts) {
|
|
127
|
+
const { seed, prompts } = opts;
|
|
128
|
+
const currentStr = formatComplianceSummary(seed.enabled, seed.frameworks);
|
|
129
|
+
prompts.note(`Current setting: ${currentStr}\n\n` +
|
|
130
|
+
'Stamps the compliance rule with active framework labels and installs\n' +
|
|
131
|
+
'framework reference files into the compliance skill. Only the\n' +
|
|
132
|
+
'frameworks you select are included — zero selection = generic controls.\n\n' +
|
|
133
|
+
formatFrameworkCatalogue(), 'Compliance');
|
|
134
|
+
const enableOutcome = await prompts.select({
|
|
135
|
+
message: 'Enable compliance?',
|
|
136
|
+
options: [
|
|
137
|
+
{ value: true, label: 'Yes', hint: 'stamps frameworks into the compliance rule and skill' },
|
|
138
|
+
{ value: false, label: 'No', hint: 'enable later with devflow compliance --enable' },
|
|
139
|
+
],
|
|
140
|
+
initialValue: seed.enabled,
|
|
141
|
+
});
|
|
142
|
+
if (enableOutcome.kind === 'cancel')
|
|
143
|
+
return { kind: 'cancelled' };
|
|
144
|
+
const enabled = enableOutcome.value;
|
|
145
|
+
if (!enabled) {
|
|
146
|
+
return {
|
|
147
|
+
kind: 'resolved',
|
|
148
|
+
// Never alias seed.frameworks — defensive copy (PF-014).
|
|
149
|
+
state: { enabled: false, frameworks: [...seed.frameworks] },
|
|
150
|
+
messages: [{
|
|
151
|
+
level: 'info',
|
|
152
|
+
text: 'Compliance: disabled — enable later with devflow compliance --enable',
|
|
153
|
+
}],
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
// enabled=true: show framework multiselect
|
|
157
|
+
const multiselectOutcome = await prompts.multiselect({
|
|
158
|
+
message: FRAMEWORK_SELECT_MESSAGE,
|
|
159
|
+
options: frameworkChoices(),
|
|
160
|
+
// Defensive copy: never alias seed.frameworks (PF-014).
|
|
161
|
+
initialValues: [...seed.frameworks],
|
|
162
|
+
required: false,
|
|
163
|
+
});
|
|
164
|
+
if (multiselectOutcome.kind === 'cancel')
|
|
165
|
+
return { kind: 'cancelled' };
|
|
166
|
+
const frameworks = multiselectOutcome.value;
|
|
167
|
+
const fwLabel = frameworks.length > 0 ? frameworks.join(', ') : 'generic controls only';
|
|
168
|
+
return {
|
|
169
|
+
kind: 'resolved',
|
|
170
|
+
state: { enabled: true, frameworks },
|
|
171
|
+
messages: [{ level: 'success', text: `Compliance: enabled (${fwLabel})` }],
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=compliance-prompts.js.map
|