task-spec
Skill0 starsChanged 5 months agoApache-2.0View on GitHub
Use BEFORE executing, automating, or delegating any task whose definition of "done" is vague, underspecified, or high-stakes — i.e. whenever success isn't yet objectively judgeable. Turns a fuzzy request into a structured, verifiable task specification (TaskSpec): extract the goal/inputs/constraints/evidence, score how judgeable the definition is across 8 dimensions, ask ONLY the few high-impact clarifying questions (and stop once it converges, not endlessly), compile success criteria into per-criterion checks with evidence, and grade each risky action so a human reviews it before commit. Trigger this even when the user doesn't say "TaskSpec" — any "build/automate/write/analyze X for me" where the bar for success is unstated, or any agent/workflow you're about to set running, qualifies. Do NOT use it for tasks that are already crisply defined and low-stakes (a one-line lookup, a mechanical edit).
3 other projects use a version of this.
Adopted by
Most recently taken up by
- hammoda711/task-spec-skilltheir own version, first seen Nov 8, 2026
- eyeix/skillstheir own version, first seen Oct 13, 2026
- YorkWong1995/OPC-Harnesstheir own version, first seen May 26, 2026
Other versions3 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 3
- YorkWong1995/OPC-Harness★ 4same name
- eyeix/skills★ 1same name
- hammoda711/task-spec-skill★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repositoryOne other file it gives its agents.
- CLAUDE.mdCLAUDE.md
The file
We split this skill into the rules it gives an agent
10 rules. About 0 are common, 6 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 46
Read the request and any supplied material, then extract a structured profile.
- Distinctive: line 59
If the request is rich, this is extraction.
- Distinctive: line 129
When you stop with gaps still open (round cap hit, or no progress),
- Distinctive: line 149
Grade each action by risk: before committing or finalizing.
- Very specific: line 168
Default deliverable: a TaskSpec in YAML (English keys, values in the user's language.
- Distinctive: line 190
Keep the spec to the sections that carry weight for *this* task — a minimal judgeable spec beats an exhaustive one nobody reads.
- Very specific: line 222
Before you mark a spec as published/ready — or hand it off as done — run this self-check.
- Distinctive: line 236
Any prioritization needs a computable rubric: If the goal/criteria use ranking or weighting language (优先级 / 加权 / 权重 / 打分 / 评分 / 排序 / 分级, or …
- Very specific: line 247
已发布/ published requires real readiness: no unresolved placeholders in the *definition body* (administrative meta like owner/version … - Very specific: line 262
When a deterministic engine is available (the taskspec-engine MCP server, which wraps the same checks), route the mechanical steps through …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
task-spec — define the task before you do it
Why this exists
Most task failures are not execution failures — they are definition failures. An agent (or a person) that starts work before "done" is judgeable will produce something plausible that nobody can confirm is correct, and the gap only surfaces after the work is wasted. This skill front-loads that risk: it makes you turn a fuzzy request into a TaskSpec — a definition concrete enough that both a machine and a reviewer can tell whether the result is acceptable — before any real work begins.
The payoff is not bureaucracy. A good TaskSpec is the cheapest possible place to catch "we were aiming at the wrong thing," and it gives the downstream work a target function, an evidence standard, and clear human-review points.
The full data structure has 13 sections (see references/taskspec-schema.md).
You rarely need all of them. The spine below — goal, inputs, constraints,
evidence, success criteria, human-review points — is what makes a task judgeable.
The four moves
Work through these in order. Each move has a concrete output; don't skip to execution until move 4 says the definition is judgeable (or a human has signed off on what's still ambiguous).
Move 1 — Profile the task
Read the request and any supplied material, then extract a structured profile. Surface what's there AND what's missing — the gaps are the whole point.
Produce these seven elements (omit one only if genuinely N/A):
- task_type — what kind of task this is (analysis / writing / decision / review / automation …)
- primary_goal — the single core objective, stated so it could be checked
- required & missing inputs — what's needed to do this reliably, and what's not yet supplied
- evidence_requirements — which conclusions must be traceable to a source
- constraints / boundary — hard limits that must not be crossed (compliance, authority, scope)
- risk_points — where this could go wrong or do harm
- suggested_output_structure — the shape of the deliverable
If the request is rich, this is extraction. If it's a one-liner, this is mostly missing_inputs and risk_points — and that's a signal the definition is thin.
Move 2 — Score how judgeable the definition is
A definition is "judgeable" when an independent party could look at the result and the spec and agree on whether the task succeeded. Check the goal against these 8 dimensions — each is a yes/no with a reason:
| Dimension | The question it answers |
| specific | Is the core goal concrete, not vague ("high quality", "do it well", "improve")? And is it a single focused goal, not 3+ bundled ones? |
| measurable | Are there success criteria you could check against a rule or evidence — not just subjective impressions? |
| done | Is there a stated condition for "this is complete"? |
| failure | Is there a stated condition for "stop / escalate" — what counts as failure or a stop-loss? |
| time | Is there a delivery deadline and/or an execution budget (steps / time / cost ceiling for an agent)? |
| boundary | Is there an absolute limit that must never be crossed (authority, permission, compliance)? |
| evidence | Are key conclusions required to be traceable to a source? |
| consistency | Do the goal, constraints, and outputs not contradict each other? |
These deliberately adapt SMART for agent work: classic SMART stops at "measurable," but an agent also needs to know when it's done, when to stop, what it may never do, and what must be backed by evidence. Those four are where vague tasks quietly go wrong.
A rough clarity read = fraction of dimensions that pass. Anything below ~85% means the definition isn't ready to execute on its own.
Move 3 — Clarify only what matters, then converge
For each dimension that failed, you could ask the user a question. Don't ask all of them. Interrogating someone with a 10-question form is its own failure mode — it pushes the cognitive load back onto the person this is meant to help.
Rules:
- Ask only high-impact questions — the ones where a different answer would meaningfully change the work. A missing deadline on a low-stakes task isn't worth a round-trip.
- Prefer choices over open prompts where you can offer sensible options.
Stop and wait — don't run ahead on assumptions. This is the part that's easy to get wrong. The temptation, once you've profiled a task, is to pick sensible defaults for every gap and barrel straight through to a finished artifact "to be helpful." Resist it. Separate the gaps by impact:
- Low-impact gap → fill it with a clearly-labeled default and keep going. ("Assuming UTC unless you say otherwise.") The cost of being wrong is small and easily corrected.
- High-impact gap → stop and ask, then wait for a real answer before executing. Do not produce the deliverable on an assumed answer to a high-impact question. A high-impact gap is one where the wrong guess means redoing the work, shipping something harmful, or touching something irreversible (deleting data, sending to customers, spending money, crossing a boundary). For these, "I'll proceed with a reasonable assumption" is exactly the failure this skill exists to prevent — the whole point is to catch the wrong target before the work, not after.
You may absolutely propose a recommended answer alongside the question (it makes the user's reply a quick yes/no rather than an essay). What you may not do is act on that recommendation, for a high-impact gap, without their confirmation.
Clarification is a multi-round loop, not a one-shot form. Each round: ask the high-impact questions, take the user's answers, fold them in, re-score the 8 dimensions, and decide whether to ask again or proceed. Converge — don't loop forever. End the loop when ANY of:
- the definition clears the bar (~85% of dimensions pass), or
- you've done 3 rounds of clarification, or
- a round produced no improvement over the previous one.
When you stop with gaps still open (round cap hit, or no progress), don't pretend they're resolved — list the remaining ambiguities and route them to human review rather than guessing. An honest "these 2 points need a human call" beats a confidently wrong assumption.
This convergence rule is load-bearing: it's what keeps the skill from turning into an endless questionnaire while still refusing to silently paper over real ambiguity — and the stop-and-wait rule is what keeps it from "helpfully" executing on a definition that isn't actually settled yet.
Move 4 — Make success criteria checkable, and grade risk
Compile the success criteria into checks. Each criterion in the spec should become an explicit, per-criterion check that can be judged against the actual deliverable — with evidence (the specific passage / data point that supports the verdict), not just a thumbs-up. A criterion you can't turn into a check is a criterion that's still too vague — send it back to move 2.
Each check yields one of: pass / fail / uncertain.
Grade each action by risk before committing or finalizing. Map every verdict (and every risky step) to one of five dispositions, and act accordingly:
| Disposition | When | What happens |
| pass | check passed, low risk | proceed automatically |
| confirm | uncertain / failed but low-stakes | ask the user to confirm or fill the gap |
| approve | medium-to-high stakes | route to an owner/expert for explicit approval |
| escalate | needs a human judgment call | hand off to a person |
| block | a hard boundary would be crossed | stop; do not proceed |
The report-level disposition is the most severe across all items. And the
finalize gate: you may only finalize/commit once every item that isn't
pass has been explicitly dispositioned by a human (approved or consciously
overridden). This is what keeps "verified" honest — nothing risky ships on a
silent assumption.
Output
Default deliverable: a TaskSpec in YAML (English keys, values in the user's
language; keys come from references/taskspec-schema.md — don't translate keys),
plus:
- the clarity read (which of the 8 dimensions pass, which don't),
- the clarifying questions you're actually asking (only the high-impact ones),
- the compiled checks for the success criteria, and
- the risk grading / finalize-gate status.
The spec must be self-contained. Whoever — or whatever — consumes it may not
have the source material, this conversation, or this skill in front of them. So
inline every load-bearing element; never leave a pointer that resolves to nothing
on the other end. In particular, when you turn a rich source document into a
TaskSpec, do not reference its section numbers (§4, 见 §6 决策表) — pull the
actual data contracts, formulas, checks, and rubrics into the spec as concrete
fields. Likewise never reference earlier conversation ("see above") or this
skill's own Move numbers. A §4 in the output is not shorthand; it is a dangling
pointer that silently drops the content a downstream consumer needs — and it reads
as if the content is present when it isn't, which is exactly the kind of hidden
hole this skill exists to prevent. Internal references within the same spec
(e.g. a field pointing at inputs.missing_inputs) are fine — those resolve.
Keep the spec to the sections that carry weight for this task — a minimal judgeable spec beats an exhaustive one nobody reads. The minimal viable spine:
task_name: <name>
task_type: <kind>
goal:
primary_goal: <single checkable objective>
success_criteria: [<criterion you can check against rule/evidence>, ...]
done_predicate: <what "complete" means>
failure_conditions: <what triggers stop / escalate>
inputs:
required_inputs: [...]
missing_inputs: [...] # the gaps you surfaced
constraints:
permission_boundary: <what must never be crossed>
evidence:
evidence_required: true|false
citation_rules: <which conclusions must be sourced>
human_in_loop:
confirmation_points: [...]
approval_points: [...]
outputs:
output_format: <shape of the deliverable>See references/taskspec-schema.md for the full 13-section structure and field
meanings when a task needs the richer sections (tools, workflow, validators,
learning).
Pre-publish self-check (the gate)
Before you mark a spec as published/ready — or hand it off as done — run this
self-check. These are not "recommended"; they are the bar. The host app enforces
the same four mechanically (lib/validators/spec-gate.ts); this is the portable
version you run yourself.
The governing principle is reward honesty: a draft that openly carries
<待确认> gaps and a non-published status passes — admitting incompleteness
is correct. The strict checks fire only when a spec claims to be ready. The gate
targets specs that look finished but aren't, never specs honest about their holes.
- Required, not optional:
done_predicate/failure_conditions/time_bound. Each must be present. A placeholder value is fine while the status is still a draft; it is not fine in a published spec. (time_boundmay be an explicit "N/A" when the task genuinely has no deadline or budget — but say so, don't omit it.) - Any prioritization needs a computable rubric. If the goal/criteria use ranking or weighting language (优先级 / 加权 / 权重 / 打分 / 评分 / 排序 / 分级, or "prioritize by high-impact / high-value"), there must be a corresponding rule that says how it's computed (a scoring/weighting field, numeric weights, or an explicit ordinal scale like 高/中/低). "Prioritize the important ones" with no definition of "important" is a fail — add the rubric or flag it.
- Don't assert a gap as settled. Nothing listed in
missing_inputsorconfirmation_pointsmay be written elsewhere (e.g.outputs) as if it were already decided. If the data source is "to be confirmed," the output spec can't hard-code "reads from Salesforce." (This one is a judgement call — when unsure, flag for human review rather than auto-failing.) 已发布/ published requires real readiness: no unresolved placeholders in the definition body (administrative meta likeowner/versiondoesn't count), clarity at/above the ~85% bar, and the finalize gate passed (every non-passitem human-dispositioned). If any of these fails, the status stays a draft — you don't get to publish past it.- Self-contained — no dangling references. The spec must carry everything its
consumer needs. No pointers to the source document's sections (
§4,§6), to earlier conversation ("see above / 见上文"), or to this skill's Move numbers — those resolve to nothing for a downstream reader and disguise a hole as a reference. If you're turning a rich source doc into a TaskSpec, inline its data contracts / formulas / checks / rubrics as concrete fields. (Unlike #3, this is deterministic and the host app flags it mechanically inspec-gate.ts.)
Using the deterministic engine (MCP), and why it still doesn't trust you
When a deterministic engine is available (the taskspec-engine MCP server, which
wraps the same checks), route the mechanical steps through its tools instead of
eyeballing them: clarity_score for the 8-dimension read, lint_spec_gate /
find_dangling_refs / find_placeholders for the gate, compile_criteria_checks
for Move 4, and verify_for_acceptance as a pre-flight before you call a spec
ready. The tools are pure and deterministic — same spec in, same verdict out — so
their answer is reproducible, not a vibe.
But understand what actually enforces the bar: not you calling the tool. The
real wall is the consuming side (the app's finalize, a CI check, the asset
registry, any downstream like spec-to-loop) independently re-running these same
checks and rejecting whatever doesn't pass — computing the verdict from the spec's
content, never reading a self-reported field like status or a provenance stamp.
Because the checks are pure functions of the spec, the consumer doesn't need to
trust how the spec was made; it reproduces the verdict itself. So a spec you
hand-edited to say status: 已发布, or one you skipped the gate on, simply won't
be accepted — the only way to get an accepted spec is to produce one that passes.
That's why the tools are worth using: they tell you, before submission, exactly
what the consuming gate will independently re-derive. (This re-verification only
covers the deterministic/structural checks; semantic "is this spec actually right"
stays a model-review + human job and can't be a hard wall.)
Anti-patterns
- Don't run the full process on an already-crisp, low-stakes task. If success is obvious and the blast radius is tiny, just do the task. This skill is for ambiguity and stakes, not ceremony.
- Don't turn clarification into an interrogation. Three rounds, high-impact only, then converge and escalate the rest.
- Don't let "success criteria" stay subjective. "Make it good" is not a criterion. If you can't write the check, the criterion isn't done.
- Don't silently fill high-impact gaps with assumptions, and don't execute past them. Low-impact gaps can take a labeled default; high-impact ones (irreversible, customer-facing, costly, boundary-crossing) require a real answer — stop and wait for it rather than "helpfully" finishing the work on a guess. The whole value is honesty about what's still undefined.
- Don't ship past the finalize gate. Anything not
passneeds a human disposition first.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

