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
|
@@ -1,241 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TDD Test Template for AgileFlow Story Creation
|
|
3
|
-
*
|
|
4
|
-
* This template generates framework-specific test stubs from acceptance criteria.
|
|
5
|
-
* Used by /agileflow:story when TDD=true flag is set.
|
|
6
|
-
*
|
|
7
|
-
* Placeholders:
|
|
8
|
-
* - {{STORY_ID}} - Story identifier (e.g., US-0042)
|
|
9
|
-
* - {{TITLE}} - Story title
|
|
10
|
-
* - {{EPIC}} - Epic identifier (e.g., EP-0010)
|
|
11
|
-
* - {{AC_TESTS}} - Generated test cases from acceptance criteria
|
|
12
|
-
* - {{CREATED}} - ISO timestamp
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
// Template for Jest/Vitest (JavaScript/TypeScript)
|
|
16
|
-
const jestTemplate = `/**
|
|
17
|
-
* TDD Tests for {{STORY_ID}}: {{TITLE}}
|
|
18
|
-
*
|
|
19
|
-
* Story: docs/06-stories/{{EPIC}}/{{STORY_ID}}-*.md
|
|
20
|
-
* Created: {{CREATED}}
|
|
21
|
-
*
|
|
22
|
-
* These tests are generated from acceptance criteria.
|
|
23
|
-
* Implementation goal: Make all tests pass.
|
|
24
|
-
*
|
|
25
|
-
* Workflow:
|
|
26
|
-
* 1. Review each test case (currently skipped)
|
|
27
|
-
* 2. Implement the feature code
|
|
28
|
-
* 3. Remove .skip from tests one at a time
|
|
29
|
-
* 4. Run tests until all pass
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
describe('{{STORY_ID}}: {{TITLE}}', () => {
|
|
33
|
-
{{AC_TESTS}}
|
|
34
|
-
});
|
|
35
|
-
`;
|
|
36
|
-
|
|
37
|
-
// Template for individual AC test block (Jest)
|
|
38
|
-
const jestAcTemplate = `
|
|
39
|
-
// {{AC_LABEL}}: {{AC_SUMMARY}}
|
|
40
|
-
describe('{{AC_SUMMARY}}', () => {
|
|
41
|
-
it.skip('should {{THEN_CLAUSE}}', () => {
|
|
42
|
-
// Given: {{GIVEN_CLAUSE}}
|
|
43
|
-
// TODO: Set up test preconditions
|
|
44
|
-
|
|
45
|
-
// When: {{WHEN_CLAUSE}}
|
|
46
|
-
// TODO: Execute the action
|
|
47
|
-
|
|
48
|
-
// Then: {{THEN_CLAUSE}}
|
|
49
|
-
// TODO: Add assertions
|
|
50
|
-
expect(true).toBe(true);
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
`;
|
|
54
|
-
|
|
55
|
-
// Template for pytest (Python)
|
|
56
|
-
const pytestTemplate = `"""
|
|
57
|
-
TDD Tests for {{STORY_ID}}: {{TITLE}}
|
|
58
|
-
|
|
59
|
-
Story: docs/06-stories/{{EPIC}}/{{STORY_ID}}-*.md
|
|
60
|
-
Created: {{CREATED}}
|
|
61
|
-
|
|
62
|
-
These tests are generated from acceptance criteria.
|
|
63
|
-
Implementation goal: Make all tests pass.
|
|
64
|
-
|
|
65
|
-
Workflow:
|
|
66
|
-
1. Review each test case (currently skipped)
|
|
67
|
-
2. Implement the feature code
|
|
68
|
-
3. Remove @pytest.mark.skip from tests one at a time
|
|
69
|
-
4. Run tests until all pass
|
|
70
|
-
"""
|
|
71
|
-
|
|
72
|
-
import pytest
|
|
73
|
-
|
|
74
|
-
{{AC_TESTS}}
|
|
75
|
-
`;
|
|
76
|
-
|
|
77
|
-
// Template for individual AC test block (pytest)
|
|
78
|
-
const pytestAcTemplate = `
|
|
79
|
-
# {{AC_LABEL}}: {{AC_SUMMARY}}
|
|
80
|
-
class Test{{AC_CLASS_NAME}}:
|
|
81
|
-
@pytest.mark.skip(reason="TDD: Implement feature first")
|
|
82
|
-
def test_{{TEST_NAME}}(self):
|
|
83
|
-
"""
|
|
84
|
-
Given: {{GIVEN_CLAUSE}}
|
|
85
|
-
When: {{WHEN_CLAUSE}}
|
|
86
|
-
Then: {{THEN_CLAUSE}}
|
|
87
|
-
"""
|
|
88
|
-
# TODO: Set up test preconditions (Given)
|
|
89
|
-
|
|
90
|
-
# TODO: Execute the action (When)
|
|
91
|
-
|
|
92
|
-
# TODO: Add assertions (Then)
|
|
93
|
-
assert True
|
|
94
|
-
`;
|
|
95
|
-
|
|
96
|
-
// Template for Go tests
|
|
97
|
-
const goTestTemplate = `package {{PACKAGE_NAME}}_test
|
|
98
|
-
|
|
99
|
-
/*
|
|
100
|
-
TDD Tests for {{STORY_ID}}: {{TITLE}}
|
|
101
|
-
|
|
102
|
-
Story: docs/06-stories/{{EPIC}}/{{STORY_ID}}-*.md
|
|
103
|
-
Created: {{CREATED}}
|
|
104
|
-
|
|
105
|
-
These tests are generated from acceptance criteria.
|
|
106
|
-
Implementation goal: Make all tests pass.
|
|
107
|
-
*/
|
|
108
|
-
|
|
109
|
-
import (
|
|
110
|
-
"testing"
|
|
111
|
-
)
|
|
112
|
-
|
|
113
|
-
{{AC_TESTS}}
|
|
114
|
-
`;
|
|
115
|
-
|
|
116
|
-
// Template for individual AC test block (Go)
|
|
117
|
-
const goAcTemplate = `
|
|
118
|
-
// {{AC_LABEL}}: {{AC_SUMMARY}}
|
|
119
|
-
func Test{{AC_FUNC_NAME}}(t *testing.T) {
|
|
120
|
-
t.Skip("TDD: Implement feature first")
|
|
121
|
-
|
|
122
|
-
// Given: {{GIVEN_CLAUSE}}
|
|
123
|
-
// TODO: Set up test preconditions
|
|
124
|
-
|
|
125
|
-
// When: {{WHEN_CLAUSE}}
|
|
126
|
-
// TODO: Execute the action
|
|
127
|
-
|
|
128
|
-
// Then: {{THEN_CLAUSE}}
|
|
129
|
-
// TODO: Add assertions
|
|
130
|
-
}
|
|
131
|
-
`;
|
|
132
|
-
|
|
133
|
-
// Export templates for use by story.md command
|
|
134
|
-
module.exports = {
|
|
135
|
-
jest: {
|
|
136
|
-
file: jestTemplate,
|
|
137
|
-
ac: jestAcTemplate,
|
|
138
|
-
extension: '.test.ts',
|
|
139
|
-
directory: '__tests__'
|
|
140
|
-
},
|
|
141
|
-
vitest: {
|
|
142
|
-
file: jestTemplate, // Same format as Jest
|
|
143
|
-
ac: jestAcTemplate,
|
|
144
|
-
extension: '.test.ts',
|
|
145
|
-
directory: '__tests__'
|
|
146
|
-
},
|
|
147
|
-
pytest: {
|
|
148
|
-
file: pytestTemplate,
|
|
149
|
-
ac: pytestAcTemplate,
|
|
150
|
-
extension: '_test.py',
|
|
151
|
-
directory: 'tests'
|
|
152
|
-
},
|
|
153
|
-
go: {
|
|
154
|
-
file: goTestTemplate,
|
|
155
|
-
ac: goAcTemplate,
|
|
156
|
-
extension: '_test.go',
|
|
157
|
-
directory: ''
|
|
158
|
-
},
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* Parse acceptance criteria into structured format
|
|
162
|
-
* @param {string} acText - Raw AC text with Given/When/Then
|
|
163
|
-
* @returns {Array} Parsed AC objects
|
|
164
|
-
*/
|
|
165
|
-
parseAcceptanceCriteria(acText) {
|
|
166
|
-
const criteria = [];
|
|
167
|
-
const acBlocks = acText.split(/(?=(?:AC\d+|###?\s*AC))/i);
|
|
168
|
-
|
|
169
|
-
for (const block of acBlocks) {
|
|
170
|
-
if (!block.trim()) continue;
|
|
171
|
-
|
|
172
|
-
// Extract label (AC1, AC2, etc.)
|
|
173
|
-
const labelMatch = block.match(/(?:AC\s*)?(\d+)/i);
|
|
174
|
-
const label = labelMatch ? `AC${labelMatch[1]}` : `AC${criteria.length + 1}`;
|
|
175
|
-
|
|
176
|
-
// Extract Given/When/Then
|
|
177
|
-
const givenMatch = block.match(/\*?\*?Given\*?\*?[:\s]+(.+?)(?=\*?\*?When|$)/is);
|
|
178
|
-
const whenMatch = block.match(/\*?\*?When\*?\*?[:\s]+(.+?)(?=\*?\*?Then|$)/is);
|
|
179
|
-
const thenMatch = block.match(/\*?\*?Then\*?\*?[:\s]+(.+?)(?=\*?\*?(?:Given|AC|###)|$)/is);
|
|
180
|
-
|
|
181
|
-
if (givenMatch || whenMatch || thenMatch) {
|
|
182
|
-
criteria.push({
|
|
183
|
-
label,
|
|
184
|
-
given: givenMatch ? givenMatch[1].trim() : 'preconditions are met',
|
|
185
|
-
when: whenMatch ? whenMatch[1].trim() : 'action is performed',
|
|
186
|
-
then: thenMatch ? thenMatch[1].trim() : 'expected result occurs',
|
|
187
|
-
summary: this.generateSummary(givenMatch, whenMatch, thenMatch)
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
// If no structured AC found, create one from the whole text
|
|
193
|
-
if (criteria.length === 0 && acText.trim()) {
|
|
194
|
-
criteria.push({
|
|
195
|
-
label: 'AC1',
|
|
196
|
-
given: 'the feature is implemented',
|
|
197
|
-
when: 'user interacts with it',
|
|
198
|
-
then: 'expected behavior occurs',
|
|
199
|
-
summary: acText.substring(0, 50).trim()
|
|
200
|
-
});
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
return criteria;
|
|
204
|
-
},
|
|
205
|
-
|
|
206
|
-
/**
|
|
207
|
-
* Generate a short summary from Given/When/Then
|
|
208
|
-
*/
|
|
209
|
-
generateSummary(givenMatch, whenMatch, thenMatch) {
|
|
210
|
-
if (thenMatch) {
|
|
211
|
-
// Use Then clause, truncated
|
|
212
|
-
return thenMatch[1].trim().substring(0, 50).replace(/[^\w\s]/g, '');
|
|
213
|
-
}
|
|
214
|
-
if (whenMatch) {
|
|
215
|
-
return whenMatch[1].trim().substring(0, 50).replace(/[^\w\s]/g, '');
|
|
216
|
-
}
|
|
217
|
-
return 'acceptance criteria';
|
|
218
|
-
},
|
|
219
|
-
|
|
220
|
-
/**
|
|
221
|
-
* Convert string to valid function/class name
|
|
222
|
-
*/
|
|
223
|
-
toIdentifier(str) {
|
|
224
|
-
return str
|
|
225
|
-
.replace(/[^\w\s]/g, '')
|
|
226
|
-
.split(/\s+/)
|
|
227
|
-
.map((word, i) => i === 0 ? word.toLowerCase() : word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
228
|
-
.join('');
|
|
229
|
-
},
|
|
230
|
-
|
|
231
|
-
/**
|
|
232
|
-
* Convert string to PascalCase for class names
|
|
233
|
-
*/
|
|
234
|
-
toPascalCase(str) {
|
|
235
|
-
return str
|
|
236
|
-
.replace(/[^\w\s]/g, '')
|
|
237
|
-
.split(/\s+/)
|
|
238
|
-
.map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
239
|
-
.join('');
|
|
240
|
-
}
|
|
241
|
-
};
|
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
# Git Worktrees with AgileFlow
|
|
2
|
-
|
|
3
|
-
Git worktrees allow you to work on multiple branches simultaneously in separate directories. This is perfect for isolating experimental work, handling urgent hotfixes during feature development, or comparing different architectural approaches—all without losing your AI context with Claude Code.
|
|
4
|
-
|
|
5
|
-
## What Are Git Worktrees?
|
|
6
|
-
|
|
7
|
-
Git worktrees let you check out multiple branches into separate physical directories, all linked to the same repository. Think of it as having multiple "copies" of your project, each on a different branch, without the overhead of multiple clones.
|
|
8
|
-
|
|
9
|
-
**Key Benefits:**
|
|
10
|
-
- **Context Preservation**: Each directory maintains its own `/babysit` session with full AI context
|
|
11
|
-
- **Zero Context Switching**: No need to `git stash` and re-explain your work to Claude
|
|
12
|
-
- **Safe Isolation**: Experiment with risky changes without affecting your main work
|
|
13
|
-
- **Instant Availability**: Your main work stays exactly as you left it
|
|
14
|
-
|
|
15
|
-
## ✅ GOOD Use Cases
|
|
16
|
-
|
|
17
|
-
### 1. Critical Hotfix During Feature Development
|
|
18
|
-
|
|
19
|
-
**Scenario:** You're deep in feature work when a production bug needs immediate attention.
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
# You're 2 hours into building a dashboard, Claude has full context
|
|
23
|
-
~/myapp/
|
|
24
|
-
/agileflow:babysit "Build analytics dashboard with charts and filters"
|
|
25
|
-
|
|
26
|
-
# URGENT: Production authentication is broken!
|
|
27
|
-
# Create hotfix worktree in 10 seconds
|
|
28
|
-
git worktree add ../myapp-hotfix hotfix/auth-bug
|
|
29
|
-
code ../myapp-hotfix # Opens in NEW window
|
|
30
|
-
|
|
31
|
-
# In hotfix window - fresh babysit session
|
|
32
|
-
cd ../myapp-hotfix
|
|
33
|
-
/agileflow:babysit "Fix authentication 500 error in src/auth/login.ts"
|
|
34
|
-
|
|
35
|
-
# Babysit reads CLAUDE.md, understands architecture, fixes bug
|
|
36
|
-
# Creates PR, merges to main
|
|
37
|
-
|
|
38
|
-
# Close hotfix window, remove worktree
|
|
39
|
-
cd ~/myapp
|
|
40
|
-
git worktree remove ../myapp-hotfix
|
|
41
|
-
|
|
42
|
-
# Back to ORIGINAL window - Claude still remembers everything!
|
|
43
|
-
"Continue building the dashboard" → Claude picks up exactly where you left off
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
**Time Saved:** 25+ minutes of context switching
|
|
47
|
-
|
|
48
|
-
### 2. Comparing Architectural Approaches
|
|
49
|
-
|
|
50
|
-
**Scenario:** You need to evaluate GraphQL vs REST before committing to one.
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
# Test GraphQL implementation
|
|
54
|
-
git worktree add ../myapp-graphql experiment/graphql-api
|
|
55
|
-
cd ../myapp-graphql
|
|
56
|
-
/agileflow:babysit "Implement user API using GraphQL with Apollo Server"
|
|
57
|
-
|
|
58
|
-
# Test REST implementation
|
|
59
|
-
git worktree add ../myapp-rest experiment/rest-api
|
|
60
|
-
cd ../myapp-rest
|
|
61
|
-
/agileflow:babysit "Implement user API using Express REST endpoints"
|
|
62
|
-
|
|
63
|
-
# Compare: Performance, DX, bundle size, complexity
|
|
64
|
-
# Merge the winner, delete the loser
|
|
65
|
-
|
|
66
|
-
cd ~/myapp
|
|
67
|
-
git merge experiment/graphql-api # Or experiment/rest-api
|
|
68
|
-
git worktree remove ../myapp-graphql ../myapp-rest
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### 3. Safe Testing of Risky Refactors
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
# Keep main work safe
|
|
75
|
-
~/myapp/ → /agileflow:babysit "Continue building features on stable codebase"
|
|
76
|
-
|
|
77
|
-
# Test risky migration in isolation
|
|
78
|
-
git worktree add ../myapp-ts-migration experiment/typescript
|
|
79
|
-
cd ../myapp-ts-migration
|
|
80
|
-
/agileflow:babysit "Migrate entire codebase from JavaScript to TypeScript"
|
|
81
|
-
|
|
82
|
-
# If migration succeeds → merge
|
|
83
|
-
# If it fails catastrophically → delete worktree (no git history pollution)
|
|
84
|
-
git worktree remove ../myapp-ts-migration
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
## ⚠️ CRITICAL LIMITATIONS
|
|
88
|
-
|
|
89
|
-
### DO NOT Run Multiple Babysits on the Same Epic
|
|
90
|
-
|
|
91
|
-
AgileFlow's status.json and bus/log.jsonl are **file-based** (docs-as-code philosophy). Multiple processes writing the same file simultaneously can cause:
|
|
92
|
-
- **Lost status updates** (read-modify-write race condition)
|
|
93
|
-
- **Corrupted JSON** (incomplete writes)
|
|
94
|
-
- **Inconsistent agent coordination** (message bus conflicts)
|
|
95
|
-
|
|
96
|
-
**❌ WRONG - Concurrent Edits:**
|
|
97
|
-
```bash
|
|
98
|
-
# Worktree 1
|
|
99
|
-
cd ~/myapp-feature-a
|
|
100
|
-
/agileflow:babysit "Work on EP-001: User Authentication"
|
|
101
|
-
# Updates status.json: US-001 → in-progress
|
|
102
|
-
|
|
103
|
-
# Worktree 2 (SIMULTANEOUSLY)
|
|
104
|
-
cd ~/myapp-feature-b
|
|
105
|
-
/agileflow:babysit "Work on EP-001: User Authentication"
|
|
106
|
-
# Updates status.json: US-002 → in-progress
|
|
107
|
-
|
|
108
|
-
# RESULT: Race condition! One update may be lost! ❌
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
**✅ CORRECT - Isolated Epics:**
|
|
112
|
-
```bash
|
|
113
|
-
# Worktree 1: Epic isolation
|
|
114
|
-
cd ~/myapp-auth
|
|
115
|
-
/agileflow:babysit "Work on EP-001: User Authentication"
|
|
116
|
-
|
|
117
|
-
# Worktree 2: DIFFERENT epic
|
|
118
|
-
cd ~/myapp-payment
|
|
119
|
-
/agileflow:babysit "Work on EP-002: Payment System"
|
|
120
|
-
|
|
121
|
-
# Different epics → different story files → no conflicts ✅
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
### The Golden Rule
|
|
125
|
-
|
|
126
|
-
**Use worktrees for ISOLATION, not PARALLEL EXECUTION.**
|
|
127
|
-
|
|
128
|
-
## Quick Start Guide
|
|
129
|
-
|
|
130
|
-
### Using the Helper Script
|
|
131
|
-
|
|
132
|
-
```bash
|
|
133
|
-
# Easier method (handles naming, branch creation, guidance)
|
|
134
|
-
./scripts/worktree-create.sh new-feature
|
|
135
|
-
|
|
136
|
-
# Opens automatically with instructions
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
### Manual Method
|
|
140
|
-
|
|
141
|
-
```bash
|
|
142
|
-
# Create worktree for new feature
|
|
143
|
-
git worktree add ../myapp-new-feature -b feature/new-feature main
|
|
144
|
-
|
|
145
|
-
# Open in new editor window
|
|
146
|
-
code ../myapp-new-feature
|
|
147
|
-
|
|
148
|
-
# Start babysit
|
|
149
|
-
cd ../myapp-new-feature
|
|
150
|
-
/agileflow:babysit
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
### Cleaning Up a Worktree
|
|
154
|
-
|
|
155
|
-
```bash
|
|
156
|
-
# After merging your feature
|
|
157
|
-
cd ~/myapp
|
|
158
|
-
git merge feature/new-feature
|
|
159
|
-
|
|
160
|
-
# Remove the worktree
|
|
161
|
-
git worktree remove ../myapp-new-feature
|
|
162
|
-
|
|
163
|
-
# Delete the branch (optional)
|
|
164
|
-
git branch -d feature/new-feature
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
## Best Practices
|
|
168
|
-
|
|
169
|
-
1. **Use Descriptive Names** - `myapp-auth-refactor` not `myapp-1`
|
|
170
|
-
2. **One Epic Per Worktree** - Keep work streams completely separate
|
|
171
|
-
3. **Clean Up Merged Worktrees** - Run `git worktree remove` regularly
|
|
172
|
-
4. **Don't Share Dependencies** - Each worktree should have its own `node_modules/`, `.venv/`, etc.
|
|
173
|
-
5. **Keep Main Worktree Stable** - Use main for stable work, worktrees for experiments
|
|
174
|
-
|
|
175
|
-
## Integration with AgileFlow
|
|
176
|
-
|
|
177
|
-
### Message Bus Coordination
|
|
178
|
-
|
|
179
|
-
AgileFlow's message bus (`docs/09-agents/bus/log.jsonl`) is shared across all worktrees. The bus is append-only (JSONL), so concurrent appends are generally safe. However, **status.json** uses read-modify-write, so avoid concurrent edits to the same stories.
|
|
180
|
-
|
|
181
|
-
## Troubleshooting
|
|
182
|
-
|
|
183
|
-
### "fatal: 'branch' is already checked out"
|
|
184
|
-
|
|
185
|
-
```bash
|
|
186
|
-
# Find where branch is checked out
|
|
187
|
-
git worktree list
|
|
188
|
-
|
|
189
|
-
# Remove the conflicting worktree
|
|
190
|
-
git worktree remove /path/to/conflicting/worktree
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
### Disk space issues
|
|
194
|
-
|
|
195
|
-
```bash
|
|
196
|
-
# Use pnpm for automatic dependency deduplication
|
|
197
|
-
pnpm install # Shares packages across worktrees
|
|
198
|
-
|
|
199
|
-
# Or use shared conda environment (Python)
|
|
200
|
-
conda create -n myapp-shared python=3.11
|
|
201
|
-
conda activate myapp-shared # Use in all worktrees
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
### Forgotten worktrees
|
|
205
|
-
|
|
206
|
-
```bash
|
|
207
|
-
# List all worktrees
|
|
208
|
-
git worktree list
|
|
209
|
-
|
|
210
|
-
# Remove unused worktrees
|
|
211
|
-
git worktree remove ../myapp-old-experiment
|
|
212
|
-
|
|
213
|
-
# Auto-prune deleted worktrees
|
|
214
|
-
git worktree prune
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
## Summary
|
|
218
|
-
|
|
219
|
-
**Git worktrees with AgileFlow provide:**
|
|
220
|
-
- ✅ Zero context switching - preserve AI understanding
|
|
221
|
-
- ✅ Safe isolation - experiment without risk
|
|
222
|
-
- ✅ Fast hotfixes - handle urgent work without losing flow
|
|
223
|
-
- ✅ Side-by-side comparison - test alternatives in parallel
|
|
224
|
-
|
|
225
|
-
**Remember:**
|
|
226
|
-
- Use worktrees for **ISOLATION**, not **PARALLEL EXECUTION**
|
|
227
|
-
- Avoid concurrent edits to the same epic/stories
|
|
228
|
-
- Clean up merged worktrees regularly
|
|
229
|
-
- Each worktree should work on different features/epics
|
|
230
|
-
|
|
231
|
-
**Happy coding with preserved context!** 🚀
|
package/tools/agileflow-npx.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* AgileFlow CLI - NPX Entry Point
|
|
5
|
-
*
|
|
6
|
-
* This file ensures proper execution when run via npx from npm registry.
|
|
7
|
-
* It preserves the user's working directory when spawning the CLI.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
const { spawnSync } = require('node:child_process');
|
|
11
|
-
const path = require('node:path');
|
|
12
|
-
const fs = require('node:fs');
|
|
13
|
-
|
|
14
|
-
// Check if we're running in an npx temporary directory
|
|
15
|
-
const isNpxExecution = __dirname.includes('_npx') || __dirname.includes('.npm');
|
|
16
|
-
|
|
17
|
-
if (isNpxExecution) {
|
|
18
|
-
// Running via npx - spawn child process to preserve user's working directory
|
|
19
|
-
const args = process.argv.slice(2);
|
|
20
|
-
const cliPath = path.join(__dirname, 'cli', 'agileflow-cli.js');
|
|
21
|
-
|
|
22
|
-
if (!fs.existsSync(cliPath)) {
|
|
23
|
-
console.error('Error: Could not find agileflow-cli.js at', cliPath);
|
|
24
|
-
console.error('Current directory:', __dirname);
|
|
25
|
-
process.exit(1);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// Execute CLI from user's working directory (process.cwd()), not npm cache
|
|
29
|
-
const result = spawnSync(process.execPath, [cliPath, ...args], {
|
|
30
|
-
stdio: 'inherit',
|
|
31
|
-
cwd: process.cwd(),
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
if (result.error) {
|
|
35
|
-
console.error('Error: Failed to run AgileFlow CLI:', result.error.message);
|
|
36
|
-
process.exit(1);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
if (result.signal) {
|
|
40
|
-
try {
|
|
41
|
-
process.kill(process.pid, result.signal);
|
|
42
|
-
} catch {
|
|
43
|
-
process.exit(1);
|
|
44
|
-
}
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
process.exit(result.status ?? 0);
|
|
49
|
-
} else {
|
|
50
|
-
// Local execution - use require
|
|
51
|
-
require('./cli/agileflow-cli.js');
|
|
52
|
-
}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* AgileFlow CLI - Command Router
|
|
5
|
-
*
|
|
6
|
-
* Routes commands to their respective handlers using Commander.js
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
const { program } = require('commander');
|
|
10
|
-
const path = require('node:path');
|
|
11
|
-
const fs = require('node:fs');
|
|
12
|
-
|
|
13
|
-
// Load package.json for version info
|
|
14
|
-
const packageJsonPath = path.join(__dirname, '..', '..', 'package.json');
|
|
15
|
-
const packageJson = require(packageJsonPath);
|
|
16
|
-
|
|
17
|
-
// Dynamically load all command modules
|
|
18
|
-
const commandsPath = path.join(__dirname, 'commands');
|
|
19
|
-
const commands = {};
|
|
20
|
-
|
|
21
|
-
if (fs.existsSync(commandsPath)) {
|
|
22
|
-
const commandFiles = fs.readdirSync(commandsPath).filter(file => file.endsWith('.js'));
|
|
23
|
-
|
|
24
|
-
for (const file of commandFiles) {
|
|
25
|
-
try {
|
|
26
|
-
const command = require(path.join(commandsPath, file));
|
|
27
|
-
if (command.name) {
|
|
28
|
-
commands[command.name] = command;
|
|
29
|
-
}
|
|
30
|
-
} catch (error) {
|
|
31
|
-
console.error(`Warning: Failed to load command ${file}:`, error.message);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Set up main program
|
|
37
|
-
program
|
|
38
|
-
.name('agileflow')
|
|
39
|
-
.version(packageJson.version)
|
|
40
|
-
.description(
|
|
41
|
-
'AgileFlow - AI-driven agile development for Claude Code, Cursor, Windsurf, and more'
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
// Register all commands
|
|
45
|
-
for (const [name, cmd] of Object.entries(commands)) {
|
|
46
|
-
const command = program.command(name).description(cmd.description);
|
|
47
|
-
|
|
48
|
-
// Add options if defined
|
|
49
|
-
if (cmd.options) {
|
|
50
|
-
for (const option of cmd.options) {
|
|
51
|
-
command.option(...option);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// Add arguments if defined
|
|
56
|
-
if (cmd.arguments) {
|
|
57
|
-
for (const arg of cmd.arguments) {
|
|
58
|
-
command.argument(...arg);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// Set action
|
|
63
|
-
command.action(cmd.action);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// Parse arguments
|
|
67
|
-
program.parse(process.argv);
|
|
68
|
-
|
|
69
|
-
// Show help if no command provided
|
|
70
|
-
if (process.argv.slice(2).length === 0) {
|
|
71
|
-
program.outputHelp();
|
|
72
|
-
}
|