Files
msd-core/commands/gsd/review-backlog.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

1.9 KiB

name, description, allowed-tools, requires
name description allowed-tools requires
gsd:review-backlog Review and promote backlog items to active milestone
Read
Write
Bash
Grep
AskUserQuestion
phase
review
Review all 999.x backlog items and optionally promote them into the active milestone sequence or remove stale entries.
  1. List backlog items:

    _BACKLOG=( .planning/phases/999* )
    if [ -e "${_BACKLOG[0]}" ]; then ls -d "${_BACKLOG[@]}"; else echo "No backlog items found"; fi
    
  2. Read ROADMAP.md and extract all 999.x phase entries:

    cat .planning/ROADMAP.md
    

    Show each backlog item with its description, any accumulated context (CONTEXT.md, RESEARCH.md), and creation date.

  3. Present the list to the user via AskUserQuestion:

    • For each backlog item, show: phase number, description, accumulated artifacts
    • Options per item: Promote (move to active), Keep (leave in backlog), Remove (delete)
  4. For items to PROMOTE:

    • Find the next sequential phase number in the active milestone
    • Rename the directory from 999.x-slug to {new_num}-slug:
      NEW_NUM=$(gsd-tools query phase.add "${DESCRIPTION}" --raw)
      
    • Move accumulated artifacts to the new phase directory
    • Update ROADMAP.md: move the entry from ## Backlog section to the active phase list
    • Remove (BACKLOG) marker
    • Add appropriate **Depends on:** field
  5. For items to REMOVE:

    • Delete the phase directory
    • Remove the entry from ROADMAP.md ## Backlog section
  6. Commit changes:

    gsd-tools query commit "docs: review backlog — promoted N, removed M" --files .planning/ROADMAP.md
    
  7. Report summary:

    ## 📋 Backlog Review Complete
    
    Promoted: {list of promoted items with new phase numbers}
    Kept: {list of items remaining in backlog}
    Removed: {list of deleted items}