Extracts work items as Beads and bundles them into Convoys for Gastown multi-agent execution.
Structures project work items into Gastown beads and bundles them into convoys for multi-agent execution.
/plugin marketplace add auge2u/lisa-helps-ralph-loops/plugin install lisa@lisa-helps-ralph-loopsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
templates/bead.jsontemplates/convoy.jsonThis skill extracts work items from the project and structures them as Gastown Beads and Convoys.
Use this skill when:
project/
├── .gt/
│ ├── beads/
│ │ ├── gt-abc12.json # Individual work items
│ │ ├── gt-def34.json
│ │ └── ...
│ └── convoys/
│ ├── convoy-001.json # Bundled work assignments
│ └── ...
└── [existing project files]
Scan for work items in:
GitHub Issues (most authoritative)
gh issue list --state open --json number,title,body,labels
PRD Documents
docs/*.md with user storiesdocs/PRD*.md filesTODO Comments in Source Code
// TODO:, # TODO:, /* TODO */// FIXME:, // HACK:, // XXX:Existing Roadmap Outputs
scopecraft/EPICS_AND_STORIES.md (from Stage 2)scopecraft/OPEN_QUESTIONS.mdBacklog Files
BACKLOG.md, TODO.mddocs/backlog/, docs/roadmap/Aligned with the real bd Issue schema (from github.com/steveyegge/beads):
{
"$schema": "bead-v1",
"id": "gt-abc12",
"title": "Add user authentication",
"description": "Implement OAuth2 login flow and session management",
"design": "Use Passport.js with Google and GitHub strategies",
"acceptance_criteria": "User can sign up with email\nUser can sign in with Google OAuth\nSession persists across page refresh",
"notes": "See docs/PRD-auth.md for background",
"issue_type": "feature",
"priority": 1,
"status": "open",
"assignee": "",
"labels": ["auth", "security"],
"dependencies": [],
"metadata": {
"complexity": "L",
"epic": "User Management",
"evidence": {
"source": "docs/PRD-auth.md",
"line": 42,
"extracted": "2026-01-27T10:00:00Z"
}
}
}
Schema notes (from real bd types):
acceptance_criteria is a string (newline-separated), not an arraypriority is an integer: 0=critical, 1=high, 2=medium, 3=low, 4=backlogstatus is open (not pending) — real values: open | in_progress | blocked | deferred | closedissue_type maps directly to bd types (not type)complexity and evidence live in metadata (not top-level bd fields)| Type | Description | Source Indicators |
|---|---|---|
feature | New functionality | PRDs, user stories, feature requests |
bug | Defect fix | FIXME comments, bug issues |
task | Generic work item | TODO comments, operational tasks |
chore | Maintenance, refactoring | HACK comments, tech debt |
epic | Large feature container | Feature areas, milestones |
decision | Architecture decision | ADRs, design docs |
| Value | Label | Description |
|---|---|---|
| 0 | P0 / critical | Blockers, production issues |
| 1 | P1 / high | Sprint priorities |
| 2 | P2 / medium | Normal work (default) |
| 3 | P3 / low | Nice-to-have |
| 4 | P4 / backlog | Future consideration |
| Size | Description | Typical Effort |
|---|---|---|
XS | Trivial change | < 1 hour |
S | Small task | 1-4 hours |
M | Medium task | 1-2 days |
L | Large task | 3-5 days |
XL | Epic-sized | 1-2 weeks |
Bead IDs use the rig prefix + 5-char alphanumeric. For the gastown rig the prefix is gt-:
import random
import string
def generate_bead_id():
chars = string.ascii_lowercase + string.digits
return f"gt-{''.join(random.choices(chars, k=5))}"
Every bead must have:
gt-xxxxx formatLisa's .gt/beads/*.json files are a staging format. To create real bd issues:
# Option 1: Import from a markdown file Lisa generates
bd create --file=.gt/beads/bd-import.md
# Option 2: Create one at a time (for scripting)
bd create "Add user authentication" \
--type=feature --priority=1 \
--acceptance="User can sign up with email\nSession persists" \
--description="Implement OAuth2 login"
# Check unblocked work
bd ready
# Claim and complete
bd update gt-abc12 --status=in_progress
bd close gt-abc12
bd sync # commit beads changes to git
| Rule | Requirement |
|---|---|
| Size | 3-7 beads per convoy (optimal batch) |
| Coherence | Related beads grouped together |
| Dependencies | Respect bead dependency order |
| Parallelization | Independent convoys can run concurrently |
By Epic
By Dependency Chain
By Skill
By Size
{
"$schema": "convoy-v1",
"id": "convoy-001",
"name": "Authentication Sprint",
"description": "Implement core user authentication features",
"beads": ["gt-abc12", "gt-def34", "gt-ghi56"],
"assigned_to": null,
"status": "pending",
"created": "2026-01-27T10:00:00Z",
"gt_convoy_cmd": "gt convoy create \"Authentication Sprint\" gt-abc12 gt-def34 gt-ghi56",
"metadata": {
"epic": "User Management",
"estimated_days": 5
}
}
The gt_convoy_cmd field is the actual gt CLI command to create this convoy in a live Gastown environment. Polecats are assigned via gt sling <bead-id> <rig>.
Convoy IDs: convoy- + 3-digit number
convoy-001, convoy-002, etc.Every convoy must have:
.gt/beads/mkdir -p .gt/beads .gt/convoys
For each source:
.gt/beads/gt-xxxxx.json.gt/convoys/convoy-xxx.jsonpython plugins/lisa/hooks/validate.py --stage structure
| Gate | Requirement |
|---|---|
beads_extracted | At least 1 bead created |
beads_have_criteria | All beads have acceptance_criteria string |
beads_have_sources | All beads have evidence.source |
beads_valid_ids | All IDs match gt-[a-z0-9]{5} pattern |
| Gate | Requirement |
|---|---|
convoy_created | At least 1 convoy created |
convoy_size_valid | All convoys have 3-7 beads |
convoy_beads_exist | All referenced bead IDs exist in .gt/beads/ |
Lisa's .gt/beads/ and .gt/convoys/ are staging directories. The real Gastown toolchain uses:
bd — the beads CLI (issue tracking, Dolt-backed SQL database in .beads/)bv — the graph analysis CLI (read-only, use bv --robot-triage not bare bv)gt — the Gastown workspace manager (convoys, polecats, rigs, worktrees)# 1. Create real bd issues from Lisa's staging beads
# Either run individual bd create commands, or produce a markdown file:
bd create --file=.gt/beads/bd-import.md
# 2. Create a convoy in Gastown from the bead IDs
gt convoy create "Authentication Sprint" gt-abc12 gt-def34 gt-ghi56
# 3. Sling work to polecats (ephemeral workers) or crew
gt sling gt-abc12 <rig> # assign to a polecat on the rig
gt convoy status hq-cv-abc # track convoy progress
# 4. Workers pick up and complete
bd ready # see unblocked work
bd update gt-abc12 --status=in_progress
bd close gt-abc12
bd sync # commit beads changes to git
open → in_progress → closed
↓
blocked
deferred
Gastown agents follow: "If you find something on your hook, YOU RUN IT." When a bead is slotted to a polecat, it executes immediately — no confirmation needed. Lisa's quality gates and acceptance criteria are what make that safe to do.
See templates/ directory for JSON templates:
templates/bead.json - Bead templatetemplates/convoy.json - Convoy templateExpert guidance for Next.js Cache Components and Partial Prerendering (PPR). **PROACTIVE ACTIVATION**: Use this skill automatically when working in Next.js projects that have `cacheComponents: true` in their next.config.ts/next.config.js. When this config is detected, proactively apply Cache Components patterns and best practices to all React Server Component implementations. **DETECTION**: At the start of a session in a Next.js project, check for `cacheComponents: true` in next.config. If enabled, this skill's patterns should guide all component authoring, data fetching, and caching decisions. **USE CASES**: Implementing 'use cache' directive, configuring cache lifetimes with cacheLife(), tagging cached data with cacheTag(), invalidating caches with updateTag()/revalidateTag(), optimizing static vs dynamic content boundaries, debugging cache issues, and reviewing Cache Component implementations.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.