Skill v1.0.0
currentAutomated scan100/100version: "1.0.0" name: project-backlog description: Use when managing per-project backlog folders, feature queues, async agent work items, lifecycle status updates, PR/done/blocked transitions, or status reviews inside an Obsidian vault.
Project Backlog
Overview
Use a project-local backlog/ folder as the source of truth for backlog item status. Work with the Obsidian vault as plain Markdown files. Resolve the vault path directly from OBSIDIAN_VAULT or VAULT; if neither is set and the human did not provide a vault path, ask for it before reading or writing backlog files.
Lifecycle hook: if work starts, pauses, resumes, opens PR, or completes, update the matching backlog item.
Folder Convention
Each project folder may contain:
backlog/intake/next/ongoing/paused/done/canceled/
Before filing or moving backlog items, create the project backlog/ directory and any missing status subdirectories from the project folder.
Copyable initializer:
mkdir -p backlog/{intake,next,ongoing,paused,done,canceled}
Status is canonical from the folder name. A backlog item must live in exactly one status folder.
| Folder | Meaning | Move here when | |
|---|---|---|---|
intake/ | Raw ideas, requests, bugs, or feature notes not yet triaged | Capturing unsorted work | |
next/ | Accepted, scoped, and ready for an agent or human to pick up | The item has enough context and success criteria | |
ongoing/ | Actively assigned or being implemented | Work starts, including async subagent runs | |
paused/ | Intentionally stopped but may resume | Blocked, waiting, deferred, or interrupted | |
done/ | Completed and verified | The feature/fix is accepted, cleaned up, and no follow-up is needed | |
canceled/ | Intentionally not doing | The item is rejected, obsolete, duplicated, or no longer wanted |
Do not create alternate status folders such as todo/, active/, blocked/, archive/, or shipped/. Use tags/properties for metadata only, not as competing status systems. If a note has a status property, keep it synchronized with the containing folder or remove it only with permission.
Item Format
One Markdown note per item. Keep filenames short/stable, e.g. add-search.md. Folder = status; do not add a status property.
---tags: [backlog]type: feature # feature | bug | chore | researchpriority: P2 # P0 | P1 | P2 | P3description: One concise sentence explaining the item.created: 2026-06-19updated: 2026-06-19due:agent_run:---# Title## Request## Context / Links## Acceptance Criteria-[ ]## Activity Log-2026-06-19 — Created.
Preserve frontmatter, wikilinks, and Markdown when moving or editing notes.
Async Agent Workflow
- Capture: create or move new requests into
backlog/intake/. - Triage: clarify scope, deduplicate, add acceptance criteria, then move to
next/,canceled/, or leave inintake/. - Assign: before starting an async agent or human work session, move the item to
ongoing/and add a brief activity-log entry with date, owner, and run/session identifier if useful. - Track: update the item with links to branches, PRs, review notes, blockers, and decisions. Do not mark a note done just because an agent reported completion.
- Finish: after verification and cleanup, move completed feature/fix notes to
done/. If work is blocked or intentionally stopped, move topaused/; if abandoned or rejected, move tocanceled/.
Housekeeping
On request, perform safe maintenance:
- ensure
backlog/and all six status subdirectories exist before filing items; - list duplicate or near-duplicate backlog items before merging them;
- identify stale
ongoing/items with no recent activity; - identify
paused/items missing blocker/resume notes; - move verified completed items from
ongoing/orpaused/todone/; - move rejected, obsolete, or duplicate items to
canceled/; - normalize filenames only when links/backlinks can be preserved;
- ask before deleting files, bulk-moving notes, overwriting frontmatter, or changing wikilinks.
Backlog Tree Helper
For a quick read-only snapshot by unique project folder name, run from this skill directory:
./backlog-project-tree "projectName"
Set the vault path with OBSIDIAN_VAULT or VAULT:
OBSIDIAN_VAULT=/path/to/vault ./backlog-project-tree "projectName"# orVAULT=/path/to/vault ./backlog-project-tree "projectName"
It prints Markdown files under intake/, next/, ongoing/, paused/, done/, and canceled/, with best-effort metadata (type, priority, description, updated, due, agent_run). It reports missing categories without creating, moving, or deleting anything.
Backlog State Review
When asked for a backlog review, scan only the requested project unless told otherwise:
- Confirm the project folder and vault path.
- Count items in each status folder.
- Summarize
intake/triage candidates,next/ready work, staleongoing/, and blockedpaused/items. - Recommend specific moves or edits, grouped by status.
- Ask for confirmation before applying bulk moves or destructive cleanup.
- After approved changes, report the final counts and notable remaining risks.
Common Mistakes
- Creating both
blocked/andpaused/; blocked work belongs inpaused/with a blocker note. - Treating
done/as an archive for canceled work; rejected work belongs incanceled/. - Moving async agent output to
done/without human/agent verification. - Deleting old backlog notes during cleanup without explicit confirmation.
- Rewriting notes instead of using small edits that preserve Obsidian links and properties.