docs: add plan-PR-then-execute workflow to team guide#3446
docs: add plan-PR-then-execute workflow to team guide#3446murataslan1 wants to merge 1 commit intogsd-build:mainfrom
Conversation
Document the two-PR cycle where teams review planning artifacts before any code is written. Covers what reviewers should look for, how steering during execution stays local, and the require_slice_discussion gate. Closes gsd-build#3363
🟢 PR Risk Report — LOW
|
There was a problem hiding this comment.
Pull request overview
Adds team-facing documentation for a “plan PR first, then execution PR” workflow so teams can review .gsd/ planning artifacts in GitHub before code is written.
Changes:
- Adds a new “Plan Review Workflow” section describing a two-PR cycle (plan PR → code PR).
- Documents what reviewers should check in milestone planning artifacts (context/roadmap/decisions).
- Mentions execution steering behavior and the
require_slice_discussiongating preference.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| 1. **Plan PR** — developer runs `/gsd discuss` on `main`, which writes planning artifacts to `.gsd/milestones/<MID>/` (`CONTEXT.md`, `ROADMAP.md`, updated `REQUIREMENTS.md`, `DECISIONS.md`). The developer commits these and opens a docs-only PR. | ||
| 2. **Review** — the team reviews scope, risks, slice breakdown, and definition of done directly in GitHub. No code to review yet, just the plan. | ||
| 3. **Code PR** — after the plan PR is merged, the developer pulls `main` and runs `/gsd auto`. GSD creates a worktree and executes against the approved plan. The result is a second PR with the actual implementation. |
There was a problem hiding this comment.
The Plan PR step lists planning artifacts as .gsd/milestones/<MID>/ (CONTEXT.md, ROADMAP.md, updated REQUIREMENTS.md, DECISIONS.md), but the actual filenames/locations differ: milestone artifacts are {MID}-CONTEXT.md and {MID}-ROADMAP.md inside .gsd/milestones/{MID}/, while REQUIREMENTS/DECISIONS are top-level .gsd/REQUIREMENTS.md and .gsd/DECISIONS.md. Consider updating the wording to reflect the real paths so reviewers know what to expect in the plan PR diff.
| Teams can use a two-PR cycle to get plan approval before any code is written: | ||
|
|
||
| 1. **Plan PR** — developer runs `/gsd discuss` on `main`, which writes planning artifacts to `.gsd/milestones/<MID>/` (`CONTEXT.md`, `ROADMAP.md`, updated `REQUIREMENTS.md`, `DECISIONS.md`). The developer commits these and opens a docs-only PR. | ||
| 2. **Review** — the team reviews scope, risks, slice breakdown, and definition of done directly in GitHub. No code to review yet, just the plan. | ||
| 3. **Code PR** — after the plan PR is merged, the developer pulls `main` and runs `/gsd auto`. GSD creates a worktree and executes against the approved plan. The result is a second PR with the actual implementation. | ||
|
|
||
| This works because `/gsd discuss` does not auto-commit — the developer controls when and how planning artifacts are committed. |
There was a problem hiding this comment.
This section says teams can commit discuss artifacts for review, but the discuss/guided planning prompts currently include a commit instruction that explicitly says "Do not commit planning artifacts — .gsd/ is managed externally." That conflicts with the workflow described here and may confuse users following the on-screen instructions. Either reconcile the docs with the current prompt instruction, or clarify when/why it’s safe/expected to commit .gsd/ artifacts in team mode (e.g., when git.commit_docs: true).
| Teams can use a two-PR cycle to get plan approval before any code is written: | |
| 1. **Plan PR** — developer runs `/gsd discuss` on `main`, which writes planning artifacts to `.gsd/milestones/<MID>/` (`CONTEXT.md`, `ROADMAP.md`, updated `REQUIREMENTS.md`, `DECISIONS.md`). The developer commits these and opens a docs-only PR. | |
| 2. **Review** — the team reviews scope, risks, slice breakdown, and definition of done directly in GitHub. No code to review yet, just the plan. | |
| 3. **Code PR** — after the plan PR is merged, the developer pulls `main` and runs `/gsd auto`. GSD creates a worktree and executes against the approved plan. The result is a second PR with the actual implementation. | |
| This works because `/gsd discuss` does not auto-commit — the developer controls when and how planning artifacts are committed. | |
| Teams can use a two-PR cycle to get plan approval before any code is written, **if their repository is configured to track planning artifacts in git** (for example, when `git.commit_docs: true` and `.gsd/milestones/` is not gitignored): | |
| 1. **Plan PR** — developer runs `/gsd discuss` on `main`, which writes planning artifacts to `.gsd/milestones/<MID>/` (`CONTEXT.md`, `ROADMAP.md`, updated `REQUIREMENTS.md`, `DECISIONS.md`). If your team commits planning docs, the developer commits these and opens a docs-only PR. | |
| 2. **Review** — the team reviews scope, risks, slice breakdown, and definition of done directly in GitHub. No code to review yet, just the plan. | |
| 3. **Code PR** — after the plan PR is merged, the developer pulls `main` and runs `/gsd auto`. GSD creates a worktree and executes against the approved plan. The result is a second PR with the actual implementation. | |
| `/gsd discuss` does not auto-commit — the developer controls when and how planning artifacts are shared. If the prompt says not to commit planning artifacts because `.gsd/` is managed externally, follow that instruction and review/share the plan outside git instead of opening a docs-only PR. |
| If the developer uses `/gsd steer` during execution, those adjustments stay local to the worktree and don't modify the approved plan docs on `main`. The code PR diff will reflect any deviations. | ||
|
|
There was a problem hiding this comment.
The text implies /gsd steer changes stay local to the execution worktree, but /gsd steer writes the override to .gsd/OVERRIDES.md in the current working directory (and can therefore modify the main working copy if run there). Consider tightening the wording to specify that steering is local only when invoked from within the auto-mode worktree, and that it updates OVERRIDES.md / plan docs that will appear in the code PR diff.
| If the developer uses `/gsd steer` during execution, those adjustments stay local to the worktree and don't modify the approved plan docs on `main`. The code PR diff will reflect any deviations. | |
| If the developer uses `/gsd steer` from within the auto-mode worktree during execution, those adjustments remain local to that worktree rather than changing the main working copy. `/gsd steer` writes to `.gsd/OVERRIDES.md` in the current working directory, so running it outside the auto-mode worktree can modify whichever checkout it is run from. | |
| Steering can also update `OVERRIDES.md` and related planning artifacts in the execution worktree, and those changes may appear in the code PR diff for reviewers alongside the implementation. |
| require_slice_discussion: true | ||
| ``` | ||
|
|
||
| This pauses auto-mode before each slice begins, giving the developer a chance to review the slice context before proceeding. |
There was a problem hiding this comment.
The require_slice_discussion description says it “pauses auto-mode before each slice begins” for review, but the implementation pauses only when a slice lacks a slice CONTEXT file and instructs the user to run /gsd discuss for that slice before resuming. Consider updating this description to reflect the actual gate condition (missing slice context) and the required action to proceed.
| This pauses auto-mode before each slice begins, giving the developer a chance to review the slice context before proceeding. | |
| This pauses auto-mode when a slice is missing its slice `CONTEXT` file and requires the developer to run `/gsd discuss` for that slice before proceeding. |
Summary
docs/working-in-teams.md/gsd steerduring execution stays local to the worktreerequire_slice_discussion: truefor per-slice gatesCloses #3363
Test plan