convoke-agents 3.1.0 → 3.2.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.
Files changed (78) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +37 -10
  3. package/_bmad/bme/_artifacts/config.yaml +15 -0
  4. package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/SKILL.md +6 -0
  5. package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/steps/step-01-scope.md +138 -0
  6. package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/steps/step-02-dryrun.md +199 -0
  7. package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/steps/step-03-resolve.md +174 -0
  8. package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/steps/step-04-execute.md +213 -0
  9. package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/workflow.md +85 -0
  10. package/_bmad/bme/_artifacts/workflows/bmad-portfolio-status/SKILL.md +6 -0
  11. package/_bmad/bme/_artifacts/workflows/bmad-portfolio-status/steps/step-01-scan.md +131 -0
  12. package/_bmad/bme/_artifacts/workflows/bmad-portfolio-status/steps/step-02-explore.md +131 -0
  13. package/_bmad/bme/_artifacts/workflows/bmad-portfolio-status/steps/step-03-recommend.md +149 -0
  14. package/_bmad/bme/_artifacts/workflows/bmad-portfolio-status/workflow.md +78 -0
  15. package/_bmad/bme/_portability/skills/bmad-export-skill/SKILL.md +6 -0
  16. package/_bmad/bme/_portability/skills/bmad-export-skill/workflow.md +74 -0
  17. package/_bmad/bme/_portability/skills/bmad-generate-catalog/SKILL.md +6 -0
  18. package/_bmad/bme/_portability/skills/bmad-generate-catalog/workflow.md +42 -0
  19. package/_bmad/bme/_portability/skills/bmad-seed-catalog/SKILL.md +6 -0
  20. package/_bmad/bme/_portability/skills/bmad-seed-catalog/workflow.md +61 -0
  21. package/_bmad/bme/_portability/skills/bmad-validate-exports/SKILL.md +6 -0
  22. package/_bmad/bme/_portability/skills/bmad-validate-exports/workflow.md +43 -0
  23. package/_bmad/bme/_team-factory/agents/team-factory.md +128 -0
  24. package/_bmad/bme/_team-factory/config.yaml +13 -0
  25. package/_bmad/bme/_team-factory/lib/cascade-logic.js +184 -0
  26. package/_bmad/bme/_team-factory/lib/collision-detector.js +228 -0
  27. package/_bmad/bme/_team-factory/lib/manifest-tracker.js +214 -0
  28. package/_bmad/bme/_team-factory/lib/spec-differ.js +176 -0
  29. package/_bmad/bme/_team-factory/lib/spec-parser.js +201 -0
  30. package/_bmad/bme/_team-factory/lib/spec-writer.js +128 -0
  31. package/_bmad/bme/_team-factory/lib/types/factory-types.js +193 -0
  32. package/_bmad/bme/_team-factory/lib/utils/csv-utils.js +62 -0
  33. package/_bmad/bme/_team-factory/lib/utils/naming-utils.js +45 -0
  34. package/_bmad/bme/_team-factory/lib/validators/end-to-end-validator.js +898 -0
  35. package/_bmad/bme/_team-factory/lib/writers/activation-validator.js +175 -0
  36. package/_bmad/bme/_team-factory/lib/writers/config-appender.js +192 -0
  37. package/_bmad/bme/_team-factory/lib/writers/config-creator.js +215 -0
  38. package/_bmad/bme/_team-factory/lib/writers/csv-appender.js +118 -0
  39. package/_bmad/bme/_team-factory/lib/writers/csv-creator.js +190 -0
  40. package/_bmad/bme/_team-factory/lib/writers/registry-appender.js +372 -0
  41. package/_bmad/bme/_team-factory/lib/writers/registry-writer.js +409 -0
  42. package/_bmad/bme/_team-factory/module-help.csv +3 -0
  43. package/_bmad/bme/_team-factory/schemas/schema-independent.json +147 -0
  44. package/_bmad/bme/_team-factory/schemas/schema-sequential.json +242 -0
  45. package/_bmad/bme/_team-factory/templates/team-spec-template.yaml +86 -0
  46. package/_bmad/bme/_team-factory/workflows/add-team/step-01-scope.md +105 -0
  47. package/_bmad/bme/_team-factory/workflows/add-team/step-02-connect.md +110 -0
  48. package/_bmad/bme/_team-factory/workflows/add-team/step-03-review.md +116 -0
  49. package/_bmad/bme/_team-factory/workflows/add-team/step-04-generate.md +160 -0
  50. package/_bmad/bme/_team-factory/workflows/add-team/step-05-validate.md +146 -0
  51. package/_bmad/bme/_team-factory/workflows/step-00-route.md +76 -0
  52. package/_bmad/bme/_vortex/config.yaml +4 -4
  53. package/package.json +13 -7
  54. package/scripts/convoke-doctor.js +172 -1
  55. package/scripts/install-gyre-agents.js +0 -0
  56. package/scripts/lib/artifact-utils.js +521 -13
  57. package/scripts/lib/portfolio/portfolio-engine.js +301 -34
  58. package/scripts/lib/portfolio/rules/artifact-chain-rule.js +33 -3
  59. package/scripts/lib/portfolio/rules/conflict-resolver.js +22 -0
  60. package/scripts/migrate-artifacts.js +69 -10
  61. package/scripts/portability/catalog-generator.js +353 -0
  62. package/scripts/portability/classify-skills.js +646 -0
  63. package/scripts/portability/convoke-export.js +522 -0
  64. package/scripts/portability/export-engine.js +1156 -0
  65. package/scripts/portability/generate-adapters.js +79 -0
  66. package/scripts/portability/manifest-csv.js +147 -0
  67. package/scripts/portability/seed-catalog-repo.js +427 -0
  68. package/scripts/portability/templates/canonical-example.md +102 -0
  69. package/scripts/portability/templates/canonical-format.md +218 -0
  70. package/scripts/portability/templates/readme-template.md +72 -0
  71. package/scripts/portability/test-constants.js +42 -0
  72. package/scripts/portability/validate-classification.js +529 -0
  73. package/scripts/portability/validate-exports.js +348 -0
  74. package/scripts/update/lib/agent-registry.js +35 -0
  75. package/scripts/update/lib/config-merger.js +140 -10
  76. package/scripts/update/lib/refresh-installation.js +293 -8
  77. package/scripts/update/lib/utils.js +27 -1
  78. package/scripts/update/lib/validator.js +114 -4
