-
-
Notifications
You must be signed in to change notification settings - Fork 462
docs: add plan-PR-then-execute workflow to team guide #3446
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -82,6 +82,37 @@ If you have an existing project with `.gsd/` blanket-ignored: | |||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||
| 5. Commit | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| ## Plan Review Workflow | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| 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. | ||||||||||||||||||||||||||||||
|
Comment on lines
+87
to
+93
|
||||||||||||||||||||||||||||||
| 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. |
Copilot
AI
Apr 3, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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. |
Copilot
AI
Apr 3, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.mdand{MID}-ROADMAP.mdinside.gsd/milestones/{MID}/, while REQUIREMENTS/DECISIONS are top-level.gsd/REQUIREMENTS.mdand.gsd/DECISIONS.md. Consider updating the wording to reflect the real paths so reviewers know what to expect in the plan PR diff.