Skip to main content

bop-team

Dogfood orchestrator for working on the bop repo itself. Use when working on the bop jobcard system — create cards before coding, execute through dispatcher flow, and verify system output.

Jump to install

Source facts

Repository
ryanmaclean/skills
Last source activity
April 15, 2026 at 03:58
Detected SKILL.md language
English
Stars
1
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
bop-team
description
Dogfood orchestrator for working on the bop repo itself. Use when working on the bop jobcard system — create cards before coding, execute through dispatcher flow, and verify system output.
# bop-team: Dogfood Orchestrator Use when working on the bop repo itself. Before writing code, deal a card. After finishing, verify the system ran it. ## The Rule Every unit of work on bop becomes a bop card. No exceptions. ## Agent Roster (budget order, cheapest first) | Agent | Binary | Cost | Best for | |-------|--------|------|----------| | ollama | `ollama` | free | fast local, drafts, docs | | opencode | `opencode` | $ | code tasks, mid-complexity | | codex | `codex` | $ | code tasks, OpenAI models | | claude | `claude` | $$ | complex reasoning, architecture | Check availability: ```zsh for a in ollama opencode codex claude; do which $a 2>/dev/null && echo " $a: available"; done ``` ## Templates Four shipping templates in `.cards/templates/`: | Template | Stages | Use When | |----------|--------|----------| | **implement** | implement → qa | Clear requirements | | **full** | spec → plan → implement → qa | Complex/ambiguous | | **cheap** | implement (local) | Small fix, local model | | **ideation** | ideation → qa | Brainstorming (`bop bstorm`) | | **qa-only** | qa | Code review, audit | ## Factory (launchd lifecycle) ```zsh bop factory install # generate + load plists (includes icon watcher) bop factory status # check if services are running bop factory start # start dispatcher + merge-gate + icons bop factory stop # stop all services bop factory uninstall # unload + remove plists ``` ## Workflow ```zsh # 1a. Deal an implement card bop new implement <id> # 1b. Or brainstorm first bop bstorm <topic words> # 2. Note the card ID and session name printed # 3. Work inside the zellij session (or your current session) # 4. Write output to output/result.md # 5. Verify it ran make check ./target/debug/bop status # 6. The card auto-moves to done/ when dispatcher exits 0 ``` ## Installation (Quick Look) ```zsh # Build in Xcode → Product → Build # Then register: LSREG=/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister $LSREG -f ~/Applications/JobCardHost.app # Preview a card qlmanage -p examples/running-feat.jobcard ``` ## 7-Pane Zellij Layout ``` ┌────────────────┬────────────────┐ │ bop status │ spec.md │ │ (board) │ (current card)│ ├────────────────┼────────────────┤ │ dispatcher │ agent stdout │ │ log --follow │ │ ├────────────────┼────────────────┤ │ merge-gate │ agent stderr │ │ log --follow │ │ ├────────────────┴────────────────┤ │ shell (bop commands live here)│ └─────────────────────────────────┘ ``` Use `layouts/bop.kdl` to launch this layout: `zellij --layout layouts/bop.kdl` ## License Compliance All adapters in this repo use MIT/Apache-2.0-licensed tools only: - claude: Anthropic TOS (API usage) - codex CLI: MIT (github.com/openai/codex) - ollama: MIT (github.com/ollama/ollama) - opencode: MIT (github.com/sst/opencode) ## Zellij Session Protocol Sessions are named `bop-<card-id>`. Always resumable: ```zsh zellij attach "bop-<id>" 2>/dev/null || zellij -s "bop-<id>" ``` The `zellij_session` field in meta.json is the source of truth. Quick Look renders a live "Attach" button (green) when the field is present and stage is running. ## Troubleshooting **Nested Claude sessions:** When dispatching from inside Claude Code, `CLAUDECODE=1` blocks spawning. The adapter already runs `unset CLAUDECODE`, but if launching dispatcher manually use `env -u CLAUDECODE bop dispatcher --once`. **Stale worktrees:** If a card fails, its git worktree persists and blocks re-dispatch. Clean with: ```zsh git worktree remove --force .worktrees/job-<card-id> git branch -D job-<card-id> ``` **Icon\r (macOS):** Finder drops `Icon\r` files in directories with custom icons. The dispatcher and `bop status` filter by `.jobcard` extension to ignore these. **Provider cooldowns:** When a provider hits rate limits (exit 75), the dispatcher rotates to the next provider in `provider_chain`. If ALL providers are rate-limited, cards requeue until cooldowns expire (default 300s). ## Dogfood Check Before marking any bop work complete, verify: - [ ] A card exists for the work (`bop status`) - [ ] `make check` passes - [ ] The feature you built actually processed at least one card
View on GitHub