devflow-kit 1.8.3 → 2.0.1
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 +182 -7
- 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
package/dist/commands/init.js
DELETED
|
@@ -1,738 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { promises as fs } from 'fs';
|
|
3
|
-
import * as path from 'path';
|
|
4
|
-
import { fileURLToPath } from 'url';
|
|
5
|
-
import { dirname } from 'path';
|
|
6
|
-
import * as p from '@clack/prompts';
|
|
7
|
-
import color from 'picocolors';
|
|
8
|
-
import { getInstallationPaths } from '../utils/paths.js';
|
|
9
|
-
import { getGitRoot } from '../utils/git.js';
|
|
10
|
-
import { isClaudeCliAvailable } from '../utils/cli.js';
|
|
11
|
-
import { installViaCli, installViaFileCopy, copyDirectory } from '../utils/installer.js';
|
|
12
|
-
import { installSettings, installManagedSettings, installClaudeignore, discoverProjectGitRoots, updateGitignore, createDocsStructure, createMemoryDir, migrateMemoryFiles, } from '../utils/post-install.js';
|
|
13
|
-
import { DEVFLOW_PLUGINS, LEGACY_SKILL_NAMES, LEGACY_COMMAND_NAMES, buildAssetMaps } from '../plugins.js';
|
|
14
|
-
import { detectPlatform, detectShell, getProfilePath, getSafeDeleteInfo, hasSafeDelete } from '../utils/safe-delete.js';
|
|
15
|
-
import { generateSafeDeleteBlock, installToProfile, removeFromProfile, getInstalledVersion, SAFE_DELETE_BLOCK_VERSION } from '../utils/safe-delete-install.js';
|
|
16
|
-
import { addAmbientHook } from './ambient.js';
|
|
17
|
-
import { addMemoryHooks, removeMemoryHooks } from './memory.js';
|
|
18
|
-
import { addHudStatusLine, removeHudStatusLine } from './hud.js';
|
|
19
|
-
import { loadConfig as loadHudConfig, saveConfig as saveHudConfig } from '../hud/config.js';
|
|
20
|
-
import { readManifest, writeManifest, resolvePluginList, detectUpgrade } from '../utils/manifest.js';
|
|
21
|
-
// Re-export pure functions for tests (canonical source is post-install.ts)
|
|
22
|
-
export { substituteSettingsTemplate, computeGitignoreAppend, applyTeamsConfig, stripTeamsConfig, mergeDenyList, discoverProjectGitRoots } from '../utils/post-install.js';
|
|
23
|
-
export { addAmbientHook, removeAmbientHook, hasAmbientHook } from './ambient.js';
|
|
24
|
-
export { addMemoryHooks, removeMemoryHooks, hasMemoryHooks } from './memory.js';
|
|
25
|
-
export { addHudStatusLine, removeHudStatusLine, hasHudStatusLine } from './hud.js';
|
|
26
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
27
|
-
const __dirname = dirname(__filename);
|
|
28
|
-
/**
|
|
29
|
-
* Parse a comma-separated plugin selection string into normalized plugin names.
|
|
30
|
-
* Validates against known plugins; returns invalid names as errors.
|
|
31
|
-
*/
|
|
32
|
-
export function parsePluginSelection(input, validPlugins) {
|
|
33
|
-
const selected = input.split(',').map(p => {
|
|
34
|
-
const trimmed = p.trim();
|
|
35
|
-
return trimmed.startsWith('devflow-') ? trimmed : `devflow-${trimmed}`;
|
|
36
|
-
});
|
|
37
|
-
const validNames = validPlugins.map(p => p.name);
|
|
38
|
-
const invalid = selected.filter(p => !validNames.includes(p));
|
|
39
|
-
return { selected, invalid };
|
|
40
|
-
}
|
|
41
|
-
export const initCommand = new Command('init')
|
|
42
|
-
.description('Initialize DevFlow for Claude Code')
|
|
43
|
-
.option('--scope <type>', 'Installation scope: user or local (project-only)', /^(user|local)$/i)
|
|
44
|
-
.option('--verbose', 'Show detailed installation output')
|
|
45
|
-
.option('--plugin <names>', 'Install specific plugin(s), comma-separated (e.g., implement,code-review)')
|
|
46
|
-
.option('--teams', 'Enable Agent Teams (peer debate, adversarial review)')
|
|
47
|
-
.option('--no-teams', 'Disable Agent Teams (use parallel subagents instead)')
|
|
48
|
-
.option('--ambient', 'Enable ambient mode (classifies intent, loads skills, orchestrates agents)')
|
|
49
|
-
.option('--no-ambient', 'Disable ambient mode')
|
|
50
|
-
.option('--memory', 'Enable working memory (session context preservation)')
|
|
51
|
-
.option('--no-memory', 'Disable working memory hooks')
|
|
52
|
-
.option('--hud', 'Enable HUD (git info, context usage, session stats)')
|
|
53
|
-
.option('--no-hud', 'Disable HUD status line')
|
|
54
|
-
.option('--hud-only', 'Install only the HUD (no plugins, hooks, or extras)')
|
|
55
|
-
.action(async (options) => {
|
|
56
|
-
// Get package version
|
|
57
|
-
const packageJsonPath = path.resolve(__dirname, '../../package.json');
|
|
58
|
-
let version = '';
|
|
59
|
-
try {
|
|
60
|
-
const packageJson = JSON.parse(await fs.readFile(packageJsonPath, 'utf-8'));
|
|
61
|
-
version = packageJson.version;
|
|
62
|
-
}
|
|
63
|
-
catch {
|
|
64
|
-
version = 'unknown';
|
|
65
|
-
}
|
|
66
|
-
const verbose = options.verbose ?? false;
|
|
67
|
-
// Start the CLI flow
|
|
68
|
-
p.intro(color.bgCyan(color.black(` DevFlow v${version} `)));
|
|
69
|
-
// Determine installation scope
|
|
70
|
-
let scope = 'user';
|
|
71
|
-
if (options.hudOnly) {
|
|
72
|
-
// --hud-only: skip scope prompt, always user scope
|
|
73
|
-
scope = 'user';
|
|
74
|
-
}
|
|
75
|
-
else if (options.scope) {
|
|
76
|
-
const normalizedScope = options.scope.toLowerCase();
|
|
77
|
-
if (normalizedScope !== 'user' && normalizedScope !== 'local') {
|
|
78
|
-
p.log.error('Invalid scope. Use "user" or "local"');
|
|
79
|
-
process.exit(1);
|
|
80
|
-
}
|
|
81
|
-
scope = normalizedScope;
|
|
82
|
-
}
|
|
83
|
-
else if (!process.stdin.isTTY) {
|
|
84
|
-
p.log.info('Non-interactive mode detected, using scope: user');
|
|
85
|
-
scope = 'user';
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
const selected = await p.select({
|
|
89
|
-
message: 'Installation scope',
|
|
90
|
-
options: [
|
|
91
|
-
{ value: 'user', label: 'User', hint: 'all projects (~/.claude/)' },
|
|
92
|
-
{ value: 'local', label: 'Local', hint: 'this project only (./.claude/)' },
|
|
93
|
-
],
|
|
94
|
-
});
|
|
95
|
-
if (p.isCancel(selected)) {
|
|
96
|
-
p.cancel('Installation cancelled.');
|
|
97
|
-
process.exit(0);
|
|
98
|
-
}
|
|
99
|
-
scope = selected;
|
|
100
|
-
}
|
|
101
|
-
// --hud-only: install only HUD (skip plugins, hooks, extras)
|
|
102
|
-
if (options.hudOnly) {
|
|
103
|
-
// Resolve paths
|
|
104
|
-
const paths = await getInstallationPaths(scope);
|
|
105
|
-
const claudeDir = paths.claudeDir;
|
|
106
|
-
const devflowDir = paths.devflowDir;
|
|
107
|
-
// Save HUD config
|
|
108
|
-
const existingHud = loadHudConfig();
|
|
109
|
-
saveHudConfig({ enabled: true, detail: existingHud.detail });
|
|
110
|
-
// Update statusLine in settings.json
|
|
111
|
-
const settingsPath = path.join(claudeDir, 'settings.json');
|
|
112
|
-
try {
|
|
113
|
-
let content;
|
|
114
|
-
try {
|
|
115
|
-
content = await fs.readFile(settingsPath, 'utf-8');
|
|
116
|
-
}
|
|
117
|
-
catch {
|
|
118
|
-
content = '{}';
|
|
119
|
-
}
|
|
120
|
-
const updated = addHudStatusLine(content, devflowDir);
|
|
121
|
-
await fs.writeFile(settingsPath, updated, 'utf-8');
|
|
122
|
-
}
|
|
123
|
-
catch (error) {
|
|
124
|
-
p.log.error(`Failed to update settings: ${error instanceof Error ? error.message : error}`);
|
|
125
|
-
process.exit(1);
|
|
126
|
-
}
|
|
127
|
-
// Copy HUD scripts to devflow dir
|
|
128
|
-
const rootDir = path.resolve(__dirname, '..', '..');
|
|
129
|
-
const scriptsSource = path.join(rootDir, 'scripts');
|
|
130
|
-
const scriptsTarget = path.join(devflowDir, 'scripts');
|
|
131
|
-
try {
|
|
132
|
-
await fs.mkdir(scriptsTarget, { recursive: true });
|
|
133
|
-
// Copy hud.sh
|
|
134
|
-
await fs.copyFile(path.join(scriptsSource, 'hud.sh'), path.join(scriptsTarget, 'hud.sh'));
|
|
135
|
-
// Copy hud/ directory
|
|
136
|
-
const hudSource = path.join(scriptsSource, 'hud');
|
|
137
|
-
const hudTarget = path.join(scriptsTarget, 'hud');
|
|
138
|
-
await copyDirectory(hudSource, hudTarget);
|
|
139
|
-
if (process.platform !== 'win32') {
|
|
140
|
-
await fs.chmod(path.join(scriptsTarget, 'hud.sh'), 0o755);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
catch (error) {
|
|
144
|
-
p.log.error(`Failed to copy HUD scripts: ${error instanceof Error ? error.message : error}`);
|
|
145
|
-
process.exit(1);
|
|
146
|
-
}
|
|
147
|
-
// Write minimal manifest
|
|
148
|
-
const now = new Date().toISOString();
|
|
149
|
-
try {
|
|
150
|
-
await writeManifest(devflowDir, {
|
|
151
|
-
version,
|
|
152
|
-
plugins: [],
|
|
153
|
-
scope,
|
|
154
|
-
features: { teams: false, ambient: false, memory: false, hud: true },
|
|
155
|
-
installedAt: now,
|
|
156
|
-
updatedAt: now,
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
catch { /* non-fatal */ }
|
|
160
|
-
p.log.success('HUD installed');
|
|
161
|
-
p.log.info(`Configure later: ${color.cyan('devflow hud --status')}`);
|
|
162
|
-
p.outro(color.green('HUD-only install complete.'));
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
// Select plugins to install
|
|
166
|
-
let selectedPlugins = [];
|
|
167
|
-
if (options.plugin) {
|
|
168
|
-
const { selected, invalid } = parsePluginSelection(options.plugin, DEVFLOW_PLUGINS);
|
|
169
|
-
selectedPlugins = selected;
|
|
170
|
-
if (invalid.length > 0) {
|
|
171
|
-
p.log.error(`Unknown plugin(s): ${invalid.join(', ')}`);
|
|
172
|
-
p.log.info(`Valid plugins: ${DEVFLOW_PLUGINS.map(pl => pl.name).join(', ')}`);
|
|
173
|
-
process.exit(1);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
else if (process.stdin.isTTY) {
|
|
177
|
-
// Short hints to prevent overflow in multiselect — full descriptions live in plugins.ts
|
|
178
|
-
const pluginHints = {
|
|
179
|
-
'devflow-specify': 'feature specs → GitHub issues',
|
|
180
|
-
'devflow-implement': 'explore, plan, code, review',
|
|
181
|
-
'devflow-code-review': 'parallel specialized reviewers',
|
|
182
|
-
'devflow-resolve': 'fix review issues by risk',
|
|
183
|
-
'devflow-debug': 'competing hypotheses',
|
|
184
|
-
'devflow-self-review': 'Simplifier + Scrutinizer',
|
|
185
|
-
'devflow-typescript': 'TypeScript patterns',
|
|
186
|
-
'devflow-react': 'React patterns',
|
|
187
|
-
'devflow-accessibility': 'WCAG compliance',
|
|
188
|
-
'devflow-frontend-design': 'typography, color, spacing',
|
|
189
|
-
'devflow-go': 'Go patterns',
|
|
190
|
-
'devflow-java': 'Java patterns',
|
|
191
|
-
'devflow-python': 'Python patterns',
|
|
192
|
-
'devflow-rust': 'Rust patterns',
|
|
193
|
-
};
|
|
194
|
-
const choices = DEVFLOW_PLUGINS
|
|
195
|
-
.filter(pl => pl.name !== 'devflow-core-skills' && pl.name !== 'devflow-ambient' && pl.name !== 'devflow-audit-claude')
|
|
196
|
-
.map(pl => ({
|
|
197
|
-
value: pl.name,
|
|
198
|
-
label: pl.name.replace('devflow-', ''),
|
|
199
|
-
hint: pluginHints[pl.name] ?? pl.description,
|
|
200
|
-
}));
|
|
201
|
-
const preSelected = DEVFLOW_PLUGINS
|
|
202
|
-
.filter(pl => !pl.optional && pl.name !== 'devflow-core-skills' && pl.name !== 'devflow-ambient')
|
|
203
|
-
.map(pl => pl.name);
|
|
204
|
-
const pluginSelection = await p.multiselect({
|
|
205
|
-
message: 'Select plugins to install',
|
|
206
|
-
options: choices,
|
|
207
|
-
initialValues: preSelected,
|
|
208
|
-
required: true,
|
|
209
|
-
});
|
|
210
|
-
if (p.isCancel(pluginSelection)) {
|
|
211
|
-
p.cancel('Installation cancelled.');
|
|
212
|
-
process.exit(0);
|
|
213
|
-
}
|
|
214
|
-
selectedPlugins = pluginSelection;
|
|
215
|
-
}
|
|
216
|
-
// Agent Teams variant selection
|
|
217
|
-
let teamsEnabled;
|
|
218
|
-
if (options.teams !== undefined) {
|
|
219
|
-
teamsEnabled = options.teams;
|
|
220
|
-
}
|
|
221
|
-
else if (!process.stdin.isTTY) {
|
|
222
|
-
teamsEnabled = false;
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
p.note('Agent Teams enable peer debate between agents — adversarial\n' +
|
|
226
|
-
'review, competing hypotheses in debugging, and consensus-driven\n' +
|
|
227
|
-
'exploration. Experimental: may be unstable.', 'Agent Teams');
|
|
228
|
-
const teamsChoice = await p.select({
|
|
229
|
-
message: 'Enable Agent Teams?',
|
|
230
|
-
options: [
|
|
231
|
-
{ value: false, label: 'Not yet', hint: 'Recommended' },
|
|
232
|
-
{ value: true, label: 'Yes', hint: 'Experimental' },
|
|
233
|
-
],
|
|
234
|
-
});
|
|
235
|
-
if (p.isCancel(teamsChoice)) {
|
|
236
|
-
p.cancel('Installation cancelled.');
|
|
237
|
-
process.exit(0);
|
|
238
|
-
}
|
|
239
|
-
teamsEnabled = teamsChoice;
|
|
240
|
-
}
|
|
241
|
-
// Ambient mode selection
|
|
242
|
-
let ambientEnabled;
|
|
243
|
-
if (options.ambient !== undefined) {
|
|
244
|
-
ambientEnabled = options.ambient;
|
|
245
|
-
}
|
|
246
|
-
else if (!process.stdin.isTTY) {
|
|
247
|
-
ambientEnabled = true;
|
|
248
|
-
}
|
|
249
|
-
else {
|
|
250
|
-
p.note('Auto-classifies every prompt by intent and depth. Loads relevant\n' +
|
|
251
|
-
'skills automatically and escalates to full agent pipelines\n' +
|
|
252
|
-
'(review, debug, implement) when the task warrants it.\n\n' +
|
|
253
|
-
'Adds a small amount of context to each prompt for classification.', 'Ambient Mode');
|
|
254
|
-
const ambientChoice = await p.select({
|
|
255
|
-
message: 'Enable ambient mode?',
|
|
256
|
-
options: [
|
|
257
|
-
{ value: true, label: 'Yes', hint: 'Recommended' },
|
|
258
|
-
{ value: false, label: 'No', hint: 'Manual skill loading via slash commands' },
|
|
259
|
-
],
|
|
260
|
-
});
|
|
261
|
-
if (p.isCancel(ambientChoice)) {
|
|
262
|
-
p.cancel('Installation cancelled.');
|
|
263
|
-
process.exit(0);
|
|
264
|
-
}
|
|
265
|
-
ambientEnabled = ambientChoice;
|
|
266
|
-
}
|
|
267
|
-
// Working memory selection (defaults ON — foundational feature)
|
|
268
|
-
let memoryEnabled;
|
|
269
|
-
if (options.memory !== undefined) {
|
|
270
|
-
memoryEnabled = options.memory;
|
|
271
|
-
}
|
|
272
|
-
else if (!process.stdin.isTTY) {
|
|
273
|
-
memoryEnabled = true;
|
|
274
|
-
}
|
|
275
|
-
else {
|
|
276
|
-
p.note('Preserves session context across /clear, restarts, and context\n' +
|
|
277
|
-
'compaction. Clear your session at any point and resume right\n' +
|
|
278
|
-
'where you left off.\n\n' +
|
|
279
|
-
'Runs a background agent on session stop that consumes additional\n' +
|
|
280
|
-
'tokens. Consider skipping if token usage is a concern.', 'Working Memory');
|
|
281
|
-
const memoryChoice = await p.confirm({
|
|
282
|
-
message: 'Enable working memory? (Recommended)',
|
|
283
|
-
initialValue: true,
|
|
284
|
-
});
|
|
285
|
-
if (p.isCancel(memoryChoice)) {
|
|
286
|
-
p.cancel('Installation cancelled.');
|
|
287
|
-
process.exit(0);
|
|
288
|
-
}
|
|
289
|
-
memoryEnabled = memoryChoice;
|
|
290
|
-
}
|
|
291
|
-
// HUD selection (yes/no)
|
|
292
|
-
let hudEnabled;
|
|
293
|
-
if (options.hud !== undefined) {
|
|
294
|
-
hudEnabled = options.hud;
|
|
295
|
-
}
|
|
296
|
-
else if (!process.stdin.isTTY) {
|
|
297
|
-
hudEnabled = true;
|
|
298
|
-
}
|
|
299
|
-
else {
|
|
300
|
-
p.note('The HUD displays git branch, context usage, and session stats\n' +
|
|
301
|
-
'in the Claude Code status bar. Configurable via devflow hud.', 'HUD');
|
|
302
|
-
const hudChoice = await p.confirm({
|
|
303
|
-
message: 'Enable HUD? (Recommended)',
|
|
304
|
-
initialValue: true,
|
|
305
|
-
});
|
|
306
|
-
if (p.isCancel(hudChoice)) {
|
|
307
|
-
p.cancel('Installation cancelled.');
|
|
308
|
-
process.exit(0);
|
|
309
|
-
}
|
|
310
|
-
hudEnabled = hudChoice;
|
|
311
|
-
}
|
|
312
|
-
// .claudeignore prompt (needs early git detection)
|
|
313
|
-
const earlyGitRoot = await getGitRoot();
|
|
314
|
-
let claudeignoreEnabled = true;
|
|
315
|
-
let discoveredProjects = [];
|
|
316
|
-
if (earlyGitRoot && process.stdin.isTTY) {
|
|
317
|
-
if (scope === 'user') {
|
|
318
|
-
// User scope: discover all projects and offer batch install
|
|
319
|
-
discoveredProjects = await discoverProjectGitRoots();
|
|
320
|
-
p.note('Scans all projects Claude has worked on and creates a\n' +
|
|
321
|
-
'.claudeignore in each git repository. Excludes secrets,\n' +
|
|
322
|
-
'API keys, dependencies, and build artifacts from context.', '.claudeignore');
|
|
323
|
-
if (discoveredProjects.length > 0) {
|
|
324
|
-
const maxShow = 5;
|
|
325
|
-
const projectLines = discoveredProjects.slice(0, maxShow).join('\n');
|
|
326
|
-
const overflow = discoveredProjects.length > maxShow
|
|
327
|
-
? `\n... (${discoveredProjects.length - maxShow} more)`
|
|
328
|
-
: '';
|
|
329
|
-
p.note(projectLines + overflow, `Discovered ${discoveredProjects.length} projects`);
|
|
330
|
-
const claudeignoreChoice = await p.confirm({
|
|
331
|
-
message: `Install .claudeignore to ${discoveredProjects.length} projects? (Recommended)`,
|
|
332
|
-
initialValue: true,
|
|
333
|
-
});
|
|
334
|
-
if (p.isCancel(claudeignoreChoice)) {
|
|
335
|
-
p.cancel('Installation cancelled.');
|
|
336
|
-
process.exit(0);
|
|
337
|
-
}
|
|
338
|
-
claudeignoreEnabled = claudeignoreChoice;
|
|
339
|
-
}
|
|
340
|
-
else {
|
|
341
|
-
// No projects discovered — fall back to current project only
|
|
342
|
-
const claudeignoreChoice = await p.confirm({
|
|
343
|
-
message: 'Create .claudeignore? (Recommended)',
|
|
344
|
-
initialValue: true,
|
|
345
|
-
});
|
|
346
|
-
if (p.isCancel(claudeignoreChoice)) {
|
|
347
|
-
p.cancel('Installation cancelled.');
|
|
348
|
-
process.exit(0);
|
|
349
|
-
}
|
|
350
|
-
claudeignoreEnabled = claudeignoreChoice;
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
else {
|
|
354
|
-
// Local scope: single-project note
|
|
355
|
-
p.note('Creates a .claudeignore in this project that excludes\n' +
|
|
356
|
-
'secrets, API keys, dependencies, and build artifacts from\n' +
|
|
357
|
-
'Claude\'s context window.', '.claudeignore');
|
|
358
|
-
const claudeignoreChoice = await p.confirm({
|
|
359
|
-
message: 'Create .claudeignore? (Recommended)',
|
|
360
|
-
initialValue: true,
|
|
361
|
-
});
|
|
362
|
-
if (p.isCancel(claudeignoreChoice)) {
|
|
363
|
-
p.cancel('Installation cancelled.');
|
|
364
|
-
process.exit(0);
|
|
365
|
-
}
|
|
366
|
-
claudeignoreEnabled = claudeignoreChoice;
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
else if (!earlyGitRoot) {
|
|
370
|
-
claudeignoreEnabled = false;
|
|
371
|
-
}
|
|
372
|
-
// Safe-delete detection + prompt (all detection early, action deferred)
|
|
373
|
-
const platform = detectPlatform();
|
|
374
|
-
const shell = detectShell();
|
|
375
|
-
const safeDeleteInfo = getSafeDeleteInfo(platform);
|
|
376
|
-
const safeDeleteAvailable = hasSafeDelete(platform);
|
|
377
|
-
const profilePath = getProfilePath(shell);
|
|
378
|
-
let safeDeleteAction = 'skip';
|
|
379
|
-
let safeDeleteBlock = null;
|
|
380
|
-
if (process.stdin.isTTY && profilePath && safeDeleteAvailable) {
|
|
381
|
-
const trashCmd = safeDeleteInfo.command;
|
|
382
|
-
safeDeleteBlock = generateSafeDeleteBlock(shell, process.platform, trashCmd);
|
|
383
|
-
if (safeDeleteBlock) {
|
|
384
|
-
const installedVersion = await getInstalledVersion(profilePath);
|
|
385
|
-
if (installedVersion === SAFE_DELETE_BLOCK_VERSION) {
|
|
386
|
-
safeDeleteAction = 'skip'; // already current
|
|
387
|
-
}
|
|
388
|
-
else if (installedVersion > 0) {
|
|
389
|
-
safeDeleteAction = 'upgrade'; // auto-upgrade, no prompt needed
|
|
390
|
-
}
|
|
391
|
-
else {
|
|
392
|
-
// Fresh install — prompt
|
|
393
|
-
p.note('Overrides rm to use your system trash CLI instead of permanent\n' +
|
|
394
|
-
'deletion. Prevents accidental data loss from rm -rf.', 'Safe Delete');
|
|
395
|
-
const safeDeleteConfirm = await p.confirm({
|
|
396
|
-
message: `Install safe-delete to ${profilePath}? (uses ${trashCmd ?? 'recycle bin'})`,
|
|
397
|
-
initialValue: true,
|
|
398
|
-
});
|
|
399
|
-
if (!p.isCancel(safeDeleteConfirm) && safeDeleteConfirm) {
|
|
400
|
-
safeDeleteAction = 'install';
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
// Security deny list placement (user scope + TTY only — last prompt before install)
|
|
406
|
-
let securityMode = 'user';
|
|
407
|
-
if (scope === 'user' && process.stdin.isTTY) {
|
|
408
|
-
p.note('DevFlow includes a security deny list that blocks dangerous\n' +
|
|
409
|
-
'commands (rm -rf, sudo, eval, etc). It can be installed as a\n' +
|
|
410
|
-
'read-only system file or in your editable settings.json.', 'Security Deny List');
|
|
411
|
-
const securityChoice = await p.select({
|
|
412
|
-
message: 'How should DevFlow install the deny list?',
|
|
413
|
-
options: [
|
|
414
|
-
{ value: 'managed', label: 'Managed settings', hint: 'Recommended — read-only, cannot be overridden' },
|
|
415
|
-
{ value: 'user', label: 'User settings', hint: 'Editable in settings.json' },
|
|
416
|
-
],
|
|
417
|
-
});
|
|
418
|
-
if (p.isCancel(securityChoice)) {
|
|
419
|
-
p.cancel('Installation cancelled.');
|
|
420
|
-
process.exit(0);
|
|
421
|
-
}
|
|
422
|
-
securityMode = securityChoice;
|
|
423
|
-
}
|
|
424
|
-
// Managed settings sudo confirmation (last interactive step — may prompt for password)
|
|
425
|
-
let managedSettingsConfirmed = false;
|
|
426
|
-
if (securityMode === 'managed') {
|
|
427
|
-
p.note('This writes a read-only security deny list to a system directory\n' +
|
|
428
|
-
'and may prompt for your password (sudo).\n\n' +
|
|
429
|
-
'Not sure about this? Paste this into another Claude Code session:\n\n' +
|
|
430
|
-
' "I\'m installing DevFlow and it wants to write a\n' +
|
|
431
|
-
' managed-settings.json file using sudo. Review the source\n' +
|
|
432
|
-
' at https://github.com/dean0x/devflow and tell me if\n' +
|
|
433
|
-
' it\'s safe."', 'Managed Settings');
|
|
434
|
-
const sudoChoice = await p.select({
|
|
435
|
-
message: 'Continue with managed settings?',
|
|
436
|
-
options: [
|
|
437
|
-
{ value: 'yes', label: 'Yes, continue', hint: 'May prompt for your password' },
|
|
438
|
-
{ value: 'no', label: 'No, fall back to settings.json', hint: 'Editable user settings instead' },
|
|
439
|
-
],
|
|
440
|
-
});
|
|
441
|
-
if (p.isCancel(sudoChoice)) {
|
|
442
|
-
p.cancel('Installation cancelled.');
|
|
443
|
-
process.exit(0);
|
|
444
|
-
}
|
|
445
|
-
managedSettingsConfirmed = sudoChoice === 'yes';
|
|
446
|
-
}
|
|
447
|
-
// ╭──────────────────────────────────────────────────────────╮
|
|
448
|
-
// │ All prompts collected — installation begins │
|
|
449
|
-
// ╰──────────────────────────────────────────────────────────╯
|
|
450
|
-
const s = p.spinner();
|
|
451
|
-
s.start('Resolving paths');
|
|
452
|
-
// Get installation paths
|
|
453
|
-
let claudeDir;
|
|
454
|
-
let devflowDir;
|
|
455
|
-
let gitRoot = null;
|
|
456
|
-
try {
|
|
457
|
-
const paths = await getInstallationPaths(scope);
|
|
458
|
-
claudeDir = paths.claudeDir;
|
|
459
|
-
devflowDir = paths.devflowDir;
|
|
460
|
-
gitRoot = paths.gitRoot ?? earlyGitRoot;
|
|
461
|
-
}
|
|
462
|
-
catch (error) {
|
|
463
|
-
s.stop('Path resolution failed');
|
|
464
|
-
p.log.error(`Path configuration error: ${error instanceof Error ? error.message : error}`);
|
|
465
|
-
process.exit(1);
|
|
466
|
-
}
|
|
467
|
-
// Check existing manifest for upgrade detection
|
|
468
|
-
const existingManifest = await readManifest(devflowDir);
|
|
469
|
-
if (existingManifest) {
|
|
470
|
-
const upgrade = detectUpgrade(version, existingManifest.version);
|
|
471
|
-
if (upgrade.isUpgrade) {
|
|
472
|
-
s.message(`Upgrading from v${upgrade.previousVersion} to v${version}`);
|
|
473
|
-
}
|
|
474
|
-
else if (upgrade.isSameVersion) {
|
|
475
|
-
s.message('Reinstalling same version');
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
// Validate target directory
|
|
479
|
-
s.message('Validating target directory');
|
|
480
|
-
if (scope === 'local') {
|
|
481
|
-
try {
|
|
482
|
-
await fs.mkdir(claudeDir, { recursive: true });
|
|
483
|
-
}
|
|
484
|
-
catch (error) {
|
|
485
|
-
s.stop('Installation failed');
|
|
486
|
-
p.log.error(`Failed to create ${claudeDir}: ${error}`);
|
|
487
|
-
process.exit(1);
|
|
488
|
-
}
|
|
489
|
-
}
|
|
490
|
-
else {
|
|
491
|
-
try {
|
|
492
|
-
await fs.access(claudeDir);
|
|
493
|
-
}
|
|
494
|
-
catch {
|
|
495
|
-
s.stop('Installation failed');
|
|
496
|
-
p.log.error(`Claude Code not detected at ${claudeDir}`);
|
|
497
|
-
p.log.info('Install from: https://claude.ai/download');
|
|
498
|
-
process.exit(1);
|
|
499
|
-
}
|
|
500
|
-
}
|
|
501
|
-
// Resolve plugins and deduplication maps
|
|
502
|
-
s.message('Installing components');
|
|
503
|
-
const rootDir = path.resolve(__dirname, '../..');
|
|
504
|
-
const pluginsDir = path.join(rootDir, 'plugins');
|
|
505
|
-
let pluginsToInstall = selectedPlugins.length > 0
|
|
506
|
-
? DEVFLOW_PLUGINS.filter(p => selectedPlugins.includes(p.name))
|
|
507
|
-
: DEVFLOW_PLUGINS.filter(p => !p.optional);
|
|
508
|
-
const coreSkillsPlugin = DEVFLOW_PLUGINS.find(p => p.name === 'devflow-core-skills');
|
|
509
|
-
if (pluginsToInstall.length > 0 && coreSkillsPlugin && !pluginsToInstall.includes(coreSkillsPlugin)) {
|
|
510
|
-
pluginsToInstall = [coreSkillsPlugin, ...pluginsToInstall];
|
|
511
|
-
}
|
|
512
|
-
const ambientPlugin = DEVFLOW_PLUGINS.find(p => p.name === 'devflow-ambient');
|
|
513
|
-
if (ambientEnabled && ambientPlugin && !pluginsToInstall.includes(ambientPlugin)) {
|
|
514
|
-
pluginsToInstall.push(ambientPlugin);
|
|
515
|
-
}
|
|
516
|
-
const { skillsMap, agentsMap } = buildAssetMaps(pluginsToInstall);
|
|
517
|
-
// Install: try native CLI first, fall back to file copy
|
|
518
|
-
const cliAvailable = isClaudeCliAvailable();
|
|
519
|
-
const usedNativeCli = cliAvailable && installViaCli(pluginsToInstall, scope, s);
|
|
520
|
-
if (!usedNativeCli) {
|
|
521
|
-
if (cliAvailable && verbose) {
|
|
522
|
-
p.log.warn('Claude CLI installation failed, falling back to manual copy');
|
|
523
|
-
}
|
|
524
|
-
try {
|
|
525
|
-
await installViaFileCopy({
|
|
526
|
-
plugins: pluginsToInstall,
|
|
527
|
-
claudeDir,
|
|
528
|
-
pluginsDir,
|
|
529
|
-
rootDir,
|
|
530
|
-
devflowDir,
|
|
531
|
-
skillsMap,
|
|
532
|
-
agentsMap,
|
|
533
|
-
isPartialInstall: !!options.plugin,
|
|
534
|
-
teamsEnabled,
|
|
535
|
-
spinner: s,
|
|
536
|
-
});
|
|
537
|
-
}
|
|
538
|
-
catch (error) {
|
|
539
|
-
s.stop('Installation failed');
|
|
540
|
-
p.log.error(`${error}`);
|
|
541
|
-
process.exit(1);
|
|
542
|
-
}
|
|
543
|
-
}
|
|
544
|
-
// Clean up stale skills from previous installations
|
|
545
|
-
s.message('Cleaning up');
|
|
546
|
-
const skillsDir = path.join(claudeDir, 'skills');
|
|
547
|
-
let staleRemoved = 0;
|
|
548
|
-
for (const legacy of LEGACY_SKILL_NAMES) {
|
|
549
|
-
const legacyPath = path.join(skillsDir, legacy);
|
|
550
|
-
try {
|
|
551
|
-
await fs.rm(legacyPath, { recursive: true });
|
|
552
|
-
staleRemoved++;
|
|
553
|
-
}
|
|
554
|
-
catch {
|
|
555
|
-
// Doesn't exist — expected for most entries
|
|
556
|
-
}
|
|
557
|
-
}
|
|
558
|
-
if (staleRemoved > 0 && verbose) {
|
|
559
|
-
p.log.info(`Cleaned up ${staleRemoved} legacy skill(s)`);
|
|
560
|
-
}
|
|
561
|
-
// Clean up stale commands from previous installations (e.g., /review → /code-review)
|
|
562
|
-
const commandsDir = path.join(claudeDir, 'commands', 'devflow');
|
|
563
|
-
let staleCommandsRemoved = 0;
|
|
564
|
-
for (const legacy of LEGACY_COMMAND_NAMES) {
|
|
565
|
-
for (const suffix of ['.md', '-teams.md']) {
|
|
566
|
-
const legacyPath = path.join(commandsDir, `${legacy}${suffix}`);
|
|
567
|
-
try {
|
|
568
|
-
await fs.rm(legacyPath);
|
|
569
|
-
staleCommandsRemoved++;
|
|
570
|
-
}
|
|
571
|
-
catch {
|
|
572
|
-
// Doesn't exist — expected for most entries
|
|
573
|
-
}
|
|
574
|
-
}
|
|
575
|
-
}
|
|
576
|
-
if (staleCommandsRemoved > 0 && verbose) {
|
|
577
|
-
p.log.info(`Cleaned up ${staleCommandsRemoved} legacy command(s)`);
|
|
578
|
-
}
|
|
579
|
-
// === Settings & hooks (all automatic based on collected choices) ===
|
|
580
|
-
s.message('Configuring settings');
|
|
581
|
-
// Determine effective security mode (managed settings executed later, after safe-delete)
|
|
582
|
-
let effectiveSecurityMode = securityMode;
|
|
583
|
-
if (securityMode === 'managed' && !managedSettingsConfirmed) {
|
|
584
|
-
effectiveSecurityMode = 'user';
|
|
585
|
-
}
|
|
586
|
-
await installSettings(claudeDir, rootDir, devflowDir, verbose, teamsEnabled, effectiveSecurityMode);
|
|
587
|
-
const settingsPath = path.join(claudeDir, 'settings.json');
|
|
588
|
-
// Configure ambient hook, memory hooks, and HUD statusLine in a single read-modify-write pass
|
|
589
|
-
try {
|
|
590
|
-
let content = await fs.readFile(settingsPath, 'utf-8');
|
|
591
|
-
const original = content;
|
|
592
|
-
// Ambient hook
|
|
593
|
-
if (ambientEnabled) {
|
|
594
|
-
content = addAmbientHook(content, devflowDir);
|
|
595
|
-
}
|
|
596
|
-
// Memory hooks — always remove-then-add to upgrade hook format (e.g., .sh → run-hook)
|
|
597
|
-
const cleaned = removeMemoryHooks(content);
|
|
598
|
-
content = memoryEnabled ? addMemoryHooks(cleaned, devflowDir) : cleaned;
|
|
599
|
-
// HUD statusLine
|
|
600
|
-
content = hudEnabled
|
|
601
|
-
? addHudStatusLine(content, devflowDir)
|
|
602
|
-
: removeHudStatusLine(content);
|
|
603
|
-
if (content !== original) {
|
|
604
|
-
await fs.writeFile(settingsPath, content, 'utf-8');
|
|
605
|
-
if (verbose) {
|
|
606
|
-
if (ambientEnabled)
|
|
607
|
-
p.log.success('Ambient mode hook installed');
|
|
608
|
-
p.log.info(`Working memory ${memoryEnabled ? 'enabled' : 'disabled'}`);
|
|
609
|
-
p.log.info(`HUD ${hudEnabled ? 'enabled' : 'disabled'}`);
|
|
610
|
-
}
|
|
611
|
-
}
|
|
612
|
-
}
|
|
613
|
-
catch { /* settings.json may not exist yet */ }
|
|
614
|
-
// Ensure .memory/ exists when memory is enabled (hooks are no-ops without it)
|
|
615
|
-
if (memoryEnabled) {
|
|
616
|
-
await createMemoryDir(verbose);
|
|
617
|
-
await migrateMemoryFiles(verbose);
|
|
618
|
-
}
|
|
619
|
-
// Configure HUD
|
|
620
|
-
const existingHud = loadHudConfig();
|
|
621
|
-
saveHudConfig({ enabled: hudEnabled, detail: existingHud.detail });
|
|
622
|
-
// File extras
|
|
623
|
-
if (claudeignoreEnabled) {
|
|
624
|
-
if (scope === 'user' && discoveredProjects.length > 0) {
|
|
625
|
-
const results = await Promise.all(discoveredProjects.map(root => installClaudeignore(root, rootDir, verbose)));
|
|
626
|
-
const created = results.filter(Boolean).length;
|
|
627
|
-
if (created > 0) {
|
|
628
|
-
p.log.success(`.claudeignore created in ${created} project(s)`);
|
|
629
|
-
}
|
|
630
|
-
else {
|
|
631
|
-
p.log.info(`.claudeignore already exists in all ${discoveredProjects.length} project(s)`);
|
|
632
|
-
}
|
|
633
|
-
}
|
|
634
|
-
else if (gitRoot) {
|
|
635
|
-
await installClaudeignore(gitRoot, rootDir, verbose);
|
|
636
|
-
}
|
|
637
|
-
}
|
|
638
|
-
if (scope === 'local' && gitRoot) {
|
|
639
|
-
await updateGitignore(gitRoot, verbose);
|
|
640
|
-
}
|
|
641
|
-
if (scope === 'local') {
|
|
642
|
-
await createDocsStructure(verbose);
|
|
643
|
-
}
|
|
644
|
-
// Safe-delete execution (decision was captured during prompt phase)
|
|
645
|
-
if (safeDeleteAction === 'install' && safeDeleteBlock && profilePath) {
|
|
646
|
-
await installToProfile(profilePath, safeDeleteBlock);
|
|
647
|
-
}
|
|
648
|
-
else if (safeDeleteAction === 'upgrade' && safeDeleteBlock && profilePath) {
|
|
649
|
-
await removeFromProfile(profilePath);
|
|
650
|
-
await installToProfile(profilePath, safeDeleteBlock);
|
|
651
|
-
}
|
|
652
|
-
// Managed settings (last install step — sudo may prompt for password)
|
|
653
|
-
if (securityMode === 'managed' && managedSettingsConfirmed) {
|
|
654
|
-
s.stop('Installing managed settings (may prompt for password)');
|
|
655
|
-
const managed = await installManagedSettings(rootDir, verbose);
|
|
656
|
-
if (!managed) {
|
|
657
|
-
p.log.warn('Managed settings write failed — falling back to user settings');
|
|
658
|
-
}
|
|
659
|
-
s.start('Finalizing');
|
|
660
|
-
}
|
|
661
|
-
s.stop('Installation complete');
|
|
662
|
-
// === Summary ===
|
|
663
|
-
if (usedNativeCli) {
|
|
664
|
-
p.log.success('Installed via Claude plugin system');
|
|
665
|
-
}
|
|
666
|
-
else if (!cliAvailable) {
|
|
667
|
-
p.log.info('Installed via file copy (Claude CLI not available)');
|
|
668
|
-
}
|
|
669
|
-
const installedCommands = pluginsToInstall.flatMap(p => p.commands).filter(c => c.length > 0);
|
|
670
|
-
if (installedCommands.length > 0) {
|
|
671
|
-
const commandsNote = installedCommands
|
|
672
|
-
.map(cmd => color.cyan(cmd))
|
|
673
|
-
.join(' ');
|
|
674
|
-
p.note(commandsNote, 'Available commands');
|
|
675
|
-
}
|
|
676
|
-
// Safe-delete status messages (after spinner)
|
|
677
|
-
if (process.stdin.isTTY && profilePath) {
|
|
678
|
-
if (safeDeleteAction === 'install') {
|
|
679
|
-
p.log.success(`Safe-delete installed to ${color.dim(profilePath)}`);
|
|
680
|
-
p.log.info('Restart your shell or run: ' + color.cyan(`source ${profilePath}`));
|
|
681
|
-
}
|
|
682
|
-
else if (safeDeleteAction === 'upgrade') {
|
|
683
|
-
p.log.success(`Safe-delete upgraded in ${color.dim(profilePath)}`);
|
|
684
|
-
p.log.info('Restart your shell or run: ' + color.cyan(`source ${profilePath}`));
|
|
685
|
-
}
|
|
686
|
-
else if (safeDeleteAvailable && safeDeleteBlock) {
|
|
687
|
-
const installedVersion = await getInstalledVersion(profilePath);
|
|
688
|
-
if (installedVersion === SAFE_DELETE_BLOCK_VERSION) {
|
|
689
|
-
p.log.info(`Safe-delete already configured in ${color.dim(profilePath)}`);
|
|
690
|
-
}
|
|
691
|
-
}
|
|
692
|
-
else if (!safeDeleteAvailable && safeDeleteInfo.installHint) {
|
|
693
|
-
p.log.info(`Install ${color.cyan(safeDeleteInfo.command ?? 'trash')} first: ${color.dim(safeDeleteInfo.installHint)}`);
|
|
694
|
-
p.log.info(`Then re-run ${color.cyan('devflow init')} to auto-configure safe-delete.`);
|
|
695
|
-
}
|
|
696
|
-
}
|
|
697
|
-
else if (!process.stdin.isTTY) {
|
|
698
|
-
if (safeDeleteAvailable && safeDeleteInfo.command) {
|
|
699
|
-
p.log.info(`Safe-delete available (${safeDeleteInfo.command}). Run interactively to auto-install.`);
|
|
700
|
-
}
|
|
701
|
-
else if (safeDeleteInfo.installHint) {
|
|
702
|
-
p.log.info(`Protect against accidental ${color.red('rm -rf')}: ${color.cyan(safeDeleteInfo.installHint)}`);
|
|
703
|
-
}
|
|
704
|
-
}
|
|
705
|
-
// Verbose mode: show details
|
|
706
|
-
if (verbose) {
|
|
707
|
-
const pluginsList = pluginsToInstall
|
|
708
|
-
.map(plugin => `${color.yellow(plugin.name.padEnd(24))}${color.dim(plugin.description)}`)
|
|
709
|
-
.join('\n');
|
|
710
|
-
p.note(pluginsList, 'Installed plugins');
|
|
711
|
-
p.log.info(`Scope: ${scope}`);
|
|
712
|
-
p.log.info(`Claude dir: ${claudeDir}`);
|
|
713
|
-
p.log.info(`DevFlow dir: ${devflowDir}`);
|
|
714
|
-
const totalSkillDeclarations = pluginsToInstall.reduce((sum, p) => sum + p.skills.length, 0);
|
|
715
|
-
const totalAgentDeclarations = pluginsToInstall.reduce((sum, p) => sum + p.agents.length, 0);
|
|
716
|
-
p.log.info(`Deduplication: ${skillsMap.size} unique skills (from ${totalSkillDeclarations} declarations)`);
|
|
717
|
-
p.log.info(`Deduplication: ${agentsMap.size} unique agents (from ${totalAgentDeclarations} declarations)`);
|
|
718
|
-
}
|
|
719
|
-
// Write installation manifest for upgrade tracking (non-fatal — install already succeeded)
|
|
720
|
-
const installedPluginNames = pluginsToInstall.map(pl => pl.name);
|
|
721
|
-
const now = new Date().toISOString();
|
|
722
|
-
const manifestData = {
|
|
723
|
-
version,
|
|
724
|
-
plugins: resolvePluginList(installedPluginNames, existingManifest, !!options.plugin),
|
|
725
|
-
scope,
|
|
726
|
-
features: { teams: teamsEnabled, ambient: ambientEnabled, memory: memoryEnabled, hud: hudEnabled },
|
|
727
|
-
installedAt: existingManifest?.installedAt ?? now,
|
|
728
|
-
updatedAt: now,
|
|
729
|
-
};
|
|
730
|
-
try {
|
|
731
|
-
await writeManifest(devflowDir, manifestData);
|
|
732
|
-
}
|
|
733
|
-
catch (error) {
|
|
734
|
-
p.log.warn(`Failed to write installation manifest (install succeeded): ${error instanceof Error ? error.message : error}`);
|
|
735
|
-
}
|
|
736
|
-
p.outro(color.green('Ready! Run any command in Claude Code to get started.'));
|
|
737
|
-
});
|
|
738
|
-
//# sourceMappingURL=init.js.map
|