@@ -0,0 +1,242 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Team Spec — Sequential Pattern",
4
+ "description": "Schema for Sequential composition pattern team specs. Agents form a pipeline with handoff contracts.",
5
+ "type": "object",
6
+ "required": [
7
+ "schema_version",
8
+ "team_name",
9
+ "team_name_kebab",
10
+ "composition_pattern",
11
+ "agents",
12
+ "contracts",
13
+ "integration"
14
+ ],
15
+ "additionalProperties": true,
16
+ "properties": {
17
+ "schema_version": {
18
+ "type": "string",
19
+ "pattern": "^\\d+\\.\\d+$",
20
+ "description": "Schema version (e.g., '1.0')"
21
+ },
22
+ "team_name": {
23
+ "type": "string",
24
+ "minLength": 1,
25
+ "description": "Human-readable team name"
26
+ },
27
+ "team_name_kebab": {
28
+ "type": "string",
29
+ "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
30
+ "description": "Kebab-case team name for directory naming"
31
+ },
32
+ "description": {
33
+ "type": "string",
34
+ "description": "What the team does"
35
+ },
36
+ "composition_pattern": {
37
+ "type": "string",
38
+ "enum": ["Sequential"],
39
+ "description": "Must be 'Sequential' for this schema"
40
+ },
41
+ "created": {
42
+ "type": "string",
43
+ "description": "ISO date string"
44
+ },
45
+ "factory_version": {
46
+ "type": "string",
47
+ "description": "Factory version that created this spec"
48
+ },
49
+ "agents": {
50
+ "type": "array",
51
+ "minItems": 1,
52
+ "items": {
53
+ "type": "object",
54
+ "required": ["id", "role", "pipeline_position"],
55
+ "properties": {
56
+ "id": {
57
+ "type": "string",
58
+ "pattern": "^[a-z]+(-[a-z]+)*$",
59
+ "description": "Agent ID in kebab-case"
60
+ },
61
+ "name": {
62
+ "type": "string",
63
+ "description": "Display name (first name persona)"
64
+ },
65
+ "icon": {
66
+ "type": "string",
67
+ "description": "Single emoji"
68
+ },
69
+ "role": {
70
+ "type": "string",
71
+ "minLength": 1,
72
+ "description": "What this agent does"
73
+ },
74
+ "title": {
75
+ "type": "string",
76
+ "description": "Formal title"
77
+ },
78
+ "capabilities": {
79
+ "type": "array",
80
+ "items": { "type": "string" }
81
+ },
82
+ "pipeline_position": {
83
+ "type": "integer",
84
+ "minimum": 1,
85
+ "description": "Position in the pipeline (1-based)"
86
+ },
87
+ "overlap_acknowledgments": {
88
+ "type": "array",
89
+ "items": { "type": "string" }
90
+ },
91
+ "persona": {
92
+ "type": "object",
93
+ "properties": {
94
+ "role": { "type": "string" },
95
+ "identity": { "type": "string" },
96
+ "communication_style": { "type": "string" },
97
+ "expertise": { "type": "string" }
98
+ }
99
+ }
100
+ },
101
+ "additionalProperties": false
102
+ }
103
+ },
104
+ "contracts": {
105
+ "type": "array",
106
+ "minItems": 1,
107
+ "description": "Handoff contracts between pipeline agents",
108
+ "items": {
109
+ "type": "object",
110
+ "required": ["id", "source_agent", "target_agents"],
111
+ "properties": {
112
+ "id": {
113
+ "type": "string",
114
+ "description": "Contract ID (e.g., HC1, GC1)"
115
+ },
116
+ "source_agent": {
117
+ "type": "string",
118
+ "description": "Agent ID that produces the artifact"
119
+ },
120
+ "target_agents": {
121
+ "type": "array",
122
+ "minItems": 1,
123
+ "items": { "type": "string" },
124
+ "description": "Agent IDs that consume the artifact"
125
+ },
126
+ "artifact_title": {
127
+ "type": "string",
128
+ "description": "Human-readable artifact name"
129
+ },
130
+ "artifact_description": {
131
+ "type": "string",
132
+ "description": "What the artifact contains"
133
+ },
134
+ "key_sections": {
135
+ "type": "array",
136
+ "items": { "type": "string" },
137
+ "description": "Main sections of the artifact"
138
+ },
139
+ "file_name": {
140
+ "type": "string",
141
+ "description": "Output file name for the artifact"
142
+ },
143
+ "input_artifacts": {
144
+ "type": "array",
145
+ "items": { "type": "string" },
146
+ "description": "Contract IDs this artifact depends on"
147
+ },
148
+ "optional": {
149
+ "type": "boolean",
150
+ "default": false,
151
+ "description": "Whether this contract is optional"
152
+ }
153
+ },
154
+ "additionalProperties": false
155
+ }
156
+ },
157
+ "feedback_contracts": {
158
+ "type": "array",
159
+ "description": "Optional feedback routing contracts (downstream → upstream)",
160
+ "items": {
161
+ "type": "object",
162
+ "required": ["id", "source_agent", "target_agents"],
163
+ "properties": {
164
+ "id": { "type": "string" },
165
+ "source_agent": { "type": "string" },
166
+ "target_agents": {
167
+ "type": "array",
168
+ "minItems": 1,
169
+ "items": { "type": "string" }
170
+ },
171
+ "artifact_title": { "type": "string" },
172
+ "artifact_description": { "type": "string" },
173
+ "key_sections": {
174
+ "type": "array",
175
+ "items": { "type": "string" }
176
+ },
177
+ "file_name": { "type": "string" },
178
+ "input_artifacts": {
179
+ "type": "array",
180
+ "items": { "type": "string" }
181
+ },
182
+ "optional": { "type": "boolean", "default": true }
183
+ },
184
+ "additionalProperties": false
185
+ }
186
+ },
187
+ "integration": {
188
+ "type": "object",
189
+ "required": ["output_directory", "contract_prefix"],
190
+ "properties": {
191
+ "output_directory": {
192
+ "type": "string",
193
+ "minLength": 1,
194
+ "description": "Where output artifacts are saved"
195
+ },
196
+ "compass_routing": {
197
+ "type": "string",
198
+ "enum": ["required", "shared-reference"],
199
+ "description": "Compass routing mode (required for Sequential)"
200
+ },
201
+ "contract_prefix": {
202
+ "type": "string",
203
+ "minLength": 1,
204
+ "pattern": "^[A-Z]+$",
205
+ "description": "Prefix for contract IDs (e.g., HC, GC, FG)"
206
+ }
207
+ },
208
+ "additionalProperties": false
209
+ },
210
+ "progress": {
211
+ "type": "object",
212
+ "properties": {
213
+ "orient": { "type": "string" },
214
+ "scope": { "type": "string" },
215
+ "connect": { "type": "string" },
216
+ "review": { "type": "string" },
217
+ "generate": {},
218
+ "validate": { "type": "string" }
219
+ }
220
+ },
221
+ "decisions": {
222
+ "type": "array",
223
+ "items": {
224
+ "type": "object",
225
+ "properties": {
226
+ "step": { "type": "string" },
227
+ "decision": { "type": "string" },
228
+ "default_accepted": { "type": "boolean" },
229
+ "rationale": { "type": "string" }
230
+ }
231
+ }
232
+ },
233
+ "metrics": {
234
+ "type": "object",
235
+ "properties": {
236
+ "discovery_path": {},
237
+ "hardest_step": {},
238
+ "would_use_again": {}
239
+ }
240
+ }
241
+ }
242
+ }
@@ -0,0 +1,86 @@
1
+ # Team Spec Template — Express Mode Input
2
+ # Fill in this template and pass to the factory for rapid team creation.
3
+ # Fields marked REQUIRED must be provided. Optional fields can be removed.
4
+ #
5
+ # Usage: Save as team-spec-{your-team-name}.yaml in _bmad-output/planning-artifacts/
6
+ # Then invoke the factory in Express Mode with this file as input.
7
+
8
+ schema_version: "1.0"
9
+
10
+ # REQUIRED: Human-readable team name
11
+ team_name: ""
12
+
13
+ # REQUIRED: Kebab-case team name (used for directory naming)
14
+ # Must match: /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/
15
+ team_name_kebab: ""
16
+
17
+ # Optional: What does this team do?
18
+ description: ""
19
+
20
+ # REQUIRED: "Independent" or "Sequential"
21
+ # Independent: Agents operate standalone, no contracts between them
22
+ # Sequential: Agents form a pipeline with handoff contracts
23
+ composition_pattern: ""
24
+
25
+ # Auto-populated by factory
26
+ created: ""
27
+ factory_version: "1.0.0"
28
+
29
+ # REQUIRED: At least one agent
30
+ # Agent IDs must match: /^[a-z]+(-[a-z]+)*$/
31
+ agents:
32
+ - id: ""
33
+ name: "" # Display name (first name persona)
34
+ icon: "" # Single emoji
35
+ role: "" # REQUIRED: What this agent does
36
+ title: "" # Formal title
37
+ capabilities:
38
+ - ""
39
+ # Sequential only — remove for Independent
40
+ # pipeline_position: 1
41
+ overlap_acknowledgments: []
42
+
43
+ # Sequential only — remove entire section for Independent
44
+ # At least one contract required for Sequential teams
45
+ # contracts:
46
+ # - id: "HC1"
47
+ # source_agent: ""
48
+ # target_agents:
49
+ # - ""
50
+ # artifact_title: ""
51
+ # artifact_description: ""
52
+ # key_sections:
53
+ # - ""
54
+ # file_name: ""
55
+ # input_artifacts: []
56
+ # optional: false
57
+
58
+ # Sequential only — optional feedback routing contracts
59
+ # feedback_contracts: []
60
+
61
+ # REQUIRED: Integration settings
62
+ integration:
63
+ output_directory: "_bmad-output/{team-name}-artifacts"
64
+ # "optional" or "per-agent" for Independent
65
+ # "required" or "shared-reference" for Sequential
66
+ compass_routing: ""
67
+ # Sequential only — prefix for contract IDs (e.g., "HC", "GC")
68
+ # contract_prefix: ""
69
+
70
+ # Auto-managed by factory — do not edit manually
71
+ progress:
72
+ orient: "pending"
73
+ scope: "pending"
74
+ connect: "pending"
75
+ review: "pending"
76
+ generate: "pending"
77
+ validate: "pending"
78
+
79
+ # Auto-populated by factory during guided mode
80
+ decisions: []
81
+
82
+ # Post-completion metrics (factory populates after run)
83
+ metrics:
84
+ discovery_path: null
85
+ hardest_step: null
86
+ would_use_again: null
@@ -0,0 +1,105 @@
1
+ # Step 01: Scope — Team Definition & Agent Inventory
2
+
3
+ ## Purpose
4
+ Guide the contributor through defining their team's composition pattern, agents, and their roles. This is where architectural thinking happens — before any files are generated.
5
+
6
+ ## Prerequisites
7
+ - Step 00 (Route) completed — contributor confirmed "Create Team"
8
+
9
+ ## Execution Sequence
10
+
11
+ ### 1. Team Identity
12
+
13
+ Ask the contributor for:
14
+ - **Team name** (human-readable, e.g., "Loom", "Gyre", "Sentinel")
15
+ - **What does this team do?** (1-2 sentence description)
16
+ - **Who uses it?** (target user persona)
17
+
18
+ Derive `team_name_kebab` from the team name using naming conventions:
19
+ - Lowercase, hyphens between words
20
+ - Must match: `/^[a-z][a-z0-9]*(-[a-z0-9]+)*$/`
21
+ - Confirm with contributor: "Your team module will be at `_bmad/bme/_{team_name_kebab}/`"
22
+
23
+ ### 2. Composition Pattern Selection
24
+
25
+ Present the two patterns with plain-language descriptions and examples:
26
+
27
+ > **Independent Pattern**
28
+ > Agents operate standalone — each handles a separate concern. No handoff contracts between them.
29
+ > _Think: a toolbox where each tool works on its own._
30
+ > Example: A team with a "documentation auditor" and a "dependency checker" — related but independent tasks.
31
+ >
32
+ > **Sequential Pattern**
33
+ > Agents form a pipeline — each one's output feeds the next. Handoff contracts define what gets passed.
34
+ > _Think: an assembly line where each station adds something._
35
+ > Examples: Vortex (7-agent discovery pipeline), Gyre (4-agent readiness analysis)
36
+
37
+ **Default suggestion:** Based on the team description, suggest the most likely pattern with reasoning.
38
+
39
+ **Cascade effect:** Once selected, the factory eliminates irrelevant decisions:
40
+ - **Independent selected** → Skip: contract design, pipeline ordering, feedback contracts, contract prefix, compass routing (mark as optional)
41
+ - **Sequential selected** → All decisions remain active
42
+
43
+ Load cascade logic:
44
+ ```
45
+ run: node -e "const c = require('{project-root}/_bmad/bme/_team-factory/lib/cascade-logic.js'); console.log(JSON.stringify(c.getCascadeForPattern('{pattern}'), null, 2))"
46
+ expect: result.decisions → active decisions for this pattern
47
+ result.eliminated → decisions removed by pattern selection
48
+ ```
49
+
50
+ ### 3. Agent Inventory
51
+
52
+ For each agent, collect:
53
+ - **Agent ID** (kebab-case, e.g., `knowledge-surveyor`) — enforce: `/^[a-z]+(-[a-z]+)*$/`
54
+ - **Display name** (first name persona, e.g., "Silo")
55
+ - **Icon** (single emoji)
56
+ - **Role** (what does this agent do — 1 sentence)
57
+ - **Title** (formal title, e.g., "Knowledge Survey Specialist")
58
+ - **Capabilities** (list of 2-5 key capabilities)
59
+ - **Pipeline position** (Sequential only — integer, 1-based)
60
+
61
+ Present agents one at a time. After each agent, ask: "Add another agent, or are you done?"
62
+
63
+ **Naming enforcement per agent:**
64
+ ```
65
+ run: node -e "const n = require('{project-root}/_bmad/bme/_team-factory/lib/utils/naming-utils.js'); const id = '{agent_id}'; console.log(JSON.stringify({ valid: /^[a-z]+(-[a-z]+)*$/.test(id), id }))"
66
+ expect: result.valid === true → proceed
67
+ result.valid === false → "Agent ID must be lowercase letters and hyphens only (e.g., 'knowledge-surveyor'). Got: '{agent_id}'"
68
+ ```
69
+
70
+ ### 4. Overlap Detection
71
+
72
+ After all agents are defined, run collision detection:
73
+ ```
74
+ run: node -e "const cd = require('{project-root}/_bmad/bme/_team-factory/lib/collision-detector.js'); cd.detectCollisions({team_name_kebab: '{kebab}', agents: [{id: '{id1}'}, ...]}, '{project-root}/_bmad/_config/agent-manifest.csv', '{project-root}/_bmad/bme/').then(r => console.log(JSON.stringify(r, null, 2)))"
75
+ expect: result.hasBlocking === false → proceed with optional warnings
76
+ result.hasBlocking === true → display blocks, ask contributor to rename
77
+ result.warnings.length > 0 → display warnings, ask contributor to acknowledge or rename
78
+ ```
79
+
80
+ **Level 3 (LLM capability overlap):** After JS detection, review each agent's role and capabilities against the existing agent manifest. Flag potential functional overlaps:
81
+ - "Your agent `{id}` with role '{role}' may overlap with existing agent `{existing_id}` ({existing_role}) in the {existing_module} module."
82
+ - Ask: "Is this intentional? If so, I'll note the acknowledgment."
83
+
84
+ ### 5. Save Progress
85
+
86
+ Initialize the spec file:
87
+ - Create `team-spec-{team_name_kebab}.yaml` in `_bmad-output/planning-artifacts/`
88
+ - Populate: team identity, composition pattern, agents, overlap acknowledgments
89
+ - Set progress: `orient: complete, scope: complete, connect: pending, ...`
90
+
91
+ Display: "Scope complete. {N} agents defined for team **{team_name}** ({pattern} pattern). Moving to integration design."
92
+
93
+ Proceed to: `{project-root}/_bmad/bme/_team-factory/workflows/add-team/step-02-connect.md`
94
+
95
+ ## Visibility Checklist — Step 1
96
+ Colleague sees:
97
+ - [ ] Team identity questions (name, description, users)
98
+ - [ ] Pattern selection with examples and recommendation
99
+ - [ ] Agent definition prompts (one at a time)
100
+ Runs silently:
101
+ - [ ] Naming validation (per agent)
102
+ - [ ] Cascade logic (pattern → eliminated decisions)
103
+ - [ ] Collision detection (JS Level 1-2)
104
+ Concept count: 3/3 (team identity, pattern, agents)
105
+ Approval prompt: "Here's your team scope: {summary}. Ready to design integration?"
@@ -0,0 +1,110 @@
1
+ # Step 02: Connect — Integration Design
2
+
3
+ ## Purpose
4
+ Guide the contributor through integration decisions: contracts (Sequential only), output directory, compass routing, and config field design. This step produces the integration section of the spec file.
5
+
6
+ ## Prerequisites
7
+ - Step 01 (Scope) completed — team identity, pattern, and agents defined
8
+ - Spec file exists with progress.scope = "complete"
9
+
10
+ ## Execution Sequence
11
+
12
+ ### 1. Load Context
13
+
14
+ Read the spec file to get the team's composition pattern and agents.
15
+
16
+ ### 2. Contract Design (Sequential Only)
17
+
18
+ > Skip this section entirely for Independent teams — cascade logic eliminated it.
19
+
20
+ For Sequential teams, guide through handoff contract design:
21
+
22
+ **Contract prefix:**
23
+ - Ask: "What prefix should your contracts use? Examples: HC (Vortex), GC (Gyre). This prefix + number becomes the contract ID (e.g., HC1, HC2)."
24
+ - Default suggestion based on team name initials
25
+
26
+ **Forward contracts (required):**
27
+ For each adjacent pair of agents in pipeline order:
28
+ - "Agent **{source}** (position {N}) passes output to **{target}** (position {N+1})"
29
+ - Ask for each contract:
30
+ - **Artifact title** — What is this artifact called?
31
+ - **Artifact description** — What does it contain? (1-2 sentences)
32
+ - **Key sections** — What are the main sections of this artifact?
33
+ - **File naming** — Default: `{prefix}{N}-{artifact-kebab}.md`
34
+
35
+ Present each contract for confirmation before moving to the next.
36
+
37
+ **Feedback contracts (optional):**
38
+ - "Does any downstream agent need to send structured feedback back upstream?"
39
+ - If yes: guide through the same contract template
40
+ - If no: skip — "No feedback contracts. You can add them later."
41
+
42
+ **Contract validation (B-lite semantic check):**
43
+ For each contract, verify:
44
+ - Source agent exists in the agent list
45
+ - Target agent(s) exist in the agent list
46
+ - No duplicate contract IDs
47
+
48
+ ### 3. Output Directory
49
+
50
+ - Default: `_bmad-output/{team_name_kebab}-artifacts`
51
+ - Ask: "Where should your team's output artifacts be saved?"
52
+ - Validate: path should start with `_bmad-output/`
53
+
54
+ ### 4. Compass Routing
55
+
56
+ **Sequential teams:**
57
+ - Required. "Your team needs a compass routing reference — a navigation table that helps users know what to do next after each workflow."
58
+ - Default: `shared-reference` (single file, like Vortex's `compass-routing-reference.md`)
59
+
60
+ **Independent teams:**
61
+ - Optional. "Would you like per-agent compass routing? This is optional for Independent teams since agents operate standalone."
62
+ - Default: `per-agent` or `optional`
63
+
64
+ ### 5. Config Field Review
65
+
66
+ Summarize what will go into the team's `config.yaml`:
67
+ ```
68
+ submodule_name: _{team_name_kebab}
69
+ description: {description}
70
+ module: bme
71
+ output_folder: '{project-root}/{output_directory}'
72
+ agents: [{agent_ids}]
73
+ workflows: [{workflow_names}]
74
+ version: 1.0.0
75
+ user_name: '{user}'
76
+ communication_language: en
77
+ party_mode_enabled: true
78
+ core_module: bme
79
+ ```
80
+
81
+ Run config field collision detection:
82
+ ```
83
+ run: node -e "const cc = require('{project-root}/_bmad/bme/_team-factory/lib/writers/config-creator.js'); // collision check logic"
84
+ expect: no collisions with existing config fields
85
+ ```
86
+
87
+ ### 6. Save Progress
88
+
89
+ Update the spec file:
90
+ - Add contracts, feedback_contracts, integration section
91
+ - Set progress: `connect: complete`
92
+
93
+ Display summary:
94
+ - "{N} forward contracts, {M} feedback contracts defined" (Sequential)
95
+ - "Output: {output_directory}, Compass routing: {routing_mode}"
96
+ - "Moving to decision review."
97
+
98
+ Proceed to: `{project-root}/_bmad/bme/_team-factory/workflows/add-team/step-03-review.md`
99
+
100
+ ## Visibility Checklist — Step 2
101
+ Colleague sees:
102
+ - [ ] Contract design prompts (Sequential only, one at a time)
103
+ - [ ] Output directory confirmation
104
+ - [ ] Config field summary
105
+ Runs silently:
106
+ - [ ] Contract validation (source/target exist, no duplicate IDs)
107
+ - [ ] Config field collision detection
108
+ - [ ] Cascade elimination check (contracts skipped for Independent)
109
+ Concept count: 2/3 (contracts, integration settings) — or 1/3 for Independent (integration only)
110
+ Approval prompt: "Integration design complete. Ready for the full decision review?"
@@ -0,0 +1,116 @@
1
+ # Step 03: Review — Decision Summary & Approval
2
+
3
+ ## Purpose
4
+ Present all decisions for contributor approval before generation begins. In Express Mode, this step is the full validation gate — all per-step and semantic checks run in batch.
5
+
6
+ ## Prerequisites
7
+ - Step 02 (Connect) completed — all decisions made
8
+ - Spec file has progress.connect = "complete"
9
+
10
+ ## Execution Sequence
11
+
12
+ ### 1. Load Spec
13
+
14
+ Read the complete spec file. This is the ground truth for all decisions.
15
+
16
+ ### 2. Decision Summary
17
+
18
+ Present a structured summary of all decisions made:
19
+
20
+ ```
21
+ ═══════════════════════════════════════════════════
22
+ TEAM FACTORY — Decision Summary
23
+ ═══════════════════════════════════════════════════
24
+
25
+ Team: {team_name} (_{team_name_kebab})
26
+ Pattern: {composition_pattern}
27
+ Module: _bmad/bme/_{team_name_kebab}/
28
+
29
+ AGENTS ({count}):
30
+ ┌─────┬──────────────────────┬──────┬─────────────────────────┐
31
+ │ Pos │ ID │ Icon │ Role │
32
+ ├─────┼──────────────────────┼──────┼─────────────────────────┤
33
+ │ 1 │ {agent_id} │ {ic} │ {role} │
34
+ └─────┴──────────────────────┴──────┴─────────────────────────┘
35
+
36
+ CONTRACTS ({count}): [Sequential only]
37
+ {prefix}{N}: {source} → {target} — "{artifact_title}"
38
+
39
+ FEEDBACK CONTRACTS ({count}): [Sequential only]
40
+ {prefix}{N}: {source} → {target} — "{artifact_title}"
41
+
42
+ INTEGRATION:
43
+ Output: {output_directory}
44
+ Routing: {compass_routing}
45
+ Prefix: {contract_prefix} [Sequential only]
46
+
47
+ OVERLAP ACKNOWLEDGMENTS ({count}):
48
+ {agent_id} ↔ {existing_id}: acknowledged
49
+
50
+ ═══════════════════════════════════════════════════
51
+ ```
52
+
53
+ ### 3. Validation Gate (All Modes)
54
+
55
+ Run all per-step validations in batch against the spec file:
56
+
57
+ **Naming validation:**
58
+ - team_name_kebab matches `/^[a-z][a-z0-9]*(-[a-z0-9]+)*$/`
59
+ - All agent IDs match `/^[a-z]+(-[a-z]+)*$/`
60
+
61
+ **Pattern validation:**
62
+ - Composition pattern is "Independent" or "Sequential"
63
+ - Sequential teams have contracts and contract_prefix
64
+ - Independent teams have no contracts
65
+
66
+ **Semantic validation (B-lite):**
67
+ - All contract source_agents exist in agents list
68
+ - All contract target_agents exist in agents list
69
+ - No duplicate contract IDs
70
+ - Pipeline positions are sequential (Sequential only)
71
+
72
+ **Collision re-check:**
73
+ - Run collision detector again (working tree may have changed since Step 01)
74
+
75
+ Display validation results:
76
+ - "✅ All {N} checks passed" or
77
+ - "❌ {N} issues found:" followed by each issue with explanation
78
+
79
+ ### 4. Contributor Approval
80
+
81
+ Ask explicitly:
82
+ > "All decisions above will be used to generate your team. Would you like to:
83
+ > 1. **Approve** — proceed to generation
84
+ > 2. **Edit** — go back and change specific decisions
85
+ > 3. **Save & Exit** — save the spec file and resume later"
86
+
87
+ **If Edit:** Ask which section to change, update the spec file, re-display summary.
88
+ **If Save & Exit:** Ensure progress.review = "pending" (so re-entry returns here), display spec file path.
89
+ **If Approve:** Set progress.review = "complete", proceed.
90
+
91
+ ### 5. Express Mode Behavior
92
+
93
+ In Express Mode (spec file loaded directly):
94
+ - Skip to this step with all decisions pre-loaded
95
+ - Run the full validation gate
96
+ - If all checks pass: display summary, ask for approval
97
+ - If checks fail: display errors, ask contributor to fix the spec file and re-run
98
+
99
+ ### 6. Save Progress
100
+
101
+ Update spec file: progress.review = "complete"
102
+
103
+ Proceed to: `{project-root}/_bmad/bme/_team-factory/workflows/add-team/step-04-generate.md`
104
+
105
+ ## Visibility Checklist — Step 3
106
+ Colleague sees:
107
+ - [ ] Complete decision summary table
108
+ - [ ] Validation results (pass/fail)
109
+ - [ ] Approve/Edit/Save choice
110
+ Runs silently:
111
+ - [ ] Naming validation batch
112
+ - [ ] Pattern validation
113
+ - [ ] Semantic validation (B-lite)
114
+ - [ ] Collision re-check
115
+ Concept count: 1/3 (decision review — everything else is summary of prior decisions)
116
+ Approval prompt: "Approve these decisions and proceed to file generation?"