aidp 0.27.0 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +89 -0
  3. data/lib/aidp/cli/models_command.rb +5 -6
  4. data/lib/aidp/cli.rb +10 -8
  5. data/lib/aidp/config.rb +54 -0
  6. data/lib/aidp/debug_mixin.rb +23 -1
  7. data/lib/aidp/execute/agent_signal_parser.rb +22 -0
  8. data/lib/aidp/execute/repl_macros.rb +2 -2
  9. data/lib/aidp/execute/steps.rb +94 -1
  10. data/lib/aidp/execute/work_loop_runner.rb +209 -17
  11. data/lib/aidp/execute/workflow_selector.rb +2 -25
  12. data/lib/aidp/firewall/provider_requirements_collector.rb +262 -0
  13. data/lib/aidp/harness/ai_decision_engine.rb +35 -2
  14. data/lib/aidp/harness/config_manager.rb +0 -5
  15. data/lib/aidp/harness/config_schema.rb +8 -0
  16. data/lib/aidp/harness/configuration.rb +27 -19
  17. data/lib/aidp/harness/enhanced_runner.rb +1 -4
  18. data/lib/aidp/harness/error_handler.rb +1 -72
  19. data/lib/aidp/harness/provider_factory.rb +11 -2
  20. data/lib/aidp/harness/state_manager.rb +0 -7
  21. data/lib/aidp/harness/thinking_depth_manager.rb +47 -68
  22. data/lib/aidp/harness/ui/enhanced_tui.rb +8 -18
  23. data/lib/aidp/harness/ui/enhanced_workflow_selector.rb +0 -18
  24. data/lib/aidp/harness/ui/progress_display.rb +6 -2
  25. data/lib/aidp/harness/user_interface.rb +0 -58
  26. data/lib/aidp/init/runner.rb +7 -2
  27. data/lib/aidp/planning/analyzers/feedback_analyzer.rb +365 -0
  28. data/lib/aidp/planning/builders/agile_plan_builder.rb +387 -0
  29. data/lib/aidp/planning/builders/project_plan_builder.rb +193 -0
  30. data/lib/aidp/planning/generators/gantt_generator.rb +190 -0
  31. data/lib/aidp/planning/generators/iteration_plan_generator.rb +392 -0
  32. data/lib/aidp/planning/generators/legacy_research_planner.rb +473 -0
  33. data/lib/aidp/planning/generators/marketing_report_generator.rb +348 -0
  34. data/lib/aidp/planning/generators/mvp_scope_generator.rb +310 -0
  35. data/lib/aidp/planning/generators/user_test_plan_generator.rb +373 -0
  36. data/lib/aidp/planning/generators/wbs_generator.rb +259 -0
  37. data/lib/aidp/planning/mappers/persona_mapper.rb +163 -0
  38. data/lib/aidp/planning/parsers/document_parser.rb +141 -0
  39. data/lib/aidp/planning/parsers/feedback_data_parser.rb +252 -0
  40. data/lib/aidp/provider_manager.rb +8 -32
  41. data/lib/aidp/providers/aider.rb +264 -0
  42. data/lib/aidp/providers/anthropic.rb +74 -2
  43. data/lib/aidp/providers/base.rb +25 -1
  44. data/lib/aidp/providers/codex.rb +26 -3
  45. data/lib/aidp/providers/cursor.rb +16 -0
  46. data/lib/aidp/providers/gemini.rb +13 -0
  47. data/lib/aidp/providers/github_copilot.rb +17 -0
  48. data/lib/aidp/providers/kilocode.rb +11 -0
  49. data/lib/aidp/providers/opencode.rb +11 -0
  50. data/lib/aidp/setup/wizard.rb +249 -39
  51. data/lib/aidp/version.rb +1 -1
  52. data/lib/aidp/watch/build_processor.rb +211 -30
  53. data/lib/aidp/watch/change_request_processor.rb +128 -14
  54. data/lib/aidp/watch/ci_fix_processor.rb +103 -37
  55. data/lib/aidp/watch/ci_log_extractor.rb +258 -0
  56. data/lib/aidp/watch/github_state_extractor.rb +177 -0
  57. data/lib/aidp/watch/implementation_verifier.rb +284 -0
  58. data/lib/aidp/watch/plan_generator.rb +7 -43
  59. data/lib/aidp/watch/plan_processor.rb +7 -6
  60. data/lib/aidp/watch/repository_client.rb +245 -17
  61. data/lib/aidp/watch/review_processor.rb +98 -17
  62. data/lib/aidp/watch/reviewers/base_reviewer.rb +1 -1
  63. data/lib/aidp/watch/runner.rb +181 -29
  64. data/lib/aidp/watch/state_store.rb +22 -1
  65. data/lib/aidp/workflows/definitions.rb +147 -0
  66. data/lib/aidp/workstream_cleanup.rb +245 -0
  67. data/lib/aidp/worktree.rb +19 -0
  68. data/templates/aidp.yml.example +57 -0
  69. data/templates/implementation/generate_tdd_specs.md +213 -0
  70. data/templates/implementation/iterative_implementation.md +122 -0
  71. data/templates/planning/agile/analyze_feedback.md +183 -0
  72. data/templates/planning/agile/generate_iteration_plan.md +179 -0
  73. data/templates/planning/agile/generate_legacy_research_plan.md +171 -0
  74. data/templates/planning/agile/generate_marketing_report.md +162 -0
  75. data/templates/planning/agile/generate_mvp_scope.md +127 -0
  76. data/templates/planning/agile/generate_user_test_plan.md +143 -0
  77. data/templates/planning/agile/ingest_feedback.md +174 -0
  78. data/templates/planning/assemble_project_plan.md +113 -0
  79. data/templates/planning/assign_personas.md +108 -0
  80. data/templates/planning/create_tasks.md +52 -6
  81. data/templates/planning/generate_gantt.md +86 -0
  82. data/templates/planning/generate_wbs.md +85 -0
  83. data/templates/planning/initialize_planning_mode.md +70 -0
  84. data/templates/skills/README.md +2 -2
  85. data/templates/skills/marketing_strategist/SKILL.md +279 -0
  86. data/templates/skills/product_manager/SKILL.md +177 -0
  87. data/templates/skills/ruby_aidp_planning/SKILL.md +497 -0
  88. data/templates/skills/ruby_rspec_tdd/SKILL.md +514 -0
  89. data/templates/skills/ux_researcher/SKILL.md +222 -0
  90. metadata +39 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 174c58fcccbc5d5c927cb30dd3bf8c735de926cf52de5eb2a4bb56f2bc984cc3
