agileflow 3.4.3 → 4.0.0-alpha.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 +235 -499
- 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/session-welcome.js +19 -0
- package/content/plugins/core/plugin.yaml +34 -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 +254 -0
- package/src/cli/commands/status.js +47 -0
- package/src/cli/commands/update.js +82 -0
- package/src/cli/index.js +73 -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 +45 -0
- package/src/runtime/config/loader.js +118 -0
- package/src/runtime/config/schema.json +76 -0
- package/src/runtime/config/writer.js +54 -0
- package/src/runtime/hooks/aggregator.js +133 -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 +306 -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,19 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Core plugin hook: session-welcome.
|
|
4
|
+
*
|
|
5
|
+
* Phase 3 stub. The real welcome banner (similar to v3's
|
|
6
|
+
* agileflow-welcome.js but ~200 lines instead of 79KB) lands in
|
|
7
|
+
* Phase 4 alongside the rest of Core plugin content.
|
|
8
|
+
*
|
|
9
|
+
* Reads stdin (Claude Code's payload) and exits 0 — non-blocking.
|
|
10
|
+
*/
|
|
11
|
+
let stdin = '';
|
|
12
|
+
process.stdin.on('data', (chunk) => {
|
|
13
|
+
stdin += chunk;
|
|
14
|
+
});
|
|
15
|
+
process.stdin.on('end', () => {
|
|
16
|
+
// eslint-disable-next-line no-console
|
|
17
|
+
console.log('agileflow: session welcome (Phase 3 stub)');
|
|
18
|
+
process.exit(0);
|
|
19
|
+
});
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Core plugin — essential AgileFlow workflow.
|
|
2
|
+
# Always enabled; cannot be disabled.
|
|
3
|
+
# Phase 4: skills land here. ADR / sprint-planner / retro etc. live in
|
|
4
|
+
# their own opt-in plugins later.
|
|
5
|
+
id: core
|
|
6
|
+
name: Core
|
|
7
|
+
description: Epic, Story, Status, Babysit — essential agile workflow.
|
|
8
|
+
version: 1.0.0
|
|
9
|
+
enabledByDefault: true
|
|
10
|
+
cannotDisable: true
|
|
11
|
+
|
|
12
|
+
depends: []
|
|
13
|
+
|
|
14
|
+
provides:
|
|
15
|
+
commands: []
|
|
16
|
+
skills:
|
|
17
|
+
- id: agileflow-adr
|
|
18
|
+
dir: skills/agileflow-adr
|
|
19
|
+
- id: agileflow-epic-planner
|
|
20
|
+
dir: skills/agileflow-epic-planner
|
|
21
|
+
- id: agileflow-story-writer
|
|
22
|
+
dir: skills/agileflow-story-writer
|
|
23
|
+
- id: agileflow-status-updater
|
|
24
|
+
dir: skills/agileflow-status-updater
|
|
25
|
+
- id: agileflow-babysit-mentor
|
|
26
|
+
dir: skills/agileflow-babysit-mentor
|
|
27
|
+
agents: []
|
|
28
|
+
hooks:
|
|
29
|
+
- id: session-welcome
|
|
30
|
+
event: SessionStart
|
|
31
|
+
script: hooks/session-welcome.js
|
|
32
|
+
timeout: 5000
|
|
33
|
+
skipOnError: true
|
|
34
|
+
templates: []
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agileflow-adr
|
|
3
|
+
version: 2.0.0
|
|
4
|
+
category: agileflow/core
|
|
5
|
+
description: |
|
|
6
|
+
Use when the user is debating a technology / architecture / trade-off
|
|
7
|
+
decision (database choice, framework, API style, infra) or wants to
|
|
8
|
+
formalize one as an Architecture Decision Record. Writes the ADR to
|
|
9
|
+
docs/03-decisions/ in MADR format.
|
|
10
|
+
triggers:
|
|
11
|
+
keywords:
|
|
12
|
+
- architecture decision
|
|
13
|
+
- architectural decision
|
|
14
|
+
- which should we use
|
|
15
|
+
- record this decision
|
|
16
|
+
- trade-off between
|
|
17
|
+
- which framework
|
|
18
|
+
- which database
|
|
19
|
+
- rest vs graphql
|
|
20
|
+
- sql vs nosql
|
|
21
|
+
- adr for
|
|
22
|
+
priority: 50
|
|
23
|
+
exclude:
|
|
24
|
+
- decision tree (algorithmic)
|
|
25
|
+
- decisive moment
|
|
26
|
+
provides:
|
|
27
|
+
agents: []
|
|
28
|
+
learns:
|
|
29
|
+
enabled: true
|
|
30
|
+
file: _learnings/adr.yaml
|
|
31
|
+
maxEntries: 50
|
|
32
|
+
depends:
|
|
33
|
+
skills: []
|
|
34
|
+
plugins: [core]
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
<!-- {{PERSONALIZATION_BLOCK}} -->
|
|
38
|
+
|
|
39
|
+
# AgileFlow ADR Writer
|
|
40
|
+
|
|
41
|
+
Captures architectural / technical decisions as formal Architecture
|
|
42
|
+
Decision Records in `docs/03-decisions/` (MADR format). Decisions stay
|
|
43
|
+
immutable once accepted; if context changes, supersede with a new ADR
|
|
44
|
+
and link the chain.
|
|
45
|
+
|
|
46
|
+
## When this skill activates
|
|
47
|
+
|
|
48
|
+
- User is comparing options ("PostgreSQL vs MongoDB", "REST vs GraphQL")
|
|
49
|
+
- User asks "which X should we use?" with at least two real candidates
|
|
50
|
+
- User wants to record a decision they've already made
|
|
51
|
+
- Discussion of trade-offs, drivers, or constraints
|
|
52
|
+
- Should NOT activate on unrelated mentions of "decision" — `exclude`
|
|
53
|
+
keywords damp casual / algorithmic uses.
|
|
54
|
+
|
|
55
|
+
## What this skill does
|
|
56
|
+
|
|
57
|
+
1. Detect that a decision is being made (or asked about).
|
|
58
|
+
2. Extract the four MADR elements: context/problem, decision drivers,
|
|
59
|
+
considered options, chosen option + justification.
|
|
60
|
+
3. Ask clarifying questions if any are missing or ambiguous.
|
|
61
|
+
4. Read `docs/03-decisions/` to find the next ADR number and any
|
|
62
|
+
related ADRs to cross-link.
|
|
63
|
+
5. Show the proposed ADR and wait for explicit approval.
|
|
64
|
+
6. Write `docs/03-decisions/ADR-####-<slug>.md` in MADR format.
|
|
65
|
+
|
|
66
|
+
## Self-improving learnings
|
|
67
|
+
|
|
68
|
+
`.agileflow/skills/_learnings/adr.yaml` records preferences:
|
|
69
|
+
- Default `Status:` value (Proposed vs Accepted)
|
|
70
|
+
- Whether to require all four MADR sections or allow brief mode
|
|
71
|
+
- Preferred date format
|
|
72
|
+
- Whether to include Deciders names by default
|
|
73
|
+
|
|
74
|
+
## ADR format (MADR)
|
|
75
|
+
|
|
76
|
+
```markdown
|
|
77
|
+
# [ADR-0001] Title
|
|
78
|
+
|
|
79
|
+
**Date**: YYYY-MM-DD
|
|
80
|
+
**Status**: Proposed | Accepted | Deprecated | Superseded
|
|
81
|
+
**Deciders**: Names of people involved
|
|
82
|
+
**Tags**: architecture, database, api, …
|
|
83
|
+
|
|
84
|
+
## Context and Problem Statement
|
|
85
|
+
[Describe the context and problem. What are we trying to solve? Why now?]
|
|
86
|
+
|
|
87
|
+
## Decision Drivers
|
|
88
|
+
- [e.g., Performance requirements]
|
|
89
|
+
- [e.g., Team expertise]
|
|
90
|
+
- [e.g., Cost constraints]
|
|
91
|
+
|
|
92
|
+
## Considered Options
|
|
93
|
+
- [Option 1]
|
|
94
|
+
- [Option 2]
|
|
95
|
+
- [Option 3]
|
|
96
|
+
|
|
97
|
+
## Decision Outcome
|
|
98
|
+
|
|
99
|
+
**Chosen option**: [Option X]
|
|
100
|
+
|
|
101
|
+
**Justification**: [Why this option best satisfies the drivers]
|
|
102
|
+
|
|
103
|
+
### Positive Consequences
|
|
104
|
+
- [Good outcome 1]
|
|
105
|
+
- [Good outcome 2]
|
|
106
|
+
|
|
107
|
+
### Negative Consequences
|
|
108
|
+
- [Bad outcome 1] — Mitigation: [plan, if any]
|
|
109
|
+
- [Bad outcome 2]
|
|
110
|
+
|
|
111
|
+
## Pros and Cons of the Options
|
|
112
|
+
|
|
113
|
+
### [Option 1]
|
|
114
|
+
**Pros**: …
|
|
115
|
+
**Cons**: …
|
|
116
|
+
|
|
117
|
+
### [Option 2]
|
|
118
|
+
**Pros**: …
|
|
119
|
+
**Cons**: …
|
|
120
|
+
|
|
121
|
+
## Links
|
|
122
|
+
- [Related ADRs]
|
|
123
|
+
- [Relevant documentation]
|
|
124
|
+
- [External resources]
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Statuses
|
|
128
|
+
|
|
129
|
+
- **Proposed** — Under discussion, not yet decided
|
|
130
|
+
- **Accepted** — Decision made and ratified
|
|
131
|
+
- **Deprecated** — No longer relevant; kept for history
|
|
132
|
+
- **Superseded** — Replaced by a newer ADR (link forward to it)
|
|
133
|
+
|
|
134
|
+
## When to write the ADR vs ask first
|
|
135
|
+
|
|
136
|
+
Write it now (with `Status: Accepted`):
|
|
137
|
+
- The user has already made a clear decision and wants to record it
|
|
138
|
+
- The user explicitly asks for the ADR
|
|
139
|
+
|
|
140
|
+
Ask first (then write with `Status: Proposed` or `Accepted`):
|
|
141
|
+
- Multiple options are still in play
|
|
142
|
+
- Drivers / constraints aren't clear yet
|
|
143
|
+
- The chosen option's justification is one-line ("we like it more")
|
|
144
|
+
|
|
145
|
+
## Quality checklist
|
|
146
|
+
|
|
147
|
+
- [ ] Problem statement is concrete (not "improve performance")
|
|
148
|
+
- [ ] At least 2 real options considered (single-option ADRs are a
|
|
149
|
+
smell — note that the alternative was "do nothing" or "status
|
|
150
|
+
quo")
|
|
151
|
+
- [ ] Each option has explicit pros AND cons
|
|
152
|
+
- [ ] Decision drivers explicitly stated
|
|
153
|
+
- [ ] Chosen option's justification ties back to drivers
|
|
154
|
+
- [ ] Negative consequences acknowledged with mitigations where possible
|
|
155
|
+
- [ ] File path: `docs/03-decisions/ADR-####-<slug>.md` (4-digit pad)
|
|
156
|
+
- [ ] User approved the diff before write
|
|
157
|
+
|
|
158
|
+
## Integration
|
|
159
|
+
|
|
160
|
+
- **agileflow-story-writer** — completed ADRs inform Technical Notes
|
|
161
|
+
in stories
|
|
162
|
+
- **agileflow-epic-planner** — major epics often spawn one or more
|
|
163
|
+
ADRs at planning time
|
|
164
|
+
- **agileflow-status-updater** — flipping an ADR from Proposed to
|
|
165
|
+
Accepted is a status mutation through that skill
|
|
166
|
+
|
|
167
|
+
## Notes
|
|
168
|
+
|
|
169
|
+
- Capture decisions even if they seem small. Future you (or a new
|
|
170
|
+
hire) won't remember why you chose option B in three months.
|
|
171
|
+
- Be honest about negative consequences — undocumented downsides are
|
|
172
|
+
the source of "why is this code like this?" frustration.
|
|
173
|
+
- ADRs are **immutable** once accepted. To change a decision, create a
|
|
174
|
+
new ADR with `Status: Accepted`, set the old ADR to `Superseded`,
|
|
175
|
+
and link them.
|
|
176
|
+
- Include the deciders' names. Accountability matters; so does
|
|
177
|
+
knowing who to ask.
|
|
178
|
+
- Date the ADR — context erodes; the date is the timestamp on the
|
|
179
|
+
thinking, not just the file.
|