Skip to content

Commit 0bcd312

Browse files
jwaldripclaude
andcommitted
docs(setup): reframe strategy options from user perspective
Replaces technical labels (Solo/Team/Trunk) with user-intent descriptions: "Review each unit individually", "Build everything, then open one MR", "Build everything on default branch." Adds source branch selection to all strategies. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent c0349b7 commit 0bcd312

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
@@ -744,27 +744,63 @@ Then ask with `AskUserQuestion`:
744744

745745
## Phase 5.8: Git Strategy
746746

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

749749
Use `AskUserQuestion`:
750+
751+
**Question 1: Delivery strategy**
752+
750753
```json
751754
{
752755
"questions": [
753756
{
754-
"question": "How should unit work be branched?",
755-
"header": "Branching",
757+
"question": "How should completed units be delivered?",
758+
"header": "Delivery Strategy",
756759
"options": [
757-
{"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."},
758-
{"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."},
759-
{"label": "Trunk-based", "description": "All work on main, no feature branches. Best for small, low-risk changes."}
760+
{
761+
"label": "Review each unit individually",
762+
"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."
763+
},
764+
{
765+
"label": "Build everything, then open one MR",
766+
"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."
767+
},
768+
{
769+
"label": "Build everything on my default branch",
770+
"description": "Same as above, but all work happens directly on the default branch. No feature branches, no MR — relies on CI to gate quality."
771+
}
760772
],
761773
"multiSelect": false
762774
}
763775
]
764776
}
765777
```
766778

767-
**If the user selected "Intent branch"**, ask a follow-up about auto-merge:
779+
**Question 2: Source branch** *(asked for ALL strategies)*
780+
781+
```json
782+
{
783+
"questions": [
784+
{
785+
"question": "Which branch should units be created from?",
786+
"header": "Source Branch",
787+
"options": [
788+
{
789+
"label": "Use the default branch (recommended)",
790+
"description": "Create unit/intent branches from the repo's default branch (e.g. main, dev)."
791+
},
792+
{
793+
"label": "Use my current branch",
794+
"description": "Create branches from the branch you're currently on."
795+
}
796+
],
797+
"multiSelect": false
798+
}
799+
]
800+
}
801+
```
802+
803+
**Question 3: Auto-merge** *(only if user selected "Build everything, then open one MR")*
768804

769805
```json
770806
{
@@ -782,7 +818,7 @@ Use `AskUserQuestion`:
782818
}
783819
```
784820

785-
**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.
821+
**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.
786822

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

@@ -794,36 +830,43 @@ git:
794830
```
795831
796832
Map user selections to config values:
797-
- "Unit branches" → `unit` (no `auto_merge` key — user merges their own PRs)
798-
- "Intent branch" → `intent`
799-
- "Trunk-based" → `trunk`
833+
834+
| What You Want | Strategy Value |
835+
|--------------|----------------|
836+
| Review each unit individually | `unit` |
837+
| Build everything, then open one MR | `intent` |
838+
| Build everything on my default branch | `trunk` |
839+
840+
- "Review each unit individually" → `unit` (no `auto_merge` key — user merges their own PRs)
841+
- "Build everything, then open one MR" → `intent`
842+
- "Build everything on my default branch" → `trunk`
800843
- "Yes" auto-merge → `auto_merge: true` (intent strategy only)
801844
- "No" auto-merge → `auto_merge: false` (intent strategy only)
802845

803846
### Hybrid Per-Unit Strategy (Optional)
804847

805-
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.
848+
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.
806849

807850
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.
808851

809852
Use `AskUserQuestion`:
810853
```json
811854
{
812855
"questions": [{
813-
"question": "Should any foundational units use per-unit branching (own PR to main) while others use the intent branch?",
856+
"question": "Should any foundational units be reviewed individually (own PR to main) while others merge into the intent branch?",
814857
"header": "Hybrid",
815858
"options": [
816-
{"label": "No, all intent branch", "description": "All units merge into the intent branch (standard intent strategy)"},
817-
{"label": "Yes, some per-unit", "description": "I'll specify which foundational units should get their own PR"}
859+
{"label": "No, build everything into the intent branch", "description": "All units merge into the intent branch (standard intent strategy)"},
860+
{"label": "Yes, some reviewed individually", "description": "I'll specify which foundational units should get their own PR"}
818861
],
819862
"multiSelect": false
820863
}]
821864
}
822865
```
823866

824-
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.
867+
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.
825868

826-
**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.
869+
**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.
827870

828871
---
829872

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)