brief-spec
Skill4 starsChanged 4 months agoMITView on GitHub
Use when the user wants to capture a feature as a brief or spec before planning it -- "arma un brief para esto", "necesito un spec antes de planear", "definamos el alcance de la feature", "write a brief for this", "spec this out before we plan it".
In this repository42 other files it gives its agents.
- agent-contract-handoffSkill
- agent-creationSkill
- agent-protocolSkill
- agent-responseSkill
- blog-writingSkill
- cli-loginSkill
- code-reviewSkill
- code-standardsSkill
- command-executionSkill
- deck-builderSkill
- dispatchSkill
- executionSkill
- fast-queriesSkill
- gaia-auditSkill
- gaia-checkSkill
- gaia-patternsSkill
- gaia-plannerSkill
- gaia-releaseSkill
- gaia-researchSkill
- gaia-verifySkill
- ghostwritingSkill
- git-conventionsSkill
- gmail-policySkill
- gmail-triageSkill
- gws-setupSkill
- human-registerSkill
- investigationSkill
- memorySkill
- orchestrator-present-approvalSkill
- pending-approvalsSkill
- remindersSkill
- security-tiersSkill
- session-channelsSkill
- session-reflectionSkill
- skill-creationSkill
- subagent-request-approvalSkill
- technical-explanationSkill
- technical-writingSkill
- ticket-writingSkill
- verification-oracleSkill
- verification-rubricSkill
- visual-verifySkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 106
Confirm: Run gaia brief show <slug>, read it back, ask "Does this capture what you want?", and when confirmed dispatch gaia-planner.
- Very specific: line 155
Approve by activating: After the audit and the user checkpoint, run gaia plan set-status <slug> active: active is what approved means.
≈ “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
Brief Spec
Brief Spec is how the orchestrator turns what it agreed with the user into a brief: an objective, observable acceptance criteria, the decisions taken, and the boundaries, ready for gaia-planner. The brief is the contract the plan is audited against, so the orchestrator owns its content and owns checking the plan that comes back.
The database is the brief
A brief is a row in briefs plus its child rows (acceptance_criteria,
brief_decisions, milestones), written and read only through gaia brief.
What gaia brief show prints is a rendering of those rows: nothing on disk is
authoritative and there is no file to write. Code or docs that still describe
.claude/project-context/briefs/ are legacy -- flag them in
cross_layer_impacts instead of editing them as a side effect.
Execution follows authority. The orchestrator co-creates the brief and may
use its trusted Gaia CLI lane for bounded reads and user-confirmed
new/headless edit/set-status/AC/decision writes. gaia-operator remains
the alternative for batching or operational separation. Destructive deletion is
outside the direct lane. The orchestrator owns the questions, confirmation,
and content whichever executor carries the command.
Cuando llegas aquí
El orquestador cargó esta skill porque la conversación entró en Cerrar: el usuario y él acordaron varias cosas y es momento de materializarlas. No estás aquí porque la petición superó un umbral de tamaño, sino porque hay acuerdos que capturar.
- Resumir los acuerdos que ya emergieron -- no re-descubrirlos desde cero.
- Preguntar sólo lo que falte para que cada AC sea observable, o dejarlo marcado como pendiente de aclarar.
- Materializar el brief con
gaia brief new --headlessy presentarlo al usuario para validar.
Process
- Ask only for the gaps, never the obvious, one question per round via AskUserQuestion: surface type (ui, api, job, cli); the problem it solves; the constraints that matter; for each AC, what an agent would observe when it holds and what symptom would show it failing silently; what is explicitly out of scope. For substantial work the gaps include the hard parts the user may not have considered, and once, at capture, offer the goal the feature serves beyond itself. Stop when every AC is observable or explicitly marked unresolved (step 4).
Create the brief:
gaia brief new --headless --title="<human title>" --status=draft \ --surface-type=<ui|api|job|cli> --objective="<1-3 sentences>" \ --context="<project constraints>" --approach="<high-level strategy>" \ --out-of-scope="<explicit non-goals>"The slug is derived from the title.
draftis the review window; move it toopenonly when the user is ready to plan against it.Add each acceptance criterion as an observation:
gaia brief ac add <slug> --id=AC-1 --description="<what an agent observes>"An AC says what is true and visible when the work is done, precisely enough to disagree with ("p95 under 200ms on /search", not "fast"), and visible to an agent: a state it reads, an output it runs, a page it drives. An AC only the user can observe is the exception, written as theirs with its reason -- a judgment of taste, or a check they asked to make -- because it becomes a gate the user judges (
gaia-plannerstep 5). It does not prescribe the proof: which test, command or rubric shows it is the planner's proposal, authored as gates. Fixing a mechanism here, before anyone has read the code, turns a guess into a requirement. Set--evidence-type/--evidence-shapeonly when the user asked to see the result a particular way ("a screenshot of the dashboard"). Evidence itself is recorded during execution withgaia evidence add, never as a path declared in advance.- Mark what is not settled. Where the user has not decided something the
plan depends on, write
FALTA ACLARAR: <question>into the field it affects (the AC description, the objective, the approach). The planner does not plan past such a mark: it returnsNEEDS_INPUTwith the list, and planning resumes once the answer replaces the mark (gaia brief ac editorgaia brief edit --headless).gaia brief verifyreports every field and AC still carrying the mark (unresolved_clarification, advisory like its other checks); it matches the literal text, so spell it exactly. Record decisions in their own field:
gaia brief decision add <slug> --text="<the decision>" --rationale="<why>" \ [--supersedes=<id>]A decision that changes an earlier one names it with
--supersedes, sogaia brief showlists the current answer apart from the one it replaced. Appending a new paragraph toapproachinstead leaves two answers to the same question with nothing saying which one holds.- Confirm. Run
gaia brief show <slug>, read it back, ask "Does this capture what you want?", and when confirmed dispatch gaia-planner.
Maintaining a brief
| Need | Command |
| Patch one field | gaia brief edit <name> --headless --field=<objective|context|approach|out_of_scope|description|title|surface_type> --content="..." |
| Edit an AC in place | gaia brief ac edit <name> --id=AC-1 --description="..." |
| Change status | gaia brief set-status <name> <status> (draft -> {open, closed, archived} -- the last two are the shortcut for a brief small enough to skip planning -- then open -> in-progress -> closed -> {archived, open}; archived is terminal; illegal transitions are refused) |
| Read | gaia brief list, gaia brief show <name> [--json], gaia brief search <query>, gaia brief decision list <name> |
| Delete | dispatch gaia-operator for gaia brief delete <name> --yes (cascades to ACs, plan, tasks; no undo) -- prefer archived |
The interactive gaia brief edit <name> opens $EDITOR and needs a human at a
terminal; dispatch only the headless form. Editing an AC's description marks
stale the gate verdicts of the tasks that cover it: they stop counting until a
verifier confirms them again.
Evidence
The evidence table accepts exactly five types (gaia evidence add --type):
text, file, command_output, url, screenshot. Evidence is positive by
default; --negative records a refutation and never accepts an AC; --gate
<id> ties it to the gate that produced it. An AC is done only when every task
covering it is done and it has at least one positive evidence row
(gaia/briefs/store.py::derive_brief_state), which is why an AC with no
reachable observation cannot close.
After the brief -- you own the plan
The brief settles whether the work is worth doing; the planner does not re-open that. It owes you what you need to audit its plan: feasibility findings, assumptions, risks, the 3-5 decisions that shape the plan with their alternatives and the AC motivating each, the ordering rationale, each task's gates, and the checklist of what depends on third parties. Require those in the dispatch -- a plan you cannot audit is one you cannot own. Escalate to the user only what is genuinely new or blocking; never re-ask what the brief settled.
Judge that each gate proves its task's intent. Well-formedness is checked
for you (gaia brief verify: a task without gates, an empty shape, an AC no
task covers). What no check can judge is fit: a command gate on a design
judgment, a semantic rubric on something a test could decide, a code gate
with no failing run before the change. Flag a mismatch back to the planner
rather than accept it.
Before dispatching, run gaia brief verify <slug>. It is the cheap
coverage check: an uncovered_ac means some AC has no task that could ever
make it done.
Approve by activating. After the audit and the user checkpoint, run
gaia plan set-status <slug> active: active is what approved means. Dispatch
only tasks of an active, unpaused plan whose brief is clear of FALTA ACLARAR
marks in the fields and ACs those tasks rest on -- gaia brief verify lists
them as unresolved_clarification, and a mark written after activation holds
the tasks that cover it until the answer replaces it. Until then send corrections
back to the planner, who edits the draft directly.
Changing an approved plan goes through the planner. Request it with the
justification (gaia plan change request <slug> --reason="..."); the planner
proposes which tasks the change touches and why; review the proposal
(gaia plan change list <slug>) and approve it (gaia plan change approve),
taking it to the user first when it changes what is delivered. Verified tasks
the change does not touch stay as they are, and a task already in flight
receives the change at its next dispatch (dispatch principle 8). To stop
dispatch without changing the plan, gaia plan pause <slug> --reason="...",
then gaia plan resume.
Anti-Patterns
- Prescribing the proof in the AC -- the brief is written before anyone reads the code; a mechanism fixed there binds the plan to a guess. State the observation and let the planner propose the gate.
- Planning past a
FALTA ACLARARmark -- the plan inherits the guess and every task built on it. Resolve it with the user first. - Burying a changed decision in
approach-- the old and new answers both survive with nothing saying which holds. Usebrief decision add --supersedes. - Skipping
--status=draft-- creating directly inopenbypasses the window where the user confirms the ACs. - Accepting a plan you cannot audit, or a gate that misses its task's intent -- you own the result either way; require the audit inputs and send mismatches back.
- Re-asking what the brief settled -- escalate only what the plan surfaced as new or blocking.
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.

