Quiver is a development lifecycle plugin for AI coding CLIs. Purpose-built skills for brainstorming, planning, execution, debugging, code review, and session handover, plus specialized agents for review and debugging. Every step leaves evidence on disk (a spec, a plan, a ledger, a report, a handover), and nothing is called done without it.
- Typical workflow
- Installation
- Components
- What Do I Use?
- Hooks
- Agents
- External Dependencies
- CLI Notes
- Uninstall
- Contributing
- License
A normal feature cycle chains these skills. Each one is self-contained and works on its own. Skip steps, reorder them, or use just the ones you need. If you hit a bug at any point, run /hypothesis-debugging to investigate it systematically.
/brainstorm: turn a vague idea into a validated spec by walking through clarifying questions and trade-off analysis on 2-3 design approaches./plan: research the codebase in parallel, then break the chosen approach into verifiable step-by-step tasks with exact file paths./work: execute the plan with continuous testing, branch setup, and incremental commits. Plans of 3+ tasks run as parallel subagents in separate worktrees./commit: generate a Conventional Commits message from staged changes and commit (optionally pushing)./create-pr: open a GitHub pull request with an auto-generated title and description from the branch diff./review: dispatch review agents to check code quality, security, and architecture, then synthesize findings into one report. Runs 5 agents by default;--deepfor the full pipeline./handover: save an 8-section summary of the session so the next session resumes with full context.
Claude Code and the Codex CLI have their own plugin managers. Cursor reads Claude Code's directory. OpenCode has none, so Quiver installs there from a clone. Once it is installed, /brainstorm works in any session; per-CLI differences are in CLI Notes.
/plugin marketplace add yagizdo/quiver
/plugin install quiver@quiver
codex plugin marketplace add yagizdo/quiver
codex plugin add quiver@quiver
Cursor reads Claude Code's plugin directory, so a Claude Code install already covers it. Run Developer: Reload Window and the skills are there.
Without one, import the repo from Cursor's Plugins panel:
https://github.com/yagizdo/quiver.git
Importing on top of a Claude Code install leaves two copies on separate update schedules, so do not do both.
git clone https://github.com/yagizdo/quiver.git
cd quiver
./install.shThe script symlinks Quiver into every runtime it detects, and prints the install command for the ones that have their own plugin manager. After that, git pull in the clone updates every linked runtime. OpenCode details: .opencode/README.md
| Component | Count |
|---|---|
| Hooks | 3 |
| Skills | 24 |
| Agents | 20 |
| Situation | Command | What happens |
|---|---|---|
| I have a vague idea, not sure where to start | /brainstorm |
Walks through clarifying questions, compares 2-3 approaches, outputs a validated spec |
| Scope is clear, need a step-by-step breakdown | /plan |
Researches codebase in parallel, produces a task-by-task plan with file paths |
| Plan is ready, want hands-off execution | /work |
1-2 tasks run sequentially in your session; 3+ tasks run as parallel subagents in separate git worktrees. Progress lives in a ledger on disk that survives compaction, so re-running /work on the same plan resumes where it stopped |
| Want a quick second opinion on an approach | /advise |
Gives a senior-style inline review -- no spec or plan artifact |
A plan with 3+ tasks is split into execution groups by dependency and file overlap. Each group's tasks are dispatched together, one subagent per task, each in its own git worktree so parallel tasks never edit the same checkout. When a group finishes, its branches merge into the working branch before the next group starts, so later tasks build on what earlier ones landed. A merge conflict stops the run and names the files; nothing is resolved automatically.
State lives in .claude/work/<plan-name>/:
progress.mdis the ledger. Every dispatch, completion, and merge is appended there as it happens, so the run can be read back after compaction or a crash. Re-running/workon the same plan skips completed tasks and merges any branch that finished but never landed.task-<N>-brief.mdcarries one task's requirements out of the plan. The subagent reads that file instead of receiving the whole plan in its prompt.task-<N>-report.mdis where the subagent writes its full account. The orchestrator opens it only when a task is blocked or failed, or when the final test run points at that task; a task that succeeded returns one status line and its report is never loaded into your session.
After the last group merges, the resolved test command runs once on the combined result. A successful run offers to delete the workspace; a blocked, failed, or cancelled run keeps it, because the surviving ledger is what makes the retry cheap.
| Situation | Command | What happens |
|---|---|---|
| I want to build a project from a description without touching it myself | /ship |
Deep planning Q&A (outcomes, scope, stack, verification), then autonomous loop: code + test + review + fix until done. Manifest at docs/ship/<project>-manifest.md |
| Situation | Command | What happens |
|---|---|---|
| A Figma frame is ready to become code | /design |
Reads the selected nodes through the figma-bridge MCP, maps Figma variables onto the project's own theme tokens, and writes a self-contained plan to .claude/plans/ |
| Want the frame built without babysitting it | /design --auto |
Same extraction and same questions, then straight through the build with no further prompt |
| Design plan is ready, want it built pixel-accurate | /design-build |
Implements each node against its embedded spec, gating every task on the project's build or tests under a bounded retry budget |
/design # extract whatever is selected in Figma
/design 4029:12345 # extract a specific node by ID
/design --auto # extract, then build without stopping
/design --auto --no-commit # same, and write no commit whatever the plan says
/design-build # pick a design plan and build it
--auto removes the handoff between the two stages, not the questions that decide what gets built.
/designstill asks which file, which nodes, what an unmapped variable resolves to, how the build should commit and verify, and whether to overwrite a plan that already exists for the same screen. When a selection expands into many nodes and you described none of them, it also asks which of those nodes the build should implement.- Those questions all arrive in one call. After that the run stays quiet until the build summary.
- One task still gets three attempts at its verification gate. Auto mode records a gate that is still failing and moves on rather than asking.
--no-commit forces commit_strategy: none for a single run.
- On a fresh plan it changes nothing. Not committing is already the recommended answer to
/design's commit question, so the flag guarantees that answer rather than overriding it. - It earns its keep against an existing plan that carries
per-taskorsingle, because/design-buildnever re-asks that question. - The override lasts one run and never edits the plan.
- The two flags are independent.
/design-build <plan> --no-commitis as valid as/design --auto --no-commit.
/design is the only stage that talks to Figma.
- The plan carries every measurement, token, and layout anchor
/designproduced, so/design-buildruns with Figma disconnected. - The plan keeps its per-node measurement specs and its reference screenshots. Nothing in Quiver measures the built UI against them, so
/design-buildreports fidelity asskipped -- no verifierand the numbers stay there for whatever does the measuring. - Setup is in External Dependencies.
| Situation | Command | What happens |
|---|---|---|
| About to merge, want multi-agent review | /review |
Dispatches 5 review agents, synthesizes findings into one report |
| Want a quick senior dev sanity check | /senior-review |
One pragmatic reviewer evaluates structure, quality, risks |
| Got a review report, not sure which findings matter | /report-check |
Audits the report for noise, false positives, and overkill |
/review # fast review (5 agents, prompts for base branch)
/review --deep # full pipeline: all agents + quality check + senior review
/review --base main # review against a specific base branch
/review <PR-URL> # review a pull request by URL
Pass --comment-pr to post the report as a PR comment. Use --deep --with-codex for cross-model coverage (requires codex CLI).
Re-review detection: if you run /review again on the same branch after fixing issues, it automatically detects the previous report and switches to re-review mode.
| Situation | Command | What happens |
|---|---|---|
| Bug won't go away after multiple attempts | /hypothesis-debugging |
Generates hypotheses, tests each systematically, traces root cause, proposes reviewed fix |
| Situation | Command | What happens |
|---|---|---|
| Changes ready to commit | /commit |
Generates a Conventional Commits message, commits, optionally pushes |
| Branch ready for PR | /create-pr |
Creates a GitHub pull request with auto-generated title and description |
| Situation | Command | What happens |
|---|---|---|
| Ending a work session | /handover |
Saves an 8-section summary so the next session resumes with full context |
| Starting a new session | /load-handover |
Loads the most recent handover and highlights top priorities |
| Last handover is stale or wrong | /handover --clear |
Shows and deletes the most recent handover file with confirmation |
| Want a clean slate | /handover --clear-all |
Lists all handover files, confirms, then deletes everything |
| Situation | Command | What happens |
|---|---|---|
| A skill is broken or outdated | /repair-skill |
Diagnoses the skill's structure and fixes API references |
| Need a new agent for the project | /create-agent |
Scaffolds a new agent interactively from a description |
| Want an AGENTS.md for the project | /create-agents-md |
Analyzes project context and generates an operational checklist |
| Hook | Event | Description |
|---|---|---|
pre-tool-use-guard |
PreToolUse | Classifies every Bash command before it runs -- refuses the handful that are irreversible, prompts on the destructive-but-recoverable ones, stays silent otherwise |
pre-compact-handover |
PreCompact | Summarizes the conversation and saves a handover before the CLI compacts context |
session-start-auto-dispatch |
SessionStart | Reads every skill's when-to-use and emits a routing block so intent matches invoke the right skill |
The handover hook keeps the 3 most recent handovers in
.claude/handovers/and prunes older ones automatically. Filenames are timestamps, so sort order is lexicographic.
Review, research, and debug agents run with the Edit, Write, NotebookEdit,
WebSearch, and WebFetch tools denied -- they are built to read your code and
report findings, not to change it. Bash stays enabled because these agents need
git diff, git log, and git blame, so the denial is a guardrail against
accidental edits rather than a sandbox: a shell command can still write a file or
reach the network. Two agents carry a narrower denylist: best-practices-researcher
keeps web access so it can check library versions against upstream release notes,
and codex-code-reviewer can write because it persists the raw output of the
external reviewer it wraps.
| Agent | What it catches |
|---|---|
architecture-strategist (quiver:architecture-strategist) |
Code that violates the project's own conventions and module boundaries |
logic-reviewer (quiver:logic-reviewer) |
Branches where inputs don't reach the documented output correctly |
waste-detector (quiver:waste-detector) |
Dead code, redundant utilities, unnecessary abstractions |
stress-tester (quiver:stress-tester) |
Failure scenarios: inputs, timings, and states that break the new code |
security-audit (quiver:security-audit) |
Concrete exploit paths for web, API, and mobile surfaces |
test-reviewer (quiver:test-reviewer) |
Tests that pass without proving the code works |
developer-experience-auditor (quiver:developer-experience-auditor) |
Confusing error messages, hidden debugging paths, brittle UX for humans and agents |
codex-code-reviewer (quiver:codex-code-reviewer) |
Cross-model code review via the OpenAI Codex CLI; dispatched only when --with-codex is passed and the codex CLI is installed. Uses whatever model your local codex is configured for: Quiver does not override --model |
report-checker (quiver:report-checker) |
Independent quality auditor for review reports -- detects noise, false positives, overkill, and findings that exist to appear thorough |
senior-reviewer (quiver:senior-reviewer) |
Language-aware senior developer review -- evaluates code through a pragmatic team lead lens with optional meta-review of other agents' findings in the pipeline |
| Agent | What it catches |
|---|---|
best-practices-researcher (quiver:best-practices-researcher) |
Deprecated APIs and outdated patterns versus current library docs |
project-context-analyst (quiver:project-context-analyst) |
Prior decisions, past bugs, and churn patterns in this area of the codebase |
code-locator (quiver:code-locator) |
Fast file:line locations for "where is X / what calls Y" without heavy mapping |
code-navigator (quiver:code-navigator) |
CodeGraph-first codebase explorer that maps files, symbols, and patterns relevant to a task |
| Agent | What it does |
|---|---|
code-tracer (quiver:code-tracer) |
Traces execution paths across files to find where behavior diverges from expectation |
log-analyzer (quiver:log-analyzer) |
Parses log dumps and stack traces to extract error patterns and map them to source code |
regression-finder (quiver:regression-finder) |
Analyzes git history to find which commit introduced a bug |
environment-checker (quiver:environment-checker) |
Checks dependency versions, config files, and environment setup for mismatches |
fix-reviewer (quiver:fix-reviewer) |
Reviews every proposed fix for overengineering, workarounds, and architectural consistency |
| Agent | What it does |
|---|---|
plan-reviewer (quiver:plan-reviewer) |
Reviews implementation plans for logical coherence, dependency ordering, coverage completeness, and spec alignment |
This plugin includes a Context7 MCP server for real-time library documentation lookups. It starts automatically when the plugin is enabled (configured in plugin.json under mcpServers). No authentication required.
Tools provided:
resolve-library-id: Find library ID for a framework/packagequery-docs: Get documentation for a specific library
Supports 100+ frameworks including Rails, React, Next.js, Vue, Django, Laravel, and more. Library/framework names from your codebase are sent to the service only during review agent execution (e.g., best-practices checks), not at plugin load time.
/design reads Figma through the figma-mcp-bridge MCP server. It is not bundled in plugin.json -- the bridge also needs a Figma plugin installed by hand, so auto-starting the server alone would only get you halfway.
Add the server to your MCP config:
{
"figma-bridge": {
"command": "npx",
"args": ["-y", "@gethopp/figma-mcp-bridge"]
}
}The Figma plugin side is a manual import from the bridge's releases page, and its README carries the current steps. Leave the plugin running inside the file you are reading -- it holds the WebSocket, and closing it drops the connection mid-extraction.
/design only calls the bridge's read tools. /design-build never calls it at all. Every other Quiver skill works without it.
Every CLI runs the same skills and the same agents, and /review fans out to 5 agents by default on all of them, or the full pipeline with --deep.
- Cursor discovers skills by scanning a fixed set of roots:
~/.cursor/skills/,~/.cursor/skills-cursor/,~/.cursor/cloud-skills/,~/.cursor/plugins/,~/.claude/skills/,~/.claude/plugins/,~/.codex/skills/,~/.agents/skills/. A Claude Code install lands in~/.claude/plugins/, so Cursor picks it up. A Codex install lands in~/.codex/plugins/, which is not on that list. - Two installs give you two copies on separate update schedules, and nothing warns you when you are reading the old one. Keep the Claude Code install and let Cursor read it.
install.shhas no Cursor target, because a symlink under~/.cursor/plugins/local/is not picked up. On Cursor 3.17.21, disabling the Claude Code install made Quiver disappear from Cursor while that symlink was still in place, andcursor.plugins.installedIdsstayed empty the whole time. Use Cursor's own plugin import.- The
cursor-agentCLI does not load plugin skills (IDE-only). Use Cursor IDE for skill-using workflows. WebFetchandWebSearchare unsupported on Cursor; the included context7 MCP covers documentation lookups.- If handover auto-save does not fire after install, Cursor's
preCompactevent may use a different JSON field name than Claude Code. Edit.cursor/hooks.jsonto log raw stdin to a file, trigger context compaction, and inspect the log for the actual field names.
- Codex uses the bundled default
PreCompacthook inhooks/hooks.jsonfor automatic handover auto-save before automatic compaction. If Codex prompts for hook review, open/hooksand trust the Quiver hook;/handoveralso works manually. AskUserQuestionis polyfilled as numbered text prompts: reply with the option number.- Agent dispatch uses
spawn_agent(worker)with the agent's persona prompt read fromagents/.
- Installing from an earlier release put a git-backed
quiverentry in thepluginarray of youropencode.json. That entry no longer resolves: delete it, then run./install.sh. - The plugin registers the skills directory and the context7 MCP server itself, so you do not need an
mcporskillsentry of your own. - Skills do not appear in the
/autocomplete menu, because OpenCode's TUI filters out anything withsource: "skill". Typing/brainstormstill runs it.
On Claude Code:
claude plugin uninstall quiver
On the Codex CLI:
codex plugin remove quiver@quiver
On OpenCode, from the clone:
./install.sh --uninstallThat removes only the symlinks that resolve into the clone, and reports anything it declined to remove.
Bug fix: open a PR. New skill, agent, or hook, or a behaviour change: open an issue first. Setup, tests, and PR expectations are in CONTRIBUTING.md.
This project is licensed under the MIT License - see the LICENSE file for details.