with one click
pebbles
// Issue tracking and workflow with pebbles (pb). Use when managing tasks, epics, dependencies, planning work, or prioritizing issues.
// Issue tracking and workflow with pebbles (pb). Use when managing tasks, epics, dependencies, planning work, or prioritizing issues.
| name | pebbles |
| description | Issue tracking and workflow with pebbles (pb). Use when managing tasks, epics, dependencies, planning work, or prioritizing issues. |
| user-invocable | false |
Pebbles (pb) is a minimal, git-native issue tracker with an append-only event log. Issues live in .pebbles/ in your repo. No daemon, no server — just a CLI and a SQLite cache.
pb help # Full CLI documentation
pb list # List open/in_progress issues (default)
pb list --all # Include closed issues
pb list --status closed # Filter by specific status
pb ready # Issues with no open blockers
pb show <id> # Full issue details
pb create --title="..." --type=task # Create an issue
pb update <id> --status in_progress # Update status
pb update <id> --title "New title" # Update title
pb close <id> # Close an issue
pb comment <id> --body "..." # Add a comment
pb dep add <A> <B> # A depends on B (B blocks A)
pb dep tree <id> # Visualize dependency tree
pb sync # Commit pebbles events to git
pb log # Show the event log
Environment: Set PEBBLES_DIR to override the default .pebbles directory. Useful in worktrees where you want to reference the main repo's pebbles data.
open, in_progress, closedtask, bug, feature, epicpb ready to see actionable issuespb update <id> --status in_progresspb close <id>git push (pebbles state is tracked by git)When working on complex features that require planning:
pb update <subtask-id> --parent=<epic-id> for structural relationshipspb dep add <task-a> <task-b> for execution order (A waits for B)Key distinction:
--parent: Structural ("this task belongs to this epic")pb dep add: Execution order ("this task must wait for that task")Epics are issues of type epic that group related work. Their children are individual tasks.
Dependency direction: pb dep add A B means "A depends on B" (B blocks A).
# Create an epic and its subtasks
pb create --title="User Auth" --type=epic --description="..."
pb create --title="Add OAuth2 endpoint" --type=task --description="..."
pb create --title="Add session management" --type=task --description="..."
# Set parent relationships
pb update <task1-id> --parent=<epic-id>
pb update <task2-id> --parent=<epic-id>
# Set execution order (session mgmt needs OAuth2 first)
pb dep add <task2-id> <task1-id>
Correct pattern for epic dependencies:
# ✅ Epic depends on its subtasks (epic blocked until subtasks done)
pb dep add <epic-id> <subtask-id>
# ❌ Don't make subtasks depend on the epic (they'll never show in pb ready)
Always commit .pebbles/events.jsonl as part of your workflow. This is the source of truth.
pb sync # Stages and commits pebbles events
# or manually:
git add .pebbles/
git commit -m "pb: create issues for auth epic"
Commit pebbles changes: