@lifeaitools/rdc-skills 0.28.0 → 0.29.0
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/package.json
CHANGED
|
@@ -65,6 +65,54 @@ write may not be.**
|
|
|
65
65
|
|
|
66
66
|
## What you owe BACK — your responsibilities
|
|
67
67
|
|
|
68
|
+
### 0. Answer the `status` handshake honestly, by PROBING.
|
|
69
|
+
|
|
70
|
+
Before the real conversation starts you will be asked for `COLLAB-STATUS/1`.
|
|
71
|
+
Emit every field. **Capability fields must be probed, not assumed** — actually
|
|
72
|
+
attempt the seam and report the literal result.
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
COLLAB-STATUS/1
|
|
76
|
+
agent: <you>
|
|
77
|
+
engine_version: <version>
|
|
78
|
+
skill_version: <rdc-skills version>
|
|
79
|
+
|
|
80
|
+
--- managed identity (all 8; an absent field IS the diagnosis) ---
|
|
81
|
+
lane: <lane | NONE>
|
|
82
|
+
role: worker | supervisor | NONE
|
|
83
|
+
repo_identity: <repo>
|
|
84
|
+
owner_pid: <pid | NONE>
|
|
85
|
+
owner_start_fingerprint: <present | ABSENT>
|
|
86
|
+
session_id: <id | NONE>
|
|
87
|
+
lease_epoch: <epoch | NONE>
|
|
88
|
+
owner_token: present | ABSENT ← NEVER the value
|
|
89
|
+
|
|
90
|
+
--- capability (PROBED — name the probe) ---
|
|
91
|
+
can_write: yes | no | unknown probe: <what you actually ran>
|
|
92
|
+
can_commit: yes | no | unknown probe: <…>
|
|
93
|
+
can_push: yes | no | unknown probe: <…>
|
|
94
|
+
|
|
95
|
+
--- position ---
|
|
96
|
+
cwd: <path> branch: <branch> head: <sha> dirty: <n tracked files>
|
|
97
|
+
ahead/behind: <n>/<n> vs <named upstream>
|
|
98
|
+
|
|
99
|
+
--- services ---
|
|
100
|
+
codeflow: <status> clauth: <status> work_items: reachable | no
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Rules that make this worth asking for:**
|
|
104
|
+
|
|
105
|
+
- **Never emit the `owner_token` value.** `present`/`ABSENT` only — this output
|
|
106
|
+
lands in transcripts and logs.
|
|
107
|
+
- **`unknown` is an honest answer. `yes` without a probe is not.** If you could
|
|
108
|
+
not test the seam, say `unknown` and name why. A capability you assumed and
|
|
109
|
+
cannot demonstrate is precisely the claim this protocol exists to eliminate.
|
|
110
|
+
- **Report the lane you are ACTUALLY in**, not the one you were asked to be in.
|
|
111
|
+
If they differ, your session identity is poisoned — say so in the same reply.
|
|
112
|
+
That one line saves the initiator an entire wasted round.
|
|
113
|
+
- A missing identity field is not an embarrassment to smooth over. It is the
|
|
114
|
+
most useful thing you can tell the initiator.
|
|
115
|
+
|
|
68
116
|
### 1. Answer in the required format. Nothing outside it.
|
|
69
117
|
|
|
70
118
|
If the dispatch gives you a contract, use it verbatim. Prose around the blocks
|
package/skills/collab/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rdc:collab
|
|
3
|
-
description: "Usage `rdc:collab <collaborator> [inbound] <topic>` — Structured agent-to-agent CONVERSATION with Codex, a local LLM, a Claude agent, or a claude.ai session. Converges on a decision and never writes to the repo — work that needs writing becomes a work item for rdc:build. Every dispatch carries a response contract."
|
|
3
|
+
description: "Usage `rdc:collab <collaborator> [inbound] <topic>` — Structured agent-to-agent CONVERSATION with Codex, a local LLM, a Claude agent, or a claude.ai session. Converges on a decision and never writes to the repo — work that needs writing becomes a work item for rdc:build. Run `rdc:collab status <peer>` first — both sides emit probed capability state. Every dispatch carries a response contract."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
> **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
|
|
@@ -116,8 +116,11 @@ diagnosis ladder in order and stop at the first hit:
|
|
|
116
116
|
2. **Did it exit, and with what?** A non-zero exit or exit 143 (killed) is a
|
|
117
117
|
result, not silence. Read it.
|
|
118
118
|
3. **Was it guard-blocked?** Grep the output for a `deny`/`Blocked` line. The
|
|
119
|
-
`CODEX MANAGED LANE` block is the common one and is a *dispatch* defect
|
|
120
|
-
|
|
119
|
+
`CODEX MANAGED LANE` block is the common one and is a *dispatch* defect, not a
|
|
120
|
+
peer failure. **It is not fixed by `-C`** — the session's identity was recorded
|
|
121
|
+
at creation and `resume` replays it, so a mis-started session is poisoned for
|
|
122
|
+
life. Start a **new** session in the right lane. Had `status` run first
|
|
123
|
+
(Step 0.5), this would have been visible before any content was sent.
|
|
121
124
|
4. **Is the session still addressable?** A stale `resume <session-id>`, a stopped
|
|
122
125
|
chitchat session, or a dead local-LLM endpoint all present as silence.
|
|
123
126
|
5. **Did it answer somewhere you are not reading?** A peer that cannot write its
|
|
@@ -134,8 +137,9 @@ outliving its dispatch is noise, and noise is how a real stall gets ignored.
|
|
|
134
137
|
## Step 0 — Parse arguments
|
|
135
138
|
|
|
136
139
|
```
|
|
137
|
-
rdc:collab <collaborator>
|
|
138
|
-
rdc:collab
|
|
140
|
+
rdc:collab status <collaborator> ← handshake; run BEFORE round 1
|
|
141
|
+
rdc:collab <collaborator> [inbound] <topic…>
|
|
142
|
+
rdc:collab --session <id> ← legacy form, implies `claude-ai inbound`
|
|
139
143
|
```
|
|
140
144
|
|
|
141
145
|
- No collaborator → list active chitchat sessions and available engines, then stop.
|
|
@@ -146,6 +150,73 @@ rdc:collab --session <id> ← legacy form, implies `claude-ai listen`
|
|
|
146
150
|
|
|
147
151
|
---
|
|
148
152
|
|
|
153
|
+
## Step 0.5 — `status` handshake (run BEFORE round 1)
|
|
154
|
+
|
|
155
|
+
`rdc:collab status <collaborator>` — both sides emit their state. **This is a
|
|
156
|
+
precondition, not a debugging command.** Reaching for it after a failure is
|
|
157
|
+
already too late; the point is to never dispatch into a session that cannot
|
|
158
|
+
deliver.
|
|
159
|
+
|
|
160
|
+
**The probe rule — the whole value of this step.** Every capability field is
|
|
161
|
+
**PROBED, never asserted.** A peer that *reports* `can_write: yes` from an
|
|
162
|
+
assumption has produced another unverified capability claim, which is the defect
|
|
163
|
+
class this entire protocol exists to remove. `-C` "should" have set lane identity
|
|
164
|
+
too. Probe the seam, report the literal result, and if you cannot probe, say
|
|
165
|
+
`unknown` — never `yes`.
|
|
166
|
+
|
|
167
|
+
### `COLLAB-STATUS/1` payload
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
COLLAB-STATUS/1
|
|
171
|
+
agent: codex | claude-code | claude-ai | local-llm
|
|
172
|
+
engine_version: <version>
|
|
173
|
+
skill_version: <rdc-skills version>
|
|
174
|
+
|
|
175
|
+
--- managed identity (the 8 fields; absent ones are the diagnosis) ---
|
|
176
|
+
lane: <lane | NONE>
|
|
177
|
+
role: worker | supervisor | NONE
|
|
178
|
+
repo_identity: <repo>
|
|
179
|
+
owner_pid: <pid | NONE>
|
|
180
|
+
owner_start_fingerprint: <present | ABSENT>
|
|
181
|
+
session_id: <id | NONE>
|
|
182
|
+
lease_epoch: <epoch | NONE>
|
|
183
|
+
owner_token: present | ABSENT ← NEVER the value
|
|
184
|
+
|
|
185
|
+
--- capability (PROBED — state the probe used) ---
|
|
186
|
+
can_write: yes | no | unknown probe: <what you actually ran>
|
|
187
|
+
can_commit: yes | no | unknown probe: <…>
|
|
188
|
+
can_push: yes | no | unknown probe: <…>
|
|
189
|
+
|
|
190
|
+
--- position ---
|
|
191
|
+
cwd: <path>
|
|
192
|
+
branch: <branch>
|
|
193
|
+
head: <sha>
|
|
194
|
+
dirty: <n tracked files>
|
|
195
|
+
ahead/behind: <n>/<n> vs <named upstream>
|
|
196
|
+
|
|
197
|
+
--- services ---
|
|
198
|
+
codeflow: <status> clauth: <status> work_items: reachable | no
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
**`owner_token` reports `present`/`ABSENT` only. Never emit the value** — status
|
|
202
|
+
output lands in transcripts and logs.
|
|
203
|
+
|
|
204
|
+
### How the initiator reads it
|
|
205
|
+
|
|
206
|
+
| Signal | Meaning | Action |
|
|
207
|
+
|---|---|---|
|
|
208
|
+
| `lane: NONE` or missing identity fields | No managed identity was ever minted | Conversation only. Do not name this peer as writer. |
|
|
209
|
+
| `can_write: no` | Structurally read-only right now | Fine for collab. Name someone else to land the outcome. |
|
|
210
|
+
| `can_write: unknown` | It could not probe | Treat as `no` until proven. Never as `yes`. |
|
|
211
|
+
| `lane` ≠ the lane you dispatched to | **Poisoned session** — identity is recorded at creation and `resume` replays it | Start a NEW session. `-C` will not repair it. |
|
|
212
|
+
| `dirty` > 0 on a peer you are about to name as writer | Pre-existing uncommitted work | Surface it before it gets swept into your commit |
|
|
213
|
+
|
|
214
|
+
**Mismatch between what you dispatched and what `status` reports is the single
|
|
215
|
+
highest-value signal in this protocol.** It is exactly the failure that cost a
|
|
216
|
+
full negotiation on 2026-08-14, and it is visible in one line here.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
149
220
|
## Step 1 — Collaborator matrix
|
|
150
221
|
|
|
151
222
|
Resolve the transport BEFORE composing the message. Getting this wrong is the
|