Frequently asked questions about Shape CLI.
Shape is a local-first, git-backed task management tool designed for software teams and AI agents. It organizes work around "briefs" (documents like epics, PRDs, RFCs) with dependent tasks and AI-optimized context export.
Both are git-backed task trackers for AI agents. Key differences:
| Aspect | Shape | Beads |
|---|---|---|
| Core abstraction | Briefs → Tasks | Issues only |
| Document storage | Markdown | JSONL |
| Methodology support | Pluggable (ShapeUp, RFC, etc.) | Generic |
| Mental model | Documents drive work | Flat task list |
Shape is better if your workflow starts with documents (pitches, RFCs, PRDs). Beads is leaner if you just want task tracking.
- Local-first — Data lives in your repo, not a vendor's cloud
- Git-backed — Version control, branching, merging built-in
- AI-optimized — Context export designed for minimal tokens
- Pluggable — Sync with external tools, don't replace them (including Linear/Jira/GitHub Issues)
Shape can sync with these tools while keeping your source of truth local.
Yes. Shape is open source under the MIT license.
- macOS (Apple Silicon and Intel)
- Linux (x64, ARM64, musl)
- Windows (x64)
Same as installation:
cargo install shape-cli # Cargo
brew upgrade shape-cli # Homebrew
npm update -g shape-cli # npm
pip install -U shape-cli # pip
gem update shape-cli # gemYes. Use npm, pip, gem, Homebrew, or download pre-built binaries from GitHub Releases.
A brief is a document that drives work — the "why" behind your tasks. It can be:
- An Epic (Agile/Scrum)
- A PRD (Product teams)
- An RFC (Engineering)
- An ADR (Architecture)
- A Pitch (ShapeUp)
Briefs are stored as markdown files you can edit directly.
No. You can create standalone tasks:
shape task add "Fix typo in README"Standalone tasks work without any brief.
Yes. Standalone tasks are created when you omit the brief ID:
shape task add "Quick fix" # No brief ID = standaloneCurrently, you'd need to:
- Create the brief
- Recreate tasks under that brief
- Delete standalone tasks
A migration command is planned for future releases.
shape ready— Lists all unblocked tasksshape next— Suggests the single best task to work on (considering priority, age, dependencies)
# Task 2 depends on Task 1
shape task dep b-7f2a3b1.2 b-7f2a3b1.1This means:
- Task 2 won't appear in
shape readyuntil Task 1 is done - Task 2 will appear in
shape blocked
No. Shape detects cycles and rejects them:
shape task dep b-7f2a3b1.1 b-7f2a3b1.2
# Error: Would create dependency cycle| Type | Flag | Affects ready queue? |
|---|---|---|
| Blocks | --blocks (default) |
Yes |
| Provenance | --from |
No |
| Related | --related |
No |
| Duplicates | --duplicates |
No |
Only blocks dependencies affect which tasks are ready.
- Claude Code (via CLAUDE.md)
- Cursor (via .cursorrules)
- Windsurf (via .windsurfrules)
- Any MCP-compatible client (via MCP server)
- Any tool that can run shell commands
shape agent-setup --claudeOr manually add Shape instructions to CLAUDE.md.
MCP (Model Context Protocol) is a standard for AI tools to interact with external services. Shape's MCP server lets AI agents call Shape commands natively without shell access.
shape context --compactThis exports minimal context (< 2000 tokens for typical projects).
For long-running projects:
shape compact --days 7This summarizes tasks older than 7 days.
Yes. Use claims to coordinate:
shape claim b-7f2a3b1.1 --agent claude
# Other agents see this task as claimedThe second claim fails unless --force is used:
shape claim b-7f2a3b1.1 --force --reason "Taking over"shape handoff b-7f2a3b1.1 "Need frontend expertise" --to cursorIn .shape/ in your project directory:
briefs/*.md— Brief markdown filestasks.jsonl— Task dataconfig.toml— Configuration
No. Shape is local-first. All data stays in your repository.
Yes. Briefs are markdown files — edit them in any text editor.
For tasks, use CLI commands. Direct editing of tasks.jsonl is possible but not recommended.
Commit to git:
git add .shape/
git commit -m "Backup shape data"Shape includes a merge driver for tasks.jsonl:
shape merge-setupThis enables automatic conflict resolution using last-write-wins.
Built-in brief types:
minimal— Basic briefshapeup— ShapeUp pitch template
Sync plugins are community-developed. Check the repository for available plugins.
See Plugins. Plugins communicate via JSON over stdin/stdout, so you can use any language.
The sync plugin interface exists, but first-party plugins are in development. Community contributions welcome!
Check:
- Are tasks blocked by dependencies? (
shape blocked) - Are tasks already done? (
shape task list) - Are tasks claimed? (
shape task show <id>)
Rebuild the cache:
shape cache buildDelete and rebuild:
rm .shape/briefs/index.jsonl
shape brief listSet up the merge driver:
shape merge-setupThen retry the merge.
Another process is writing. Wait and retry. If persistent, check for stuck processes:
shape daemon stop # If daemon is runningGitHub Issues: https://github.com/shape-cli/shape/issues
GitHub Discussions: https://github.com/shape-cli/shape/discussions
See CONTRIBUTING.md for development setup and guidelines.