Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Brief Spec

ASecurity

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".

4 stars
0 votes
0 copies
0 views
Added 9/23/2026
ai-agentsrustgobashapidatabase

Works with

terminalcliapi

Security Analysis

A100/100

Scanned 9/25/2026

$npx -y skills add metraton/gaia --skill brief-spec --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Brief Spec?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Brief Spec
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/metraton-brief-spec/badge)](https://www.skillsdirectory.com/skills/metraton-brief-spec)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: brief-spec
description: 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".
---

# 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.

1. Resumir los acuerdos que ya emergieron -- no re-descubrirlos desde cero.
2. Preguntar sólo lo que falte para que cada AC sea observable, o dejarlo
   marcado como pendiente de aclarar.
3. Materializar el brief con `gaia brief new --headless` y presentarlo al
   usuario para validar.

## Process

1. **Ask only for the gaps**, one question per round via AskUserQuestion:
   surface type (ui, api, job, cli); the problem it solves; the constraints that
   matter; for each AC, what the user would see when it holds and what symptom
   would show it failing silently; what is explicitly out of scope. Stop when
   every AC is observable or explicitly marked unresolved (step 4).

2. **Create the brief:**

   ```bash
   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. `draft` is the review window; move it
   to `open` only when the user is ready to plan against it.

3. **Add each acceptance criterion as an observation:**

   ```bash
   gaia brief ac add <slug> --id=AC-1 --description="<what the user 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"). 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-shape` only when the user asked to see the result a particular
   way ("a screenshot of the dashboard"). Evidence itself is recorded during
   execution with `gaia evidence add`, never as a path declared in advance.

4. **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 returns `NEEDS_INPUT` with the list, and planning
   resumes once the answer replaces the mark (`gaia brief ac edit` or
   `gaia brief edit --headless`). `gaia brief verify` reports every field
   and AC still carrying the mark (`unresolved_clarification`, advisory like
   its other checks); it matches the literal text, so spell it exactly.

5. **Record decisions in their own field:**

   ```bash
   gaia brief decision add <slug> --text="<the decision>" --rationale="<why>" \
     [--supersedes=<id>]
   ```

   A decision that changes an earlier one names it with `--supersedes`, so
   `gaia brief show` lists the current answer apart from the one it replaced.
   Appending a new paragraph to `approach` instead leaves two answers to the
   same question with nothing saying which one holds.

6. **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; 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. 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 ACLARAR` mark** -- 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. Use `brief decision add
  --supersedes`.
- **Skipping `--status=draft`** -- creating directly in `open` bypasses 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.

Attribution

metratonmetraton
View sourceSee grades on GitHubMore from metraton →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".

1100021 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

698621 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3421 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Amp, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Grok Build, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

741 votes
View all in ai-agents →