Skip to content

Commit c4d9aa8

Browse files
authored
Merge pull request TheBushidoCollective#15 from TheBushidoCollective/hampton/workflow-mode-naming
docs(setup): add clear workflow mode labels and guidance
2 parents 83f2d8d + 0bcd312 commit c4d9aa8

File tree

3 files changed

+136
-28
lines changed

3 files changed

+136
-28
lines changed

plugin/schemas/settings.schema.json

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,9 +225,24 @@
225225
"properties": {
226226
"change_strategy": {
227227
"type": "string",
228-
"enum": ["trunk", "unit", "intent"],
229228
"default": "unit",
230-
"description": "How changes are organized:\n- trunk: All work on main branch, no feature branches\n- unit: One branch per unit, each gets its own MR reviewed individually (default)\n- intent: One long-lived branch per intent, agents build autonomously via DAG ordering"
229+
"oneOf": [
230+
{
231+
"const": "unit",
232+
"title": "Review each unit individually",
233+
"description": "Each unit opens its own PR/MR. Dependent units wait until their dependencies are merged."
234+
},
235+
{
236+
"const": "intent",
237+
"title": "Build everything, then open one MR",
238+
"description": "Units merge into an intent branch as they complete. One final MR for the whole intent."
239+
},
240+
{
241+
"const": "trunk",
242+
"title": "Build everything on default branch",
243+
"description": "All work happens directly on the default branch. No feature branches or MRs."
244+
}
245+
]
231246
},
232247
"elaboration_review": {
233248
"type": "boolean",

plugin/skills/elaborate/SKILL.md

Lines changed: 60 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -902,27 +902,63 @@ Then ask with `AskUserQuestion`:
902902

903903
## Phase 5.8: Git Strategy
904904

905-
Ask about the branching and merge strategy for this intent. These settings control how unit work is organized and merged.
905+
Ask about the delivery strategy, source branch, and merge behavior for this intent. These settings control how unit work is organized and delivered.
906906

907907
Use `AskUserQuestion`:
908+
909+
**Question 1: Delivery strategy**
910+
908911
```json
909912
{
910913
"questions": [
911914
{
912-
"question": "How should unit work be branched?",
913-
"header": "Branching",
915+
"question": "How should completed units be delivered?",
916+
"header": "Delivery Strategy",
914917
"options": [
915-
{"label": "Unit branches (Recommended)", "description": "Each unit gets its own branch and MR, reviewed individually. Supports human or agent builders and /construct <unit-name> targeting. Best for teams adopting AI-DLC gradually."},
916-
{"label": "Intent branch", "description": "All units merge into a single intent branch. Agents build autonomously via DAG ordering, one MR reviewed at the end. Best for fully autonomous workflows."},
917-
{"label": "Trunk-based", "description": "All work on main, no feature branches. Best for small, low-risk changes."}
918+
{
919+
"label": "Review each unit individually",
920+
"description": "Each unit opens its own PR/MR. Dependent units wait until their dependencies are merged. Best when you want to validate each piece before moving on."
921+
},
922+
{
923+
"label": "Build everything, then open one MR",
924+
"description": "Units merge into an intent branch as they complete. Dependent units start automatically once their dependencies are done. One final MR for the whole intent."
925+
},
926+
{
927+
"label": "Build everything on my default branch",
928+
"description": "Same as above, but all work happens directly on the default branch. No feature branches, no MR — relies on CI to gate quality."
929+
}
918930
],
919931
"multiSelect": false
920932
}
921933
]
922934
}
923935
```
924936

925-
**If the user selected "Intent branch"**, ask a follow-up about auto-merge:
937+
**Question 2: Source branch** *(asked for ALL strategies)*
938+
939+
```json
940+
{
941+
"questions": [
942+
{
943+
"question": "Which branch should units be created from?",
944+
"header": "Source Branch",
945+
"options": [
946+
{
947+
"label": "Use the default branch (recommended)",
948+
"description": "Create unit/intent branches from the repo's default branch (e.g. main, dev)."
949+
},
950+
{
951+
"label": "Use my current branch",
952+
"description": "Create branches from the branch you're currently on."
953+
}
954+
],
955+
"multiSelect": false
956+
}
957+
]
958+
}
959+
```
960+
961+
**Question 3: Auto-merge** *(only if user selected "Build everything, then open one MR")*
926962

927963
```json
928964
{
@@ -940,7 +976,7 @@ Use `AskUserQuestion`:
940976
}
941977
```
942978

943-
**Skip the auto-merge question for "Unit branches"** — in unit strategy, each unit creates its own PR and the user is responsible for merging. **Skip for "Trunk-based"** — no branches to merge.
979+
**Skip the auto-merge question for "Review each unit individually"** — in unit strategy, each unit creates its own PR and the user is responsible for merging. **Skip for "Build everything on my default branch"** — no branches to merge.
944980

945981
Store the selections. These will be written into the `intent.md` frontmatter in Phase 6 under a `git:` key:
946982

@@ -952,36 +988,43 @@ git:
952988
```
953989
954990
Map user selections to config values:
955-
- "Unit branches" → `unit` (no `auto_merge` key — user merges their own PRs)
956-
- "Intent branch" → `intent`
957-
- "Trunk-based" → `trunk`
991+
992+
| What You Want | Strategy Value |
993+
|--------------|----------------|
994+
| Review each unit individually | `unit` |
995+
| Build everything, then open one MR | `intent` |
996+
| Build everything on my default branch | `trunk` |
997+
998+
- "Review each unit individually" → `unit` (no `auto_merge` key — user merges their own PRs)
999+
- "Build everything, then open one MR" → `intent`
1000+
- "Build everything on my default branch" → `trunk`
9581001
- "Yes" auto-merge → `auto_merge: true` (intent strategy only)
9591002
- "No" auto-merge → `auto_merge: false` (intent strategy only)
9601003

9611004
### Hybrid Per-Unit Strategy (Optional)
9621005

963-
If the user selected **"Intent branch"** strategy, ask whether any foundational units should use per-unit branching instead. This creates a **hybrid** strategy where one or more units get their own PR (merged directly to the default branch), while the remaining units merge into the intent branch.
1006+
If the user selected **"Build everything, then open one MR"** (intent strategy), ask whether any foundational units should use per-unit branching instead. This creates a **hybrid** strategy where one or more units get their own PR (merged directly to the default branch), while the remaining units merge into the intent branch.
9641007

9651008
This is useful when a foundational unit (e.g., database schema, shared library setup) needs to land on `main` before other units can build on it.
9661009

9671010
Use `AskUserQuestion`:
9681011
```json
9691012
{
9701013
"questions": [{
971-
"question": "Should any foundational units use per-unit branching (own PR to main) while others use the intent branch?",
1014+
"question": "Should any foundational units be reviewed individually (own PR to main) while others merge into the intent branch?",
9721015
"header": "Hybrid",
9731016
"options": [
974-
{"label": "No, all intent branch", "description": "All units merge into the intent branch (standard intent strategy)"},
975-
{"label": "Yes, some per-unit", "description": "I'll specify which foundational units should get their own PR"}
1017+
{"label": "No, build everything into the intent branch", "description": "All units merge into the intent branch (standard intent strategy)"},
1018+
{"label": "Yes, some reviewed individually", "description": "I'll specify which foundational units should get their own PR"}
9761019
],
9771020
"multiSelect": false
9781021
}]
9791022
}
9801023
```
9811024

982-
If the user selects "Yes", ask which units should use per-unit branching. Note these units — their `git: { change_strategy: unit }` override will be written into unit frontmatter in Phase 6 Step 3.
1025+
If the user selects "Yes", ask which units should be reviewed individually. Note these units — their `git: { change_strategy: unit }` override will be written into unit frontmatter in Phase 6 Step 3.
9831026

984-
**Skip this question entirely if the user selected "Unit branches" or "Trunk-based" in the main strategy question** — per-unit overrides only make sense with the intent branch strategy.
1027+
**Skip this question entirely if the user selected "Review each unit individually" or "Build everything on my default branch"** — per-unit overrides only make sense with the intent branch strategy.
9851028

9861029
---
9871030

plugin/skills/setup/SKILL.md

Lines changed: 59 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -255,28 +255,78 @@ For each **confirmed provider**, offer to customize how AI-DLC interacts with it
255255
256256
## Phase 5: VCS Strategy
257257
258-
Ask the user about their preferred change strategy and auto-merge behavior.
258+
Ask the user about their preferred delivery strategy, source branch, and auto-merge behavior.
259259
260260
Use `AskUserQuestion`:
261261
262-
**Question 1: Change strategy**
263-
- "How should AI-DLC organize code changes?"
264-
- Options:
265-
- **Unit branches (Recommended)** — Each unit gets its own branch and MR, reviewed individually. Supports human or agent builders and `/construct <unit-name>` targeting. Best for teams adopting AI-DLC gradually.
266-
- **Intent branch** — All units merge into a single intent branch. Agents build autonomously via DAG ordering, one MR reviewed at the end. Best for fully autonomous workflows.
267-
- **Trunk** — All work on main branch, no feature branches
262+
**Question 1: Delivery strategy**
263+
264+
```json
265+
{
266+
"questions": [
267+
{
268+
"question": "How should completed units be delivered?",
269+
"header": "Delivery Strategy",
270+
"options": [
271+
{
272+
"label": "Review each unit individually",
273+
"description": "Each unit opens its own PR/MR. Dependent units wait until their dependencies are merged. Best when you want to validate each piece before moving on."
274+
},
275+
{
276+
"label": "Build everything, then open one MR",
277+
"description": "Units merge into an intent branch as they complete. Dependent units start automatically once their dependencies are done. One final MR for the whole intent."
278+
},
279+
{
280+
"label": "Build everything on my default branch",
281+
"description": "Same as above, but all work happens directly on the default branch. No feature branches, no MR — relies on CI to gate quality."
282+
}
283+
],
284+
"multiSelect": false
285+
}
286+
]
287+
}
288+
```
268289
269290
Pre-fill from existing `settings.yml` `{vcs}.change_strategy` if available.
270291
271-
**Question 2: Auto-merge** *(intent strategy only)*
292+
Map user selections to config values:
293+
- "Review each unit individually" → `change_strategy: unit`
294+
- "Build everything, then open one MR" → `change_strategy: intent`
295+
- "Build everything on my default branch" → `change_strategy: trunk`
296+
297+
**Question 2: Source branch** *(asked for ALL strategies)*
298+
299+
```json
300+
{
301+
"questions": [
302+
{
303+
"question": "Which branch should units be created from?",
304+
"header": "Source Branch",
305+
"options": [
306+
{
307+
"label": "Use the default branch (recommended)",
308+
"description": "Create unit/intent branches from the repo's default branch (e.g. main, dev)."
309+
},
310+
{
311+
"label": "Use my current branch",
312+
"description": "Create branches from the branch you're currently on."
313+
}
314+
],
315+
"multiSelect": false
316+
}
317+
]
318+
}
319+
```
320+
321+
**Question 3: Auto-merge** *(only if user selected "Build everything, then open one MR")*
272322
- "Should completed unit branches be automatically merged into the intent branch?"
273323
- Options:
274324
- **Yes (Recommended)** — Auto-merge when unit passes review
275325
- **No** — Manual merge after review
276326
277327
Pre-fill from existing `settings.yml` `{vcs}.auto_merge` if available.
278328
279-
Only ask auto-merge if strategy is `intent`. For `unit` strategy, merging is the user's responsibility (they merge their own PRs), so skip this question and do not set `auto_merge`. For `trunk`, branches aren't used.
329+
Only ask auto-merge if strategy is `intent` ("Build everything, then open one MR"). For `unit` ("Review each unit individually"), merging is the user's responsibility (they merge their own PRs), so skip this question and do not set `auto_merge`. For `trunk` ("Build everything on my default branch"), branches aren't used.
280330
281331
---
282332

0 commit comments

Comments
 (0)