* 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>
66 lines
1.9 KiB
Markdown
66 lines
1.9 KiB
Markdown
---
|
|
name: gsd:review-backlog
|
|
description: Review and promote backlog items to active milestone
|
|
allowed-tools:
|
|
- Read
|
|
- Write
|
|
- Bash
|
|
- Grep
|
|
- AskUserQuestion
|
|
requires: [phase, review]
|
|
---
|
|
|
|
<objective>
|
|
Review all 999.x backlog items and optionally promote them into the active
|
|
milestone sequence or remove stale entries.
|
|
</objective>
|
|
|
|
<process>
|
|
|
|
1. **List backlog items:**
|
|
```bash
|
|
_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:
|
|
```bash
|
|
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`:
|
|
```bash
|
|
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:**
|
|
```bash
|
|
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}
|
|
```
|
|
|
|
</process>
|