Skip to content
This repository was archived by the owner on May 6, 2026. It is now read-only.

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

README.md

Team Workflow Example

This example demonstrates how to use beads for team collaboration with shared repositories.

Problem

When working as a team on a shared repository, you want to:

  • Track issues collaboratively
  • Keep everyone in sync via git
  • Handle protected main branches
  • Maintain clean git history

Solution

Use bd init --team to set up team collaboration with automatic sync and optional protected branch support.

Setup

Step 1: Initialize Team Workflow

# In your shared repository
cd my-project

# Run the team setup wizard
bd init --team

The wizard will:

  1. ✅ Detect your git configuration
  2. ✅ Ask if main branch is protected
  3. ✅ Configure sync branch (if needed)
  4. ✅ Set up automatic sync
  5. ✅ Enable team mode

Step 2: Protected Branch Configuration

If your main branch is protected (GitHub/GitLab), the wizard will:

  • Create a separate beads-metadata branch for issue updates
  • Configure beads to commit to this branch automatically
  • Set up periodic PR workflow for merging to main

Step 3: Team Members Join

Other team members just need to:

# Clone the repository
git clone https://github.com/org/project.git
cd project

# Initialize beads (auto-imports existing issues)
bd init

# Start working!
bd ready

How It Works

Direct Commits (No Protected Branch)

If main isn't protected:

# Create issue
bd create "Implement feature X" -p 1

# Daemon auto-commits to main
# (or run 'bd sync' manually)

# Pull to see team's issues
git pull
bd list

Protected Branch Workflow

If main is protected:

# Create issue
bd create "Implement feature X" -p 1

# Daemon commits to beads-metadata branch
# (or run 'bd sync' manually)

# Push beads-metadata
git push origin beads-metadata

# Periodically: merge beads-metadata to main via PR

Configuration

The wizard configures:

team:
  enabled: true
  sync_branch: beads-metadata  # or main if not protected

daemon:
  auto_commit: true
  auto_push: true

Manual Configuration

# Enable team mode
bd config set team.enabled true

# Set sync branch
bd config set team.sync_branch beads-metadata

# Enable auto-sync
bd config set daemon.auto_commit true
bd config set daemon.auto_push true

Example Workflows

Scenario 1: Unprotected Main

# Alice creates an issue
bd create "Fix authentication bug" -p 1

# Daemon commits and pushes to main
# (auto-sync enabled)

# Bob pulls changes
git pull
bd list  # Sees Alice's issue

# Bob claims it
bd update bd-abc --status in_progress

# Daemon commits Bob's update
# Alice pulls and sees Bob is working on it

Scenario 2: Protected Main

# Alice creates an issue
bd create "Add new API endpoint" -p 1

# Daemon commits to beads-metadata
git push origin beads-metadata

# Bob pulls beads-metadata
git pull origin beads-metadata
bd list  # Sees Alice's issue

# Later: merge beads-metadata to main via PR
git checkout main
git pull origin main
git merge beads-metadata
# Create PR, get approval, merge

Team Workflows

Daily Standup

# See what everyone's working on
bd list --status in_progress

# See what's ready for work
bd ready

# See recently closed issues
bd list --status closed --limit 10

Sprint Planning

# Create sprint issues
bd create "Implement user auth" -p 1
bd create "Add profile page" -p 1
bd create "Fix responsive layout" -p 2

# Assign to team members
bd update bd-abc --assignee alice
bd update bd-def --assignee bob

# Track dependencies
bd dep add bd-def bd-abc --type blocks

PR Integration

# Create issue for PR work
bd create "Refactor auth module" -p 1

# Work on it
bd update bd-abc --status in_progress

# Open PR with issue reference
git push origin feature-branch
# PR title: "feat: refactor auth module (bd-abc)"

# Close when PR merges
bd close bd-abc --reason "PR #123 merged"

Sync Strategies

Auto-Sync (Recommended)

Daemon commits and pushes automatically:

bd daemon --start --auto-commit --auto-push

Benefits:

  • ✅ Always in sync
  • ✅ No manual intervention
  • ✅ Real-time collaboration

Manual Sync

Sync when you want:

bd sync  # Export, commit, pull, import, push

Benefits:

  • ✅ Full control
  • ✅ Batch updates
  • ✅ Review before push

Conflict Resolution

Hash-based IDs prevent most conflicts. If conflicts occur:

# During git pull/merge
git pull origin beads-metadata
# CONFLICT in .beads/issues.jsonl

# Option 1: Accept remote
git checkout --theirs .beads/issues.jsonl
bd import -i .beads/issues.jsonl

# Option 2: Accept local
git checkout --ours .beads/issues.jsonl
bd import -i .beads/issues.jsonl

# Option 3: Use beads-merge tool (recommended)
# See docs/GIT_INTEGRATION.md for merge conflict resolution

git add .beads/issues.jsonl
git commit

Protected Branch Best Practices

For Protected Main:

  1. Create beads-metadata branch

    git checkout -b beads-metadata
    git push origin beads-metadata
  2. Configure protection rules

    • Allow direct pushes to beads-metadata
    • Require PR for main
  3. Periodic PR workflow

    # Once per day/sprint
    git checkout main
    git pull origin main
    git checkout beads-metadata
    git pull origin beads-metadata
    git checkout main
    git merge beads-metadata
    # Create PR, get approval, merge
  4. Keep beads-metadata clean

    # After PR merges
    git checkout beads-metadata
    git rebase main
    git push origin beads-metadata --force-with-lease

Common Questions

Q: How do team members see each other's issues?

A: Issues are stored in .beads/issues.jsonl which is version-controlled. Pull from git to sync.

git pull
bd list  # See everyone's issues

Q: What if two people create issues at the same time?

A: Hash-based IDs prevent collisions. Even if created simultaneously, they get different IDs.

Q: How do I disable auto-sync?

A: Turn it off:

bd config set daemon.auto_commit false
bd config set daemon.auto_push false

# Sync manually
bd sync

Q: Can we use different sync branches per person?

A: Not recommended. Use a single shared branch for consistency. If needed:

bd config set sync.branch my-custom-branch

Q: What about CI/CD integration?

A: Add to your CI pipeline:

# In .github/workflows/main.yml
- name: Sync beads issues
  run: |
    bd sync
    git push origin beads-metadata

Troubleshooting

Issue: Daemon not committing

Check daemon status:

bd daemon --status
bd daemons list

Verify config:

bd config get daemon.auto_commit
bd config get daemon.auto_push

Restart daemon:

bd daemon --stop
bd daemon --start --auto-commit --auto-push

Issue: Merge conflicts in JSONL

Use beads-merge or resolve manually (see GIT_INTEGRATION.md):

git checkout --theirs .beads/issues.jsonl
bd import -i .beads/issues.jsonl
git add .beads/issues.jsonl
git commit

Issue: Issues not syncing

Manually sync:

bd sync
git push

Check for conflicts:

git status
bd validate --checks=conflicts

See Also