* enhance(#3085): add Grep to allowed-tools for 21 skills
29 of 71 skills omit Grep from allowed-tools, forcing Bash grep for
structured search instead of the dedicated tool. Adds Grep to the
21-skill subset confirmed safe in prior review (excludes the 6
gsd-ns-* dispatchers, gsd-help, and gsd-surface, which have no
plausible structured-search need).
Hand-edits commands/gsd/*.md only; skills/*/SKILL.md is regenerated
via `npm run gen:plugin-skills` from that source. Updates the one
hardcoded copilot-install test assertion affected by gsd-health's
new tool order.
* chore(#3085): backfill changeset PR number
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
* test(#2618): assert the Needs clause on the structured field, not the path-length-dependent bullet
The bullet embeds the todo file's ABSOLUTE path, so its total length
varies by runner tmpdir: on macOS CI, /private/var/folders/… plus the
test harness's gsd-test-run-* wrapper pushed the full bullet to 244
chars — past renderPendingTodoBullet's intended 240-char cap, whose
documented first degradation step drops the Needs clause. The product
behavior is correct (#2618 design); the assertion was runner-dependent.
The extraction is now pinned on json.todos[0].needs; the rendered-bullet
shape stays covered by the path-independent title assertion and the
renderer's own unit rows.
Found blocking #4186's CI on the macOS shard (test landed 30 minutes
earlier in b7406b293f / PR #4384).
---------
Co-authored-by: sim <sim@local>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
145 lines
4.9 KiB
Markdown
145 lines
4.9 KiB
Markdown
---
|
|
type: prompt
|
|
name: gsd:complete-milestone
|
|
description: Archive completed milestone and prepare for next version
|
|
argument-hint: <version>
|
|
allowed-tools:
|
|
- Read
|
|
- Write
|
|
- Bash
|
|
- Grep
|
|
requires: [audit-milestone, discuss-phase, execute-phase, new-milestone, phase, plan-phase, stats, update]
|
|
---
|
|
|
|
<objective>
|
|
Mark milestone {{version}} complete, archive to milestones/, and update ROADMAP.md and REQUIREMENTS.md.
|
|
|
|
Purpose: Create historical record of shipped version, archive milestone artifacts (roadmap + requirements), and prepare for next milestone.
|
|
Output: Milestone archived (roadmap + requirements), PROJECT.md evolved, git tagged.
|
|
</objective>
|
|
|
|
<execution_context>
|
|
**Load these files NOW (before proceeding):**
|
|
|
|
- @~/.claude/gsd-core/workflows/complete-milestone.md (main workflow)
|
|
- @~/.claude/gsd-core/templates/milestone-archive.md (archive template)
|
|
</execution_context>
|
|
|
|
<context>
|
|
**Project files:**
|
|
- `.planning/ROADMAP.md`
|
|
- `.planning/REQUIREMENTS.md`
|
|
- `.planning/STATE.md`
|
|
- `.planning/PROJECT.md`
|
|
|
|
**User input:**
|
|
|
|
- Version: {{version}} (e.g., "1.0", "1.1", "2.0")
|
|
</context>
|
|
|
|
<process>
|
|
|
|
**Follow complete-milestone.md workflow:**
|
|
|
|
0. **Check for audit:**
|
|
|
|
- Look for `.planning/v{{version}}-MILESTONE-AUDIT.md`
|
|
- If missing or stale: recommend `/gsd:audit-milestone` first
|
|
- If audit status is `gaps_found`: recommend closing the gaps inline
|
|
(the audit output already enumerates them — insert closure phases
|
|
via `/gsd:phase --insert <N>` plus the standard
|
|
discuss/plan/execute chain) before proceeding.
|
|
- If audit status is `passed`: proceed to step 1
|
|
|
|
```markdown
|
|
## Pre-flight Check
|
|
|
|
{If no v{{version}}-MILESTONE-AUDIT.md:}
|
|
⚠ No milestone audit found. Run `/gsd:audit-milestone` first to verify
|
|
requirements coverage, cross-phase integration, and E2E flows.
|
|
|
|
{If audit has gaps:}
|
|
⚠ Milestone audit found gaps. The audit output already enumerates the
|
|
unsatisfied requirements, cross-phase issues, and broken flows — insert
|
|
a closure phase per gap with `/gsd:phase --insert <N>` and run the
|
|
standard `/gsd:discuss-phase` → `/gsd:plan-phase` → `/gsd:execute-phase`
|
|
chain. Or proceed anyway to accept the gaps as tech debt.
|
|
|
|
{If audit passed:}
|
|
✓ Milestone audit passed. Proceeding with completion.
|
|
```
|
|
|
|
1. **Verify readiness:**
|
|
|
|
- Check all phases in milestone have completed plans (SUMMARY.md exists)
|
|
- Present milestone scope and stats
|
|
- Wait for confirmation
|
|
|
|
2. **Gather stats:**
|
|
|
|
- Count phases, plans, tasks
|
|
- Calculate git range, file changes, LOC
|
|
- Extract timeline from git log
|
|
- Present summary, confirm
|
|
|
|
3. **Extract accomplishments:**
|
|
|
|
- Read all phase SUMMARY.md files in milestone range
|
|
- Extract 4-6 key accomplishments
|
|
- Present for approval
|
|
|
|
4. **Archive milestone:**
|
|
|
|
- Create `.planning/milestones/v{{version}}-ROADMAP.md`
|
|
- Extract full phase details from ROADMAP.md
|
|
- Fill milestone-archive.md template
|
|
- Update ROADMAP.md to one-line summary with link
|
|
|
|
5. **Archive requirements:**
|
|
|
|
- Create `.planning/milestones/v{{version}}-REQUIREMENTS.md`
|
|
- Mark all v1 requirements as complete (checkboxes checked)
|
|
- Note requirement outcomes (validated, adjusted, dropped)
|
|
- Delete `.planning/REQUIREMENTS.md` (fresh one created for next milestone)
|
|
|
|
6. **Update PROJECT.md:**
|
|
|
|
- Add "Current State" section with shipped version
|
|
- Add "Next Milestone Goals" section
|
|
- Archive previous content in `<details>` (if v1.1+)
|
|
|
|
7. **Commit and tag:**
|
|
|
|
- Stage: MILESTONES.md, PROJECT.md, ROADMAP.md, STATE.md, archive files
|
|
- Commit: `chore: archive v{{version}} milestone`
|
|
- Tag: `git tag -a v{{version}} -m "[milestone summary]"`
|
|
- Ask about pushing tag
|
|
|
|
8. **Offer next steps:**
|
|
- `/gsd:new-milestone` — start next milestone (questioning → research → requirements → roadmap)
|
|
|
|
</process>
|
|
|
|
<success_criteria>
|
|
|
|
- Milestone archived to `.planning/milestones/v{{version}}-ROADMAP.md`
|
|
- Requirements archived to `.planning/milestones/v{{version}}-REQUIREMENTS.md`
|
|
- `.planning/REQUIREMENTS.md` deleted (fresh for next milestone)
|
|
- ROADMAP.md collapsed to one-line entry
|
|
- PROJECT.md updated with current state
|
|
- Git tag v{{version}} created (if `git.create_tag` enabled)
|
|
- Commit successful
|
|
- User knows next steps (including need for fresh requirements)
|
|
</success_criteria>
|
|
|
|
<critical_rules>
|
|
|
|
- **Load workflow first:** Read complete-milestone.md before executing
|
|
- **Verify completion:** All phases must have SUMMARY.md files
|
|
- **User confirmation:** Wait for approval at verification gates
|
|
- **Archive before deleting:** Always create archive files before updating/deleting originals
|
|
- **One-line summary:** Collapsed milestone in ROADMAP.md should be single line with link
|
|
- **Context efficiency:** Archive keeps ROADMAP.md and REQUIREMENTS.md constant size per milestone
|
|
- **Fresh requirements:** Next milestone starts with `/gsd:new-milestone` which includes requirements definition
|
|
</critical_rules>
|