4
- data.tar.gz: 73efb11b31d3ff346a482fde9616047fd64525e44ffe768a81a6e4808e748cd1
3
+ metadata.gz: 931d08a58cf52b7acc999d7e3320181c29710c50922463f4fb5c4e0a76c02e04
4
+ data.tar.gz: 1971534889d0fde6daa6d8da6f345ffac4a698f827a205e445f75e7fa26d38da
5
5
  SHA512:
6
- metadata.gz: 407aecc4942fbda7fbf09e15ebfdfa6ba8595be9f282a0b425ce65dc22e45d3a524fe5dd211ce96ec59029801df01528a835412ba38f90cb273c5b1594df2016
7
- data.tar.gz: 174a42200bb01198f3c88de3ec35198c9475f018f06a673e7d1d3c0e0dda9c294dd832519327261ac767a42323e965f1fa7ea1fa1d3b394425604ceaaa7bf371
6
+ metadata.gz: b87667e112faeb9818187eb97e281539e936ad213dcd49867781b37ff57ae9c827308cb9d4f7bdf707e48133fc3efcc79d1815d5a9b12cb3b395aad5d0e432cf
7
+ data.tar.gz: 5b9fa041a4e680115248fad3fad2ccd7c8ab9cc956a471051b2e2945b1d2277cfea2af7f1d3f105dd36e8e9be1f149f42fb91080496f055deb0c26e8daef1427
data/README.md CHANGED
@@ -135,6 +135,95 @@ AIDP implements **work loops** - an iterative execution pattern where AI agents
135
135
 
136
136
  See [Work Loops Guide](docs/WORK_LOOPS_GUIDE.md) for details.
137
137
 
