triage-tasks
Use when you want to review and batch-update open vault task statuses for the current project or across all projects.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when you want to review and batch-update open vault task statuses for the current project or across all projects.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use when researching what the vault knows about a topic — performs graph + semantic exploration with gap analysis to map existing knowledge and find missing connections. Primarily used via the vault-explorer agent. Not for routine session-start context loading (hooks handle that).
Use when wrapping up a work session — creates devlog entry, captures undocumented decisions/research/debugging, audits link health of session work, and updates project index. Primarily used via the pkm-capture agent.
Use when writing to the vault — creating new notes (vault_write), editing existing notes (vault_edit, vault_append, vault_update_frontmatter). Handles duplicate checking, link discovery, annotations, and index updates for new notes. Provides guidelines for modifications.
Use when you want to quickly capture a new task in the vault from a title, with optional priority and due date.
Use when starting work on a specific vault task, when a task title or path is mentioned, or when coming from triage output.
| name | triage-tasks |
| description | Use when you want to review and batch-update open vault task statuses for the current project or across all projects. |
Runs interactively: fetch open tasks, show them numbered with completion hints, wait for user decisions, apply updates.
Detect the current project from CLAUDE.md:
Read("CLAUDE.md") // look for: # PKM: <path>
Extract the vault project path from a line matching /^#\s+PKM:\s*(.+)$/m (e.g., 01-Projects/Obsidian-MCP).
Scope (check skill args first, then default):
folder from queriesIf CLAUDE.md has no # PKM: line and no scope was specified, ask:
"No project found in CLAUDE.md. Should I triage tasks across all projects, or a specific folder?"
vault_query({ type: "task", status: "pending", folder: "<project>", sort_by: "priority", sort_order: "desc" })
vault_query({ type: "task", status: "active", folder: "<project>", sort_by: "priority", sort_order: "desc" })
Omit folder for all-projects scope. If both return empty, report "No open tasks found — all clear!" and stop.
Combine: active tasks first (priority-sorted), then pending (priority-sorted). Assign sequential numbers 1–N.
Collect lightweight signals in two calls — not one call per task.
Activity log (check if any task was recently touched):
vault_activity({ since: "<date 30 days ago as YYYY-MM-DD>", limit: 100 })
Git log (look for commits related to task work):
Bash: git rev-parse --is-inside-work-tree 2>/dev/null && git log --oneline --since="30 days ago" | head -50
If git rev-parse fails (not a git repo), skip git hints silently — don't surface an error to the user.
For each task, derive a hint from these results:
vault_update_frontmatter, vault_edit, vault_append): mark "recently updated"-) appears in a commit message: mark "⚡ git commits"Format the list clearly, grouping active before pending:
### Open Tasks — 01-Projects/Obsidian-MCP (5 tasks)
**Active:**
1. [urgent] implement-semantic-caching ⚡ git commits
Implement caching layer for OpenAI embedding calls
**Pending:**
2. [high] add-triage-tasks-command
Add /triage-tasks skill to vault-pkm plugin
3. [normal] project-init-update-command
Add init --update subcommand for hook file updates
4. [normal] support-claude-ai-hosted-sessions
Research making vault-pkm work with claude.ai sessions
5. [normal] rename-github-repo ⚡ git commits
Rename GitHub repo via UI
Reply with decisions, e.g.: `1,2 done | 4 cancel | 3 active`
Options: done · active · pending · cancel
Press Enter with no input to skip.
Include the task's first non-empty description line as a subtitle. Use vault_peek(path) per task (cheaper than vault_read — returns preview without full content). If the description section is empty or contains only a template placeholder, omit the subtitle entirely.
Wait for user input. Parse leniently:
| Input form | Meaning |
|---|---|
1,3 done | Tasks 1 and 3 → done |
2 active | Task 2 → active |
4 cancel or 4 cancelled | Task 4 → cancelled |
5 pending | Task 5 → pending (no-op if already pending) |
empty / skip | No updates — exit cleanly |
Numbers out of range: ignore with a warning. Unrecognised tokens: ignore silently.
Confirm parsed decisions before applying:
"Updating: 1, 3 → done · 4 → cancelled. Proceed? (y/n)"
For each decision, update frontmatter atomically:
vault_update_frontmatter({
path: "<task-path>",
fields: { status: "<new-status>" }
})
For tasks marked done, check for an existing completion timestamp before appending:
vault_read({ path: "<task-path>" })
If the note already contains **Completed**, skip. Otherwise:
vault_append({
path: "<task-path>",
content: "\n**Completed**: <YYYY-MM-DD>\n"
})
Report what changed:
Updated 3 tasks:
- ✓ implement-semantic-caching → done
- ✓ add-triage-tasks-command → done
- ✗ rename-github-repo → cancelled
Skipped: 2 tasks unchanged.