special-agents 0.8.4 → 0.8.5
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.
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: handoff
|
|
3
|
+
description: Stage a structured cumulative Builder handoff when Rafi requests one or when the Builder must explicitly request a fresh session. Do not use for ordinary progress summaries.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Handoff
|
|
7
|
+
|
|
8
|
+
Use this skill only at a safe action boundary. Produce staged structured output; Rafi validates it, publishes durable content, starts the successor, and moves ownership.
|
|
9
|
+
|
|
10
|
+
- Never claim that a handoff completed or start, resume, close, or transfer a session yourself.
|
|
11
|
+
- Include cumulative facts needed to continue, including earlier decisions and failures—not only the last turn.
|
|
12
|
+
- Do not include credentials, hidden reasoning, raw transcripts, or unbounded logs.
|
|
13
|
+
- An ordinary summary is not a handoff request.
|
|
14
|
+
|
|
15
|
+
For a host-requested handoff or a Builder-requested transfer, read [references/protocol-v1.md](references/protocol-v1.md). Use [references/manifest-v1.schema.json](references/manifest-v1.schema.json) as the exact staged-output schema.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://rafi.dev/schemas/handoff-request-v1.json",
|
|
4
|
+
"title": "Rafi staged handoff request v1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"version", "reason", "decisions", "constraints", "discoveries",
|
|
9
|
+
"completed_actions", "evidence", "failures", "blockers", "open_work",
|
|
10
|
+
"next_action", "role_state"
|
|
11
|
+
],
|
|
12
|
+
"properties": {
|
|
13
|
+
"version": { "const": 1 },
|
|
14
|
+
"reason": { "type": "string", "minLength": 1, "maxLength": 2000 },
|
|
15
|
+
"decisions": { "$ref": "#/$defs/stringList" },
|
|
16
|
+
"constraints": { "$ref": "#/$defs/stringList" },
|
|
17
|
+
"discoveries": { "$ref": "#/$defs/stringList" },
|
|
18
|
+
"completed_actions": { "$ref": "#/$defs/stringList" },
|
|
19
|
+
"evidence": { "$ref": "#/$defs/stringList" },
|
|
20
|
+
"failures": { "$ref": "#/$defs/stringList" },
|
|
21
|
+
"blockers": { "$ref": "#/$defs/stringList" },
|
|
22
|
+
"open_work": { "$ref": "#/$defs/stringList" },
|
|
23
|
+
"next_action": { "type": "string", "minLength": 1, "maxLength": 4000 },
|
|
24
|
+
"role_state": { "type": "object" }
|
|
25
|
+
},
|
|
26
|
+
"$defs": {
|
|
27
|
+
"stringList": {
|
|
28
|
+
"type": "array",
|
|
29
|
+
"maxItems": 500,
|
|
30
|
+
"items": { "type": "string", "minLength": 1, "maxLength": 4000 }
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Rafi handoff protocol v1
|
|
2
|
+
|
|
3
|
+
At the next safe boundary, settle the current tool/action and emit exactly one envelope:
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
RAFI_HANDOFF_REQUEST_START
|
|
7
|
+
{"version":1,"reason":"...","decisions":[],"constraints":[],"discoveries":[],"completed_actions":[],"evidence":[],"failures":[],"blockers":[],"open_work":[],"next_action":"...","role_state":{}}
|
|
8
|
+
RAFI_HANDOFF_REQUEST_END
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
The JSON must be a single object conforming to `manifest-v1.schema.json`.
|
|
12
|
+
|
|
13
|
+
- `reason` explains why a genuinely fresh session is needed.
|
|
14
|
+
- Record verified work and evidence precisely enough to avoid repeating side effects.
|
|
15
|
+
- Mark an uncertain in-flight operation as unknown; never infer completion.
|
|
16
|
+
- `next_action` must advance the frozen objective.
|
|
17
|
+
- Do not add `HANDOFF_ACCEPTED`; only a fresh successor can accept Rafi's published bundle.
|
|
18
|
+
|
|
19
|
+
After emitting the envelope, stop. Rafi may reject it, request a repair, pause a third consecutive unproductive request, or validate and transfer it.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "special-agents",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.5",
|
|
4
4
|
"description": "Rafi library: composable best-practice rules, skills, and agents for Claude Code and Codex.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"node": ">=20"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"rafi-spec": "0.8.
|
|
39
|
+
"rafi-spec": "0.8.5",
|
|
40
40
|
"ajv": "^8.20.0",
|
|
41
41
|
"yaml": "^2.5.1"
|
|
42
42
|
},
|