skills/absolute-spec/SKILL.md
Lightweight standalone design spec for AI coding agents: codebase scan → bounded clarify pass (3–5 questions, not a grill) → reviewed design doc written to docs/plans/ → independent scored review → stop. No task board, no build. Use when you want a spec to discuss, hand off, or review before committing to implementation. Chains into absolute-work when ready to build. Triggers on "absolute spec", "write a spec", "spec out this feature", "draft a design doc", "I want a spec to hand off / review, don't build it yet".
npx skillsauth add absolutelyskilled/absolutelyskilled absolute-specInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Start your first response with the 📋 emoji.
Absolute Spec turns a fuzzy intent into a reviewed design-spec document — then
stops. It is the planning artifact of work, lifted out of the full lifecycle: scan
the codebase, ask only the questions the code can't answer, write the spec, run an
independent scored review, and hand back a doc you can discuss, hand off, or feed into
/absolute work to build.
It is deliberately lightweight. No relentless interview, no task board, no decompose, no execution. One deliverable: a spec good enough that an unfamiliar developer could build from it.
Use spec when:
Do NOT use spec when:
/absolute work (spec is its
Phase 2, followed by decompose + safe-wave execution)./absolute docs (reference/explanation docs, not a forward design).The line vs work: spec produces a doc and stops; work produces a doc and then
builds it. If you're unsure whether you'll build it now, start with spec — you can
chain into work afterward and it will pick the spec up.
work runs. Batching questions is fine.absolute-work's references/spec-writing.md. This command is the thin flow around them.SCAN ─→ CLARIFY ─→ WRITE ─→ REVIEW ─→ HANDOFF
No hard gates between steps (that's work). The one checkpoint is the clarify pass —
ask, get answers, then proceed straight through to a reviewed spec.
Ground the spec in reality before asking anything.
.absolute.config.json or
~/.absolute/config.json exists (from /absolute init), resolve the effective config
(project file → global projects["<cwd>"] → global defaults) and use its conventions,
detecting only what's missing. No config → soft-suggest init and run work's Codebase
Convention Detection table (package manager, language/runtime, test runner, linter, build
system, directory conventions; see absolute-work's SKILL.md under Codebase Convention
Detection). The spec must speak the project's real stack, scripts, and paths.docs/ (README first), root README.md,
CLAUDE.md, CONTRIBUTING.md, docs/plans/ (overlapping/related designs), recent
commits (last 10–20), package manifests, and the directories the feature touches.Detect the work type (feature / refactor / greenfield / migration) only enough to
shape the spec — spec does not run the full per-type question banks.
Ask only the questions the codebase genuinely cannot answer — the preference and
scope forks. Cap at 3–5 questions; batching is allowed (one AskUserQuestion call
with multiple questions where available).
Good questions to ask (when code can't answer them):
Do NOT ask: anything a config, manifest, test file, or existing pattern already states. When the code answers it, say so in the spec instead of asking.
If the user said "no questions, just draft it" — skip to WRITE and capture every guess
in an ## Open Questions / assumptions section instead.
Write the spec to <specDir>/YYYY-MM-DD-<topic>-design.md (<topic> = short kebab-case
slug). <specDir> is preferences.specDir from config when present, else docs/plans.
Use the template, section-scaling rules, writing style, and Decision Log format
from absolute-work's references/spec-writing.md — that file is the single source of truth;
do not restate it here, load it. In particular:
Dispatch a separate reviewer subagent — the agent that wrote the spec does not grade
it (generator ≠ evaluator). Use the rubric and reviewer prompt template verbatim from
absolute-work's references/spec-writing.md (Scored Spec Review Protocol): graded on
Completeness, Consistency, Clarity, Scope, Testability (1–5 each, weighted).
| Weighted Score | Verdict | Action | |---|---|---| | 4.0 – 5.0 | Approved | Proceed to HANDOFF | | 3.0 – 3.9 | Needs Work | Fix the flagged issues, re-dispatch (max 3 iterations) | | < 3.0 | Major Gaps | Surface to the user immediately; do not silently iterate |
Reviewer approval is necessary but not the end — the user still has the final say at HANDOFF.
/absolute work, which will pick up the spec at
its decompose phase rather than re-running intake. Make this an explicit, optional
next step.git commit — suggest a message if asked;
the user commits.work. If you start decomposing into tasks or writing code, you've
left spec. Stop at the reviewed doc.spec-writing.md. Load it; don't copy the template/rubric in here —
two copies drift.work's interview. Tighten.Respond terse like smart caveman. All technical substance stay. Only fluff die. Drop articles, filler, pleasantries, hedging. Fragments OK. Technical terms exact. Code blocks and quoted errors unchanged. Drop caveman for security warnings, irreversible-action confirmations, and any multi-step sequence where fragment order risks misread; resume after. Spec prose itself is written normally (it's a deliverable, not chat).
Sibling commands in this skill chain naturally around spec:
/absolute work — build what the spec describes (picks the spec up at decompose)./absolute ui — design the interface for a feature the spec defines./absolute docs — once it's built and shipped, document it for readers.Suggest them where relevant; they're always available (same skill, no extra install).
development
Use when the user wants to simplify, clean up, refactor, tidy, or refine code — their staged/unstaged git changes or a target file/path. Reduces complexity, flattens nesting, removes redundancy and dead code, scores each change by value (holding low-value churn), then runs tests to prove nothing broke. Invoke on: "simplify", "simplify this", "simplify my code/changes", "clean up", "clean this up", "clean up my changes", "refactor this", "make this cleaner", "tidy this up", "reduce complexity", "flatten this", "remove dead code", "make it more readable", "polish before commit", or "absolute simplify". Acts on your working diff; for repo-wide dead code use absolute-prune; for lint/type debt use absolute-debt.
testing
Dependency upgrades: outdated/vulnerable deps planned into semver waves (patch/minor batched, majors gated and changelog-read), applied incrementally with lockfiles regenerated and tests green after each. Runs on green main. Triggers on "absolute upgrade", "upgrade our dependencies", "bump deps", "update packages", "move off the deprecated X", "clear the Dependabot backlog".
tools
Dead code and dependency cleanup, repo-wide: unused deps, unreferenced exports, unreachable code, orphaned files — removed only with tool evidence, in reversible waves. Runs on green main. For diff-scoped cleanup use absolute-simplify. Triggers on "absolute prune", "remove dead code", "find unused deps/exports", "what can we delete", "clean up orphaned files".
documentation
One-time setup for absolute: interview how you want it to behave (output style, autonomy, TDD strictness, spec dir, families) + detect the stack once, then write `.absolute.config.json` (project, committed) and `~/.absolute/config.json` (user defaults + per-project overrides). Every other absolute-* command reads it instead of re-detecting; non-blocking — commands proceed without it and soft-recommend it. Triggers on "absolute init", "set up absolute", "initialize absolute", "configure absolute", "first-time setup", "remember my conventions for this repo".