بنقرة واحدة
to-task
Capture the current chat discussion into a task, no implementation plan
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Capture the current chat discussion into a task, no implementation plan
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Fan an approved `.task/roadmap/<slug>.md` out to a dynamic Workflow — parallel planning, serialized implementation, dependency-ordered waves.
Capture a multi-task initiative into `.task/roadmap/<slug>.md` — a phase-grouped backlog of ready-to-pick-up items.
Capture load-bearing technical decisions into a standalone `.task/spec/<slug>.md` — Decision/Rationale/Constrains sections cited via `Spec:`.
Interrogate a plan or decision one question at a time before capture, keeping a decision-plus-rationale ledger, then route to the right capture skill.
Capture the chat into `.task/task/<slug>.md` with `## Description` plus `## Plan` (Goal/Touches/Logic) — the deepest one-task capture.
Self-audit this skills repo against CLAUDE.md invariants, the v3 artifact contract, and README/CLAUDE.md/docs sync via three parallel read-only subagents. Local meta-skill — independent of the /task:* pipeline.
| name | to-task |
| description | Capture the current chat discussion into a task, no implementation plan |
| disable-model-invocation | true |
| user-invocable | true |
Distil the chat discussion so far (or a roadmap item) into .task/task/<slug>.md — ## Description only, no ## Plan. Lightest of the three capture skills (to-task / to-plan / to-roadmap): use it to record the "what and why" before implementing directly, or before to-plan later. The written file is the handle — no active-task pointer, no separate execution skill; a fresh session implements it by reading ## Execution.
Input: $ARGUMENTS — optional. Recognized forms:
<roadmap-slug> or <roadmap-slug>#<N> — open from that roadmap item instead of the chat.Check whether .task/config/config.md exists — resolve the pipeline root via skills/_lib/resolve-ws.sh (source it; it exports AI_DIR, walking task.root → ancestor config.md → git-common-dir → .task).
ROOT (main worktree root; pwd for a non-git dir; for a bare repo the default is a best-effort guess — surface it in the proposal below so the user can redirect it).CLAUDE.md if present, detect language/stack, build/test commands, a project commit-format doc (check in order CONTRIBUTING.md, docs/CONTRIBUTING.md, .github/CONTRIBUTING.md), detected language policy (repo's dominant natural language from git log -10 --oneline + CLAUDE.md/README.md prose — default to "follow task.md Description" for English/mixed repos), and detected testing-policy mode (always if a TDD convention is documented, on-demand otherwise — never silently detect never).AskUserQuestion confirmation in the same reply — the chips don't display it, so the call is gated on that line being printed above it. (This is the config-setup carve-out named in convention (b): it confirms auto-detected environment that was never discussed, so unlike a content capture it does ask before writing.):
Detected — Language: <policy>; Testing policy: <mode>.
Bare repo: add a third clause, .task location: <ROOT>/.task, editable the same way.
Chips Accept / Edit / Decline:
.task location), same option menus as the language/testing-policy questions below, then continue.config.md not written. → Next: run /task:to-task again when ready" and stop..task/config/config.md using the standard template — sections: Code Navigation, Code Editing, Library Documentation, Project Conventions, Build and Tests, Commit Format, Language, Testing Policy, Directories — Do Not Search. Reference mode (a short **Source:** \CLAUDE.md` → `## `pointer, ≤3 summary lines) whenCLAUDE.mdalready documents a section; full mode otherwise. Commit Format: reference mode with justSource: when a commit-format doc was found, else derive rules fromgit log`.git config --local task.root "$ROOT" (repo-common; shared by every worktree). Skip with a warning if not a git repo — the ancestor-config.md walk resolves .task/ without the anchor..task locally: EXCLUDE=$(git rev-parse --git-path info/exclude); mkdir -p "$(dirname "$EXCLUDE")"; touch "$EXCLUDE"; grep -qxF '.task' "$EXCLUDE" || echo '.task' >> "$EXCLUDE". Skip with a warning if not a git repo.$ARGUMENTS unchanged.Then run bash "${CLAUDE_PLUGIN_ROOT}/skills/validate/validate.sh" all — an optional self-check, not a gate: report any WARN/ERROR lines, but only hard-stop when .task/config/config.md is genuinely absent (Step 0 just handled that). Never block on a pre-existing artifact failing validation.
No pointer to resolve — the artifact path is the handle. Branch on $ARGUMENTS:
<slug> or <slug>#<N>, matching an existing .task/roadmap/<slug>.md) → from-roadmap mode, Step 1a below..task/roadmap/*.md files have an unchecked (- [ ]) item, and there is no chat discussion to draft from → present an AskUserQuestion fork (convention (c)): "How do you want to start this task?" — Draft from this chat / Open from a roadmap. The latter opens a second AskUserQuestion listing the roadmap slugs, then proceeds as from-roadmap mode with the chosen slug.$ARGUMENTS context) → chat-draft mode, Step 2 below.$ARGUMENTS) → stop and ask the user what to capture rather than drafting a Description from nothing.Resolve <slug> to .task/roadmap/<slug>.md; if ambiguous or missing — stop and ask.
Pick <N>: if given, use it. Otherwise collect open items (- [ ] checkbox headings); if none — stop: "all items in <slug> are closed; pick one explicitly with <slug>#<N>, or draft from chat instead." If more than one open item, ask via AskUserQuestion (chip per #<N> — <title>, first/lowest default); if exactly one, auto-pick it.
Read the item's ### Context / ### Goal / ### Outcomes / ### Invariants / ### Acceptance criteria block. ### Context becomes the Description's "why"; the rest folds into the "what". Also note any ### Spec references → <spec-slug> §N the item carries, and the roadmap's own Spec: <slug> header lines — collect the distinct <spec-slug>s to stamp as Spec: headers on the task (step 5).
Derive <item-slug> — kebab-case English from the item's own title (not the roadmap's). No task-id, no derive-task-id helper: the item gets its own <item-slug>.md, independent of the roadmap's slug.
Write .task/task/<item-slug>.md directly (creating .task/task/ if needed) — no in-chat draft, no confirmation prompt; the roadmap item is the settled source:
# {Item title}
Roadmap: {slug}
Source item: #{N}
Spec: {spec-slug} (one line per spec the item cites; omit entirely if none)
---
## Description
{Why: paraphrase of ### Context. What: paraphrase of ### Goal / ### Outcomes / ### Invariants / ### Acceptance criteria.}
## Execution
> If `Spec:` headers are present, read each `.task/spec/<slug>.md` first and honor its
> decisions as fixed. `.task/` is pipeline-internal and invisible to the repo: never name
> `.task/` paths, spec/roadmap/task slugs, or `§` numbers in code, comments, commits, or PR
> text. Implement the Plan above (or the Description if none) with the tools in
> `.task/config/config.md` → Code Navigation / Code Editing. Run `/verify` end-to-end and
> `/code-review`, applying fixes ONLY within **Touches** (report the rest); with no `## Plan`,
> scope fixes to what you changed. Commit per `.task/config/config.md` → Commit Format. If
> `Roadmap:` + `Source item:` are present, tick item #N's checkbox in `.task/roadmap/<slug>.md`.
Validate the written file: bash "${CLAUDE_PLUGIN_ROOT}/skills/validate/validate.sh" task <item-slug> — surface any WARN/ERROR in Step 3's digest; only a config-precondition failure (exit 2) hard-stops.
Continue to Step 3 (digest + footer), using <item-slug> as <slug> there.
Slug. Derive a kebab-case English slug (2–5 words) from the chat's essence / the drafted title. This is both the filename and the task's identity — no task-id, no bracket. If .task/task/<slug>.md already exists, surface it before writing: pose an AskUserQuestion (Accept overwrite / Edit → propose a different slug / Decline → stop without writing).
Distil the chat. Read back over the discussion in this conversation (not the codebase) and write:
## Description — the why + what, in the user's own framing. Use ### Problem / ### Outcome / ### Scope / ### Constraints sub-headers where the discussion gives signal for them; omit a sub-header rather than inventing content. Do not fabricate anything not actually discussed.## Plan and no ## Tests — both are to-plan's job; run to-plan later to add them (Tests when Testing Policy warrants)..task/spec/ holds a spec the discussion clearly relies on, add a Spec: <slug> header line for each (ASCII, above ---) so the executing session reads it as a fixed anchor. Only reference specs actually relevant — never invent one, and never write the spec file here (that is to-spec's job).Write .task/task/<slug>.md directly (creating .task/task/ if needed) — no in-chat draft, no confirmation prompt. The chat discussion was the review; the written file is the deliverable, and the Step 3 digest lets the user judge whether to open it. (The Step 2.1 slug-collision guard still runs before this write.) No Roadmap: / Source item: lines in this mode; include a Spec: line per relevant spec, or none:
# {Short task title}
Spec: {spec-slug} (one line per relevant spec; omit entirely if none)
---
## Description
{drafted body}
## Execution
{the canonical `## Execution` block, stamped verbatim — byte-for-byte identical
to the blockquote in Step 1a's template above; do not paraphrase it}
Validate the written file: bash "${CLAUDE_PLUGIN_ROOT}/skills/validate/validate.sh" task <slug> — surface any WARN/ERROR in Step 3's digest.
Print the structural digest of what was written (convention (b)) as message text — enough for the user to judge at a glance whether to open the file, without re-reading a full draft:
Wrote `.task/task/<slug>.md`
# {Title}
Sections: Description, Execution
Captured:
- {the why, one line}
- {the what / scope, one line}
validate: {OK — 0 errors, N warning(s) | the FAIL lines}
The file is already written — to change anything, just say so. Then close with the handoff footer (convention (a), flag-free), naming the path explicitly:
→ Next: implement it now, deepen it into a plan with \/task:to-plan`, or in a fresh session run: `implement .task/task/.md``
## Plan section — that's to-plan's contract.## Tests section — also to-plan's contract; to-task captures the Description only.CLAUDE.md + top-level manifests (Tier C-equivalent) — this skill captures discussion, it doesn't investigate implementation.- [x] happens inside the executing session (or the roadmap-to-workflow driver), never here.# [TASK-ID] Title) — v3's title line is plain # <Title>; the slug lives only in the filename..task/task/<slug>.md — surface the collision and let the user choose..task/spec/<slug>.md file — referencing a spec via a Spec: header is fine, but authoring specs is to-spec's job.