
Beads Viewer
- 55 installs
- 14 repo stars
- Updated March 2, 2026
- oakoss/agent-skills
Helps with ai & agent building tasks during AI-assisted development.
About
beads-viewer is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- beads-viewer
- AI & Agent Building
- AI-coding skill
Beads Viewer by the numbers
- 55 all-time installs (skills.sh)
- +3 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #6,765 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/oakoss/agent-skills --skill beads-viewerAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 55 |
|---|---|
| repo stars | ★ 14 |
| Last updated | March 2, 2026 |
| Repository | oakoss/agent-skills ↗ |
What it does
Helps with ai & agent building tasks during AI-assisted development.
Files
Beads Viewer
Overview
Beads Viewer (BV) is a graph-aware triage engine for Beads projects (.beads/beads.jsonl). It computes 9 graph metrics, generates execution plans, and provides deterministic recommendations.
When to use: Triaging beads tasks, analyzing dependency graphs, finding bottlenecks, detecting circular dependencies, planning parallel execution tracks, generating sprint burndown data, comparing historical project states.
When NOT to use: Parsing raw beads.jsonl directly (BV pre-computes graph metrics), simple bead CRUD operations (use bd CLI instead), projects without .beads/beads.jsonl.
| Capability | Raw beads.jsonl | BV Robot Mode |
|---|---|---|
| Query | "List all issues" | "List the top 5 bottlenecks blocking the release" |
| Context Cost | High (linear with issue count) | Low (fixed summary struct) |
| Graph Logic | Agent must compute | Pre-computed (PageRank, betweenness, cycles) |
| Safety | Agent might miss cycles | Cycles explicitly flagged |
Quick Reference
| Command | Purpose | Key Points |
|---|---|---|
bv --robot-triage | Full triage with recommendations | Start here; includes quick_wins and blockers |
bv --robot-next | Single top pick with claim command | Minimal context cost |
bv --robot-plan | Parallel execution tracks | Faster than --robot-insights |
bv --robot-insights | Full graph metrics (all 9) | Check status field; expensive |
bv --robot-priority | Priority misalignment detection | Flags misprioritzed items |
bv --robot-alerts | Stale issues, blocking cascades | Proactive health checks |
bv --robot-suggest | Hygiene: duplicates, missing deps | Includes cycle break suggestions |
bv --robot-graph | Dependency graph export | JSON, DOT, or Mermaid format |
bv --recipe <name> --robot-<cmd> | Pre-filter before any robot command | Recipes: actionable, high-impact, bottlenecks |
bv --robot-triage --label <name> | Scope to label subgraph | Reduces noise for focused analysis |
CRITICAL: Never run bare bv from an agent session. It launches an interactive TUI that blocks the session. Always use --robot-* flags.
The 9 Graph Metrics
| Metric | What It Measures | Key Insight |
|---|---|---|
| PageRank | Recursive dependency importance | Foundational blockers |
| Betweenness | Shortest-path traffic | Bottlenecks and bridges |
| HITS | Hub/Authority duality | Epics vs utilities |
| Critical Path | Longest dependency chain | Keystones with zero slack |
| Eigenvector | Influence via neighbors | Strategic dependencies |
| Degree | Direct connection counts | Immediate blockers/blocked |
| Density | Edge-to-node ratio | Project coupling health |
| Cycles | Circular dependencies | Structural errors (must fix!) |
| Topo Sort | Valid execution order | Work queue foundation |
Metrics compute in two phases: Phase 1 (degree, topo sort, density) is instant; Phase 2 (PageRank, betweenness, HITS, eigenvector, cycles) has a 500ms timeout. Always check the status field in output.
Built-in Recipes
| Recipe | Purpose |
|---|---|
default | All open issues sorted by priority |
actionable | Ready to work (no blockers) |
high-impact | Top PageRank scores |
blocked | Waiting on dependencies |
stale | Open but untouched for 30+ days |
triage | Sorted by computed triage score |
quick-wins | Easy P2/P3 items with no blockers |
bottlenecks | High betweenness nodes |
Robot Output Structure
All robot JSON output includes these standard fields:
| Field | Purpose |
|---|---|
data_hash | Fingerprint of beads.jsonl for verifying consistency |
status | Per-metric state: computed, approx, timeout, or skipped |
as_of / as_of_commit | Present when using --as-of for time travel queries |
Key output sections by command:
- --robot-triage:
quick_ref,recommendations,quick_wins,blockers_to_clear,project_health,commands - --robot-insights:
bottlenecks,keystones,influencers,hubs,authorities,cycles,clusterDensity - --robot-plan:
plan.tracks(parallel work streams),plan.summary.highest_impact
Common Mistakes
| Mistake | Correct Pattern |
|---|---|
Running bare bv from an agent session | Always use --robot-* flags; bare bv launches an interactive TUI that blocks the agent |
Ignoring the status field in robot output | Always check per-metric status; large graphs may have approx or skipped metrics due to 500ms timeout |
Using --robot-insights when only the next task is needed | Use --robot-next for a single top pick or --robot-triage for quick recommendations; insights is expensive |
| Not checking for cycles before starting implementation | Run bv --robot-insights and check .cycles first; circular dependencies are structural errors that must be resolved |
| Parsing stderr as JSON data | Only stdout contains JSON; diagnostics and warnings go to stderr |
| Stale metrics after bead changes | Check data_hash field; results are cached by beads.jsonl fingerprint |
| Wrong recommendations for current work | Use --recipe actionable to filter to only unblocked, ready-to-work items |
Delegation
- Analyze project dependency health and bottlenecks: Use
Taskagent to run BV robot commands and summarize graph metrics - Plan sprint work from triage output: Use
Planagent to interpret triage recommendations and build execution tracks - Search for related beads context: Use
Exploreagent to investigate bead descriptions and find implementation patterns
References
- Robot commands, output structures, and jq patterns
- Graph metrics, two-phase analysis, and metric recipes
- Agent workflows, TUI views, integrations, and time travel
Graph Metrics
The 9 Graph Metrics
BV computes these metrics to surface hidden project dynamics:
| Metric | What It Measures | Key Insight |
|---|---|---|
| PageRank | Recursive dependency importance | Foundational blockers |
| Betweenness | Shortest-path traffic | Bottlenecks and bridges |
| HITS | Hub/Authority duality | Epics vs utilities |
| Critical Path | Longest dependency chain | Keystones with zero slack |
| Eigenvector | Influence via neighbors | Strategic dependencies |
| Degree | Direct connection counts | Immediate blockers/blocked |
| Density | Edge-to-node ratio | Project coupling health |
| Cycles | Circular dependencies | Structural errors (must fix!) |
| Topo Sort | Valid execution order | Work queue foundation |
Two-Phase Analysis
BV uses async computation with timeouts:
- Phase 1 (instant): degree, topo sort, density
- Phase 2 (500ms timeout): PageRank, betweenness, HITS, eigenvector, cycles
Always check the status field in output. For large graphs (>500 nodes), some metrics may be approx or skipped.
Status Field Values
| Status | Meaning |
|---|---|
computed | Full precision result |
approx | Approximation due to graph size |
timeout | Exceeded 500ms budget, result unavailable |
skipped | Metric not applicable (e.g., cycles in a DAG) |
Performance Characteristics
- Phase 1 metrics (degree, topo, density): instant for any graph size
- Phase 2 metrics (PageRank, betweenness, etc.): 500ms timeout budget
- Results cached by
data_hashfingerprint of beads.jsonl - Prefer
--robot-planover--robot-insightswhen speed matters
Interpreting Metrics
Finding Bottlenecks
High betweenness centrality indicates beads that sit on many shortest paths between other beads. Completing these first maximizes unblocking impact.
bv --robot-insights | jq '.bottlenecks[:5]'Finding Foundational Work
High PageRank scores indicate beads with deep recursive dependency chains. These are the foundational pieces many other tasks ultimately depend on.
bv --recipe high-impact --robot-triageDetecting Structural Problems
Cycles are circular dependencies that make execution order impossible to determine. These must be resolved before planning work.
bv --robot-insights | jq '.cycles'Understanding Project Coupling
Cluster density measures the edge-to-node ratio. High density suggests tight coupling; low density suggests independent work streams.
bv --robot-insights | jq '.clusterDensity'Hub vs Authority Analysis
HITS distinguishes between hubs (epics that depend on many tasks) and authorities (utility tasks that many items depend on). Use this to identify strategic epics and critical shared work.
bv --robot-insights | jq '{ hubs: .hubs[:3], authorities: .authorities[:3] }'Label Health Assessment
Per-label health scoring identifies which project areas need attention:
bv --robot-label-health | jq '.results.labels[] | select(.health_level == "critical")'
bv --robot-label-attention | jq '.results[:5]'Robot Commands
Triage and Planning
bv --robot-triage # Full triage: recommendations, quick_wins, blockers_to_clear
bv --robot-next # Single top pick with claim command
bv --robot-plan # Parallel execution tracks with unblocks lists
bv --robot-priority # Priority misalignment detectionGraph Analysis
bv --robot-insights # Full metrics: PageRank, betweenness, HITS, cycles, etc.
bv --robot-label-health # Per-label health: healthy|warning|critical
bv --robot-label-flow # Cross-label dependency flow matrix
bv --robot-label-attention # Attention-ranked labelsHistory and Changes
bv --robot-history # Bead-to-commit correlations
bv --robot-diff --diff-since <ref> # Changes since refOther Commands
bv --robot-burndown <sprint> # Sprint burndown, scope changes
bv --robot-forecast <id|all> # ETA predictions
bv --robot-alerts # Stale issues, blocking cascades
bv --robot-suggest # Hygiene: duplicates, missing deps, cycle breaks
bv --robot-graph # Dependency graph export (JSON, DOT, Mermaid)
bv --export-graph <file.html> # Self-contained interactive HTML visualizationScoping and Filtering
bv --robot-plan --label backend # Scope to label's subgraph
bv --robot-insights --as-of HEAD~30 # Historical point-in-time
bv --recipe actionable --robot-plan # Pre-filter: ready to work
bv --recipe high-impact --robot-triage # Pre-filter: top PageRank
bv --robot-triage --robot-triage-by-track # Group by parallel work streams
bv --robot-triage --robot-triage-by-label # Group by domainBuilt-in Recipes
| Recipe | Purpose |
|---|---|
default | All open issues sorted by priority |
actionable | Ready to work (no blockers) |
high-impact | Top PageRank scores |
blocked | Waiting on dependencies |
stale | Open but untouched for 30+ days |
triage | Sorted by computed triage score |
quick-wins | Easy P2/P3 items with no blockers |
bottlenecks | High betweenness nodes |
Graph Export Formats
bv --robot-graph # JSON (default)
bv --robot-graph --graph-format=dot # Graphviz DOT
bv --robot-graph --graph-format=mermaid # Mermaid diagram
bv --robot-graph --graph-root=bd-123 --graph-depth=3 # Subgraph
bv --export-graph report.html # Interactive HTMLRobot Output Structure
All robot JSON includes:
data_hash-- Fingerprint of beads.jsonl (verify consistency)status-- Per-metric state:computed|approx|timeout|skippedas_of/as_of_commit-- Present when using--as-of
--robot-triage Output
{
"quick_ref": { "open": 45, "blocked": 12, "top_picks": ["..."] },
"recommendations": [
{
"id": "bd-123",
"score": 0.85,
"reason": "Unblocks 5 tasks",
"unblock_info": {}
}
],
"quick_wins": ["..."],
"blockers_to_clear": ["..."],
"project_health": { "distributions": {}, "graph_metrics": {} },
"commands": { "claim": "bd claim bd-123", "view": "bv --bead bd-123" }
}--robot-insights Output
{
"bottlenecks": [{ "id": "bd-123", "value": 0.45 }],
"keystones": [{ "id": "bd-456", "value": 12.0 }],
"influencers": ["..."],
"hubs": ["..."],
"authorities": ["..."],
"cycles": [["bd-A", "bd-B", "bd-A"]],
"clusterDensity": 0.045,
"status": { "pagerank": "computed", "betweenness": "computed" }
}jq Quick Reference
bv --robot-triage | jq '.quick_ref' # At-a-glance summary
bv --robot-triage | jq '.recommendations[0]' # Top recommendation
bv --robot-plan | jq '.plan.summary.highest_impact' # Best unblock target
bv --robot-insights | jq '.status' # Check metric readiness
bv --robot-insights | jq '.cycles' # Circular deps (must fix!)
bv --robot-label-health | jq '.results.labels[] | select(.health_level == "critical")'Workflows
Agent Workflow Pattern
The standard agent workflow for using BV to find and claim work:
# 1. Start with triage
TRIAGE=$(bv --robot-triage)
NEXT_TASK=$(echo "$TRIAGE" | jq -r '.recommendations[0].id')
# 2. Check for cycles first (structural errors)
CYCLES=$(bv --robot-insights | jq '.cycles')
if [ "$CYCLES" != "[]" ]; then
echo "Fix cycles first: $CYCLES"
fi
# 3. Claim the task
bd claim "$NEXT_TASK"
# 4. Work on it...
# 5. Close when done
bd close "$NEXT_TASK"Focused Workflow with Recipes
# Only show actionable (unblocked) work
bv --recipe actionable --robot-triage | jq '.recommendations[:3]'
# Find quick wins for momentum
bv --recipe quick-wins --robot-triage | jq '.quick_wins'
# Find and resolve bottlenecks first
bv --recipe bottlenecks --robot-triage | jq '.blockers_to_clear'Parallel Execution Planning
# Get parallel tracks for team coordination
bv --robot-plan | jq '.plan.tracks'
# Find the single highest-impact unblock
bv --robot-plan | jq '.plan.summary.highest_impact'Integration with bd CLI
BV reads from .beads/beads.jsonl created by the bd CLI:
bd init # Initialize beads in project
bd create "Task title" # Create a bead
bd list # List beads
bd ready # Show actionable beads
bd claim bd-123 # Claim a bead
bd close bd-123 # Close a beadBV provides the analytical layer on top of the data bd manages. Use bd for CRUD operations and bv for graph-aware analysis and triage.
Integration with Agent Mail
Use bead IDs as thread IDs for multi-agent coordination:
file_reservation_paths(..., reason="bd-123")
send_message(..., thread_id="bd-123", subject="[bd-123] Starting...")This creates a traceable link between task tracking and agent communication.
Time Travel
Compare current project state against historical snapshots:
bv --as-of HEAD~10 # 10 commits ago
bv --as-of v1.0.0 # At tag
bv --as-of "2024-01-15" # At date
bv --robot-diff --diff-since HEAD~30 # Changes in last 30 commitsTime travel applies to all robot commands. Combine with --robot-insights to track metric trends over time.
TUI Views (for Humans)
When running bv interactively (not for agents):
| Key | View |
|---|---|
l | List view (default) |
b | Kanban board |
g | Graph view (dependency DAG) |
E | Tree view (parent-child hierarchy) |
i | Insights dashboard (6-panel metrics) |
h | History view (bead-to-commit correlation) |
a | Actionable plan (parallel tracks) |
f | Flow matrix (cross-label dependencies) |
] | Attention view (label priority ranking) |
Agents must never launch the TUI. These views are documented here for completeness when human users reference them.