{
  "markdown": "# spec-first\n\nWrite the requirements before you write the code. Spec First gives you a workflow with three steps. First, define what to build. Then implement it from the spec. Last, generate the documentation. All steps run in your terminal.\n\n## Who is this for\n\nGive an agent a vague prompt, and the agent decides the requirements for you. You find out what it\ndecided when you read the diff. A wrong decision then costs you the whole change.\n\nSpec First puts the requirements in a file first. You read that file and correct it. The agent\nbuilds from the file you approved.\n\nUse Spec First if you want your coding agent to build from clear requirements.\n\n## Quick Start\n\nOn Claude Code, add the marketplace. Then install the plugin:\n\n```bash\nclaude plugin marketplace add bitcraft-apps/spec-first\nclaude plugin install sf@spec-first\n```\n\nOn another host, install the skills with `./scripts/install.sh`. The [host\ntable](#supported-hosts) below gives the command for each host.\n\nNew to Spec First? [Getting Started](docs/getting-started.md) walks through your first spec.\n\n## How it works\n\nEach command gives the same steps and the same checks to every host.\n\n- **You approve the requirements first.** `/sf:spec` writes `.sf/spec.md`. You read that file and\n  correct it before the agent writes code.\n- **The implement step copies a pattern from your repo.** It finds the closest existing example\n  and follows it. It does not invent a structure.\n- **The checks are gates.** A script fails when the spec misses a section, or when an acceptance\n  criterion stays unchecked. On Claude Code a hook blocks the turn. On another host the skill\n  stops the agent from reporting the work as done.\n- **Claude Code runs workflow steps.** `/sf:spec` and `/sf:document` run as workflow scripts.\n  Every other host does the same steps in order.\n\nThe spec stays on your machine. [Team Workflow](docs/team-workflow.md) shows how a team shares it\nthrough the ticket.\n\n## Token Usage\n\nThe table shows the typical range for each phase. The example is a small CLI tool with approximately 500 lines.\n\n| Phase | Input tokens | Output tokens |\n|-------|-------------|---------------|\n| spec | 10k–30k | 2k–6k |\n| implement | 30k–120k | 5k–30k |\n| document | 20k–60k | 3k–10k |\n\nBy default, `/sf:spec` uses one schema-checked research call and one synthesis call. Set the\nworkflow input `parallelResearch: true` to use separate scope, criteria, and risk calls in\nparallel.\n\nYour token counts change with the size of the codebase, the complexity of the feature, and the number of iterations. For current prices, see [Claude pricing](https://www.anthropic.com/pricing).\n\n## Command Reference\n\n| Command | Purpose |\n|---------|---------|\n| `/sf:spec [REQUIREMENTS]` | Define what to build and why |\n| `/sf:implement [--isolate] [SPEC_OR_PATH]` | Build the minimal working solution |\n| `/sf:document [PATHS]` | Generate documentation for the change |\n\n## Supported hosts\n\n| Host | Install | What runs |\n|------|---------|-----------|\n| [Claude Code](https://docs.anthropic.com/en/docs/claude-code) — reads `~/.claude/skills` | `claude plugin install sf@spec-first` | The three commands, workflow subagents, and validation hooks |\n| Hosts that read `.agents/skills`: pi, opencode, Codex CLI, GitHub Copilot CLI, Gemini CLI, Cursor, Zed, Amp, Goose, Crush, Kilo Code, Warp, Factory Droid, OpenHands | `./scripts/install.sh` | The three commands in order. The skills call the validation scripts, so the same checks run. |\n| Hosts that read their own directory: Cline (`~/.cline/skills`), Qwen Code (`~/.qwen/skills`), iFlow CLI (`~/.iflow/skills`) | `./scripts/install.sh --dir <that directory>` | Same as above |\n| Any other host with a skills directory | `./scripts/install.sh --dir <dir>` | Same as above |\n\n[Supported hosts](docs/supported-hosts.md) gives the directory each host reads, the documentation it\ncame from, and the version it was read at. A host not listed there: check its skill documentation\nfor the directory it reads, then pass that with `--dir`.\n",
  "bytes": 4037,
  "sha": "bd85e2dbb624d5a5efb6c3ac1b307b18789fad3d51c09d1c359d200850576397",
  "repo_slug": "bitcraft-apps/spec-first",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_bitcraft_apps_spec_first_spec_first_d1d3a004/readme"
}