138
+ ### Waterfall Planning Mode
139
+
140
+ Create comprehensive project plans with work breakdown structures, Gantt charts, and automated task assignments:
141
+
142
+ ```bash
143
+ # Start planning workflow
144
+ aidp execute
145
+ # Select "Waterfall Planning"
146
+
147
+ # Choose your path:
148
+ # - Ingest existing documentation (PRDs, design docs)
149
+ # - Generate from scratch through AI dialogue
150
+ ```
151
+
152
+ **Generated Artifacts** (in `.aidp/docs/`):
153
+
154
+ - **PRD.md** - Product requirements document
155
+ - **TECH_DESIGN.md** - Technical architecture and design
156
+ - **WBS.md** - Work breakdown structure with phases and tasks
157
+ - **GANTT.md** - Mermaid Gantt chart with critical path analysis
158
+ - **persona_map.yml** - AI-powered task-to-persona assignments
159
+ - **PROJECT_PLAN.md** - Complete integrated project plan
160
+
161
+ **Key Features:**
162
+
163
+ - **Documentation Ingestion** - Import and enhance existing project docs
164
+ - **AI-Guided Planning** - Generate complete plans through dialogue
165
+ - **Critical Path Analysis** - Identify project bottlenecks
166
+ - **Zero Framework Cognition** - AI-powered persona assignment (no heuristics)
167
+ - **Mermaid Visualizations** - Gantt charts renderable on GitHub/GitLab
168
+ - **TDD Integration** - Optional test-driven development workflow
169
+
170
+ See [Waterfall Planning Mode Guide](docs/WATERFALL_PLANNING_MODE.md) for complete documentation.
171
+
172
+ ### Agile Development Mode
173
+
174
+ Build products iteratively with user feedback loops, MVP scoping, and data-driven iteration planning:
175
+
176
+ ```bash
177
+ # Start planning workflow
178
+ aidp execute
179
+ # Select "Agile MVP Planning", "Agile Iteration Planning", or "Legacy Product Research"
180
+ ```
181
+
182
+ **Three Agile Workflows:**
183
+
184
+ #### 1. MVP Planning
185
+
186
+ Define minimum viable product scope, create user testing plans, and generate marketing materials:
187
+
188
+ - **Input**: Product Requirements Document (PRD)
189
+ - **Outputs**: MVP scope, user testing plan, marketing report
190
+ - **Use case**: Launching a new product with user validation
191
+
192
+ #### 2. Iteration Planning
193
+
194
+ Analyze user feedback and plan next development iteration:
195
+
196
+ - **Input**: User feedback data (CSV/JSON/markdown)
197
+ - **Outputs**: Feedback analysis, iteration plan with prioritized tasks
198
+ - **Use case**: Improving product based on real user data
199
+
200
+ #### 3. Legacy Research
201
+
202
+ Analyze existing codebase and create user research plan:
203
+
204
+ - **Input**: Codebase path and language
205
+ - **Outputs**: Research plan, feature audit, testing strategy
206
+ - **Use case**: Understanding user needs for existing product
207
+
208
+ **Generated Artifacts** (in `.aidp/docs/`):
209
+
210
+ - **MVP_SCOPE.md** - Must-have vs nice-to-have feature breakdown
211
+ - **USER_TEST_PLAN.md** - Comprehensive user testing strategy
212
+ - **MARKETING_REPORT.md** - Value propositions and messaging
213
+ - **USER_FEEDBACK_ANALYSIS.md** - AI-powered semantic feedback analysis
214
+ - **NEXT_ITERATION_PLAN.md** - Prioritized tasks for next iteration
215
+ - **LEGACY_USER_RESEARCH_PLAN.md** - Research strategy for existing product
216
+
217
+ **Key Features:**
218
+
219
+ - **Zero Framework Cognition** - AI-powered semantic analysis (no heuristics)
220
+ - **Multi-Format Support** - Ingest feedback from CSV, JSON, or markdown
221
+ - **Iterative Loops** - Continuous improvement based on user data
222
+ - **Marketing Focus** - Translate features into customer value
223
+ - **Three New Personas** - Product Manager, UX Researcher, Marketing Strategist
224
+
225
+ See [Agile Development Mode Guide](docs/AGILE_MODE_GUIDE.md) for complete documentation.
226
+
138
227
  ### Job Management
139
228
 
140
229
  Monitor and control background jobs:
@@ -437,8 +437,8 @@ module Aidp
437
437
 
438
438
  configured_providers.any? do |provider_name|
439
439
  provider_cfg = config.provider_config(provider_name)
