convoke-agents 3.0.4 → 3.2.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.
- package/CHANGELOG.md +60 -0
- package/README.md +14 -13
- package/_bmad/bme/_artifacts/config.yaml +15 -0
- package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/SKILL.md +6 -0
- package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/steps/step-01-scope.md +138 -0
- package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/steps/step-02-dryrun.md +199 -0
- package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/steps/step-03-resolve.md +174 -0
- package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/steps/step-04-execute.md +213 -0
- package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/workflow.md +85 -0
- package/_bmad/bme/_artifacts/workflows/bmad-portfolio-status/SKILL.md +6 -0
- package/_bmad/bme/_artifacts/workflows/bmad-portfolio-status/steps/step-01-scan.md +131 -0
- package/_bmad/bme/_artifacts/workflows/bmad-portfolio-status/steps/step-02-explore.md +131 -0
- package/_bmad/bme/_artifacts/workflows/bmad-portfolio-status/steps/step-03-recommend.md +149 -0
- package/_bmad/bme/_artifacts/workflows/bmad-portfolio-status/workflow.md +78 -0
- package/_bmad/bme/_gyre/guides/GYRE-TEAM-GUIDE.md +506 -0
- package/_bmad/bme/_portability/skills/bmad-export-skill/SKILL.md +6 -0
- package/_bmad/bme/_portability/skills/bmad-export-skill/workflow.md +74 -0
- package/_bmad/bme/_portability/skills/bmad-generate-catalog/SKILL.md +6 -0
- package/_bmad/bme/_portability/skills/bmad-generate-catalog/workflow.md +42 -0
- package/_bmad/bme/_portability/skills/bmad-seed-catalog/SKILL.md +6 -0
- package/_bmad/bme/_portability/skills/bmad-seed-catalog/workflow.md +61 -0
- package/_bmad/bme/_portability/skills/bmad-validate-exports/SKILL.md +6 -0
- package/_bmad/bme/_portability/skills/bmad-validate-exports/workflow.md +43 -0
- package/_bmad/bme/_team-factory/agents/team-factory.md +128 -0
- package/_bmad/bme/_team-factory/config.yaml +13 -0
- package/_bmad/bme/_team-factory/lib/cascade-logic.js +184 -0
- package/_bmad/bme/_team-factory/lib/collision-detector.js +228 -0
- package/_bmad/bme/_team-factory/lib/manifest-tracker.js +214 -0
- package/_bmad/bme/_team-factory/lib/spec-differ.js +176 -0
- package/_bmad/bme/_team-factory/lib/spec-parser.js +201 -0
- package/_bmad/bme/_team-factory/lib/spec-writer.js +128 -0
- package/_bmad/bme/_team-factory/lib/types/factory-types.js +193 -0
- package/_bmad/bme/_team-factory/lib/utils/csv-utils.js +62 -0
- package/_bmad/bme/_team-factory/lib/utils/naming-utils.js +45 -0
- package/_bmad/bme/_team-factory/lib/validators/end-to-end-validator.js +898 -0
- package/_bmad/bme/_team-factory/lib/writers/activation-validator.js +175 -0
- package/_bmad/bme/_team-factory/lib/writers/config-appender.js +192 -0
- package/_bmad/bme/_team-factory/lib/writers/config-creator.js +215 -0
- package/_bmad/bme/_team-factory/lib/writers/csv-appender.js +118 -0
- package/_bmad/bme/_team-factory/lib/writers/csv-creator.js +190 -0
- package/_bmad/bme/_team-factory/lib/writers/registry-appender.js +372 -0
- package/_bmad/bme/_team-factory/lib/writers/registry-writer.js +409 -0
- package/_bmad/bme/_team-factory/module-help.csv +3 -0
- package/_bmad/bme/_team-factory/schemas/schema-independent.json +147 -0
- package/_bmad/bme/_team-factory/schemas/schema-sequential.json +242 -0
- package/_bmad/bme/_team-factory/templates/team-spec-template.yaml +86 -0
- package/_bmad/bme/_team-factory/workflows/add-team/step-01-scope.md +105 -0
- package/_bmad/bme/_team-factory/workflows/add-team/step-02-connect.md +110 -0
- package/_bmad/bme/_team-factory/workflows/add-team/step-03-review.md +116 -0
- package/_bmad/bme/_team-factory/workflows/add-team/step-04-generate.md +160 -0
- package/_bmad/bme/_team-factory/workflows/add-team/step-05-validate.md +146 -0
- package/_bmad/bme/_team-factory/workflows/step-00-route.md +76 -0
- package/_bmad/bme/_vortex/config.yaml +4 -4
- package/_bmad/bme/_vortex/guides/VORTEX-TEAM-GUIDE.md +441 -0
- package/package.json +17 -8
- package/scripts/archive.js +26 -45
- package/scripts/convoke-check.js +88 -0
- package/scripts/convoke-doctor.js +303 -4
- package/scripts/install-gyre-agents.js +0 -0
- package/scripts/lib/artifact-utils.js +2182 -0
- package/scripts/lib/portfolio/formatters/markdown-formatter.js +40 -0
- package/scripts/lib/portfolio/formatters/terminal-formatter.js +56 -0
- package/scripts/lib/portfolio/portfolio-engine.js +572 -0
- package/scripts/lib/portfolio/rules/artifact-chain-rule.js +156 -0
- package/scripts/lib/portfolio/rules/conflict-resolver.js +99 -0
- package/scripts/lib/portfolio/rules/frontmatter-rule.js +42 -0
- package/scripts/lib/portfolio/rules/git-recency-rule.js +69 -0
- package/scripts/lib/types.js +122 -0
- package/scripts/migrate-artifacts.js +439 -0
- package/scripts/portability/catalog-generator.js +353 -0
- package/scripts/portability/classify-skills.js +646 -0
- package/scripts/portability/convoke-export.js +522 -0
- package/scripts/portability/export-engine.js +1133 -0
- package/scripts/portability/generate-adapters.js +79 -0
- package/scripts/portability/manifest-csv.js +147 -0
- package/scripts/portability/seed-catalog-repo.js +427 -0
- package/scripts/portability/templates/canonical-example.md +102 -0
- package/scripts/portability/templates/canonical-format.md +218 -0
- package/scripts/portability/templates/readme-template.md +72 -0
- package/scripts/portability/test-constants.js +42 -0
- package/scripts/portability/validate-classification.js +529 -0
- package/scripts/portability/validate-exports.js +348 -0
- package/scripts/update/lib/agent-registry.js +35 -0
- package/scripts/update/lib/config-merger.js +140 -10
- package/scripts/update/lib/migration-runner.js +1 -1
- package/scripts/update/lib/refresh-installation.js +293 -8
- package/scripts/update/lib/taxonomy-merger.js +138 -0
- package/scripts/update/lib/utils.js +27 -1
- package/scripts/update/lib/validator.js +114 -4
- package/scripts/update/migrations/2.0.x-to-3.1.0.js +50 -0
- package/scripts/update/migrations/3.0.x-to-3.1.0.js +41 -0
- package/scripts/update/migrations/registry.js +14 -0
|
@@ -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?"
|