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,337 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* devflow compliance — Enable, disable, set, and check status of the compliance feature.
|
|
3
|
+
*
|
|
4
|
+
* Applies ADR-013: CLI-layer module; pure helpers in src/core/compliance.ts,
|
|
5
|
+
* I/O orchestration in src/targets/claude-code/compliance-install.ts.
|
|
6
|
+
* Applies ADR-001: compliance is manifest-group (like proxy), not config.json-gated.
|
|
7
|
+
* Avoids PF-009: per-artifact failures are warn-not-throw.
|
|
8
|
+
* Avoids PF-015: enable/disable each converge BOTH artifacts unconditionally.
|
|
9
|
+
*/
|
|
10
|
+
import { Command } from 'commander';
|
|
11
|
+
import { promises as fs } from 'fs';
|
|
12
|
+
import * as path from 'path';
|
|
13
|
+
import * as p from '@clack/prompts';
|
|
14
|
+
import color from 'picocolors';
|
|
15
|
+
import { ALWAYS_PRESENT_REFS, COMPLIANCE_FRAMEWORKS, normalizeFrameworks, parseFrameworkList, } from '../../core/compliance.js';
|
|
16
|
+
import { frameworkChoices, FRAMEWORK_SELECT_MESSAGE } from './compliance-prompts.js';
|
|
17
|
+
import { COMPLIANCE_SKILL_TOKENS } from '../../core/compliance-compose.js';
|
|
18
|
+
import { readManifest, writeManifest } from '../../core/manifest.js';
|
|
19
|
+
import { convergeFromManifest } from '../../targets/claude-code/compliance-install.js';
|
|
20
|
+
import { validateRuleShadow, validateSkillShadow } from '../../targets/claude-code/installer.js';
|
|
21
|
+
import { getClaudeDirectory, getDevFlowDirectory, } from '../../targets/claude-code/claude-paths.js';
|
|
22
|
+
// ── Pure resolver ──────────────────────────────────────────────────────────────
|
|
23
|
+
/**
|
|
24
|
+
* Pure resolver: maps (currentState × action) → (nextState, messages).
|
|
25
|
+
*
|
|
26
|
+
* D: Pure function — no I/O, fully testable without filesystem access.
|
|
27
|
+
* The I/O layer (convergeComplianceArtifacts call, manifest write) is
|
|
28
|
+
* always the caller's responsibility.
|
|
29
|
+
* Messages for `enable` include framework IDs drawn from `current.frameworks`
|
|
30
|
+
* as stored in the manifest, which may contain IDs not validated through
|
|
31
|
+
* `parseFrameworkList` (e.g. if the manifest was hand-edited). The `set` case
|
|
32
|
+
* receives `setFrameworks` which callers must pre-validate via parseFrameworkList.
|
|
33
|
+
* The `status` action produces no messages. The `disable` action produces no IDs.
|
|
34
|
+
*
|
|
35
|
+
* Semantics:
|
|
36
|
+
* enable — restore: enabled:true, keep existing frameworks (bare --enable restores)
|
|
37
|
+
* disable — keep: enabled:false, frameworks remembered for re-enable
|
|
38
|
+
* set — replace: enabled:true, setFrameworks replaces exactly (zero allowed)
|
|
39
|
+
* status — no-op: returns current unchanged
|
|
40
|
+
*/
|
|
41
|
+
export function resolveComplianceCliAction(current, action, setFrameworks) {
|
|
42
|
+
switch (action) {
|
|
43
|
+
case 'enable': {
|
|
44
|
+
if (current.enabled) {
|
|
45
|
+
return {
|
|
46
|
+
nextState: current,
|
|
47
|
+
messages: [{ level: 'info', text: 'Compliance already enabled' }],
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
const fwLabel = current.frameworks.length > 0
|
|
51
|
+
? current.frameworks.join(', ')
|
|
52
|
+
: 'none (generic controls only)';
|
|
53
|
+
return {
|
|
54
|
+
nextState: { enabled: true, frameworks: current.frameworks },
|
|
55
|
+
messages: [{ level: 'success', text: `Compliance enabled (frameworks: ${fwLabel})` }],
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
case 'disable': {
|
|
59
|
+
return {
|
|
60
|
+
nextState: { enabled: false, frameworks: current.frameworks },
|
|
61
|
+
messages: [
|
|
62
|
+
{
|
|
63
|
+
level: 'success',
|
|
64
|
+
text: 'Compliance disabled — artifacts removed, frameworks remembered for re-enable',
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
case 'set': {
|
|
70
|
+
const frameworks = setFrameworks ?? [];
|
|
71
|
+
const fwLabel = frameworks.length > 0
|
|
72
|
+
? frameworks.join(', ')
|
|
73
|
+
: 'none (generic controls only)';
|
|
74
|
+
return {
|
|
75
|
+
nextState: { enabled: true, frameworks },
|
|
76
|
+
messages: [{ level: 'success', text: `Compliance enabled (frameworks: ${fwLabel})` }],
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
case 'status': {
|
|
80
|
+
return {
|
|
81
|
+
nextState: current,
|
|
82
|
+
messages: [],
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
default: {
|
|
86
|
+
const _exhaustive = action;
|
|
87
|
+
void _exhaustive;
|
|
88
|
+
return { nextState: current, messages: [] };
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// ── Drift classification ───────────────────────────────────────────────────────
|
|
93
|
+
/**
|
|
94
|
+
* Classify a list of manifest framework IDs that are not currently installed.
|
|
95
|
+
* Separates valid (registry-known) IDs from invalid (unknown) IDs so the status
|
|
96
|
+
* display can recommend the correct remediation for each class.
|
|
97
|
+
*
|
|
98
|
+
* Called by the --status handler to compute drift between the manifest and
|
|
99
|
+
* installed artifacts. Also exported to allow unit testing of the classification
|
|
100
|
+
* logic in isolation.
|
|
101
|
+
*/
|
|
102
|
+
export function classifyDriftMissing(manifestFrameworks, installedRefIds, registryIds) {
|
|
103
|
+
const installedSet = new Set(installedRefIds);
|
|
104
|
+
const missing = manifestFrameworks.filter(id => !installedSet.has(id));
|
|
105
|
+
return {
|
|
106
|
+
validMissing: missing.filter(id => registryIds.has(id)),
|
|
107
|
+
invalidIds: missing.filter(id => !registryIds.has(id)),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
// ── Status helpers ─────────────────────────────────────────────────────────────
|
|
111
|
+
/** Returns true if the compliance skill dir exists at the install target. */
|
|
112
|
+
async function skillInstalled(claudeDir) {
|
|
113
|
+
try {
|
|
114
|
+
await fs.access(path.join(claudeDir, 'skills', 'devflow:compliance'));
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/** Returns the set of installed framework reference IDs from the skill dir. */
|
|
122
|
+
async function installedRefIds(claudeDir) {
|
|
123
|
+
const refDir = path.join(claudeDir, 'skills', 'devflow:compliance', 'references');
|
|
124
|
+
try {
|
|
125
|
+
const entries = await fs.readdir(refDir);
|
|
126
|
+
return entries
|
|
127
|
+
.filter(e => e.endsWith('.md') && !ALWAYS_PRESENT_REFS.includes(e))
|
|
128
|
+
.map(e => path.basename(e, '.md'))
|
|
129
|
+
// S58: sanitize — keep only entries whose basename matches the expected id
|
|
130
|
+
// shape (lowercase letters, digits, hyphens). Strips terminal-escape sequences
|
|
131
|
+
// or path segments that could be injected via a crafted filename.
|
|
132
|
+
.filter(id => /^[a-z0-9-]+$/.test(id));
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
return [];
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/** Returns true if the compliance rule file exists at the install target. */
|
|
139
|
+
async function ruleInstalled(claudeDir) {
|
|
140
|
+
try {
|
|
141
|
+
await fs.access(path.join(claudeDir, 'rules', 'devflow', 'compliance.md'));
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/** Returns true if a user shadow exists for the compliance rule. */
|
|
149
|
+
async function ruleShadowed(devflowDir) {
|
|
150
|
+
const shadowFile = path.join(devflowDir, 'rules', 'compliance.md');
|
|
151
|
+
const state = await validateRuleShadow(shadowFile);
|
|
152
|
+
return state === 'valid';
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Returns the shadow state for the compliance skill:
|
|
156
|
+
* 'none' — no valid shadow present
|
|
157
|
+
* 'shadowed' — shadow present and contains composition tokens (composed normally)
|
|
158
|
+
* 'composition-skipped'— shadow present but token-free (C1 passthrough, no per-framework sections)
|
|
159
|
+
*
|
|
160
|
+
* D: reported in --status so users know their shadow suppresses dynamic composition.
|
|
161
|
+
*/
|
|
162
|
+
async function skillShadowState(devflowDir) {
|
|
163
|
+
const shadowDir = path.join(devflowDir, 'skills', 'compliance');
|
|
164
|
+
const state = await validateSkillShadow(shadowDir);
|
|
165
|
+
if (state !== 'valid')
|
|
166
|
+
return 'none';
|
|
167
|
+
try {
|
|
168
|
+
const skillMd = await fs.readFile(path.join(shadowDir, 'SKILL.md'), 'utf-8');
|
|
169
|
+
const hasTokens = COMPLIANCE_SKILL_TOKENS.some(tok => skillMd.includes(tok));
|
|
170
|
+
return hasTokens ? 'shadowed' : 'composition-skipped';
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
return 'none';
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
export const complianceCommand = new Command('compliance')
|
|
177
|
+
.description('Enable, disable, or configure the compliance feature')
|
|
178
|
+
.option('--enable', 'Enable compliance (restores previously selected frameworks)')
|
|
179
|
+
.option('--disable', 'Disable compliance (artifacts removed; frameworks remembered for re-enable)')
|
|
180
|
+
.option('--status', 'Show compliance state: manifest, installed artifacts, and shadow presence')
|
|
181
|
+
.option('--set <list>', 'Set active frameworks (comma-separated IDs); enables compliance. Use --set "" for zero frameworks (generic controls only)')
|
|
182
|
+
.action(async (options) => {
|
|
183
|
+
const claudeDir = getClaudeDirectory();
|
|
184
|
+
const devflowDir = getDevFlowDirectory();
|
|
185
|
+
const hasFlag = options.enable || options.disable || options.status || options.set !== undefined;
|
|
186
|
+
if (!hasFlag) {
|
|
187
|
+
p.intro(color.bgCyan(color.white(' Compliance ')));
|
|
188
|
+
const validIds = COMPLIANCE_FRAMEWORKS.map(fw => `${fw.id} — ${fw.hint}`).join('\n ');
|
|
189
|
+
p.note(`${color.cyan('devflow compliance --enable')} Enable compliance (restores prior frameworks)\n` +
|
|
190
|
+
`${color.cyan('devflow compliance --disable')} Disable compliance (frameworks remembered)\n` +
|
|
191
|
+
`${color.cyan('devflow compliance --status')} Show current state and installed artifacts\n` +
|
|
192
|
+
`${color.cyan('devflow compliance --set <ids>')} Set active frameworks and enable\n\n` +
|
|
193
|
+
`Valid framework IDs:\n ${validIds}`, 'Usage');
|
|
194
|
+
p.outro(color.dim('Compliance rules are stamped with the active framework labels'));
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
// Validate --set input before any I/O (parse-don't-validate at boundary)
|
|
198
|
+
let setFrameworks;
|
|
199
|
+
if (options.set !== undefined) {
|
|
200
|
+
const parsed = parseFrameworkList(options.set);
|
|
201
|
+
if (!parsed.ok) {
|
|
202
|
+
p.log.error(parsed.error);
|
|
203
|
+
process.exit(1);
|
|
204
|
+
}
|
|
205
|
+
setFrameworks = parsed.value;
|
|
206
|
+
}
|
|
207
|
+
const manifest = await readManifest(devflowDir);
|
|
208
|
+
if (!manifest) {
|
|
209
|
+
p.log.error('No manifest found. Run devflow init first.');
|
|
210
|
+
process.exit(1);
|
|
211
|
+
}
|
|
212
|
+
const current = manifest.features.compliance;
|
|
213
|
+
// ── Status ─────────────────────────────────────────────────────────────────
|
|
214
|
+
if (options.status) {
|
|
215
|
+
const enabledLabel = current.enabled ? color.green('enabled') : color.dim('disabled');
|
|
216
|
+
const fwLabel = current.frameworks.length > 0
|
|
217
|
+
? current.frameworks.join(', ')
|
|
218
|
+
: color.dim('none declared');
|
|
219
|
+
const rulesEnabled = manifest.features.rules;
|
|
220
|
+
const [skillOk, refIds, ruleOk, isRuleShadowed, skillShadow] = await Promise.all([
|
|
221
|
+
skillInstalled(claudeDir),
|
|
222
|
+
installedRefIds(claudeDir),
|
|
223
|
+
ruleInstalled(claudeDir),
|
|
224
|
+
ruleShadowed(devflowDir),
|
|
225
|
+
skillShadowState(devflowDir),
|
|
226
|
+
]);
|
|
227
|
+
// Detect framework drift: manifest says X, installed refs say Y.
|
|
228
|
+
// Invalid IDs (not in the registry) are reported separately from valid-but-missing
|
|
229
|
+
// IDs so the suggested remediation is correct: --enable can reconcile valid IDs,
|
|
230
|
+
// but only --set can remove IDs that are not in the registry.
|
|
231
|
+
const registrySet = new Set(COMPLIANCE_FRAMEWORKS.map(fw => fw.id));
|
|
232
|
+
const manifestSet = new Set(current.frameworks);
|
|
233
|
+
const driftInstalled = refIds.filter(id => !manifestSet.has(id));
|
|
234
|
+
const { validMissing, invalidIds } = classifyDriftMissing(current.frameworks, refIds, registrySet);
|
|
235
|
+
const lines = [
|
|
236
|
+
`State: ${enabledLabel}`,
|
|
237
|
+
`Frameworks: ${fwLabel}`,
|
|
238
|
+
'',
|
|
239
|
+
`Skill: ${skillOk ? color.green('installed') : color.dim('not installed')}` +
|
|
240
|
+
(skillShadow === 'composition-skipped'
|
|
241
|
+
? color.yellow(' [shadowed, composition skipped — per-framework sections absent]')
|
|
242
|
+
: skillShadow === 'shadowed'
|
|
243
|
+
? color.green(' [shadowed]')
|
|
244
|
+
: ''),
|
|
245
|
+
`Rule: ${ruleOk ? color.green('installed') : color.dim('not installed')}` +
|
|
246
|
+
(!ruleOk && current.enabled && !rulesEnabled
|
|
247
|
+
? color.yellow(' (withheld — rules disabled)')
|
|
248
|
+
: '') +
|
|
249
|
+
(isRuleShadowed ? color.green(' [shadowed]') : ''),
|
|
250
|
+
];
|
|
251
|
+
if (driftInstalled.length > 0 || validMissing.length > 0 || invalidIds.length > 0) {
|
|
252
|
+
lines.push('');
|
|
253
|
+
if (driftInstalled.length > 0 || validMissing.length > 0) {
|
|
254
|
+
lines.push(color.yellow('Artifact drift detected (run devflow compliance --enable to reconcile):'));
|
|
255
|
+
if (driftInstalled.length > 0) {
|
|
256
|
+
lines.push(` Installed not in manifest: ${driftInstalled.join(', ')}`);
|
|
257
|
+
}
|
|
258
|
+
if (validMissing.length > 0) {
|
|
259
|
+
lines.push(` In manifest but not installed: ${validMissing.join(', ')}`);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
for (const id of invalidIds) {
|
|
263
|
+
lines.push(color.red(` unknown framework id in manifest (ignored): ${id} — remove with --set`));
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
p.note(lines.join('\n'), 'Compliance Status');
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
// ── Enable / Disable / Set ─────────────────────────────────────────────────
|
|
270
|
+
if (options.enable && options.disable) {
|
|
271
|
+
p.log.error('--enable and --disable are mutually exclusive: specify only one.');
|
|
272
|
+
process.exit(1);
|
|
273
|
+
}
|
|
274
|
+
let action;
|
|
275
|
+
if (options.set !== undefined) {
|
|
276
|
+
action = 'set';
|
|
277
|
+
}
|
|
278
|
+
else if (options.enable) {
|
|
279
|
+
// TTY: prompt for frameworks if no --set provided
|
|
280
|
+
if (process.stdin.isTTY && current.frameworks.length === 0) {
|
|
281
|
+
// Multiselect for frameworks when enabling interactively and no prior selection
|
|
282
|
+
p.note(COMPLIANCE_FRAMEWORKS.map(fw => `${color.cyan(fw.id)} — ${fw.hint}`).join('\n'), 'Available Frameworks');
|
|
283
|
+
const selected = await p.multiselect({
|
|
284
|
+
message: FRAMEWORK_SELECT_MESSAGE,
|
|
285
|
+
options: frameworkChoices(),
|
|
286
|
+
initialValues: current.frameworks,
|
|
287
|
+
required: false,
|
|
288
|
+
});
|
|
289
|
+
if (p.isCancel(selected)) {
|
|
290
|
+
p.cancel('Cancelled');
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
setFrameworks = selected;
|
|
294
|
+
action = 'set';
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
action = 'enable';
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
action = 'disable';
|
|
302
|
+
}
|
|
303
|
+
const resolved = resolveComplianceCliAction(current, action, setFrameworks);
|
|
304
|
+
// Converge artifacts (PF-015: always converge, never short-circuit)
|
|
305
|
+
await convergeFromManifest({
|
|
306
|
+
claudeDir,
|
|
307
|
+
devflowDir,
|
|
308
|
+
manifest: { features: { compliance: resolved.nextState, rules: manifest.features.rules } },
|
|
309
|
+
warn: (msg) => p.log.warn(msg),
|
|
310
|
+
});
|
|
311
|
+
// Persist to manifest — normalizeFrameworks deduplicates (e.g. --set gdpr,GDPR → [gdpr])
|
|
312
|
+
manifest.features.compliance = {
|
|
313
|
+
enabled: resolved.nextState.enabled,
|
|
314
|
+
frameworks: normalizeFrameworks(resolved.nextState.frameworks),
|
|
315
|
+
};
|
|
316
|
+
manifest.updatedAt = new Date().toISOString();
|
|
317
|
+
await writeManifest(devflowDir, manifest);
|
|
318
|
+
// Emit messages
|
|
319
|
+
for (const msg of resolved.messages) {
|
|
320
|
+
switch (msg.level) {
|
|
321
|
+
case 'success':
|
|
322
|
+
p.log.success(msg.text);
|
|
323
|
+
break;
|
|
324
|
+
case 'warn':
|
|
325
|
+
p.log.warn(msg.text);
|
|
326
|
+
break;
|
|
327
|
+
default:
|
|
328
|
+
p.log.info(msg.text);
|
|
329
|
+
break;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
if (resolved.nextState.enabled && !manifest.features.rules) {
|
|
333
|
+
p.log.info(color.dim('Note: compliance rule withheld (rules disabled) — ' +
|
|
334
|
+
'run `devflow rules --enable` to install the stamped rule'));
|
|
335
|
+
}
|
|
336
|
+
});
|
|
337
|
+
//# sourceMappingURL=compliance.js.map
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
// ─── Context hook utilities ────────────────────────────────────────────────
|
|
3
|
+
//
|
|
4
|
+
// The session-start-context hook is always-on (registered unconditionally by
|
|
5
|
+
// init, removed by uninstall). It has internal sentinel awareness per feature.
|
|
6
|
+
const CONTEXT_HOOK_MARKER = 'session-start-context';
|
|
7
|
+
/**
|
|
8
|
+
* Add the session-start-context hook to SessionStart in settings JSON.
|
|
9
|
+
* Idempotent — returns unchanged JSON if hook already present.
|
|
10
|
+
*/
|
|
11
|
+
export function addContextHook(settingsJson, devflowDir) {
|
|
12
|
+
if (hasContextHook(settingsJson)) {
|
|
13
|
+
return settingsJson;
|
|
14
|
+
}
|
|
15
|
+
const settings = JSON.parse(settingsJson);
|
|
16
|
+
if (!settings.hooks) {
|
|
17
|
+
settings.hooks = {};
|
|
18
|
+
}
|
|
19
|
+
const hookCommand = path.join(devflowDir, 'scripts', 'hooks', 'run-hook') + ` ${CONTEXT_HOOK_MARKER}`;
|
|
20
|
+
const newEntry = {
|
|
21
|
+
hooks: [
|
|
22
|
+
{
|
|
23
|
+
type: 'command',
|
|
24
|
+
command: hookCommand,
|
|
25
|
+
timeout: 10,
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
};
|
|
29
|
+
if (!settings.hooks.SessionStart) {
|
|
30
|
+
settings.hooks.SessionStart = [];
|
|
31
|
+
}
|
|
32
|
+
settings.hooks.SessionStart.push(newEntry);
|
|
33
|
+
return JSON.stringify(settings, null, 2) + '\n';
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Remove the session-start-context hook from settings JSON.
|
|
37
|
+
* Idempotent — returns unchanged JSON if hook not present.
|
|
38
|
+
* Preserves all other SessionStart hooks.
|
|
39
|
+
*/
|
|
40
|
+
export function removeContextHook(settingsJson) {
|
|
41
|
+
const settings = JSON.parse(settingsJson);
|
|
42
|
+
if (!settings.hooks?.SessionStart) {
|
|
43
|
+
return settingsJson;
|
|
44
|
+
}
|
|
45
|
+
const before = settings.hooks.SessionStart.length;
|
|
46
|
+
settings.hooks.SessionStart = settings.hooks.SessionStart.filter((matcher) => !matcher.hooks.some((h) => h.command.includes(CONTEXT_HOOK_MARKER)));
|
|
47
|
+
if (settings.hooks.SessionStart.length === before) {
|
|
48
|
+
return settingsJson;
|
|
49
|
+
}
|
|
50
|
+
if (settings.hooks.SessionStart.length === 0) {
|
|
51
|
+
delete settings.hooks.SessionStart;
|
|
52
|
+
}
|
|
53
|
+
if (Object.keys(settings.hooks).length === 0) {
|
|
54
|
+
delete settings.hooks;
|
|
55
|
+
}
|
|
56
|
+
return JSON.stringify(settings, null, 2) + '\n';
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Check if the session-start-context hook is present in settings JSON.
|
|
60
|
+
* Accepts either a JSON string or a parsed Settings object.
|
|
61
|
+
*/
|
|
62
|
+
export function hasContextHook(input) {
|
|
63
|
+
const settings = typeof input === 'string' ? JSON.parse(input) : input;
|
|
64
|
+
return settings.hooks?.SessionStart?.some((matcher) => matcher.hooks.some((h) => h.command.includes(CONTEXT_HOOK_MARKER))) ?? false;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { promises as fs } from 'fs';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import * as p from '@clack/prompts';
|
|
5
|
+
import color from 'picocolors';
|
|
6
|
+
import { getClaudeDirectory, getHomeDirectory } from '../../targets/claude-code/claude-paths.js';
|
|
7
|
+
// ─── Pure functions — no I/O, fully testable ─────────────────────────────────
|
|
8
|
+
/**
|
|
9
|
+
* Apply DEVFLOW_HOOK_DEBUG=1 to a settings JSON string.
|
|
10
|
+
* Returns a new serialized settings string. Does not mutate.
|
|
11
|
+
* Follows the applyFlags pattern from flags.ts.
|
|
12
|
+
*/
|
|
13
|
+
export function applyDebugTrace(settingsJson) {
|
|
14
|
+
const settings = JSON.parse(settingsJson);
|
|
15
|
+
settings.env ??= {};
|
|
16
|
+
settings.env.DEVFLOW_HOOK_DEBUG = '1';
|
|
17
|
+
return JSON.stringify(settings, null, 2) + '\n';
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Remove DEVFLOW_HOOK_DEBUG from a settings JSON string.
|
|
21
|
+
* Removes the env object entirely when it becomes empty.
|
|
22
|
+
* Returns a new serialized settings string. Does not mutate.
|
|
23
|
+
* Follows the stripFlags pattern from flags.ts.
|
|
24
|
+
*/
|
|
25
|
+
export function stripDebugTrace(settingsJson) {
|
|
26
|
+
const settings = JSON.parse(settingsJson);
|
|
27
|
+
const env = settings.env;
|
|
28
|
+
if (env) {
|
|
29
|
+
delete env.DEVFLOW_HOOK_DEBUG;
|
|
30
|
+
if (Object.keys(env).length === 0) {
|
|
31
|
+
delete settings.env;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return JSON.stringify(settings, null, 2) + '\n';
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Read the debug tracing state from a settings JSON string.
|
|
38
|
+
* Returns true when DEVFLOW_HOOK_DEBUG === '1'.
|
|
39
|
+
*/
|
|
40
|
+
export function readDebugStatus(settingsJson) {
|
|
41
|
+
const settings = JSON.parse(settingsJson);
|
|
42
|
+
const rawEnv = settings.env;
|
|
43
|
+
if (typeof rawEnv !== 'object' || rawEnv === null || Array.isArray(rawEnv))
|
|
44
|
+
return false;
|
|
45
|
+
return rawEnv.DEVFLOW_HOOK_DEBUG === '1';
|
|
46
|
+
}
|
|
47
|
+
// ─── Command — thin I/O wrapper over the pure functions ──────────────────────
|
|
48
|
+
export const debugCommand = new Command('debug')
|
|
49
|
+
.description('Toggle hook debug tracing (DEVFLOW_HOOK_DEBUG)')
|
|
50
|
+
.option('--enable', 'Enable debug tracing (DEVFLOW_HOOK_DEBUG=1)')
|
|
51
|
+
.option('--disable', 'Disable debug tracing')
|
|
52
|
+
.option('--status', 'Show debug state and log location')
|
|
53
|
+
.action(async (options) => {
|
|
54
|
+
const claudeDir = getClaudeDirectory();
|
|
55
|
+
const settingsPath = path.join(claudeDir, 'settings.json');
|
|
56
|
+
if (options.status) {
|
|
57
|
+
// Status reads current state — parse settings independently of the
|
|
58
|
+
// shared read/parse/write pattern to keep the branch self-contained.
|
|
59
|
+
let settingsJson;
|
|
60
|
+
try {
|
|
61
|
+
settingsJson = await fs.readFile(settingsPath, 'utf-8');
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
settingsJson = '{}';
|
|
65
|
+
}
|
|
66
|
+
let enabled = false;
|
|
67
|
+
try {
|
|
68
|
+
enabled = readDebugStatus(settingsJson);
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// malformed — treat as disabled
|
|
72
|
+
}
|
|
73
|
+
p.log.info(`Debug tracing: ${enabled ? color.green('enabled') : color.dim('disabled')}`);
|
|
74
|
+
const cwd = process.cwd();
|
|
75
|
+
const slug = cwd.replace(/^\//, '').replace(/\//g, '-');
|
|
76
|
+
const home = getHomeDirectory();
|
|
77
|
+
const logPath = path.join(home, '.devflow', 'logs', slug, '.hook-debug.log');
|
|
78
|
+
p.log.info(`Log file: ${color.dim(logPath)}`);
|
|
79
|
+
if (enabled) {
|
|
80
|
+
p.log.info(color.dim(`Tip: tail -f ${logPath}`));
|
|
81
|
+
}
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
// Read current settings (shared by enable and disable paths)
|
|
85
|
+
let settingsJson;
|
|
86
|
+
try {
|
|
87
|
+
settingsJson = await fs.readFile(settingsPath, 'utf-8');
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
settingsJson = '{}';
|
|
91
|
+
}
|
|
92
|
+
if (options.enable) {
|
|
93
|
+
let updated;
|
|
94
|
+
try {
|
|
95
|
+
updated = applyDebugTrace(settingsJson);
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
p.log.error('settings.json is malformed — fix it before modifying env vars');
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
await fs.writeFile(settingsPath, updated, 'utf-8');
|
|
102
|
+
p.log.success('Hook debug tracing enabled');
|
|
103
|
+
p.log.info(color.dim('Remember to disable after debugging: devflow debug --disable'));
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
if (options.disable) {
|
|
107
|
+
let updated;
|
|
108
|
+
try {
|
|
109
|
+
updated = stripDebugTrace(settingsJson);
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
p.log.error('settings.json is malformed — fix it before modifying env vars');
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
await fs.writeFile(settingsPath, updated, 'utf-8');
|
|
116
|
+
p.log.success('Hook debug tracing disabled');
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
// No option — show usage
|
|
120
|
+
p.log.info('Usage: devflow debug --enable | --disable | --status');
|
|
121
|
+
});
|
|
122
|
+
//# sourceMappingURL=debug.js.map
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { promises as fs } from 'fs';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import * as p from '@clack/prompts';
|
|
5
|
+
import color from 'picocolors';
|
|
6
|
+
import { getClaudeDirectory, getDevFlowDirectory } from '../../targets/claude-code/claude-paths.js';
|
|
7
|
+
import { FLAG_REGISTRY, applyFlags, stripFlags, getDefaultFlags } from '../../core/flags.js';
|
|
8
|
+
import { readManifest, writeManifest } from '../../core/manifest.js';
|
|
9
|
+
/**
|
|
10
|
+
* Resolve current enabled flags from manifest (falls back to defaults if no manifest).
|
|
11
|
+
*/
|
|
12
|
+
async function resolveEnabledFlags(devflowDir) {
|
|
13
|
+
const manifest = await readManifest(devflowDir);
|
|
14
|
+
if (manifest) {
|
|
15
|
+
return manifest.features.flags;
|
|
16
|
+
}
|
|
17
|
+
return getDefaultFlags();
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Update settings.json with the given flag set.
|
|
21
|
+
*/
|
|
22
|
+
async function updateSettingsFlags(claudeDir, flagIds) {
|
|
23
|
+
const settingsPath = path.join(claudeDir, 'settings.json');
|
|
24
|
+
let content;
|
|
25
|
+
try {
|
|
26
|
+
content = await fs.readFile(settingsPath, 'utf-8');
|
|
27
|
+
// Validate that content is parseable JSON before passing to stripFlags/applyFlags
|
|
28
|
+
JSON.parse(content);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
content = '{}';
|
|
32
|
+
}
|
|
33
|
+
const stripped = stripFlags(content);
|
|
34
|
+
const updated = applyFlags(stripped, flagIds);
|
|
35
|
+
await fs.writeFile(settingsPath, updated, 'utf-8');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Update manifest with the given flag set.
|
|
39
|
+
*/
|
|
40
|
+
async function updateManifestFlags(devflowDir, flagIds) {
|
|
41
|
+
const manifest = await readManifest(devflowDir);
|
|
42
|
+
if (!manifest)
|
|
43
|
+
return;
|
|
44
|
+
manifest.features.flags = flagIds;
|
|
45
|
+
manifest.updatedAt = new Date().toISOString();
|
|
46
|
+
await writeManifest(devflowDir, manifest);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Parse and validate comma-separated flag IDs against the registry.
|
|
50
|
+
* Exits with error if any IDs are unknown.
|
|
51
|
+
*/
|
|
52
|
+
function parseFlagIds(input) {
|
|
53
|
+
const ids = input.split(',').map(s => s.trim()).filter(Boolean);
|
|
54
|
+
const invalid = ids.filter(id => !FLAG_REGISTRY.some(f => f.id === id));
|
|
55
|
+
if (invalid.length > 0) {
|
|
56
|
+
p.log.error(`Unknown flag(s): ${invalid.join(', ')}`);
|
|
57
|
+
p.log.info(`Available: ${FLAG_REGISTRY.map(f => f.id).join(', ')}`);
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
return ids;
|
|
61
|
+
}
|
|
62
|
+
export const flagsCommand = new Command('flags')
|
|
63
|
+
.description('Manage Claude Code feature flags')
|
|
64
|
+
.option('--enable <ids>', 'Enable flag(s), comma-separated')
|
|
65
|
+
.option('--disable <ids>', 'Disable flag(s), comma-separated')
|
|
66
|
+
.option('--status', 'Show current flag states')
|
|
67
|
+
.option('--list', 'List all available flags')
|
|
68
|
+
.action(async (options) => {
|
|
69
|
+
const claudeDir = getClaudeDirectory();
|
|
70
|
+
const devflowDir = getDevFlowDirectory();
|
|
71
|
+
if (options.list) {
|
|
72
|
+
p.intro(color.bgCyan(color.black(' Claude Code Flags ')));
|
|
73
|
+
const defaults = new Set(getDefaultFlags());
|
|
74
|
+
for (const flag of FLAG_REGISTRY) {
|
|
75
|
+
const status = defaults.has(flag.id) ? color.green('default ON') : color.dim('default OFF');
|
|
76
|
+
const targetInfo = flag.target.type === 'env'
|
|
77
|
+
? `env.${flag.target.key}`
|
|
78
|
+
: `setting.${flag.target.key}`;
|
|
79
|
+
p.log.info(`${color.bold(flag.id)} — ${flag.label} (${status})`);
|
|
80
|
+
p.log.info(` ${color.dim(flag.description)} → ${color.dim(targetInfo)}`);
|
|
81
|
+
}
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (options.status) {
|
|
85
|
+
p.intro(color.bgCyan(color.black(' Claude Code Flags ')));
|
|
86
|
+
const enabled = new Set(await resolveEnabledFlags(devflowDir));
|
|
87
|
+
for (const flag of FLAG_REGISTRY) {
|
|
88
|
+
const state = enabled.has(flag.id) ? color.green('enabled') : color.dim('disabled');
|
|
89
|
+
p.log.info(`${flag.id.padEnd(25)} ${state}`);
|
|
90
|
+
}
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
if (options.enable) {
|
|
94
|
+
const ids = parseFlagIds(options.enable);
|
|
95
|
+
const current = await resolveEnabledFlags(devflowDir);
|
|
96
|
+
const updated = [...new Set([...current, ...ids])];
|
|
97
|
+
await updateSettingsFlags(claudeDir, updated);
|
|
98
|
+
await updateManifestFlags(devflowDir, updated);
|
|
99
|
+
for (const id of ids) {
|
|
100
|
+
p.log.success(`${id} enabled`);
|
|
101
|
+
}
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (options.disable) {
|
|
105
|
+
const ids = parseFlagIds(options.disable);
|
|
106
|
+
const current = await resolveEnabledFlags(devflowDir);
|
|
107
|
+
const toDisable = new Set(ids);
|
|
108
|
+
const updated = current.filter(id => !toDisable.has(id));
|
|
109
|
+
await updateSettingsFlags(claudeDir, updated);
|
|
110
|
+
await updateManifestFlags(devflowDir, updated);
|
|
111
|
+
for (const id of ids) {
|
|
112
|
+
p.log.success(`${id} disabled`);
|
|
113
|
+
}
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
// No option — show help
|
|
117
|
+
p.log.info('Usage: devflow flags --status | --list | --enable <ids> | --disable <ids>');
|
|
118
|
+
});
|
|
119
|
+
//# sourceMappingURL=flags.js.map
|