440
- tier_config = provider_cfg.dig(:thinking, :tiers, tier.to_sym) ||
441
- provider_cfg.dig(:thinking, :tiers, tier)
440
+ tier_config = provider_cfg.dig(:thinking_tiers, tier.to_sym) ||
441
+ provider_cfg.dig(:thinking_tiers, tier)
442
442
 
443
443
  tier_config && tier_config[:models] && !tier_config[:models].empty?
444
444
  end
@@ -455,8 +455,7 @@ module Aidp
455
455
  next unless provider_class
456
456
 
457
457
  provider_cfg = config.provider_config(provider_name)
458
- thinking_cfg = provider_cfg[:thinking] || {}
459
- tiers_cfg = thinking_cfg[:tiers] || {}
458
+ tiers_cfg = provider_cfg[:thinking_tiers] || {}
460
459
 
461
460
  # Validate models in each tier
462
461
  tiers_cfg.each do |tier, tier_config|
@@ -537,8 +536,8 @@ module Aidp
537
536
  end
538
537
 
539
538
  if suggested_model
540
- "Add to aidp.yml under providers.#{suggested_model[:provider]}.thinking.tiers.#{tier}.models:\n" \
541
- " - model: #{suggested_model[:family]}"
539
+ "Add to aidp.yml under providers.#{suggested_model[:provider]}.thinking_tiers.#{tier}.models:\n" \
540
+ " - #{suggested_model[:family]}"
542
541
  else
543
542
  "Configure a model for this tier in aidp.yml"
544
543
  end
data/lib/aidp/cli.rb CHANGED
@@ -85,9 +85,6 @@ module Aidp
85
85
  tui = Aidp::Harness::UI::EnhancedTUI.new
86
86
  workflow_selector = Aidp::Harness::UI::EnhancedWorkflowSelector.new(tui, project_dir: Dir.pwd)
87
87
 
88
- # Start TUI display loop
89
- tui.start_display_loop
90
-
91
88
  begin
92
89
  # Copilot is now the default mode - no menu selection
93
90
  # The guided workflow selector will internally choose appropriate mode
@@ -120,7 +117,7 @@ module Aidp
120
117
  display_message("\n❌ Error: #{e.message}", type: :error)
121
118
  1
122
119
  ensure
123
- tui.stop_display_loop
120
+ tui.restore_screen
124
121
  end
125
122
  end
126
123
 
@@ -191,6 +188,7 @@ module Aidp
191
188
  opts.separator " pause-all - Pause all active workstreams"
192
189
  opts.separator " resume-all - Resume all paused workstreams"
193
190
  opts.separator " stop-all - Stop all active workstreams"
191
+ opts.separator " cleanup - Interactive cleanup of workstreams"
194
192
  opts.separator " work Execute workflow in workstream context"
195
193
  opts.separator " --workstream <slug> - Required: workstream to run in"
196
194
  opts.separator " --mode <mode> - analyze or execute (default: execute)"
@@ -1303,6 +1301,12 @@ module Aidp
1303
1301
  end
1304
1302
  display_message("⏹️ Stopped #{stopped_count} workstream(s)", type: :success)
1305
1303
 
1304
+ when "cleanup"
1305
+ # Interactive cleanup of workstreams
1306
+ require_relative "workstream_cleanup"
1307
+ cleanup = Aidp::WorkstreamCleanup.new(project_dir: Dir.pwd, prompt: create_prompt)
1308
+ cleanup.run
1309
+
1306
1310
  else
1307
1311
  display_message("Usage: aidp ws <command>", type: :info)
1308
1312
  display_message("", type: :info)
@@ -1317,6 +1321,7 @@ module Aidp
1317
1321
  display_message(" pause <slug> Pause workstream execution", type: :info)
1318
1322
  display_message(" resume <slug> Resume paused workstream", type: :info)
1319
1323
  display_message(" complete <slug> Mark workstream as completed", type: :info)
1324
+ display_message(" cleanup Interactive cleanup of workstreams", type: :info)
1320
1325
  display_message("", type: :info)
1321
1326
  display_message("Options:", type: :info)
1322
1327
  display_message(" --base-branch <branch> Branch to create from (for 'new')", type: :info)
@@ -1411,9 +1416,6 @@ module Aidp
1411
1416
  tui = Aidp::Harness::UI::EnhancedTUI.new
