一键导入
backlog
Manage the project backlog — add, list, filter, update, prioritize, and suggest work items
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Manage the project backlog — add, list, filter, update, prioritize, and suggest work items
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | backlog |
| description | Manage the project backlog — add, list, filter, update, prioritize, and suggest work items |
| user-invocable | true |
Use this skill to manage backlog items tracked in GitHub Projects (project #15). Items are GitHub Issues with custom fields (Priority, Effort, Scope) and labels (type, area). This replaces the old docs/backlog.md file-based approach.
Project URL: https://github.com/users/YanCheng-go/projects/15
Repo: YanCheng-go/danskprep
Parse the user's arguments to determine which subcommand to run:
| Invocation | Action |
|---|---|
/backlog (no args) | Dashboard — show status counts + top ready items (blocked items separate) |
/backlog add <text> | Add — parse prompt, auto-assign metadata, write deps bidirectionally, confirm, create issue |
/backlog list [--status=X] [--area=X] [--priority=X] | List — show filtered items |
/backlog view BL-NNN | View — show full issue detail |
/backlog update BL-NNN field=value [...] | Update — modify fields on issue/project (supports blocks= and blocked-by=) |
/backlog done BL-NNN | Done — close issue, set status to Done, report newly unblocked items |
/backlog drop BL-NNN [reason] | Drop — close issue as "not planned", warn if items stay blocked |
/backlog next | Next — recommend highest-priority unblocked item (blocked listed separately) |
/backlog deps [BL-NNN] | Deps — show dependency graph or single item's dependency tree |
/backlog prioritize | Prioritize — interactive review of open items |
| Field | Options |
|---|---|
| Priority | p0, p1, p2, p3 |
| Effort | xs, s, m, l, xl |
| Scope | all, PD3M2, PD3M1, PD2 |
| Prefix | Values |
|---|---|
type: | type:feature, type:bug, type:chore, type:infra, type:content |
area: | area:ui, area:dx, area:db, area:quiz, area:auth, area:vocabulary, area:grammar, area:srs, area:scraping, area:analytics |
status: | status:idea (distinguishes ideas from ready items — both use Todo status) |
requires: | requires:human-review (item touches AI context files — needs careful human review) |
| Backlog status | GitHub Projects Status | Issue state | Extra |
|---|---|---|---|
| idea | Todo | open | + status:idea label |
| ready | Todo | open | no status:idea label |
| in-progress | In Progress | open | — |
| done | Done | closed (completed) | — |
| dropped | Done | closed (not planned) | — |
gh project item-edit)PROJECT_ID=PVT_kwHOAtALr84BQs_6
STATUS_FIELD=PVTSSF_lAHOAtALr84BQs_6zg-vxHc
Todo=f75ad846 InProgress=47fc9ee4 Done=98236657
PRIORITY_FIELD=PVTSSF_lAHOAtALr84BQs_6zg-vxbg
p0=794e355b p1=151159eb p2=5f1080aa p3=99d30072
EFFORT_FIELD=PVTSSF_lAHOAtALr84BQs_6zg-vxcM
xs=a24764ac s=c6281781 m=0b736dda l=639a71de xl=c1b86069
SCOPE_FIELD=PVTSSF_lAHOAtALr84BQs_6zg-vxcQ
all=458a4a3b PD3M2=36696fe9 PD3M1=2e32e278 PD2=a544201a
Issue titles use the format BL-NNN: <title>. When creating a new issue, find the highest existing BL number:
gh issue list --repo YanCheng-go/danskprep --search "BL-" --json title --limit 200 | jq -r '.[].title' | grep -oP 'BL-\d+' | sort -t- -k2 -n | tail -1
All subcommands that read or write items must be dependency-aware. This section defines the canonical format and scanning procedure.
Dependencies live in a ## Dependencies section at the bottom of the issue body. Each line uses one of two prefixes:
## Dependencies
- Blocks: #95 (BL-041), #98 (BL-043)
- Blocked by: #64 (BL-024)
Rules:
#NN (BL-NNN) — GitHub issue number first, BL-ID in parentheses- Blocks: line if nothing is blocked)## Dependencies section if there are no dependencies at all- Blocks: #B and B's body says - Blocked by: #AUsed by dashboard, next, deps, done, drop, and add subcommands:
gh issue list --repo YanCheng-go/danskprep --state open --label backlog \
--json number,title,body --limit 200
Parse each issue body:
- Blocks: or - Blocked by:#(\d+)blocks[issueNum] = [list of issues it blocks]Blocked by list is still open| Term | Meaning |
|---|---|
| Blocked | Has at least one open "Blocked by" item — cannot be started |
| Unblocked | No open "Blocked by" items — eligible for work |
| Root blocker | Unblocked itself, but blocks one or more other items |
| Unblock count | Number of items directly listing this one in "Blocked by" |
/backlog (dashboard)gh project item-list 15 --owner YanCheng-go --format json --limit 200
status:idea label to separate idea vs readystatus:idea, not blocked), sorted by Priority (p0 first), then Effort (xs first). Root blockers get an [unblocks N] annotation/backlog add <description>## Dependencies)BL-038: Fix mobile quiz layout cutting off on iPhone SE
Type: bug | Area: ui | Pri: p1 | Effort: s | Scope: all | Status: ready
Labels: requires:human-review (if applicable)
Description: [expanded from prompt]
Dependencies:
- Blocks: #64 (BL-024)
- Blocked by: none
- Related: BL-026 (mobile overflow) — same area
Confirm? (or override any field)
## Dependencies section in the body (canonical format):
# Create issue — body includes ## Dependencies section
gh issue create --repo YanCheng-go/danskprep \
--title "BL-038: <title>" \
--body "<description + ## Dependencies section>" \
--label "type:<type>,area:<area>,backlog"
# Add to project
gh project item-add 15 --owner YanCheng-go --url <issue_url> --format json
# Set custom fields (use item ID from above)
gh project item-edit --project-id PVT_kwHOAtALr84BQs_6 --id <item_id> \
--field-id <FIELD_ID> --single-select-option-id <OPTION_ID>
Repeat item-edit for Priority, Effort, and Scope fields.- Blocked by: #<new> (BL-038) to its ## Dependencies section- Blocks: #<new> (BL-038) to its ## Dependencies sectiongh issue edit <number> --body "<updated body>" to update existing issuesidea, also add the status:idea labelrequires:human-review label/backlog list [filters]gh project item-list 15 --owner YanCheng-go --format json --limit 200
--status=X → filter by Status field (idea/ready/in-progress/done/dropped)--area=X → filter by area:X label--priority=X → filter by Priority field--type=X → filter by type:X label/backlog view BL-NNNgh issue list --repo YanCheng-go/danskprep --search "BL-NNN" --json number,title --limit 5
gh issue view <number> --repo YanCheng-go/danskprep
/backlog update BL-NNN field=value [field=value ...]gh issue edit <number> --add-label/--remove-labelgh project item-editblocks=BL-NNN or blocked-by=BL-NNN): Update this issue's ## Dependencies section in canonical format, AND update the other issue's body with the reverse relationship (bidirectional)gh issue comment <number> --repo YanCheng-go/danskprep --body "Status changed from X to Y"
/backlog done BL-NNNgh issue close <number> --repo YanCheng-go/danskprep --reason completed
gh project item-edit --project-id PVT_kwHOAtALr84BQs_6 --id <item_id> \
--field-id PVTSSF_lAHOAtALr84BQs_6zg-vxHc --single-select-option-id 98236657
Completed on YYYY-MM-DD- Blocked by::
- Blocked by: line- Blocked by: line becomes empty, remove it (and the ## Dependencies section if no other lines remain)gh issue edit <number> --body "<updated body>" for each affected issue/backlog drop BL-NNN [reason]- Blocked by::
- Blocks: lines — those items would remain blockedgh issue close <number> --repo YanCheng-go/danskprep --reason "not planned"
Dropped on YYYY-MM-DD — <reason>/backlog done step 5: remove refs from other issues' - Blocked by: lines, clean up empty sections/backlog nextstatus:idea label)- Blocks: refs)git diff --stat HEAD~5)/backlog deps [BL-NNN]#95 (BL-041) → blocks → #93 (BL-040), #98 (BL-043))/backlog prioritizegh project item-edit callsWhen the user provides a natural language description, infer metadata using these rules. If multiple signals conflict, prefer the more specific one. Always present results for user confirmation.
| Signal words | Inferred type |
|---|---|
| fix, bug, broken, crash, error, wrong, stale | bug |
| add, new, implement, create, build, support | feature |
| exercise, word, grammar, sentence, prompt, content | content |
| migrate, deploy, CI, config, lint, test, build, Nix | infra |
| refactor, clean, rename, update deps, reorganize | chore |
| Signal words | Inferred area |
|---|---|
| quiz, exercise, cloze, multiple choice, word order | quiz |
| word, vocabulary, inflection, dictionary, verb, noun | vocabulary |
| grammar, topic, rule, conjugation, explanation | grammar |
| SRS, FSRS, card, review, spaced, scheduling | srs |
| layout, mobile, responsive, dark mode, button, page, CSS | ui |
| scrape, scraper, SpeakSpeak, speakandlearn, Moodle | scraping |
| Supabase, migration, database, RLS, table, SQL | db |
| auth, login, sign in, sign up, token, session | auth |
| progress, stats, chart, streak, analytics | analytics |
| CI, build, lint, Nix, deploy, Vercel, DX, tooling | dx |
| Signal words | Inferred priority |
|---|---|
| critical, urgent, blocks everything, security, ASAP | p0 |
| important, should, next, soon, high priority | p1 |
| (no signal — default) | p2 |
| nice to have, someday, low, minor, eventually | p3 |
| Signal words | Inferred effort |
|---|---|
| quick, one-liner, trivial, just change, tiny | xs |
| small, simple, straightforward | s |
| (no signal — default) | m |
| complex, multiple files, needs research, several | l |
| epic, multi-session, whole system, major rewrite | xl |
| Signal | Inferred scope |
|---|---|
| Mentions PD2 or Module 2 content specifically | PD2 |
| Mentions PD3M1 or Module 3.1 content | PD3M1 |
| Mentions PD3M2 or Module 3.2 content | PD3M2 |
| Infrastructure, UI, or cross-cutting concern | all |
| Not exam-related at all | (leave blank) |
New items start as ready (Todo, no status:idea label) unless the user says "just an idea", "maybe", "someday", or "thinking about" — then use idea (Todo + status:idea label).
If the item will likely touch AI context files, auto-add the requires:human-review label:
| Signal words | Files affected |
|---|---|
| skill, agent, rule, reference, CLAUDE.md, .claude, context, prompt | .claude/, CLAUDE.md |
| DEVELOPMENT.md, dev guide, workflow, skill chain | DEVELOPMENT.md |
| memory, MEMORY.md | MEMORY.md |
Also add the label when area:dx is inferred AND the description mentions AI/agent/skill configuration (not general DX like CI or Nix).
/backlog done BL-NNN before creating a PR/commit skill searches GitHub Issues for related backlog itemsCloses #NNN format to auto-close issues on mergegh auth switch --user YanCheng-go before any gh commandsDaily session wrapper — start with backlog, work, commit, retro
End-of-session retrospective — summarize work, update backlog statuses, update MEMORY.md
Commit, branch, PR, self-review, fix — then stop for human approval before merge
Pre-flight for parallel work — pick items, check file overlap, set statuses, generate terminal commands
Manage project backlog — add, list, filter, update, prioritize, suggest
Full ship cycle: branch, PR, self-review, fix, human approval, merge