From agentic-gtd
Capture a new task and append a well-formed task line to the correct domain file.
How this command is triggered — by the user, by Claude, or both
Slash command
/agentic-gtd:add-task [domain] <task description> [prio:..] [project:..] [effort:..] [due:..] [context:..]This command is limited to the following tools:
The summary Claude sees in its command listing — used to decide when to auto-load this command
# /add-task — Capture a New Task ## Domain Resolution Read `tasks/domains.md` to get the current list of domains. Each row has a `canonical` name and an `aliases` column (comma-separated). The target file for a domain is `tasks/<canonical>.md`. To resolve an argument value to a domain: 1. Check if it matches any `canonical` value exactly. 2. If not, check if it matches any alias in any row's `aliases` column. 3. Use the first match found. Note: the Triage subagent emits domain using canonical names; these will always resolve correctly against the registry. If the domain argument does n...
Read tasks/domains.md to get the current list of domains. Each row has a canonical name and an aliases column (comma-separated). The target file for a domain is tasks/<canonical>.md.
To resolve an argument value to a domain:
canonical value exactly.aliases column.Note: the Triage subagent emits domain using canonical names; these will always resolve correctly against the registry.
If the domain argument does not match any canonical name or alias in tasks/domains.md, emit an error:
Error: Unknown domain "<value>". Read tasks/domains.md for the current list of valid domains and their aliases.
Do NOT write anything to any file.
Valid values: fulltime, parttime, side, trust, long, short, tedious.
prio is missing: warn and default to prio:short.prio is present but not in the vocabulary: warn and default to prio:short.Treat $ARGUMENTS (or $1 / free text) as a raw task description.
Detect backward-compat signals:
tasks/domains.md (read it), capture it as the explicit domain seed.key:value tags are present (prio:, project:, effort:, due:, context:), capture them as explicit tag seeds.Recognized seed keys: prio, project, effort, due, context, recurs, last.
A recurs:<interval> seed (e.g. recurs:3d, recurs:weekly) marks the task as a recurring standing review — pass it through verbatim to the written line. When recurs: is supplied, prefer NOT to also write a due: (the due is derived from recurs/last); if the user gave both, keep recurs: and warn that due: is ignored for recurring tasks. A last:<YYYY-MM-DD> seed (last completed date) may accompany recurs:; if omitted on a new recurring task, leave it off (the task is treated as never-done and surfaces immediately).
The user is NOT required to provide a domain token or any key:value tags upfront — the Triage subagent will infer them.
If the description (after stripping any domain token and key:value tags) is empty, ask the user for a description and write nothing.
Use the Task tool to invoke the Triage subagent in PROPOSAL MODE. Pass:
Instruction to include verbatim: "You are in PROPOSAL MODE. Do NOT write any file. Return ONLY the task-proposal fenced block."
Parse the returned task-proposal fenced block into its fields:
reworded_title, domain, prio, project, impact, effort, due, context, ambiguity_notes
If the block is malformed or missing, fall back to building the confirmation card from the raw input rather than aborting (use the raw description as reworded_title, use the seed domain if available, use (none) for all unresolvable fields).
The main agent confirms the Triage proposal using TWO AskUserQuestion calls (followups are fine — there is no one-card limit). Both are pre-filled from the proposal (recommended option first, labelled "(Recommended)"). The subagent's proposal drives the defaults; its ambiguity_notes drive any extra followup questions.
Call 1 — Core decisions (4 questions):
<reworded_title> (Recommended), B) keep original raw text. (Other = user types a corrected title.)tasks/domains.md as alternatives.fulltime, parttime, side, trust, long, short, tedious).due):
due, show it as option A (Recommended).<runtime today, YYYY-MM-DD>) · End of this week (compute the coming Sunday's ISO date from the runtime clock). Other = user types an explicit YYYY-MM-DD (or a phrase like "next friday" to normalize).due tag entirely.Call 2 — Optional tags & ambiguities (followup) — issue this as a second AskUserQuestion call after Call 1:
project:<v>, effort:<v>, context:<v>. Show impact:<v> ONLY when the (now-confirmed) domain is fulltime or parttime. Selected = include in the written line, unselected = omit. (Other lets the user free-text overrides or additions, e.g. effort:1h.)ambiguity_notes (e.g. an uncertain project label, or a "should this be split?" note), add a targeted question in this same call so the user can resolve it. Stay within the 4-question cap per call; if there are more, issue another followup call.If Call 2 would have no Details to confirm AND no ambiguities to resolve, you may skip it.
Backward-compat shortcut: If the user supplied an explicit domain AND all needed tags at capture AND ambiguity_notes is "none", you MAY skip the cards (or present a single confirm step) and proceed directly to Step 5.
Overlay the user's answers from Call 1 (Action / Domain / Priority / ETA) and Call 2 (the Details multiSelect + any ambiguity followups) onto the Triage proposal:
tasks/domains.md. If unknown → error, write nothing.fulltime|parttime|side|trust|long|short|tedious). If invalid or missing → warn and default to short.YYYY-MM-DD using the runtime clock. An explicit value must be ISO YYYY-MM-DD; if unparseable, warn and omit. Never invent a due date the user did not give.30m, 1h, 2h, 1.5h; context is lowercased with leading @, comma-separated.fulltime or parttime and it was kept in the Call 2 Details selection. For all other domains, omit impact even if the user supplied one (warn the user if so).tasks/<domain>.md file (using Read tool).- [ ] <title> prio:<value> [project:<value>] [effort:<value>] [impact:<value>] [due:<value>] [recurs:<value>] [last:<value>] [context:<value>]
Use double-space separators. Emit only populated tags. impact appears only for fulltime or parttime domains. recurs:/last: appear only for recurring tasks; when recurs: is present, omit due:.After writing, emit:
Added to tasks/<domain>.md:
- [ ] <the full task line as written>
If prio was defaulted, include:
Warning: prio not specified or invalid. Defaulted to prio:short. Consider using prio:<suggested> for this domain.
Include any other normalization warnings raised during Step 5.
npx claudepluginhub josix/agentic-gtd/add-taskAdds a structured task by parsing natural language input, inferring priority, type, dependencies, and complexity with context-aware suggestions, preview, and validation.