1412
1417
  workflow_selector = Aidp::Harness::UI::EnhancedWorkflowSelector.new(tui, project_dir: Dir.pwd)
1413
1418
 
1414
- # Start TUI display loop
1415
- tui.start_display_loop
1416
-
1417
1419
  begin
1418
1420
  # Get workflow configuration
1419
1421
  workflow_config = workflow_selector.select_workflow(harness_mode: false, mode: mode)
@@ -1434,7 +1436,7 @@ module Aidp
1434
1436
  rescue Interrupt
1435
1437
  display_message("\n\n⏹️ Interrupted by user", type: :warning)
1436
1438
  ensure
1437
- tui.stop_display_loop
1439
+ tui.restore_screen
1438
1440
  end
1439
1441
  end
1440
1442
  end
data/lib/aidp/config.rb CHANGED
@@ -156,6 +156,27 @@ module Aidp
156
156
  search_paths: [],
157
157
  default_provider_filter: true,
158
158
  enable_custom_skills: true
159
+ },
160
+ waterfall: {
161
+ enabled: true,
162
+ docs_directory: ".aidp/docs",
163
+ generate_decisions_md: true,
164
+ gantt_format: "mermaid",
165
+ wbs_phases: [
166
+ "Requirements",
167
+ "Design",
168
+ "Implementation",
169
+ "Testing",
170
+ "Deployment"
171
+ ],
172
+ effort_estimation: {
173
+ method: "llm_relative",
174
+ units: "story_points"
175
+ },
176
+ persona_assignment: {
177
+ method: "zfc_automatic",
178
+ allow_parallel: true
179
+ }
159
180
  }
160
181
  }.freeze
161
182
 
@@ -246,6 +267,24 @@ module Aidp
246
267
  symbolize_keys(skills_section)
247
268
  end
248
269
 
270
+ # Get waterfall configuration
271
+ def self.waterfall_config(project_dir = Dir.pwd)
272
+ config = load_harness_config(project_dir)
273
+ waterfall_section = config[:waterfall] || config["waterfall"] || {}
274
+
275
+ # Convert string keys to symbols for consistency
276
+ symbolize_keys(waterfall_section)
277
+ end
278
+
279
+ # Get agile configuration
280
+ def self.agile_config(project_dir = Dir.pwd)
281
+ config = load_harness_config(project_dir)
282
+ agile_section = config[:agile] || config["agile"] || {}
283
+
284
+ # Convert string keys to symbols for consistency
285
+ symbolize_keys(agile_section)
286
+ end
287
+
249
288
  # Check if configuration file exists
250
289
  def self.config_exists?(project_dir = Dir.pwd)
251
290
  ConfigPaths.config_exists?(project_dir)
@@ -280,6 +319,15 @@ module Aidp
280
319
  max_tokens: 50_000,
281
320
  default_flags: []
282
321
  }
322
+ },
323
+ agile: {
324
+ mvp_first: true,
325
+ feedback_loops: true,
326
+ auto_iteration: false,
327
+ research_enabled: true,
328
+ marketing_enabled: true,
329
+ legacy_analysis: true,
330
+ personas: ["product_manager", "ux_researcher", "architect", "senior_developer", "qa_engineer", "devops_engineer", "tech_writer", "marketing_strategist"]
283
331
  }
284
332
  }
285
333
 
@@ -337,6 +385,12 @@ module Aidp
337
385
  merged[:thinking] = symbolize_keys(thinking_section)
338
386
  end
339
387
 
388
+ # Deep merge waterfall config
389
+ if config[:waterfall] || config["waterfall"]
390
+ waterfall_section = config[:waterfall] || config["waterfall"]
391
+ merged[:waterfall] = merged[:waterfall].merge(symbolize_keys(waterfall_section))
392
+ end
393
+
340
394
  merged
341
395
  end
342
396
 
@@ -78,7 +78,9 @@ module Aidp
78
78
  end
79
79
 
80
80
  if error && !error.empty?
81
- debug_logger.error(component_name, "❌ Error output: #{error}")
81
+ # Filter out benign sandbox debug messages from Claude CLI
82
+ filtered_error = filter_benign_errors(error)
83
+ debug_logger.error(component_name, "❌ Error output: #{filtered_error}") unless filtered_error.empty?
82
84
  end
83
85
 
84
86
  if debug_verbose?
@@ -171,6 +173,26 @@ module Aidp
171
173
 
