@sjawhar/opencode-legion-envoy 8.17.0 → 8.17.1
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 +1 -1
- package/skills/dispatch/SKILL.md +107 -409
- package/skills/dispatch/references/api.md +16 -48
- package/skills/dispatch/references/asks.md +19 -78
- package/skills/dispatch/references/document-edits.md +38 -187
- package/skills/dispatch/references/documents.md +32 -224
- package/skills/dispatch/references/examples.md +10 -27
- package/skills/dispatch/references/issues.md +34 -196
- package/skills/dispatch/references/messages.md +13 -58
- package/skills/dispatch/references/reading.md +10 -45
- package/skills/dispatch-brainstorming/SKILL.md +34 -99
- package/skills/dispatch-first/SKILL.md +16 -34
|
@@ -1,121 +1,56 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: dispatch-brainstorming
|
|
3
|
-
description: "Use
|
|
3
|
+
description: "Use when a session with Dispatch starts a design conversation with a person: brainstorming, /brainstorming or \"let's design\". Also use it there for a spec, an implementation plan, or a change that needs a person's choices. It replaces superpowers' brainstorming and writing-plans. A Legion architect's own spec follows skill://legion-architect instead."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Brainstorming in Dispatch
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
spec: an architect follows `skill://legion-architect` for that, even for a child issue.
|
|
8
|
+
A Legion architect's own issue spec, a child's too, follows `skill://legion-architect`. A Legion phase worker never writes the spec: it sends the decision to its architect (`skill://legion-worker`).
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
follows is a document on the same issue. This skill replaces superpowers' `brainstorming` and
|
|
13
|
-
`writing-plans` there, even when the user invokes one of them by name:
|
|
10
|
+
This skill replaces superpowers' `brainstorming` and `writing-plans`, even when the user names one:
|
|
14
11
|
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
nothing about where the conversation happens.
|
|
21
|
-
- The spec is the issue's primary document and the plan is its `plan.md` document, in place of
|
|
22
|
-
superpowers' spec and plan files (`docs/superpowers/specs/`, `docs/superpowers/plans/`). A copy
|
|
23
|
-
also goes in the repository only when the person, the issue, its spec or the repository asks for
|
|
24
|
-
one.
|
|
12
|
+
- The spec is the issue's primary document, the plan its `plan.md`. No `docs/superpowers/` files.
|
|
13
|
+
- Each design question is a decision block in the spec, never a chat question. A small change gets a short spec.
|
|
14
|
+
- Send every ready question at once. Request approval once, at the end.
|
|
15
|
+
- Ask in stages: clarifying questions, two or three approaches with a recommendation, the design by section. A question that depends on no open answer goes out at once.
|
|
16
|
+
- Copy the spec, plan or spec code into the repository only when the person, the issue, its spec or the repository asks.
|
|
25
17
|
|
|
26
|
-
|
|
27
|
-
approaches with a recommendation, then the design section by section. A question that depends on
|
|
28
|
-
no open answer goes out at once, whatever its stage.
|
|
29
|
-
|
|
30
|
-
Read `skill://dispatch` before the first version: its "Writing a spec", "Decision blocks",
|
|
31
|
-
"Writing for the human" and "Approval of a spec" sections define the spec's shape, each block's
|
|
32
|
-
shape, and when approval is requested. A Legion phase worker never writes the issue's spec
|
|
33
|
-
document; it sends a decision to its architect (`skill://legion-worker`).
|
|
18
|
+
Before the first version, read the code and documents the design touches. Before the first version, also read the `skill://dispatch` sections "Writing a spec", "Decision blocks", "Writing for the human" and "Approval of a spec".
|
|
34
19
|
|
|
35
20
|
## Where the spec lives
|
|
36
21
|
|
|
37
|
-
Search
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
dispatch issue --project <KEY> --title '<title>' --spec-file - <<'EOF'
|
|
44
|
-
<the spec's first version>
|
|
45
|
-
EOF
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
No command lists every project, so when nothing you found names one, ask the human in chat which
|
|
49
|
-
project the issue belongs in before you create it — a filing question with nowhere else to land
|
|
50
|
-
yet, not a design question, so it does not change "your reply in chat links the issue and asks
|
|
51
|
-
nothing" for the design itself. Never read the project from the environment, a configuration file,
|
|
52
|
-
or the Dispatch HTTP API: every read and write goes through a `dispatch` command.
|
|
53
|
-
|
|
54
|
-
Before the first version, read the code and documents the design touches, so the facts you write
|
|
55
|
-
are ones you checked.
|
|
22
|
+
1. Search first (`skill://dispatch-first`). If an issue tracks the work, extend its primary document with `dispatch doc-edit`, keeping the human's text.
|
|
23
|
+
2. Else run `dispatch issue --project <KEY> --title '<title>' --spec-file -` in the project a search hit names.
|
|
24
|
+
3. If no hit names a project, ask the human in chat which one (`dispatch projects` lists them). This is a filing question, not a design question.
|
|
25
|
+
4. Use only `dispatch` commands. Never get the project from the environment, a configuration file or the Dispatch HTTP API.
|
|
56
26
|
|
|
57
27
|
## Each turn
|
|
58
28
|
|
|
59
|
-
1. **
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
point the human has not stated, however obvious it seems (what a word in the request means, how
|
|
65
|
-
an edge case behaves, what a change does to an existing command), goes inside a decision block
|
|
66
|
-
or stays out. This is stricter than `skill://dispatch`'s general rule for an inferred point
|
|
67
|
-
elsewhere in a spec ("a point you inferred says so, with the reasoning"): in a live conversation
|
|
68
|
-
nothing is settled until the human has seen it, so even a flagged inference waits for its own
|
|
69
|
-
decision block.
|
|
70
|
-
2. **The human answers or comments.** Reply to each human comment in its thread
|
|
71
|
-
(`dispatch comment --reply-to <comment id>`), then rewrite the passage the answer or the comment
|
|
72
|
-
changes. Under an open ask whose next move is yours, such as the approval request you must
|
|
73
|
-
revise or hand back, reply with `--reply-to-ask <ask id> --turn agent` instead: a `--reply-to`
|
|
74
|
-
reply takes the default turn, which hands the request back to the human unchanged, and a call
|
|
75
|
-
with a corrected `--summary` is refused while it waits on them.
|
|
76
|
-
3. **Each next version keeps answers in place and adds what they open.** An answered decision
|
|
77
|
-
block already carries its own record, as `skill://dispatch`'s "Writing a spec" says; leave it
|
|
78
|
-
where it is. Where an answer changes design text elsewhere in the spec, rewrite that text. Then
|
|
79
|
-
add the next sections, each with its question. Every question that is ready goes out
|
|
80
|
-
at once, each as a decision block at the end of the section that sets it up; a question waits
|
|
81
|
-
only when it depends on an answer still open.
|
|
82
|
-
4. **A comment that answers a question settles it** as surely as the block does. It carries no
|
|
83
|
-
rendered record, so write it into the text at once, recording the person as `skill://dispatch`'s
|
|
84
|
-
"Writing a spec" says, and close the block with `dispatch resolve-ask` if the human has not.
|
|
85
|
-
5. **Request approval at the end, not after each section.** Once nothing in the spec is new to the
|
|
86
|
-
human, request it exactly when "Approval of a spec" in `skill://dispatch` says: every decision
|
|
87
|
-
block settled, the human has agreed to every point in the spec, and the current
|
|
88
|
-
version is not yet approved (or waived, as that section's next paragraph covers). The request
|
|
89
|
-
carries nothing new, as that section also says.
|
|
29
|
+
1. **First version: only what the human settled.** Write the problem, its evidence, the human's words and the facts the questions need. Add each ready question as a block at the end of its section. Write no design, no default you chose, and no recommendation outside a block. A point the human did not state goes in a block or stays out, however obvious. A flagged inference waits too.
|
|
30
|
+
2. **Reply to each comment in its thread** (`dispatch comment --reply-to <comment id>`), then rewrite what it changes. When the next move on an open ask is yours, such as an approval request to revise, use `--reply-to-ask <ask id> --turn agent`.
|
|
31
|
+
3. **Each next version keeps answered blocks in place** and rewrites every passage a decision changes. The spec records the current design and requirements, never how you got there. Then add the next sections and their ready questions.
|
|
32
|
+
4. **A comment that answers a question settles it.** Write the answer into the text at once, as "Writing a spec" says. Close the block with `dispatch resolve-ask` if it is still open.
|
|
33
|
+
5. **Request approval** when nothing in the spec is new to the human, as "Approval of a spec" says.
|
|
90
34
|
|
|
91
35
|
## Coming to terms
|
|
92
36
|
|
|
93
|
-
|
|
94
|
-
enough for the human to react to and with each tool, event and route it uses named exactly (as
|
|
95
|
-
"Writing for the human" in `skill://dispatch` says), and ask; the human's model comes out of those
|
|
96
|
-
reactions, and so do corrections to it. Neither your model nor theirs is the starting truth.
|
|
37
|
+
Explain plainly what the code does now, naming each tool, event and route exactly, and ask. Neither model is true at the start: the human's reactions give their model and its corrections.
|
|
97
38
|
|
|
98
|
-
##
|
|
99
|
-
|
|
100
|
-
Once the spec is approved — or, when the issue needed no spec at all (a bug fix with no design
|
|
101
|
-
decision), once you have enough to plan from — the implementation plan is the issue's `plan.md`
|
|
102
|
-
document, never its spec:
|
|
39
|
+
## Handing over a spec or plan
|
|
103
40
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
41
|
+
1. Start your chat reply with:
|
|
42
|
+
1. Each decision the human must make: options, trade-offs and your recommendation, clear without the document. The human answers in the block.
|
|
43
|
+
2. Each point the human has not yet settled, one line each, with a line reference.
|
|
44
|
+
3. The link.
|
|
45
|
+
2. The reply carries only what is new. The document stays the full current design.
|
|
46
|
+
3. If no decision is open and nothing is new, do not ask for review in the reply. Say the document records what you agreed. Turn step 5 still applies.
|
|
47
|
+
4. When you ask for review, say "ready for review", never "complete". Put the uncertainty first and show your reasoning.
|
|
109
48
|
|
|
110
|
-
|
|
111
|
-
full — file structure, task right-sizing, bite-sized steps, no placeholders, the header, and its
|
|
112
|
-
self-review — only where the plan lives changes: the issue's `plan.md`, in place of a plan file.
|
|
113
|
-
A copy in the repository, or spec code there, goes in only when the person, the issue, its spec or
|
|
114
|
-
the repository asks for it.
|
|
115
|
-
Technical choices inside the approved design are made in the plan and need no question. A plan
|
|
116
|
-
never changes a decision the human made in the spec: a change to one goes back to the spec as a
|
|
117
|
-
decision block, with the evidence for it.
|
|
49
|
+
## The plan
|
|
118
50
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
51
|
+
- Write it after the spec's approval. With no spec (a bug fix with no design decision), write it when you can plan.
|
|
52
|
+
- Upload it with `dispatch artifact --issue <KEY> --name plan.md --content-file -`. Each upload is a new version.
|
|
53
|
+
- Follow all `writing-plans` content rules: file structure, task size, small steps, no placeholders, the header, its self-review.
|
|
54
|
+
- Make technical choices inside the approved design in the plan, with no question. A change to a human's decision goes back to the spec as a block, with its evidence.
|
|
55
|
+
- If the human says "plan only", stop after the plan.
|
|
56
|
+
- To execute, read it with `dispatch doc-read --issue <KEY> --artifact plan.md`, then follow `executing-plans` or `subagent-driven-development`.
|
|
@@ -1,58 +1,40 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: dispatch-first
|
|
3
|
-
description: "Use
|
|
3
|
+
description: "Use when a session has the dispatch command, before you plan, file an issue, ask a human, post a finding, or start work. Someone may track that work already or hold a decision on it."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Dispatch first
|
|
7
7
|
|
|
8
|
-
Dispatch
|
|
9
|
-
specs, and the answers humans gave. A second issue for tracked work, or a question a human already
|
|
10
|
-
answered, costs that human the time to notice it and splits the history across two places.
|
|
8
|
+
Dispatch holds the open issues, their specs and the answers humans gave. A duplicate issue or a repeated question costs a human time and splits the history.
|
|
11
9
|
|
|
12
10
|
## Search before you act
|
|
13
11
|
|
|
14
|
-
Before you plan, file an issue, ask, post a finding or start work,
|
|
15
|
-
|
|
16
|
-
thing and what is wrong with it, as a user would name them. Never paste a draft.
|
|
12
|
+
- Before you plan, file an issue, ask, post a finding or start work, run `dispatch search` (`dispatch --help` lists every command).
|
|
13
|
+
- Every query word must match, so each added word can only lose hits. Use two or three words: the thing and what is wrong with it, as a user names them. Never paste a draft.
|
|
17
14
|
|
|
18
15
|
```bash
|
|
19
16
|
dispatch search --query 'broadcast send order'
|
|
20
17
|
dispatch search --query 'reviewer threads OR review comments'
|
|
21
18
|
```
|
|
22
19
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
that could be yours with `dispatch read`, then its parent (the `child_of` row under `Links:`); the
|
|
26
|
-
parent's children and the issue's `Components:` line show where the rest of that work lives.
|
|
20
|
+
- No hits: drop a word before you add one. Try two or three wordings (the component's name, the symptom, the fix) before you conclude that nothing exists.
|
|
21
|
+
- Open each hit that could be yours with `dispatch read`, then its parent (the `child_of` row under `Links:`). The parent's children and the `Components:` line show where the rest of the work is.
|
|
27
22
|
|
|
28
23
|
## What to do with what you find
|
|
29
24
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
- **
|
|
35
|
-
|
|
36
|
-
work, and cite the nearest one you ruled out (`dispatch://KEY`).
|
|
37
|
-
- **The question is already decided: cite the decision.** An answered ask is the record. Point to
|
|
38
|
-
it where you rely on it (`dispatch://KEY/ask/<id>`) instead of asking again.
|
|
39
|
-
- **You met a duplicate: close it.** Keep the issue that holds the spec and the discussion, carry
|
|
40
|
-
over anything only the duplicate has, then close the duplicate with a reason that names the
|
|
41
|
-
survivor: `dispatch issue-update --issue <KEY> --status done --reason 'Duplicate of dispatch://KEY.'`.
|
|
42
|
-
When the duplicate carries the `legion` label, or another session or a human holds its claim,
|
|
43
|
-
comment on it naming the survivor instead of closing it.
|
|
44
|
-
- **Every ask and message stands on its own.** The person who answers sees only that text: put the
|
|
45
|
-
facts, the options and your recommendation in it, and link what you cite (`dispatch://…`)
|
|
46
|
-
instead of writing "see above" or "my earlier message".
|
|
25
|
+
`dispatch issue` and `dispatch ask` also search: treat a hit in the result's `advice.suggestions` as one you found.
|
|
26
|
+
|
|
27
|
+
- **Work already tracked:** put the finding on that issue (a comment, a message, or a spec edit). File a new issue only when no hit covers the work, and cite the nearest one you ruled out (`dispatch://KEY`).
|
|
28
|
+
- **Question already decided:** the answered ask is the record. Cite it (`dispatch://KEY/ask/<id>`) where you rely on it. Do not ask again.
|
|
29
|
+
- **Duplicate found:** keep the issue with the spec and the discussion, and copy over what only the duplicate has. Then close it: `dispatch issue-update --issue <KEY> --status done --reason 'Duplicate of dispatch://KEY.'`. If it has the `legion` label, or another session or a human holds its claim, comment on it with the survivor's name. Do not close it.
|
|
30
|
+
- **Every ask and message stands alone:** the reader sees only that text. Put the facts, the options and your recommendation in it. Link what you cite (`dispatch://…`). Never write "see above" or "my earlier message".
|
|
47
31
|
|
|
48
32
|
## Design in the spec
|
|
49
33
|
|
|
50
|
-
A design conversation with a person, or the
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
invokes one by name. Before a spec's first version and each approval request, have a fresh read-only subagent (on Oh My Pi, `task(agent="scout")`, or whatever read-only agent the host bundles) check it against the code, the human's words and any command output a claim rests on, and resolve what it flags. A Legion architect's own issue spec follows `skill://legion-architect`, and its fresh reader in that Legion session is the Legion plugin's `plan-gap-analyst` agent.
|
|
34
|
+
- A design conversation with a person, or the plan that follows it, uses `skill://dispatch-brainstorming`. Read it before your first design question, the spec, or the plan. It replaces superpowers' `brainstorming` and `writing-plans` here, also when the user names one of them.
|
|
35
|
+
- Before a spec's first version and each approval request, get a fresh read-only subagent to check it. On Oh My Pi, use `task(agent="scout")`. Elsewhere, use the host's read-only agent. It checks the spec against the code, the human's words and the command output that its claims rest on. Resolve what it flags.
|
|
36
|
+
- A Legion architect's own issue spec follows `skill://legion-architect`. Its fresh reader in that Legion session is the Legion plugin's `plan-gap-analyst` agent.
|
|
54
37
|
|
|
55
38
|
## Load the full skill before you write
|
|
56
39
|
|
|
57
|
-
Before any write to Dispatch
|
|
58
|
-
claim), load `skill://dispatch` unless you already have in this session.
|
|
40
|
+
Before any write to Dispatch, load `skill://dispatch`: an ask, a message, a comment, a document edit, a status change, a claim. Skip this if you loaded it in this session.
|