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
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* devflow knowledge — per-feature knowledge base management.
|
|
3
|
+
* Thin router that delegates to list (read-only) and toggle (enable/disable/status).
|
|
4
|
+
*
|
|
5
|
+
* The heavy CRUD subcommands (create/check/refresh/remove) are deleted — knowledge
|
|
6
|
+
* bases are created automatically via write-through (knowledge_writeback MDS partial).
|
|
7
|
+
*/
|
|
8
|
+
import { Command } from 'commander';
|
|
9
|
+
import { handleToggle } from './toggle.js';
|
|
10
|
+
import { handleList } from './list.js';
|
|
11
|
+
export const knowledgeCommand = new Command('knowledge')
|
|
12
|
+
.description('Manage per-feature knowledge bases')
|
|
13
|
+
.option('--enable', 'Enable per-feature knowledge bases')
|
|
14
|
+
.option('--disable', 'Disable per-feature knowledge bases')
|
|
15
|
+
.option('--status', 'Show knowledge base feature status')
|
|
16
|
+
.action(async (options) => {
|
|
17
|
+
await handleToggle(options);
|
|
18
|
+
});
|
|
19
|
+
knowledgeCommand
|
|
20
|
+
.command('list')
|
|
21
|
+
.description('List all feature knowledge bases')
|
|
22
|
+
.action(async () => {
|
|
23
|
+
await handleList();
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* devflow knowledge list — list feature knowledge bases.
|
|
3
|
+
*
|
|
4
|
+
* Reads .devflow/features/index.md directly (write-through cache), or falls back
|
|
5
|
+
* to globbing KNOWLEDGE.md frontmatter when index.md is absent or empty. Freshness
|
|
6
|
+
* comes from verify-against-code at read time in the consuming workflow.
|
|
7
|
+
*/
|
|
8
|
+
import { promises as fs } from 'fs';
|
|
9
|
+
import * as path from 'path';
|
|
10
|
+
import * as p from '@clack/prompts';
|
|
11
|
+
import color from 'picocolors';
|
|
12
|
+
import { getGitRoot } from '../../../core/git.js';
|
|
13
|
+
import { getFeaturesDir } from '../../../core/project-paths.js';
|
|
14
|
+
/**
|
|
15
|
+
* Parse entries from index.md lines.
|
|
16
|
+
* Line format: `- **{slug}** — {areas} — {Use-when description}`
|
|
17
|
+
*/
|
|
18
|
+
function parseIndexMd(content) {
|
|
19
|
+
const entries = [];
|
|
20
|
+
for (const line of content.split('\n')) {
|
|
21
|
+
const m = line.match(/^-\s+\*\*([^*]+)\*\*\s+—\s+([^—]+)\s+—\s+(.+)$/);
|
|
22
|
+
if (m) {
|
|
23
|
+
entries.push({ slug: m[1].trim(), areas: m[2].trim(), description: m[3].trim() });
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return entries;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Parse the slug and description from a KNOWLEDGE.md file's YAML frontmatter.
|
|
30
|
+
* Returns null when frontmatter is absent or unparseable.
|
|
31
|
+
*/
|
|
32
|
+
function parseFrontmatter(content) {
|
|
33
|
+
const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
34
|
+
if (!fmMatch)
|
|
35
|
+
return null;
|
|
36
|
+
const fm = fmMatch[1];
|
|
37
|
+
const get = (key) => {
|
|
38
|
+
const m = fm.match(new RegExp(`^${key}:\\s*(.+)$`, 'm'));
|
|
39
|
+
return m ? m[1].trim().replace(/^"(.*)"$/, '$1') : '';
|
|
40
|
+
};
|
|
41
|
+
const getArr = (key) => {
|
|
42
|
+
const m = fm.match(new RegExp(`^${key}:\\s*\\[([^\\]]+)\\]`, 'm'));
|
|
43
|
+
if (!m)
|
|
44
|
+
return [];
|
|
45
|
+
return m[1].split(',').map(s => s.trim().replace(/^['"]|['"]$/g, ''));
|
|
46
|
+
};
|
|
47
|
+
const slug = get('feature');
|
|
48
|
+
const name = get('name');
|
|
49
|
+
const description = get('description');
|
|
50
|
+
const directories = getArr('directories');
|
|
51
|
+
if (!slug)
|
|
52
|
+
return null;
|
|
53
|
+
return { slug, name, description, directories };
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Resolve the git root for the current directory, falling back to cwd.
|
|
57
|
+
*/
|
|
58
|
+
async function getWorktreePath() {
|
|
59
|
+
return (await getGitRoot()) ?? process.cwd();
|
|
60
|
+
}
|
|
61
|
+
export async function handleList() {
|
|
62
|
+
p.intro(color.cyan('Feature Knowledge Bases'));
|
|
63
|
+
const worktreePath = await getWorktreePath();
|
|
64
|
+
const featuresDir = getFeaturesDir(worktreePath);
|
|
65
|
+
const indexMdPath = path.join(featuresDir, 'index.md');
|
|
66
|
+
let entries = [];
|
|
67
|
+
// Try index.md cache first
|
|
68
|
+
try {
|
|
69
|
+
const indexContent = await fs.readFile(indexMdPath, 'utf-8');
|
|
70
|
+
entries = parseIndexMd(indexContent);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
/* index.md absent — fall through to frontmatter glob */
|
|
74
|
+
}
|
|
75
|
+
// Fallback: glob features/*/KNOWLEDGE.md and parse frontmatter
|
|
76
|
+
if (entries.length === 0) {
|
|
77
|
+
try {
|
|
78
|
+
const slugDirs = await fs.readdir(featuresDir, { withFileTypes: true });
|
|
79
|
+
for (const dirent of slugDirs) {
|
|
80
|
+
if (!dirent.isDirectory() || dirent.name.startsWith('.'))
|
|
81
|
+
continue;
|
|
82
|
+
const kbPath = path.join(featuresDir, dirent.name, 'KNOWLEDGE.md');
|
|
83
|
+
try {
|
|
84
|
+
const kbContent = await fs.readFile(kbPath, 'utf-8');
|
|
85
|
+
const fm = parseFrontmatter(kbContent);
|
|
86
|
+
if (fm) {
|
|
87
|
+
entries.push({
|
|
88
|
+
slug: fm.slug,
|
|
89
|
+
areas: fm.directories.join(', ') || dirent.name,
|
|
90
|
+
description: fm.description || fm.name,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch { /* KNOWLEDGE.md absent or unreadable — skip */ }
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch { /* featuresDir absent — no KBs */ }
|
|
98
|
+
}
|
|
99
|
+
if (entries.length === 0) {
|
|
100
|
+
p.log.info('No feature knowledge bases found. Knowledge bases are created automatically ' +
|
|
101
|
+
'when workflows (implement, resolve, self-review, explore, debug) detect documented area changes.');
|
|
102
|
+
p.outro('');
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
p.log.info(`Found ${entries.length} feature knowledge base${entries.length === 1 ? '' : 's'} in ${color.dim(worktreePath)}`);
|
|
106
|
+
console.log('');
|
|
107
|
+
for (const entry of entries) {
|
|
108
|
+
console.log(` ${color.bold(entry.slug)}`);
|
|
109
|
+
console.log(` areas: ${color.dim(entry.areas)}`);
|
|
110
|
+
console.log(` use when: ${color.dim(entry.description)}`);
|
|
111
|
+
console.log('');
|
|
112
|
+
}
|
|
113
|
+
p.outro('');
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handle the enable/disable/status toggle actions for `devflow knowledge`.
|
|
3
|
+
*
|
|
4
|
+
* The sole opt-out mechanism is the feature config `knowledge` field (config-only gate per ADR-001).
|
|
5
|
+
*/
|
|
6
|
+
import { promises as fs } from 'fs';
|
|
7
|
+
import * as path from 'path';
|
|
8
|
+
import * as p from '@clack/prompts';
|
|
9
|
+
import color from 'picocolors';
|
|
10
|
+
import { getGitRoot } from '../../../core/git.js';
|
|
11
|
+
import { getDevFlowDirectory } from '../../../targets/claude-code/claude-paths.js';
|
|
12
|
+
import { readManifest, writeManifest } from '../../../core/manifest.js';
|
|
13
|
+
import { updateFeature, isFeatureEnabled } from '../../../core/feature-config.js';
|
|
14
|
+
import { getFeaturesDir } from '../../../core/project-paths.js';
|
|
15
|
+
async function getWorktreePath() {
|
|
16
|
+
return (await getGitRoot()) ?? process.cwd();
|
|
17
|
+
}
|
|
18
|
+
/** Count KNOWLEDGE.md files present in features/ */
|
|
19
|
+
async function countKnowledgeBases(worktreePath) {
|
|
20
|
+
const featuresDir = getFeaturesDir(worktreePath);
|
|
21
|
+
try {
|
|
22
|
+
const entries = await fs.readdir(featuresDir, { withFileTypes: true });
|
|
23
|
+
let count = 0;
|
|
24
|
+
for (const dirent of entries) {
|
|
25
|
+
if (!dirent.isDirectory() || dirent.name.startsWith('.'))
|
|
26
|
+
continue;
|
|
27
|
+
try {
|
|
28
|
+
await fs.access(path.join(featuresDir, dirent.name, 'KNOWLEDGE.md'));
|
|
29
|
+
count++;
|
|
30
|
+
}
|
|
31
|
+
catch { /* KNOWLEDGE.md absent */ }
|
|
32
|
+
}
|
|
33
|
+
return count;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return 0;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export async function handleToggle(options) {
|
|
40
|
+
if (!options.enable && !options.disable && !options.status)
|
|
41
|
+
return;
|
|
42
|
+
const worktreePath = await getWorktreePath();
|
|
43
|
+
const devflowDir = getDevFlowDirectory();
|
|
44
|
+
if (options.enable) {
|
|
45
|
+
p.intro(color.cyan('Enable Feature Knowledge Bases'));
|
|
46
|
+
// Update feature config (the sole gate — config-only per ADR-001)
|
|
47
|
+
await updateFeature(worktreePath, 'knowledge', true);
|
|
48
|
+
// Update manifest
|
|
49
|
+
const manifest = await readManifest(devflowDir);
|
|
50
|
+
if (manifest) {
|
|
51
|
+
manifest.features.knowledge = true;
|
|
52
|
+
manifest.updatedAt = new Date().toISOString();
|
|
53
|
+
await writeManifest(devflowDir, manifest);
|
|
54
|
+
}
|
|
55
|
+
p.log.success('Feature knowledge bases enabled');
|
|
56
|
+
p.log.info('Knowledge bases are created automatically when workflows detect documented area changes.');
|
|
57
|
+
p.outro('');
|
|
58
|
+
}
|
|
59
|
+
else if (options.disable) {
|
|
60
|
+
p.intro(color.cyan('Disable Feature Knowledge Bases'));
|
|
61
|
+
// Update feature config (the sole gate — config-only per ADR-001)
|
|
62
|
+
await updateFeature(worktreePath, 'knowledge', false);
|
|
63
|
+
// Update manifest
|
|
64
|
+
const manifest = await readManifest(devflowDir);
|
|
65
|
+
if (manifest) {
|
|
66
|
+
manifest.features.knowledge = false;
|
|
67
|
+
manifest.updatedAt = new Date().toISOString();
|
|
68
|
+
await writeManifest(devflowDir, manifest);
|
|
69
|
+
}
|
|
70
|
+
p.log.success('Feature knowledge bases disabled');
|
|
71
|
+
p.log.info('Existing knowledge bases preserved. Write-back skipped while disabled.');
|
|
72
|
+
p.outro('');
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
// options.status
|
|
76
|
+
p.intro(color.cyan('Feature Knowledge Status'));
|
|
77
|
+
const enabled = await isFeatureEnabled(worktreePath, 'knowledge');
|
|
78
|
+
const kbCount = await countKnowledgeBases(worktreePath);
|
|
79
|
+
p.log.info(`Status: ${enabled ? color.green('enabled') : color.yellow('disabled')}`);
|
|
80
|
+
p.log.info(`Knowledge bases: ${kbCount}`);
|
|
81
|
+
p.outro('');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=toggle.js.map
|
|
@@ -0,0 +1,311 @@
|
|
|
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 { getLearningDir, getLearningTuningConfigPath, getDecisionsLogPath, getDecisionsLockDir, } from '../../core/project-paths.js';
|
|
7
|
+
import { updateFeature, isFeatureEnabled } from '../../core/feature-config.js';
|
|
8
|
+
import { syncManifestFeature } from '../../core/manifest.js';
|
|
9
|
+
import { getDevFlowDirectory } from '../../targets/claude-code/claude-paths.js';
|
|
10
|
+
import { getGitRoot } from '../../core/git.js';
|
|
11
|
+
import { sweepLegacyDreamMarkers, drainLearningQueue } from '../../core/learning-queue-cleanup.js';
|
|
12
|
+
import { readObservations, warnIfInvalid, } from '../../core/observation-io.js';
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
// Sub-command handlers
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
function printUsage() {
|
|
17
|
+
p.intro(color.bgCyan(color.black(' Learning ')));
|
|
18
|
+
p.note(`${color.cyan('devflow learning --enable')} Enable learning (decision + pitfall detection)\n` +
|
|
19
|
+
`${color.cyan('devflow learning --disable')} Disable learning (drains queue)\n` +
|
|
20
|
+
`${color.cyan('devflow learning --status')} Show learning status\n` +
|
|
21
|
+
`${color.cyan('devflow learning --list')} Show all observations\n` +
|
|
22
|
+
`${color.cyan('devflow learning --configure')} Configuration wizard\n` +
|
|
23
|
+
`${color.cyan('devflow learning --clear')} Truncate decisions log\n` +
|
|
24
|
+
`${color.cyan('devflow learning --reset')} Remove all learning state files`, 'Usage');
|
|
25
|
+
p.outro(color.dim('Detects architectural decisions and known pitfalls from your sessions'));
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Resolve the git root for a state-mutating subcommand, warning and
|
|
29
|
+
* returning null if the caller isn't inside a git project. `actionSuffix`
|
|
30
|
+
* completes "Could not resolve git root — {actionSuffix}".
|
|
31
|
+
*/
|
|
32
|
+
async function requireGitRoot(actionSuffix) {
|
|
33
|
+
const gitRoot = await getGitRoot();
|
|
34
|
+
if (!gitRoot) {
|
|
35
|
+
p.log.warn(`Could not resolve git root — ${actionSuffix}`);
|
|
36
|
+
}
|
|
37
|
+
return gitRoot;
|
|
38
|
+
}
|
|
39
|
+
async function handleStatus() {
|
|
40
|
+
const gitRoot = await getGitRoot();
|
|
41
|
+
if (!gitRoot) {
|
|
42
|
+
p.log.info('Learning: disabled (not in a git project)');
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const logPath = getDecisionsLogPath(gitRoot);
|
|
46
|
+
const enabled = await isFeatureEnabled(gitRoot, 'learning');
|
|
47
|
+
const { observations, invalidCount } = await readObservations(logPath);
|
|
48
|
+
const decisionObs = observations.filter(o => o.type === 'decision' || o.type === 'pitfall');
|
|
49
|
+
const decisions = observations.filter(o => o.type === 'decision');
|
|
50
|
+
const pitfalls = observations.filter(o => o.type === 'pitfall');
|
|
51
|
+
const created = decisionObs.filter(o => o.status === 'created');
|
|
52
|
+
const ready = decisionObs.filter(o => o.status === 'ready');
|
|
53
|
+
const observing = decisionObs.filter(o => o.status === 'observing');
|
|
54
|
+
const deprecated = decisionObs.filter(o => o.status === 'deprecated');
|
|
55
|
+
const lines = [`Learning: ${enabled ? 'enabled' : 'disabled'}`];
|
|
56
|
+
if (decisionObs.length === 0) {
|
|
57
|
+
lines.push('Observations: none');
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
lines.push(`Observations: ${decisionObs.length} total`);
|
|
61
|
+
lines.push(` Decisions: ${decisions.length}, Pitfalls: ${pitfalls.length}`);
|
|
62
|
+
lines.push(` Status: ${observing.length} observing, ${ready.length} ready, ${created.length} promoted, ${deprecated.length} deprecated`);
|
|
63
|
+
}
|
|
64
|
+
p.log.info(lines.join('\n'));
|
|
65
|
+
warnIfInvalid(invalidCount);
|
|
66
|
+
}
|
|
67
|
+
async function handleList() {
|
|
68
|
+
// Resolve the log from the git root (matches --status, --clear, --reset,
|
|
69
|
+
// --disable) so `--list` run from a subdirectory finds the real log
|
|
70
|
+
// instead of a nonexistent one under process.cwd(). Falls back to cwd
|
|
71
|
+
// when not in a git project, preserving the prior behavior for that case.
|
|
72
|
+
const gitRoot = await getGitRoot();
|
|
73
|
+
const logPath = getDecisionsLogPath(gitRoot ?? process.cwd());
|
|
74
|
+
let logExists = true;
|
|
75
|
+
try {
|
|
76
|
+
await fs.access(logPath);
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
logExists = false;
|
|
80
|
+
}
|
|
81
|
+
if (!logExists) {
|
|
82
|
+
p.log.info('No observations yet. Decisions log not found.');
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const { observations, invalidCount } = await readObservations(logPath);
|
|
86
|
+
const filtered = observations.filter(o => o.type === 'decision' || o.type === 'pitfall');
|
|
87
|
+
if (filtered.length === 0) {
|
|
88
|
+
p.log.info('No decision/pitfall observations recorded yet.');
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
// Sort by confidence descending
|
|
92
|
+
filtered.sort((a, b) => b.confidence - a.confidence);
|
|
93
|
+
p.intro(color.bgCyan(color.black(' Learning Observations ')));
|
|
94
|
+
for (const obs of filtered) {
|
|
95
|
+
const typeIcon = obs.type === 'decision' ? 'D' : 'F';
|
|
96
|
+
const statusIcon = obs.status === 'created' ? color.green('created')
|
|
97
|
+
: obs.status === 'ready' ? color.yellow('ready')
|
|
98
|
+
: obs.status === 'deprecated' ? color.dim('deprecated')
|
|
99
|
+
: color.dim('observing');
|
|
100
|
+
const conf = (obs.confidence * 100).toFixed(0);
|
|
101
|
+
p.log.info(`[${typeIcon}] ${color.cyan(obs.pattern)} (${conf}% | ${obs.observations}x | ${statusIcon})`);
|
|
102
|
+
}
|
|
103
|
+
warnIfInvalid(invalidCount);
|
|
104
|
+
p.outro(color.dim(`${filtered.length} observation(s) total`));
|
|
105
|
+
}
|
|
106
|
+
async function handleConfigure() {
|
|
107
|
+
p.intro(color.bgCyan(color.black(' Learning Configuration ')));
|
|
108
|
+
const model = await p.select({
|
|
109
|
+
message: 'Model for decision detection',
|
|
110
|
+
options: [
|
|
111
|
+
{ value: 'opus', label: 'Opus', hint: 'Recommended — highest quality for detection + curation judgment' },
|
|
112
|
+
{ value: 'sonnet', label: 'Sonnet', hint: 'Good balance of quality and speed' },
|
|
113
|
+
{ value: 'haiku', label: 'Haiku', hint: 'Fastest, lowest cost' },
|
|
114
|
+
],
|
|
115
|
+
});
|
|
116
|
+
if (p.isCancel(model)) {
|
|
117
|
+
p.cancel('Configuration cancelled.');
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
const debugMode = await p.confirm({
|
|
121
|
+
message: 'Enable debug logging? (logs session content excerpts to ~/.devflow/logs/)',
|
|
122
|
+
initialValue: false,
|
|
123
|
+
});
|
|
124
|
+
if (p.isCancel(debugMode)) {
|
|
125
|
+
p.cancel('Configuration cancelled.');
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
const scope = await p.select({
|
|
129
|
+
message: 'Configuration scope',
|
|
130
|
+
options: [
|
|
131
|
+
{ value: 'project', label: 'Project', hint: 'This project only (.devflow/learning/learning.json)' },
|
|
132
|
+
{ value: 'global', label: 'Global', hint: 'All projects (~/.devflow/learning.json)' },
|
|
133
|
+
],
|
|
134
|
+
});
|
|
135
|
+
if (p.isCancel(scope)) {
|
|
136
|
+
p.cancel('Configuration cancelled.');
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const config = {
|
|
140
|
+
model,
|
|
141
|
+
debug: debugMode,
|
|
142
|
+
};
|
|
143
|
+
const configJson = JSON.stringify(config, null, 2) + '\n';
|
|
144
|
+
if (scope === 'global') {
|
|
145
|
+
const globalDir = getDevFlowDirectory();
|
|
146
|
+
await fs.mkdir(globalDir, { recursive: true });
|
|
147
|
+
await fs.writeFile(path.join(globalDir, 'learning.json'), configJson, 'utf-8');
|
|
148
|
+
p.log.success(`Global config written to ${color.dim(path.join(globalDir, 'learning.json'))}`);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
const learningDir = getLearningDir(process.cwd());
|
|
152
|
+
await fs.mkdir(learningDir, { recursive: true });
|
|
153
|
+
const projectConfigPath = getLearningTuningConfigPath(process.cwd());
|
|
154
|
+
await fs.writeFile(projectConfigPath, configJson, 'utf-8');
|
|
155
|
+
p.log.success(`Project config written to ${color.dim(projectConfigPath)}`);
|
|
156
|
+
}
|
|
157
|
+
p.outro(color.green('Configuration saved.'));
|
|
158
|
+
}
|
|
159
|
+
async function handleReset() {
|
|
160
|
+
const gitRoot = await requireGitRoot('reset not performed');
|
|
161
|
+
if (!gitRoot)
|
|
162
|
+
return;
|
|
163
|
+
const lockDir = getDecisionsLockDir(gitRoot);
|
|
164
|
+
// Ensure the parent directory exists so a second reset (after .devflow/learning/
|
|
165
|
+
// was already removed) does not fail with ENOENT and emit a false contention error.
|
|
166
|
+
await fs.mkdir(path.dirname(lockDir), { recursive: true });
|
|
167
|
+
// Acquire lock to prevent conflict with a concurrent `devflow learning` invocation.
|
|
168
|
+
// Non-recursive: EEXIST still means genuine contention.
|
|
169
|
+
try {
|
|
170
|
+
await fs.mkdir(lockDir);
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
p.log.error('Learning system is currently running. Try again in a moment.');
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
try {
|
|
177
|
+
if (process.stdin.isTTY) {
|
|
178
|
+
const confirm = await p.confirm({
|
|
179
|
+
message: 'Remove all learning state files? This cannot be undone.',
|
|
180
|
+
initialValue: false,
|
|
181
|
+
});
|
|
182
|
+
if (p.isCancel(confirm) || !confirm) {
|
|
183
|
+
p.log.info('Reset cancelled.');
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// Remove the entire learning directory (contains queue files, content files,
|
|
188
|
+
// ledger, and tuning config). Single-dir semantics: all learning state lives here.
|
|
189
|
+
try {
|
|
190
|
+
await fs.rm(getLearningDir(gitRoot), { recursive: true, force: true });
|
|
191
|
+
}
|
|
192
|
+
catch { /* best effort */ }
|
|
193
|
+
// Clean legacy dream marker-pipeline stamps from old installs.
|
|
194
|
+
// Best-effort: sweeps the now-absent dir silently (ENOENT-tolerant).
|
|
195
|
+
try {
|
|
196
|
+
await sweepLegacyDreamMarkers(getLearningDir(gitRoot));
|
|
197
|
+
}
|
|
198
|
+
catch { /* best effort */ }
|
|
199
|
+
p.log.success('Reset complete — removed .devflow/learning/ state.');
|
|
200
|
+
}
|
|
201
|
+
finally {
|
|
202
|
+
try {
|
|
203
|
+
await fs.rmdir(lockDir);
|
|
204
|
+
}
|
|
205
|
+
catch { /* already cleaned */ }
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
async function handleClear() {
|
|
209
|
+
const gitRoot = await requireGitRoot('clear not performed');
|
|
210
|
+
if (!gitRoot)
|
|
211
|
+
return;
|
|
212
|
+
const decisionsLogPath = getDecisionsLogPath(gitRoot);
|
|
213
|
+
try {
|
|
214
|
+
await fs.access(decisionsLogPath);
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
p.log.info('No decisions log to clear.');
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
if (process.stdin.isTTY) {
|
|
221
|
+
const confirm = await p.confirm({
|
|
222
|
+
message: 'Clear all decision/pitfall observations? This cannot be undone.',
|
|
223
|
+
initialValue: false,
|
|
224
|
+
});
|
|
225
|
+
if (p.isCancel(confirm) || !confirm) {
|
|
226
|
+
p.log.info('Clear cancelled.');
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
await fs.writeFile(decisionsLogPath, '', 'utf-8');
|
|
231
|
+
// Drain the learning (decisions-detection) queue so stale turns don't process
|
|
232
|
+
// on the next session — mirrors memory.ts's drain-on-disable behavior for
|
|
233
|
+
// the sibling memory queue. A mid-run Learning agent whose claimed batch
|
|
234
|
+
// vanishes aborts without changes — the desired outcome of clearing.
|
|
235
|
+
await drainLearningQueue(gitRoot);
|
|
236
|
+
p.log.success('Decisions log cleared.');
|
|
237
|
+
}
|
|
238
|
+
async function handleEnable() {
|
|
239
|
+
const gitRoot = await requireGitRoot('configuration not updated');
|
|
240
|
+
if (!gitRoot)
|
|
241
|
+
return;
|
|
242
|
+
await updateFeature(gitRoot, 'learning', true);
|
|
243
|
+
await syncManifestFeature(getDevFlowDirectory(), 'learning', true);
|
|
244
|
+
p.log.success('Learning enabled — configuration updated');
|
|
245
|
+
p.log.info(color.dim('Architectural decisions and pitfalls will be detected from your sessions'));
|
|
246
|
+
}
|
|
247
|
+
async function handleDisable() {
|
|
248
|
+
const gitRoot = await requireGitRoot('configuration not updated');
|
|
249
|
+
if (!gitRoot)
|
|
250
|
+
return;
|
|
251
|
+
await updateFeature(gitRoot, 'learning', false);
|
|
252
|
+
// Drain the learning (decisions-detection) queue so stale turns don't process
|
|
253
|
+
// on re-enable — mirrors memory.ts's drain-on-disable behavior for the
|
|
254
|
+
// sibling memory queue. Unconditional: a mid-run Learning agent whose claimed
|
|
255
|
+
// batch vanishes aborts without changes — the desired outcome of disabling.
|
|
256
|
+
await drainLearningQueue(gitRoot);
|
|
257
|
+
await syncManifestFeature(getDevFlowDirectory(), 'learning', false);
|
|
258
|
+
p.log.success('Learning disabled — configuration updated');
|
|
259
|
+
}
|
|
260
|
+
export const learningCommand = new Command('learning')
|
|
261
|
+
.description('Enable or disable learning (decision/pitfall detection + knowledge base)')
|
|
262
|
+
.option('--enable', 'Enable learning')
|
|
263
|
+
.option('--disable', 'Disable learning')
|
|
264
|
+
.option('--status', 'Show learning status and observation counts')
|
|
265
|
+
.option('--list', 'Show all decision/pitfall observations sorted by confidence')
|
|
266
|
+
.option('--configure', 'Interactive configuration wizard for learning.json')
|
|
267
|
+
.option('--clear', 'Truncate decisions log (removes all observations)')
|
|
268
|
+
.option('--reset', 'Remove all learning state files and artifacts')
|
|
269
|
+
.action(async (options) => {
|
|
270
|
+
const knownFlags = [
|
|
271
|
+
'enable', 'disable', 'status', 'list', 'configure',
|
|
272
|
+
'clear', 'reset',
|
|
273
|
+
];
|
|
274
|
+
const hasFlag = knownFlags.some((f) => options[f]);
|
|
275
|
+
if (!hasFlag) {
|
|
276
|
+
printUsage();
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
// Thin router — dispatch order matches the precedence of the original
|
|
280
|
+
// inline implementation (status, list, configure, reset, clear, enable,
|
|
281
|
+
// disable). Each handler owns its own path resolution and I/O.
|
|
282
|
+
if (options.status) {
|
|
283
|
+
await handleStatus();
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
if (options.list) {
|
|
287
|
+
await handleList();
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
if (options.configure) {
|
|
291
|
+
await handleConfigure();
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
if (options.reset) {
|
|
295
|
+
await handleReset();
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
if (options.clear) {
|
|
299
|
+
await handleClear();
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
if (options.enable) {
|
|
303
|
+
await handleEnable();
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
if (options.disable) {
|
|
307
|
+
await handleDisable();
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
//# sourceMappingURL=learning.js.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// ─── Dream worker hook cleanup ──────────────────────────────────────────────
|
|
2
|
+
//
|
|
3
|
+
// The spawn-dream-worker SessionStart hook belonged to the retired detached
|
|
4
|
+
// dream worker. Decisions processing runs as the directive-spawned Learning agent
|
|
5
|
+
// (session-start-context Section 2), which needs no hook registration of its
|
|
6
|
+
// own. remove/has exist for upgrade cleanup: init and uninstall strip any
|
|
7
|
+
// stale entry left in settings.json by a prior install.
|
|
8
|
+
const SPAWN_DREAM_WORKER_MARKER = 'spawn-dream-worker';
|
|
9
|
+
/**
|
|
10
|
+
* Remove the spawn-dream-worker hook from settings JSON.
|
|
11
|
+
* Idempotent — returns unchanged JSON if hook not present.
|
|
12
|
+
* Preserves all other SessionStart hooks (session-start-memory, session-start-context).
|
|
13
|
+
*/
|
|
14
|
+
export function removeDreamHook(settingsJson) {
|
|
15
|
+
const settings = JSON.parse(settingsJson);
|
|
16
|
+
if (!settings.hooks?.SessionStart) {
|
|
17
|
+
return settingsJson;
|
|
18
|
+
}
|
|
19
|
+
const before = settings.hooks.SessionStart.length;
|
|
20
|
+
settings.hooks.SessionStart = settings.hooks.SessionStart.filter((matcher) => !matcher.hooks.some((h) => h.command.includes(SPAWN_DREAM_WORKER_MARKER)));
|
|
21
|
+
if (settings.hooks.SessionStart.length === before) {
|
|
22
|
+
return settingsJson;
|
|
23
|
+
}
|
|
24
|
+
if (settings.hooks.SessionStart.length === 0) {
|
|
25
|
+
delete settings.hooks.SessionStart;
|
|
26
|
+
}
|
|
27
|
+
if (Object.keys(settings.hooks).length === 0) {
|
|
28
|
+
delete settings.hooks;
|
|
29
|
+
}
|
|
30
|
+
return JSON.stringify(settings, null, 2) + '\n';
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Check if the spawn-dream-worker hook is present in settings JSON.
|
|
34
|
+
* Accepts either a JSON string or a parsed Settings object.
|
|
35
|
+
*/
|
|
36
|
+
export function hasDreamHook(input) {
|
|
37
|
+
const settings = typeof input === 'string' ? JSON.parse(input) : input;
|
|
38
|
+
return settings.hooks?.SessionStart?.some((matcher) => matcher.hooks.some((h) => h.command.includes(SPAWN_DREAM_WORKER_MARKER))) ?? false;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=legacy-hooks.js.map
|