agentleFS
noahcostakesnoahcostakes/claudebrain-template/.claude/skills/capture-task/SKILL.md

capture-task

Skill0 starsChanged 5 months agoMITView on GitHub

Capture an actionable task. Writes to your Notion task database via MCP if you've configured one (always confirming first); otherwise files a task note to 00-inbox/. Use for any actionable item with a verb (email X, build Y, review Z).

The file

We split this skill into the rules it gives an agent

8 rules. About 0 are common, 2 are distinctive, and 6 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 6

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    If <YOUR_TASK_DB_DATA_SOURCE_ID> is still an unfilled placeholder, the skill skips Notion entirely and uses the 00-inbox/ path (step 7).

    line 29
  2. Very specific:

    Read input. If invoked as /capture-task <description>, use the description.

    line 34
  3. Distinctive:

    If a create call against the pinned data source fails (e.g.

    line 72
  4. Very specific:

    If a task DB *was* configured and the create failed, tell the user the MCP failed and they can re-run /capture-task once it's back.

    line 121
  5. Very specific:

    Never write to Notion without explicit y.

    line 127
  6. Distinctive:

    Never silently retry more than once.

    line 130
  7. Very specific:

    Never overwrite an existing inbox file.

    line 131
  8. Very specific:

    Use [[wikilinks]] if the task description mentions a known project/person/area.

    line 132

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Capture-Task Skill

What this does

Captures an actionable item. Out of the box (no Notion configured) it writes a task note to 00-inbox/ — the pure-vault default, zero external services. If you have connected the Notion MCP and pinned your task database (see Setup below), it instead creates a task there, with explicit user confirmation before writing. Either way it fills all four fields — Task name, Due Date, Priority, and Category — inferring what it can from the description and asking the user for the rest.

Setup (optional — Notion only)

The vault path needs no setup. To route tasks to Notion instead of 00-inbox/:

  1. Connect the Notion MCP (see _meta/integrations.md).
  2. Pin your task database's data-source ID in _meta/notion-bridge.md under the <YOUR_TASK_DB_DATA_SOURCE_ID> placeholder. (To find it: open the database in Notion, copy its link, and pull the data-source/collection ID from the URL.)
  3. Confirm your field names map to Task / Due Date / Priority / Category / Done (or record the mapping in notion-bridge.md if yours differ), and note your existing Category select options.

If <YOUR_TASK_DB_DATA_SOURCE_ID> is still an unfilled placeholder, the skill skips Notion entirely and uses the 00-inbox/ path (step 7).

Steps

  1. Read input. If invoked as /capture-task <description>, use the description. If empty, prompt: "What's the task?"
  2. Build the four required fields. Every task gets all four filled — never leave one blank. First infer what you confidently can from the description; then ask the user (in ONE batched prompt) for anything still missing. Never fabricate a value.

    • Task (title) — taken from the description; always present.
    • Due Date — natural language ("by Friday", "tomorrow", "next week") → ISO date. There is no sensible default, so if it isn't clearly stated, ask.
    • Priority — one of Very High / High / Medium / Low. Infer only when clearly implied (e.g. "urgent"/"ASAP" → High or Very High); otherwise ask, offering the four options.
    • Category — must be an existing option in your task system (never invent new ones). Read the options you recorded in _meta/notion-bridge.md (or, pure-vault, just use a short free-text label that matches how you already tag work). Infer when the description clearly maps to one of your existing options; otherwise ask, offering the list. If the user's answer isn't on the list, map to the closest existing option or use a generic catch-all (e.g. Other) — do not create a new category.

    Batch every unknown into a single question round (e.g. "Due date? Priority? Category?") instead of asking one at a time. Once all four are set, proceed. (If the description also clearly names a known 10-projects/ or 15-workspaces/ item, note it for the [[wikilink]] rule below — verify by listing those folders.)

  3. Decide the target. If no Notion task DB is configured (the <YOUR_TASK_DB_DATA_SOURCE_ID> placeholder in _meta/notion-bridge.md is unfilled, or the Notion MCP isn't connected) → skip to step 7 (the 00-inbox/ default). If a task DB IS configured, continue.

    Target the pinned task database directly — do NOT search for it. Read the data-source ID you pinned in _meta/notion-bridge.md.

    ⚠️ Never use Notion search to discover the task DB. Notion ships a built-in default "My Tasks" database that ranks high in search because it's Notion's native task system — and it is almost always the WRONG target. Writing there is the exact bug pinning prevents. Always write to the data source you pinned yourself.

    If a create call against the pinned data source fails (e.g. it was moved or renamed), report the failure and jump to step 7 (fallback). Do not silently fall back to searching for "tasks".

  4. Show always-confirm preview. All four fields must be filled — no "—" placeholders. If any is still blank, go back to step 2 and ask for it.
    Create in Notion → <your task DB>:
      Task:     <task title>
      Due Date: <ISO date>
      Priority: <Very High | High | Medium | Low>
      Category: [<category>]
    Confirm? (y/n)
  5. On y: call mcp__claude_ai_Notion__notion-create-pages with:
    • parent: { "data_source_id": "<YOUR_TASK_DB_DATA_SOURCE_ID>" }
    • properties — all four are always set (collected in step 2), using your mapped field names:
      • Task — the title
      • date:Due Date:start — ISO date (also set date:Due Date:is_datetime = 1 if a time was given)
      • Priority — Very High / High / Medium / Low
      • Category — JSON array of existing option(s), e.g. ["Personal Work"]; never invent new options On success, report the Notion page URL. Stop.
  6. On n: report "Not captured." Stop. Do not retry.
  7. Default / fallback path (00-inbox/) — used when no Notion is configured or a Notion create failed. You will already have collected all four fields in step 2 — preserve them. Write 00-inbox/{{date}}-task-{{slug}}.md with:
    ---
    type: task-pending
    date: {{date}}
    status: needs-notion-sync
    tags: [needs-notion-sync]
    due: {{ISO due date}}
    priority: {{Very High | High | Medium | Low}}
    category: {{category}}
    source: "/capture-task (vault fallback)"
    ---
    
    # {{task title}}
    
    {{description body}}
    
    _Captured by /capture-task. If you later configure a task manager, push this there
    and archive the note._
    If a task DB was configured and the create failed, tell the user the MCP failed and they can re-run /capture-task once it's back. If no task manager is configured at all, this note IS the task — that's the expected pure-vault behavior, not an error.

Rules

  • Never write to Notion without explicit y. The bridge policy is non-negotiable.
  • Never leave Task, Due Date, Priority, or Category blank — infer it or ask. Never invent a Category outside your task system's existing options.
  • Never silently retry more than once.
  • Never overwrite an existing inbox file. Auto-rename with -2, -3, etc.
  • Use [[wikilinks]] if the task description mentions a known project/person/area.
  • Frontmatter source: field reflects whether the Notion or fallback path was used.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.