From kw
Manage GTD tasks as zk notes in ~/notes/gtd/tasks/. Supports add, list, start, stop, done, modify, delete. Recalls zettelkasten context when starting a task.
How this skill is triggered — by the user, by Claude, or both
Slash command
/kw:tkThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Manage GTD tasks as zk notes. Tasks live in `~/notes/gtd/tasks/` with
Manage GTD tasks as zk notes. Tasks live in ~/notes/gtd/tasks/ with
status tracked via tags in frontmatter. Project dashboards in
~/notes/gtd/projects/ aggregate task status.
Usage: /tk <subcommand> [args]
Create a new task note.
Create the note with zk new:
zk new gtd/tasks --title "<task description>" --print-path --no-input
This returns the file path. The template fills title and date automatically.
Write the body into that file:
---
title: <task description>
date: <auto-filled>
tags: [task, pending]
project: <project-name>
---
<context or details if provided>
## Sub-tasks
## Blockers
## Links
- [[<project-id>]] — <project title> (parent project)
If the user didn't specify a project, ask which project it belongs to.
Link to project dashboard: If project:<name> was specified (or
the user chose one), normalize the name (lowercase, hyphens for spaces).
zk list gtd/projects --match "<name>" --format "{{filename}} {{title}}" 2>/dev/null
If found: Add the new task to the project's ## Tasks section:
- [[<task-id>]] <task title> — `pending`
If not found: Ask the user: "No project dashboard for <name>.
Create one?" If yes:
zk new gtd/projects --title "<Name (title-cased)>" --print-path --no-input
Then write the body:
---
title: <Name (title-cased)>
date: <auto-filled>
tags: [project, active]
---
## Outcome
<ask the user, or leave as TODO>
## Tasks
- [[<task-id>]] <task description> — `pending`
## Reference
## Log
- <today>: Project created; added task "<description>"
If the user declines, proceed without the project link.
Report the task ID and filename.
List tasks or projects from the vault.
List tasks (default):
zk list gtd/tasks --format "{{filename-stem}} {{title}} [{{tags}}]" 2>/dev/null
Filters:
zk list gtd/tasks -t "active" (or pending, done)zk list gtd/tasks --match "project: <name>"-t "active" + -t "pending" in two queries, or filter output)List projects (/tk list projects):
zk list gtd/projects -t "project" --format "{{filename-stem}} {{title}} [{{tags}}]" 2>/dev/null
Always use -t "project" to exclude task notes from results.
Start working on a task. This triggers context recall.
Find the task note by ID or title search:
zk list gtd/tasks --match "<query>" --format "{{filename}} {{title}}" 2>/dev/null
Edit the task note: change tag pending → active in frontmatter.
Update the project dashboard: change the task's status suffix from
`pending` to `active`.
Context recall — extract search terms from title, project, and tags:
zk list zettels --match "<title keywords>" --format "{{filename-stem}} {{title}}" --limit 5 2>/dev/null
zk list zettels -t "<project>" --format "{{filename-stem}} {{title}}" --limit 3 2>/dev/null
Read the project dashboard for Outcome, Tasks, and recent Log entries.
Read the top 5 most relevant zettel notes (deduplicated).
Present:
**Started:** <title> (project: <project>)
**Project dashboard:**
- **Outcome:** <first paragraph>
- **Tasks:** <task list with statuses>
**Relevant notes:**
- [[id]] Title — one-line relevance
**No notes found on:** <gap topics, if any>
Pause a task without completing it.
active → pending.## Blockers section.Mark a task complete.
Edit the task note: change tag to done.
Update the project dashboard:
Change the task's status suffix to `done`
Append to ## Log:
- <today>: Completed [[<task-id>]] "<task title>"
Report task summary (title, project).
Edit a task note's frontmatter or content directly.
Remove a task.
## Tasks section.If the user says something natural instead of a subcommand, map it:
| User says | Subcommand |
|---|---|
/tk fix the login bug | add |
/tk what's on my plate | list |
/tk work on T4 Brain | start |
/tk T4 is done | done |
/tk pause | stop (active task) |
/tk change T4 to high priority | modify |
If ambiguous, ask.
When no task is specified for stop, done, or modify, find active
tasks:
zk list gtd/tasks -t "active" --format "{{filename-stem}} {{title}}" 2>/dev/null
If exactly one is active, use it. If multiple, ask which one.
active — currently being worked on (multiple allowed)pending — not started or pauseddone — completed$ARGUMENTS - The subcommand and arguments (e.g., "add fix login bug project:web")
npx claudepluginhub handol-park/claude-plugins --plugin kwCreates sequential tasks with priority, status, due dates in secondbrain's .claude/data/tasks YAML shards. Activates on 'create task', 'add todo', or similar requests.
Manages Obsidian tasks via official CLI: lists open tasks across vault, creates tasks in notes, marks tasks complete by ID. Useful for todo and checklist operations.
Organizes markdown task files into folders like tasks/, ideas/, templates/, bugs/ with YAML frontmatter defining types (task, idea, bug), due dates, tags, status. Use when creating or modifying task files.