From factory
Use when the user wants to track work items, create a backlog, or manage tasks. Responds to "add a task", "show tasks", "what's in the backlog", "update task", "close task", "task board", or when any skill needs to defer work for later. Provides CRUD operations on a file-based task store in .factory/backlog/. Not for sprint planning (use /spec) or bug tracking (use /bugfix).
How this skill is triggered — by the user, by Claude, or both
Slash command
/factory:backlogThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Persistent work-item tracking across sessions. Tasks are stored as individual
Persistent work-item tracking across sessions. Tasks are stored as individual
markdown files with YAML frontmatter in .factory/backlog/. Both humans and
agents can create, query, update, and close work items.
/backlog is a utility skill, not a pipeline phase. It does not appear in the
/genesis sequence and does not modify the main pipeline's phase state.
Subcommands: add, list (default), show, update, close, board.
| Field | Value |
|---|---|
| Required inputs | Subcommand (defaults to list if omitted) |
| Optional inputs | Task title, task ID, flags (--type, --priority, --status, |
| --sprint, --title) | |
| Outputs | Task files in .factory/backlog/, stdout summaries, |
.factory/backlog/board.html (board subcommand only) | |
| Failure output | Error message to stdout |
Read and execute ALL [MANDATORY] sections in GLOBAL-REFERENCE.md:
{PHASE_NAME} = tasks{OUTPUT_FILES} = []Parse the user's input to determine the subcommand and arguments.
list.add, list, show, update,
close, or board.If the first token does not match a known subcommand, treat the entire input
as a title for the add subcommand (e.g., /backlog Fix the flaky test is
equivalent to /backlog add "Fix the flaky test").
addCreate a new task.
--type <bug|feature|debt|improvement> -- defaults to feature.--priority <P0|P1|P2> -- defaults to P1..factory/backlog/ to find the highest existing ID. Next ID = max + 1.
If no tasks exist, start at 1..factory/backlog/ directory if it does not exist..factory/backlog/TASK-{NNNN}.md (NNNN = zero-padded to 4 digits):---
id: {next_id}
title: "{title}"
type: {type}
status: open
priority: {priority}
created_at: "{ISO 8601 timestamp}"
created_by: user
sprint: null
---
Created TASK-{NNNN}: {title}
Type: {type} | Priority: {priority} | Status: open
listDisplay all active tasks grouped by priority. This is the default subcommand.
.factory/backlog/TASK-*.md files.status in (open, in_progress). Exclude done and closed.## P0 -- Critical
| ID | Title | Type | Status | Sprint |
|-----|------------------------------------|---------|-------------|--------|
| 005 | Fix auth token expiry handling | bug | in_progress | 3 |
## P1 -- Important
| ID | Title | Type | Status | Sprint |
|-----|------------------------------------|---------|-------------|--------|
| 001 | Pin actions token to commit SHA | debt | open | -- |
## P2 -- Nice to Have
(none)
3 open, 1 in progress | 4 total active
No open tasks. Use /backlog add "<title>" to create one.
show <id>Display a single task's full details.
3) or padded (003)..factory/backlog/TASK-{NNNN}.md.Task {id} not found.TASK-{NNNN}: {title}
Type: {type} | Priority: {priority} | Status: {status}
Created: {date} by {created_by} | Sprint: {sprint or "--"}
{markdown body}
update <id>Update one or more fields on an existing task.
--status <status>, --priority <priority>, --type <type>,
--sprint <number>, --title "<title>".Task {id} not found.Updated TASK-{NNNN}:
status: open -> in_progress
sprint: -- -> 2
close <id>Close a task. Shorthand for update <id> --status closed.
Task {id} not found.status: closed in the frontmatter.Closed TASK-{NNNN}: {title}
boardRender an HTML kanban board and open it in the browser.
.factory/backlog/TASK-*.md files..factory/backlog/board.html with:
open .factory/backlog/board.htmlThe board is a snapshot. Re-run /backlog board to refresh.
If no tasks exist:
No tasks to display. Use /backlog add "<title>" to create one.
Each task lives at .factory/backlog/TASK-{NNNN}.md with this structure:
---
id: 1
title: "Short description, max 120 characters"
type: feature # bug | feature | debt | improvement
status: open # open | in_progress | done | closed
priority: P1 # P0 | P1 | P2
created_at: "2026-04-05T14:30:00Z"
created_by: user # "user" or skill name (qa, retro, security, etc.)
sprint: null # sprint number or null
---
Optional markdown body with description, context, references, and notes.
ID assignment: max(existing IDs) + 1. If no tasks exist, start at 1.
Filename is zero-padded to 4 digits: TASK-0001.md.
Collision handling: If the target file already exists (concurrent creation), increment the ID and retry.
Other skills may create tasks when they defer work or produce recommendations not acted on immediately. This is opt-in per skill.
When to auto-capture:
/qa finds a minor, non-blocking issue./retro produces an action item./security identifies a low-severity finding that does not block deploy./build defers a known optimization or cleanup./deploy notes a configuration improvement.When NOT to auto-capture:
.factory/backlog/.Auto-captured task conventions:
created_by: the skill name (e.g., qa, retro, security).Skills that auto-capture write TASK-{NNNN}.md files directly using the same
ID assignment logic as the add subcommand. They do not invoke /backlog as a
skill -- they write the file themselves.
settings:
- name: default_priority
type: string
default: P1
description: >
Default priority for new tasks when --priority is not specified.
Must be one of: P0, P1, P2.
- name: default_type
type: string
default: feature
description: >
Default type for new tasks when --type is not specified.
Must be one of: bug, feature, debt, improvement.
/backlog is a backlog store, not a
planner. Use /spec Phase 2b to plan sprints -- it reads the backlog
automatically./bugfix has its own state in
.factory/state.json. Do not create /backlog entries for bugs that are
already tracked by /bugfix. Use /backlog for bugs discovered outside the
bugfix pipeline.board.html does nothing -- the source of truth is the TASK-*.md files.npx claudepluginhub whalbawi/factory --plugin factoryCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.