@chankov/agent-skills 0.3.0 → 0.3.2
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/.versions/0.3.2/.claude/commands/build.md +18 -0
- package/.versions/0.3.2/.claude/commands/code-simplify.md +22 -0
- package/.versions/0.3.2/.claude/commands/design-agent.md +14 -0
- package/.versions/0.3.2/.claude/commands/doctor-agent-skills.md +13 -0
- package/.versions/0.3.2/.claude/commands/plan.md +16 -0
- package/.versions/0.3.2/.claude/commands/prime.md +22 -0
- package/.versions/0.3.2/.claude/commands/review.md +16 -0
- package/.versions/0.3.2/.claude/commands/setup-agent-skills.md +19 -0
- package/.versions/0.3.2/.claude/commands/ship.md +17 -0
- package/.versions/0.3.2/.claude/commands/spec.md +15 -0
- package/.versions/0.3.2/.claude/commands/test.md +19 -0
- package/.versions/0.3.2/.opencode/commands/as-build.md +17 -0
- package/.versions/0.3.2/.opencode/commands/as-code-simplify.md +16 -0
- package/.versions/0.3.2/.opencode/commands/as-design-agent.md +15 -0
- package/.versions/0.3.2/.opencode/commands/as-doctor-agent-skills.md +11 -0
- package/.versions/0.3.2/.opencode/commands/as-plan.md +16 -0
- package/.versions/0.3.2/.opencode/commands/as-prime.md +22 -0
- package/.versions/0.3.2/.opencode/commands/as-review.md +15 -0
- package/.versions/0.3.2/.opencode/commands/as-setup-agent-skills.md +11 -0
- package/.versions/0.3.2/.opencode/commands/as-ship.md +16 -0
- package/.versions/0.3.2/.opencode/commands/as-spec.md +16 -0
- package/.versions/0.3.2/.opencode/commands/as-test.md +21 -0
- package/.versions/0.3.2/.pi/agents/agent-chain.yaml +49 -0
- package/.versions/0.3.2/.pi/agents/bowser.md +19 -0
- package/.versions/0.3.2/.pi/agents/pi-pi/agent-expert.md +98 -0
- package/.versions/0.3.2/.pi/agents/pi-pi/cli-expert.md +41 -0
- package/.versions/0.3.2/.pi/agents/pi-pi/config-expert.md +63 -0
- package/.versions/0.3.2/.pi/agents/pi-pi/ext-expert.md +43 -0
- package/.versions/0.3.2/.pi/agents/pi-pi/keybinding-expert.md +134 -0
- package/.versions/0.3.2/.pi/agents/pi-pi/pi-orchestrator.md +57 -0
- package/.versions/0.3.2/.pi/agents/pi-pi/prompt-expert.md +70 -0
- package/.versions/0.3.2/.pi/agents/pi-pi/skill-expert.md +42 -0
- package/.versions/0.3.2/.pi/agents/pi-pi/theme-expert.md +40 -0
- package/.versions/0.3.2/.pi/agents/pi-pi/tui-expert.md +85 -0
- package/.versions/0.3.2/.pi/agents/teams.yaml +31 -0
- package/.versions/0.3.2/.pi/damage-control-rules.yaml +278 -0
- package/.versions/0.3.2/.pi/extensions/agent-skills-update-check/README.md +58 -0
- package/.versions/0.3.2/.pi/extensions/agent-skills-update-check/index.ts +161 -0
- package/.versions/0.3.2/.pi/extensions/agent-skills-update-check/package.json +6 -0
- package/.versions/0.3.2/.pi/extensions/chrome-devtools-mcp/README.md +39 -0
- package/.versions/0.3.2/.pi/extensions/chrome-devtools-mcp/index.ts +61 -0
- package/.versions/0.3.2/.pi/extensions/chrome-devtools-mcp/package.json +6 -0
- package/.versions/0.3.2/.pi/extensions/compact-and-continue/README.md +42 -0
- package/.versions/0.3.2/.pi/extensions/compact-and-continue/index.ts +120 -0
- package/.versions/0.3.2/.pi/extensions/compact-and-continue/package.json +6 -0
- package/.versions/0.3.2/.pi/extensions/mcp-bridge/README.md +46 -0
- package/.versions/0.3.2/.pi/extensions/mcp-bridge/index.ts +206 -0
- package/.versions/0.3.2/.pi/extensions/mcp-bridge/package.json +6 -0
- package/.versions/0.3.2/.pi/extensions/package-lock.json +1143 -0
- package/.versions/0.3.2/.pi/extensions/package.json +9 -0
- package/.versions/0.3.2/.pi/harnesses/agent-chain/README.md +37 -0
- package/.versions/0.3.2/.pi/harnesses/agent-chain/index.ts +795 -0
- package/.versions/0.3.2/.pi/harnesses/agent-chain/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/agent-team/README.md +38 -0
- package/.versions/0.3.2/.pi/harnesses/agent-team/index.ts +732 -0
- package/.versions/0.3.2/.pi/harnesses/agent-team/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/coms/README.md +36 -0
- package/.versions/0.3.2/.pi/harnesses/coms/index.ts +1595 -0
- package/.versions/0.3.2/.pi/harnesses/coms/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/coms-net/README.md +46 -0
- package/.versions/0.3.2/.pi/harnesses/coms-net/index.ts +1637 -0
- package/.versions/0.3.2/.pi/harnesses/coms-net/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/damage-control/README.md +38 -0
- package/.versions/0.3.2/.pi/harnesses/damage-control/index.ts +207 -0
- package/.versions/0.3.2/.pi/harnesses/damage-control/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/damage-control-continue/README.md +37 -0
- package/.versions/0.3.2/.pi/harnesses/damage-control-continue/index.ts +234 -0
- package/.versions/0.3.2/.pi/harnesses/damage-control-continue/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/minimal/README.md +27 -0
- package/.versions/0.3.2/.pi/harnesses/minimal/index.ts +32 -0
- package/.versions/0.3.2/.pi/harnesses/minimal/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/package-lock.json +35 -0
- package/.versions/0.3.2/.pi/harnesses/package.json +9 -0
- package/.versions/0.3.2/.pi/harnesses/pi-pi/README.md +39 -0
- package/.versions/0.3.2/.pi/harnesses/pi-pi/index.ts +631 -0
- package/.versions/0.3.2/.pi/harnesses/pi-pi/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/purpose-gate/README.md +27 -0
- package/.versions/0.3.2/.pi/harnesses/purpose-gate/index.ts +82 -0
- package/.versions/0.3.2/.pi/harnesses/purpose-gate/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/session-replay/README.md +28 -0
- package/.versions/0.3.2/.pi/harnesses/session-replay/index.ts +214 -0
- package/.versions/0.3.2/.pi/harnesses/session-replay/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/subagent-widget/README.md +36 -0
- package/.versions/0.3.2/.pi/harnesses/subagent-widget/index.ts +479 -0
- package/.versions/0.3.2/.pi/harnesses/subagent-widget/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/system-select/README.md +39 -0
- package/.versions/0.3.2/.pi/harnesses/system-select/index.ts +165 -0
- package/.versions/0.3.2/.pi/harnesses/system-select/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/tilldone/README.md +35 -0
- package/.versions/0.3.2/.pi/harnesses/tilldone/index.ts +724 -0
- package/.versions/0.3.2/.pi/harnesses/tilldone/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/tool-counter/README.md +31 -0
- package/.versions/0.3.2/.pi/harnesses/tool-counter/index.ts +100 -0
- package/.versions/0.3.2/.pi/harnesses/tool-counter/package.json +6 -0
- package/.versions/0.3.2/.pi/harnesses/tool-counter-widget/README.md +27 -0
- package/.versions/0.3.2/.pi/harnesses/tool-counter-widget/index.ts +66 -0
- package/.versions/0.3.2/.pi/harnesses/tool-counter-widget/package.json +6 -0
- package/.versions/0.3.2/.pi/prompts/build.md +24 -0
- package/.versions/0.3.2/.pi/prompts/code-simplify.md +22 -0
- package/.versions/0.3.2/.pi/prompts/doctor-agent-skills.md +13 -0
- package/.versions/0.3.2/.pi/prompts/plan.md +16 -0
- package/.versions/0.3.2/.pi/prompts/review.md +16 -0
- package/.versions/0.3.2/.pi/prompts/setup-agent-skills.md +19 -0
- package/.versions/0.3.2/.pi/prompts/ship.md +17 -0
- package/.versions/0.3.2/.pi/prompts/spec.md +15 -0
- package/.versions/0.3.2/.pi/prompts/test.md +19 -0
- package/.versions/0.3.2/.pi/skills/bowser/SKILL.md +114 -0
- package/.versions/0.3.2/.version +1 -0
- package/.versions/0.3.2/agents/builder.md +6 -0
- package/.versions/0.3.2/agents/code-reviewer.md +93 -0
- package/.versions/0.3.2/agents/documenter.md +6 -0
- package/.versions/0.3.2/agents/plan-reviewer.md +22 -0
- package/.versions/0.3.2/agents/planner.md +6 -0
- package/.versions/0.3.2/agents/scout.md +6 -0
- package/.versions/0.3.2/agents/security-auditor.md +97 -0
- package/.versions/0.3.2/agents/test-engineer.md +89 -0
- package/.versions/0.3.2/hooks/SIMPLIFY-IGNORE.md +90 -0
- package/.versions/0.3.2/hooks/hooks.json +14 -0
- package/.versions/0.3.2/hooks/session-start.sh +74 -0
- package/.versions/0.3.2/hooks/simplify-ignore-test.sh +247 -0
- package/.versions/0.3.2/hooks/simplify-ignore.sh +302 -0
- package/.versions/0.3.2/references/accessibility-checklist.md +159 -0
- package/.versions/0.3.2/references/performance-checklist.md +121 -0
- package/.versions/0.3.2/references/prompting-patterns.md +380 -0
- package/.versions/0.3.2/references/security-checklist.md +134 -0
- package/.versions/0.3.2/references/testing-patterns.md +236 -0
- package/.versions/0.3.2/skills/api-and-interface-design/SKILL.md +294 -0
- package/.versions/0.3.2/skills/browser-testing-with-devtools/SKILL.md +335 -0
- package/.versions/0.3.2/skills/ci-cd-and-automation/SKILL.md +390 -0
- package/.versions/0.3.2/skills/code-review-and-quality/SKILL.md +347 -0
- package/.versions/0.3.2/skills/code-simplification/SKILL.md +331 -0
- package/.versions/0.3.2/skills/context-engineering/SKILL.md +291 -0
- package/.versions/0.3.2/skills/debugging-and-error-recovery/SKILL.md +300 -0
- package/.versions/0.3.2/skills/deprecation-and-migration/SKILL.md +206 -0
- package/.versions/0.3.2/skills/designing-agents/SKILL.md +394 -0
- package/.versions/0.3.2/skills/designing-agents/pi-harness-authoring.md +213 -0
- package/.versions/0.3.2/skills/documentation-and-adrs/SKILL.md +278 -0
- package/.versions/0.3.2/skills/frontend-ui-engineering/SKILL.md +322 -0
- package/.versions/0.3.2/skills/git-workflow-and-versioning/SKILL.md +316 -0
- package/.versions/0.3.2/skills/guided-workspace-setup/SKILL.md +345 -0
- package/.versions/0.3.2/skills/idea-refine/SKILL.md +178 -0
- package/.versions/0.3.2/skills/idea-refine/examples.md +238 -0
- package/.versions/0.3.2/skills/idea-refine/frameworks.md +99 -0
- package/.versions/0.3.2/skills/idea-refine/refinement-criteria.md +113 -0
- package/.versions/0.3.2/skills/idea-refine/scripts/idea-refine.sh +15 -0
- package/.versions/0.3.2/skills/incremental-implementation/SKILL.md +279 -0
- package/.versions/0.3.2/skills/performance-optimization/SKILL.md +350 -0
- package/.versions/0.3.2/skills/planning-and-task-breakdown/SKILL.md +237 -0
- package/.versions/0.3.2/skills/security-and-hardening/SKILL.md +349 -0
- package/.versions/0.3.2/skills/shipping-and-launch/SKILL.md +309 -0
- package/.versions/0.3.2/skills/source-driven-development/SKILL.md +194 -0
- package/.versions/0.3.2/skills/spec-driven-development/SKILL.md +237 -0
- package/.versions/0.3.2/skills/test-driven-development/SKILL.md +379 -0
- package/.versions/0.3.2/skills/using-agent-skills/SKILL.md +176 -0
- package/CHANGELOG.md +36 -0
- package/bin/lib/bootstrap.js +56 -1
- package/docs/npm-install.md +30 -0
- package/package.json +1 -1
- package/skills/guided-workspace-setup/SKILL.md +16 -2
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# tool-counter
|
|
2
|
+
|
|
3
|
+
Rich two-line custom footer.
|
|
4
|
+
|
|
5
|
+
> Ported from [`pi-vs-claude-code`](https://github.com/disler/pi-vs-claude-code) by [disler](https://github.com/disler) (MIT). See the [extension catalog](../../../docs/pi-extensions.md).
|
|
6
|
+
|
|
7
|
+
## What it does
|
|
8
|
+
|
|
9
|
+
Replaces the pi footer with two information-dense lines:
|
|
10
|
+
|
|
11
|
+
- **Line 1** — model + context meter on the left; tokens in/out + cost on the right
|
|
12
|
+
- **Line 2** — cwd (and git branch) on the left; a per-tool call tally on the right
|
|
13
|
+
|
|
14
|
+
It accumulates token and cost figures by traversing the session branch, and updates the
|
|
15
|
+
branch display on `onBranchChange`.
|
|
16
|
+
|
|
17
|
+
## Commands & tools
|
|
18
|
+
|
|
19
|
+
None — footer only.
|
|
20
|
+
|
|
21
|
+
## Usage
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
pi -e .pi/harnesses/tool-counter/index.ts
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Upstream changes
|
|
28
|
+
|
|
29
|
+
- Theme integration removed — the `themeMap.ts` import and the `applyExtensionDefaults()`
|
|
30
|
+
call were stripped (this repo does not ship pi themes). The footer renders against pi's
|
|
31
|
+
active theme.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Counter — Rich two-line custom footer
|
|
3
|
+
*
|
|
4
|
+
* Line 1: model + context meter on left, tokens in/out + cost on right
|
|
5
|
+
* Line 2: cwd (branch) on left, tool call tally on right
|
|
6
|
+
*
|
|
7
|
+
* Demonstrates: setFooter, footerData.getGitBranch(), onBranchChange(),
|
|
8
|
+
* session branch traversal for token/cost accumulation.
|
|
9
|
+
*
|
|
10
|
+
* Usage: pi -e extensions/tool-counter.ts
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import type { AssistantMessage } from "@mariozechner/pi-ai";
|
|
14
|
+
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
|
|
15
|
+
import { truncateToWidth, visibleWidth } from "@mariozechner/pi-tui";
|
|
16
|
+
import { basename } from "node:path";
|
|
17
|
+
|
|
18
|
+
export default function (pi: ExtensionAPI) {
|
|
19
|
+
const counts: Record<string, number> = {};
|
|
20
|
+
|
|
21
|
+
pi.on("tool_execution_end", async (event) => {
|
|
22
|
+
counts[event.toolName] = (counts[event.toolName] || 0) + 1;
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
pi.on("session_start", async (_event, ctx) => {
|
|
26
|
+
ctx.ui.setFooter((tui, theme, footerData) => {
|
|
27
|
+
const unsub = footerData.onBranchChange(() => tui.requestRender());
|
|
28
|
+
|
|
29
|
+
return {
|
|
30
|
+
dispose: unsub,
|
|
31
|
+
invalidate() {},
|
|
32
|
+
render(width: number): string[] {
|
|
33
|
+
// --- Line 1: cwd + branch (left), tokens + cost (right) ---
|
|
34
|
+
let tokIn = 0;
|
|
35
|
+
let tokOut = 0;
|
|
36
|
+
let cost = 0;
|
|
37
|
+
for (const entry of ctx.sessionManager.getBranch()) {
|
|
38
|
+
if (entry.type === "message" && entry.message.role === "assistant") {
|
|
39
|
+
const m = entry.message as AssistantMessage;
|
|
40
|
+
tokIn += m.usage.input;
|
|
41
|
+
tokOut += m.usage.output;
|
|
42
|
+
cost += m.usage.cost.total;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const fmt = (n: number) => n < 1000 ? `${n}` : `${(n / 1000).toFixed(1)}k`;
|
|
47
|
+
const dir = basename(ctx.cwd);
|
|
48
|
+
const branch = footerData.getGitBranch();
|
|
49
|
+
|
|
50
|
+
// --- Line 1: model + context meter (left), tokens + cost (right) ---
|
|
51
|
+
const usage = ctx.getContextUsage();
|
|
52
|
+
const pct = usage ? usage.percent : 0;
|
|
53
|
+
const filled = Math.round(pct / 10) || 1;
|
|
54
|
+
const bar = "#".repeat(filled) + "-".repeat(10 - filled);
|
|
55
|
+
const model = ctx.model?.id || "no-model";
|
|
56
|
+
|
|
57
|
+
const l1Left =
|
|
58
|
+
theme.fg("dim", ` ${model} `) +
|
|
59
|
+
theme.fg("warning", "[") +
|
|
60
|
+
theme.fg("success", "#".repeat(filled)) +
|
|
61
|
+
theme.fg("dim", "-".repeat(10 - filled)) +
|
|
62
|
+
theme.fg("warning", "]") +
|
|
63
|
+
theme.fg("dim", " ") +
|
|
64
|
+
theme.fg("accent", `${Math.round(pct)}%`);
|
|
65
|
+
|
|
66
|
+
const l1Right =
|
|
67
|
+
theme.fg("success", `${fmt(tokIn)}`) +
|
|
68
|
+
theme.fg("dim", " in ") +
|
|
69
|
+
theme.fg("accent", `${fmt(tokOut)}`) +
|
|
70
|
+
theme.fg("dim", " out ") +
|
|
71
|
+
theme.fg("warning", `$${cost.toFixed(4)}`) +
|
|
72
|
+
theme.fg("dim", " ");
|
|
73
|
+
|
|
74
|
+
const pad1 = " ".repeat(Math.max(1, width - visibleWidth(l1Left) - visibleWidth(l1Right)));
|
|
75
|
+
const line1 = truncateToWidth(l1Left + pad1 + l1Right, width, "");
|
|
76
|
+
|
|
77
|
+
// --- Line 2: cwd + branch (left), tool tally (right) ---
|
|
78
|
+
const l2Left =
|
|
79
|
+
theme.fg("dim", ` ${dir}`) +
|
|
80
|
+
(branch
|
|
81
|
+
? theme.fg("dim", " ") + theme.fg("warning", "(") + theme.fg("success", branch) + theme.fg("warning", ")")
|
|
82
|
+
: "");
|
|
83
|
+
|
|
84
|
+
const entries = Object.entries(counts);
|
|
85
|
+
const l2Right = entries.length === 0
|
|
86
|
+
? theme.fg("dim", "waiting for tools ")
|
|
87
|
+
: entries.map(
|
|
88
|
+
([name, count]) =>
|
|
89
|
+
theme.fg("accent", name) + theme.fg("dim", " ") + theme.fg("success", `${count}`)
|
|
90
|
+
).join(theme.fg("warning", " | ")) + theme.fg("dim", " ");
|
|
91
|
+
|
|
92
|
+
const pad2 = " ".repeat(Math.max(1, width - visibleWidth(l2Left) - visibleWidth(l2Right)));
|
|
93
|
+
const line2 = truncateToWidth(l2Left + pad2 + l2Right, width, "");
|
|
94
|
+
|
|
95
|
+
return [line1, line2];
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# tool-counter-widget
|
|
2
|
+
|
|
3
|
+
Tool-call counts in a widget above the editor.
|
|
4
|
+
|
|
5
|
+
> Ported from [`pi-vs-claude-code`](https://github.com/disler/pi-vs-claude-code) by [disler](https://github.com/disler) (MIT). See the [extension catalog](../../../docs/pi-extensions.md).
|
|
6
|
+
|
|
7
|
+
## What it does
|
|
8
|
+
|
|
9
|
+
Shows a persistent, live-updating widget above the editor with per-tool call counts, each
|
|
10
|
+
tool tinted with its own background colour — e.g. `Tools (12): [Bash 3] [Read 7] [Write 2]`.
|
|
11
|
+
Unlike [`tool-counter`](../tool-counter/README.md), which is a full footer, this is a
|
|
12
|
+
compact widget you can stack with other footers.
|
|
13
|
+
|
|
14
|
+
## Commands & tools
|
|
15
|
+
|
|
16
|
+
None — widget only.
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
pi -e .pi/harnesses/tool-counter-widget/index.ts
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Upstream changes
|
|
25
|
+
|
|
26
|
+
- Theme integration removed — the `themeMap.ts` import and the `applyExtensionDefaults()`
|
|
27
|
+
call were stripped (this repo does not ship pi themes).
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Counter Widget — Tool call counts in a widget above the editor
|
|
3
|
+
*
|
|
4
|
+
* Shows a persistent, live-updating widget with per-tool background colors.
|
|
5
|
+
* Format: Tools (N): [Bash 3] [Read 7] [Write 2]
|
|
6
|
+
*
|
|
7
|
+
* Usage: pi -e extensions/tool-counter-widget.ts
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
|
|
11
|
+
import { Box, Text } from "@mariozechner/pi-tui";
|
|
12
|
+
|
|
13
|
+
const palette = [
|
|
14
|
+
[12, 40, 80], // deep navy
|
|
15
|
+
[50, 20, 70], // dark purple
|
|
16
|
+
[10, 55, 45], // dark teal
|
|
17
|
+
[70, 30, 10], // dark rust
|
|
18
|
+
[55, 15, 40], // dark plum
|
|
19
|
+
[15, 50, 65], // dark ocean
|
|
20
|
+
[45, 45, 15], // dark olive
|
|
21
|
+
[65, 18, 25], // dark wine
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
function bg(rgb: number[], s: string): string {
|
|
25
|
+
return `\x1b[48;2;${rgb[0]};${rgb[1]};${rgb[2]}m${s}\x1b[49m`;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export default function (pi: ExtensionAPI) {
|
|
29
|
+
const counts: Record<string, number> = {};
|
|
30
|
+
const toolColors: Record<string, number[]> = {};
|
|
31
|
+
let total = 0;
|
|
32
|
+
let colorIdx = 0;
|
|
33
|
+
|
|
34
|
+
pi.on("tool_execution_end", async (event) => {
|
|
35
|
+
if (!(event.toolName in toolColors)) {
|
|
36
|
+
toolColors[event.toolName] = palette[colorIdx % palette.length];
|
|
37
|
+
colorIdx++;
|
|
38
|
+
}
|
|
39
|
+
counts[event.toolName] = (counts[event.toolName] || 0) + 1;
|
|
40
|
+
total++;
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
pi.on("session_start", async (_event, ctx) => {
|
|
44
|
+
ctx.ui.setWidget("tool-counter", (_tui, theme) => {
|
|
45
|
+
const text = new Text("", 1, 1);
|
|
46
|
+
|
|
47
|
+
return {
|
|
48
|
+
render(width: number): string[] {
|
|
49
|
+
const entries = Object.entries(counts);
|
|
50
|
+
const parts = entries.map(([name, count]) => {
|
|
51
|
+
const rgb = toolColors[name];
|
|
52
|
+
return bg(rgb, `\x1b[38;2;220;220;220m ${name} ${count} \x1b[39m`);
|
|
53
|
+
});
|
|
54
|
+
text.setText(
|
|
55
|
+
theme.fg("accent", `Tools (${total}):`) +
|
|
56
|
+
(entries.length > 0 ? " " + parts.join(" ") : "")
|
|
57
|
+
);
|
|
58
|
+
return text.render(width);
|
|
59
|
+
},
|
|
60
|
+
invalidate() {
|
|
61
|
+
text.invalidate();
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Implement the next task incrementally — build, test, verify, request review
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Load and follow the `incremental-implementation` and `test-driven-development` skills before proceeding.
|
|
6
|
+
|
|
7
|
+
Pick the next pending task from the plan. For each task:
|
|
8
|
+
|
|
9
|
+
1. Read the task's acceptance criteria
|
|
10
|
+
2. Load relevant context (existing code, patterns, types)
|
|
11
|
+
3. Write a failing test for the expected behavior (RED)
|
|
12
|
+
4. Implement the minimum code to pass the test (GREEN)
|
|
13
|
+
5. Run the full test suite to check for regressions
|
|
14
|
+
6. Run the build to verify compilation
|
|
15
|
+
7. Present the Standard Slice Summary and ask the user to choose between:
|
|
16
|
+
- **Approve & continue** — proceed to the next slice
|
|
17
|
+
- **Request changes** — revise within the same slice, then re-summarize and re-ask
|
|
18
|
+
- **Compact & continue** — call `request_compaction` (from the `compact-and-continue` extension) with a self-contained `continuationPrompt` describing the remaining slices and the next concrete action, then end the turn so compaction runs; pi will auto-resume from the continuation prompt
|
|
19
|
+
- **Stop here** — leave changes unstaged and end the session
|
|
20
|
+
Use the `ask_user` tool (from `pi-ask-user`) when available; otherwise ask in chat. Wait for an explicit choice — do not proceed on silence. If the `request_compaction` tool is not registered (extension not installed), omit the "Compact & continue" option.
|
|
21
|
+
8. Leave changes unstaged; the user handles staging and commits manually
|
|
22
|
+
9. Mark the task complete and move to the next one only after approval
|
|
23
|
+
|
|
24
|
+
If any step fails, load and follow the `debugging-and-error-recovery` skill.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Simplify code for clarity and maintainability — reduce complexity without changing behavior
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Load and follow the `code-simplification` skill before proceeding.
|
|
6
|
+
|
|
7
|
+
Simplify recently changed code (or the specified scope) while preserving exact behavior:
|
|
8
|
+
|
|
9
|
+
1. Read the repository agent guide and study project conventions
|
|
10
|
+
2. Identify the target code — recent changes unless a broader scope is specified
|
|
11
|
+
3. Understand the code's purpose, callers, edge cases, and test coverage before touching it
|
|
12
|
+
4. Scan for simplification opportunities:
|
|
13
|
+
- Deep nesting → guard clauses or extracted helpers
|
|
14
|
+
- Long functions → split by responsibility
|
|
15
|
+
- Nested ternaries → if/else or switch
|
|
16
|
+
- Generic names → descriptive names
|
|
17
|
+
- Duplicated logic → shared functions
|
|
18
|
+
- Dead code → remove after confirming
|
|
19
|
+
5. Apply each simplification incrementally — run tests after each change
|
|
20
|
+
6. Verify all tests pass, the build succeeds, and the diff is clean
|
|
21
|
+
|
|
22
|
+
If tests fail after a simplification, revert that change and reconsider. Load and follow `code-review-and-quality` to review the result.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Scan agent-skills install targets for broken symlinks and stale persona references, then offer repairs
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Load and follow Step 5 (Doctor preflight) of the `guided-workspace-setup` skill — without running the rest of the install flow. Use this when the user wants the repair pass on its own; the full `/setup-agent-skills` flow runs the same scan automatically as soon as it detects prior install state.
|
|
6
|
+
|
|
7
|
+
Walk every install-target directory the chosen coding agent uses (`agents/`, `.claude/agents/`, `.opencode/agents/`, `.codex/agents/`, `.gemini/agents/`, `.github/agents/`, `.pi/agents/` and `pi-pi/`, `.claude/skills/`, `.opencode/skills/`, `.pi/skills/`, `.agents/skills`, `.claude/commands/`, `.opencode/commands/`, `.pi/prompts/`, `.claude/references/`, `.claude/hooks/`). For each broken symlink, resolve where it pointed, look for a canonical replacement in the source `agents/` and `skills/` trees, and offer to repoint or delete. Common stale names from the pre-merge persona layout: `reviewer` → `code-reviewer`, `red-team` → `security-auditor`.
|
|
8
|
+
|
|
9
|
+
Also flag and offer to rewrite any YAML configs (`teams.yaml`, `agent-chain.yaml`, etc.) that still reference removed persona names.
|
|
10
|
+
|
|
11
|
+
Present findings as a `# | Path | Issue | Suggested fix` table and ask the user to pick which fixes to apply.
|
|
12
|
+
|
|
13
|
+
Never overwrite a regular file — only act on symlinks whose target is missing. Report `repaired`, `deleted`, and `skipped` counts, and append a `## doctor-runs` line to `.ai/agent-skills-setup.md` with the date, agent, phase (`standalone`), and counts.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Break work into small verifiable tasks with acceptance criteria and dependency ordering
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Load and follow the `planning-and-task-breakdown` skill before proceeding.
|
|
6
|
+
|
|
7
|
+
Read the existing spec (SPEC.md or equivalent) and the relevant codebase sections. Then:
|
|
8
|
+
|
|
9
|
+
1. Enter plan mode — read only, no code changes
|
|
10
|
+
2. Identify the dependency graph between components
|
|
11
|
+
3. Slice work vertically (one complete path per task, not horizontal layers)
|
|
12
|
+
4. Write tasks with acceptance criteria and verification steps
|
|
13
|
+
5. Add checkpoints between phases
|
|
14
|
+
6. Present the plan for human review
|
|
15
|
+
|
|
16
|
+
Save the plan to the location the `planning-and-task-breakdown` skill defines (default `docs/plans/{area}/PLAN-{prd-name}-{phase}.md`, with the task list embedded — no separate todo file; overridable per project via `.ai/agent-skills-overrides.md`). Match the project's existing `docs`/`Docs` capitalization.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Conduct a five-axis code review — correctness, readability, architecture, security, performance
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Load and follow the `code-review-and-quality` skill before proceeding.
|
|
6
|
+
|
|
7
|
+
Review the current changes (staged or recent commits) across all five axes:
|
|
8
|
+
|
|
9
|
+
1. **Correctness** — Does it match the spec? Edge cases handled? Tests adequate?
|
|
10
|
+
2. **Readability** — Clear names? Straightforward logic? Well-organized?
|
|
11
|
+
3. **Architecture** — Follows existing patterns? Clean boundaries? Right abstraction level?
|
|
12
|
+
4. **Security** — Input validated? Secrets safe? Auth checked? Load and follow the `security-and-hardening` skill where relevant.
|
|
13
|
+
5. **Performance** — No N+1 queries? No unbounded ops? Load and follow the `performance-optimization` skill where relevant.
|
|
14
|
+
|
|
15
|
+
Categorize findings as Critical, Important, or Suggestion.
|
|
16
|
+
Output a structured review with specific file:line references and fix recommendations.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Guided setup — install agent-skills artifacts into a workspace for a chosen coding agent
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Load and follow the `guided-workspace-setup` skill before proceeding.
|
|
6
|
+
|
|
7
|
+
Run the guided install for a target workspace. If the user passed a workspace path, use it; otherwise ask for it. Detect the running coding agent and confirm it with the user.
|
|
8
|
+
|
|
9
|
+
Analyse the workspace. If prior install state is found (`.ai/agent-skills-setup.md` or a populated agent directory), run the **Doctor preflight** first (Step 5) — scan for broken symlinks and stale persona references, present findings as a table, and apply the fixes the user picks before continuing.
|
|
10
|
+
|
|
11
|
+
Then present the install menu as **one multi-select per group** (18 groups across skills, personas, commands, pi extensions/harnesses, references, hooks) with `★` marking recommendations. Each group renders as a `Pick | Item | Status | Rec | Purpose` table; every row carries an explicit status text — `installed · up to date`, `installed · outdated`, `installed · modified`, `not installed`, or `broken · skipped in preflight`. Installed items are **pre-checked `[x]`** so unchecking = remove; not-installed items start `[ ]`. Per-group reply shortcuts: `all`, `recommended` (adds `★` items on top of the pre-selection — never unticks installed ones), `none`, `keep` (accept the pre-selection unchanged), or a list of picks. Never offer `setup`, `doctor`, or `guided-workspace-setup` — those are installer-only and live in the source agent-skills repo.
|
|
12
|
+
|
|
13
|
+
Unchecking an installed item means *remove it*, but **removal is scoped**: only act on items whose name is in the agent-skills inventory **and** that are recorded in `## install-status` (or are symlinks resolving into the source repo). User-authored skills, custom commands, third-party plugins, and unrelated settings/env keys are left untouched and logged as "Skipped — not owned by agent-skills".
|
|
14
|
+
|
|
15
|
+
**No cross-tool substitution.** Each row is offered only when the source file the chosen agent needs already exists — for `pi`, that means `.pi/prompts/<name>.md`, `.pi/extensions/<name>/`, etc. Never fall back to `.claude/commands/` (or another agent's tree) to satisfy a pi prompt request; items missing their per-agent source are filtered out of the menu entirely.
|
|
16
|
+
|
|
17
|
+
**No mid-apply overwrite prompts.** The Step 6 status text already warns that `installed · modified` rows will have local edits overwritten if kept ticked. The user's tick is the consent; the Step 9 confirmation is the single gate. During apply, refresh ticked items unconditionally — never pause to ask "should I overwrite this file?". Genuine errors (permission denied, missing source) still stop and report.
|
|
18
|
+
|
|
19
|
+
Offer override sections for the workspace's `.ai/agent-skills-overrides.md` based on the analysis, and record what was installed in `.ai/agent-skills-setup.md`. Summarise the full plan and wait for explicit confirmation before writing anything, then perform the setup, re-scan for any new breakage, and report what changed.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run the pre-launch checklist and prepare for production deployment
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Load and follow the `shipping-and-launch` skill before proceeding.
|
|
6
|
+
|
|
7
|
+
Run through the complete pre-launch checklist:
|
|
8
|
+
|
|
9
|
+
1. **Code Quality** — Tests pass, build clean, lint clean, no TODOs, no console.logs
|
|
10
|
+
2. **Security** — npm audit clean, no secrets in code, auth in place, headers configured
|
|
11
|
+
3. **Performance** — Core Web Vitals good, no N+1 queries, images optimized, bundle sized
|
|
12
|
+
4. **Accessibility** — Keyboard nav works, screen reader compatible, contrast adequate
|
|
13
|
+
5. **Infrastructure** — Env vars set, migrations ready, monitoring configured
|
|
14
|
+
6. **Documentation** — README current, ADRs written, changelog updated
|
|
15
|
+
|
|
16
|
+
Report any failing checks and help resolve them before deployment.
|
|
17
|
+
Define the rollback plan before proceeding.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Start spec-driven development — write a structured specification before writing code
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Load and follow the `spec-driven-development` skill before proceeding.
|
|
6
|
+
|
|
7
|
+
Begin by understanding what the user wants to build. Ask clarifying questions about:
|
|
8
|
+
1. The objective and target users
|
|
9
|
+
2. Core features and acceptance criteria
|
|
10
|
+
3. Tech stack preferences and constraints
|
|
11
|
+
4. Known boundaries (what to always do, ask first about, and never do)
|
|
12
|
+
|
|
13
|
+
Then generate a structured spec covering all six core areas: objective, commands, project structure, code style, testing strategy, and boundaries.
|
|
14
|
+
|
|
15
|
+
Save the spec to the location the `spec-driven-development` skill defines (default `docs/prds/{area}/PRD{n}-{topic}.md`; overridable per project via `.ai/agent-skills-overrides.md`). Confirm with the user before proceeding.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run TDD workflow — write failing tests, implement, verify. For bugs, use the Prove-It pattern.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Load and follow the `test-driven-development` skill before proceeding.
|
|
6
|
+
|
|
7
|
+
For new features:
|
|
8
|
+
1. Write tests that describe the expected behavior (they should FAIL)
|
|
9
|
+
2. Implement the code to make them pass
|
|
10
|
+
3. Refactor while keeping tests green
|
|
11
|
+
|
|
12
|
+
For bug fixes (Prove-It pattern):
|
|
13
|
+
1. Write a test that reproduces the bug (must FAIL)
|
|
14
|
+
2. Confirm the test fails
|
|
15
|
+
3. Implement the fix
|
|
16
|
+
4. Confirm the test passes
|
|
17
|
+
5. Run the full test suite for regressions
|
|
18
|
+
|
|
19
|
+
For browser-related issues, also load and follow the `browser-testing-with-devtools` skill and verify with Chrome DevTools MCP.
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bowser
|
|
3
|
+
description: Headless browser automation using Playwright CLI. Use when you need headless browsing, parallel browser sessions, UI testing, screenshots, web scraping, or browser automation that can run in the background. Keywords - playwright, headless, browser, test, screenshot, scrape, parallel.
|
|
4
|
+
allowed-tools: Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Playwright Bowser
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Automate browsers using `playwright-cli` — a token-efficient CLI for Playwright. Runs headless by default, supports parallel sessions via named sessions (`-s=`), and doesn't load tool schemas into context.
|
|
12
|
+
|
|
13
|
+
## Key Details
|
|
14
|
+
|
|
15
|
+
- **Headless by default** — pass `--headed` to `open` to see the browser
|
|
16
|
+
- **Parallel sessions** — use `-s=<name>` to run multiple independent browser instances
|
|
17
|
+
- **Persistent profiles** — cookies and storage state preserved between calls
|
|
18
|
+
- **Token-efficient** — CLI-based, no accessibility trees or tool schemas in context
|
|
19
|
+
- **Vision mode** (opt-in) — set `PLAYWRIGHT_MCP_CAPS=vision` to receive screenshots as image responses in context instead of just saving to disk
|
|
20
|
+
|
|
21
|
+
## Sessions
|
|
22
|
+
|
|
23
|
+
**Always use a named session.** Derive a short, descriptive kebab-case name from the user's prompt. This gives each task a persistent browser profile (cookies, localStorage, history) that accumulates across calls.
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Derive session name from prompt context:
|
|
27
|
+
# "test the checkout flow on mystore.com" → -s=mystore-checkout
|
|
28
|
+
# "scrape pricing from competitor.com" → -s=competitor-pricing
|
|
29
|
+
# "UI test the login page" → -s=login-ui-test
|
|
30
|
+
|
|
31
|
+
playwright-cli -s=mystore-checkout open https://mystore.com --persistent
|
|
32
|
+
playwright-cli -s=mystore-checkout snapshot
|
|
33
|
+
playwright-cli -s=mystore-checkout click e12
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Managing sessions:
|
|
37
|
+
```bash
|
|
38
|
+
playwright-cli list # list all sessions
|
|
39
|
+
playwright-cli close-all # close all sessions
|
|
40
|
+
playwright-cli -s=<name> close # close specific session
|
|
41
|
+
playwright-cli -s=<name> delete-data # wipe session profile
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Quick Reference
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
Core: open [url], goto <url>, click <ref>, fill <ref> <text>, type <text>, snapshot, screenshot [ref], close
|
|
48
|
+
Navigate: go-back, go-forward, reload
|
|
49
|
+
Keyboard: press <key>, keydown <key>, keyup <key>
|
|
50
|
+
Mouse: mousemove <x> <y>, mousedown, mouseup, mousewheel <dx> <dy>
|
|
51
|
+
Tabs: tab-list, tab-new [url], tab-close [index], tab-select <index>
|
|
52
|
+
Save: screenshot [ref], pdf, screenshot --filename=f
|
|
53
|
+
Storage: state-save, state-load, cookie-*, localstorage-*, sessionstorage-*
|
|
54
|
+
Network: route <pattern>, route-list, unroute, network
|
|
55
|
+
DevTools: console, run-code <code>, tracing-start/stop, video-start/stop
|
|
56
|
+
Sessions: -s=<name> <cmd>, list, close-all, kill-all
|
|
57
|
+
Config: open --headed, open --browser=chrome, resize <w> <h>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Workflow
|
|
61
|
+
|
|
62
|
+
1. Derive a session name from the user's prompt and open with `--persistent` to preserve cookies/state. Always set the viewport via env var at launch:
|
|
63
|
+
```bash
|
|
64
|
+
PLAYWRIGHT_MCP_VIEWPORT_SIZE=1440x900 playwright-cli -s=<session-name> open <url> --persistent
|
|
65
|
+
# or headed:
|
|
66
|
+
PLAYWRIGHT_MCP_VIEWPORT_SIZE=1440x900 playwright-cli -s=<session-name> open <url> --persistent --headed
|
|
67
|
+
# or with vision (screenshots returned as image responses in context):
|
|
68
|
+
PLAYWRIGHT_MCP_VIEWPORT_SIZE=1440x900 PLAYWRIGHT_MCP_CAPS=vision playwright-cli -s=<session-name> open <url> --persistent
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
3. Get element references via snapshot:
|
|
72
|
+
```bash
|
|
73
|
+
playwright-cli snapshot
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
4. Interact using refs from snapshot:
|
|
77
|
+
```bash
|
|
78
|
+
playwright-cli click <ref>
|
|
79
|
+
playwright-cli fill <ref> "text"
|
|
80
|
+
playwright-cli type "text"
|
|
81
|
+
playwright-cli press Enter
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
5. Capture results:
|
|
85
|
+
```bash
|
|
86
|
+
playwright-cli screenshot
|
|
87
|
+
playwright-cli screenshot --filename=output.png
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
6. **Always close the session when done.** This is not optional — close the named session after finishing your task:
|
|
91
|
+
```bash
|
|
92
|
+
playwright-cli -s=<session-name> close
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Configuration
|
|
96
|
+
|
|
97
|
+
If a `playwright-cli.json` exists in the working directory, use it automatically. If the user provides a path to a config file, use `--config path/to/config.json`. Otherwise, skip configuration — the env var and CLI defaults are sufficient.
|
|
98
|
+
|
|
99
|
+
```json
|
|
100
|
+
{
|
|
101
|
+
"browser": {
|
|
102
|
+
"browserName": "chromium",
|
|
103
|
+
"launchOptions": { "headless": true },
|
|
104
|
+
"contextOptions": { "viewport": { "width": 1440, "height": 900 } }
|
|
105
|
+
},
|
|
106
|
+
"outputDir": "./screenshots"
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Full Help
|
|
111
|
+
|
|
112
|
+
Run `playwright-cli --help` or `playwright-cli --help <command>` for detailed command usage.
|
|
113
|
+
|
|
114
|
+
See [docs/playwright-cli.md](docs/playwright-cli.md) for full documentation.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.3.2
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: builder
|
|
3
|
+
description: Implementation and code generation
|
|
4
|
+
tools: read,write,edit,bash,grep,find,ls
|
|
5
|
+
---
|
|
6
|
+
You are a builder agent. Implement the requested changes thoroughly. Write clean, minimal code. Follow existing patterns in the codebase. Test your work when possible.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-reviewer
|
|
3
|
+
description: Senior code reviewer that evaluates changes across five dimensions — correctness, readability, architecture, security, and performance. Use for thorough code review before merge.
|
|
4
|
+
tools: read,bash,grep,find,ls
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Senior Code Reviewer
|
|
8
|
+
|
|
9
|
+
You are an experienced Staff Engineer conducting a thorough code review. Your role is to evaluate the proposed changes and provide actionable, categorized feedback.
|
|
10
|
+
|
|
11
|
+
## Review Framework
|
|
12
|
+
|
|
13
|
+
Evaluate every change across these five dimensions:
|
|
14
|
+
|
|
15
|
+
### 1. Correctness
|
|
16
|
+
- Does the code do what the spec/task says it should?
|
|
17
|
+
- Are edge cases handled (null, empty, boundary values, error paths)?
|
|
18
|
+
- Do the tests actually verify the behavior? Are they testing the right things?
|
|
19
|
+
- Are there race conditions, off-by-one errors, or state inconsistencies?
|
|
20
|
+
|
|
21
|
+
### 2. Readability
|
|
22
|
+
- Can another engineer understand this without explanation?
|
|
23
|
+
- Are names descriptive and consistent with project conventions?
|
|
24
|
+
- Is the control flow straightforward (no deeply nested logic)?
|
|
25
|
+
- Is the code well-organized (related code grouped, clear boundaries)?
|
|
26
|
+
|
|
27
|
+
### 3. Architecture
|
|
28
|
+
- Does the change follow existing patterns or introduce a new one?
|
|
29
|
+
- If a new pattern, is it justified and documented?
|
|
30
|
+
- Are module boundaries maintained? Any circular dependencies?
|
|
31
|
+
- Is the abstraction level appropriate (not over-engineered, not too coupled)?
|
|
32
|
+
- Are dependencies flowing in the right direction?
|
|
33
|
+
|
|
34
|
+
### 4. Security
|
|
35
|
+
- Is user input validated and sanitized at system boundaries?
|
|
36
|
+
- Are secrets kept out of code, logs, and version control?
|
|
37
|
+
- Is authentication/authorization checked where needed?
|
|
38
|
+
- Are queries parameterized? Is output encoded?
|
|
39
|
+
- Any new dependencies with known vulnerabilities?
|
|
40
|
+
|
|
41
|
+
### 5. Performance
|
|
42
|
+
- Any N+1 query patterns?
|
|
43
|
+
- Any unbounded loops or unconstrained data fetching?
|
|
44
|
+
- Any synchronous operations that should be async?
|
|
45
|
+
- Any unnecessary re-renders (in UI components)?
|
|
46
|
+
- Any missing pagination on list endpoints?
|
|
47
|
+
|
|
48
|
+
## Output Format
|
|
49
|
+
|
|
50
|
+
Categorize every finding:
|
|
51
|
+
|
|
52
|
+
**Critical** — Must fix before merge (security vulnerability, data loss risk, broken functionality)
|
|
53
|
+
|
|
54
|
+
**Important** — Should fix before merge (missing test, wrong abstraction, poor error handling)
|
|
55
|
+
|
|
56
|
+
**Suggestion** — Consider for improvement (naming, code style, optional optimization)
|
|
57
|
+
|
|
58
|
+
## Review Output Template
|
|
59
|
+
|
|
60
|
+
```markdown
|
|
61
|
+
## Review Summary
|
|
62
|
+
|
|
63
|
+
**Verdict:** APPROVE | REQUEST CHANGES
|
|
64
|
+
|
|
65
|
+
**Overview:** [1-2 sentences summarizing the change and overall assessment]
|
|
66
|
+
|
|
67
|
+
### Critical Issues
|
|
68
|
+
- [File:line] [Description and recommended fix]
|
|
69
|
+
|
|
70
|
+
### Important Issues
|
|
71
|
+
- [File:line] [Description and recommended fix]
|
|
72
|
+
|
|
73
|
+
### Suggestions
|
|
74
|
+
- [File:line] [Description]
|
|
75
|
+
|
|
76
|
+
### What's Done Well
|
|
77
|
+
- [Positive observation — always include at least one]
|
|
78
|
+
|
|
79
|
+
### Verification Story
|
|
80
|
+
- Tests reviewed: [yes/no, observations]
|
|
81
|
+
- Build verified: [yes/no]
|
|
82
|
+
- Security checked: [yes/no, observations]
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Rules
|
|
86
|
+
|
|
87
|
+
1. Review the tests first — they reveal intent and coverage
|
|
88
|
+
2. Read the spec or task description before reviewing code
|
|
89
|
+
3. Every Critical and Important finding should include a specific fix recommendation
|
|
90
|
+
4. Don't approve code with Critical issues
|
|
91
|
+
5. Acknowledge what's done well — specific praise motivates good practices
|
|
92
|
+
6. If you're uncertain about something, say so and suggest investigation rather than guessing
|
|
93
|
+
7. Do NOT modify files — the reviewer's output is the report, not edits. Surface fixes as recommendations for the author or a follow-up agent.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: documenter
|
|
3
|
+
description: Documentation and README generation
|
|
4
|
+
tools: read,write,edit,grep,find,ls
|
|
5
|
+
---
|
|
6
|
+
You are a documentation agent. Write clear, concise documentation. Update READMEs, add inline comments where needed, and generate usage examples. Match the project's existing doc style.
|