opencodekit 0.6.0 → 0.6.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/dist/index.js +1 -1
- package/dist/template/.opencode/AGENTS.md +4 -1
- package/dist/template/.opencode/command/skill-create.md +3 -3
- package/dist/template/.opencode/command/skill-optimize.md +1 -1
- package/dist/template/.opencode/opencode.json +493 -535
- package/dist/template/.opencode/pickle-thinker.jsonc +11 -0
- package/dist/template/.opencode/plugin/skill.ts +275 -0
- package/dist/template/.opencode/{skills → skill}/accessibility-audit/SKILL.md +5 -0
- package/dist/template/.opencode/{skills → skill}/brainstorming/SKILL.md +2 -2
- package/dist/template/.opencode/{skills → skill}/design-system-audit/SKILL.md +5 -0
- package/dist/template/.opencode/{skills → skill}/executing-plans/SKILL.md +13 -2
- package/dist/template/.opencode/{skills → skill}/frontend-aesthetics/SKILL.md +5 -0
- package/dist/template/.opencode/{skills → skill}/mockup-to-code/SKILL.md +5 -0
- package/dist/template/.opencode/{skills → skill}/requesting-code-review/SKILL.md +16 -6
- package/dist/template/.opencode/{skills → skill}/subagent-driven-development/SKILL.md +38 -17
- package/dist/template/.opencode/{skills → skill}/systematic-debugging/SKILL.md +28 -18
- package/dist/template/.opencode/{skills → skill}/testing-skills-with-subagents/SKILL.md +1 -1
- package/dist/template/.opencode/{skills → skill}/ui-ux-research/SKILL.md +5 -0
- package/dist/template/.opencode/{skills → skill}/visual-analysis/SKILL.md +5 -0
- package/dist/template/.opencode/{skills → skill}/writing-plans/SKILL.md +3 -3
- package/dist/template/.opencode/{skills → skill}/writing-skills/SKILL.md +101 -41
- package/package.json +1 -1
- package/dist/template/.opencode/plugin/superpowers.ts +0 -271
- package/dist/template/.opencode/superpowers/.claude/settings.local.json +0 -141
- package/dist/template/.opencode/superpowers/.claude-plugin/marketplace.json +0 -20
- package/dist/template/.opencode/superpowers/.claude-plugin/plugin.json +0 -13
- package/dist/template/.opencode/superpowers/.codex/INSTALL.md +0 -35
- package/dist/template/.opencode/superpowers/.codex/superpowers-bootstrap.md +0 -33
- package/dist/template/.opencode/superpowers/.codex/superpowers-codex +0 -267
- package/dist/template/.opencode/superpowers/.github/FUNDING.yml +0 -3
- package/dist/template/.opencode/superpowers/.opencode/INSTALL.md +0 -135
- package/dist/template/.opencode/superpowers/.opencode/plugin/superpowers.js +0 -215
- package/dist/template/.opencode/superpowers/LICENSE +0 -21
- package/dist/template/.opencode/superpowers/README.md +0 -165
- package/dist/template/.opencode/superpowers/RELEASE-NOTES.md +0 -493
- package/dist/template/.opencode/superpowers/agents/code-reviewer.md +0 -48
- package/dist/template/.opencode/superpowers/commands/brainstorm.md +0 -5
- package/dist/template/.opencode/superpowers/commands/execute-plan.md +0 -5
- package/dist/template/.opencode/superpowers/commands/write-plan.md +0 -5
- package/dist/template/.opencode/superpowers/docs/README.codex.md +0 -153
- package/dist/template/.opencode/superpowers/docs/README.opencode.md +0 -234
- package/dist/template/.opencode/superpowers/docs/plans/2025-11-22-opencode-support-design.md +0 -294
- package/dist/template/.opencode/superpowers/docs/plans/2025-11-22-opencode-support-implementation.md +0 -1095
- package/dist/template/.opencode/superpowers/hooks/hooks.json +0 -15
- package/dist/template/.opencode/superpowers/hooks/session-start.sh +0 -34
- package/dist/template/.opencode/superpowers/lib/skills-core.js +0 -208
- package/dist/template/.opencode/superpowers/tests/opencode/run-tests.sh +0 -165
- package/dist/template/.opencode/superpowers/tests/opencode/setup.sh +0 -73
- package/dist/template/.opencode/superpowers/tests/opencode/test-plugin-loading.sh +0 -81
- package/dist/template/.opencode/superpowers/tests/opencode/test-priority.sh +0 -198
- package/dist/template/.opencode/superpowers/tests/opencode/test-skills-core.sh +0 -440
- package/dist/template/.opencode/superpowers/tests/opencode/test-tools.sh +0 -104
- /package/dist/template/.opencode/{skills → skill}/condition-based-waiting/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/condition-based-waiting/example.ts +0 -0
- /package/dist/template/.opencode/{skills → skill}/defense-in-depth/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/dispatching-parallel-agents/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/finishing-a-development-branch/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/gemini-large-context/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/receiving-code-review/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills/requesting-code-review/code-reviewer.md → skill/requesting-code-review/review.md} +0 -0
- /package/dist/template/.opencode/{skills → skill}/root-cause-tracing/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/root-cause-tracing/find-polluter.sh +0 -0
- /package/dist/template/.opencode/{skills → skill}/sharing-skills/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/systematic-debugging/CREATION-LOG.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/systematic-debugging/test-academic.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/systematic-debugging/test-pressure-1.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/systematic-debugging/test-pressure-2.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/systematic-debugging/test-pressure-3.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/test-driven-development/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/testing-anti-patterns/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/testing-skills-with-subagents/examples/CLAUDE_MD_TESTING.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/using-git-worktrees/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/using-superpowers/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/verification-before-completion/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/writing-skills/anthropic-best-practices.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/writing-skills/graphviz-conventions.dot +0 -0
- /package/dist/template/.opencode/{skills → skill}/writing-skills/persuasion-principles.md +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
// Ultrathink config for pickle-thinker
|
|
3
|
+
// mode: "lite" keeps the original behavior (prefix user prompts only).
|
|
4
|
+
// mode: "tool" adds an extra user turn after each tool result to force deeper analysis.
|
|
5
|
+
// Note: tool mode increases turns/tokens and may impact subscription limits.
|
|
6
|
+
"enabled": true,
|
|
7
|
+
// "lite" | "tool"
|
|
8
|
+
"mode": "tool",
|
|
9
|
+
// Change the thinking keyword if you like
|
|
10
|
+
"prefix": "Ultrathink: "
|
|
11
|
+
}
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skills plugin for OpenCode.ai
|
|
3
|
+
*
|
|
4
|
+
* Provides custom tools for loading and discovering skills.
|
|
5
|
+
* Skills are loaded on-demand via use_skill tool, not auto-injected.
|
|
6
|
+
*
|
|
7
|
+
* OpenCode Official Skill Locations:
|
|
8
|
+
* - Project skills: .opencode/skill/
|
|
9
|
+
* - Personal skills: ~/.opencode/skill/
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import fs from "fs";
|
|
13
|
+
import os from "os";
|
|
14
|
+
import path from "path";
|
|
15
|
+
import { type Plugin, tool } from "@opencode-ai/plugin";
|
|
16
|
+
|
|
17
|
+
interface SkillResolution {
|
|
18
|
+
skillFile: string;
|
|
19
|
+
sourceType: "project" | "personal";
|
|
20
|
+
skillPath: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
interface SkillInfo {
|
|
24
|
+
path: string;
|
|
25
|
+
skillFile: string;
|
|
26
|
+
name: string;
|
|
27
|
+
description: string;
|
|
28
|
+
sourceType: "project" | "personal";
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
interface Frontmatter {
|
|
32
|
+
name: string;
|
|
33
|
+
description: string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// ============================================
|
|
37
|
+
// Skills Core Functions
|
|
38
|
+
// ============================================
|
|
39
|
+
|
|
40
|
+
function extractFrontmatter(filePath: string): Frontmatter {
|
|
41
|
+
try {
|
|
42
|
+
const content = fs.readFileSync(filePath, "utf8");
|
|
43
|
+
const lines = content.split("\n");
|
|
44
|
+
|
|
45
|
+
let inFrontmatter = false;
|
|
46
|
+
let name = "";
|
|
47
|
+
let description = "";
|
|
48
|
+
|
|
49
|
+
for (const line of lines) {
|
|
50
|
+
if (line.trim() === "---") {
|
|
51
|
+
if (inFrontmatter) break;
|
|
52
|
+
inFrontmatter = true;
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (inFrontmatter) {
|
|
57
|
+
const match = line.match(/^(\w+):\s*(.*)$/);
|
|
58
|
+
if (match) {
|
|
59
|
+
const [, key, value] = match;
|
|
60
|
+
if (key === "name") name = value.trim();
|
|
61
|
+
if (key === "description") description = value.trim();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return { name, description };
|
|
67
|
+
} catch {
|
|
68
|
+
return { name: "", description: "" };
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function findSkillsInDir(
|
|
73
|
+
dir: string,
|
|
74
|
+
sourceType: "project" | "personal",
|
|
75
|
+
maxDepth = 3,
|
|
76
|
+
): SkillInfo[] {
|
|
77
|
+
const skills: SkillInfo[] = [];
|
|
78
|
+
|
|
79
|
+
if (!fs.existsSync(dir)) return skills;
|
|
80
|
+
|
|
81
|
+
function recurse(currentDir: string, depth: number) {
|
|
82
|
+
if (depth > maxDepth) return;
|
|
83
|
+
|
|
84
|
+
const entries = fs.readdirSync(currentDir, { withFileTypes: true });
|
|
85
|
+
|
|
86
|
+
for (const entry of entries) {
|
|
87
|
+
const fullPath = path.join(currentDir, entry.name);
|
|
88
|
+
|
|
89
|
+
if (entry.isDirectory()) {
|
|
90
|
+
const skillFile = path.join(fullPath, "SKILL.md");
|
|
91
|
+
if (fs.existsSync(skillFile)) {
|
|
92
|
+
const { name, description } = extractFrontmatter(skillFile);
|
|
93
|
+
skills.push({
|
|
94
|
+
path: fullPath,
|
|
95
|
+
skillFile,
|
|
96
|
+
name: name || entry.name,
|
|
97
|
+
description: description || "",
|
|
98
|
+
sourceType,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
recurse(fullPath, depth + 1);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
recurse(dir, 0);
|
|
107
|
+
return skills;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function stripFrontmatter(content: string): string {
|
|
111
|
+
const lines = content.split("\n");
|
|
112
|
+
let inFrontmatter = false;
|
|
113
|
+
let frontmatterEnded = false;
|
|
114
|
+
const contentLines: string[] = [];
|
|
115
|
+
|
|
116
|
+
for (const line of lines) {
|
|
117
|
+
if (line.trim() === "---") {
|
|
118
|
+
if (inFrontmatter) {
|
|
119
|
+
frontmatterEnded = true;
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
inFrontmatter = true;
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if (frontmatterEnded || !inFrontmatter) {
|
|
127
|
+
contentLines.push(line);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return contentLines.join("\n").trim();
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// ============================================
|
|
135
|
+
// Plugin Export
|
|
136
|
+
// ============================================
|
|
137
|
+
|
|
138
|
+
export const SkillsPlugin: Plugin = async ({ client, directory }) => {
|
|
139
|
+
const homeDir = os.homedir();
|
|
140
|
+
const projectSkillsDir = path.join(directory, ".opencode/skill");
|
|
141
|
+
const personalSkillsDir = path.join(homeDir, ".opencode/skill");
|
|
142
|
+
|
|
143
|
+
return {
|
|
144
|
+
tool: {
|
|
145
|
+
use_skill: tool({
|
|
146
|
+
description:
|
|
147
|
+
"Load and read a specific skill to guide your work. Skills contain proven workflows, mandatory processes, and expert techniques.",
|
|
148
|
+
args: {
|
|
149
|
+
skill_name: tool.schema
|
|
150
|
+
.string()
|
|
151
|
+
.describe(
|
|
152
|
+
'Name of skill to load (e.g., "brainstorming", "my-custom-skill", or "project:my-skill")',
|
|
153
|
+
),
|
|
154
|
+
},
|
|
155
|
+
execute: async (
|
|
156
|
+
args: { skill_name: string },
|
|
157
|
+
context: { sessionID: string },
|
|
158
|
+
) => {
|
|
159
|
+
const { skill_name } = args;
|
|
160
|
+
|
|
161
|
+
// Resolve with priority: project > personal
|
|
162
|
+
const forceProject = skill_name.startsWith("project:");
|
|
163
|
+
const actualSkillName = forceProject
|
|
164
|
+
? skill_name.replace(/^project:/, "")
|
|
165
|
+
: skill_name;
|
|
166
|
+
|
|
167
|
+
let resolved: SkillResolution | null = null;
|
|
168
|
+
|
|
169
|
+
// Try project skills first
|
|
170
|
+
if (forceProject) {
|
|
171
|
+
const projectSkillFile = path.join(
|
|
172
|
+
projectSkillsDir,
|
|
173
|
+
actualSkillName,
|
|
174
|
+
"SKILL.md",
|
|
175
|
+
);
|
|
176
|
+
if (fs.existsSync(projectSkillFile)) {
|
|
177
|
+
resolved = {
|
|
178
|
+
skillFile: projectSkillFile,
|
|
179
|
+
sourceType: "project",
|
|
180
|
+
skillPath: actualSkillName,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Fall back to personal resolution
|
|
186
|
+
if (!resolved && !forceProject) {
|
|
187
|
+
const personalSkillFile = path.join(
|
|
188
|
+
personalSkillsDir,
|
|
189
|
+
skill_name,
|
|
190
|
+
"SKILL.md",
|
|
191
|
+
);
|
|
192
|
+
if (fs.existsSync(personalSkillFile)) {
|
|
193
|
+
resolved = {
|
|
194
|
+
skillFile: personalSkillFile,
|
|
195
|
+
sourceType: "personal",
|
|
196
|
+
skillPath: skill_name,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
if (!resolved) {
|
|
202
|
+
return `Error: Skill "${skill_name}" not found.\n\nRun find_skills to see available skills.`;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
const fullContent = fs.readFileSync(resolved.skillFile, "utf8");
|
|
206
|
+
const { name, description } = extractFrontmatter(resolved.skillFile);
|
|
207
|
+
const content = stripFrontmatter(fullContent);
|
|
208
|
+
const skillDirectory = path.dirname(resolved.skillFile);
|
|
209
|
+
|
|
210
|
+
const skillHeader = `# ${name || skill_name}
|
|
211
|
+
# ${description || ""}
|
|
212
|
+
# Supporting tools and docs are in ${skillDirectory}
|
|
213
|
+
# ============================================`;
|
|
214
|
+
|
|
215
|
+
// Insert as user message with noReply for persistence across compaction
|
|
216
|
+
try {
|
|
217
|
+
await client.session.prompt({
|
|
218
|
+
path: { id: context.sessionID },
|
|
219
|
+
body: {
|
|
220
|
+
noReply: true,
|
|
221
|
+
parts: [
|
|
222
|
+
{
|
|
223
|
+
type: "text",
|
|
224
|
+
text: `Loading skill: ${name || skill_name}`,
|
|
225
|
+
},
|
|
226
|
+
{ type: "text", text: `${skillHeader}\n\n${content}` },
|
|
227
|
+
],
|
|
228
|
+
},
|
|
229
|
+
});
|
|
230
|
+
} catch {
|
|
231
|
+
// Fallback: return content directly if message insertion fails
|
|
232
|
+
return `${skillHeader}\n\n${content}`;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
return `Launching skill: ${name || skill_name}`;
|
|
236
|
+
},
|
|
237
|
+
}),
|
|
238
|
+
|
|
239
|
+
find_skills: tool({
|
|
240
|
+
description:
|
|
241
|
+
"List all available skills in project and personal skill libraries.",
|
|
242
|
+
args: {},
|
|
243
|
+
execute: async () => {
|
|
244
|
+
const projectSkills = findSkillsInDir(projectSkillsDir, "project", 3);
|
|
245
|
+
const personalSkills = findSkillsInDir(
|
|
246
|
+
personalSkillsDir,
|
|
247
|
+
"personal",
|
|
248
|
+
3,
|
|
249
|
+
);
|
|
250
|
+
|
|
251
|
+
const allSkills = [...projectSkills, ...personalSkills];
|
|
252
|
+
|
|
253
|
+
if (allSkills.length === 0) {
|
|
254
|
+
return `No skills found. Add project skills to .opencode/skill/ or personal skills to ~/.opencode/skill/`;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
let output = "Available skills:\n\n";
|
|
258
|
+
|
|
259
|
+
for (const skill of allSkills) {
|
|
260
|
+
const namespace = skill.sourceType === "project" ? "project:" : "";
|
|
261
|
+
const skillName = skill.name || path.basename(skill.path);
|
|
262
|
+
|
|
263
|
+
output += `${namespace}${skillName}\n`;
|
|
264
|
+
if (skill.description) {
|
|
265
|
+
output += ` ${skill.description}\n`;
|
|
266
|
+
}
|
|
267
|
+
output += ` Directory: ${skill.path}\n\n`;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
return output;
|
|
271
|
+
},
|
|
272
|
+
}),
|
|
273
|
+
},
|
|
274
|
+
};
|
|
275
|
+
};
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: accessibility-audit
|
|
3
|
+
description: Use when auditing UI components or pages for accessibility compliance, checking WCAG conformance, identifying keyboard navigation issues, color contrast problems, and pre-launch accessibility verification
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
# Accessibility Audit Skill
|
|
2
7
|
|
|
3
8
|
Audit UI accessibility against WCAG 2.1/2.2 guidelines.
|
|
@@ -46,8 +46,8 @@ Start by understanding the current project context, then ask questions one at a
|
|
|
46
46
|
**Implementation (if continuing):**
|
|
47
47
|
|
|
48
48
|
- Ask: "Ready to set up for implementation?"
|
|
49
|
-
- Use
|
|
50
|
-
- Use
|
|
49
|
+
- Use use_skill("using-git-worktrees") to create isolated workspace
|
|
50
|
+
- Use use_skill("writing-plans") to create detailed implementation plan
|
|
51
51
|
|
|
52
52
|
## Key Principles
|
|
53
53
|
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design-system-audit
|
|
3
|
+
description: Use when auditing existing design systems for consistency, documenting undocumented design tokens, identifying design debt, preparing for design system refactoring, or comparing implementation vs design specs
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
# Design System Audit Skill
|
|
2
7
|
|
|
3
8
|
Audit, document, and improve design systems.
|
|
@@ -16,28 +16,35 @@ Load plan, review critically, execute tasks in batches, report for review betwee
|
|
|
16
16
|
## The Process
|
|
17
17
|
|
|
18
18
|
### Step 1: Load and Review Plan
|
|
19
|
+
|
|
19
20
|
1. Read plan file
|
|
20
21
|
2. Review critically - identify any questions or concerns about the plan
|
|
21
22
|
3. If concerns: Raise them with your human partner before starting
|
|
22
23
|
4. If no concerns: Create TodoWrite and proceed
|
|
23
24
|
|
|
24
25
|
### Step 2: Execute Batch
|
|
26
|
+
|
|
25
27
|
**Default: First 3 tasks**
|
|
26
28
|
|
|
27
29
|
For each task:
|
|
30
|
+
|
|
28
31
|
1. Mark as in_progress
|
|
29
32
|
2. Follow each step exactly (plan has bite-sized steps)
|
|
30
33
|
3. Run verifications as specified
|
|
31
34
|
4. Mark as completed
|
|
32
35
|
|
|
33
36
|
### Step 3: Report
|
|
37
|
+
|
|
34
38
|
When batch complete:
|
|
39
|
+
|
|
35
40
|
- Show what was implemented
|
|
36
41
|
- Show verification output
|
|
37
42
|
- Say: "Ready for feedback."
|
|
38
43
|
|
|
39
44
|
### Step 4: Continue
|
|
45
|
+
|
|
40
46
|
Based on feedback:
|
|
47
|
+
|
|
41
48
|
- Apply changes if needed
|
|
42
49
|
- Execute next batch
|
|
43
50
|
- Repeat until complete
|
|
@@ -45,13 +52,15 @@ Based on feedback:
|
|
|
45
52
|
### Step 5: Complete Development
|
|
46
53
|
|
|
47
54
|
After all tasks complete and verified:
|
|
48
|
-
|
|
49
|
-
-
|
|
55
|
+
|
|
56
|
+
- Announce: "I'm using finishing-a-development-branch skill to complete this work."
|
|
57
|
+
- **REQUIRED SUB-SKILL:** Use use_skill("finishing-a-development-branch")
|
|
50
58
|
- Follow that skill to verify tests, present options, execute choice
|
|
51
59
|
|
|
52
60
|
## When to Stop and Ask for Help
|
|
53
61
|
|
|
54
62
|
**STOP executing immediately when:**
|
|
63
|
+
|
|
55
64
|
- Hit a blocker mid-batch (missing dependency, test fails, instruction unclear)
|
|
56
65
|
- Plan has critical gaps preventing starting
|
|
57
66
|
- You don't understand an instruction
|
|
@@ -62,12 +71,14 @@ After all tasks complete and verified:
|
|
|
62
71
|
## When to Revisit Earlier Steps
|
|
63
72
|
|
|
64
73
|
**Return to Review (Step 1) when:**
|
|
74
|
+
|
|
65
75
|
- Partner updates the plan based on your feedback
|
|
66
76
|
- Fundamental approach needs rethinking
|
|
67
77
|
|
|
68
78
|
**Don't force through blockers** - stop and ask.
|
|
69
79
|
|
|
70
80
|
## Remember
|
|
81
|
+
|
|
71
82
|
- Review plan critically first
|
|
72
83
|
- Follow plan steps exactly
|
|
73
84
|
- Don't skip verifications
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: frontend-aesthetics
|
|
3
|
+
description: Use when building landing pages, dashboards, forms, or any frontend generation task where you need to prevent generic "AI slop" and create distinctive, intentional designs
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
# Frontend Aesthetics Skill
|
|
2
7
|
|
|
3
8
|
Prevent generic "AI slop" frontends. Create distinctive, intentional designs.
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mockup-to-code
|
|
3
|
+
description: Use when converting UI mockups, screenshots, Figma/Sketch designs, wireframes, or building component libraries from design systems into production-ready code
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
# Mockup to Code Skill
|
|
2
7
|
|
|
3
8
|
Convert UI mockups, screenshots, and designs into production-ready code.
|
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: requesting-code-review
|
|
3
|
-
description: Use when completing tasks, implementing major features, or before merging to verify work meets requirements - dispatches
|
|
3
|
+
description: Use when completing tasks, implementing major features, or before merging to verify work meets requirements - dispatches review subagent to review implementation against plan or requirements before proceeding
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Requesting Code Review
|
|
7
7
|
|
|
8
|
-
Dispatch
|
|
8
|
+
Dispatch review subagent to catch issues before they cascade.
|
|
9
9
|
|
|
10
10
|
**Core principle:** Review early, review often.
|
|
11
11
|
|
|
12
12
|
## When to Request Review
|
|
13
13
|
|
|
14
14
|
**Mandatory:**
|
|
15
|
+
|
|
15
16
|
- After each task in subagent-driven development
|
|
16
17
|
- After completing major feature
|
|
17
18
|
- Before merge to main
|
|
18
19
|
|
|
19
20
|
**Optional but valuable:**
|
|
21
|
+
|
|
20
22
|
- When stuck (fresh perspective)
|
|
21
23
|
- Before refactoring (baseline check)
|
|
22
24
|
- After fixing complex bug
|
|
@@ -24,16 +26,18 @@ Dispatch superpowers:code-reviewer subagent to catch issues before they cascade.
|
|
|
24
26
|
## How to Request
|
|
25
27
|
|
|
26
28
|
**1. Get git SHAs:**
|
|
29
|
+
|
|
27
30
|
```bash
|
|
28
31
|
BASE_SHA=$(git rev-parse HEAD~1) # or origin/main
|
|
29
32
|
HEAD_SHA=$(git rev-parse HEAD)
|
|
30
33
|
```
|
|
31
34
|
|
|
32
|
-
**2. Dispatch
|
|
35
|
+
**2. Dispatch review subagent:**
|
|
33
36
|
|
|
34
|
-
Use Task tool with
|
|
37
|
+
Use Task tool with review agent type, fill template at `review.md`
|
|
35
38
|
|
|
36
39
|
**Placeholders:**
|
|
40
|
+
|
|
37
41
|
- `{WHAT_WAS_IMPLEMENTED}` - What you just built
|
|
38
42
|
- `{PLAN_OR_REQUIREMENTS}` - What it should do
|
|
39
43
|
- `{BASE_SHA}` - Starting commit
|
|
@@ -41,6 +45,7 @@ Use Task tool with superpowers:code-reviewer type, fill template at `code-review
|
|
|
41
45
|
- `{DESCRIPTION}` - Brief summary
|
|
42
46
|
|
|
43
47
|
**3. Act on feedback:**
|
|
48
|
+
|
|
44
49
|
- Fix Critical issues immediately
|
|
45
50
|
- Fix Important issues before proceeding
|
|
46
51
|
- Note Minor issues for later
|
|
@@ -56,7 +61,7 @@ You: Let me request code review before proceeding.
|
|
|
56
61
|
BASE_SHA=$(git log --oneline | grep "Task 1" | head -1 | awk '{print $1}')
|
|
57
62
|
HEAD_SHA=$(git rev-parse HEAD)
|
|
58
63
|
|
|
59
|
-
[Dispatch
|
|
64
|
+
[Dispatch review subagent]
|
|
60
65
|
WHAT_WAS_IMPLEMENTED: Verification and repair functions for conversation index
|
|
61
66
|
PLAN_OR_REQUIREMENTS: Task 2 from docs/plans/deployment-plan.md
|
|
62
67
|
BASE_SHA: a7981ec
|
|
@@ -77,29 +82,34 @@ You: [Fix progress indicators]
|
|
|
77
82
|
## Integration with Workflows
|
|
78
83
|
|
|
79
84
|
**Subagent-Driven Development:**
|
|
85
|
+
|
|
80
86
|
- Review after EACH task
|
|
81
87
|
- Catch issues before they compound
|
|
82
88
|
- Fix before moving to next task
|
|
83
89
|
|
|
84
90
|
**Executing Plans:**
|
|
91
|
+
|
|
85
92
|
- Review after each batch (3 tasks)
|
|
86
93
|
- Get feedback, apply, continue
|
|
87
94
|
|
|
88
95
|
**Ad-Hoc Development:**
|
|
96
|
+
|
|
89
97
|
- Review before merge
|
|
90
98
|
- Review when stuck
|
|
91
99
|
|
|
92
100
|
## Red Flags
|
|
93
101
|
|
|
94
102
|
**Never:**
|
|
103
|
+
|
|
95
104
|
- Skip review because "it's simple"
|
|
96
105
|
- Ignore Critical issues
|
|
97
106
|
- Proceed with unfixed Important issues
|
|
98
107
|
- Argue with valid technical feedback
|
|
99
108
|
|
|
100
109
|
**If reviewer wrong:**
|
|
110
|
+
|
|
101
111
|
- Push back with technical reasoning
|
|
102
112
|
- Show code/tests that prove it works
|
|
103
113
|
- Request clarification
|
|
104
114
|
|
|
105
|
-
See template at: requesting-code-review/
|
|
115
|
+
See template at: requesting-code-review/review.md
|
|
@@ -12,17 +12,20 @@ Execute plan by dispatching fresh subagent per task, with code review after each
|
|
|
12
12
|
## Overview
|
|
13
13
|
|
|
14
14
|
**vs. Executing Plans (parallel session):**
|
|
15
|
+
|
|
15
16
|
- Same session (no context switch)
|
|
16
17
|
- Fresh subagent per task (no context pollution)
|
|
17
18
|
- Code review after each task (catch issues early)
|
|
18
19
|
- Faster iteration (no human-in-loop between tasks)
|
|
19
20
|
|
|
20
21
|
**When to use:**
|
|
22
|
+
|
|
21
23
|
- Staying in this session
|
|
22
24
|
- Tasks are mostly independent
|
|
23
25
|
- Want continuous progress with quality gates
|
|
24
26
|
|
|
25
27
|
**When NOT to use:**
|
|
28
|
+
|
|
26
29
|
- Need to review plan first (use executing-plans)
|
|
27
30
|
- Tasks are tightly coupled (manual execution better)
|
|
28
31
|
- Plan needs revision (brainstorm first)
|
|
@@ -38,6 +41,7 @@ Read plan file, create TodoWrite with all tasks.
|
|
|
38
41
|
For each task:
|
|
39
42
|
|
|
40
43
|
**Dispatch fresh subagent:**
|
|
44
|
+
|
|
41
45
|
```
|
|
42
46
|
Task tool (general-purpose):
|
|
43
47
|
description: "Implement Task N: [task name]"
|
|
@@ -60,16 +64,16 @@ Task tool (general-purpose):
|
|
|
60
64
|
|
|
61
65
|
### 3. Review Subagent's Work
|
|
62
66
|
|
|
63
|
-
**Dispatch
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
**Dispatch review subagent:**
|
|
68
|
+
|
|
69
|
+
Use template at requesting-code-review/review.md
|
|
70
|
+
|
|
71
|
+
WHAT_WAS_IMPLEMENTED: [from subagent's report]
|
|
72
|
+
PLAN_OR_REQUIREMENTS: Task N from [plan-file]
|
|
73
|
+
BASE_SHA: [commit before task]
|
|
74
|
+
HEAD_SHA: [current commit]
|
|
75
|
+
DESCRIPTION: [task summary]
|
|
76
|
+
|
|
73
77
|
```
|
|
74
78
|
|
|
75
79
|
**Code reviewer returns:** Strengths, Issues (Critical/Important/Minor), Assessment
|
|
@@ -77,13 +81,17 @@ Task tool (superpowers:code-reviewer):
|
|
|
77
81
|
### 4. Apply Review Feedback
|
|
78
82
|
|
|
79
83
|
**If issues found:**
|
|
84
|
+
|
|
80
85
|
- Fix Critical issues immediately
|
|
81
86
|
- Fix Important issues before next task
|
|
82
87
|
- Note Minor issues
|
|
83
88
|
|
|
84
89
|
**Dispatch follow-up subagent if needed:**
|
|
90
|
+
|
|
85
91
|
```
|
|
92
|
+
|
|
86
93
|
"Fix issues from code review: [list issues]"
|
|
94
|
+
|
|
87
95
|
```
|
|
88
96
|
|
|
89
97
|
### 5. Mark Complete, Next Task
|
|
@@ -94,7 +102,8 @@ Task tool (superpowers:code-reviewer):
|
|
|
94
102
|
|
|
95
103
|
### 6. Final Review
|
|
96
104
|
|
|
97
|
-
After all tasks complete, dispatch final
|
|
105
|
+
After all tasks complete, dispatch final review:
|
|
106
|
+
|
|
98
107
|
- Reviews entire implementation
|
|
99
108
|
- Checks all plan requirements met
|
|
100
109
|
- Validates overall architecture
|
|
@@ -102,13 +111,15 @@ After all tasks complete, dispatch final code-reviewer:
|
|
|
102
111
|
### 7. Complete Development
|
|
103
112
|
|
|
104
113
|
After final review passes:
|
|
105
|
-
|
|
106
|
-
-
|
|
114
|
+
|
|
115
|
+
- Announce: "I'm using finishing-a-development-branch skill to complete this work."
|
|
116
|
+
- **REQUIRED SUB-SKILL:** Use use_skill("finishing-a-development-branch")
|
|
107
117
|
- Follow that skill to verify tests, present options, execute choice
|
|
108
118
|
|
|
109
119
|
## Example Workflow
|
|
110
120
|
|
|
111
121
|
```
|
|
122
|
+
|
|
112
123
|
You: I'm using Subagent-Driven Development to execute this plan.
|
|
113
124
|
|
|
114
125
|
[Load plan, create TodoWrite]
|
|
@@ -118,7 +129,7 @@ Task 1: Hook installation script
|
|
|
118
129
|
[Dispatch implementation subagent]
|
|
119
130
|
Subagent: Implemented install-hook with tests, 5/5 passing
|
|
120
131
|
|
|
121
|
-
[Get git SHAs, dispatch
|
|
132
|
+
[Get git SHAs, dispatch review]
|
|
122
133
|
Reviewer: Strengths: Good test coverage. Issues: None. Ready.
|
|
123
134
|
|
|
124
135
|
[Mark Task 1 complete]
|
|
@@ -128,7 +139,7 @@ Task 2: Recovery modes
|
|
|
128
139
|
[Dispatch implementation subagent]
|
|
129
140
|
Subagent: Added verify/repair, 8/8 tests passing
|
|
130
141
|
|
|
131
|
-
[Dispatch
|
|
142
|
+
[Dispatch review]
|
|
132
143
|
Reviewer: Strengths: Solid. Issues (Important): Missing progress reporting
|
|
133
144
|
|
|
134
145
|
[Dispatch fix subagent]
|
|
@@ -139,51 +150,61 @@ Fix subagent: Added progress every 100 conversations
|
|
|
139
150
|
...
|
|
140
151
|
|
|
141
152
|
[After all tasks]
|
|
142
|
-
[Dispatch final
|
|
153
|
+
[Dispatch final review]
|
|
143
154
|
Final reviewer: All requirements met, ready to merge
|
|
144
155
|
|
|
145
156
|
Done!
|
|
157
|
+
|
|
146
158
|
```
|
|
147
159
|
|
|
148
160
|
## Advantages
|
|
149
161
|
|
|
150
162
|
**vs. Manual execution:**
|
|
163
|
+
|
|
151
164
|
- Subagents follow TDD naturally
|
|
152
165
|
- Fresh context per task (no confusion)
|
|
153
166
|
- Parallel-safe (subagents don't interfere)
|
|
154
167
|
|
|
155
168
|
**vs. Executing Plans:**
|
|
169
|
+
|
|
156
170
|
- Same session (no handoff)
|
|
157
171
|
- Continuous progress (no waiting)
|
|
158
172
|
- Review checkpoints automatic
|
|
159
173
|
|
|
160
174
|
**Cost:**
|
|
175
|
+
|
|
161
176
|
- More subagent invocations
|
|
162
177
|
- But catches issues early (cheaper than debugging later)
|
|
163
178
|
|
|
164
179
|
## Red Flags
|
|
165
180
|
|
|
166
181
|
**Never:**
|
|
182
|
+
|
|
167
183
|
- Skip code review between tasks
|
|
168
184
|
- Proceed with unfixed Critical issues
|
|
169
185
|
- Dispatch multiple implementation subagents in parallel (conflicts)
|
|
170
186
|
- Implement without reading plan task
|
|
171
187
|
|
|
172
188
|
**If subagent fails task:**
|
|
189
|
+
|
|
173
190
|
- Dispatch fix subagent with specific instructions
|
|
174
191
|
- Don't try to fix manually (context pollution)
|
|
175
192
|
|
|
176
193
|
## Integration
|
|
177
194
|
|
|
178
195
|
**Required workflow skills:**
|
|
196
|
+
|
|
179
197
|
- **writing-plans** - REQUIRED: Creates the plan that this skill executes
|
|
180
198
|
- **requesting-code-review** - REQUIRED: Review after each task (see Step 3)
|
|
181
199
|
- **finishing-a-development-branch** - REQUIRED: Complete development after all tasks (see Step 7)
|
|
182
200
|
|
|
183
201
|
**Subagents must use:**
|
|
202
|
+
|
|
184
203
|
- **test-driven-development** - Subagents follow TDD for each task
|
|
185
204
|
|
|
186
205
|
**Alternative workflow:**
|
|
206
|
+
|
|
187
207
|
- **executing-plans** - Use for parallel session instead of same-session execution
|
|
188
208
|
|
|
189
|
-
See
|
|
209
|
+
See review template: requesting-code-review/review.md
|
|
210
|
+
```
|