agileflow 3.4.3 → 4.0.0-alpha.2
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 +238 -473
- package/README.md +22 -114
- package/bin/agileflow.js +15 -0
- package/bin/hooks/pre-bash.js +35 -0
- package/bin/hooks/pre-compact.js +34 -0
- package/bin/hooks/pre-edit.js +32 -0
- package/bin/hooks/pre-write.js +32 -0
- package/bin/hooks/session-start.js +42 -0
- package/bin/hooks/stop.js +34 -0
- package/content/plugins/ads/plugin.yaml +14 -0
- package/content/plugins/audit/plugin.yaml +14 -0
- package/content/plugins/core/hooks/babysit-mentor-injector.js +55 -0
- package/content/plugins/core/hooks/context-loader.js +169 -0
- package/content/plugins/core/hooks/damage-control-bash.js +78 -0
- package/content/plugins/core/hooks/damage-control-edit.js +76 -0
- package/content/plugins/core/hooks/damage-control-patterns.yaml +100 -0
- package/content/plugins/core/hooks/damage-control-write.js +72 -0
- package/content/plugins/core/hooks/pre-compact-state.js +90 -0
- package/content/plugins/core/hooks/session-welcome.js +19 -0
- package/content/plugins/core/plugin.yaml +82 -0
- package/content/plugins/core/skills/agileflow-adr/SKILL.md +179 -0
- package/content/plugins/core/skills/agileflow-babysit-mentor/SKILL.md +144 -0
- package/content/plugins/core/skills/agileflow-epic-planner/SKILL.md +179 -0
- package/content/plugins/core/skills/agileflow-status-updater/SKILL.md +132 -0
- package/content/plugins/core/skills/agileflow-story-writer/SKILL.md +200 -0
- package/content/plugins/council/plugin.yaml +14 -0
- package/content/plugins/seo/plugin.yaml +14 -0
- package/package.json +29 -49
- package/src/cli/commands/doctor.js +159 -0
- package/src/cli/commands/hook.js +80 -0
- package/src/cli/commands/setup.js +292 -0
- package/src/cli/commands/status.js +47 -0
- package/src/cli/commands/update.js +83 -0
- package/src/cli/index.js +73 -0
- package/src/cli/wizard/behaviors-picker.js +108 -0
- package/src/cli/wizard/ide-picker.js +57 -0
- package/src/cli/wizard/personalization.js +64 -0
- package/src/cli/wizard/plugin-picker.js +106 -0
- package/src/lib/hash.js +41 -0
- package/src/runtime/config/defaults.js +61 -0
- package/src/runtime/config/loader.js +117 -0
- package/src/runtime/config/schema.json +99 -0
- package/src/runtime/config/writer.js +55 -0
- package/src/runtime/hooks/aggregator.js +157 -0
- package/src/runtime/hooks/chain.js +93 -0
- package/src/runtime/hooks/logger.js +68 -0
- package/src/runtime/hooks/manifest-loader.js +228 -0
- package/src/runtime/hooks/orchestrator.js +322 -0
- package/src/runtime/ide/capabilities.js +111 -0
- package/src/runtime/ide/claude-code-settings.js +234 -0
- package/src/runtime/ide/claude-code-skills.js +202 -0
- package/src/runtime/installer/file-index.js +112 -0
- package/src/runtime/installer/install.js +329 -0
- package/src/runtime/installer/stash.js +61 -0
- package/src/runtime/installer/sync-engine.js +205 -0
- package/src/runtime/plugins/registry.js +132 -0
- package/src/runtime/plugins/resolver.js +138 -0
- package/src/runtime/plugins/validator.js +196 -0
- package/src/runtime/skills/validator.js +335 -0
- package/lib/README.md +0 -178
- package/lib/api-routes.js +0 -625
- package/lib/api-server.js +0 -278
- package/lib/cache-provider.js +0 -155
- package/lib/codebase-indexer.js +0 -819
- package/lib/colors.generated.js +0 -117
- package/lib/colors.js +0 -341
- package/lib/consent.js +0 -232
- package/lib/content-sanitizer.js +0 -464
- package/lib/correlation.js +0 -277
- package/lib/drivers/claude-driver.ts +0 -312
- package/lib/drivers/codex-driver.ts +0 -464
- package/lib/drivers/driver-manager.ts +0 -159
- package/lib/drivers/gemini-driver.ts +0 -498
- package/lib/drivers/index.ts +0 -17
- package/lib/error-codes.js +0 -590
- package/lib/errors.js +0 -670
- package/lib/feature-flags.js +0 -171
- package/lib/feedback.js +0 -595
- package/lib/file-cache.js +0 -541
- package/lib/flag-detection.js +0 -344
- package/lib/format-error.js +0 -156
- package/lib/gate-runner.js +0 -282
- package/lib/generator-factory.js +0 -333
- package/lib/git-operations.js +0 -266
- package/lib/lazy-require.js +0 -59
- package/lib/lock-file.js +0 -144
- package/lib/logger.js +0 -106
- package/lib/merge-operations.js +0 -1006
- package/lib/path-resolver.js +0 -544
- package/lib/path-utils.js +0 -49
- package/lib/paths.js +0 -291
- package/lib/placeholder-registry.js +0 -822
- package/lib/process-executor.js +0 -214
- package/lib/progress.js +0 -334
- package/lib/protocol/driver.ts +0 -354
- package/lib/protocol/index.ts +0 -12
- package/lib/protocol/ir.ts +0 -271
- package/lib/registry-cache.js +0 -80
- package/lib/registry-di.js +0 -358
- package/lib/result-schema.js +0 -363
- package/lib/result.js +0 -210
- package/lib/session-display.js +0 -331
- package/lib/session-operations.js +0 -611
- package/lib/session-registry.js +0 -484
- package/lib/session-state-machine.js +0 -465
- package/lib/session-switching.js +0 -191
- package/lib/skill-loader.js +0 -213
- package/lib/smart-json-file.js +0 -682
- package/lib/state-machine.js +0 -286
- package/lib/table-formatter.js +0 -519
- package/lib/template-loader.js +0 -143
- package/lib/transient-status.js +0 -374
- package/lib/ui-manager.js +0 -612
- package/lib/validate-args.js +0 -213
- package/lib/validate-commands.js +0 -308
- package/lib/validate-names.js +0 -143
- package/lib/validate-paths.js +0 -434
- package/lib/validate.js +0 -134
- package/lib/worktree-operations.js +0 -201
- package/lib/yaml-utils.js +0 -164
- package/scripts/README.md +0 -267
- package/scripts/af +0 -34
- package/scripts/agent-loop.js +0 -879
- package/scripts/agileflow-configure.js +0 -368
- package/scripts/agileflow-statusline.sh +0 -857
- package/scripts/agileflow-welcome.js +0 -2246
- package/scripts/api-server-runner.js +0 -177
- package/scripts/archive-completed-stories.sh +0 -308
- package/scripts/auto-self-improve.js +0 -326
- package/scripts/automation-run-due.js +0 -128
- package/scripts/babysit-clear-restore.js +0 -154
- package/scripts/babysit-context-restore.js +0 -89
- package/scripts/backfill-ideation-status.js +0 -128
- package/scripts/batch-pmap-loop.js +0 -551
- package/scripts/check-sessions.js +0 -116
- package/scripts/check-update.js +0 -282
- package/scripts/ci-summary.js +0 -294
- package/scripts/claude-smart.sh +0 -85
- package/scripts/claude-tmux.sh +0 -737
- package/scripts/claude-watchdog.sh +0 -225
- package/scripts/clear-active-command.js +0 -48
- package/scripts/compress-status.sh +0 -116
- package/scripts/context-loader.js +0 -310
- package/scripts/damage-control/bash-tool-damage-control.js +0 -22
- package/scripts/damage-control/edit-tool-damage-control.js +0 -19
- package/scripts/damage-control/patterns.yaml +0 -227
- package/scripts/damage-control/write-tool-damage-control.js +0 -19
- package/scripts/damage-control-bash.js +0 -51
- package/scripts/damage-control-edit.js +0 -48
- package/scripts/damage-control-multi-agent.js +0 -231
- package/scripts/damage-control-write.js +0 -48
- package/scripts/dependency-check.js +0 -311
- package/scripts/document-repl.js +0 -793
- package/scripts/expertise-metrics.sh +0 -264
- package/scripts/generate-all.sh +0 -77
- package/scripts/generate-colors.js +0 -314
- package/scripts/generators/agent-registry.js +0 -183
- package/scripts/generators/command-registry.js +0 -166
- package/scripts/generators/index.js +0 -85
- package/scripts/generators/inject-babysit.js +0 -191
- package/scripts/generators/inject-help.js +0 -125
- package/scripts/generators/inject-readme.js +0 -166
- package/scripts/generators/skill-registry.js +0 -188
- package/scripts/get-env.js +0 -225
- package/scripts/init.sh +0 -76
- package/scripts/lib/README-portable-tasks.md +0 -424
- package/scripts/lib/ac-test-matcher.js +0 -452
- package/scripts/lib/audit-cleanup.js +0 -250
- package/scripts/lib/audit-registry.js +0 -340
- package/scripts/lib/automation-registry.js +0 -544
- package/scripts/lib/automation-runner.js +0 -476
- package/scripts/lib/browser-qa-evidence.js +0 -409
- package/scripts/lib/browser-qa-status.js +0 -192
- package/scripts/lib/bus-utils.js +0 -473
- package/scripts/lib/colors.generated.sh +0 -82
- package/scripts/lib/colors.sh +0 -46
- package/scripts/lib/command-prereqs.js +0 -280
- package/scripts/lib/concurrency-limiter.js +0 -511
- package/scripts/lib/configure-detect.js +0 -596
- package/scripts/lib/configure-features.js +0 -1927
- package/scripts/lib/configure-repair.js +0 -327
- package/scripts/lib/configure-utils.js +0 -114
- package/scripts/lib/context-formatter.js +0 -1158
- package/scripts/lib/context-loader.js +0 -840
- package/scripts/lib/counter.js +0 -103
- package/scripts/lib/damage-control-utils.js +0 -619
- package/scripts/lib/feature-catalog.js +0 -332
- package/scripts/lib/file-lock.js +0 -392
- package/scripts/lib/file-tracking.js +0 -735
- package/scripts/lib/frontmatter-parser.js +0 -133
- package/scripts/lib/gate-enforcer.js +0 -295
- package/scripts/lib/hook-metrics.js +0 -324
- package/scripts/lib/ideation-index.js +0 -1205
- package/scripts/lib/json-utils.sh +0 -162
- package/scripts/lib/lifecycle-detector.js +0 -125
- package/scripts/lib/model-profiles.js +0 -118
- package/scripts/lib/portable-tasks-cli.js +0 -274
- package/scripts/lib/portable-tasks.js +0 -479
- package/scripts/lib/process-cleanup.js +0 -527
- package/scripts/lib/quality-gates.js +0 -788
- package/scripts/lib/scale-detector.js +0 -396
- package/scripts/lib/sessionRegistry.js +0 -678
- package/scripts/lib/signal-detectors.js +0 -867
- package/scripts/lib/skill-catalog.js +0 -557
- package/scripts/lib/skill-recommender.js +0 -311
- package/scripts/lib/state-migrator.js +0 -353
- package/scripts/lib/status-task-bridge.js +0 -522
- package/scripts/lib/status-writer.js +0 -255
- package/scripts/lib/story-claiming.js +0 -704
- package/scripts/lib/story-state-machine.js +0 -437
- package/scripts/lib/sync-ideation-status.js +0 -291
- package/scripts/lib/task-registry-cache.js +0 -490
- package/scripts/lib/task-registry.js +0 -1191
- package/scripts/lib/task-sync.js +0 -230
- package/scripts/lib/tdd-phase-manager.js +0 -455
- package/scripts/lib/team-events.js +0 -510
- package/scripts/lib/tmux-audit-monitor.js +0 -612
- package/scripts/lib/tmux-group-colors.js +0 -113
- package/scripts/lib/tool-registry.yaml +0 -241
- package/scripts/lib/tool-shed.js +0 -441
- package/scripts/lib/validation-registry.js +0 -177
- package/scripts/messaging-bridge.js +0 -561
- package/scripts/migrate-ideation-index.js +0 -553
- package/scripts/native-team-observer.js +0 -219
- package/scripts/obtain-context.js +0 -272
- package/scripts/pre-push-check.sh +0 -46
- package/scripts/precompact-context.sh +0 -306
- package/scripts/query-codebase.js +0 -543
- package/scripts/ralph-loop.js +0 -1278
- package/scripts/resume-session.sh +0 -121
- package/scripts/screenshot-verifier.js +0 -215
- package/scripts/session-boundary.js +0 -138
- package/scripts/session-coordinator.sh +0 -232
- package/scripts/session-manager.js +0 -546
- package/scripts/smart-detect.js +0 -449
- package/scripts/spawn-audit-sessions.js +0 -877
- package/scripts/spawn-parallel.js +0 -751
- package/scripts/strip-ai-attribution.js +0 -63
- package/scripts/task-completed-gate.js +0 -237
- package/scripts/team-manager.js +0 -596
- package/scripts/team-status-display.js +0 -200
- package/scripts/teammate-idle-gate.js +0 -237
- package/scripts/test-session-boundary.js +0 -80
- package/scripts/tmux-close-windows.sh +0 -180
- package/scripts/tmux-restore-window.sh +0 -67
- package/scripts/tmux-save-closed-window.sh +0 -35
- package/scripts/tui/App.js +0 -151
- package/scripts/tui/Dashboard.js +0 -277
- package/scripts/tui/blessed/data/watcher.js +0 -180
- package/scripts/tui/blessed/index.js +0 -244
- package/scripts/tui/blessed/panels/output.js +0 -101
- package/scripts/tui/blessed/panels/sessions.js +0 -150
- package/scripts/tui/blessed/panels/trace.js +0 -97
- package/scripts/tui/blessed/ui/help.js +0 -77
- package/scripts/tui/blessed/ui/screen.js +0 -52
- package/scripts/tui/blessed/ui/statusbar.js +0 -47
- package/scripts/tui/blessed/ui/tabbar.js +0 -99
- package/scripts/tui/index.js +0 -70
- package/scripts/tui/lib/crashRecovery.js +0 -304
- package/scripts/tui/lib/eventStream.js +0 -309
- package/scripts/tui/lib/keyboard.js +0 -261
- package/scripts/tui/lib/loopControl.js +0 -371
- package/scripts/tui/panels/OutputPanel.js +0 -240
- package/scripts/tui/panels/SessionPanel.js +0 -170
- package/scripts/tui/panels/TracePanel.js +0 -298
- package/scripts/tui/simple-tui.js +0 -510
- package/scripts/validate-expertise.sh +0 -263
- package/scripts/validate-tokens.sh +0 -73
- package/scripts/validators/README.md +0 -143
- package/scripts/validators/component-validator.js +0 -239
- package/scripts/validators/json-schema-validator.js +0 -186
- package/scripts/validators/markdown-validator.js +0 -152
- package/scripts/validators/migration-validator.js +0 -129
- package/scripts/validators/security-validator.js +0 -380
- package/scripts/validators/story-format-validator.js +0 -197
- package/scripts/validators/test-result-validator.js +0 -114
- package/scripts/validators/workflow-validator.js +0 -247
- package/scripts/welcome-deferred.js +0 -437
- package/scripts/worktree-create.sh +0 -111
- package/src/core/agents/a11y-analyzer-aria.md +0 -155
- package/src/core/agents/a11y-analyzer-forms.md +0 -162
- package/src/core/agents/a11y-analyzer-keyboard.md +0 -175
- package/src/core/agents/a11y-analyzer-semantic.md +0 -153
- package/src/core/agents/a11y-analyzer-visual.md +0 -158
- package/src/core/agents/a11y-consensus.md +0 -248
- package/src/core/agents/accessibility.md +0 -515
- package/src/core/agents/adr-writer.md +0 -463
- package/src/core/agents/ads-audit-budget.md +0 -181
- package/src/core/agents/ads-audit-compliance.md +0 -169
- package/src/core/agents/ads-audit-creative.md +0 -164
- package/src/core/agents/ads-audit-google.md +0 -226
- package/src/core/agents/ads-audit-meta.md +0 -183
- package/src/core/agents/ads-audit-tracking.md +0 -197
- package/src/core/agents/ads-consensus.md +0 -396
- package/src/core/agents/ads-generate.md +0 -145
- package/src/core/agents/ads-performance-tracker.md +0 -197
- package/src/core/agents/analytics.md +0 -617
- package/src/core/agents/api-quality-analyzer-conventions.md +0 -148
- package/src/core/agents/api-quality-analyzer-docs.md +0 -176
- package/src/core/agents/api-quality-analyzer-errors.md +0 -183
- package/src/core/agents/api-quality-analyzer-pagination.md +0 -171
- package/src/core/agents/api-quality-analyzer-versioning.md +0 -143
- package/src/core/agents/api-quality-consensus.md +0 -214
- package/src/core/agents/api-validator.md +0 -183
- package/src/core/agents/api.md +0 -665
- package/src/core/agents/arch-analyzer-circular.md +0 -148
- package/src/core/agents/arch-analyzer-complexity.md +0 -171
- package/src/core/agents/arch-analyzer-coupling.md +0 -146
- package/src/core/agents/arch-analyzer-layering.md +0 -151
- package/src/core/agents/arch-analyzer-patterns.md +0 -162
- package/src/core/agents/arch-consensus.md +0 -227
- package/src/core/agents/brainstorm-analyzer-features.md +0 -169
- package/src/core/agents/brainstorm-analyzer-growth.md +0 -161
- package/src/core/agents/brainstorm-analyzer-integration.md +0 -172
- package/src/core/agents/brainstorm-analyzer-market.md +0 -147
- package/src/core/agents/brainstorm-analyzer-ux.md +0 -167
- package/src/core/agents/brainstorm-consensus.md +0 -237
- package/src/core/agents/browser-qa.md +0 -328
- package/src/core/agents/ci.md +0 -511
- package/src/core/agents/code-reviewer.md +0 -288
- package/src/core/agents/codebase-query.md +0 -266
- package/src/core/agents/completeness-analyzer-api.md +0 -190
- package/src/core/agents/completeness-analyzer-conditional.md +0 -201
- package/src/core/agents/completeness-analyzer-handlers.md +0 -159
- package/src/core/agents/completeness-analyzer-imports.md +0 -159
- package/src/core/agents/completeness-analyzer-routes.md +0 -182
- package/src/core/agents/completeness-analyzer-state.md +0 -188
- package/src/core/agents/completeness-analyzer-stubs.md +0 -198
- package/src/core/agents/completeness-consensus.md +0 -286
- package/src/core/agents/compliance.md +0 -509
- package/src/core/agents/council-advocate.md +0 -206
- package/src/core/agents/council-analyst.md +0 -252
- package/src/core/agents/council-optimist.md +0 -170
- package/src/core/agents/database.md +0 -601
- package/src/core/agents/datamigration.md +0 -699
- package/src/core/agents/design.md +0 -525
- package/src/core/agents/devops.md +0 -720
- package/src/core/agents/documentation.md +0 -504
- package/src/core/agents/epic-planner.md +0 -480
- package/src/core/agents/error-analyzer.md +0 -201
- package/src/core/agents/integrations.md +0 -603
- package/src/core/agents/legal-analyzer-a11y.md +0 -110
- package/src/core/agents/legal-analyzer-ai.md +0 -117
- package/src/core/agents/legal-analyzer-consumer.md +0 -108
- package/src/core/agents/legal-analyzer-content.md +0 -113
- package/src/core/agents/legal-analyzer-international.md +0 -115
- package/src/core/agents/legal-analyzer-licensing.md +0 -115
- package/src/core/agents/legal-analyzer-privacy.md +0 -108
- package/src/core/agents/legal-analyzer-security.md +0 -112
- package/src/core/agents/legal-analyzer-terms.md +0 -111
- package/src/core/agents/legal-consensus.md +0 -242
- package/src/core/agents/logic-analyzer-edge.md +0 -170
- package/src/core/agents/logic-analyzer-flow.md +0 -253
- package/src/core/agents/logic-analyzer-invariant.md +0 -206
- package/src/core/agents/logic-analyzer-race.md +0 -266
- package/src/core/agents/logic-analyzer-type.md +0 -217
- package/src/core/agents/logic-consensus.md +0 -253
- package/src/core/agents/mentor.md +0 -654
- package/src/core/agents/mobile.md +0 -501
- package/src/core/agents/monitoring.md +0 -537
- package/src/core/agents/multi-expert.md +0 -311
- package/src/core/agents/orchestrator.md +0 -749
- package/src/core/agents/perf-analyzer-assets.md +0 -174
- package/src/core/agents/perf-analyzer-bundle.md +0 -165
- package/src/core/agents/perf-analyzer-caching.md +0 -160
- package/src/core/agents/perf-analyzer-compute.md +0 -165
- package/src/core/agents/perf-analyzer-memory.md +0 -182
- package/src/core/agents/perf-analyzer-network.md +0 -157
- package/src/core/agents/perf-analyzer-queries.md +0 -155
- package/src/core/agents/perf-analyzer-rendering.md +0 -156
- package/src/core/agents/perf-consensus.md +0 -280
- package/src/core/agents/performance.md +0 -492
- package/src/core/agents/product.md +0 -535
- package/src/core/agents/qa.md +0 -765
- package/src/core/agents/readme-updater.md +0 -579
- package/src/core/agents/refactor.md +0 -558
- package/src/core/agents/research.md +0 -453
- package/src/core/agents/rlm-subcore.md +0 -207
- package/src/core/agents/schema-validator.md +0 -454
- package/src/core/agents/security-analyzer-api.md +0 -199
- package/src/core/agents/security-analyzer-auth.md +0 -160
- package/src/core/agents/security-analyzer-authz.md +0 -168
- package/src/core/agents/security-analyzer-deps.md +0 -147
- package/src/core/agents/security-analyzer-infra.md +0 -176
- package/src/core/agents/security-analyzer-injection.md +0 -148
- package/src/core/agents/security-analyzer-input.md +0 -191
- package/src/core/agents/security-analyzer-secrets.md +0 -175
- package/src/core/agents/security-consensus.md +0 -276
- package/src/core/agents/security.md +0 -486
- package/src/core/agents/seo-analyzer-content.md +0 -167
- package/src/core/agents/seo-analyzer-images.md +0 -187
- package/src/core/agents/seo-analyzer-performance.md +0 -206
- package/src/core/agents/seo-analyzer-schema.md +0 -176
- package/src/core/agents/seo-analyzer-sitemap.md +0 -172
- package/src/core/agents/seo-analyzer-technical.md +0 -144
- package/src/core/agents/seo-consensus.md +0 -289
- package/src/core/agents/team-coordinator.md +0 -333
- package/src/core/agents/team-lead.md +0 -171
- package/src/core/agents/test-analyzer-assertions.md +0 -181
- package/src/core/agents/test-analyzer-coverage.md +0 -183
- package/src/core/agents/test-analyzer-fragility.md +0 -185
- package/src/core/agents/test-analyzer-integration.md +0 -155
- package/src/core/agents/test-analyzer-maintenance.md +0 -173
- package/src/core/agents/test-analyzer-mocking.md +0 -178
- package/src/core/agents/test-analyzer-patterns.md +0 -189
- package/src/core/agents/test-analyzer-structure.md +0 -177
- package/src/core/agents/test-consensus.md +0 -294
- package/src/core/agents/testing.md +0 -527
- package/src/core/agents/ui-validator.md +0 -331
- package/src/core/agents/ui.md +0 -1227
- package/src/core/commands/adr/list.md +0 -191
- package/src/core/commands/adr/update.md +0 -258
- package/src/core/commands/adr/view.md +0 -274
- package/src/core/commands/adr.md +0 -394
- package/src/core/commands/ads/audit.md +0 -453
- package/src/core/commands/ads/budget.md +0 -97
- package/src/core/commands/ads/competitor.md +0 -112
- package/src/core/commands/ads/creative.md +0 -85
- package/src/core/commands/ads/generate.md +0 -238
- package/src/core/commands/ads/google.md +0 -112
- package/src/core/commands/ads/health.md +0 -327
- package/src/core/commands/ads/landing.md +0 -119
- package/src/core/commands/ads/linkedin.md +0 -112
- package/src/core/commands/ads/meta.md +0 -91
- package/src/core/commands/ads/microsoft.md +0 -115
- package/src/core/commands/ads/plan.md +0 -321
- package/src/core/commands/ads/test-plan.md +0 -317
- package/src/core/commands/ads/tiktok.md +0 -129
- package/src/core/commands/ads/track.md +0 -288
- package/src/core/commands/ads/youtube.md +0 -124
- package/src/core/commands/ads.md +0 -140
- package/src/core/commands/agent.md +0 -256
- package/src/core/commands/api.md +0 -267
- package/src/core/commands/assign.md +0 -369
- package/src/core/commands/audit.md +0 -531
- package/src/core/commands/auto.md +0 -556
- package/src/core/commands/automate.md +0 -415
- package/src/core/commands/babysit.md +0 -643
- package/src/core/commands/baseline.md +0 -743
- package/src/core/commands/batch.md +0 -551
- package/src/core/commands/blockers.md +0 -602
- package/src/core/commands/board.md +0 -509
- package/src/core/commands/browser-qa.md +0 -240
- package/src/core/commands/changelog.md +0 -582
- package/src/core/commands/choose.md +0 -430
- package/src/core/commands/ci.md +0 -330
- package/src/core/commands/code/accessibility.md +0 -363
- package/src/core/commands/code/api.md +0 -313
- package/src/core/commands/code/architecture.md +0 -313
- package/src/core/commands/code/completeness.md +0 -519
- package/src/core/commands/code/legal.md +0 -509
- package/src/core/commands/code/logic.md +0 -432
- package/src/core/commands/code/performance.md +0 -506
- package/src/core/commands/code/security.md +0 -509
- package/src/core/commands/code/test.md +0 -505
- package/src/core/commands/compress.md +0 -408
- package/src/core/commands/configure.md +0 -1159
- package/src/core/commands/context/export.md +0 -296
- package/src/core/commands/context/full.md +0 -353
- package/src/core/commands/context/note.md +0 -380
- package/src/core/commands/council.md +0 -592
- package/src/core/commands/debt.md +0 -491
- package/src/core/commands/deploy.md +0 -864
- package/src/core/commands/deps.md +0 -728
- package/src/core/commands/diagnose.md +0 -404
- package/src/core/commands/docs.md +0 -469
- package/src/core/commands/epic/edit.md +0 -213
- package/src/core/commands/epic/list.md +0 -190
- package/src/core/commands/epic/view.md +0 -267
- package/src/core/commands/epic.md +0 -477
- package/src/core/commands/export.md +0 -238
- package/src/core/commands/feedback.md +0 -603
- package/src/core/commands/handoff.md +0 -386
- package/src/core/commands/help.md +0 -194
- package/src/core/commands/ideate/brief.md +0 -363
- package/src/core/commands/ideate/discover.md +0 -399
- package/src/core/commands/ideate/features.md +0 -497
- package/src/core/commands/ideate/history.md +0 -403
- package/src/core/commands/ideate/new.md +0 -900
- package/src/core/commands/impact.md +0 -407
- package/src/core/commands/install.md +0 -529
- package/src/core/commands/learn/explain.md +0 -118
- package/src/core/commands/learn/glossary.md +0 -135
- package/src/core/commands/learn/patterns.md +0 -138
- package/src/core/commands/learn/tour.md +0 -126
- package/src/core/commands/maintain.md +0 -558
- package/src/core/commands/metrics.md +0 -844
- package/src/core/commands/migrate/codemods.md +0 -151
- package/src/core/commands/migrate/plan.md +0 -131
- package/src/core/commands/migrate/scan.md +0 -114
- package/src/core/commands/migrate/validate.md +0 -119
- package/src/core/commands/multi-expert.md +0 -447
- package/src/core/commands/packages.md +0 -535
- package/src/core/commands/pr.md +0 -337
- package/src/core/commands/readme-sync.md +0 -329
- package/src/core/commands/research/analyze.md +0 -798
- package/src/core/commands/research/ask.md +0 -864
- package/src/core/commands/research/import.md +0 -1025
- package/src/core/commands/research/list.md +0 -273
- package/src/core/commands/research/synthesize.md +0 -928
- package/src/core/commands/research/view.md +0 -323
- package/src/core/commands/retro.md +0 -795
- package/src/core/commands/review.md +0 -694
- package/src/core/commands/rlm.md +0 -446
- package/src/core/commands/roadmap/analyze.md +0 -400
- package/src/core/commands/rpi.md +0 -633
- package/src/core/commands/seo/audit.md +0 -444
- package/src/core/commands/seo/competitor.md +0 -174
- package/src/core/commands/seo/content.md +0 -107
- package/src/core/commands/seo/geo.md +0 -229
- package/src/core/commands/seo/hreflang.md +0 -140
- package/src/core/commands/seo/images.md +0 -96
- package/src/core/commands/seo/page.md +0 -198
- package/src/core/commands/seo/plan.md +0 -163
- package/src/core/commands/seo/programmatic.md +0 -131
- package/src/core/commands/seo/references/cwv-thresholds.md +0 -64
- package/src/core/commands/seo/references/eeat-framework.md +0 -110
- package/src/core/commands/seo/references/quality-gates.md +0 -91
- package/src/core/commands/seo/references/schema-types.md +0 -102
- package/src/core/commands/seo/schema.md +0 -183
- package/src/core/commands/seo/sitemap.md +0 -97
- package/src/core/commands/seo/technical.md +0 -100
- package/src/core/commands/seo.md +0 -107
- package/src/core/commands/session/cleanup.md +0 -452
- package/src/core/commands/session/end.md +0 -865
- package/src/core/commands/session/history.md +0 -293
- package/src/core/commands/session/init.md +0 -210
- package/src/core/commands/session/new.md +0 -827
- package/src/core/commands/session/resume.md +0 -291
- package/src/core/commands/session/spawn.md +0 -205
- package/src/core/commands/session/status.md +0 -274
- package/src/core/commands/skill/list.md +0 -139
- package/src/core/commands/skill/recommend.md +0 -216
- package/src/core/commands/sprint.md +0 -714
- package/src/core/commands/status/undo.md +0 -191
- package/src/core/commands/status.md +0 -423
- package/src/core/commands/story/edit.md +0 -204
- package/src/core/commands/story/list.md +0 -199
- package/src/core/commands/story/view.md +0 -312
- package/src/core/commands/story-validate.md +0 -491
- package/src/core/commands/story.md +0 -465
- package/src/core/commands/tdd-next.md +0 -238
- package/src/core/commands/tdd.md +0 -211
- package/src/core/commands/team/guide.md +0 -688
- package/src/core/commands/team/list.md +0 -59
- package/src/core/commands/team/start.md +0 -130
- package/src/core/commands/team/status.md +0 -66
- package/src/core/commands/team/stop.md +0 -78
- package/src/core/commands/template.md +0 -644
- package/src/core/commands/tests.md +0 -731
- package/src/core/commands/update.md +0 -591
- package/src/core/commands/validate-expertise.md +0 -305
- package/src/core/commands/velocity.md +0 -630
- package/src/core/commands/verify.md +0 -534
- package/src/core/commands/whats-new.md +0 -201
- package/src/core/commands/workflow.md +0 -449
- package/src/core/council/sessions/.gitkeep +0 -0
- package/src/core/council/shared_reasoning.template.md +0 -106
- package/src/core/experts/README.md +0 -236
- package/src/core/experts/_core-expertise.yaml +0 -105
- package/src/core/experts/accessibility/expertise.yaml +0 -115
- package/src/core/experts/accessibility/question.md +0 -41
- package/src/core/experts/accessibility/self-improve.md +0 -45
- package/src/core/experts/accessibility/workflow.md +0 -59
- package/src/core/experts/adr-writer/expertise.yaml +0 -138
- package/src/core/experts/adr-writer/question.md +0 -56
- package/src/core/experts/adr-writer/self-improve.md +0 -106
- package/src/core/experts/adr-writer/workflow.md +0 -184
- package/src/core/experts/analytics/expertise.yaml +0 -119
- package/src/core/experts/analytics/question.md +0 -74
- package/src/core/experts/analytics/self-improve.md +0 -163
- package/src/core/experts/analytics/workflow.md +0 -272
- package/src/core/experts/api/expertise.yaml +0 -124
- package/src/core/experts/api/question.md +0 -74
- package/src/core/experts/api/self-improve.md +0 -122
- package/src/core/experts/api/workflow.md +0 -248
- package/src/core/experts/ci/expertise.yaml +0 -106
- package/src/core/experts/ci/question.md +0 -69
- package/src/core/experts/ci/self-improve.md +0 -100
- package/src/core/experts/ci/workflow.md +0 -145
- package/src/core/experts/codebase-query/expertise.yaml +0 -121
- package/src/core/experts/codebase-query/question.md +0 -73
- package/src/core/experts/codebase-query/self-improve.md +0 -105
- package/src/core/experts/compliance/expertise.yaml +0 -101
- package/src/core/experts/compliance/question.md +0 -56
- package/src/core/experts/compliance/self-improve.md +0 -106
- package/src/core/experts/compliance/workflow.md +0 -184
- package/src/core/experts/database/expertise.yaml +0 -109
- package/src/core/experts/database/question.md +0 -74
- package/src/core/experts/database/self-improve.md +0 -121
- package/src/core/experts/database/workflow.md +0 -234
- package/src/core/experts/datamigration/expertise.yaml +0 -141
- package/src/core/experts/datamigration/question.md +0 -56
- package/src/core/experts/datamigration/self-improve.md +0 -106
- package/src/core/experts/datamigration/workflow.md +0 -184
- package/src/core/experts/design/expertise.yaml +0 -116
- package/src/core/experts/design/question.md +0 -56
- package/src/core/experts/design/self-improve.md +0 -106
- package/src/core/experts/design/workflow.md +0 -184
- package/src/core/experts/devops/expertise.yaml +0 -116
- package/src/core/experts/devops/question.md +0 -68
- package/src/core/experts/devops/self-improve.md +0 -102
- package/src/core/experts/devops/workflow.md +0 -142
- package/src/core/experts/documentation/expertise.yaml +0 -126
- package/src/core/experts/documentation/question.md +0 -41
- package/src/core/experts/documentation/self-improve.md +0 -45
- package/src/core/experts/documentation/workflow.md +0 -55
- package/src/core/experts/epic-planner/expertise.yaml +0 -144
- package/src/core/experts/epic-planner/question.md +0 -56
- package/src/core/experts/epic-planner/self-improve.md +0 -106
- package/src/core/experts/epic-planner/workflow.md +0 -184
- package/src/core/experts/integrations/expertise.yaml +0 -113
- package/src/core/experts/integrations/question.md +0 -74
- package/src/core/experts/integrations/self-improve.md +0 -151
- package/src/core/experts/integrations/workflow.md +0 -246
- package/src/core/experts/mentor/expertise.yaml +0 -125
- package/src/core/experts/mentor/question.md +0 -56
- package/src/core/experts/mentor/self-improve.md +0 -106
- package/src/core/experts/mentor/workflow.md +0 -184
- package/src/core/experts/mobile/expertise.yaml +0 -136
- package/src/core/experts/mobile/question.md +0 -72
- package/src/core/experts/mobile/self-improve.md +0 -140
- package/src/core/experts/mobile/workflow.md +0 -240
- package/src/core/experts/monitoring/expertise.yaml +0 -132
- package/src/core/experts/monitoring/question.md +0 -76
- package/src/core/experts/monitoring/self-improve.md +0 -150
- package/src/core/experts/monitoring/workflow.md +0 -264
- package/src/core/experts/performance/expertise.yaml +0 -68
- package/src/core/experts/performance/question.md +0 -41
- package/src/core/experts/performance/self-improve.md +0 -45
- package/src/core/experts/performance/workflow.md +0 -61
- package/src/core/experts/product/expertise.yaml +0 -143
- package/src/core/experts/product/question.md +0 -56
- package/src/core/experts/product/self-improve.md +0 -106
- package/src/core/experts/product/workflow.md +0 -184
- package/src/core/experts/qa/expertise.yaml +0 -110
- package/src/core/experts/qa/question.md +0 -56
- package/src/core/experts/qa/self-improve.md +0 -106
- package/src/core/experts/qa/workflow.md +0 -184
- package/src/core/experts/readme-updater/expertise.yaml +0 -141
- package/src/core/experts/readme-updater/question.md +0 -56
- package/src/core/experts/readme-updater/self-improve.md +0 -106
- package/src/core/experts/readme-updater/workflow.md +0 -184
- package/src/core/experts/refactor/expertise.yaml +0 -135
- package/src/core/experts/refactor/question.md +0 -41
- package/src/core/experts/refactor/self-improve.md +0 -45
- package/src/core/experts/refactor/workflow.md +0 -57
- package/src/core/experts/research/expertise.yaml +0 -143
- package/src/core/experts/research/question.md +0 -56
- package/src/core/experts/research/self-improve.md +0 -106
- package/src/core/experts/research/workflow.md +0 -184
- package/src/core/experts/security/expertise.yaml +0 -117
- package/src/core/experts/security/question.md +0 -77
- package/src/core/experts/security/self-improve.md +0 -102
- package/src/core/experts/security/workflow.md +0 -152
- package/src/core/experts/templates/expertise-template.yaml +0 -67
- package/src/core/experts/templates/question-template.md +0 -56
- package/src/core/experts/templates/self-improve-template.md +0 -106
- package/src/core/experts/templates/workflow-template.md +0 -184
- package/src/core/experts/testing/expertise.yaml +0 -112
- package/src/core/experts/testing/question.md +0 -68
- package/src/core/experts/testing/self-improve.md +0 -102
- package/src/core/experts/testing/workflow.md +0 -143
- package/src/core/experts/ui/expertise.yaml +0 -133
- package/src/core/experts/ui/question.md +0 -74
- package/src/core/experts/ui/self-improve.md +0 -122
- package/src/core/experts/ui/workflow.md +0 -262
- package/src/core/knowledge/ads/ad-audit-checklist-scoring.md +0 -424
- package/src/core/knowledge/ads/ad-optimization-logic.md +0 -590
- package/src/core/knowledge/ads/ad-technical-specifications.md +0 -385
- package/src/core/knowledge/ads/definitive-advertising-reference-2026.md +0 -506
- package/src/core/knowledge/ads/paid-advertising-research-2026.md +0 -445
- package/src/core/profiles/COMPARISON.md +0 -170
- package/src/core/profiles/README.md +0 -178
- package/src/core/profiles/claude-code.yaml +0 -111
- package/src/core/profiles/codex.yaml +0 -103
- package/src/core/profiles/cursor.yaml +0 -134
- package/src/core/profiles/examples.js +0 -250
- package/src/core/profiles/loader.js +0 -235
- package/src/core/profiles/windsurf.yaml +0 -159
- package/src/core/skills/_learnings/README.md +0 -91
- package/src/core/skills/_learnings/_template.yaml +0 -106
- package/src/core/skills/_learnings/code-review.yaml +0 -118
- package/src/core/skills/_learnings/commit.yaml +0 -69
- package/src/core/skills/_learnings/story-writer.yaml +0 -71
- package/src/core/teams/backend.json +0 -41
- package/src/core/teams/builder-validator.json +0 -51
- package/src/core/teams/code-review.json +0 -41
- package/src/core/teams/frontend.json +0 -41
- package/src/core/teams/fullstack.json +0 -41
- package/src/core/teams/logic-audit.json +0 -53
- package/src/core/teams/perf-audit.json +0 -71
- package/src/core/teams/qa.json +0 -41
- package/src/core/teams/security-audit.json +0 -71
- package/src/core/teams/solo.json +0 -35
- package/src/core/teams/test-audit.json +0 -71
- package/src/core/templates/CONTEXT.md.example +0 -49
- package/src/core/templates/README-template.md +0 -16
- package/src/core/templates/adr-template.md +0 -28
- package/src/core/templates/agent-coordination-pattern.md +0 -38
- package/src/core/templates/agent-profile-template.md +0 -51
- package/src/core/templates/agileflow-metadata.json +0 -150
- package/src/core/templates/browser-qa-spec.yaml +0 -94
- package/src/core/templates/ci-workflow.yml +0 -74
- package/src/core/templates/claude-settings.advanced.example.json +0 -75
- package/src/core/templates/claude-settings.example.json +0 -26
- package/src/core/templates/command-documentation.md +0 -187
- package/src/core/templates/command-prerequisites.yaml +0 -169
- package/src/core/templates/comms-note-template.md +0 -24
- package/src/core/templates/damage-control-patterns.yaml +0 -243
- package/src/core/templates/environment.json +0 -18
- package/src/core/templates/epic-template.md +0 -27
- package/src/core/templates/plan-template.md +0 -125
- package/src/core/templates/preserve-rules-common.md +0 -107
- package/src/core/templates/preserve-rules.json +0 -42
- package/src/core/templates/proactive-action-spec.md +0 -29
- package/src/core/templates/product-brief.md +0 -136
- package/src/core/templates/quality-gate-priorities.md +0 -34
- package/src/core/templates/research-template.md +0 -44
- package/src/core/templates/session-harness-protocol.md +0 -128
- package/src/core/templates/session-state.json +0 -56
- package/src/core/templates/story-lifecycle.md +0 -213
- package/src/core/templates/story-template.md +0 -92
- package/src/core/templates/tdd-test-template.js +0 -241
- package/src/core/templates/worktrees-guide.md +0 -231
- package/tools/agileflow-npx.js +0 -52
- package/tools/cli/agileflow-cli.js +0 -72
- package/tools/cli/commands/config.js +0 -285
- package/tools/cli/commands/doctor.js +0 -496
- package/tools/cli/commands/list.js +0 -385
- package/tools/cli/commands/session.js +0 -1176
- package/tools/cli/commands/setup.js +0 -255
- package/tools/cli/commands/status.js +0 -101
- package/tools/cli/commands/tui.js +0 -56
- package/tools/cli/commands/uninstall.js +0 -155
- package/tools/cli/commands/update.js +0 -299
- package/tools/cli/installers/core/installer.js +0 -892
- package/tools/cli/installers/ide/_base-ide.js +0 -518
- package/tools/cli/installers/ide/_interface.js +0 -238
- package/tools/cli/installers/ide/claude-code.js +0 -432
- package/tools/cli/installers/ide/codex.js +0 -426
- package/tools/cli/installers/ide/cursor.js +0 -217
- package/tools/cli/installers/ide/manager.js +0 -222
- package/tools/cli/installers/ide/windsurf.js +0 -282
- package/tools/cli/lib/command-context.js +0 -382
- package/tools/cli/lib/config-manager.js +0 -446
- package/tools/cli/lib/content-injector.js +0 -969
- package/tools/cli/lib/content-transformer.js +0 -496
- package/tools/cli/lib/docs-setup.js +0 -464
- package/tools/cli/lib/error-handler.js +0 -165
- package/tools/cli/lib/ide-error-factory.js +0 -421
- package/tools/cli/lib/ide-errors.js +0 -367
- package/tools/cli/lib/ide-generator.js +0 -357
- package/tools/cli/lib/ide-health-monitor.js +0 -364
- package/tools/cli/lib/ide-registry.js +0 -297
- package/tools/cli/lib/npm-utils.js +0 -103
- package/tools/cli/lib/self-update.js +0 -148
- package/tools/cli/lib/ui.js +0 -211
- package/tools/cli/lib/utils.js +0 -87
- package/tools/cli/lib/validation-middleware.js +0 -491
- package/tools/cli/lib/version-checker.js +0 -95
- package/tools/postinstall.js +0 -190
package/README.md
CHANGED
|
@@ -1,129 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
<img src="assets/banner.png" alt="AgileFlow" />
|
|
3
|
-
</p>
|
|
1
|
+
# AgileFlow v4 (alpha)
|
|
4
2
|
|
|
5
|
-
|
|
6
|
-
[](https://docs.agileflow.projectquestorg.com/docs/commands)
|
|
7
|
-
[](https://docs.agileflow.projectquestorg.com/docs/agents)
|
|
8
|
-
[](https://docs.agileflow.projectquestorg.com/docs/features/skills)
|
|
3
|
+
> **Status:** pre-release skeleton. Not for production use. See `CHANGELOG.md` and plan at `/home/bk/.claude/plans/fizzy-stirring-kahan.md`.
|
|
9
4
|
|
|
10
|
-
|
|
5
|
+
AgileFlow v4 is a clean-break rewrite of the `agileflow` npm package. It replaces v3's 94-command / 149-agent / everything-enabled-by-default surface with a skills-first architecture and opt-in plugin categories.
|
|
11
6
|
|
|
12
|
-
|
|
7
|
+
## Why v4
|
|
13
8
|
|
|
14
|
-
|
|
9
|
+
- **Skills-first** — the primary interaction surface is skills (auto-discovered by Claude Code), with slash commands as optional thin wrappers.
|
|
10
|
+
- **Opt-in plugins** — only the `core` plugin (Epic, Story, Status, Babysit) installs by default; Ads / SEO / Audit / Council / Mobile / Compliance are user-activated.
|
|
11
|
+
- **Hook meta-orchestrator** — 6 Claude Code hook entry points dispatch an internal chain with `runAfter` / `skipOnError` / per-hook `timeout`, eliminating v3's cascading SessionStart failures.
|
|
12
|
+
- **Unified config** — one user-facing `agileflow.config.json` at project root replaces the scattered `.agileflow/config.yaml` + `.claude/settings.json` + `manifest.yaml` surface of v3.
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
npx agileflow@latest setup
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
The `npx` command always fetches the latest version.
|
|
21
|
-
|
|
22
|
-
**Updates:** `npx agileflow@latest update`
|
|
14
|
+
## Install (alpha)
|
|
23
15
|
|
|
24
16
|
```bash
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
/agileflow:configure # Configure hooks, status line, etc.
|
|
17
|
+
npm i agileflow@alpha
|
|
18
|
+
npx agileflow setup
|
|
28
19
|
```
|
|
29
20
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
| IDE | Status | Config Location |
|
|
33
|
-
|-----|--------|-----------------|
|
|
34
|
-
| Claude Code | Supported | `.claude/commands/agileflow/` |
|
|
35
|
-
| Cursor | Supported | `.cursor/commands/agileflow/` |
|
|
36
|
-
| Windsurf | Supported | `.windsurf/workflows/agileflow/` |
|
|
37
|
-
| OpenAI Codex | Supported | `.codex/skills/` and `~/.codex/prompts/` |
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
## Why AgileFlow?
|
|
42
|
-
|
|
43
|
-
Traditional project management tools create friction between planning and execution. AgileFlow eliminates this gap by embedding project management directly into your AI-assisted coding workflow.
|
|
44
|
-
|
|
45
|
-
- **No context switching** - Manage epics, stories, and status without leaving your terminal
|
|
46
|
-
- **AI-native workflows** - Purpose-built for Claude Code's capabilities
|
|
47
|
-
- **Docs-as-code** - All project artifacts live in your repository as plain text
|
|
48
|
-
- **Intelligent agents** - 55 specialized AI agents for different domains
|
|
49
|
-
- **Framework-agnostic** - Works with any tech stack
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## Core Components
|
|
54
|
-
|
|
55
|
-
| Component | Count | Description |
|
|
56
|
-
|-----------|-------|-------------|
|
|
57
|
-
| [Commands](https://docs.agileflow.projectquestorg.com/docs/commands) | 142 | Slash commands for agile workflows |
|
|
58
|
-
| [Agents/Experts](https://docs.agileflow.projectquestorg.com/docs/agents) | 131 | Specialized agents with self-improving knowledge bases |
|
|
59
|
-
| [Skills](https://docs.agileflow.projectquestorg.com/docs/features/skills) | Dynamic | Browse and install from skills.sh marketplace via `/agileflow:skill:recommend` |
|
|
60
|
-
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
## Features
|
|
64
|
-
|
|
65
|
-
| Feature | Description | Docs |
|
|
66
|
-
|---------|-------------|------|
|
|
67
|
-
| Agent Expertise | Self-improving agents that maintain domain knowledge | [Learn more](https://docs.agileflow.projectquestorg.com/docs/features/agent-expertise-system) |
|
|
68
|
-
| Agent Teams | Multi-domain expert coordination with quality gates | [Learn more](https://docs.agileflow.projectquestorg.com/docs/features/agent-teams) |
|
|
69
|
-
| Skills System | Browse and install skills from the skills.sh marketplace | [Learn more](https://docs.agileflow.projectquestorg.com/docs/features/skills) |
|
|
70
|
-
| Parallel Sessions | Isolated workspaces with boundary protection | [Learn more](https://docs.agileflow.projectquestorg.com/docs/features/parallel-sessions) |
|
|
71
|
-
| Loop Mode | Autonomous story execution until epic completion | [Learn more](https://docs.agileflow.projectquestorg.com/docs/features/loop-mode) |
|
|
72
|
-
| AI Council | Three-perspective strategic decision analysis | [Learn more](https://docs.agileflow.projectquestorg.com/docs/commands/council) |
|
|
73
|
-
| Logic Audit | Multi-agent logic bug detection with consensus voting | [Learn more](https://docs.agileflow.projectquestorg.com/docs/commands/logic-audit) |
|
|
74
|
-
| Damage Control | Block destructive commands with PreToolUse hooks | [Learn more](https://docs.agileflow.projectquestorg.com/docs/features/damage-control) |
|
|
75
|
-
| Smart Detection | Contextual feature recommendations with 42 detectors | [Learn more](https://docs.agileflow.projectquestorg.com/docs/features/smart-detect) |
|
|
76
|
-
| Visual Mode | Screenshot verification for UI development | [Learn more](https://docs.agileflow.projectquestorg.com/docs/features/visual-mode) |
|
|
77
|
-
| Context Preservation | Preserve state during automatic context compaction | [Learn more](https://docs.agileflow.projectquestorg.com/docs/features/compact-context) |
|
|
78
|
-
| Research Pipeline | Structured research workflow with synthesis | [Learn more](https://docs.agileflow.projectquestorg.com/docs/commands/research) |
|
|
79
|
-
| Automations | Scheduled recurring tasks without a daemon | [Learn more](https://docs.agileflow.projectquestorg.com/docs/commands/automate) |
|
|
80
|
-
| Tmux Integration | Multi-window terminal sessions with keybindings and status bar | [Learn more](https://docs.agileflow.projectquestorg.com/docs/features/tmux-keybindings) |
|
|
81
|
-
| IDE Integrations | Claude Code, Cursor, Windsurf, OpenAI Codex support | [Learn more](https://docs.agileflow.projectquestorg.com/docs/features/ide-integrations) |
|
|
21
|
+
## Phase status
|
|
82
22
|
|
|
83
|
-
|
|
23
|
+
| Phase | Scope | Status |
|
|
24
|
+
|-------|-------|--------|
|
|
25
|
+
| 1 — Skeleton + Config | `package.json`, config loader, CLI entry, stubs | **in progress** |
|
|
26
|
+
| 2 — Installer + Plugin Loader | sync engine port, plugin registry | pending |
|
|
27
|
+
| 3 — Hook Orchestrator | manifest-driven chain dispatcher | pending |
|
|
28
|
+
| 4 — Core Plugin Content | Epic, Story, Status, Babysit | pending |
|
|
29
|
+
| 5 — Skill Validator + CI + alpha.1 publish | CI, validator, personalization | pending |
|
|
84
30
|
|
|
85
|
-
|
|
31
|
+
## Relationship to v3
|
|
86
32
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
```bash
|
|
90
|
-
# Create an epic
|
|
91
|
-
/agileflow:epic EPIC=EP-0001 TITLE="User Authentication" OWNER=AG-API GOAL="Secure login"
|
|
92
|
-
|
|
93
|
-
# Work on a story
|
|
94
|
-
/agileflow:babysit
|
|
95
|
-
|
|
96
|
-
# Multi-expert analysis
|
|
97
|
-
/agileflow:multi-expert Is this authentication implementation secure?
|
|
98
|
-
|
|
99
|
-
# AI Council for strategic decisions
|
|
100
|
-
/agileflow:council Should we use microservices or a monolith?
|
|
101
|
-
|
|
102
|
-
# Parallel sessions
|
|
103
|
-
/agileflow:session:new
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
---
|
|
107
|
-
|
|
108
|
-
## Documentation
|
|
109
|
-
|
|
110
|
-
Full documentation at **[docs.agileflow.projectquestorg.com](https://docs.agileflow.projectquestorg.com)**.
|
|
111
|
-
|
|
112
|
-
| Section | Link |
|
|
113
|
-
|---------|------|
|
|
114
|
-
| Getting Started | [docs.agileflow.projectquestorg.com/docs/getting-started](https://docs.agileflow.projectquestorg.com/docs/getting-started) |
|
|
115
|
-
| Installation | [docs.agileflow.projectquestorg.com/docs/installation](https://docs.agileflow.projectquestorg.com/docs/installation) |
|
|
116
|
-
| Commands | [docs.agileflow.projectquestorg.com/docs/commands](https://docs.agileflow.projectquestorg.com/docs/commands) |
|
|
117
|
-
| Agents | [docs.agileflow.projectquestorg.com/docs/agents](https://docs.agileflow.projectquestorg.com/docs/agents) |
|
|
118
|
-
| Features | [docs.agileflow.projectquestorg.com/docs/features](https://docs.agileflow.projectquestorg.com/docs/features) |
|
|
119
|
-
|
|
120
|
-
---
|
|
33
|
+
v3 lives at `packages/cli/` (temporarily renamed to `agileflow-v3-legacy` on the `v4` branch to avoid workspace name collision). v3 patches happen on `main` only. When v4 reaches core parity the `v4` branch merges to `main` and `packages/cli/` is removed.
|
|
121
34
|
|
|
122
35
|
## License
|
|
123
36
|
|
|
124
|
-
MIT
|
|
125
|
-
|
|
126
|
-
## Support
|
|
127
|
-
|
|
128
|
-
- [Documentation](https://docs.agileflow.projectquestorg.com) - Full docs site
|
|
129
|
-
- [GitHub Issues](https://github.com/projectquestorg/AgileFlow/issues) - Bug reports and feature requests
|
|
37
|
+
MIT — see `LICENSE`.
|
package/bin/agileflow.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* AgileFlow v4 CLI entry.
|
|
4
|
+
*
|
|
5
|
+
* Thin shebang wrapper — all logic lives in src/cli/index.js so the
|
|
6
|
+
* dispatcher is unit-testable without spawning a process.
|
|
7
|
+
*/
|
|
8
|
+
const { run } = require('../src/cli/index.js');
|
|
9
|
+
|
|
10
|
+
run(process.argv).catch((err) => {
|
|
11
|
+
// Fail-loud at the top level; commander itself handles structured exits.
|
|
12
|
+
// eslint-disable-next-line no-console
|
|
13
|
+
console.error(err && err.stack ? err.stack : String(err));
|
|
14
|
+
process.exit(1);
|
|
15
|
+
});
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Claude Code hook dispatcher: PreToolUse for the Bash tool.
|
|
4
|
+
*
|
|
5
|
+
* Registered in `.claude/settings.json` as a `PreToolUse` hook with
|
|
6
|
+
* `matcher: "Bash"`. Claude Code only invokes this dispatcher when a
|
|
7
|
+
* Bash tool call is about to fire. We pass `matcher: "Bash"` through to
|
|
8
|
+
* the orchestrator so manifest hooks with their own matcher field can
|
|
9
|
+
* filter further (e.g. an MCP-tool-only hook will not run here).
|
|
10
|
+
*/
|
|
11
|
+
const path = require('path');
|
|
12
|
+
const { runEvent } = require('../../src/runtime/hooks/orchestrator.js');
|
|
13
|
+
|
|
14
|
+
async function main() {
|
|
15
|
+
const projectDir = process.env.CLAUDE_PROJECT_DIR || process.cwd();
|
|
16
|
+
const agileflowDir = path.join(projectDir, '.agileflow');
|
|
17
|
+
|
|
18
|
+
const chunks = [];
|
|
19
|
+
for await (const chunk of process.stdin) chunks.push(chunk);
|
|
20
|
+
const stdin = Buffer.concat(chunks);
|
|
21
|
+
|
|
22
|
+
const result = await runEvent({
|
|
23
|
+
event: 'PreToolUse',
|
|
24
|
+
matcher: 'Bash',
|
|
25
|
+
agileflowDir,
|
|
26
|
+
stdin,
|
|
27
|
+
});
|
|
28
|
+
process.exit(result.exitCode);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
main().catch((err) => {
|
|
32
|
+
// eslint-disable-next-line no-console
|
|
33
|
+
console.error('PreToolUse:Bash dispatcher error:', err && err.stack ? err.stack : err);
|
|
34
|
+
process.exit(0);
|
|
35
|
+
});
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Claude Code hook dispatcher: PreCompact.
|
|
4
|
+
*
|
|
5
|
+
* Runs immediately before context compaction. Hooks here preserve
|
|
6
|
+
* critical state (open-task lists, session metadata) so it survives the
|
|
7
|
+
* compaction summary. Always fails open — losing a hook should never
|
|
8
|
+
* block compaction.
|
|
9
|
+
*/
|
|
10
|
+
const path = require('path');
|
|
11
|
+
const { runEvent } = require('../../src/runtime/hooks/orchestrator.js');
|
|
12
|
+
|
|
13
|
+
async function main() {
|
|
14
|
+
const projectDir = process.env.CLAUDE_PROJECT_DIR || process.cwd();
|
|
15
|
+
const agileflowDir = path.join(projectDir, '.agileflow');
|
|
16
|
+
|
|
17
|
+
const chunks = [];
|
|
18
|
+
for await (const chunk of process.stdin) chunks.push(chunk);
|
|
19
|
+
const stdin = Buffer.concat(chunks);
|
|
20
|
+
|
|
21
|
+
const result = await runEvent({
|
|
22
|
+
event: 'PreCompact',
|
|
23
|
+
agileflowDir,
|
|
24
|
+
stdin,
|
|
25
|
+
});
|
|
26
|
+
// Always exit 0 — compaction must not be blocked even on hook chain failure.
|
|
27
|
+
process.exit(result.exitCode === 0 ? 0 : 0);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
main().catch((err) => {
|
|
31
|
+
// eslint-disable-next-line no-console
|
|
32
|
+
console.error('PreCompact dispatcher error:', err && err.stack ? err.stack : err);
|
|
33
|
+
process.exit(0);
|
|
34
|
+
});
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Claude Code hook dispatcher: PreToolUse for the Edit tool.
|
|
4
|
+
*
|
|
5
|
+
* Registered in `.claude/settings.json` as a `PreToolUse` hook with
|
|
6
|
+
* `matcher: "Edit"`. Mirror of pre-bash.js for the Edit tool.
|
|
7
|
+
*/
|
|
8
|
+
const path = require('path');
|
|
9
|
+
const { runEvent } = require('../../src/runtime/hooks/orchestrator.js');
|
|
10
|
+
|
|
11
|
+
async function main() {
|
|
12
|
+
const projectDir = process.env.CLAUDE_PROJECT_DIR || process.cwd();
|
|
13
|
+
const agileflowDir = path.join(projectDir, '.agileflow');
|
|
14
|
+
|
|
15
|
+
const chunks = [];
|
|
16
|
+
for await (const chunk of process.stdin) chunks.push(chunk);
|
|
17
|
+
const stdin = Buffer.concat(chunks);
|
|
18
|
+
|
|
19
|
+
const result = await runEvent({
|
|
20
|
+
event: 'PreToolUse',
|
|
21
|
+
matcher: 'Edit',
|
|
22
|
+
agileflowDir,
|
|
23
|
+
stdin,
|
|
24
|
+
});
|
|
25
|
+
process.exit(result.exitCode);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
main().catch((err) => {
|
|
29
|
+
// eslint-disable-next-line no-console
|
|
30
|
+
console.error('PreToolUse:Edit dispatcher error:', err && err.stack ? err.stack : err);
|
|
31
|
+
process.exit(0);
|
|
32
|
+
});
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Claude Code hook dispatcher: PreToolUse for the Write tool.
|
|
4
|
+
*
|
|
5
|
+
* Registered in `.claude/settings.json` as a `PreToolUse` hook with
|
|
6
|
+
* `matcher: "Write"`. Mirror of pre-bash.js for the Write tool.
|
|
7
|
+
*/
|
|
8
|
+
const path = require('path');
|
|
9
|
+
const { runEvent } = require('../../src/runtime/hooks/orchestrator.js');
|
|
10
|
+
|
|
11
|
+
async function main() {
|
|
12
|
+
const projectDir = process.env.CLAUDE_PROJECT_DIR || process.cwd();
|
|
13
|
+
const agileflowDir = path.join(projectDir, '.agileflow');
|
|
14
|
+
|
|
15
|
+
const chunks = [];
|
|
16
|
+
for await (const chunk of process.stdin) chunks.push(chunk);
|
|
17
|
+
const stdin = Buffer.concat(chunks);
|
|
18
|
+
|
|
19
|
+
const result = await runEvent({
|
|
20
|
+
event: 'PreToolUse',
|
|
21
|
+
matcher: 'Write',
|
|
22
|
+
agileflowDir,
|
|
23
|
+
stdin,
|
|
24
|
+
});
|
|
25
|
+
process.exit(result.exitCode);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
main().catch((err) => {
|
|
29
|
+
// eslint-disable-next-line no-console
|
|
30
|
+
console.error('PreToolUse:Write dispatcher error:', err && err.stack ? err.stack : err);
|
|
31
|
+
process.exit(0);
|
|
32
|
+
});
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Claude Code hook dispatcher: SessionStart.
|
|
4
|
+
*
|
|
5
|
+
* Registered once in `.claude/settings.json` and invoked by Claude Code
|
|
6
|
+
* at session boot. Reads `.agileflow/hook-manifest.yaml`, runs the
|
|
7
|
+
* SessionStart chain via the orchestrator, and exits with the chain's
|
|
8
|
+
* resolved exit code.
|
|
9
|
+
*
|
|
10
|
+
* Always fails open unless a hook with `skipOnError: false` failed: the
|
|
11
|
+
* orchestrator returns 0 even when individual hooks errored, as long as
|
|
12
|
+
* they had `skipOnError: true`. This is the v3 cascade-failure fix.
|
|
13
|
+
*/
|
|
14
|
+
const path = require('path');
|
|
15
|
+
const { runEvent } = require('../../src/runtime/hooks/orchestrator.js');
|
|
16
|
+
|
|
17
|
+
async function main() {
|
|
18
|
+
const projectDir = process.env.CLAUDE_PROJECT_DIR || process.cwd();
|
|
19
|
+
const agileflowDir = path.join(projectDir, '.agileflow');
|
|
20
|
+
|
|
21
|
+
// Read stdin (Claude Code may pipe a JSON payload).
|
|
22
|
+
/** @type {Buffer[]} */
|
|
23
|
+
const chunks = [];
|
|
24
|
+
for await (const chunk of process.stdin) chunks.push(chunk);
|
|
25
|
+
const stdin = Buffer.concat(chunks);
|
|
26
|
+
|
|
27
|
+
const result = await runEvent({
|
|
28
|
+
event: 'SessionStart',
|
|
29
|
+
agileflowDir,
|
|
30
|
+
stdin,
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
process.exit(result.exitCode);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
main().catch((err) => {
|
|
37
|
+
// Hook dispatcher must NEVER throw uncaught — that would block
|
|
38
|
+
// session start. Log to stderr and fail open.
|
|
39
|
+
// eslint-disable-next-line no-console
|
|
40
|
+
console.error('SessionStart dispatcher error:', err && err.stack ? err.stack : err);
|
|
41
|
+
process.exit(0);
|
|
42
|
+
});
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Claude Code hook dispatcher: Stop.
|
|
4
|
+
*
|
|
5
|
+
* Runs when the agent stops. Hooks here perform cleanup, capture
|
|
6
|
+
* end-of-session metrics, or trigger self-improvement loops. Like
|
|
7
|
+
* PreCompact, this dispatcher always exits 0 — a Stop hook failure
|
|
8
|
+
* should not be treated as a blocking event.
|
|
9
|
+
*/
|
|
10
|
+
const path = require('path');
|
|
11
|
+
const { runEvent } = require('../../src/runtime/hooks/orchestrator.js');
|
|
12
|
+
|
|
13
|
+
async function main() {
|
|
14
|
+
const projectDir = process.env.CLAUDE_PROJECT_DIR || process.cwd();
|
|
15
|
+
const agileflowDir = path.join(projectDir, '.agileflow');
|
|
16
|
+
|
|
17
|
+
const chunks = [];
|
|
18
|
+
for await (const chunk of process.stdin) chunks.push(chunk);
|
|
19
|
+
const stdin = Buffer.concat(chunks);
|
|
20
|
+
|
|
21
|
+
await runEvent({
|
|
22
|
+
event: 'Stop',
|
|
23
|
+
agileflowDir,
|
|
24
|
+
stdin,
|
|
25
|
+
});
|
|
26
|
+
// Stop is non-blocking — always exit 0 regardless of chain outcome.
|
|
27
|
+
process.exit(0);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
main().catch((err) => {
|
|
31
|
+
// eslint-disable-next-line no-console
|
|
32
|
+
console.error('Stop dispatcher error:', err && err.stack ? err.stack : err);
|
|
33
|
+
process.exit(0);
|
|
34
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
id: ads
|
|
2
|
+
name: Ads
|
|
3
|
+
description: Meta, Google, TikTok, LinkedIn, YouTube, Microsoft ad audits + /ads:* suite.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
enabledByDefault: false
|
|
6
|
+
|
|
7
|
+
depends: []
|
|
8
|
+
|
|
9
|
+
provides:
|
|
10
|
+
commands: []
|
|
11
|
+
skills: []
|
|
12
|
+
agents: []
|
|
13
|
+
hooks: []
|
|
14
|
+
templates: []
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
id: audit
|
|
2
|
+
name: Code Audit
|
|
3
|
+
description: Multi-agent audits for quality, security, logic, perf, tests, a11y, arch, API, flows, completeness.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
enabledByDefault: false
|
|
6
|
+
|
|
7
|
+
depends: []
|
|
8
|
+
|
|
9
|
+
provides:
|
|
10
|
+
commands: []
|
|
11
|
+
skills: []
|
|
12
|
+
agents: []
|
|
13
|
+
hooks: []
|
|
14
|
+
templates: []
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Core hook: babysit-mentor-injector (SessionStart, HARD mode).
|
|
4
|
+
*
|
|
5
|
+
* Pre-loads the babysit mentor pattern into the session by printing
|
|
6
|
+
* its operating rules to stdout. Claude Code includes this in the
|
|
7
|
+
* session context, so Claude defaults to mentor behavior (smart
|
|
8
|
+
* AskUserQuestion at every decision point, plan mode for non-trivial
|
|
9
|
+
* tasks, expert delegation, task tracking, audits) without the user
|
|
10
|
+
* needing to type "walk me through".
|
|
11
|
+
*
|
|
12
|
+
* Disable this hook in agileflow.config.json if you want quick-edit
|
|
13
|
+
* mode by default — the agileflow-babysit-mentor skill still
|
|
14
|
+
* activates on its keyword triggers when needed.
|
|
15
|
+
*
|
|
16
|
+
* Always exits 0.
|
|
17
|
+
*/
|
|
18
|
+
process.stdout.write(`## AgileFlow Mentor Mode (default-on)
|
|
19
|
+
|
|
20
|
+
This session has the babysit-mentor pattern enabled. Apply these
|
|
21
|
+
rules unless the user explicitly opts out for a specific request:
|
|
22
|
+
|
|
23
|
+
1. **Smart AskUserQuestion at every decision point.** When the work
|
|
24
|
+
reaches a meaningful choice (which task, which approach, whether
|
|
25
|
+
to commit), end the response with the AskUserQuestion tool —
|
|
26
|
+
specific options with one marked (Recommended). Never generic
|
|
27
|
+
"Continue?" / "What next?".
|
|
28
|
+
|
|
29
|
+
2. **Plan mode for non-trivial implementation.** Call EnterPlanMode
|
|
30
|
+
for anything more than a typo/one-liner. Explore 3–5 files,
|
|
31
|
+
write the plan, ExitPlanMode. Skip for trivial fixes.
|
|
32
|
+
|
|
33
|
+
3. **Delegate complex work to domain experts.** Use the Task tool
|
|
34
|
+
with appropriate subagent_type (database / api / ui / testing /
|
|
35
|
+
security / etc.) for complex single-domain work. Use the
|
|
36
|
+
orchestrator for multi-domain features. Use multi-expert for
|
|
37
|
+
review/analysis questions.
|
|
38
|
+
|
|
39
|
+
4. **Track progress.** TaskCreate for any task with 3+ steps.
|
|
40
|
+
TaskUpdate as each completes. Don't batch.
|
|
41
|
+
|
|
42
|
+
5. **Suggest a logic audit after every implementation.** After tests
|
|
43
|
+
pass, present "🔍 Run logic audit on modified files" as
|
|
44
|
+
(Recommended). 5 analyzers catch edge cases tests miss.
|
|
45
|
+
|
|
46
|
+
6. **Suggest a flow audit when user-flows changed.** Plans for
|
|
47
|
+
non-trivial features must include a "Verify flow integrity"
|
|
48
|
+
step. After tests pass on flow-touching code, suggest
|
|
49
|
+
"🔄 Run flow audit" before commit.
|
|
50
|
+
|
|
51
|
+
To disable mentor mode entirely: edit agileflow.config.json,
|
|
52
|
+
set hooks.babysit-mentor-injector.enabled to false, run
|
|
53
|
+
\`agileflow update\`.
|
|
54
|
+
`);
|
|
55
|
+
process.exit(0);
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Core hook: context-loader (SessionStart).
|
|
4
|
+
*
|
|
5
|
+
* Prints a compact project snapshot to stdout so Claude Code includes
|
|
6
|
+
* it in the session prompt. Lean v4 implementation (~200 lines, vs.
|
|
7
|
+
* v3's 79KB welcome banner). Output is pure text — no ANSI colors.
|
|
8
|
+
*
|
|
9
|
+
* Sections (ordered by load-bearing-ness for Claude):
|
|
10
|
+
* 1. Project header (cwd, agileflow version, ide)
|
|
11
|
+
* 2. Active story / epic (from docs/09-agents/status.json if present)
|
|
12
|
+
* 3. Ready stories (top 5 by priority)
|
|
13
|
+
* 4. Git state (branch, dirty files)
|
|
14
|
+
* 5. Recent commits (last 5)
|
|
15
|
+
* 6. Hook health (last 3 entries from hook-execution.jsonl)
|
|
16
|
+
*
|
|
17
|
+
* Fail-open: any read error becomes a one-line "(unavailable)" note.
|
|
18
|
+
* The hook always exits 0; orchestrator-side `skipOnError: true` is
|
|
19
|
+
* defensive belt-and-suspenders.
|
|
20
|
+
*/
|
|
21
|
+
const fs = require("fs");
|
|
22
|
+
const path = require("path");
|
|
23
|
+
const { execSync } = require("child_process");
|
|
24
|
+
|
|
25
|
+
const projectDir = process.env.CLAUDE_PROJECT_DIR || process.cwd();
|
|
26
|
+
const agileflowDir = path.join(projectDir, ".agileflow");
|
|
27
|
+
|
|
28
|
+
/** Read JSON file, returning null on any error. */
|
|
29
|
+
function readJSON(p) {
|
|
30
|
+
try {
|
|
31
|
+
return JSON.parse(fs.readFileSync(p, "utf8"));
|
|
32
|
+
} catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** Run a git command; return its stdout trimmed, or null on error. */
|
|
38
|
+
function git(args) {
|
|
39
|
+
try {
|
|
40
|
+
return execSync(`git ${args}`, {
|
|
41
|
+
cwd: projectDir,
|
|
42
|
+
encoding: "utf8",
|
|
43
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
44
|
+
}).trim();
|
|
45
|
+
} catch {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** Tail the last N JSONL entries from a file. */
|
|
51
|
+
function tailJSONL(p, n) {
|
|
52
|
+
try {
|
|
53
|
+
const lines = fs.readFileSync(p, "utf8").trim().split("\n");
|
|
54
|
+
return lines
|
|
55
|
+
.slice(-n)
|
|
56
|
+
.map((l) => {
|
|
57
|
+
try {
|
|
58
|
+
return JSON.parse(l);
|
|
59
|
+
} catch {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
})
|
|
63
|
+
.filter(Boolean);
|
|
64
|
+
} catch {
|
|
65
|
+
return [];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const lines = [];
|
|
70
|
+
const out = (s = "") => lines.push(s);
|
|
71
|
+
|
|
72
|
+
out("## AgileFlow project context");
|
|
73
|
+
out("");
|
|
74
|
+
|
|
75
|
+
// 1. Project header
|
|
76
|
+
const config = readJSON(path.join(projectDir, "agileflow.config.json")) || {};
|
|
77
|
+
const enabledPlugins = Object.entries(config.plugins || {})
|
|
78
|
+
.filter(([, v]) => v && v.enabled)
|
|
79
|
+
.map(([id]) => id);
|
|
80
|
+
out(`cwd: ${projectDir}`);
|
|
81
|
+
out(`ide: ${(config.ide && config.ide.primary) || "claude-code"}`);
|
|
82
|
+
out(`plugins: ${enabledPlugins.join(", ") || "(none)"}`);
|
|
83
|
+
out(
|
|
84
|
+
`tone: ${(config.personalization && config.personalization.tone) || "concise"}`,
|
|
85
|
+
);
|
|
86
|
+
out("");
|
|
87
|
+
|
|
88
|
+
// 2. Active story / epic
|
|
89
|
+
const status = readJSON(path.join(projectDir, "docs/09-agents/status.json"));
|
|
90
|
+
if (status && status.stories) {
|
|
91
|
+
const inProgress = Object.entries(status.stories)
|
|
92
|
+
.filter(([, s]) => s && s.status === "in_progress")
|
|
93
|
+
.map(([id, s]) => ({ id, ...s }));
|
|
94
|
+
if (inProgress.length) {
|
|
95
|
+
out("## In progress");
|
|
96
|
+
for (const s of inProgress) {
|
|
97
|
+
out(
|
|
98
|
+
` ${s.id} ${s.title || ""} (owner: ${s.owner || "?"}, est: ${s.estimate || "?"})`,
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
out("");
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// 3. Ready stories — top 5 by priority then estimate
|
|
105
|
+
const ready = Object.entries(status.stories)
|
|
106
|
+
.filter(([, s]) => s && s.status === "ready")
|
|
107
|
+
.map(([id, s]) => ({ id, ...s }))
|
|
108
|
+
.sort((a, b) => {
|
|
109
|
+
const pa = parseInt(String(a.priority || "P9").replace("P", ""), 10);
|
|
110
|
+
const pb = parseInt(String(b.priority || "P9").replace("P", ""), 10);
|
|
111
|
+
if (pa !== pb) return pa - pb;
|
|
112
|
+
return (a.estimate || 99) - (b.estimate || 99);
|
|
113
|
+
})
|
|
114
|
+
.slice(0, 5);
|
|
115
|
+
if (ready.length) {
|
|
116
|
+
out("## Ready (top 5)");
|
|
117
|
+
for (const s of ready) {
|
|
118
|
+
out(
|
|
119
|
+
` ${s.id} [${s.priority || "P?"} · ${s.estimate || "?"}pts] ${s.title || ""}`,
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
out("");
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// 4. Git state
|
|
127
|
+
const branch = git("rev-parse --abbrev-ref HEAD");
|
|
128
|
+
const dirty = git("status --short");
|
|
129
|
+
if (branch) {
|
|
130
|
+
out("## Git");
|
|
131
|
+
out(` branch: ${branch}`);
|
|
132
|
+
if (dirty) {
|
|
133
|
+
const lines2 = dirty.split("\n").slice(0, 10);
|
|
134
|
+
out(
|
|
135
|
+
` changes: ${lines2.length} file(s)${dirty.split("\n").length > 10 ? " (showing first 10)" : ""}`,
|
|
136
|
+
);
|
|
137
|
+
for (const l of lines2) out(` ${l}`);
|
|
138
|
+
} else {
|
|
139
|
+
out(" changes: (clean)");
|
|
140
|
+
}
|
|
141
|
+
out("");
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// 5. Recent commits
|
|
145
|
+
const log = git("log --oneline -5");
|
|
146
|
+
if (log) {
|
|
147
|
+
out("## Recent commits");
|
|
148
|
+
for (const l of log.split("\n")) out(` ${l}`);
|
|
149
|
+
out("");
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// 6. Hook health
|
|
153
|
+
const hookLog = tailJSONL(
|
|
154
|
+
path.join(agileflowDir, "logs/hook-execution.jsonl"),
|
|
155
|
+
3,
|
|
156
|
+
);
|
|
157
|
+
if (hookLog.length) {
|
|
158
|
+
out("## Recent hook runs");
|
|
159
|
+
for (const e of hookLog) {
|
|
160
|
+
const status = e.status === "ok" ? "OK" : e.status.toUpperCase();
|
|
161
|
+
out(
|
|
162
|
+
` ${e.timestamp || "?"} [${status}] ${e.event}/${e.hookId} (${e.durationMs || 0}ms)`,
|
|
163
|
+
);
|
|
164
|
+
}
|
|
165
|
+
out("");
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
process.stdout.write(lines.join("\n") + "\n");
|
|
169
|
+
process.exit(0);
|