opencodekit 0.6.0 → 0.6.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/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/dcp.jsonc +63 -41
- package/dist/template/.opencode/opencode.json +5 -4
- package/dist/template/.opencode/package.json +2 -2
- 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
|
@@ -1,271 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Superpowers 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
|
-
|
|
8
|
-
import fs from "fs";
|
|
9
|
-
import os from "os";
|
|
10
|
-
import path from "path";
|
|
11
|
-
import { type Plugin, tool } from "@opencode-ai/plugin";
|
|
12
|
-
|
|
13
|
-
interface SkillResolution {
|
|
14
|
-
skillFile: string;
|
|
15
|
-
sourceType: "project" | "personal";
|
|
16
|
-
skillPath: string;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
interface SkillInfo {
|
|
20
|
-
path: string;
|
|
21
|
-
skillFile: string;
|
|
22
|
-
name: string;
|
|
23
|
-
description: string;
|
|
24
|
-
sourceType: "project" | "personal";
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
interface Frontmatter {
|
|
28
|
-
name: string;
|
|
29
|
-
description: string;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// ============================================
|
|
33
|
-
// Skills Core Functions
|
|
34
|
-
// ============================================
|
|
35
|
-
|
|
36
|
-
function extractFrontmatter(filePath: string): Frontmatter {
|
|
37
|
-
try {
|
|
38
|
-
const content = fs.readFileSync(filePath, "utf8");
|
|
39
|
-
const lines = content.split("\n");
|
|
40
|
-
|
|
41
|
-
let inFrontmatter = false;
|
|
42
|
-
let name = "";
|
|
43
|
-
let description = "";
|
|
44
|
-
|
|
45
|
-
for (const line of lines) {
|
|
46
|
-
if (line.trim() === "---") {
|
|
47
|
-
if (inFrontmatter) break;
|
|
48
|
-
inFrontmatter = true;
|
|
49
|
-
continue;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (inFrontmatter) {
|
|
53
|
-
const match = line.match(/^(\w+):\s*(.*)$/);
|
|
54
|
-
if (match) {
|
|
55
|
-
const [, key, value] = match;
|
|
56
|
-
if (key === "name") name = value.trim();
|
|
57
|
-
if (key === "description") description = value.trim();
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
return { name, description };
|
|
63
|
-
} catch {
|
|
64
|
-
return { name: "", description: "" };
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
function findSkillsInDir(
|
|
69
|
-
dir: string,
|
|
70
|
-
sourceType: "project" | "personal",
|
|
71
|
-
maxDepth = 3,
|
|
72
|
-
): SkillInfo[] {
|
|
73
|
-
const skills: SkillInfo[] = [];
|
|
74
|
-
|
|
75
|
-
if (!fs.existsSync(dir)) return skills;
|
|
76
|
-
|
|
77
|
-
function recurse(currentDir: string, depth: number) {
|
|
78
|
-
if (depth > maxDepth) return;
|
|
79
|
-
|
|
80
|
-
const entries = fs.readdirSync(currentDir, { withFileTypes: true });
|
|
81
|
-
|
|
82
|
-
for (const entry of entries) {
|
|
83
|
-
const fullPath = path.join(currentDir, entry.name);
|
|
84
|
-
|
|
85
|
-
if (entry.isDirectory()) {
|
|
86
|
-
const skillFile = path.join(fullPath, "SKILL.md");
|
|
87
|
-
if (fs.existsSync(skillFile)) {
|
|
88
|
-
const { name, description } = extractFrontmatter(skillFile);
|
|
89
|
-
skills.push({
|
|
90
|
-
path: fullPath,
|
|
91
|
-
skillFile,
|
|
92
|
-
name: name || entry.name,
|
|
93
|
-
description: description || "",
|
|
94
|
-
sourceType,
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
recurse(fullPath, depth + 1);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
recurse(dir, 0);
|
|
103
|
-
return skills;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
function stripFrontmatter(content: string): string {
|
|
107
|
-
const lines = content.split("\n");
|
|
108
|
-
let inFrontmatter = false;
|
|
109
|
-
let frontmatterEnded = false;
|
|
110
|
-
const contentLines: string[] = [];
|
|
111
|
-
|
|
112
|
-
for (const line of lines) {
|
|
113
|
-
if (line.trim() === "---") {
|
|
114
|
-
if (inFrontmatter) {
|
|
115
|
-
frontmatterEnded = true;
|
|
116
|
-
continue;
|
|
117
|
-
}
|
|
118
|
-
inFrontmatter = true;
|
|
119
|
-
continue;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
if (frontmatterEnded || !inFrontmatter) {
|
|
123
|
-
contentLines.push(line);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
return contentLines.join("\n").trim();
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
// ============================================
|
|
131
|
-
// Plugin Export
|
|
132
|
-
// ============================================
|
|
133
|
-
|
|
134
|
-
export const SuperpowersPlugin: Plugin = async ({ client, directory }) => {
|
|
135
|
-
const homeDir = os.homedir();
|
|
136
|
-
const projectSkillsDir = path.join(directory, ".opencode/skills");
|
|
137
|
-
const personalSkillsDir = path.join(homeDir, ".config/opencode/skills");
|
|
138
|
-
|
|
139
|
-
return {
|
|
140
|
-
tool: {
|
|
141
|
-
use_skill: tool({
|
|
142
|
-
description:
|
|
143
|
-
"Load and read a specific skill to guide your work. Skills contain proven workflows, mandatory processes, and expert techniques.",
|
|
144
|
-
args: {
|
|
145
|
-
skill_name: tool.schema
|
|
146
|
-
.string()
|
|
147
|
-
.describe(
|
|
148
|
-
'Name of the skill to load (e.g., "superpowers:brainstorming", "my-custom-skill", or "project:my-skill")',
|
|
149
|
-
),
|
|
150
|
-
},
|
|
151
|
-
execute: async (
|
|
152
|
-
args: { skill_name: string },
|
|
153
|
-
context: { sessionID: string },
|
|
154
|
-
) => {
|
|
155
|
-
const { skill_name } = args;
|
|
156
|
-
|
|
157
|
-
// Resolve with priority: project > personal > superpowers
|
|
158
|
-
const forceProject = skill_name.startsWith("project:");
|
|
159
|
-
const actualSkillName = forceProject
|
|
160
|
-
? skill_name.replace(/^project:/, "")
|
|
161
|
-
: skill_name;
|
|
162
|
-
|
|
163
|
-
let resolved: SkillResolution | null = null;
|
|
164
|
-
|
|
165
|
-
// Try project skills first
|
|
166
|
-
if (forceProject || !skill_name.startsWith("superpowers:")) {
|
|
167
|
-
const projectSkillFile = path.join(
|
|
168
|
-
projectSkillsDir,
|
|
169
|
-
actualSkillName,
|
|
170
|
-
"SKILL.md",
|
|
171
|
-
);
|
|
172
|
-
if (fs.existsSync(projectSkillFile)) {
|
|
173
|
-
resolved = {
|
|
174
|
-
skillFile: projectSkillFile,
|
|
175
|
-
sourceType: "project",
|
|
176
|
-
skillPath: actualSkillName,
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
// Fall back to personal resolution
|
|
182
|
-
if (!resolved && !forceProject) {
|
|
183
|
-
const personalSkillFile = path.join(
|
|
184
|
-
personalSkillsDir,
|
|
185
|
-
skill_name,
|
|
186
|
-
"SKILL.md",
|
|
187
|
-
);
|
|
188
|
-
if (fs.existsSync(personalSkillFile)) {
|
|
189
|
-
resolved = {
|
|
190
|
-
skillFile: personalSkillFile,
|
|
191
|
-
sourceType: "personal",
|
|
192
|
-
skillPath: skill_name,
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
if (!resolved) {
|
|
198
|
-
return `Error: Skill "${skill_name}" not found.\n\nRun find_skills to see available skills.`;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
const fullContent = fs.readFileSync(resolved.skillFile, "utf8");
|
|
202
|
-
const { name, description } = extractFrontmatter(resolved.skillFile);
|
|
203
|
-
const content = stripFrontmatter(fullContent);
|
|
204
|
-
const skillDirectory = path.dirname(resolved.skillFile);
|
|
205
|
-
|
|
206
|
-
const skillHeader = `# ${name || skill_name}
|
|
207
|
-
# ${description || ""}
|
|
208
|
-
# Supporting tools and docs are in ${skillDirectory}
|
|
209
|
-
# ============================================`;
|
|
210
|
-
|
|
211
|
-
// Insert as user message with noReply for persistence across compaction
|
|
212
|
-
try {
|
|
213
|
-
await client.session.prompt({
|
|
214
|
-
path: { id: context.sessionID },
|
|
215
|
-
body: {
|
|
216
|
-
noReply: true,
|
|
217
|
-
parts: [
|
|
218
|
-
{
|
|
219
|
-
type: "text",
|
|
220
|
-
text: `Loading skill: ${name || skill_name}`,
|
|
221
|
-
},
|
|
222
|
-
{ type: "text", text: `${skillHeader}\n\n${content}` },
|
|
223
|
-
],
|
|
224
|
-
},
|
|
225
|
-
});
|
|
226
|
-
} catch {
|
|
227
|
-
// Fallback: return content directly if message insertion fails
|
|
228
|
-
return `${skillHeader}\n\n${content}`;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
return `Launching skill: ${name || skill_name}`;
|
|
232
|
-
},
|
|
233
|
-
}),
|
|
234
|
-
|
|
235
|
-
find_skills: tool({
|
|
236
|
-
description:
|
|
237
|
-
"List all available skills in the project, personal, and superpowers skill libraries.",
|
|
238
|
-
args: {},
|
|
239
|
-
execute: async () => {
|
|
240
|
-
const projectSkills = findSkillsInDir(projectSkillsDir, "project", 3);
|
|
241
|
-
const personalSkills = findSkillsInDir(
|
|
242
|
-
personalSkillsDir,
|
|
243
|
-
"personal",
|
|
244
|
-
3,
|
|
245
|
-
);
|
|
246
|
-
|
|
247
|
-
const allSkills = [...projectSkills, ...personalSkills];
|
|
248
|
-
|
|
249
|
-
if (allSkills.length === 0) {
|
|
250
|
-
return "No skills found. Add project skills to .opencode/skills/ or personal skills to ~/.config/opencode/skills/";
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
let output = "Available skills:\n\n";
|
|
254
|
-
|
|
255
|
-
for (const skill of allSkills) {
|
|
256
|
-
const namespace = skill.sourceType === "project" ? "project:" : "";
|
|
257
|
-
const skillName = skill.name || path.basename(skill.path);
|
|
258
|
-
|
|
259
|
-
output += `${namespace}${skillName}\n`;
|
|
260
|
-
if (skill.description) {
|
|
261
|
-
output += ` ${skill.description}\n`;
|
|
262
|
-
}
|
|
263
|
-
output += ` Directory: ${skill.path}\n\n`;
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
return output;
|
|
267
|
-
},
|
|
268
|
-
}),
|
|
269
|
-
},
|
|
270
|
-
};
|
|
271
|
-
};
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"permissions": {
|
|
3
|
-
"allow": [
|
|
4
|
-
"Read(//Users/jesse/.claude/plugins/cache/superpowers/skills/getting-started/**)",
|
|
5
|
-
"Read(//Users/jesse/Downloads/**)",
|
|
6
|
-
"Bash(~/.claude/plugins/cache/superpowers/skills/getting-started/list-skills)",
|
|
7
|
-
"Bash(~/.claude/plugins/cache/superpowers/skills/getting-started/skills-search \"prompt\")",
|
|
8
|
-
"Bash(~/.claude/plugins/cache/superpowers/skills/getting-started/skills-search \"communication\")",
|
|
9
|
-
"Bash(~/.claude/plugins/cache/superpowers/skills/getting-started/skills-search \"interaction\")",
|
|
10
|
-
"Read(//Users/jesse/.claude/plugins/cache/superpowers/skills/meta/testing-skills-with-subagents/**)",
|
|
11
|
-
"Read(//Users/jesse/.claude/plugins/cache/superpowers/skills/collaboration/dispatching-parallel-agents/**)",
|
|
12
|
-
"Read(//Users/jesse/.claude/plugins/cache/superpowers/skills/collaboration/requesting-code-review/**)",
|
|
13
|
-
"Read(//Users/jesse/.claude/plugins/cache/superpowers/skills/collaboration/writing-plans/**)",
|
|
14
|
-
"mcp__journal__search_journal",
|
|
15
|
-
"Read(//Users/jesse/.claude/plugins/cache/superpowers/skills/meta/creating-skills/**)",
|
|
16
|
-
"Read(//Users/jesse/.claude/plugins/cache/superpowers/skills/collaboration/brainstorming/**)",
|
|
17
|
-
"Read(//Users/jesse/.claude/plugins/cache/superpowers/skills/**)",
|
|
18
|
-
"Read(//Users/jesse/.claude/plugins/cache/**)",
|
|
19
|
-
"mcp__journal__read_journal_entry",
|
|
20
|
-
"Bash(/Users/jesse/git/superpowers/superpowers/skills/getting-started/list-skills)",
|
|
21
|
-
"Bash(/Users/jesse/git/superpowers/superpowers/skills/getting-started/skills-search refactor)",
|
|
22
|
-
"Read(//Users/jesse/Documents/GitHub/superpowers/**)",
|
|
23
|
-
"Bash(${CLAUDE_PLUGIN_ROOT}/skills/getting-started/list-skills:*)",
|
|
24
|
-
"Bash(/Users/jesse/Documents/GitHub/superpowers/superpowers/skills/getting-started/list-skills)",
|
|
25
|
-
"Bash(/Users/jesse/Documents/GitHub/superpowers/superpowers/skills/getting-started/skills-search editing)",
|
|
26
|
-
"Bash(list-skills brainstorm)",
|
|
27
|
-
"Read(//Users/jesse/.claude/commands/**)",
|
|
28
|
-
"Bash(git checkout:*)",
|
|
29
|
-
"Bash(/Users/jesse/.claude/plugins/cache/superpowers/skills/getting-started/list-skills)",
|
|
30
|
-
"Bash(ln:*)",
|
|
31
|
-
"Bash(git add:*)",
|
|
32
|
-
"Bash(git commit:*)",
|
|
33
|
-
"Bash(git push:*)",
|
|
34
|
-
"Read(//Users/jesse/.claude/plugins/**)",
|
|
35
|
-
"Read(//Users/jesse/.claude/**)",
|
|
36
|
-
"Bash(cat:*)",
|
|
37
|
-
"Read(//Users/jesse/.superpowers/**)",
|
|
38
|
-
"Bash(find:*)",
|
|
39
|
-
"Read(//Users/jesse/.clank/**)",
|
|
40
|
-
"Bash(./search-conversations:*)",
|
|
41
|
-
"Bash(./skills/collaboration/remembering-conversations/tool/search-conversations:*)",
|
|
42
|
-
"Bash(npm install)",
|
|
43
|
-
"Bash(sqlite3:*)",
|
|
44
|
-
"Bash(chmod:*)",
|
|
45
|
-
"Bash(/Users/jesse/Documents/GitHub/superpowers/superpowers/skills/collaboration/remembering-conversations/tool/migrate-to-config.sh:*)",
|
|
46
|
-
"Read(//Users/jesse/.config/superpowers/**)",
|
|
47
|
-
"Bash(./index-conversations --help)",
|
|
48
|
-
"Bash(./index-conversations:*)",
|
|
49
|
-
"Bash(bc)",
|
|
50
|
-
"Bash(bc:*)",
|
|
51
|
-
"Bash(./scripts/find-skills)",
|
|
52
|
-
"Bash(./scripts/run:*)",
|
|
53
|
-
"Bash(./scripts/find-skills test)",
|
|
54
|
-
"Bash(find-skills:*)",
|
|
55
|
-
"Bash(/Users/jesse/.claude/plugins/cache/superpowers/scripts/find-skills refactor)",
|
|
56
|
-
"Bash(mkdir:*)",
|
|
57
|
-
"Bash(git worktree add:*)",
|
|
58
|
-
"Bash([ -f package.json ])",
|
|
59
|
-
"Bash(git worktree:*)",
|
|
60
|
-
"Bash(gh repo create:*)",
|
|
61
|
-
"Bash(git clone:*)",
|
|
62
|
-
"Bash(gh repo view:*)",
|
|
63
|
-
"Bash(test:*)",
|
|
64
|
-
"Bash(git ls-tree:*)",
|
|
65
|
-
"Bash(git rm:*)",
|
|
66
|
-
"Bash(git mv:*)",
|
|
67
|
-
"Bash(/Users/jesse/Documents/GitHub/superpowers/superpowers-skills/skills/using-skills/find-skills)",
|
|
68
|
-
"Bash(tree:*)",
|
|
69
|
-
"Bash(/Users/jesse/Documents/GitHub/superpowers/superpowers-skills/skills/using-skills/skill-run --help)",
|
|
70
|
-
"Bash(echo:*)",
|
|
71
|
-
"Bash(git log:*)",
|
|
72
|
-
"Bash(git show:*)",
|
|
73
|
-
"Bash(git diff-tree:*)",
|
|
74
|
-
"Bash(bash:*)",
|
|
75
|
-
"Bash(xargs ls:*)",
|
|
76
|
-
"Bash(git rev-parse:*)",
|
|
77
|
-
"Bash(git reset:*)",
|
|
78
|
-
"Bash(./skills/using-skills/find-skills)",
|
|
79
|
-
"Bash(git rebase:*)",
|
|
80
|
-
"Bash(GIT_SEQUENCE_EDITOR=\"sed -i '' 's/^pick 683707a/edit 683707a/'\" git rebase:*)",
|
|
81
|
-
"Bash(gh pr create:*)",
|
|
82
|
-
"Bash(for:*)",
|
|
83
|
-
"Bash(do [ -f \"$skill\" ])",
|
|
84
|
-
"Bash(! grep -q \"^when_to_use:\" \"$skill\")",
|
|
85
|
-
"Bash(done)",
|
|
86
|
-
"Bash(gh issue view:*)",
|
|
87
|
-
"Bash(gh pr view:*)",
|
|
88
|
-
"Bash(gh pr diff:*)",
|
|
89
|
-
"Bash(/Users/jesse/Documents/GitHub/superpowers/superpowers-skills/skills/using-skills/find-skills test)",
|
|
90
|
-
"Bash(xargs -I {} bash -c 'dir=$(echo {} | sed \"\"\"\"s|/SKILL.md||\"\"\"\" | xargs basename); name=$(grep \"\"\"\"^name:\"\"\"\" {} | sed \"\"\"\"s/^name: //\"\"\"\"); echo \"\"\"\"$dir -> $name\"\"\"\"')",
|
|
91
|
-
"mcp__obsidian-mcp-tools__fetch",
|
|
92
|
-
"Skill(superpowers:using-git-worktrees)",
|
|
93
|
-
"Skill(superpowers:subagent-driven-development)",
|
|
94
|
-
"Bash(./test-raw.sh:*)",
|
|
95
|
-
"Bash(./chrome-ws raw \"ws://localhost:9222/devtools/page/test\" '{\"\"id\"\":1,\"\"method\"\":\"\"Browser.getVersion\"\"}')",
|
|
96
|
-
"Bash(./test-tabs.sh:*)",
|
|
97
|
-
"Bash(curl:*)",
|
|
98
|
-
"Bash(./chrome-ws tabs:*)",
|
|
99
|
-
"Bash(./chrome-ws close:*)",
|
|
100
|
-
"Bash(./chrome-ws raw:*)",
|
|
101
|
-
"Bash(./chrome-ws new:*)",
|
|
102
|
-
"Bash(./test-navigate.sh:*)",
|
|
103
|
-
"Bash(./test-interact.sh:*)",
|
|
104
|
-
"Bash(./test-extract.sh)",
|
|
105
|
-
"Bash(./test-wait.sh:*)",
|
|
106
|
-
"Bash(./test-e2e.sh:*)",
|
|
107
|
-
"Bash(./chrome-ws extract:*)",
|
|
108
|
-
"Bash(./chrome-ws screenshot:*)",
|
|
109
|
-
"Bash(./chrome-ws start:*)",
|
|
110
|
-
"Bash(./chrome-ws navigate:*)",
|
|
111
|
-
"Bash(git init:*)",
|
|
112
|
-
"Bash(git tag:*)",
|
|
113
|
-
"Skill(example-skills:mcp-builder)",
|
|
114
|
-
"Bash(npm run build)",
|
|
115
|
-
"Bash(npm run clean)",
|
|
116
|
-
"Bash(timeout 3s node dist/index.js)",
|
|
117
|
-
"Bash(git -C /Users/jesse/Documents/GitHub/superpowers/superpowers-chrome ls-files .claude-plugin/marketplace.json)",
|
|
118
|
-
"mcp__private-journal__read_journal_entry",
|
|
119
|
-
"Bash(git pull:*)",
|
|
120
|
-
"Skill(elements-of-style:writing-clearly-and-concisely)",
|
|
121
|
-
"Bash(gh release list:*)",
|
|
122
|
-
"Bash(gh release create:*)",
|
|
123
|
-
"Read(//Users/jesse/git/superpowers/superpowers-marketplace/.claude-plugin/**)",
|
|
124
|
-
"mcp__plugin_episodic-memory_episodic-memory__search",
|
|
125
|
-
"Skill(superpowers:writing-skills)",
|
|
126
|
-
"mcp__private-journal__process_thoughts",
|
|
127
|
-
"Skill(superpowers:brainstorming)",
|
|
128
|
-
"Skill(superpowers:using-superpowers)",
|
|
129
|
-
"Skill(episodic-memory:remembering-conversations)",
|
|
130
|
-
"Skill(superpowers-developing-for-claude-code:developing-claude-code-plugins)",
|
|
131
|
-
"Skill(working-with-claude-code)"
|
|
132
|
-
],
|
|
133
|
-
"deny": [],
|
|
134
|
-
"ask": [],
|
|
135
|
-
"additionalDirectories": [
|
|
136
|
-
"/Users/jesse/Documents/GitHub/superpowers/superpowers-skills/",
|
|
137
|
-
"/Users/jesse/Documents/GitHub/superpowers/superpowers-marketplace",
|
|
138
|
-
"/Users/jesse/Documents/GitHub/superpowers/using-chrome-directly/"
|
|
139
|
-
]
|
|
140
|
-
}
|
|
141
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "superpowers-dev",
|
|
3
|
-
"description": "Development marketplace for Superpowers core skills library",
|
|
4
|
-
"owner": {
|
|
5
|
-
"name": "Jesse Vincent",
|
|
6
|
-
"email": "jesse@fsck.com"
|
|
7
|
-
},
|
|
8
|
-
"plugins": [
|
|
9
|
-
{
|
|
10
|
-
"name": "superpowers",
|
|
11
|
-
"description": "Core skills library for Claude Code: TDD, debugging, collaboration patterns, and proven techniques",
|
|
12
|
-
"version": "3.5.1",
|
|
13
|
-
"source": "./",
|
|
14
|
-
"author": {
|
|
15
|
-
"name": "Jesse Vincent",
|
|
16
|
-
"email": "jesse@fsck.com"
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
]
|
|
20
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "superpowers",
|
|
3
|
-
"description": "Core skills library for Claude Code: TDD, debugging, collaboration patterns, and proven techniques",
|
|
4
|
-
"version": "3.5.1",
|
|
5
|
-
"author": {
|
|
6
|
-
"name": "Jesse Vincent",
|
|
7
|
-
"email": "jesse@fsck.com"
|
|
8
|
-
},
|
|
9
|
-
"homepage": "https://github.com/obra/superpowers",
|
|
10
|
-
"repository": "https://github.com/obra/superpowers",
|
|
11
|
-
"license": "MIT",
|
|
12
|
-
"keywords": ["skills", "tdd", "debugging", "collaboration", "best-practices", "workflows"]
|
|
13
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# Installing Superpowers for Codex
|
|
2
|
-
|
|
3
|
-
Quick setup to enable superpowers skills in Codex.
|
|
4
|
-
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
1. **Clone superpowers repository**:
|
|
8
|
-
```bash
|
|
9
|
-
mkdir -p ~/.codex/superpowers
|
|
10
|
-
cd ~/.codex/superpowers
|
|
11
|
-
git clone https://github.com/obra/superpowers.git .
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
2. **Create personal skills directory**:
|
|
15
|
-
```bash
|
|
16
|
-
mkdir -p ~/.codex/skills
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
3. **Update ~/.codex/AGENTS.md** to include this superpowers section:
|
|
20
|
-
```markdown
|
|
21
|
-
## Superpowers System
|
|
22
|
-
|
|
23
|
-
<EXTREMELY_IMPORTANT>
|
|
24
|
-
You have superpowers. Superpowers teach you new skills and capabilities. RIGHT NOW run: `~/.codex/superpowers/.codex/superpowers-codex bootstrap` and follow the instructions it returns.
|
|
25
|
-
</EXTREMELY_IMPORTANT>
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Verification
|
|
29
|
-
|
|
30
|
-
Test the installation:
|
|
31
|
-
```bash
|
|
32
|
-
~/.codex/superpowers/.codex/superpowers-codex bootstrap
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
You should see skill listings and bootstrap instructions. The system is now ready for use.
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# Superpowers Bootstrap for Codex
|
|
2
|
-
|
|
3
|
-
<EXTREMELY_IMPORTANT>
|
|
4
|
-
You have superpowers.
|
|
5
|
-
|
|
6
|
-
**Tool for running skills:**
|
|
7
|
-
- `~/.codex/superpowers/.codex/superpowers-codex use-skill <skill-name>`
|
|
8
|
-
|
|
9
|
-
**Tool Mapping for Codex:**
|
|
10
|
-
When skills reference tools you don't have, substitute your equivalent tools:
|
|
11
|
-
- `TodoWrite` → `update_plan` (your planning/task tracking tool)
|
|
12
|
-
- `Task` tool with subagents → Tell the user that subagents aren't available in Codex yet and you'll do the work the subagent would do
|
|
13
|
-
- `Skill` tool → `~/.codex/superpowers/.codex/superpowers-codex use-skill` command (already available)
|
|
14
|
-
- `Read`, `Write`, `Edit`, `Bash` → Use your native tools with similar functions
|
|
15
|
-
|
|
16
|
-
**Skills naming:**
|
|
17
|
-
- Superpowers skills: `superpowers:skill-name` (from ~/.codex/superpowers/skills/)
|
|
18
|
-
- Personal skills: `skill-name` (from ~/.codex/skills/)
|
|
19
|
-
- Personal skills override superpowers skills when names match
|
|
20
|
-
|
|
21
|
-
**Critical Rules:**
|
|
22
|
-
- Before ANY task, review the skills list (shown below)
|
|
23
|
-
- If a relevant skill exists, you MUST use `~/.codex/superpowers/.codex/superpowers-codex use-skill` to load it
|
|
24
|
-
- Announce: "I've read the [Skill Name] skill and I'm using it to [purpose]"
|
|
25
|
-
- Skills with checklists require `update_plan` todos for each item
|
|
26
|
-
- NEVER skip mandatory workflows (brainstorming before coding, TDD, systematic debugging)
|
|
27
|
-
|
|
28
|
-
**Skills location:**
|
|
29
|
-
- Superpowers skills: ~/.codex/superpowers/skills/
|
|
30
|
-
- Personal skills: ~/.codex/skills/ (override superpowers when names match)
|
|
31
|
-
|
|
32
|
-
IF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT.
|
|
33
|
-
</EXTREMELY_IMPORTANT>
|