Skip to content
Back to skills

Beads Execute

ASecurity

Execute beads tasks with proper claim/work/close workflow and session management

  • 18 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added June 1, 2026
documentationrustgobashgitapidatabasesecurityperformancedocumentation

Works with

  • cli
  • api

Security analysis

A100/100

Scanned June 1, 2026

npx -y skills add majiayu000/claude-skill-registry-data --skill beads-execute --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Beads Execute?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Beads Execute
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-beads-execute/badge)](https://www.skillsdirectory.com/skills/majiayu000-beads-execute)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
---
name: beads-execute
description: Execute beads tasks with proper claim/work/close workflow and session management
---

# Beads Execution Skill

## Overview

This skill guides the execution of beads tasks after a dependency graph has been created via `beads-plan`. It covers:
- Finding and claiming ready work
- Executing tasks with proper state management
- Closing tasks and checking newly unblocked work
- Session management and handoff

## Prerequisites

- `bd` CLI installed and initialized in the project
- A beads plan exists (created via `/beads-plan`)
- Working directory is within the beads-initialized project

---

## Project Context and History

When you need to understand what previous agents did or review project history:

### Beads History

```bash
# View all beads in an epic (including closed)
bd list --parent <epic-id> --all

# View a specific bead's full history and notes
bd show <bead-id>

# See what beads were recently closed
bd list --status closed --parent <epic-id>

# Check git commits associated with beads (commits reference bead IDs)
git log --oneline --grep="<bead-id>"
```

### Harness Run Logs

Previous automated runs are logged in `.beads/harness-logs/`:

```bash
# List all run logs (most recent first)
ls -t .beads/harness-logs/*.log

# View the most recent run log
cat "$(ls -t .beads/harness-logs/*.log | head -1)"

# Search logs for errors or specific beads
grep -l "ERROR\|error" .beads/harness-logs/*.log
grep -l "<bead-id>" .beads/harness-logs/*.log
```

Run logs contain:
- Timestamps for each iteration
- Session IDs (for replaying in TUI)
- Epic status at completion
- Structured events (JSON format)

### Git History

Agents commit with bead IDs in the message format `feat(<bead-id>): <title>`:

```bash
# See commits for a specific bead
git log --oneline --grep="<bead-id>"

# See what changed in a bead's implementation
git log -p --grep="<bead-id>"

# See recent bead-related commits
git log --oneline --grep="^feat\|^fix\|^wip" -20
```

### OpenCode Sessions

If you need to review what an agent actually did (tool calls, reasoning):

```bash
# List recent sessions
opencode session list --format json | jq '.[:5]'

# Export a session for review
opencode export <session-id> > session-export.json
```

### Bead Notes

Agents document important context in bead notes:

```bash
# Find beads with notes
bd list --parent <epic-id> --json | jq '.[] | select(.notes != null) | {id, title, notes}'

# Common note prefixes to look for:
# - "Context limit." - Agent hit context exhaustion, notes contain resume point
# - "REVIEW NEEDED:" - Agent flagged uncertainty
# - "Blocked:" - Agent couldn't complete, explains why
```

---

## Session Start Protocol

At the start of an execution session:

```bash
# 1. Sync to get latest state from remote
bd sync

# 2. Show epic status
bd epic status <epic-id>

# 3. Show ready work
bd ready

# 4. Visualize the graph (optional)
bd graph <epic-id>
```

Present this information to the user and help them select which task to work on.

---

## Task Execution Workflow

### 1. Claim a Task

Before starting work, claim the task atomically:

```bash
bd update <task-id> --claim
```

This sets:
- `status` = `in_progress`
- `assignee` = current actor

**Important:** If claim fails, another agent already claimed it. Choose different task.

### 2. View Task Details

```bash
bd show <task-id>
```

Review:
- Description
- Acceptance criteria
- Dependencies (what this blocks)

### 3. Execute the Work

Implement the task according to its acceptance criteria.

**During execution:**
- Create branches per your git workflow
- Run tests where applicable
- Document any discovered work

### 4. File Discovered Work

If you discover additional work needed:

```bash
bd create "Discovered: <title>" -t task -p 2 --parent <epic-id> \
  -d "Found while working on <current-task>: <description>"
```

Add dependencies if the discovered work blocks or is blocked by other tasks:

```bash
bd dep add <new-task> <blocking-task>
```

### 5. Close the Task

When acceptance criteria are met:

```bash
bd close <task-id> -r "Completed: <brief summary>"
```

### 6. Check Newly Unblocked Work

```bash
bd ready
```

This shows tasks that became unblocked by your completion.

---

## Status Transitions

```
open -> in_progress    (via --claim)
in_progress -> closed  (via bd close)
closed -> open         (via bd reopen, if needed)
```

---

## Multi-Task Sessions

For longer sessions working on multiple tasks:

```bash
# After completing one task
bd close <task-1> -r "Completed"
bd ready                           # See what's unblocked
bd update <task-2> --claim         # Claim next task
# ... work on task 2 ...
bd close <task-2> -r "Completed"
bd sync                            # Sync periodically
```

**Rule:** One task `in_progress` at a time. Complete current before claiming next.

---

## Handling Blocked Work

If you need to work on something blocked:

1. Check what's blocking it:
   ```bash
   bd show <blocked-task>  # See "DEPENDS ON" section
   ```

2. Either:
   - Work on the blocker first
   - Re-evaluate if the dependency is correct
   - Remove spurious dependency: `bd dep remove <task> <blocker>`

---

## Key Commands Reference

| Action | Command |
|--------|---------|
| Find ready work | `bd ready` |
| Claim a task | `bd update <id> --claim` |
| View task details | `bd show <id>` |
| Close task | `bd close <id> -r "reason"` |
| See blocked work | `bd blocked` |
| Visualize graph | `bd graph <epic-id>` |
| Sync to git | `bd sync` |
| Epic progress | `bd epic status <id>` |
| Add dependency | `bd dep add <task> <blocker>` |
| Remove dependency | `bd dep remove <task> <blocker>` |
| Create new task | `bd create "Title" -t task -p <N> --parent <epic>` |

---

## Anti-Patterns to Avoid

1. **Working without claiming** - Always claim before starting work
2. **Multiple tasks in-progress** - Complete one before claiming another
3. **Forgetting to close** - Close immediately when acceptance criteria are met
4. **Batching closures** - Close each task as you finish, don't save them up
5. **Ignoring discovered work** - File issues for anything found during execution
6. **Skipping sync** - Sync before session end and periodically during long sessions

---

## Session End Protocol

When the user invokes `/beads-land`, follow the landing protocol:

1. **Check for in-progress tasks** - Close or document status
2. **File remaining work** - Create issues for anything discovered
3. **Sync and push** - MANDATORY before session ends
4. **Provide handoff** - Summary and next session prompt

See `/beads-land` command for the complete protocol.

---

## Loop Mode Protocol

When operating in loop mode (invoked via `/beads-loop`), you execute beads autonomously until completion or error.

### Loop Awareness

You are executing beads automatically. The loop continues until one of:
1. **Epic complete** - 100% of beads closed
2. **Unrecoverable error** - Something requires human intervention
3. **Context exhaustion** - Signal continuation and exit cleanly

**There is no human gate between beads.** The outer harness script handles continuation automatically.

### Selection Heuristics

When multiple beads are ready, prefer:
1. **Higher priority** (P0 > P1 > P2)
2. **Unblocking power** - Beads that unblock the most other beads
3. **Smaller scope** - Faster feedback loops
4. **Context locality** - Related to recently-completed work

In practice, `bd ready` returns beads sorted by priority. Select the first one:

```bash
bd ready --json | jq -r '.[0].id'
```

### Loop Algorithm

```
LOOP:
  1. CHECK COMPLETION
     bd epic status <epic-id> --json
     If 100% complete -> Celebrate, EXIT (no continuation signal)
     
  2. FIND READY WORK
     bd ready --json
     If empty AND blocked exist -> Diagnose deadlock, EXIT
     If empty AND nothing open -> All done, EXIT
     
  3. SELECT AND CLAIM
     task = first ready bead
     bd update <task-id> --claim
     If fails -> Another agent claimed it, GOTO 2
     
  4. EXECUTE
     bd show <task-id> --json
     Implement per acceptance criteria
     File discovered work with bd create
     
  5. VERIFY AND CLOSE
     Verify acceptance criteria met
     bd close <task-id> -r "Completed: <summary>"
     
  6. CHECKPOINT
     bd sync
     git add -A && git commit -m "feat(<task-id>): <title>"
     git push
     
  7. CONTEXT CHECK
     If context approaching limit -> GOTO Context Exhaustion Protocol
     Else -> GOTO 1
```

---

## Context Exhaustion Protocol

When you detect context is approaching limits (conversation getting long, many tool calls, complex state):

### Detection Heuristics

Context exhaustion is approaching when:
- Conversation has been running for extended period with many tool calls
- You're having difficulty tracking state or context
- OpenCode triggers auto-compaction

### Exit Protocol

1. **Complete current atomic operation** - Never stop mid-file-edit
2. **If bead in-progress**, add session notes:
   ```bash
   bd update <task-id> --notes "Context limit. Completed: <what you finished>. Next: <what remains>."
   ```
3. **Sync and push** (non-negotiable):
   ```bash
   bd sync
   git add -A && git commit -m "wip(<task-id>): context checkpoint" || true
   git push
   ```
4. **Write continuation signal**:
   ```bash
   echo "1" > .beads/continue
   ```
5. **Exit cleanly** with a brief status message

**CRITICAL:**
- Do NOT signal the user to re-invoke
- Do NOT wait for confirmation
- Do NOT ask if the user wants to continue
- The outer harness script handles all continuation automatically

---

## Continuation Protocol

When starting a session that may be a continuation (harness re-invoked you):

### On Session Start

1. **Check for in-progress tasks**:
   ```bash
   bd list --status in_progress --json
   ```

2. **If in-progress bead exists**, read its state:
   ```bash
   bd show <task-id> --json
   ```
   Look for notes field - it may contain "Context limit. Completed: X. Next: Y."

3. **Continue from where notes indicate**, or complete the bead if notes are unclear

4. **After completing the resumed bead**, proceed to normal loop (check completion, find ready work, etc.)

### Compaction Recovery

If your context was compacted (you see a summary message at conversation start):
- **Do NOT rely on the summary** for task state
- Immediately query beads: `bd list --status in_progress --json`
- The beads database is the **source of truth**, not conversation history
- Read bead notes for session context

---

## Error Recovery Patterns

### Claim Conflict

```bash
$ bd update bd-XXX --claim
Error: bead already claimed by agent-2
```

**Recovery:** Skip this bead, select next from `bd ready`.

### Test/Verification Failure

If acceptance criteria not met after implementation:

1. **If quickly fixable**: Fix it, verify again
2. **If complex issue**:
   ```bash
   bd update <task-id> --notes "Blocked: <issue description>. Needs: <what's required>"
   bd update <task-id> --status open  # Unclaim
   bd create "Fix: <issue>" -t bug -p 1 --parent <epic>
   bd dep add <task-id> <new-bug-id>  # Original blocked by fix
   bd sync
   ```
   Continue with other ready beads.

### Deadlock (No Ready Beads)

```bash
$ bd ready
(empty)
$ bd list --status open
bd-XXX  ...  (blocked)
bd-YYY  ...  (blocked)
```

**Diagnosis:**
```bash
bd blocked --json    # See what's blocked and why
bd dep cycles        # Check for cycles
```

**Recovery:**
- If cycle exists: Report cycle details, EXIT for human intervention
- If external blocker: Document and EXIT
- If all blocked on one bead: Attempt that bead or escalate

### Git Push Failure

```bash
$ git push
! [rejected] main -> main (fetch first)
```

**Recovery:**
```bash
git pull --rebase
# If conflict in .beads/issues.jsonl:
git checkout --theirs .beads/issues.jsonl
bd import -i .beads/issues.jsonl
bd sync
git push  # Retry
```

---

## Loop Mode Anti-Patterns

In addition to standard anti-patterns, in loop mode also avoid:

1. **Signaling user for continuation** - Harness handles this
2. **Asking for confirmation** - Loop is autonomous
3. **Stopping without sync/push** - Always checkpoint before exit
4. **Ignoring session notes** - Read them on continuation
5. **Trusting compacted context** - Query beads DB for ground truth

---

## Issue Reporting and Documentation

When you encounter problems that cannot be automatically resolved, document them properly for human review.

### Creating Blocking Issues

When a bead cannot be completed due to an issue:

```bash
# Create a blocking bug with full context
bd create "Bug: <concise title>" -t bug -p 1 --parent <epic-id> \
  -d "## Problem
<What went wrong>

## Context  
- Discovered while working on: <bead-id>
- Environment: <relevant details>

## Steps to Reproduce
1. <step>
2. <step>

## Expected vs Actual
- Expected: <what should happen>
- Actual: <what happens>

## Attempted Solutions
- <what you tried>
- <why it didn't work>

## Recommended Fix
<your analysis of what needs to happen>"

# Link the dependency
bd dep add <blocked-bead-id> <new-bug-id>
```

### Documenting Uncertainty

When you're unsure about an implementation decision:

```bash
bd update <bead-id> --notes "REVIEW NEEDED: <question or concern>. Made assumption: <what you assumed>. Alternative: <other option considered>."
```

### Flagging Technical Debt

When you implement a working but non-ideal solution:

```bash
bd create "Tech debt: <what needs improvement>" -t chore -p 3 --parent <epic-id> \
  -d "## Current State
<what exists now>

## Why It's Debt
<why this needs improvement>

## Suggested Improvement
<what should be done>

## Risk If Not Addressed
<consequences of leaving it>"
```

### Run Summary Annotation

At the end of a successful loop iteration, if there are observations worth noting:

```bash
bd update <epic-id> --notes "$(date -Iseconds) Loop completed. Observations: <notable findings, warnings, or recommendations>"
```

### What to Document

Always create beads for:
- Bugs discovered during implementation
- Missing requirements or ambiguities
- Technical debt introduced
- External blockers (APIs down, missing credentials, etc.)
- Security concerns
- Performance issues observed

Do NOT create beads for:
- Minor code style preferences
- Transient issues that self-resolved
- Questions that can be answered by reading docs

### Post-Run Review

After the harness completes, humans can review:

```bash
# View run log
cat .beads/harness-logs/run-*.log | tail -1

# See all bugs filed
bd list -t bug --parent <epic-id>

# Check for tasks with review notes
bd list --parent <epic-id> --json | jq '.[] | select(.notes != null)'

# View epic status
bd epic status <epic-id>
```

---

## Project Documentation Protocol

Documentation is part of the work, not an afterthought. Follow these guidelines for when and how to document.

### When to Create/Update Documentation

**Create documentation when:**

1. **A bead explicitly requires it** - The acceptance criteria mentions docs, README, etc.
2. **You create a new public API** - Functions, endpoints, or interfaces others will use
3. **You add a new command/script** - CLI tools need usage documentation
4. **You set up a new service/component** - How to run, configure, deploy
5. **You implement non-obvious behavior** - Complex algorithms, business logic, edge cases
6. **The project has no README** - Create a minimal one with setup instructions

**Update documentation when:**

1. **You change existing documented behavior** - Keep docs in sync with code
2. **You deprecate or remove features** - Note what changed and migration path
3. **You discover the docs are wrong** - Fix them immediately

**Do NOT create documentation for:**

1. **Self-documenting code** - Well-named functions don't need paragraph explanations
2. **Internal implementation details** - Unless specifically requested
3. **Speculative features** - Only document what exists
4. **Personal notes** - Use bead notes, not project docs

### Documentation Locations

Follow project conventions. Common patterns:

```
README.md              # Project overview, quick start, basic usage
docs/                  # Detailed documentation
  architecture.md      # System design, component relationships
  api.md               # API reference
  deployment.md        # How to deploy
  development.md       # How to contribute/develop
CHANGELOG.md           # Version history (if project uses one)
<component>/README.md  # Component-specific docs
```

### Documentation Standards

**README.md minimum viable content:**

```markdown
# Project Name

Brief description of what this does.

## Quick Start

\`\`\`bash
# How to install/setup
# How to run
\`\`\`

## Usage

Basic usage examples.

## Configuration

Key configuration options (if any).
```

**API/Function documentation:**

```markdown
## function_name

Brief description.

### Parameters

- `param1` (type): Description
- `param2` (type, optional): Description. Default: `value`

### Returns

Description of return value.

### Example

\`\`\`language
example code
\`\`\`

### Errors

- `ErrorType`: When this occurs
```

**When documenting commands/scripts:**

```markdown
## command-name

Description of what it does.

### Usage

\`\`\`bash
command-name [options] <required-arg>
\`\`\`

### Options

- `--flag`: Description
- `--option <value>`: Description (default: X)

### Examples

\`\`\`bash
# Common use case
command-name --flag value

# Another use case  
command-name --other-option
\`\`\`
```

### Documentation as Beads

If a feature requires documentation, it should be part of the bead's acceptance criteria:

```
Acceptance criteria:
- Feature X works as specified
- README updated with usage instructions
- API documented in docs/api.md
```

If you complete a bead and realize docs are needed but weren't specified:

```bash
bd create "Docs: Document <feature>" -t chore -p 3 --parent <epic-id> \
  -d "Add documentation for <feature> implemented in <bead-id>.

Needed:
- Usage examples
- Configuration options
- API reference"
```

### Inline Code Documentation

**Do document:**
- Public API contracts (function signatures, types)
- Complex algorithms (brief explanation of approach)
- Non-obvious side effects
- TODO/FIXME with bead references: `// TODO(bd-XXX): description`

**Don't over-document:**
- Obvious code (`i++ // increment i`)
- Every private function
- Implementation details that may change

### Documentation Commits

Documentation changes follow the same commit pattern:

```bash
git commit -m "docs(<bead-id>): <what was documented>"
```

Examples:
```bash
git commit -m "docs(bd-XXX): add API reference for auth endpoints"
git commit -m "docs(bd-YYY): update README with new CLI options"
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.