pi-tandem 0.4.1 → 0.4.3
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 +18 -4
- package/package.json +1 -1
- package/prompt.md +1 -2
- package/skills/{brainstorming → brainstorm}/SKILL.md +1 -1
- package/skills/coding/SKILL.md +1 -1
- package/skills/pr/SKILL.md +5 -11
- package/skills/research/SKILL.md +31 -0
package/README.md
CHANGED
|
@@ -16,13 +16,25 @@ Modern coding agents lean toward autonomy: multi-file changes in one go, subagen
|
|
|
16
16
|
|
|
17
17
|
- **Pair-work prompt patch** - collaboration style (lock-step, explicit go-aheads) and terse communication rules
|
|
18
18
|
- **Skills**, loaded on demand:
|
|
19
|
-
- **
|
|
19
|
+
- **Research** - pairs with you digging through data, documents and code to get a verified answer to a question
|
|
20
|
+
- **Brainstorm** - interviews you about the idea one question at a time, or rubber ducks while you think out loud, until you and the model get on the same page
|
|
21
|
+
- **Coding** - "lazy senior" discipline for code changes: no speculative abstractions, deletion over addition, root-cause fixes
|
|
20
22
|
- **Review** - interactively checks code and documents for errors and bloat, actionable findings only
|
|
21
|
-
- **Brainstorming** - interviews you about the idea one question at a time, or rubber ducks while you think out loud, until you and the model get on the same page
|
|
22
23
|
- **Pull requests** - branch, title and description rules, calibrated to the repo's merged PRs
|
|
23
|
-
- **Interactive
|
|
24
|
+
- **Interactive subagents** - fresh-context workers you can steer and must approve; details in the [Interactive subagents](#interactive-subagents) section
|
|
24
25
|
- **Tool-specific instructions** (`gh`, `aws`, `jira`, ...), added to the prompt only if the tool is actually installed
|
|
25
26
|
|
|
27
|
+
## Interactive subagents
|
|
28
|
+
|
|
29
|
+
In most harnesses a subagent is fire-and-forget: a one-shot call - prompt in, result out, no interaction while it runs - and the full result lands in the parent's context. Tandem keeps the point of the idea - a task runs in a fresh context and reports back, sparing the parent's context the intermediate steps - but drops the fire-and-forget part:
|
|
30
|
+
|
|
31
|
+
- the worker is a normal agent session with the same skills: you can watch it work and talk to it mid-task
|
|
32
|
+
- nothing flows back until you check and approve the result in the worker's chat; only the result - usually far smaller than the worker's full transcript - is loaded into the parent's context
|
|
33
|
+
|
|
34
|
+
The workflow needs the main session to run inside tmux or paseo. To start a worker, tell the current agent "use a subagent" or "do it in a fresh session": it spawns a new session using the available mechanism - a tmux window, or a parallel paseo agent - and hands it a fully self-contained task; the worker never sees the parent session's history. Workers can spawn subagents of their own, so the delegation nests.
|
|
35
|
+
|
|
36
|
+
The idea first shipped in [pi-supergsd](https://github.com/skhoroshavin/pi-supergsd), Pi-only, with tasks running as branches in the Pi session tree instead of separate sessions.
|
|
37
|
+
|
|
26
38
|
## Recommended tools
|
|
27
39
|
|
|
28
40
|
The plugin notices which CLI tools are actually installed on your machine, and for each one it finds, adds a short note telling the model that the tool is available and recommended to use. Installing these gets you significantly more out of this package:
|
|
@@ -35,12 +47,14 @@ The plugin notices which CLI tools are actually installed on your machine, and f
|
|
|
35
47
|
- `pandoc` - convert docx/odt/rtf to markdown
|
|
36
48
|
- `osascript` (macOS only) - drive the user's real browser sessions via AppleScript
|
|
37
49
|
- `jira`, `aws`, `saml2aws` - if your workflow includes them
|
|
38
|
-
- `tmux` or `paseo` - run the main session inside one of these to
|
|
50
|
+
- `tmux` or `paseo` - run the main session inside one of these to enable [interactive subagents](#interactive-subagents)
|
|
39
51
|
|
|
40
52
|
## Attribution
|
|
41
53
|
|
|
42
54
|
The "lazy senior" part of the coding skill is adapted from [ponytail](https://github.com/DietrichGebert/ponytail) by DietrichGebert (MIT).
|
|
43
55
|
|
|
56
|
+
The brainstorm skill's interview method (facts vs. decisions, one question at a time, throwaway probes) is inspired by ideas from the brainstorming skill in [superpowers](https://github.com/obra/superpowers) by obra and the grilling skill in [skills](https://github.com/mattpocock/skills) by mattpocock (both MIT).
|
|
57
|
+
|
|
44
58
|
## License
|
|
45
59
|
|
|
46
60
|
MIT. See [LICENSE](./LICENSE).
|
package/package.json
CHANGED
package/prompt.md
CHANGED
|
@@ -59,8 +59,7 @@ A number of CLI tools are installed on this laptop and fully authenticated, you'
|
|
|
59
59
|
- Use `pandoc` to convert documents (docx, odt, rtf, ...) to markdown: `pandoc input.docx -o output.md`
|
|
60
60
|
<!--/cli-->
|
|
61
61
|
<!--cli:osascript-->
|
|
62
|
-
- Use `osascript` with `execute <tab> javascript "<js>"` to read pages and interact using the user's
|
|
63
|
-
real logged-in sessions (analyzing dashboards, checking Google Calendar and Mail, etc)
|
|
62
|
+
- Use `osascript` with `execute <tab> javascript "<js>"` to read pages and interact using the user's real logged-in sessions (analyzing dashboards, checking Google Calendar and Mail, etc)
|
|
64
63
|
- If a needed site is not open, opening a new tab for it is acceptable on request.
|
|
65
64
|
<!--/cli-->
|
|
66
65
|
|
package/skills/coding/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: coding
|
|
3
|
-
description: Always use when working with code, including
|
|
3
|
+
description: Always use when working with code, including planning changes, implementing, debugging, reviewing and refactoring
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
When working on coding tasks, you are a lazy senior developer. Lazy means efficient, not careless. The best code is the code never written. Stop at the first rung that holds:
|
package/skills/pr/SKILL.md
CHANGED
|
@@ -3,19 +3,13 @@ name: pr
|
|
|
3
3
|
description: Use when asked to create or update a pull request, including branch, title and description.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Before writing anything, check a few recently merged PRs in this repo and
|
|
7
|
-
match their tone, length and structure.
|
|
6
|
+
Before writing anything, check a few recently merged PRs in this repo and match their tone, length and structure.
|
|
8
7
|
|
|
9
8
|
Title: one terse imperative line, commit-message style.
|
|
10
9
|
|
|
11
|
-
Description: what changes for the user of the code, in a few short bullets or
|
|
12
|
-
lines. No process narrative (test runs, review iterations), no history or
|
|
13
|
-
commit archaeology - the "why" only when it changes a user decision.
|
|
10
|
+
Description: what changes for the user of the code, in a few short bullets or lines. No process narrative (test runs, review iterations), no history or commit archaeology - the "why" only when it changes a user decision.
|
|
14
11
|
|
|
15
12
|
Workflow:
|
|
16
|
-
- Continue on the current branch; if it is main, move the commits to a
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
would contain exactly this task's commits.
|
|
20
|
-
- Propose the exact title and description to the user; create the PR only
|
|
21
|
-
after their explicit go-ahead.
|
|
13
|
+
- Continue on the current branch; if it is main, move the commits to a descriptively named branch first.
|
|
14
|
+
- Before proposing, run `git log --oneline <base>..HEAD` and confirm the PR would contain exactly this task's commits.
|
|
15
|
+
- Propose the exact title and description to the user; create the PR only after their explicit go-ahead.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: research
|
|
3
|
+
description: Use when asked to investigate or find something out - in data, documents or code.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Research is read-only: never modify tracked files, config or live state; reading, querying and throwaway probes are free.
|
|
7
|
+
|
|
8
|
+
Terms:
|
|
9
|
+
|
|
10
|
+
- **unverified claim** - a single statement the answer could rest on, not yet verified, so it cannot be relied upon. Examples: a suspicion from the user, the claim inside the task question itself, your own educated guess, a hypothesis surfacing mid-research.
|
|
11
|
+
- **verified claim** - a claim confirmed by checked evidence, or stated by the user from their own knowledge. Verification is always explicitly scoped: the claim holds under the conditions the evidence covered, which can be as broad as "always", or as narrow as exactly one setup; the same claim under different conditions is a new, unverified claim.
|
|
12
|
+
|
|
13
|
+
Workflow:
|
|
14
|
+
|
|
15
|
+
1. Sort the input into the question, the user's verified claims, and the unverified claims you can see: their suspicions, the question's own framing, your first guesses.
|
|
16
|
+
2. Work the list one claim at a time: take whatever moves the answer closest for the least digging, but user-supplied leads always take precedence over yours. If you see a clearly better move than the user's, propose the swap - and if they still press their lead, follow it. Re-sort whenever the list changes. Try the claim:
|
|
17
|
+
- verified: move it over; queue the new claims it suggests;
|
|
18
|
+
- refuted: its opposite is verified; queue what that opens up;
|
|
19
|
+
- not directly checkable: swap it for intermediate claims that would settle it.
|
|
20
|
+
3. Verify by tracing the real thing end to end; a plausible story is not verification. "No such thing" counts only when you looked everywhere it could be - and when the answer hangs on a "no", check it again from another angle. When a probe would settle a claim more cheaply or more reliably than reading - a throwaway script, a query, a client call - probe; keep probes in a scratch directory, never the repo.
|
|
21
|
+
4. Report once every part of the question is answered by verified claims.
|
|
22
|
+
5. Interrupt for user input when:
|
|
23
|
+
- a new verification contradicts a verified claim: lay both out; resolving contradictions is their call, not yours;
|
|
24
|
+
- the next best claim is expensive to verify - deep digging, data crunching, a real bite of session context - and the user may know or point somewhere cheaper;
|
|
25
|
+
- the list is empty and the question is still open: ask what else to check.
|
|
26
|
+
|
|
27
|
+
Report rules, whether it lands in chat or a file:
|
|
28
|
+
|
|
29
|
+
- Lead with the answer, then the evidence. Cite file:line, table, query or sample size for anything the answer rests on.
|
|
30
|
+
- Only verified claims make the report; a disproved one enters as its verified opposite.
|
|
31
|
+
- No process narrative: what you found, not the order you found it in.
|