| name | asap |
| description | Capture an open-ended ASAP item — something to surface until handled |
ASAP
Capture an open-ended item to surface until handled. ASAP is for things with no
specific date — "don't let me forget", "next time I work on X", "I need to
create a ticket for that". Items persist on wiki/asap.md until resolved (in
session or via /asap-process).
When to invoke
Trigger on any of:
/asap <title>
- "ASAP: "
- "don't let me forget X"
- "add X to ASAP" / "add X to my ASAP list"
- "need to remember X" — but only if no specific date is parseable
If the user's phrasing includes a date or day name ("remind me Friday", "on
May 4th", "next Thursday", "in two weeks"), this is /remind, not /asap.
Invoke the remind skill instead and stop.
"Remind me next work day" is intentionally ambiguous — route to /asap
(open-ended, since "next work day" isn't a fixed date).
Arguments
$ARGUMENTS — the item to capture. May be empty if the user said something
like "add that to ASAP" referring to the prior conversation.
Behavior
Step 1 — Resolve the title and context
- Title — the core action. First clause or main verb phrase. Tight,
TODO-style — not a sentence.
- Context — the rest of what the user said, plus anything clearly implied
by the immediately preceding conversation (the topic, the task being
discussed, the decision just made). Do not invent — use only what was said
or what's obviously implied.
If $ARGUMENTS is empty and there's no clear preceding context to draw from,
ask once for a one-liner. Do not interview.
Step 2 — Dedup check
Run via Bash:
rubber-ducky asap list --json
Scan pending items (where resolved: false) for a near-duplicate by:
- Significant title-word overlap (stem on nouns/verbs)
- Or strong overlap with an existing item's message
If a near-duplicate exists, tell the user briefly and let them choose. Do not
write a duplicate silently. Example:
Already on the ASAP list: "" (added YYYY-MM-DD). Update
that one or add as new?
Step 3 — Append the item
Run via Bash, passing the title as the message argument and including the
context (if any) inline. Format the message as:
<Title> — <context>
If a related wiki task page can be resolved from the user's phrasing (by
ticket ref, ECOMM-style intake ref, or title match in wiki/tasks/), append
(related: [[<task page>]]) to the message.
Then run:
rubber-ducky asap add "<message>"
The CLI writes today's date as the createdAt timestamp automatically. Do
not append a date to the message yourself.
Step 4 — Confirm
One voice-friendly line:
Added to ASAP: <Title>.
If context was inferred from conversation rather than stated directly, append
a compact parenthetical so the user can catch misparses:
Added to ASAP: <Title>. (noted: <inferred context in ≤ 8 words>)
Step 5 — Redirect to the active task
Read active_task from today's daily page frontmatter:
rubber-ducky frontmatter get wiki/daily/YYYY-MM-DD.md active_task
If set, end with a one-liner pointing back to what was being worked on:
Back to [[<active task>]] — <next concrete step>.
If active_task is unset (e.g., capture during a morning review or a day
off), omit the redirect and just confirm the capture.
Rules
- Never capture without a title. If the title would be empty, ask once —
briefly — for a one-liner. Do not interview.
- Never duplicate. Near-identical entries are merged or updated, not
appended.
- Capture is fast. Infer context from the conversation. Confirm in one
line. Move on. Voice input is the default — treat friction as expensive.
- Wiki-only operation. No external writes. No
log.md entry — captures
are too small to clutter the operation log.
- Do not invoke
/asap-process from inside /asap. Capture ≠ process.
If the user wants to walk through their list afterward, they'll say so.
- Do not write to today's daily page. ASAP is a separate surface;
capturing an item is not the same as doing work on it.
Output
A single one-line confirmation, optionally followed by a one-line redirect to
the active task. Nothing else.