172
174
  private
173
175
 
176
+ # Filter out benign error messages that don't indicate real failures
177
+ def filter_benign_errors(error)
178
+ return "" if error.nil?
179
+
180
+ # List of string patterns for benign messages to filter out
181
+ # Using simple string matching to avoid ReDoS vulnerabilities
182
+ benign_substrings = [
183
+ "[SandboxDebug]",
184
+ "Seccomp filtering not available",
185
+ "allowAllUnixSockets mode"
186
+ ]
187
+
188
+ lines = error.lines
189
+ filtered_lines = lines.reject do |line|
190
+ benign_substrings.any? { |substring| line.include?(substring) }
191
+ end
192
+
193
+ filtered_lines.join
194
+ end
195
+
174
196
  # Safely derive a component name for logging (memoized).
175
197
  # Handles anonymous classes and modules gracefully.
176
198
  def component_name
@@ -36,6 +36,28 @@ module Aidp
36
36
  tasks
37
37
  end
38
38
 
39
+ # Parse task status update signals from agent output
40
+ # Returns array of status update hashes with task_id, status, and optional reason
41
+ # Pattern: Update task: task_id_here status: done|in_progress|pending|abandoned [reason: "reason"]
42
+ def self.parse_task_status_updates(output)
43
+ return [] unless output
44
+
45
+ updates = []
46
+ # Pattern matches: Update task: task_123_abc status: done
47
+ # Or: Update task: task_123_abc status: abandoned reason: "No longer needed"
48
+ pattern = /Update\s+task:\s*(\S+)\s+status:\s*(done|in_progress|pending|abandoned)(?:\s+reason:\s*"([^"]+)")?/i
49
+
50
+ output.to_s.scan(pattern).each do |task_id, status, reason|
51
+ updates << {
52
+ task_id: task_id.strip,
53
+ status: status.downcase.to_sym,
54
+ reason: reason&.strip
55
+ }
56
+ end
57
+
58
+ updates
59
+ end
60
+
39
61
  def self.normalize_token(raw)
40
62
  return nil if raw.nil? || raw.empty?
41
63
 
@@ -1777,8 +1777,8 @@ module Aidp
1777
1777
  lines << "Legend: → current, ↑ max allowed"
1778
1778
  lines << ""
1779
1779
 
1780
- # Show current model selection
1781
- current_model = manager.select_model_for_tier
1780
+ # Show current model selection (using harness default provider)
1781
+ current_model = manager.select_model_for_tier(provider: config.default_provider)
1782
1782
  if current_model
1783
1783
  provider, model_name, model_data = current_model
1784
1784
  lines << "Current Model: #{provider}/#{model_name}"
@@ -121,12 +121,20 @@ module Aidp
121
121
  },
122
122
  # New implementation step for actual development work
123
123
  "16_IMPLEMENTATION" => {
124
- "templates" => ["implementation/implement_features.md"], # Reuse existing implementation template
124
+ "templates" => ["implementation/iterative_implementation.md"], # Multi-step feature implementation with task decomposition
125
125
  "description" => "Execute Implementation Tasks",
126
126
  "outs" => ["implementation_log.md"],
127
127
  "gate" => false,
128
128
  "implementation" => true # Special step that runs development tasks
129
129
  },
130
+ # Test-Driven Development (TDD) - Optional step for any workflow
131
+ "17_TDD_SPECIFICATION" => {
132
+ "templates" => ["implementation/generate_tdd_specs.md"],
133
+ "description" => "Generate TDD test specifications (write tests first)",
134
+ "outs" => ["docs/tdd_specifications.md", "spec/**/*_spec.rb"],
135
+ "gate" => false,
136
+ "interactive" => false
137
+ },
130
138
  # Simple task execution - for one-off commands and simple fixes
