brainstorming
Structured design dialogue that validates ideas before implementation begins.
bv
Beads Viewer - graph-aware triage engine for Beads issue tracker with 9 graph metrics (PageRank, betweenness, HITS, etc.), dependency-aware planning, and purpose-built robot protocol for AI agents.
Full skill instructions
A high-performance TUI and graph-aware triage engine for the Beads issue tracker. Treats your project as a Directed Acyclic Graph (DAG), computing 9 graph-theoretic metrics to surface hidden dependencies, bottlenecks, and optimal work ordering.
NEVER run bare bv - it launches an interactive TUI that blocks your session!
# WRONG - blocks terminal with TUI
bv
# CORRECT - JSON output for agents
bv --robot-triage
bv --robot-plan
bv --robot-insights
Always use --robot-* flags for machine-readable output.
# THE SINGLE ENTRY POINT - returns everything you need
bv --robot-triage
Returns:
quick_ref: at-a-glance counts + top 3 picksrecommendations: ranked actionable items with scores, reasons, unblock infoquick_wins: low-effort high-impact itemsblockers_to_clear: items that unblock the most downstream workproject_health: status/type/priority distributions, graph metricscommands: copy-paste shell commands for next steps# Just the single top pick + claim command
bv --robot-next
Traditional trackers treat issues as a flat list sorted by priority. BV sees your project as a dependency graph and answers questions like:
| Traditional Question | BV's Graph-Aware Answer |
|---|---|
| "What's highest priority?" | "What unblocks the most work?" |
| "What should I work on?" | "What's on the critical path with zero slack?" |
| "Is this issue important?" | "What's its PageRank? Betweenness? Does it bridge clusters?" |
| "Are we making progress?" | "Did we resolve cycles? Is density improving?" |
# "What should I work on next?"
bv --robot-triage | jq '.recommendations[0]'
# "What's blocking the most progress?"
bv --robot-triage | jq '.blockers_to_clear'
# "Can multiple agents work in parallel?"
bv --robot-plan | jq '.tracks'
# "Are there circular dependencies?" (structural bugs!)
bv --robot-insights | jq '.Cycles'
# "What changed since last release?"
bv --robot-diff --diff-since v1.0.0
BV computes these metrics to surface hidden project dynamics:
| # | Metric | What It Measures | Actionable Insight |
|---|---|---|---|
| 1 | PageRank | Recursive dependency importance | Foundational blockers |
| 2 | Betweenness | Shortest-path traffic | Bottlenecks & bridges |
| 3 | HITS Hubs | Dependency aggregators | Epics/milestones |
| 4 | HITS Authorities | Depended-on utilities | Core infrastructure |
| 5 | Critical Path | Longest dependency chain | Zero-slack keystones |
| 6 | Eigenvector | Influence via neighbors | Strategic dependencies |
| 7 | Degree | Direct connection counts | Immediate blockers/blocked |
| 8 | Density | Edge-to-node ratio | Project coupling health |
| 9 | Cycles | Circular dependencies | Structural bugs (must fix!) |
PageRank (Foundational Blocks) High PageRank = bedrock of your project. Rarely user-facing features; usually schemas, core libraries, or architectural decisions. Breaking them breaks the graph.
Betweenness (Gatekeepers) High betweenness = choke point. Might be an API contract both mobile and server teams wait on. Delay here doesn't just block one thread—it prevents sub-teams from synchronizing.
HITS (Epics vs. Utilities)
Critical Path (Keystones) Any delay on keystone tasks translates 1:1 into project delivery delay. These have zero "slack."
Cycles (Structural Bugs) Circular dependencies are logical impossibilities. They indicate:
# THE MEGA-COMMAND: comprehensive triage
bv --robot-triage
# Minimal: just the top pick
bv --robot-next
# Parallel execution tracks (for multi-agent work)
bv --robot-plan
# Priority misalignment detection
bv --robot-priority
# Full metrics: PageRank, betweenness, HITS, eigenvector, critical path, cycles
bv --robot-insights
# Label-based analysis
bv --robot-label-health # Per-label health (healthy|warning|critical)
bv --robot-label-flow # Cross-label dependencies, bottleneck labels
bv --robot-label-attention # Attention-ranked labels
bv --robot-label-attention --attention-limit=5
# Bead-to-commit correlations
bv --robot-history
bv --robot-history --bead-history BV-123 # Single bead focus
bv --robot-history --min-confidence 0.7 # High-confidence only
# Changes since a reference point
bv --robot-diff --diff-since HEAD~10
bv --robot-diff --diff-since v1.0.0
bv --robot-diff --diff-since "2024-01-01"
# Sprint burndown
bv --robot-burndown "Sprint 42"
# ETA predictions with dependency-aware scheduling
bv --robot-forecast all
bv --robot-forecast BV-123
# Alerts: stale issues, blocking cascades, priority mismatches
bv --robot-alerts
# Hygiene suggestions: duplicates, missing deps, cycle breaks
bv --robot-suggest
# JSON (default)
bv --robot-graph
# Graphviz DOT (for rendering)
bv --robot-graph --graph-format=dot
# Mermaid (for docs)
bv --robot-graph --graph-format=mermaid
# Focused subgraph
bv --robot-graph --graph-root=BV-123 --graph-depth=3
# Interactive HTML visualization
bv --export-graph graph.html
bv --export-graph sprint.html --graph-title "Sprint 42"
# Scope to label's subgraph
bv --robot-plan --label backend
# Historical point-in-time analysis
bv --robot-insights --as-of HEAD~30
bv --robot-insights --as-of v1.0.0
bv --robot-insights --as-of "2024-01-15"
# Pre-filter with recipes
bv --recipe actionable --robot-plan # Ready to work (no blockers)
bv --recipe high-impact --robot-triage # Top PageRank scores
bv --recipe bottlenecks --robot-plan # High betweenness nodes
# Group triage output
bv --robot-triage --robot-triage-by-track # By parallel work streams
bv --robot-triage --robot-triage-by-label # By domain
# Markdown report with Mermaid diagrams
bv --export-md report.md
# Static site for stakeholder sharing
bv --pages # Interactive wizard
bv --export-pages ./dashboard # Local export
bv --export-pages ./bv-pages --pages-title "Sprint 42 Status"
bv --preview-pages ./dir # Preview locally
| Field | Purpose |
|---|---|
data_hash | Fingerprint of beads.jsonl (verify consistency across calls) |
status | Per-metric state: computed|approx|timeout|skipped + elapsed_ms |
as_of / as_of_commit | Present when using --as-of; contains ref and resolved SHA |
BV uses async computation with intelligent timeouts:
| Phase | Metrics | Latency | Notes |
|---|---|---|---|
| Phase 1 | Degree, topo sort, density | Instant | Always available |
| Phase 2 | PageRank, betweenness, HITS, eigenvector, cycles | 500ms timeout | Check status flags |
For large graphs (>500 nodes): Some Phase 2 metrics may be approx or skipped. Always check the status field.
Results are cached by data_hash. Repeat calls with unchanged beads.jsonl return instantly.
# At-a-glance summary
bv --robot-triage | jq '.quick_ref'
# Top recommendation
bv --robot-triage | jq '.recommendations[0]'
# Best unblock target
bv --robot-plan | jq '.plan.summary.highest_impact'
# Check metric readiness
bv --robot-insights | jq '.status'
# Find circular dependencies (MUST FIX!)
bv --robot-insights | jq '.Cycles'
# Critical labels needing attention
bv --robot-label-health | jq '.results.labels[] | select(.health_level == "critical")'
# All bottleneck issues
bv --robot-insights | jq '.bottlenecks'
{
"quick_ref": {
"total_open": 42,
"actionable": 15,
"blocked": 12,
"top_picks": ["BV-123", "BV-456", "BV-789"]
},
"recommendations": [
{
"id": "BV-123",
"title": "Refactor auth module",
"score": 0.85,
"reasons": ["High PageRank", "Unblocks 5 tasks"],
"unblocks": ["BV-200", "BV-201", "BV-202", "BV-203", "BV-204"]
}
],
"quick_wins": [...],
"blockers_to_clear": [...],
"project_health": {
"status_distribution": {...},
"priority_distribution": {...},
"graph_density": 0.045,
"cycle_count": 0
},
"commands": {
"claim_top": "bd update BV-123 --status in_progress"
},
"data_hash": "abc123...",
"status": {...}
}
{
"plan": {
"tracks": [
{
"track_id": "track-A",
"reason": "Auth system dependency chain",
"items": [
{ "id": "AUTH-001", "priority": 1, "unblocks": ["AUTH-002", "AUTH-003"] }
]
}
],
"summary": {
"total_actionable": 8,
"total_blocked": 12,
"highest_impact": "AUTH-001",
"impact_reason": "Unblocks 3 tasks"
}
},
"data_hash": "...",
"status": {...}
}
{
"bottlenecks": [{ "id": "CORE-123", "value": 0.45 }],
"keystones": [{ "id": "API-001", "value": 12.0 }],
"influencers": [{ "id": "AUTH-007", "value": 0.82 }],
"hubs": [{ "id": "EPIC-100", "value": 0.67 }],
"authorities": [{ "id": "UTIL-050", "value": 0.91 }],
"cycles": [["TASK-A", "TASK-B", "TASK-A"]],
"clusterDensity": 0.045,
"stats": {
"pageRank": {...},
"betweenness": {...},
"eigenvector": {...},
"hubs": {...},
"authorities": {...},
"inDegree": {...},
"outDegree": {...},
"criticalPathScore": {...},
"topologicalOrder": [...]
},
"status": {
"pageRank": { "state": "computed", "elapsed_ms": 12 },
"betweenness": { "state": "computed", "elapsed_ms": 45 },
"cycles": { "state": "computed", "elapsed_ms": 8 }
}
}
BV ships with 11 pre-configured recipes for common workflows:
| Recipe | Purpose |
|---|---|
default | All open issues sorted by priority |
actionable | Ready to work (no blockers) |
recent | Updated in last 7 days |
blocked | Waiting on dependencies |
high-impact | Top PageRank scores |
stale | Open but untouched for 30+ days |
triage | Sorted by computed triage score |
closed | Recently closed issues |
release-cut | Closed in last 14 days (for changelogs) |
quick-wins | Easy P2/P3 items with no blockers |
bottlenecks | High betweenness nodes |
bv --recipe actionable --robot-plan
bv --recipe high-impact --robot-triage
bv --recipe bottlenecks --robot-insights
BV supports text + graph metric hybrid search:
# Default text-only search
bv --search "login oauth"
# Hybrid mode with preset
bv --search "login oauth" --search-mode hybrid --search-preset impact-first
# Custom weights
bv --search "login oauth" --search-mode hybrid \
--search-weights '{"text":0.4,"pagerank":0.2,"status":0.15,"impact":0.1,"priority":0.1,"recency":0.05}'
# Robot JSON output
bv --search "login oauth" --search-mode hybrid --robot-search
Presets: default, bug-hunting, sprint-planning, impact-first, text-only
Environment defaults:
BV_SEARCH_MODE (text|hybrid)BV_SEARCH_PRESETBV_SEARCH_WEIGHTS (JSON string)Compare project state across git history:
# View state at any git reference
bv --as-of HEAD~10
bv --as-of v1.0.0
bv --as-of "2024-01-15"
bv --as-of abc1234 # commit SHA
# Diff changes
bv --robot-diff --diff-since HEAD~10
bv --robot-diff --diff-since v1.0.0
What gets tracked:
BV correlates beads with commits using multiple strategies:
| Strategy | Weight | How It Works |
|---|---|---|
| Explicit Mentions | 0.5 | Commit message contains bead ID |
| Temporal Proximity | 0.25 | Commit during bead's active lifecycle |
| Co-Commit Analysis | 0.15 | Files frequently modified together |
| Path Matching | 0.10 | File paths match bead's label scope |
# Full history report
bv --robot-history
# Single bead focus
bv --robot-history --bead-history BV-123
# Filter by confidence
bv --robot-history --min-confidence 0.7
# Time range
bv --robot-history --history-since "30 days ago"
Generate self-contained HTML visualizations:
bv --export-graph graph.html
bv --export-graph --graph-title "Q4 Sprint"
bv --export-graph --graph-include-closed
Features:
Keyboard shortcuts: ? help, F fit all, R reset, L toggle light/dark, P path finder
Launch with bare bv:
| Key | View | Description |
|---|---|---|
| (default) | List | Split-view with list + details |
b | Kanban Board | Columnar workflow view |
g | Graph | ASCII/Unicode dependency visualization |
i | Insights | 6-panel metrics dashboard |
h | History | Git correlation timeline |
| Key | Action |
|---|---|
j/k | Navigate up/down |
h/l | Navigate left/right (in board/graph) |
Enter | Open in $EDITOR |
Space | Full-screen detail |
/ | Search |
Tab | Cycle panels |
? | Help |
q | Quit |
| Key | Filter |
|---|---|
o | Open only |
c | Closed only |
r | Ready (unblocked) |
F3 | By label |
F5/F6 | By time |
| Key | Action |
|---|---|
E | Export to Markdown |
C | Copy issue as Markdown |
t | Time-travel (compare to git ref) |
p | Toggle priority hints overlay |
s | Cycle sort mode |
BV computes multi-factor impact scores:
Impact = 0.30×PageRank + 0.30×Betweenness + 0.20×BlockerRatio + 0.10×Staleness + 0.10×PriorityBoost
When computed impact diverges from human-assigned priority, BV flags misalignment:
⚠️ CORE-123 has Impact Score 0.85 but Priority P3. Reason: High PageRank (foundational dependency) + High Betweenness (bottleneck) Recommendation: Consider escalating to P1.
# Check drift from baseline
bv --check-drift
# Exit codes: 0=OK, 1=critical, 2=warning
# Get baseline info
bv --baseline-info
Use --check-drift in CI/CD to catch quality regressions.
Configure pre/post-export hooks in .bv/hooks.yaml:
pre_export:
- command: "validate-issues.sh"
on_error: fail
post_export:
- command: "notify-slack.sh"
on_error: continue
env:
CHANNEL: "#dev"
Hook environment includes: BV_EXPORT_PATH, BV_EXPORT_FORMAT, BV_ISSUE_COUNT, BV_TIMESTAMP
| Operation | Latency |
|---|---|
| Phase 1 metrics | Instant |
| Phase 2 metrics (<500 nodes) | <500ms |
| Phase 2 metrics (large graphs) | May timeout/approx |
| Cached repeat calls | Instant (by data_hash) |
Use bv --profile-startup for diagnostics.
BV reads from .beads/beads.jsonl created by bd:
# Initialize beads
bd init
# Create issues
bd create "Implement login" -t feature -p 1
# Update status
bd update BV-123 --status in_progress
# Close
bd close BV-123 --reason "Completed"
Important: .beads/ is authoritative state. Always commit it with code changes.
## bv - Beads Viewer (Graph-Aware Triage Engine)
bv is a graph-aware triage engine for Beads projects (.beads/beads.jsonl). Instead of parsing JSONL or hallucinating graph traversal, use robot flags for deterministic, dependency-aware outputs with precomputed metrics (PageRank, betweenness, HITS, eigenvector, critical path, cycles, k-core).
**⚠️ CRITICAL: Use ONLY `--robot-*` flags. Bare `bv` launches an interactive TUI that blocks your session.**
### The Workflow: Start With Triage
bv --robot-triage # THE MEGA-COMMAND: start here
bv --robot-next # Minimal: just the single top pick
### Key Commands
| Command | Returns |
|---------|---------|
| `--robot-triage` | Ranked recommendations, quick wins, blockers to clear |
| `--robot-plan` | Parallel execution tracks with unblocks lists |
| `--robot-insights` | Full metrics: PageRank, betweenness, cycles |
| `--robot-label-health` | Per-label health (healthy\|warning\|critical) |
### jq Quick Reference
bv --robot-triage | jq '.recommendations[0]' # Top pick
bv --robot-plan | jq '.plan.summary' # Best unblock target
bv --robot-insights | jq '.Cycles' # Circular deps (MUST FIX!)
**Performance:** Phase 1 instant, Phase 2 async (500ms timeout). Results cached by data_hash.
curl -fsSL "https://raw.githubusercontent.com/Dicklesworthstone/beads_viewer/main/install.sh?$(date +%s)" | bash
Structured design dialogue that validates ideas before implementation begins.
Comprehensive design intelligence for web and mobile UI/UX across 10 technology stacks.
Comprehensive implementation plans for multi-step tasks, breaking down specs into bite-sized, testable steps.
Introduction to the obra skills system with mandatory skill invocation rules and best practices.
Execute a written implementation plan with critical review and task checkpoints.
Delegate independent tasks to specialized agents working concurrently with isolated context.
Isolated git worktrees with smart directory selection and safety verification.
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
Plan searchable and shareable content that drives traffic, builds authority, and generates leads.
README-first repository scanner that extracts commands and classifies reproduction candidates without executing them.
Brainstorm and prioritize marketing strategies tailored to your SaaS stage, budget, and goals.
Plan and optimize your website's page hierarchy, navigation, URL structure, and internal linking.
The world's fastest calendar for remote work
Capture, organize, and utilize your knowledge effortlessly.
Instant Summaries of Audio & Video Interviews with AnySummary
Transform PDFs into engaging mind maps.
Chat with any PDF instantly
Create an optimal daily plan using your voice
A productivity platform to centralize organizational knowledge and workflows with contextual AI assistance.
AskYourPDF Pricing Plans: Tailored to Your Needs