superpowers-mcp 6.0.3 → 6.2.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.ja.md +15 -2
- package/README.ko.md +15 -2
- package/README.md +15 -2
- package/README.zh-TW.md +16 -3
- package/out/server.js +1 -1
- package/package.json +1 -1
- package/skills/brainstorming/SKILL.md +1 -9
- package/skills/brainstorming/visual-companion.md +7 -0
- package/skills/dispatching-parallel-agents/SKILL.md +0 -18
- package/skills/executing-plans/SKILL.md +6 -12
- package/skills/finishing-a-development-branch/SKILL.md +64 -105
- package/skills/receiving-code-review/SKILL.md +0 -8
- package/skills/requesting-code-review/SKILL.md +6 -14
- package/skills/subagent-driven-development/SKILL.md +314 -228
- package/skills/subagent-driven-development/implementer-prompt.md +6 -3
- package/skills/subagent-driven-development/re-review-prompt.md +106 -0
- package/skills/subagent-driven-development/scripts/review-package +11 -9
- package/skills/subagent-driven-development/scripts/review-package.ps1 +17 -10
- package/skills/subagent-driven-development/scripts/sdd-workspace +26 -8
- package/skills/subagent-driven-development/scripts/sdd-workspace.ps1 +29 -4
- package/skills/subagent-driven-development/scripts/task-brief +4 -3
- package/skills/subagent-driven-development/scripts/task-brief.ps1 +5 -4
- package/skills/subagent-driven-development/task-reviewer-prompt.md +3 -5
- package/skills/systematic-debugging/SKILL.md +1 -14
- package/skills/systematic-debugging/find-polluter.ps1 +20 -4
- package/skills/test-driven-development/SKILL.md +10 -61
- package/skills/test-driven-development/writing-good-tests.md +198 -0
- package/skills/using-git-worktrees/SKILL.md +9 -44
- package/skills/using-superpowers/references/antigravity-tools.md +1 -1
- package/skills/using-superpowers/references/codex-tools.md +1 -1
- package/skills/using-superpowers/references/gemini-tools.md +44 -32
- package/skills/verification-before-completion/SKILL.md +0 -19
- package/skills/writing-plans/SKILL.md +0 -6
- package/skills/writing-skills/SKILL.md +1 -11
- package/skills/test-driven-development/testing-anti-patterns.md +0 -299
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# Writing Good Tests
|
|
2
|
+
|
|
3
|
+
**Load this reference when:** writing or changing tests, adding mocks, or
|
|
4
|
+
adding cleanup/helper methods for tests.
|
|
5
|
+
|
|
6
|
+
## Overview
|
|
7
|
+
|
|
8
|
+
A test exists to catch a specific break. Two principles govern everything
|
|
9
|
+
here:
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
1. Every test names the break it catches
|
|
13
|
+
2. Every test exercises the real thing
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Strict TDD produces both naturally: a test written first and watched
|
|
17
|
+
failing against real code has already proven it can fail, and only earns
|
|
18
|
+
a mock when the real dependency proves slow or external.
|
|
19
|
+
|
|
20
|
+
## Principle 1: Name the Break
|
|
21
|
+
|
|
22
|
+
Before writing the test body, answer: **what production change should
|
|
23
|
+
make this test fail — and is that change a bug or a decision?** A test
|
|
24
|
+
earns its place by catching a wrong branch, missing side effect, wrong
|
|
25
|
+
argument, boundary case, or broken contract.
|
|
26
|
+
|
|
27
|
+
**Derive expectations independently.** Use literals and hand-checked
|
|
28
|
+
fixtures; table-driven tests with literal `want` values are the preferred
|
|
29
|
+
shape. An expectation computed by the code under test — or its helpers —
|
|
30
|
+
passes no matter what that code does:
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
// ❌ Mirror assertion: the same builder computes both sides — always true
|
|
34
|
+
const expected = buildSearchQuery({ tag: 'urgent' });
|
|
35
|
+
expect(buildSearchQuery({ tag: 'urgent' })).toBe(expected);
|
|
36
|
+
|
|
37
|
+
// ✅ Hand-derived literal
|
|
38
|
+
expect(buildSearchQuery({ tag: 'urgent' })).toBe('tag:"urgent"');
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**No change detectors.** If only intentional decisions can fail a test —
|
|
42
|
+
a constant's value, exact message wording, private structure — it fires
|
|
43
|
+
on redesign and sleeps through bugs. Test the behavior that depends on
|
|
44
|
+
the decision: not `expect(MAX_RETRIES).toBe(5)` but "a failing call is
|
|
45
|
+
retried 5 times and the 6th attempt never happens."
|
|
46
|
+
|
|
47
|
+
**Behavior, not text.** Asserting that a script, skill, or config
|
|
48
|
+
contains an exact line proves only that the source is the source. Run
|
|
49
|
+
scripts against controlled inputs and assert outputs, side effects, or
|
|
50
|
+
exit codes. Documents that instruct agents are tested by the consuming
|
|
51
|
+
agent's behavior (superpowers:writing-skills); prose for humans earns no
|
|
52
|
+
test at all.
|
|
53
|
+
|
|
54
|
+
**Your code, not the framework.** Test the contract your code makes at
|
|
55
|
+
its boundaries — the route you register, the query you emit, the payload
|
|
56
|
+
you produce. Upstream mechanics are their maintainers' tests to write
|
|
57
|
+
(the classic: asserting your router invokes a registered handler — that
|
|
58
|
+
is the framework's test, not yours). When upstream behavior genuinely
|
|
59
|
+
surprised you, write one narrow characterization test naming the
|
|
60
|
+
assumption. The same boundary applies inside your code: constructors,
|
|
61
|
+
getters, constants, and trivial forwarding earn tests only when they
|
|
62
|
+
validate, normalize, default, derive, enforce, or cause side effects —
|
|
63
|
+
otherwise assert the first consumer-visible result that depends on them.
|
|
64
|
+
|
|
65
|
+
### Gate Function
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
BEFORE writing the test body:
|
|
69
|
+
Name the production change that would make this test fail.
|
|
70
|
+
|
|
71
|
+
Cannot name one → redesign around an observable behavior
|
|
72
|
+
"The source text changed" → run the artifact and assert its effects
|
|
73
|
+
Only intentional decisions → change detector; test the behavior
|
|
74
|
+
that depends on the decision
|
|
75
|
+
|
|
76
|
+
Confirm the expected value is derived without the code under test.
|
|
77
|
+
IF it reuses the code's logic or helpers:
|
|
78
|
+
Replace it with a literal or hand-checked fixture
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Principle 2: Exercise the Real Thing
|
|
82
|
+
|
|
83
|
+
**The mock earns no assertions.** A mock assertion passes when the mock
|
|
84
|
+
is present and fails when it is absent — it says nothing about the
|
|
85
|
+
component. Assert the real component's behavior; if the mock is what you
|
|
86
|
+
are checking, unmock it or delete the assertion.
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
// ✅ Real behavior
|
|
90
|
+
expect(screen.getByRole('navigation')).toBeInTheDocument();
|
|
91
|
+
|
|
92
|
+
// ❌ Mock existence
|
|
93
|
+
expect(screen.getByTestId('sidebar-mock')).toBeInTheDocument();
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**your human partner's correction:** "Are we testing the behavior of a
|
|
97
|
+
mock?"
|
|
98
|
+
|
|
99
|
+
**Mock at the right level.** Learn every side effect of the real method
|
|
100
|
+
before replacing it; mock the slow or external operation and keep what
|
|
101
|
+
the test depends on real. When unsure, run the test against the real
|
|
102
|
+
implementation first and observe what actually needs to happen.
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
// ❌ The mock swallows the config write that duplicate detection reads
|
|
106
|
+
vi.mock('ToolCatalog', () => ({
|
|
107
|
+
discoverAndCacheTools: vi.fn().mockResolvedValue(undefined)
|
|
108
|
+
}));
|
|
109
|
+
|
|
110
|
+
// ✅ Mock only the slow server startup; the config write stays real
|
|
111
|
+
vi.mock('MCPServerManager');
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Make doubles specific.** When arguments, call counts, or ordering are
|
|
115
|
+
part of the contract, assert them — a fake that accepts anything verifies
|
|
116
|
+
nothing. Give each branch (success, error, malformed) its own fixture or
|
|
117
|
+
spy, so the wrong branch cannot satisfy the expectation.
|
|
118
|
+
|
|
119
|
+
**Mirror real data completely.** Mock the complete structure as it exists
|
|
120
|
+
in reality — all documented fields — not just the ones your test reads.
|
|
121
|
+
Partial mocks fail silently when downstream code reads an omitted field:
|
|
122
|
+
the test passes while integration breaks.
|
|
123
|
+
|
|
124
|
+
**Production classes carry production methods only.** Cleanup that only
|
|
125
|
+
tests need lives in test utilities, never as a `destroy()` on the
|
|
126
|
+
production class. Ask: is this method called only from tests? Does this
|
|
127
|
+
class own this resource's lifecycle? Wrong answers → test utility.
|
|
128
|
+
|
|
129
|
+
**Prefer real components over complex mocks.** When mock setup outgrows
|
|
130
|
+
the test logic, mocks miss methods the real components have, or tests
|
|
131
|
+
break when the mock changes, switch to an integration test with real
|
|
132
|
+
components. **your human partner's question:** "Do we need to be using a
|
|
133
|
+
mock here?"
|
|
134
|
+
|
|
135
|
+
### Gate Function
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
BEFORE adding a mock or test helper:
|
|
139
|
+
List the real method's side effects; keep the ones the test
|
|
140
|
+
depends on real — mock the slow/external level below them.
|
|
141
|
+
|
|
142
|
+
Mock responses mirror the complete real structure.
|
|
143
|
+
|
|
144
|
+
A method only tests call lives in test utilities, not production.
|
|
145
|
+
|
|
146
|
+
About to assert on the mock itself?
|
|
147
|
+
Unmock it or delete the assertion.
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Tests Ship With the Implementation
|
|
151
|
+
|
|
152
|
+
The TDD cycle — failing test, minimal implementation, refactor — is what
|
|
153
|
+
"complete" means. Ship the tests the behavior needs and only those:
|
|
154
|
+
trivial code and human prose earn none, and a test written to satisfy
|
|
155
|
+
process costs maintenance forever.
|
|
156
|
+
|
|
157
|
+
## The Mutation Check
|
|
158
|
+
|
|
159
|
+
Before finishing, mentally mutate the production code; at least one test
|
|
160
|
+
should fail for each realistic mutation:
|
|
161
|
+
|
|
162
|
+
- Wrong constant or argument
|
|
163
|
+
- Wrong branch handler
|
|
164
|
+
- Missing state change or side effect
|
|
165
|
+
- Empty or default return
|
|
166
|
+
- Missing validation for zero, empty, nil, unauthorized, or malformed input
|
|
167
|
+
|
|
168
|
+
A mutation nothing catches marks the behavior as unprotected — or the
|
|
169
|
+
test as tautological.
|
|
170
|
+
|
|
171
|
+
## Quick Reference
|
|
172
|
+
|
|
173
|
+
| When you... | Do |
|
|
174
|
+
|-------------|-----|
|
|
175
|
+
| Write any test | Name the break it catches — a bug, not a decision |
|
|
176
|
+
| Build an expected value | Derive it by hand; never with the code under test |
|
|
177
|
+
| Test a script or document | Run it / pressure-test its consumer; never grep its text |
|
|
178
|
+
| Reach for a dependency test | Test your boundary contract, not their documented mechanics |
|
|
179
|
+
| Want to assert on a mocked element | Test the real component, or unmock it |
|
|
180
|
+
| Are about to mock a method | Learn its side effects; mock the slow/external level |
|
|
181
|
+
| Build a mock response | Mirror the real structure completely |
|
|
182
|
+
| Need cleanup only tests use | Put it in test utilities |
|
|
183
|
+
| Watch mock setup balloon | Switch to an integration test with real components |
|
|
184
|
+
| Finish a test file | Run the mutation check |
|
|
185
|
+
|
|
186
|
+
## Warning Signs
|
|
187
|
+
|
|
188
|
+
- Setup and assertion share the same object, guaranteeing equality
|
|
189
|
+
- The test can fail only through a panic, crash, or missing selector
|
|
190
|
+
- The test fails on every intentional change, never on accidental breakage
|
|
191
|
+
- Expected values are hidden behind loops, builders, or helpers
|
|
192
|
+
- The test greps source text, or asserts a removed symbol stays removed
|
|
193
|
+
- The test would still matter if only the framework remained
|
|
194
|
+
- The test exists for coverage, checking no side effect or outcome
|
|
195
|
+
- An assertion checks a `*-mock` test ID, or fails if you remove the mock
|
|
196
|
+
- A method is called only from test files
|
|
197
|
+
- Mock setup is more than half the test, or you can't explain why the mock is needed
|
|
198
|
+
- Mocking "just to be safe"
|
|
@@ -156,47 +156,12 @@ Ready to implement <feature-name>
|
|
|
156
156
|
| Tests fail during baseline | Report failures + ask |
|
|
157
157
|
| No package.json/Cargo.toml | Skip dependency install |
|
|
158
158
|
|
|
159
|
-
## Common
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
- **Problem:** Creating a nested worktree inside an existing one
|
|
169
|
-
- **Fix:** Always run Step 0 before creating anything
|
|
170
|
-
|
|
171
|
-
### Skipping ignore verification
|
|
172
|
-
|
|
173
|
-
- **Problem:** Worktree contents get tracked, pollute git status
|
|
174
|
-
- **Fix:** Always use `git check-ignore` before creating project-local worktree
|
|
175
|
-
|
|
176
|
-
### Assuming directory location
|
|
177
|
-
|
|
178
|
-
- **Problem:** Creates inconsistency, violates project conventions
|
|
179
|
-
- **Fix:** Follow priority: explicit instructions > existing project-local directory > default
|
|
180
|
-
|
|
181
|
-
### Proceeding with failing tests
|
|
182
|
-
|
|
183
|
-
- **Problem:** Can't distinguish new bugs from pre-existing issues
|
|
184
|
-
- **Fix:** Report failures, get explicit permission to proceed
|
|
185
|
-
|
|
186
|
-
## Red Flags
|
|
187
|
-
|
|
188
|
-
**Never:**
|
|
189
|
-
- Create a worktree when Step 0 detects existing isolation
|
|
190
|
-
- Use `git worktree add` when you have a native worktree tool (e.g., `EnterWorktree`). This is the #1 mistake — if you have it, use it.
|
|
191
|
-
- Skip Step 1a by jumping straight to Step 1b's git commands
|
|
192
|
-
- Create worktree without verifying it's ignored (project-local)
|
|
193
|
-
- Skip baseline test verification
|
|
194
|
-
- Proceed with failing tests without asking
|
|
195
|
-
|
|
196
|
-
**Always:**
|
|
197
|
-
- Run Step 0 detection first
|
|
198
|
-
- Prefer native tools over git fallback
|
|
199
|
-
- Follow directory priority: explicit instructions > existing project-local directory > default
|
|
200
|
-
- Verify directory is ignored for project-local
|
|
201
|
-
- Auto-detect and run project setup
|
|
202
|
-
- Verify clean test baseline
|
|
159
|
+
## Common Rationalizations
|
|
160
|
+
|
|
161
|
+
| Excuse | Reality |
|
|
162
|
+
|--------|---------|
|
|
163
|
+
| "I'm obviously not in a worktree — no need to check" | Run Step 0. Harness-created isolation and submodules both fool eyeballing; the detection commands settle it. |
|
|
164
|
+
| "`git worktree add` is quicker than hunting for a native tool" | A native tool (e.g. `EnterWorktree`) owns placement, branching, and cleanup. Bypassing it is the #1 mistake — it creates phantom state your harness can't see or manage. |
|
|
165
|
+
| "The worktree directory is surely ignored already" | Run `git check-ignore`. An unignored worktree directory commits the whole tree into the repo. |
|
|
166
|
+
| "Any directory name works" | Explicit instructions beat an existing project-local directory, which beats the `.worktrees/` default. |
|
|
167
|
+
| "The workspace is fresh — baseline tests can wait" | A dirty baseline makes every later failure ambiguous. Run the tests now; proceeding past failures is your human partner's call. |
|
|
@@ -4,7 +4,7 @@ Skills speak in actions ("dispatch a subagent", "create a todo", "read a file").
|
|
|
4
4
|
|
|
5
5
|
| Action skills request | Antigravity CLI equivalent |
|
|
6
6
|
|----------------------|----------------------|
|
|
7
|
-
| Dispatch a subagent (`Subagent (general-purpose):` template) | `invoke_subagent` with a built-in `TypeName` — `self` for full-capability work, `research` for read-only
|
|
7
|
+
| Dispatch a subagent (`Subagent (general-purpose):` template) | `invoke_subagent` with a built-in `TypeName` — `self` for full-capability work, `research` for read-only |
|
|
8
8
|
| Task tracking ("create a todo", "mark complete") | a **task artifact** — `write_to_file` with `IsArtifact: true` and `ArtifactType: "task"` (see [Task tracking](#task-tracking)). **Not** `manage_task`, which manages background processes. |
|
|
9
9
|
|
|
10
10
|
## Task tracking
|
|
@@ -7,7 +7,7 @@ Add to your Codex config (`~/.codex/config.toml`):
|
|
|
7
7
|
multi_agent = true
|
|
8
8
|
```
|
|
9
9
|
|
|
10
|
-
This enables `spawn_agent`, `wait_agent`, and `close_agent` for skills like `dispatching-parallel-agents` and `subagent-driven-development`. When using subagent-driven-development,
|
|
10
|
+
This enables `spawn_agent`, `wait_agent`, and `close_agent` for skills like `dispatching-parallel-agents` and `subagent-driven-development`. When using subagent-driven-development, close reviewer subagents when their review returns. Keep each implementer subagent open until its task's review passes — the fix loop resumes the implementer — then close it. If your harness cannot send another message to a spawned agent, dispatch each fix round as a fresh implementer carrying the brief, the report file, and the findings.
|
|
11
11
|
|
|
12
12
|
## Environment Detection
|
|
13
13
|
|
|
@@ -1,51 +1,63 @@
|
|
|
1
1
|
# Gemini CLI Tool Mapping
|
|
2
2
|
|
|
3
|
-
Skills
|
|
4
|
-
|
|
5
|
-
|
|
|
6
|
-
|
|
7
|
-
|
|
|
8
|
-
|
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
3
|
+
Skills speak in actions ("dispatch a subagent", "create a todo", "read a file"). On Gemini CLI these resolve to the tools below.
|
|
4
|
+
|
|
5
|
+
| Action skills request | Gemini CLI equivalent |
|
|
6
|
+
|----------------------|----------------------|
|
|
7
|
+
| Read a file | `read_file` |
|
|
8
|
+
| Read multiple files at once | `read_many_files` |
|
|
9
|
+
| Create a new file | `write_file` |
|
|
10
|
+
| Edit a file | `replace` |
|
|
11
|
+
| Run a shell command | `run_shell_command` |
|
|
12
|
+
| Search file contents | `grep_search` |
|
|
13
|
+
| Find files by name | `glob` |
|
|
14
|
+
| List files and subdirectories | `list_directory` |
|
|
15
|
+
| Fetch a URL | `web_fetch` |
|
|
16
|
+
| Search the web | `google_web_search` |
|
|
17
|
+
| Invoke a skill | `activate_skill` |
|
|
18
|
+
| Dispatch a subagent (`Subagent (general-purpose):` template) | `invoke_agent` with `agent_name: "generalist"` (invocable via `@generalist` chat syntax — see [Subagent support](#subagent-support)) |
|
|
19
|
+
| Multiple parallel dispatches | Multiple `invoke_agent` calls in the same response |
|
|
20
|
+
| Task tracking ("create a todo", "mark complete") | `write_todos` (statuses: pending, in_progress, completed, cancelled, blocked) |
|
|
21
|
+
|
|
22
|
+
## Instructions file
|
|
23
|
+
|
|
24
|
+
When a skill mentions "your instructions file", on Gemini CLI this is **`GEMINI.md`**. Gemini CLI loads `GEMINI.md` hierarchically: global at `~/.gemini/GEMINI.md`, project-level files in workspace directories and their ancestors, and sub-directory `GEMINI.md` files when a tool accesses files in those directories.
|
|
25
|
+
|
|
26
|
+
## Personal skills directory
|
|
27
|
+
|
|
28
|
+
User-level skills live at **`~/.gemini/skills/`**, with **`~/.agents/skills/`** as a cross-runtime alias (shared with Codex and Copilot CLI). When both directories exist at the same scope, `.agents/skills/` takes precedence. Each skill is a subdirectory containing a `SKILL.md` (with `name` and `description` frontmatter).
|
|
18
29
|
|
|
19
30
|
## Subagent support
|
|
20
31
|
|
|
21
|
-
Gemini CLI
|
|
32
|
+
Gemini CLI dispatches subagents through the `invoke_agent` tool, which takes `agent_name` and `prompt` parameters. The same dispatch is also surfaced as a chat-syntax shortcut: typing `@generalist <prompt>` is equivalent to calling `invoke_agent` with `agent_name: "generalist"`. Built-in agent names include `generalist`, `cli_help`, `codebase_investigator`, and (with browser tooling enabled) `browser_agent`.
|
|
22
33
|
|
|
23
|
-
|
|
34
|
+
Skills dispatch with `Subagent (general-purpose):` and either reference a prompt-template file (e.g., `superpowers:subagent-driven-development`'s `./implementer-prompt.md`) or supply an inline prompt. On Gemini CLI:
|
|
24
35
|
|
|
25
|
-
| Skill
|
|
26
|
-
|
|
27
|
-
| `
|
|
28
|
-
| `
|
|
29
|
-
|
|
|
30
|
-
| `Task tool (superpowers:code-quality-reviewer)` | `@generalist` with the filled `code-quality-reviewer-prompt.md` template |
|
|
31
|
-
| `Task tool (general-purpose)` with inline prompt | `@generalist` with your inline prompt |
|
|
36
|
+
| Skill dispatch form | Gemini CLI equivalent |
|
|
37
|
+
|---------------------|----------------------|
|
|
38
|
+
| References a `*-prompt.md` template (implementer, task-reviewer, code-reviewer, etc.) | Fill the template, then `invoke_agent` with `agent_name: "generalist"` and the filled prompt |
|
|
39
|
+
| References `superpowers:requesting-code-review`'s `./code-reviewer.md` | `invoke_agent` with `agent_name: "generalist"` and the filled review template |
|
|
40
|
+
| Inline prompt (no template referenced) | `invoke_agent` with `agent_name: "generalist"` and your inline prompt |
|
|
32
41
|
|
|
33
42
|
### Prompt filling
|
|
34
43
|
|
|
35
|
-
Skills provide prompt templates with placeholders like `{WHAT_WAS_IMPLEMENTED}` or `[FULL TEXT of task]`. Fill all placeholders
|
|
44
|
+
Skills provide prompt templates with placeholders like `{WHAT_WAS_IMPLEMENTED}` or `[FULL TEXT of task]`. Fill all placeholders before passing the complete prompt to `invoke_agent`. The prompt template itself contains the agent's role, review criteria, and expected output format — the subagent will follow it.
|
|
36
45
|
|
|
37
46
|
### Parallel dispatch
|
|
38
47
|
|
|
39
|
-
Gemini CLI supports parallel subagent dispatch.
|
|
48
|
+
Gemini CLI supports parallel subagent dispatch. Issue multiple `invoke_agent` calls in the same response (or multiple `@generalist` invocations in one prompt) to run independent subagent work in parallel. Keep dependent tasks sequential, but do not serialize independent subagent tasks just to preserve a simpler history.
|
|
40
49
|
|
|
41
50
|
## Additional Gemini CLI tools
|
|
42
51
|
|
|
43
|
-
These tools are
|
|
52
|
+
These tools are unique to Gemini CLI:
|
|
44
53
|
|
|
45
54
|
| Tool | Purpose |
|
|
46
55
|
|------|---------|
|
|
47
|
-
| `
|
|
48
|
-
| `
|
|
49
|
-
| `ask_user` |
|
|
50
|
-
| `
|
|
51
|
-
| `
|
|
56
|
+
| `save_memory` (legacy) | Persist facts across sessions when `experimental.memoryV2 = false` |
|
|
57
|
+
| `get_internal_docs` | Look up Gemini CLI's bundled documentation |
|
|
58
|
+
| `ask_user` | Pose structured questions to the user (text / single-select / multi-select) |
|
|
59
|
+
| `enter_plan_mode` / `exit_plan_mode` | Switch into and out of read-only plan mode |
|
|
60
|
+
| `update_topic` | Update the current conversation's topic / strategic-intent metadata |
|
|
61
|
+
| `complete_task` | Signal that a Gemini subagent has completed and return its result to the parent agent |
|
|
62
|
+
| `tracker_create_task`, `tracker_update_task`, `tracker_get_task`, `tracker_list_tasks`, `tracker_add_dependency`, `tracker_visualize` | Rich task tracker with dependency and visualization support |
|
|
63
|
+
| `read_mcp_resource`, `list_mcp_resources` | MCP resource access |
|
|
@@ -7,8 +7,6 @@ description: Use when about to claim work is complete, fixed, or passing, before
|
|
|
7
7
|
|
|
8
8
|
## Overview
|
|
9
9
|
|
|
10
|
-
Claiming work is complete without verification is dishonesty, not efficiency.
|
|
11
|
-
|
|
12
10
|
**Core principle:** Evidence before claims, always.
|
|
13
11
|
|
|
14
12
|
**Violating the letter of this rule is violating the spirit of this rule.**
|
|
@@ -105,15 +103,6 @@ Skip any step = lying, not verifying
|
|
|
105
103
|
❌ Trust agent report
|
|
106
104
|
```
|
|
107
105
|
|
|
108
|
-
## Why This Matters
|
|
109
|
-
|
|
110
|
-
From 24 failure memories:
|
|
111
|
-
- your human partner said "I don't believe you" - trust broken
|
|
112
|
-
- Undefined functions shipped - would crash
|
|
113
|
-
- Missing requirements shipped - incomplete features
|
|
114
|
-
- Time wasted on false completion → redirect → rework
|
|
115
|
-
- Violates: "Honesty is a core value. If you lie, you'll be replaced."
|
|
116
|
-
|
|
117
106
|
## When To Apply
|
|
118
107
|
|
|
119
108
|
**ALWAYS before:**
|
|
@@ -129,11 +118,3 @@ From 24 failure memories:
|
|
|
129
118
|
- Paraphrases and synonyms
|
|
130
119
|
- Implications of success
|
|
131
120
|
- ANY communication suggesting completion/correctness
|
|
132
|
-
|
|
133
|
-
## The Bottom Line
|
|
134
|
-
|
|
135
|
-
**No shortcuts for verification.**
|
|
136
|
-
|
|
137
|
-
Run the command. Read the output. THEN claim the result.
|
|
138
|
-
|
|
139
|
-
This is non-negotiable.
|
|
@@ -135,12 +135,6 @@ Every step must contain the actual content an engineer needs. These are **plan f
|
|
|
135
135
|
- Steps that describe what to do without showing how (code blocks required for code steps)
|
|
136
136
|
- References to types, functions, or methods not defined in any task
|
|
137
137
|
|
|
138
|
-
## Remember
|
|
139
|
-
- Exact file paths always
|
|
140
|
-
- Complete code in every step — if a step changes code, show the code
|
|
141
|
-
- Exact commands with expected output
|
|
142
|
-
- DRY, YAGNI, TDD, frequent commits
|
|
143
|
-
|
|
144
138
|
## Self-Review
|
|
145
139
|
|
|
146
140
|
After writing the complete plan, look at the spec with fresh eyes and check the plan against it. This is a checklist you run yourself — not a subagent dispatch.
|
|
@@ -9,7 +9,7 @@ description: Use when creating new skills, editing existing skills, or verifying
|
|
|
9
9
|
|
|
10
10
|
**Writing skills IS Test-Driven Development applied to process documentation.**
|
|
11
11
|
|
|
12
|
-
**Personal skills live in your runtime's skills directory**
|
|
12
|
+
**Personal skills live in your runtime's skills directory** (`~/.claude/skills/` on Claude Code) — see [codex-tools.md](../using-superpowers/references/codex-tools.md) or [gemini-tools.md](../using-superpowers/references/gemini-tools.md) for the path on those runtimes. Codex, Copilot CLI, and Gemini CLI all also recognize `~/.agents/skills/` as a cross-runtime alias.
|
|
13
13
|
|
|
14
14
|
You write test cases (pressure scenarios with subagents), watch them fail (baseline behavior), write the skill (documentation), watch tests pass (agents comply), and refactor (close loopholes).
|
|
15
15
|
|
|
@@ -677,13 +677,3 @@ How future agents find your skill:
|
|
|
677
677
|
6. **Loads example** (only when implementing)
|
|
678
678
|
|
|
679
679
|
**Optimize for this flow** - put searchable terms early and often.
|
|
680
|
-
|
|
681
|
-
## The Bottom Line
|
|
682
|
-
|
|
683
|
-
**Creating skills IS TDD for process documentation.**
|
|
684
|
-
|
|
685
|
-
Same Iron Law: No skill without failing test first.
|
|
686
|
-
Same cycle: RED (baseline) → GREEN (write skill) → REFACTOR (close loopholes).
|
|
687
|
-
Same benefits: Better quality, fewer surprises, bulletproof results.
|
|
688
|
-
|
|
689
|
-
If you follow TDD for code, follow it for skills. It's the same discipline applied to documentation.
|