1
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
2
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
name: project-setup
3
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
description: Wire any project repo for scuttlebot IRC coordination — creates .scuttlebot.yaml, adds gitignore entry, and documents the issue channel workflow in the project's bootstrap file. Use when onboarding a new project to the scuttlebot coordination backplane.
4
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
5
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
6
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Project Setup for Scuttlebot Coordination
7
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
8
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Use this skill to wire a project repo into the scuttlebot coordination backplane.
9
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
This sets up per-project IRC channels and the issue-based workflow so agents
10
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
working in the repo automatically coordinate through scuttlebot.
11
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
12
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## What this skill does
13
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
14
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
1. Creates `.scuttlebot.yaml` in the project root (gitignored)
15
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
2. Adds `.scuttlebot.yaml` to `.gitignore`
16
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3. Adds an IRC coordination section to the project's bootstrap doc
17
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
18
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Channel hierarchy
19
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
20
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Every project uses three channel tiers:
21
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
22
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Tier | Channel | Purpose | Lifecycle |
23
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|------|---------|---------|-----------|
24
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| General | `#general` | Cross-project coordination, operator chatter | Always joined |
25
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Project | `#<project-name>` | Project-specific coordination, status, discussion | Joined at relay startup via `.scuttlebot.yaml` |
26
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Issue | `#issue-<N>` | Solo work channel for a specific GitHub issue | `/join` when starting, `/part` when done |
27
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
28
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Per-repo config: `.scuttlebot.yaml`
29
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
30
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Created in the project root, gitignored. The relay reads this at startup and
31
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
merges its channels into the session channel set.
32
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
33
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```yaml
34
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# .scuttlebot.yaml — per-repo scuttlebot relay config (gitignored)
35
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
channel: <project-name>
36
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
37
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
38
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
That's it. One field. The relay handles the rest.
39
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
40
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Optional additional channels:
41
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
42
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```yaml
43
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
channel: <project-name>
44
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
channels:
45
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- ops
46
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- deployments
47
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
48
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
49
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Issue channel workflow
50
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
51
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
When an agent picks up a GitHub issue, it should:
52
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
53
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
1. `/join #issue-<N>` — join the issue channel (auto-created if it doesn't exist)
54
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
2. Work in that channel — all activity mirrors there
55
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3. `/part #issue-<N>` — leave when the issue is closed or work is complete
56
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
57
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
This gives operators per-issue observability. Multiple agents on different issues
58
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
work in isolation. An operator can watch `#kohakku` for project-level activity or
59
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
drill into `#issue-42` for a specific task.
60
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
61
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Bootstrap doc section
62
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
63
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Add this to the project's `bootstrap.md` (or equivalent conventions doc):
64
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
65
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```markdown
66
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## IRC Coordination
67
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
68
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
This project uses scuttlebot for agent coordination via IRC.
69
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
70
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Channels
71
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
72
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `#general` — cross-project coordination (always joined)
73
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `#<project-name>` — project coordination (auto-joined via `.scuttlebot.yaml`)
74
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `#issue-<N>` — per-issue work channel (join/part dynamically)
75
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
76
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Issue workflow
77
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
78
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
When you start working on a GitHub issue:
79
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
80
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
1. Join the issue channel: send `/join #issue-<N>` where N is the issue number
81
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
2. Do your work — activity is mirrored to both the project channel and the issue channel
82
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3. When done, part the issue channel: send `/part #issue-<N>`
83
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
84
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Setup
85
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
86
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The `.scuttlebot.yaml` file in the project root configures the relay to auto-join
87
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
the project channel. This file is gitignored — each developer/agent creates their
88
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
own. The relay config at `~/.config/scuttlebot-relay.env` provides the server
89
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
URL, token, and transport settings.
90
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
91
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
92
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Step-by-step setup
93
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
94
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### For a new project
95
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
96
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Given a project named `myproject` in a repo at `/path/to/myproject`:
97
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
98
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
1. Create `.scuttlebot.yaml`:
99
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```yaml
100
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
channel: myproject
101
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
102
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
103
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
2. Add to `.gitignore`:
104
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
105
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
.scuttlebot.yaml
106
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
107
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
108
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3. Add the IRC Coordination section to the project's bootstrap doc.
109
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
110
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
4. Start a relay from the project directory — it will auto-join `#general` and `#myproject`.
111
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
112
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### For an existing project
113
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
114
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Same steps. The relay picks up `.scuttlebot.yaml` on next startup. No server-side
115
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
config needed — channels are created on demand by Ergo when the first user joins.
116
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
117
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## What NOT to put in `.scuttlebot.yaml`
118
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
119
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Tokens or credentials (use `~/.config/scuttlebot-relay.env`)
120
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Server URL (use the global relay config)
121
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Transport settings (use the global relay config)
122
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
123
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The per-repo file is only for channel routing. Everything else is global.
124
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!