ワンクリックで
openup-create-task-spec
Produce a REASONS-Canvas task spec from a roadmap line or feature description, ready for developer-role consumption
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Produce a REASONS-Canvas task spec from a roadmap line or feature description, ready for developer-role consumption
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
One-command project setup for OpenUP - interactive initialization wizard
Mark a task as complete, update roadmap, commit changes, and prepare traceability logs
Execute an already-claimed lane's Operations boxes with script/judgment classification — script steps run directly with zero self-brief, judgment steps self-brief and execute. Handles only pick/resume; every other resolve path routes to /openup-next.
Run OpenUP Assess Results at iteration end — check evaluation criteria, demo only completed acceptance-tested work, feed discovered work back, and trigger the milestone review at a phase boundary
Run the phase milestone go/no-go — prepare derived evidence, pause for the human decision via an input-request, and record the milestone (never advance the phase itself)
Begin a new OpenUP iteration with proper phase context and task selection
| name | openup-create-task-spec |
| description | Produce a REASONS-Canvas task spec from a roadmap line or feature description, ready for developer-role consumption |
| model | sonnet |
| fit | {"great":["decomposing iteration-plan tasks into executable specs","formalizing ad-hoc work before coding starts"],"ok":["retrofitting specs onto in-progress work that lacks one"],"poor":["trivial doc-only edits (overhead exceeds value)","exploratory spikes"]} |
| arguments | [{"name":"task_id","description":"Task ID (T-XXX). Reserves the next free ID via `openup-claims.py reserve-id` if not provided.","required":false},{"name":"title","description":"One-line task title. Required if task_id is new; reads from roadmap if existing.","required":false},{"name":"source","description":"Where the task comes from: 'roadmap' (default), 'plan' (with plan path), or 'adhoc'.","required":false},{"name":"plan_ref","description":"Path + section to the originating plan, e.g. 'docs/plans/2026-04-28-foo.md#3'","required":false}] |
This skill produces a per-task REASONS Canvas — the executable blueprint a developer-role agent reads verbatim before generating code. It bridges the gap between coarse roadmap lines / use cases and implementation.
Use this skill when:
Do NOT use this skill when:
/openup-quick-task.docs/changes/T-XXX/plan.md — update via this
skill (re-run), do not hand-edit (per the spec-first rule in CLAUDE.openup.md)./openup-plan-feature first.After this skill completes, ALL of these must be true:
docs/changes/T-XXX/plan.md matching the template at
docs-eng-process/templates/task-spec.md.id, title, status, priority, estimate).ready (not proposed) — the rubric grades to all-✅..claude/rubrics/task-spec-rubric.md are ✅.python3 scripts/openup-spec-scenarios.py check docs/changes/T-XXX/plan.md exits 0.docs/roadmap.md references the new task with a status entry.If docs/project-config.yaml exists, apply it before drafting (skip if
absent): inject its context: as <project-context> and its rules.task-spec
as <project-rules>, then confirm every injected rule holds before marking
the artifact complete. Rules are additive — they may add but never waive a
framework criterion. Full mechanism + precedence (the single source):
docs-eng-process/project-config.md.
The skill is a two-round multi-role handoff. Use the token-efficiency protocol
(.claude/CLAUDE.openup.md): one orchestrator, compact handoffs, one specialist
per round.
If task_id is missing, reserve the next free ID through the claims
mechanism — never scan-and-increment yourself (a local scan races with
parallel planning lanes and stale checkouts; that race is what forced the
T-024→T-025…T-030 renumber — T-031):
python3 scripts/openup-claims.py reserve-id --session-id <session> --title "<title>"
The printed T-NNN is yours repo-wide: the reservation lives in the shared
claims dir (visible to every worktree) and the allocator unions live
reservations with the IDs already used in change folders, docs/roadmap.md,
and origin/main's roadmap.
If task_id IS provided (e.g. pre-allocated by /openup-plan-feature), pin
it with the same command plus --task-id T-NNN — it exits 6 if the ID is
already used or reserved by another session; stop and re-reserve without
--task-id in that case.
If planning is abandoned before the spec lands, free the ID:
python3 scripts/openup-claims.py release-id --task-id T-NNN. Once the spec
or roadmap row is committed the reservation is redundant (the allocator also
scans the repo) — releasing it then is optional tidiness, never required.
Read docs/roadmap.md, the originating plan (if plan_ref provided), and the
use case(s) implicated.
Generate path: docs/changes/<task_id>/plan.md; create the docs/changes/<task_id>/
folder if it does not exist.
Copy docs-eng-process/templates/task-spec.md to that path.
Before any role drafts, list the open questions the request leaves unanswered and classify each:
/openup-request-input (related_task = this task ID) and do not draft
the affected sections until it is answered. Guessing here is the exact waste
this gate exists to prevent.**Assumption:** line in the spec's
Analysis Context (state the choice; note it is vetoable at review). Do not
silently bake it into Requirements without naming it.If there are no open questions, say so in one line and proceed. The point is an explicit pass, not invented doubt.
A blocking question silently guessed is rework discovered after code. A non-blocking question silently guessed is a decision no one got to veto. The gate converts both into something the requester can see and correct.
Brief one analyst-role agent and one architect-role agent in compact form (max 6 bullets each). Inputs: roadmap line, plan section, use case excerpt.
Given / When / Then scenario), Behavior Delta, Success Measures,
Entities.Both write directly to the task-spec file under their respective sections. They
do NOT inline rules from conventions.md or the architecture notebook —
references only.
For Behavior Delta, the analyst groups every change to existing Ring-1 product
behavior under Added / Modified / Removed, citing the Ring-1 artifact + section on each
Modified/Removed entry (docs/product/use-cases/UC-3.md §main-flow); a greenfield task
renders n/a — all Added. This list is what /openup-sync-spec consumes to know exactly
which Ring-1 artifacts a behavior change must back-propagate to — so a missing or vague
citation is a real gap, not a formality.
For Success Measures, the analyst writes a ## Success Measures section
containing one falsifiable expectation for the feature:
We expect <measure X> to move by <direction + magnitude Y> within <window Z> of release. Instrumentation: <the event / metric / query that will be read>. Read-back: <date or "Z after release">.
Use impact, engagement, and returned value as prompts to find the right
measure — they are not three required slots; one honest, checkable expectation
beats three vanity metrics. A measure nobody will read back is worse than none:
on the quick track (or for genuinely unmeasurable internal work) write
n/a — <reason> instead, and the reason must survive review. Add the section when drafting;
rubric criterion 12 enforces it. (Both this section and Rollout are authored
additions — the OpenUP-derived template at docs-eng-process/templates/task-spec.md
is read-only and does not carry them.)
For Rollout, the architect writes a ## Rollout section stating how the
change reaches users (KB framing: a feature flag is the modern, cheaper
implementation of OpenUP's Develop Backout Plan deployment task — toggling
off beats redeploying):
docs/project-config.yaml environments: if defined, else
local/production), kill-switch behavior (what turning it off does to
in-flight users/data), and — mandatory — the named flag-removal
follow-up (one line; /openup-complete-task enqueues it into the roadmap,
because a flag is temporary debt, not a permanent switch).n/a — <reason>.Add the section when drafting; rubric criterion 13 enforces it (authored addition — see the note under Success Measures).
For Requirements, the analyst writes each numbered assertion with at least one
acceptance scenario in Given / When / Then form (bold markers **Given** / **When**
/ **Then**, inline or split across lines). The scenario must name a concrete
precondition, action, and observable outcome — drafting it is the test that the
requirement is unambiguous; if a clean scenario can't be written, the requirement is
still too vague. (Exempt on the quick track only.) /openup-assess-completeness
runs scripts/openup-spec-scenarios.py to enforce this deterministically.
Brief one developer-role agent with the partially-filled task spec.
- [ ] <step>,
ordered, 3–8 testable steps). Tag a step - [ ] (role) … only where it hands
off to a different role hat (tester, analyst, …); untagged steps default to
the developer hat. The first unchecked box is what /openup-next reads as
the lane's next_action — so each step must be a concrete, executable action,
not a heading. (Legacy numbered steps still parse but yield no next_action.)Apply the Self-Critique SOP (docs-eng-process/sops/self-critique.md) before
rubric grading: take a hostile-reviewer stance, surface every load-bearing
assumption into the spec, and confirm the Behaviour Delta names what observably
changes and that every acceptance criterion and scenario is failable — not
"review and approve". This precedes (does not replace) the rubric: list every weakness you find,
fix or explicitly flag each one so step 6 grades a stronger spec, then rank
them and record the top one or two with their resolutions.
Run /openup-assess-completeness artifact: task-spec (or apply
.claude/rubrics/task-spec-rubric.md inline). Grade each of 13 criteria. That
skill also runs scripts/openup-spec-scenarios.py check docs/changes/T-XXX/plan.md
— criterion 11 (Scenario Coverage) cannot be ✅ unless the script exits 0 (it is
auto-skipped on the quick track).
status: ready in front-matter.status: proposed, list gaps for revision, loop back to the
responsible role for fixes.Add or update the roadmap row for this task ID with status ready and a link
to the spec file.
Returns:
ready or proposed)| Error | Cause | Solution |
|---|---|---|
| Template not found | Path moved | Verify docs-eng-process/templates/task-spec.md exists |
| Norms section duplicates conventions.md content | Specialist inlined rules | Replace inline text with a path reference |
| Operations step is multi-action | Step bundles "implement X and Y" | Split into separate steps |
| Estimate doesn't match Structure scope | Misjudged size | Either tighten Structure or revise estimate |
docs-eng-process/templates/task-spec.md.claude/rubrics/task-spec-rubric.mddocs/changes/README.md