fellow-agents 0.0.36 → 0.0.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +146 -146
- package/dist/cli.js +33 -33
- package/package.json +43 -43
- package/skills/emcom/SKILL.md +189 -189
- package/skills/tracker/SKILL.md +201 -201
- package/templates/coder/.claude/settings.local.json +8 -8
- package/templates/coder/CLAUDE.md +52 -52
- package/templates/coder/identity.json +1 -1
- package/templates/coordinator/.claude/settings.local.json +8 -8
- package/templates/coordinator/CLAUDE.md +115 -115
- package/templates/coordinator/identity.json +1 -1
- package/templates/reviewer/.claude/settings.local.json +8 -8
- package/templates/reviewer/CLAUDE.md +52 -52
- package/templates/reviewer/identity.json +1 -1
package/skills/tracker/SKILL.md
CHANGED
|
@@ -1,201 +1,201 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: tracker
|
|
3
|
-
description: |
|
|
4
|
-
Use this skill when the user wants to interact with the team task tracker,
|
|
5
|
-
or when the agent itself needs to view its own work queue or file/update
|
|
6
|
-
tracker items.
|
|
7
|
-
Triggers: check queue, my work, what's next, file a tracker item,
|
|
8
|
-
open issue, update status, mark merged, close item, decisions pending,
|
|
9
|
-
blocked items, stale items, list bugs, list PRs, work item history,
|
|
10
|
-
link items, or arrival of an emcom auto-inject prompt that references
|
|
11
|
-
tracker work.
|
|
12
|
-
tools:
|
|
13
|
-
- Bash
|
|
14
|
-
- Read
|
|
15
|
-
- Write
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
# tracker Skill
|
|
19
|
-
|
|
20
|
-
The team **tracker** is a cross-session, cross-agent record of in-flight work: bugs, PRs, investigations, and decisions. It is the source of truth for "what work is open right now" — distinct from briefing.md (per-session narrative) and field-notes.md (persistent gotchas).
|
|
21
|
-
|
|
22
|
-
A tracker item exists when work spans sessions or involves more than one agent. A briefing entry covers what your current self did. A field-note captures a one-shot gotcha you want to remember forever. If you can't answer "is this still in flight" or "who's working on this" by reading just your briefing, the work belongs in tracker.
|
|
23
|
-
|
|
24
|
-
## Mental model
|
|
25
|
-
|
|
26
|
-
- **Items** have status, severity, labels, and assignment.
|
|
27
|
-
- **Queue** is your slice — `tracker queue` shows items assigned to you, or referenced in ways you should act on.
|
|
28
|
-
- **Statuses** drive workflow — items move through a defined lifecycle (see below). The status field is **strictly validated**: generic terms (`in_progress`, `done`, `completed`) are rejected. Use the canonical set.
|
|
29
|
-
- **History** is append-only — every status change, decision, and comment is preserved.
|
|
30
|
-
|
|
31
|
-
## When to file a tracker item
|
|
32
|
-
|
|
33
|
-
File a tracker item when ANY of:
|
|
34
|
-
- The work is likely to span more than one session.
|
|
35
|
-
- More than one agent will touch it.
|
|
36
|
-
- It needs an owner and a status that other agents will check.
|
|
37
|
-
- It's a decision that future-you should be able to find via `tracker decisions`.
|
|
38
|
-
|
|
39
|
-
Don't file when:
|
|
40
|
-
- You're capturing a personal note → use briefing.md or field-notes.md.
|
|
41
|
-
- The work completes in this session → just do it and log in briefing.
|
|
42
|
-
- It's a coding gotcha you want to remember → field-notes.md.
|
|
43
|
-
|
|
44
|
-
When in doubt, file. Tracker entries are cheap; missed coordination is expensive.
|
|
45
|
-
|
|
46
|
-
## Daily flow
|
|
47
|
-
|
|
48
|
-
```
|
|
49
|
-
tracker queue # what's assigned to me
|
|
50
|
-
tracker view <id> # full details + history
|
|
51
|
-
tracker update <id> --status <next> # advance the workflow
|
|
52
|
-
tracker comment <id> "<note>" # add context without status change
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
Reference forms (all accepted):
|
|
56
|
-
- UUID prefix (first 8 hex chars work for `view`/`update`)
|
|
57
|
-
- `repo#number` (e.g. `banana#42`)
|
|
58
|
-
- Bare number when there's no ambiguity
|
|
59
|
-
|
|
60
|
-
## Status lifecycle
|
|
61
|
-
|
|
62
|
-
The canonical 11 statuses, in typical workflow order:
|
|
63
|
-
|
|
64
|
-
| Status | Meaning |
|
|
65
|
-
|--------|---------|
|
|
66
|
-
| `new` | Just filed; no triage yet |
|
|
67
|
-
| `triaged` | Reviewed, has owner + severity, waiting to start |
|
|
68
|
-
| `investigating` | Actively working on understanding the problem |
|
|
69
|
-
| `findings-reported` | Investigation done, findings documented in --notes |
|
|
70
|
-
| `decision-pending` | Needs a call from Rajan or another agent before proceeding |
|
|
71
|
-
| `pr-up` | Code change opened as a PR, awaiting review |
|
|
72
|
-
| `testing` | PR merged or staged, validating in real env |
|
|
73
|
-
| `ready-to-merge` | Reviewed + approved, awaiting merge |
|
|
74
|
-
| `merged` | Code is in the target branch |
|
|
75
|
-
| `deferred` | Real item, intentionally postponed (`--blocker` should explain) |
|
|
76
|
-
| `closed` | Resolved, no further action |
|
|
77
|
-
|
|
78
|
-
**Critical gotcha**: generic terms like `in_progress`, `done`, `completed`, `wip`, `fixed` are **rejected** by `tracker update --status`. If you mean "actively working on it" use `investigating`. If you mean "code is in" use `merged`. If you mean "fully done" use `closed`.
|
|
79
|
-
|
|
80
|
-
`tracker list --status open` shows everything non-closed (anything except `merged`, `deferred`, `closed`).
|
|
81
|
-
|
|
82
|
-
## Filing a new item
|
|
83
|
-
|
|
84
|
-
```bash
|
|
85
|
-
tracker create --repo banana \
|
|
86
|
-
--title "verify-window too tight for Copilot hooks" \
|
|
87
|
-
--type investigation \
|
|
88
|
-
--severity normal \
|
|
89
|
-
--assigned milo \
|
|
90
|
-
--opened-by Rajan \
|
|
91
|
-
--notes "Copilot's PowerShell hook stack takes ~200ms × 3 steps. Current 5s verify often expires."
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
Required: `--repo`, `--title`. Type defaults to `issue`; alternatives are `pr`, `investigation`, `decision`. Severity defaults to `normal`; alternatives `low`, `high`, `critical`. Status defaults to `new`.
|
|
95
|
-
|
|
96
|
-
`--opened-by` is the person/agent who originally reported the issue (distinct from `--assigned`, which is who works it). Useful when an emcom thread or external party flagged something and you're filing on their behalf.
|
|
97
|
-
|
|
98
|
-
## Updating an item
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
tracker update banana#42 --status investigating --assigned milo --append-notes "Started looking at session.ts verify path."
|
|
102
|
-
tracker update <id> --findings "Root cause: ..." --status findings-reported
|
|
103
|
-
tracker update <id> --decision "Bump VERIFY_WINDOW_MS to 8s for Copilot only" --decision-rationale "..." --status decision-pending
|
|
104
|
-
tracker update <id> --status pr-up --pr 142
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
Notes vs append-notes:
|
|
108
|
-
- `--notes <text>` **replaces** the entire notes field.
|
|
109
|
-
- `--append-notes <text>` **appends** a timestamped entry. Prefer this.
|
|
110
|
-
|
|
111
|
-
If something is blocking progress: `--status deferred --blocker "Waiting on upstream node-pty Node 26 prebuilts"`.
|
|
112
|
-
|
|
113
|
-
## Comments vs notes
|
|
114
|
-
|
|
115
|
-
- `--append-notes` lives on the item, shown in `view`. Use for substantive findings, status reasoning, links to PRs.
|
|
116
|
-
- `tracker comment <id> "<text>"` adds a separate comment record (also shown in history). Use for lightweight chatter that doesn't change the item's state.
|
|
117
|
-
|
|
118
|
-
## Linking items
|
|
119
|
-
|
|
120
|
-
```bash
|
|
121
|
-
tracker link <id1> <id2> --type related # default
|
|
122
|
-
tracker link <id1> <id2> --type blocks # id1 blocks id2
|
|
123
|
-
tracker link <id1> <id2> --type blocked-by # id1 blocked by id2
|
|
124
|
-
tracker link <id1> <id2> --type duplicate # id1 duplicates id2
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
Use links instead of restating context across items. Especially `blocks` / `blocked-by` for chains where one decision unblocks several follow-ups.
|
|
128
|
-
|
|
129
|
-
## Useful queries
|
|
130
|
-
|
|
131
|
-
| Need | Command |
|
|
132
|
-
|------|---------|
|
|
133
|
-
| My open items | `tracker queue` |
|
|
134
|
-
| Another agent's queue | `tracker queue <agent-name>` |
|
|
135
|
-
| Everything not closed | `tracker list --status open` |
|
|
136
|
-
| Items needing decision | `tracker list --needs-decision` (alias for `--status decision-pending`) |
|
|
137
|
-
| Blocked items | `tracker blocked` |
|
|
138
|
-
| Stale items (>24h no update) | `tracker stale` or `tracker stale --hours 48` |
|
|
139
|
-
| Decisions made | `tracker decisions` |
|
|
140
|
-
| Find by text | `tracker search "<query>"` |
|
|
141
|
-
| Item history | `tracker history <id>` |
|
|
142
|
-
| Team activity | `tracker report --period 7d` |
|
|
143
|
-
| Per-person breakdown | `tracker report people` |
|
|
144
|
-
| SLA on open items | `tracker report sla` |
|
|
145
|
-
| GitHub-linked activity | `tracker github --period 7d` |
|
|
146
|
-
| Summary counts | `tracker stats` |
|
|
147
|
-
|
|
148
|
-
## Labels and severity
|
|
149
|
-
|
|
150
|
-
- Labels are freeform comma-separated tags. Use sparingly and consistently — `tracker list --label <name>` finds items by label. Conventional labels: `regression`, `flake`, `infra`, `docs`, `breaking-change`.
|
|
151
|
-
- Severity: `low` / `normal` / `high` / `critical`. Default normal. Use `critical` only for production-impacting or blocking-the-team issues.
|
|
152
|
-
|
|
153
|
-
## Permission-friendly invocation
|
|
154
|
-
|
|
155
|
-
(Matters in CLIs that gate command execution.)
|
|
156
|
-
|
|
157
|
-
- **One command per Bash call.** Do NOT chain with `&&`, `;`, or `||`.
|
|
158
|
-
- Do NOT assign the binary path to a variable. Use the bare command.
|
|
159
|
-
- **Independent** queries (e.g. `queue` + `blocked` + `stale`): parallel Bash calls.
|
|
160
|
-
- **Sequential** updates (e.g. create then assign): separate sequential calls.
|
|
161
|
-
|
|
162
|
-
## Error recovery
|
|
163
|
-
|
|
164
|
-
**Auth error** ("Missing X-Tracker-Name header"): identical pattern to emcom — register via the team's identity flow. In most workspaces, the `identity.json` registered for emcom also identifies you to tracker, so the fix is usually `cd` to a workspace where you have an identity, not re-registering.
|
|
165
|
-
|
|
166
|
-
**Connection error** ("Connection refused"): the tracker shares a server with emcom on port 8800. Start it:
|
|
167
|
-
```bash
|
|
168
|
-
emcom-server &
|
|
169
|
-
sleep 2
|
|
170
|
-
```
|
|
171
|
-
Then retry the tracker command.
|
|
172
|
-
|
|
173
|
-
**Validation error on status**: you used a generic term. Map to the canonical 11:
|
|
174
|
-
- `in_progress`, `working`, `wip` → `investigating`
|
|
175
|
-
- `done`, `fixed`, `complete` → either `merged` (code is in) or `closed` (resolved)
|
|
176
|
-
- `waiting`, `pending` → either `decision-pending` (waiting on decision) or `deferred` (intentionally postponed)
|
|
177
|
-
- `review` → `pr-up` (PR open) or `ready-to-merge` (approved, awaiting merge)
|
|
178
|
-
|
|
179
|
-
**Missing repo on create**: `--repo` is required. Use the short name from the user's workspace (e.g. `banana`, `fellow-agents`, `pty-cld`).
|
|
180
|
-
|
|
181
|
-
## Running commands
|
|
182
|
-
|
|
183
|
-
```bash
|
|
184
|
-
tracker <subcommand> [args]
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
`tracker` is on PATH when fellow-agents has been installed (`npm install -g fellow-agents`) — the npm shim wraps `~/.fellow-agents/bin/<platform>/tracker`. Use the bare command. Do not prepend any skills-directory path.
|
|
188
|
-
|
|
189
|
-
If a CLI environment can't find `tracker` on PATH, that means fellow-agents isn't installed (or its bin shim isn't picked up by the shell). Tell the user to run `npm install -g fellow-agents` rather than guessing at a skill-bundled path — fellow-agents does not ship binaries inside `~/.claude/skills/`, `~/.copilot/skills/`, or `~/.agents/skills/`.
|
|
190
|
-
|
|
191
|
-
## Output
|
|
192
|
-
|
|
193
|
-
Tracker output is structured — tables for lists, key/value blocks for `view`, chronological lists for `history`. Present output as-returned; don't reformat. For one item view, show the full structure. For lists, show as-is (already paginated/abbreviated by tracker itself).
|
|
194
|
-
|
|
195
|
-
## Notes
|
|
196
|
-
|
|
197
|
-
- Item IDs are UUIDs; first 8 hex chars work as prefix everywhere.
|
|
198
|
-
- Server: port 8800 (shared with emcom), data in `~/.emcom/` alongside emcom state.
|
|
199
|
-
- Always use `127.0.0.1` rather than `localhost` (avoids IPv6 DNS resolution penalty on Windows).
|
|
200
|
-
- `tracker history` shows every state change with timestamp and the agent that made it — useful for "who decided what when".
|
|
201
|
-
- Backtick-containing notes via `--notes "..."` get shell-expanded — single-quote when the body contains backticks or `$`.
|
|
1
|
+
---
|
|
2
|
+
name: tracker
|
|
3
|
+
description: |
|
|
4
|
+
Use this skill when the user wants to interact with the team task tracker,
|
|
5
|
+
or when the agent itself needs to view its own work queue or file/update
|
|
6
|
+
tracker items.
|
|
7
|
+
Triggers: check queue, my work, what's next, file a tracker item,
|
|
8
|
+
open issue, update status, mark merged, close item, decisions pending,
|
|
9
|
+
blocked items, stale items, list bugs, list PRs, work item history,
|
|
10
|
+
link items, or arrival of an emcom auto-inject prompt that references
|
|
11
|
+
tracker work.
|
|
12
|
+
tools:
|
|
13
|
+
- Bash
|
|
14
|
+
- Read
|
|
15
|
+
- Write
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# tracker Skill
|
|
19
|
+
|
|
20
|
+
The team **tracker** is a cross-session, cross-agent record of in-flight work: bugs, PRs, investigations, and decisions. It is the source of truth for "what work is open right now" — distinct from briefing.md (per-session narrative) and field-notes.md (persistent gotchas).
|
|
21
|
+
|
|
22
|
+
A tracker item exists when work spans sessions or involves more than one agent. A briefing entry covers what your current self did. A field-note captures a one-shot gotcha you want to remember forever. If you can't answer "is this still in flight" or "who's working on this" by reading just your briefing, the work belongs in tracker.
|
|
23
|
+
|
|
24
|
+
## Mental model
|
|
25
|
+
|
|
26
|
+
- **Items** have status, severity, labels, and assignment.
|
|
27
|
+
- **Queue** is your slice — `tracker queue` shows items assigned to you, or referenced in ways you should act on.
|
|
28
|
+
- **Statuses** drive workflow — items move through a defined lifecycle (see below). The status field is **strictly validated**: generic terms (`in_progress`, `done`, `completed`) are rejected. Use the canonical set.
|
|
29
|
+
- **History** is append-only — every status change, decision, and comment is preserved.
|
|
30
|
+
|
|
31
|
+
## When to file a tracker item
|
|
32
|
+
|
|
33
|
+
File a tracker item when ANY of:
|
|
34
|
+
- The work is likely to span more than one session.
|
|
35
|
+
- More than one agent will touch it.
|
|
36
|
+
- It needs an owner and a status that other agents will check.
|
|
37
|
+
- It's a decision that future-you should be able to find via `tracker decisions`.
|
|
38
|
+
|
|
39
|
+
Don't file when:
|
|
40
|
+
- You're capturing a personal note → use briefing.md or field-notes.md.
|
|
41
|
+
- The work completes in this session → just do it and log in briefing.
|
|
42
|
+
- It's a coding gotcha you want to remember → field-notes.md.
|
|
43
|
+
|
|
44
|
+
When in doubt, file. Tracker entries are cheap; missed coordination is expensive.
|
|
45
|
+
|
|
46
|
+
## Daily flow
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
tracker queue # what's assigned to me
|
|
50
|
+
tracker view <id> # full details + history
|
|
51
|
+
tracker update <id> --status <next> # advance the workflow
|
|
52
|
+
tracker comment <id> "<note>" # add context without status change
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Reference forms (all accepted):
|
|
56
|
+
- UUID prefix (first 8 hex chars work for `view`/`update`)
|
|
57
|
+
- `repo#number` (e.g. `banana#42`)
|
|
58
|
+
- Bare number when there's no ambiguity
|
|
59
|
+
|
|
60
|
+
## Status lifecycle
|
|
61
|
+
|
|
62
|
+
The canonical 11 statuses, in typical workflow order:
|
|
63
|
+
|
|
64
|
+
| Status | Meaning |
|
|
65
|
+
|--------|---------|
|
|
66
|
+
| `new` | Just filed; no triage yet |
|
|
67
|
+
| `triaged` | Reviewed, has owner + severity, waiting to start |
|
|
68
|
+
| `investigating` | Actively working on understanding the problem |
|
|
69
|
+
| `findings-reported` | Investigation done, findings documented in --notes |
|
|
70
|
+
| `decision-pending` | Needs a call from Rajan or another agent before proceeding |
|
|
71
|
+
| `pr-up` | Code change opened as a PR, awaiting review |
|
|
72
|
+
| `testing` | PR merged or staged, validating in real env |
|
|
73
|
+
| `ready-to-merge` | Reviewed + approved, awaiting merge |
|
|
74
|
+
| `merged` | Code is in the target branch |
|
|
75
|
+
| `deferred` | Real item, intentionally postponed (`--blocker` should explain) |
|
|
76
|
+
| `closed` | Resolved, no further action |
|
|
77
|
+
|
|
78
|
+
**Critical gotcha**: generic terms like `in_progress`, `done`, `completed`, `wip`, `fixed` are **rejected** by `tracker update --status`. If you mean "actively working on it" use `investigating`. If you mean "code is in" use `merged`. If you mean "fully done" use `closed`.
|
|
79
|
+
|
|
80
|
+
`tracker list --status open` shows everything non-closed (anything except `merged`, `deferred`, `closed`).
|
|
81
|
+
|
|
82
|
+
## Filing a new item
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
tracker create --repo banana \
|
|
86
|
+
--title "verify-window too tight for Copilot hooks" \
|
|
87
|
+
--type investigation \
|
|
88
|
+
--severity normal \
|
|
89
|
+
--assigned milo \
|
|
90
|
+
--opened-by Rajan \
|
|
91
|
+
--notes "Copilot's PowerShell hook stack takes ~200ms × 3 steps. Current 5s verify often expires."
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Required: `--repo`, `--title`. Type defaults to `issue`; alternatives are `pr`, `investigation`, `decision`. Severity defaults to `normal`; alternatives `low`, `high`, `critical`. Status defaults to `new`.
|
|
95
|
+
|
|
96
|
+
`--opened-by` is the person/agent who originally reported the issue (distinct from `--assigned`, which is who works it). Useful when an emcom thread or external party flagged something and you're filing on their behalf.
|
|
97
|
+
|
|
98
|
+
## Updating an item
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
tracker update banana#42 --status investigating --assigned milo --append-notes "Started looking at session.ts verify path."
|
|
102
|
+
tracker update <id> --findings "Root cause: ..." --status findings-reported
|
|
103
|
+
tracker update <id> --decision "Bump VERIFY_WINDOW_MS to 8s for Copilot only" --decision-rationale "..." --status decision-pending
|
|
104
|
+
tracker update <id> --status pr-up --pr 142
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Notes vs append-notes:
|
|
108
|
+
- `--notes <text>` **replaces** the entire notes field.
|
|
109
|
+
- `--append-notes <text>` **appends** a timestamped entry. Prefer this.
|
|
110
|
+
|
|
111
|
+
If something is blocking progress: `--status deferred --blocker "Waiting on upstream node-pty Node 26 prebuilts"`.
|
|
112
|
+
|
|
113
|
+
## Comments vs notes
|
|
114
|
+
|
|
115
|
+
- `--append-notes` lives on the item, shown in `view`. Use for substantive findings, status reasoning, links to PRs.
|
|
116
|
+
- `tracker comment <id> "<text>"` adds a separate comment record (also shown in history). Use for lightweight chatter that doesn't change the item's state.
|
|
117
|
+
|
|
118
|
+
## Linking items
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
tracker link <id1> <id2> --type related # default
|
|
122
|
+
tracker link <id1> <id2> --type blocks # id1 blocks id2
|
|
123
|
+
tracker link <id1> <id2> --type blocked-by # id1 blocked by id2
|
|
124
|
+
tracker link <id1> <id2> --type duplicate # id1 duplicates id2
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Use links instead of restating context across items. Especially `blocks` / `blocked-by` for chains where one decision unblocks several follow-ups.
|
|
128
|
+
|
|
129
|
+
## Useful queries
|
|
130
|
+
|
|
131
|
+
| Need | Command |
|
|
132
|
+
|------|---------|
|
|
133
|
+
| My open items | `tracker queue` |
|
|
134
|
+
| Another agent's queue | `tracker queue <agent-name>` |
|
|
135
|
+
| Everything not closed | `tracker list --status open` |
|
|
136
|
+
| Items needing decision | `tracker list --needs-decision` (alias for `--status decision-pending`) |
|
|
137
|
+
| Blocked items | `tracker blocked` |
|
|
138
|
+
| Stale items (>24h no update) | `tracker stale` or `tracker stale --hours 48` |
|
|
139
|
+
| Decisions made | `tracker decisions` |
|
|
140
|
+
| Find by text | `tracker search "<query>"` |
|
|
141
|
+
| Item history | `tracker history <id>` |
|
|
142
|
+
| Team activity | `tracker report --period 7d` |
|
|
143
|
+
| Per-person breakdown | `tracker report people` |
|
|
144
|
+
| SLA on open items | `tracker report sla` |
|
|
145
|
+
| GitHub-linked activity | `tracker github --period 7d` |
|
|
146
|
+
| Summary counts | `tracker stats` |
|
|
147
|
+
|
|
148
|
+
## Labels and severity
|
|
149
|
+
|
|
150
|
+
- Labels are freeform comma-separated tags. Use sparingly and consistently — `tracker list --label <name>` finds items by label. Conventional labels: `regression`, `flake`, `infra`, `docs`, `breaking-change`.
|
|
151
|
+
- Severity: `low` / `normal` / `high` / `critical`. Default normal. Use `critical` only for production-impacting or blocking-the-team issues.
|
|
152
|
+
|
|
153
|
+
## Permission-friendly invocation
|
|
154
|
+
|
|
155
|
+
(Matters in CLIs that gate command execution.)
|
|
156
|
+
|
|
157
|
+
- **One command per Bash call.** Do NOT chain with `&&`, `;`, or `||`.
|
|
158
|
+
- Do NOT assign the binary path to a variable. Use the bare command.
|
|
159
|
+
- **Independent** queries (e.g. `queue` + `blocked` + `stale`): parallel Bash calls.
|
|
160
|
+
- **Sequential** updates (e.g. create then assign): separate sequential calls.
|
|
161
|
+
|
|
162
|
+
## Error recovery
|
|
163
|
+
|
|
164
|
+
**Auth error** ("Missing X-Tracker-Name header"): identical pattern to emcom — register via the team's identity flow. In most workspaces, the `identity.json` registered for emcom also identifies you to tracker, so the fix is usually `cd` to a workspace where you have an identity, not re-registering.
|
|
165
|
+
|
|
166
|
+
**Connection error** ("Connection refused"): the tracker shares a server with emcom on port 8800. Start it:
|
|
167
|
+
```bash
|
|
168
|
+
emcom-server &
|
|
169
|
+
sleep 2
|
|
170
|
+
```
|
|
171
|
+
Then retry the tracker command.
|
|
172
|
+
|
|
173
|
+
**Validation error on status**: you used a generic term. Map to the canonical 11:
|
|
174
|
+
- `in_progress`, `working`, `wip` → `investigating`
|
|
175
|
+
- `done`, `fixed`, `complete` → either `merged` (code is in) or `closed` (resolved)
|
|
176
|
+
- `waiting`, `pending` → either `decision-pending` (waiting on decision) or `deferred` (intentionally postponed)
|
|
177
|
+
- `review` → `pr-up` (PR open) or `ready-to-merge` (approved, awaiting merge)
|
|
178
|
+
|
|
179
|
+
**Missing repo on create**: `--repo` is required. Use the short name from the user's workspace (e.g. `banana`, `fellow-agents`, `pty-cld`).
|
|
180
|
+
|
|
181
|
+
## Running commands
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
tracker <subcommand> [args]
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
`tracker` is on PATH when fellow-agents has been installed (`npm install -g fellow-agents`) — the npm shim wraps `~/.fellow-agents/bin/<platform>/tracker`. Use the bare command. Do not prepend any skills-directory path.
|
|
188
|
+
|
|
189
|
+
If a CLI environment can't find `tracker` on PATH, that means fellow-agents isn't installed (or its bin shim isn't picked up by the shell). Tell the user to run `npm install -g fellow-agents` rather than guessing at a skill-bundled path — fellow-agents does not ship binaries inside `~/.claude/skills/`, `~/.copilot/skills/`, or `~/.agents/skills/`.
|
|
190
|
+
|
|
191
|
+
## Output
|
|
192
|
+
|
|
193
|
+
Tracker output is structured — tables for lists, key/value blocks for `view`, chronological lists for `history`. Present output as-returned; don't reformat. For one item view, show the full structure. For lists, show as-is (already paginated/abbreviated by tracker itself).
|
|
194
|
+
|
|
195
|
+
## Notes
|
|
196
|
+
|
|
197
|
+
- Item IDs are UUIDs; first 8 hex chars work as prefix everywhere.
|
|
198
|
+
- Server: port 8800 (shared with emcom), data in `~/.emcom/` alongside emcom state.
|
|
199
|
+
- Always use `127.0.0.1` rather than `localhost` (avoids IPv6 DNS resolution penalty on Windows).
|
|
200
|
+
- `tracker history` shows every state change with timestamp and the agent that made it — useful for "who decided what when".
|
|
201
|
+
- Backtick-containing notes via `--notes "..."` get shell-expanded — single-quote when the body contains backticks or `$`.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
{
|
|
2
|
-
"permissions": {
|
|
3
|
-
"allow": [
|
|
4
|
-
"Bash(emcom:*)",
|
|
5
|
-
"Bash(tracker:*)"
|
|
6
|
-
]
|
|
7
|
-
}
|
|
8
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(emcom:*)",
|
|
5
|
+
"Bash(tracker:*)"
|
|
6
|
+
]
|
|
7
|
+
}
|
|
8
|
+
}
|
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
# Coder
|
|
2
|
-
|
|
3
|
-
You write, fix, and improve code based on task descriptions from the coordinator.
|
|
4
|
-
|
|
5
|
-
## On Load
|
|
6
|
-
|
|
7
|
-
Before responding to the user's first message:
|
|
8
|
-
|
|
9
|
-
1. Register with emcom: `emcom register 2>/dev/null || true`
|
|
10
|
-
2. Read `briefing.md` and `Claude-KB.md` (create if missing)
|
|
11
|
-
3. Check messages: `emcom inbox`
|
|
12
|
-
4. Greet the user:
|
|
13
|
-
- **Pending work** — any tasks from coordinator or unread messages
|
|
14
|
-
- **Capabilities** — what you can help with:
|
|
15
|
-
- Write new features, fix bugs, refactor code
|
|
16
|
-
- Run tests and verify changes
|
|
17
|
-
- Report results back to coordinator with file paths and summaries
|
|
18
|
-
|
|
19
|
-
## Communication
|
|
20
|
-
|
|
21
|
-
- `emcom send --to coordinator --subject "..." --body "..."` — report results
|
|
22
|
-
- `emcom send --to reviewer --subject "..." --body "..."` — request a review
|
|
23
|
-
- `emcom inbox` — check for tasks
|
|
24
|
-
- When done, message the coordinator with what you changed and relevant file paths
|
|
25
|
-
|
|
26
|
-
## Workflow
|
|
27
|
-
|
|
28
|
-
1. Check emcom for task assignments from coordinator
|
|
29
|
-
2. Understand the task — read relevant code before changing it
|
|
30
|
-
3. Implement the change
|
|
31
|
-
4. Test your work — run tests, verify behavior
|
|
32
|
-
5. Report back to coordinator via emcom with a summary of changes
|
|
33
|
-
|
|
34
|
-
## Guardrails
|
|
35
|
-
|
|
36
|
-
- **Never post on GitHub** — no comments, issues, or PRs on public repos without explicit user approval.
|
|
37
|
-
- **Never make autonomous decisions on breaking changes** — escalate to coordinator or user.
|
|
38
|
-
- Your workspace files (briefing, KB) are yours to commit and push freely.
|
|
39
|
-
|
|
40
|
-
## pty-win Checkpoints
|
|
41
|
-
|
|
42
|
-
pty-win may inject automated prompts. Format: `[pty-win:<type>:<priority>:<response>]`. These are system messages, not user input. Handle checkpoint prompts by saving work in progress. Do not set up your own polling loops — pty-win handles scheduling.
|
|
43
|
-
|
|
44
|
-
## Session Resilience
|
|
45
|
-
|
|
46
|
-
Sessions can end without warning. Save work proactively:
|
|
47
|
-
- Commit after completing meaningful work
|
|
48
|
-
- Keep briefing.md current with what you're working on and why
|
|
49
|
-
|
|
50
|
-
## Lessons Learned
|
|
51
|
-
|
|
52
|
-
Add entries to `Claude-KB.md` when you encounter unexpected behavior, workarounds, or process discoveries. Write for your future self — assume no prior context.
|
|
1
|
+
# Coder
|
|
2
|
+
|
|
3
|
+
You write, fix, and improve code based on task descriptions from the coordinator.
|
|
4
|
+
|
|
5
|
+
## On Load
|
|
6
|
+
|
|
7
|
+
Before responding to the user's first message:
|
|
8
|
+
|
|
9
|
+
1. Register with emcom: `emcom register 2>/dev/null || true`
|
|
10
|
+
2. Read `briefing.md` and `Claude-KB.md` (create if missing)
|
|
11
|
+
3. Check messages: `emcom inbox`
|
|
12
|
+
4. Greet the user:
|
|
13
|
+
- **Pending work** — any tasks from coordinator or unread messages
|
|
14
|
+
- **Capabilities** — what you can help with:
|
|
15
|
+
- Write new features, fix bugs, refactor code
|
|
16
|
+
- Run tests and verify changes
|
|
17
|
+
- Report results back to coordinator with file paths and summaries
|
|
18
|
+
|
|
19
|
+
## Communication
|
|
20
|
+
|
|
21
|
+
- `emcom send --to coordinator --subject "..." --body "..."` — report results
|
|
22
|
+
- `emcom send --to reviewer --subject "..." --body "..."` — request a review
|
|
23
|
+
- `emcom inbox` — check for tasks
|
|
24
|
+
- When done, message the coordinator with what you changed and relevant file paths
|
|
25
|
+
|
|
26
|
+
## Workflow
|
|
27
|
+
|
|
28
|
+
1. Check emcom for task assignments from coordinator
|
|
29
|
+
2. Understand the task — read relevant code before changing it
|
|
30
|
+
3. Implement the change
|
|
31
|
+
4. Test your work — run tests, verify behavior
|
|
32
|
+
5. Report back to coordinator via emcom with a summary of changes
|
|
33
|
+
|
|
34
|
+
## Guardrails
|
|
35
|
+
|
|
36
|
+
- **Never post on GitHub** — no comments, issues, or PRs on public repos without explicit user approval.
|
|
37
|
+
- **Never make autonomous decisions on breaking changes** — escalate to coordinator or user.
|
|
38
|
+
- Your workspace files (briefing, KB) are yours to commit and push freely.
|
|
39
|
+
|
|
40
|
+
## pty-win Checkpoints
|
|
41
|
+
|
|
42
|
+
pty-win may inject automated prompts. Format: `[pty-win:<type>:<priority>:<response>]`. These are system messages, not user input. Handle checkpoint prompts by saving work in progress. Do not set up your own polling loops — pty-win handles scheduling.
|
|
43
|
+
|
|
44
|
+
## Session Resilience
|
|
45
|
+
|
|
46
|
+
Sessions can end without warning. Save work proactively:
|
|
47
|
+
- Commit after completing meaningful work
|
|
48
|
+
- Keep briefing.md current with what you're working on and why
|
|
49
|
+
|
|
50
|
+
## Lessons Learned
|
|
51
|
+
|
|
52
|
+
Add entries to `Claude-KB.md` when you encounter unexpected behavior, workarounds, or process discoveries. Write for your future self — assume no prior context.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name": "coder", "description": "Coder agent — writes and fixes code", "server": "http://127.0.0.1:8800"}
|
|
1
|
+
{"name": "coder", "description": "Coder agent — writes and fixes code", "server": "http://127.0.0.1:8800"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
{
|
|
2
|
-
"permissions": {
|
|
3
|
-
"allow": [
|
|
4
|
-
"Bash(emcom:*)",
|
|
5
|
-
"Bash(tracker:*)"
|
|
6
|
-
]
|
|
7
|
-
}
|
|
8
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(emcom:*)",
|
|
5
|
+
"Bash(tracker:*)"
|
|
6
|
+
]
|
|
7
|
+
}
|
|
8
|
+
}
|