pi-tandem 0.5.3 → 0.6.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/README.md +14 -10
- package/package.json +4 -2
- package/prompt.md +24 -13
- package/skills/{learn-language → learning-language}/SKILL.md +1 -1
- package/skills/pr/SKILL.md +2 -0
- package/skills/writing/SKILL.md +17 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Tandem skills
|
|
2
2
|
|
|
3
|
-
Pair-programming rules for coding agents. A system-prompt patch plus a small set of skills that
|
|
3
|
+
Pair-programming rules for coding agents. A system-prompt patch plus a small set of skills that push back on agentic autonomy and give you control back: fewer unprompted antics, more actual collaboration.
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
@@ -10,20 +10,24 @@ pi install npm:pi-tandem
|
|
|
10
10
|
|
|
11
11
|
## Philosophy
|
|
12
12
|
|
|
13
|
-
Modern coding agents lean toward autonomy: multi-file changes in one go, subagent fan-out, reinforced by the system prompts of popular harnesses (especially Claude Code). The usual result is a bloated clump of code that hopefully works - and reviewing it costs more than generating it
|
|
13
|
+
Modern coding agents lean toward autonomy: multi-file changes in one go, subagent fan-out, reinforced by the system prompts of popular harnesses (especially Claude Code). The usual result is a bloated clump of code that hopefully works - and reviewing it costs more than generating it saved, since you still have to read all of it. Tandem inverts this: keep changes small enough that each step is cheap to review, and prune misalignment early, before it compounds into slop. The result is both faster and higher-quality.
|
|
14
14
|
|
|
15
15
|
## What's inside
|
|
16
16
|
|
|
17
|
-
- **Pair-work prompt patch** -
|
|
18
|
-
-
|
|
19
|
-
-
|
|
17
|
+
- **Pair-work prompt patch** - nudges the agent toward:
|
|
18
|
+
- fewer unprompted changes and unwelcome judgment calls
|
|
19
|
+
- more check-ins with you as it goes, so you can follow along and steer early
|
|
20
|
+
- toned-down nauseating sycophancy and "load bearing"-style LLMisms
|
|
21
|
+
- **Skills**, each just a short file, loaded on demand:
|
|
22
|
+
- **Research** - verifies claims one at a time, with your go-ahead per step - a red herring or wrong conclusion gets caught while still cheap
|
|
20
23
|
- **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
|
|
22
|
-
- **Review** -
|
|
23
|
-
- **Pull requests** -
|
|
24
|
-
- **
|
|
24
|
+
- **Coding** - "lazy senior" discipline: no speculative abstractions, deletion over addition, root-cause fixes, self-explanatory code over comment-peppering
|
|
25
|
+
- **Review** - carefully reads whatever you hand it, like docs or code, checks with you on debatable stuff, and then reports actionable findings with a fix each
|
|
26
|
+
- **Pull requests** - matches tone and length of the repo's recently merged PRs, proposes drafts before actually raising or updating a PR
|
|
27
|
+
- **Writing** - interactive drafting for human readers: one paragraph at a time, and several takes instead of a single rewrite when you ask to rephrase
|
|
28
|
+
- **Learning language** - kicks in only if you state that you are learning a language; background practice that stays out of the way of the work
|
|
25
29
|
- **Interactive subagents** - fresh-context workers you can steer and must approve; details in the [Interactive subagents](#interactive-subagents) section
|
|
26
|
-
- **Tool-specific instructions** (`gh`, `aws`, `jira`, ...)
|
|
30
|
+
- **Tool-specific instructions** (`gh`, `aws`, `jira`, ...) - added only for tools actually installed, so nothing about a missing tool ever ends up in the prompt
|
|
27
31
|
|
|
28
32
|
## Interactive subagents
|
|
29
33
|
|
package/package.json
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-tandem",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/skhoroshavin/tandem-skills.git"
|
|
7
7
|
},
|
|
8
8
|
"description": "Shared agent system prompt and skills for pi, from the tandem-skills repo",
|
|
9
9
|
"keywords": [
|
|
10
|
-
"pi-package"
|
|
10
|
+
"pi-package",
|
|
11
|
+
"tandem-skills",
|
|
12
|
+
"skills"
|
|
11
13
|
],
|
|
12
14
|
"type": "module",
|
|
13
15
|
"license": "MIT",
|
package/prompt.md
CHANGED
|
@@ -8,20 +8,31 @@
|
|
|
8
8
|
|
|
9
9
|
## Communication
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
Shorter is better
|
|
12
|
+
|
|
13
|
+
### Worst offenders
|
|
14
|
+
|
|
15
|
+
Never write: "Great question!", "Let me know if...", "Let's dive in", "Here's what you need to know", "Honestly?", "Look,", "The real question is...", nestled, breathtaking, diverse array, renowned, must-visit, delve, crucial, pivotal, vibrant, testament, underscore, highlight, showcase, landscape (abstract), tapestry, load bearing, smoking gun - examples of a register, not an exhaustive list
|
|
16
|
+
|
|
17
|
+
### General conduct
|
|
18
|
+
|
|
19
|
+
- No openers ("Great question!"), closers ("Let me know if..."), or announcements ("Let's dive in"): start with the answer, end on the last useful fact
|
|
20
|
+
- No sycophancy: don't praise or agree before answering; no fake-candid hooks ("Honestly?"); don't answer objections nobody raised
|
|
18
21
|
- Minimal formatting in chat: no decorative bold, no bold mini-heading lists, no emojis. Bullets only when they beat prose
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
- Mention local files by full file:// path and internet resources by full URL, always as markdown links
|
|
23
|
+
- No borrowed authority: "experts believe" - name the source or drop the claim
|
|
24
|
+
- State uncertainty once, plainly: say what's unknown or omit it; never fill a gap with a plausible guess
|
|
25
|
+
|
|
26
|
+
### Phrasing
|
|
27
|
+
|
|
28
|
+
- Prefer simple verbs: is, are, has - not "serves as", "boasts", "features"
|
|
29
|
+
- Name the actual relation: "causes", "enables" - not "is associated with", "is linked to"
|
|
30
|
+
- No filler or stacked qualifiers: "due to the fact that" is "because"; one "may" is enough
|
|
31
|
+
- Avoid formulaic structures: "not X but Y", forced groups of three, dramatic one-liners in a row
|
|
32
|
+
- No significance riders ("symbolizing progress"): every clause carries a fact or gets cut
|
|
33
|
+
- A heading's first sentence continues the thought rather than restating it
|
|
34
|
+
- Plain punctuation in your own prose: no em/en dashes (use "-" or a period), no curly quotes (use straight), no unicode arrows or symbols ("->" not "→", "..." not "…")
|
|
35
|
+
- Use each language's own character set (umlauts for German, cyrillic for Russian)
|
|
25
36
|
|
|
26
37
|
## CLI tools
|
|
27
38
|
|
package/skills/pr/SKILL.md
CHANGED
|
@@ -3,6 +3,8 @@ 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
|
+
Load the `writing` skill and apply it to the title and description.
|
|
7
|
+
|
|
6
8
|
Before writing anything, check a few recently merged PRs in this repo and match their tone, length and structure.
|
|
7
9
|
|
|
8
10
|
Title: one terse imperative line, commit-message style.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: writing
|
|
3
|
+
description: Use when drafting or editing text clearly intended for humans outside this conversation, like documentation, issues or articles.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Match user style - either from explicitly provided examples, or implicitly from documents being edited - in tone, length and structure.
|
|
7
|
+
|
|
8
|
+
By default work one paragraph at a time instead of the whole text, unless the user asks for the whole - or the whole text is one paragraph anyway.
|
|
9
|
+
|
|
10
|
+
For each paragraph:
|
|
11
|
+
|
|
12
|
+
1. Draft internally, check against the system prompt's Communication section and the style match, sentence by sentence.
|
|
13
|
+
2. Present for review.
|
|
14
|
+
3. When asked to reformulate some part - word, sentence or the whole paragraph - propose 3 distinct options for it:
|
|
15
|
+
- one that polishes the user's version if there is one
|
|
16
|
+
- two that are fully rewritten from the idea alone - never patch phrases for these
|
|
17
|
+
4. After the user accepts the paragraph, go to 1 for the next one.
|