Files
msd-core/commands/gsd/phase.md
Tom Boucher ed133cc116 enhance(#3085): add Grep to allowed-tools for 21 skills (#4397)
* 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>
2026-09-06 13:37:47 -04:00

2.1 KiB

name, description, argument-hint, allowed-tools
name description argument-hint allowed-tools
gsd:phase Multi-phase management — add, insert, remove, or edit phases in ROADMAP.md (roadmap phase CRUD) [--insert | --remove | --edit] <phase-name-or-number>
Read
Write
Bash
Glob
Grep
Manage phases in ROADMAP.md with a single consolidated command.

Mode routing:

  • default (no flag): Add a new integer phase to the end of the current milestone → add-phase workflow
  • --insert: Insert urgent work as a decimal phase (e.g., 72.1) between existing phases → insert-phase workflow
  • --remove: Remove a future phase and renumber subsequent phases → remove-phase workflow
  • --edit: Edit any field of an existing phase in place → edit-phase workflow
Flag Action Workflow
(none) Add new integer phase at end of milestone add-phase
--insert Insert decimal phase (e.g., 72.1) after specified phase insert-phase
--remove Remove future phase, renumber subsequent remove-phase
--edit Edit fields of existing phase in place edit-phase

<execution_context> @/.claude/gsd-core/workflows/add-phase.md @/.claude/gsd-core/workflows/insert-phase.md @/.claude/gsd-core/workflows/remove-phase.md @/.claude/gsd-core/workflows/edit-phase.md </execution_context>

Arguments: $ARGUMENTS

Parse the first token of $ARGUMENTS:

  • If it is --insert: strip the flag, pass remainder (format: ) to insert-phase workflow
  • If it is --remove: strip the flag, pass remainder (phase number) to remove-phase workflow
  • If it is --edit: strip the flag, pass remainder (phase-number [--force]) to edit-phase workflow
  • Otherwise: pass all of $ARGUMENTS (phase description) to add-phase workflow

Roadmap and state are resolved in-workflow via init phase-op and targeted reads.

1. Parse the leading flag (if any) from $ARGUMENTS. 2. Load and execute the appropriate workflow end-to-end based on the routing table above. 3. Preserve all validation gates from the target workflow.