gastown-rig-setup

Add a Git repository as a Gas Town rig with Dolt-native beads integration. The process requires seeding .beads/ in the upstream repo first, then adding the rig, initializing Dolt, and configuring remotes.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "gastown-rig-setup" with this command: npx skills add xexr/marketplace/xexr-marketplace-gastown-rig-setup

Gas Town Rig Setup

Overview

Add a Git repository as a Gas Town rig with Dolt-native beads integration. The process requires seeding .beads/ in the upstream repo first, then adding the rig, initializing Dolt, and configuring remotes.

Why seed .beads/ first? gt rig add behaves differently depending on whether the cloned repo has a tracked .beads/ directory. Seeding ensures the correct code path runs. See "Why Seeding Matters" below for the technical details.

When to Use

  • Adding a new repository as a Gas Town rig

  • User says "add a rig", "set up a rig", "onboard this repo"

When NOT to Use

  • Setting up beads in a standalone repo (use beads-setup skill)

  • Migrating an existing rig from SQLite to Dolt (see MEMORY.md migration notes)

Prerequisites

Before starting, confirm with the user:

  • Rig name - Short, single-word, no hyphens (hyphens cause SQL quoting issues). E.g., toolkit not gt-toolkit .

  • Beads prefix - 2-3 letter abbreviation. E.g., tk . Must not conflict with existing prefixes in ~/gt/.beads/routes.jsonl .

  • Git remote URL - SSH (git@github.com:Org/repo.git ) or HTTPS (https://github.com/Org/repo.git ). Both work with gt rig add .

Check existing prefixes:

cat ~/gt/.beads/routes.jsonl

Steps

  1. Clone repo into ~/projects/

cd ~/projects && git clone <SSH_URL> <repo-dir-name>

  1. Seed minimal .beads/ in the clone

Create four files using an existing rig as template (e.g., ~/projects/onyx/.beads/ ):

.beads/.gitignore — Copy from template rig verbatim.

.beads/config.yaml :

sync.mode: "dolt-native"

.beads/metadata.json — Set dolt_database to the rig name:

{ "backend": "dolt", "database": "dolt", "dolt_database": "<RIG_NAME>", "dolt_mode": "server", "dolt_server_port": 3307 }

.beads/README.md — Copy from template rig verbatim.

  1. Commit and push .beads/

cd ~/projects/<repo-dir> git add .beads/ git commit -m "feat: add minimal .beads/ for Gastown rig integration" git push

  1. Add the rig

gt rig add <RIG_NAME> <SSH_URL> --prefix <PREFIX>

This creates ~/gt/<RIG_NAME>/ with the full rig structure (mayor/rig, crew/, refinery/, witness/, polecats/).

  1. Initialize the Dolt database

gt dolt init-rig <RIG_NAME>

Creates ~/gt/.dolt-data/<RIG_NAME>/ .

  1. Restart Dolt server

gt dolt stop && gt dolt start

Verify the new database appears:

gt dolt list

STOP if the rig database doesn't appear. Investigate before proceeding.

  1. Configure Dolt remote

mkdir -p ~/dolt-remotes/<RIG_NAME> cd ~/gt/.dolt-data/<RIG_NAME> && dolt remote add origin file:///home/xexr/dolt-remotes/<RIG_NAME> cd ~/gt/.dolt-data/<RIG_NAME> && dolt push origin main

  1. Verify configuration

Check these files have correct values:

File Key fields

~/gt/<RIG_NAME>/config.json

git_url , prefix

~/gt/<RIG_NAME>/.beads/redirect

Points to mayor/rig/.beads

~/gt/<RIG_NAME>/mayor/rig/.beads/metadata.json

dolt_database: "<RIG_NAME>" , dolt_mode: "server" , dolt_server_port: 3307

  1. Run diagnostics

cd ~/gt/<RIG_NAME>/mayor/rig && bd doctor gt doctor

Investigate and fix any issues before declaring complete.

Known false positive: bd doctor reports ✖ Database: No dolt database found in server mode. This is cosmetic — it checks for a local .beads/dolt/ directory which doesn't exist when using the centralized Dolt server at .dolt-data/ . Verify actual connectivity with bd list instead; if that returns results, the database is working.

Verification Checklist

[ ] gt rig list — shows new rig [ ] gt dolt list — shows new database [ ] bd list — returns results (from within rig's mayor/rig/) [ ] gt doctor — passes (marketplace-related checks) [ ] ~/dolt-remotes/<RIG_NAME>/ — has data after push [ ] cat ~/gt/.dolt-data/<RIG_NAME>/.dolt/repo_state.json — shows origin remote

Common Mistakes

Mistake Fix

Hyphen in rig name (gt-toolkit ) Use single word (toolkit ). Hyphens require SQL backtick quoting everywhere.

Skipping .beads/ seeding Without seeding, bd init writes dolt_database: "beads_<prefix>" which mismatches the actual database name. See "Why Seeding Matters".

Forgetting to restart Dolt New database won't be visible until gt dolt stop && gt dolt start .

Prefix conflicts Check routes.jsonl before choosing. Conflicts cause routing errors.

Not pushing .beads/ before gt rig add

The clones created by gt rig add pull from remote. If .beads/ isn't pushed, they won't have it.

Treating bd doctor "No dolt database found" as real False positive in server mode — checks for local .beads/dolt/ not the centralized server. Use bd list to verify connectivity instead.

Why Seeding Matters

gt rig add (internal/rig/manager.go:AddRig ) takes two different code paths depending on whether the cloned repo has a tracked .beads/ directory. The unseeded path has a database naming bug that breaks Dolt connectivity.

The bug in the unseeded path

When .beads/ is NOT in the repo, the following sequence creates a name mismatch:

  • doltserver.InitRig(townRoot, "toolkit") at manager.go:485 creates a Dolt database named toolkit

  • InitBeads at manager.go:765 runs bd init --prefix tk --server (no existing .beads/ to redirect to)

  • bd init at init.go:457 writes dolt_database: "beads_tk" to metadata.json — this is bd's own naming convention ("beads_" + prefix )

  • EnsureMetadata at doltserver.go:1570 checks if dolt_database == nil || == "" — it's "beads_tk" , so it does not override

  • Result: metadata.json says dolt_database: "beads_tk" but the actual database is "toolkit" . bd cannot connect.

How seeding prevents this

When .beads/ IS in the repo (with the correct dolt_database: "<RIG_NAME>" in metadata.json ):

  • After cloning into mayor/rig/ , the code detects .beads/ at manager.go:419

  • doltserver.InitRig at manager.go:485 creates database "toolkit" and calls EnsureMetadata — which finds mayor/rig/.beads/metadata.json already has the correct dolt_database: "toolkit" and leaves it alone

  • InitBeads at manager.go:734 sees mayor/rig/.beads exists → creates a redirect file at <rig>/.beads/redirect → mayor/rig/.beads → returns early without running bd init (so the correct dolt_database is never overwritten)

  • Route registration at manager.go:644 sets the route path to <name>/mayor/rig

  • EnsureMetadata at manager.go:503 confirms dolt_mode: "server" , dolt_database: "toolkit" — all correct

Result: mayor/rig/.beads/ is the canonical beads location (tracked in git). The rig-level .beads/redirect points all agents there. The database name matches. Config persists across clones.

Summary

Seeding .beads/ with the correct metadata.json is not just a preference — it's a workaround for a bug where bd init --server writes dolt_database: "beads_<prefix>" which conflicts with the centralized Dolt database named <rigName> . Without seeding, bd connects to a non-existent database.

Quick Reference

Full sequence for adding rig "myrig" with prefix "mr" from git@github.com:Org/repo.git

1. Clone and seed

cd ~/projects && git clone git@github.com:Org/repo.git repo-dir

Create .beads/ files (see Step 2 above)

cd ~/projects/repo-dir && git add .beads/ && git commit -m "feat: add .beads/" && git push

2. Add rig + init dolt

gt rig add myrig git@github.com:Org/repo.git --prefix mr gt dolt init-rig myrig gt dolt stop && gt dolt start gt dolt list # verify "myrig" appears

3. Configure remote

mkdir -p ~/dolt-remotes/myrig cd ~/gt/.dolt-data/myrig && dolt remote add origin file:///home/xexr/dolt-remotes/myrig cd ~/gt/.dolt-data/myrig && dolt push origin main

4. Verify

cd ~/gt/myrig/mayor/rig && bd doctor gt doctor

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

design-to-beads

No summary provided by upstream source.

Repository SourceNeeds Review
General

doctor-triage

No summary provided by upstream source.

Repository SourceNeeds Review
General

gastown-upstream-sync

No summary provided by upstream source.

Repository SourceNeeds Review
General

skill-creator

No summary provided by upstream source.

Repository SourceNeeds Review