131
139
  "99_SIMPLE_TASK" => {
132
140
  "templates" => ["implementation/simple_task.md"],
@@ -134,6 +142,91 @@ module Aidp
134
142
  "outs" => [],
135
143
  "gate" => false,
136
144
  "simple" => true # Special step for simple, focused tasks
145
+ },
146
+ # Generic planning and project management steps (usable in any workflow)
147
+ "18_WBS" => {
148
+ "templates" => ["planning/generate_wbs.md"],
149
+ "description" => "Generate Work Breakdown Structure with phases and tasks",
150
+ "outs" => [".aidp/docs/WBS.md"],
151
+ "gate" => false
152
+ },
153
+ "19_GANTT_CHART" => {
154
+ "templates" => ["planning/generate_gantt.md"],
155
+ "description" => "Generate Gantt chart with timeline and critical path",
156
+ "outs" => [".aidp/docs/GANTT.md"],
157
+ "gate" => false
158
+ },
159
+ "20_PERSONA_ASSIGNMENT" => {
160
+ "templates" => ["planning/assign_personas.md"],
161
+ "description" => "Assign tasks to personas/roles using AI (ZFC)",
162
+ "outs" => [".aidp/docs/persona_map.yml"],
163
+ "gate" => false
164
+ },
165
+ "21_PROJECT_PLAN_ASSEMBLY" => {
166
+ "templates" => ["planning/assemble_project_plan.md"],
167
+ "description" => "Assemble complete project plan from all artifacts",
168
+ "outs" => [".aidp/docs/PROJECT_PLAN.md"],
169
+ "gate" => false
170
+ },
171
+ # Planning mode initialization (supports ingestion vs generation workflows)
172
+ "22_PLANNING_MODE_INIT" => {
173
+ "templates" => ["planning/initialize_planning_mode.md"],
174
+ "description" => "Initialize planning mode (ingestion of existing docs vs generation from scratch)",
175
+ "outs" => [".aidp/docs/.planning_mode"],
176
+ "gate" => true,
177
+ "interactive" => true
178
+ },
179
+ # Agile planning steps
180
+ "23_MVP_SCOPE" => {
181
+ "skill" => "product_manager",
182
+ "templates" => ["planning/agile/generate_mvp_scope.md"],
183
+ "description" => "Define MVP scope with must-have and nice-to-have features",
184
+ "outs" => [".aidp/docs/MVP_SCOPE.md"],
185
+ "gate" => false,
186
+ "interactive" => true
187
+ },
188
+ "24_USER_TEST_PLAN" => {
189
+ "skill" => "ux_researcher",
190
+ "templates" => ["planning/agile/generate_user_test_plan.md"],
191
+ "description" => "Generate user testing plan with recruitment and survey templates",
192
+ "outs" => [".aidp/docs/USER_TEST_PLAN.md"],
193
+ "gate" => false
194
+ },
195
+ "25_MARKETING_REPORT" => {
196
+ "skill" => "marketing_strategist",
197
+ "templates" => ["planning/agile/generate_marketing_report.md"],
198
+ "description" => "Generate marketing report with key messages and differentiators",
199
+ "outs" => [".aidp/docs/MARKETING_REPORT.md"],
200
+ "gate" => false
201
+ },
202
+ "26_INGEST_FEEDBACK" => {
203
+ "skill" => "ux_researcher",
204
+ "templates" => ["planning/agile/ingest_feedback.md"],
205
+ "description" => "Ingest user feedback data (CSV, JSON, markdown)",
206
+ "outs" => [".aidp/docs/feedback_data.json"],
207
+ "gate" => false,
208
+ "interactive" => true
209
+ },
210
+ "27_ANALYZE_FEEDBACK" => {
211
+ "skill" => "ux_researcher",
212
+ "templates" => ["planning/agile/analyze_feedback.md"],
213
+ "description" => "Analyze user feedback with AI-powered insights",
214
+ "outs" => [".aidp/docs/USER_FEEDBACK_ANALYSIS.md"],
215
+ "gate" => false
216
+ },
217
+ "28_ITERATION_PLAN" => {
218
+ "skill" => "product_manager",
219
+ "templates" => ["planning/agile/generate_iteration_plan.md"],
220
+ "description" => "Generate next iteration plan based on feedback",
221
+ "outs" => [".aidp/docs/NEXT_ITERATION_PLAN.md"],
222
+ "gate" => false
223
+ },
224
+ "29_LEGACY_RESEARCH_PLAN" => {
225
+ "skill" => "ux_researcher",
226
+ "templates" => ["planning/agile/generate_legacy_research_plan.md"],
227
+ "description" => "Generate user research plan for existing codebase",
228
+ "outs" => [".aidp/docs/LEGACY_USER_RESEARCH_PLAN.md"],
229
+ "gate" => false
137
230
  }
138
231
  }.freeze
139
232
  end