基于 SOC 职业分类
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/blockscout/frontend --skill to-tickets命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | to-tickets |
| description | Break a product-task spec into a set of tracer-bullet tickets, each declaring its blocking edges. |
| disable-model-invocation | true |
Break a spec into a set of tickets: tracer-bullet vertical slices, each declaring the tickets that block it. Its input is the spec and open questions.
The ticket model is defined in ../../tasks/concepts.md. Layout and file ownership
are in ../../tasks/structure.md. This skill carries the steps only.
Feasibility is the forcing function. Every gap you hit here — a requirement the spec never pinned, an executor question the spec can't answer — is a gap that spec should have closed. Ask the developer to fill it and note it, rather than guessing.
Resolve the task folder from the issue number or the branch (issue-<number>), and read its spec.md,
questions.md and .agents/delegation.md.
If you have not already explored the codebase, do so to understand the current state of the code. Ticket titles and descriptions should use the project's domain glossary vocabulary, and respect CONTEXT.md in the area you're touching.
Look for opportunities to prefactor the code to make the implementation easier. "Make the change easy, then make the easy change."
Break the work into tracer bullet tickets.
Give each ticket its Blocked by edges — the blockers that must clear before it can start, each prefixed by
kind: T<NN> for a ticket that must complete first, Q<NN> for an open question that must be answered
first. A ticket with no blockers can start immediately.
Defer what can't be scoped. A ticket blocked on a prototype, a spike, or an answer nobody has yet gets a brief.md and no spec.md; a later to-tickets run scopes it — writing its spec.md, or a fresh brief.md if it still can't be scoped.
Present the proposed breakdown as a numbered list. For each ticket, show:
Ask the user:
Iterate until the user approves the breakdown.
For every [agent] leaf that runs a project skill (add-new-page, add-api-resource, add-env-var, …),
open that skill and run its user-facing interview now, against the spec — from the skill's current text,
not from memory of its questions (e.g. add-new-page Step 0). Record the answers in the ticket's Skill
inputs section, grouped by skill. Where the spec answers a question, take the answer from it and move on;
where it has a genuine gap, ask the developer. This is what lets the later implement-ticket run go
uninterrupted.
Per approved ticket, write tickets/NN-<slug>/spec.md from ticket-template.md — What
to build, Acceptance criteria (tagging (human) per the ticket model), the Skill inputs from Step 5, the
Leaf worklist with each leaf tagged [agent] / [human] per .agents/delegation.md, and the header's
Blocked by edges (T<NN> / Q<NN>). A ticket that can't be scoped gets a brief.md instead — its goal,
the known context, and the blocking unknowns with their owners.
Create (or append to) progress.md from progress-template.md — one checkbox line
per ticket. When scoping a deferred ticket, append its siblings and retarget the Blocked by edges that
pointed at the deferred one; never renumber, never nest.
Declare new API resource(s) in an existing API service. Use whenever the app needs to call an endpoint that has no `service:name` resource yet.
Scaffold a new page (index / detail / general) and optionally wire it to API data. Use when adding any new route to the app, or when wiring API data into an already-scaffolded page (one with `TODO (api-data):` markers).
Step-by-step checklist for adding a new NEXT_PUBLIC_* environment variable. Use when introducing any new runtime env var.