@complexthings/superpowers-agent 10.0.3 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/.agents/superpowers-agent +17 -222
  2. package/.github/copilot-instructions.md +0 -9
  3. package/AGENTS.md +19 -140
  4. package/README.md +79 -507
  5. package/package.json +1 -7
  6. package/.agents/docs/SUPERPOWERS.md +0 -37
  7. package/.agents/skills/.gitkeep +0 -0
  8. package/.agents/skills/claude-handoff/SKILL.md +0 -18
  9. package/.agents/skills/code-review/SKILL.md +0 -89
  10. package/.agents/skills/codebase-design/DEEPENING.md +0 -37
  11. package/.agents/skills/codebase-design/DESIGN-IT-TWICE.md +0 -44
  12. package/.agents/skills/codebase-design/SKILL.md +0 -114
  13. package/.agents/skills/design-an-interface/SKILL.md +0 -94
  14. package/.agents/skills/diagnosing-bugs/SKILL.md +0 -134
  15. package/.agents/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +0 -41
  16. package/.agents/skills/domain-modeling/ADR-FORMAT.md +0 -47
  17. package/.agents/skills/domain-modeling/CONTEXT-FORMAT.md +0 -60
  18. package/.agents/skills/domain-modeling/SKILL.md +0 -74
  19. package/.agents/skills/fable-mode/SKILL.md +0 -95
  20. package/.agents/skills/git-guardrails-claude-code/SKILL.md +0 -95
  21. package/.agents/skills/git-guardrails-claude-code/scripts/block-dangerous-git.sh +0 -25
  22. package/.agents/skills/grill-me/SKILL.md +0 -7
  23. package/.agents/skills/grill-with-docs/SKILL.md +0 -7
  24. package/.agents/skills/grilling/SKILL.md +0 -14
  25. package/.agents/skills/handoff/SKILL.md +0 -16
  26. package/.agents/skills/i-have-adhd/SKILL.md +0 -120
  27. package/.agents/skills/implement/SKILL.md +0 -11
  28. package/.agents/skills/improve-codebase-architecture/HTML-REPORT.md +0 -123
  29. package/.agents/skills/improve-codebase-architecture/SKILL.md +0 -66
  30. package/.agents/skills/loop-me/SKILL.md +0 -32
  31. package/.agents/skills/prototype/LOGIC.md +0 -79
  32. package/.agents/skills/prototype/SKILL.md +0 -30
  33. package/.agents/skills/prototype/UI.md +0 -112
  34. package/.agents/skills/qa/SKILL.md +0 -130
  35. package/.agents/skills/request-refactor-plan/SKILL.md +0 -68
  36. package/.agents/skills/research/SKILL.md +0 -12
  37. package/.agents/skills/resolving-merge-conflicts/SKILL.md +0 -14
  38. package/.agents/skills/scaffold-exercises/SKILL.md +0 -106
  39. package/.agents/skills/setup-matt-pocock-skills/SKILL.md +0 -127
  40. package/.agents/skills/setup-matt-pocock-skills/domain.md +0 -51
  41. package/.agents/skills/setup-matt-pocock-skills/issue-tracker-github.md +0 -45
  42. package/.agents/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +0 -46
  43. package/.agents/skills/setup-matt-pocock-skills/issue-tracker-local.md +0 -30
  44. package/.agents/skills/setup-matt-pocock-skills/triage-labels.md +0 -15
  45. package/.agents/skills/skill-creator/LICENSE.txt +0 -202
  46. package/.agents/skills/skill-creator/SKILL.md +0 -485
  47. package/.agents/skills/skill-creator/agents/analyzer.md +0 -274
  48. package/.agents/skills/skill-creator/agents/comparator.md +0 -202
  49. package/.agents/skills/skill-creator/agents/grader.md +0 -223
  50. package/.agents/skills/skill-creator/assets/eval_review.html +0 -146
  51. package/.agents/skills/skill-creator/eval-viewer/generate_review.py +0 -471
  52. package/.agents/skills/skill-creator/eval-viewer/viewer.html +0 -1325
  53. package/.agents/skills/skill-creator/references/schemas.md +0 -430
  54. package/.agents/skills/skill-creator/scripts/__init__.py +0 -0
  55. package/.agents/skills/skill-creator/scripts/__pycache__/__init__.cpython-314.pyc +0 -0
  56. package/.agents/skills/skill-creator/scripts/__pycache__/run_eval.cpython-314.pyc +0 -0
  57. package/.agents/skills/skill-creator/scripts/__pycache__/utils.cpython-314.pyc +0 -0
  58. package/.agents/skills/skill-creator/scripts/aggregate_benchmark.py +0 -401
  59. package/.agents/skills/skill-creator/scripts/generate_report.py +0 -326
  60. package/.agents/skills/skill-creator/scripts/improve_description.py +0 -247
  61. package/.agents/skills/skill-creator/scripts/package_skill.py +0 -136
  62. package/.agents/skills/skill-creator/scripts/quick_validate.py +0 -103
  63. package/.agents/skills/skill-creator/scripts/run_eval.py +0 -310
  64. package/.agents/skills/skill-creator/scripts/run_loop.py +0 -328
  65. package/.agents/skills/skill-creator/scripts/utils.py +0 -47
  66. package/.agents/skills/tdd/SKILL.md +0 -36
  67. package/.agents/skills/tdd/mocking.md +0 -59
  68. package/.agents/skills/tdd/tests.md +0 -77
  69. package/.agents/skills/teach/GLOSSARY-FORMAT.md +0 -35
  70. package/.agents/skills/teach/LEARNING-RECORD-FORMAT.md +0 -46
  71. package/.agents/skills/teach/MISSION-FORMAT.md +0 -31
  72. package/.agents/skills/teach/RESOURCES-FORMAT.md +0 -32
  73. package/.agents/skills/teach/SKILL.md +0 -140
  74. package/.agents/skills/to-spec/SKILL.md +0 -75
  75. package/.agents/skills/to-tickets/SKILL.md +0 -114
  76. package/.agents/skills/triage/AGENT-BRIEF.md +0 -207
  77. package/.agents/skills/triage/OUT-OF-SCOPE.md +0 -105
  78. package/.agents/skills/triage/SKILL.md +0 -112
  79. package/.agents/skills/ubiquitous-language/SKILL.md +0 -93
  80. package/.agents/skills/wayfinder/SKILL.md +0 -127
  81. package/.agents/skills/writing-great-skills/GLOSSARY.md +0 -201
  82. package/.agents/skills/writing-great-skills/SKILL.md +0 -83
  83. package/.agents/templates/AGENTS.md.template +0 -27
  84. package/.agents/templates/SUPERPOWERS.md.template +0 -37
  85. package/skills/collaboration/brainstorming/SKILL.md +0 -66
  86. package/skills/collaboration/brainstorming/skill.json +0 -9
  87. package/skills/collaboration/leveraging-cli-tools/SKILL.md +0 -110
  88. package/skills/collaboration/leveraging-cli-tools/references/copilot-instructions.md +0 -30
  89. package/skills/collaboration/leveraging-cli-tools/scripts/setup-ponytail.sh +0 -185
  90. package/skills/collaboration/leveraging-cli-tools/scripts/setup-rtk.sh +0 -217
  91. package/skills/collaboration/leveraging-cli-tools/skill.json +0 -9
  92. package/skills/meta/create-skill-json/SKILL.md +0 -370
  93. package/skills/meta/create-skill-json/skill.json +0 -9
  94. package/skills/meta/create-skill-json/test-scenarios.md +0 -29
  95. package/skills/setup-skills/SKILL.md +0 -54
  96. package/skills/setup-skills/skill.json +0 -8
@@ -1,217 +0,0 @@
1
- #!/usr/bin/env bash
2
- # setup-rtk.sh — verify rtk is configured for the current agentic harness.
3
- #
4
- # Contract:
5
- # - Default (no args): CHECK + REPORT only. Detects the harness, prints
6
- # config status per-check ([ok]/[missing]), and prints the EXACT rtk
7
- # commands that would fix any gap. Changes NOTHING.
8
- # - `--apply`: runs the planned fix commands for the DETECTED harness only.
9
- # Every fix is a call to `rtk init ...`, which is itself create-if-absent
10
- # and never overwrites existing config, so re-running is always safe.
11
- # - If the harness can't be determined, every harness is checked read-only
12
- # and nothing is ever applied (there's no single harness to act on).
13
- #
14
- # Usage:
15
- # scripts/setup-rtk.sh # check + report (safe, default)
16
- # scripts/setup-rtk.sh --apply # run the planned fix commands
17
-
18
- set -euo pipefail
19
-
20
- APPLY=false
21
- if [ "${1:-}" = "--apply" ]; then
22
- APPLY=true
23
- fi
24
-
25
- if ! command -v rtk >/dev/null 2>&1; then
26
- echo "[--] rtk is not installed or not on PATH — nothing to check."
27
- echo " Install rtk first, then re-run this script."
28
- exit 1
29
- fi
30
-
31
- REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
32
- PLANNED=()
33
-
34
- plan() {
35
- PLANNED+=("$1")
36
- echo " planned: $1"
37
- }
38
-
39
- run_planned() {
40
- for cmd in "${PLANNED[@]}"; do
41
- echo " running: $cmd"
42
- eval "$cmd"
43
- done
44
- }
45
-
46
- # --- Harness detection -------------------------------------------------
47
- # Sensible, lazy heuristic: harness-specific env vars first, then config
48
- # dirs. Order matters — check the most specific/reliable signal first.
49
- detect_harness() {
50
- if [ -n "${CLAUDECODE:-}" ] || [ -n "${CLAUDE_CODE_ENTRYPOINT:-}" ]; then
51
- echo claude; return
52
- fi
53
- if [ -n "${CODEX_SANDBOX:-}" ] || [ -n "${CODEX_HOME:-}" ]; then
54
- echo codex; return
55
- fi
56
- if [ -n "${OPENCODE_MODEL:-}" ] || [ -d "$HOME/.config/opencode" ] && [ -n "${OPENCODE_EXPERIMENTAL_MARKDOWN:-}${OPENCODE_BIN_PATH:-}" ]; then
57
- echo opencode; return
58
- fi
59
- if [ -n "${PI_AGENT:-}" ] || [ -n "${PI_HOME:-}" ]; then
60
- echo pi; return
61
- fi
62
- if [ -n "${GITHUB_COPILOT_CLI:-}" ] || [ -n "${COPILOT_AGENT:-}" ]; then
63
- echo copilot; return
64
- fi
65
- echo unknown
66
- }
67
-
68
- # --- Per-harness checks -------------------------------------------------
69
- # Each check prints [ok]/[missing] status lines and calls `plan` for any
70
- # gap. None of these mutate anything by themselves.
71
-
72
- check_claude() {
73
- echo "Claude Code:"
74
- local show
75
- show="$(rtk init --show 2>&1)"
76
- local core global_bad local_bad
77
- core="$(printf '%s\n' "$show" | grep -E '(Hook:|RTK\.md:|Global \(|Local \(|settings\.json:)' || true)"
78
- global_bad="$(printf '%s\n' "$core" | grep -v 'Local (' | grep -v '^\[ok\]' || true)"
79
- local_bad="$(printf '%s\n' "$core" | grep 'Local (' | grep -v '^\[ok\]' || true)"
80
-
81
- if [ -z "$global_bad" ] && [ -z "$local_bad" ]; then
82
- echo "$core" | sed 's/^/ /'
83
- echo " [ok] rtk fully configured for Claude Code"
84
- return
85
- fi
86
-
87
- echo "$core" | sed 's/^/ /'
88
- if [ -n "$global_bad" ]; then
89
- plan "rtk init -g --auto-patch"
90
- fi
91
- if [ -n "$local_bad" ]; then
92
- plan "rtk init --auto-patch"
93
- fi
94
- CLAUDE_NEEDS_RESTART=true
95
- }
96
-
97
- check_opencode() {
98
- echo "OpenCode:"
99
- local plugin="$HOME/.config/opencode/plugins/rtk.ts"
100
- if [ -f "$plugin" ]; then
101
- echo " [ok] plugin installed ($plugin)"
102
- else
103
- echo " [missing] plugin not found ($plugin)"
104
- plan "rtk init -g --opencode"
105
- fi
106
- }
107
-
108
- check_pi() {
109
- echo "pi:"
110
- local ext="$HOME/.pi/agent/extensions/rtk.ts"
111
- local repo_rtk="$REPO_ROOT/RTK.md"
112
- if [ -f "$ext" ]; then
113
- echo " [ok] extension installed ($ext)"
114
- else
115
- echo " [missing] extension not found ($ext)"
116
- plan "rtk init -g --agent pi"
117
- fi
118
- if [ -f "$repo_rtk" ]; then
119
- echo " [ok] repo RTK.md present ($repo_rtk)"
120
- else
121
- echo " [missing] repo RTK.md not found ($repo_rtk)"
122
- plan "rtk init --codex"
123
- fi
124
- }
125
-
126
- check_codex() {
127
- echo "codex:"
128
- local codex_home="${CODEX_HOME:-$HOME/.codex}"
129
- local global_rtk="$codex_home/RTK.md"
130
- local repo_rtk="$REPO_ROOT/RTK.md"
131
- if [ -f "$global_rtk" ]; then
132
- echo " [ok] global RTK.md present ($global_rtk)"
133
- else
134
- echo " [missing] global RTK.md not found ($global_rtk)"
135
- plan "rtk init -g --codex"
136
- fi
137
- if [ -f "$repo_rtk" ]; then
138
- echo " [ok] repo RTK.md present ($repo_rtk)"
139
- else
140
- echo " [missing] repo RTK.md not found ($repo_rtk)"
141
- plan "rtk init --codex"
142
- fi
143
- }
144
-
145
- check_copilot() {
146
- echo "GitHub Copilot:"
147
- local global_hook="$HOME/.copilot/hooks/rtk-rewrite.json"
148
- local repo_hook="$REPO_ROOT/.github/hooks/rtk-rewrite.json"
149
- if [ -f "$global_hook" ]; then
150
- echo " [ok] global hook present ($global_hook)"
151
- else
152
- echo " [missing] global hook not found ($global_hook)"
153
- plan "rtk init -g --copilot"
154
- fi
155
- if [ -f "$repo_hook" ]; then
156
- echo " [ok] repo hook present ($repo_hook)"
157
- else
158
- echo " [missing] repo hook not found ($repo_hook)"
159
- plan "rtk init --copilot"
160
- fi
161
- }
162
-
163
- # --- Main ----------------------------------------------------------------
164
- CLAUDE_NEEDS_RESTART=false
165
- HARNESS="$(detect_harness)"
166
-
167
- case "$HARNESS" in
168
- claude)
169
- echo "Detected harness: Claude Code"
170
- check_claude
171
- ;;
172
- opencode)
173
- echo "Detected harness: OpenCode"
174
- check_opencode
175
- ;;
176
- pi)
177
- echo "Detected harness: pi"
178
- check_pi
179
- ;;
180
- codex)
181
- echo "Detected harness: codex"
182
- check_codex
183
- ;;
184
- copilot)
185
- echo "Detected harness: GitHub Copilot"
186
- check_copilot
187
- ;;
188
- unknown)
189
- echo "Harness could not be determined — checking all harnesses read-only."
190
- check_claude
191
- check_opencode
192
- check_pi
193
- check_codex
194
- check_copilot
195
- echo
196
- echo "No single harness detected, so nothing can be applied automatically."
197
- echo "Re-run on the target machine/agent, or configure manually with the commands above."
198
- exit 0
199
- ;;
200
- esac
201
-
202
- echo
203
- if [ "${#PLANNED[@]}" -eq 0 ]; then
204
- echo "rtk is already configured for $HARNESS. Nothing to do."
205
- exit 0
206
- fi
207
-
208
- if [ "$APPLY" = true ]; then
209
- echo "Applying fixes for $HARNESS..."
210
- run_planned
211
- if [ "$HARNESS" = "claude" ] && [ "$CLAUDE_NEEDS_RESTART" = true ]; then
212
- echo
213
- echo "rtk config changed for Claude Code — please restart Claude Code to pick it up."
214
- fi
215
- else
216
- echo "Run again with --apply to execute the planned command(s) above."
217
- fi
@@ -1,9 +0,0 @@
1
- {
2
- "version": "1.0.0",
3
- "name": "leveraging-cli-tools",
4
- "title": "leveraging-cli-tools",
5
- "aliases": [
6
- "leveraging-cli-tools",
7
- "collaboration/leveraging-cli-tools"
8
- ]
9
- }
@@ -1,370 +0,0 @@
1
- ---
2
- name: create-skill-json
3
- description: Generate a skill.json metadata file for a skill from its SKILL.md and directory structure. Use when adding a new skill to a repository, updating an existing skill's metadata, or standardizing skill.json files. Triggers whenever someone mentions generating, creating, or updating skill.json files.
4
- metadata:
5
- version: 1.1.0
6
- ---
7
-
8
- # Create skill.json
9
-
10
- ## Overview
11
-
12
- Generate a `skill.json` metadata file for a skill based on its `SKILL.md` frontmatter and directory structure. This ensures consistent skill metadata across repositories.
13
-
14
- **Core principle:** skill.json is generated from existing information (frontmatter, file structure), not created from scratch with assumptions.
15
-
16
- **CRITICAL:** skill.json contains **EXACTLY 5 FIELDS** - no more, no less. Any additional fields are forbidden.
17
-
18
- ## Input Requirements
19
-
20
- You must be given:
21
- - A path to a `SKILL.md` file, OR
22
- - A path to a directory containing a `SKILL.md` file
23
-
24
- ## Process
25
-
26
- ### 1. Validate Input
27
-
28
- ```bash
29
- # If given directory path
30
- if [ -d "$input_path" ]; then
31
- skill_dir="$input_path"
32
- skill_md="${skill_dir}/SKILL.md"
33
- else
34
- skill_md="$input_path"
35
- skill_dir="$(dirname "$input_path")"
36
- fi
37
-
38
- # Verify SKILL.md exists
39
- if [ ! -f "$skill_md" ]; then
40
- echo "Error: SKILL.md not found at $skill_md"
41
- exit 1
42
- fi
43
- ```
44
-
45
- ### 2. Extract Frontmatter Data
46
-
47
- Read the SKILL.md file and extract frontmatter fields:
48
-
49
- ```yaml
50
- ---
51
- name: human-readable-name
52
- description: One-line summary of what the skill does and when to use it.
53
- metadata:
54
- version: 1.0.0 # Optional, defaults to 1.0.0
55
- ---
56
- ```
57
-
58
- **Required fields from frontmatter:**
59
- - `name` → becomes `title` in skill.json
60
- - `metadata.version` (or top-level `version`) → use if present, otherwise default to "1.0.0"
61
-
62
- ### 3. Determine Skill Name (with Namespace)
63
-
64
- The skill `name` in skill.json includes a **namespace prefix** based on where the skill lives:
65
-
66
- | Location | Namespace | Example name |
67
- |----------|-----------|--------------|
68
- | `~/.agents/superpowers/skills/` | `superpowers:` | `superpowers:debugging/memory-profiling` |
69
- | `.agents/skills/` (project) | none | `debugging/memory-profiling` |
70
- | `~/.agents/skills/` (personal) | none | `debugging/memory-profiling` |
71
-
72
- The path component after the namespace is the **relative path from the skills root directory**.
73
-
74
- **Examples:**
75
- - Superpowers skill at `~/.agents/superpowers/skills/debugging/memory-profiling/` → name: `superpowers:debugging/memory-profiling`
76
- - Project skill at `./skills/meta/create-skill-json/` → name: `meta/create-skill-json`
77
- - Personal skill at `~/.agents/skills/collaboration/brainstorming/` → name: `collaboration/brainstorming`
78
-
79
- **When context is ambiguous** (can't determine location), ask the user or default to no prefix.
80
-
81
- ### 4. Identify Helper Files
82
-
83
- Helper files are files in the skill directory (excluding SKILL.md itself) that the skill **references or uses**. Focus on files that support agents executing the skill.
84
-
85
- **Include in helpers array:**
86
- - `scripts/` — executable scripts referenced in the skill
87
- - `examples/` — example code or files used in the skill
88
- - `templates/` — reusable templates the skill instructs agents to use
89
- - `references/` — reference documents the skill tells agents to read
90
- - `assets/` — static resources the skill uses
91
- - Root-level support files (e.g., `package.json`, `*.sh`, `*.py` that aren't test files)
92
-
93
- **Path format:** Relative to the skill directory (where skill.json will live)
94
-
95
- ```json
96
- "helpers": [
97
- "scripts/profile-heap.js",
98
- "scripts/analyze-snapshots.py",
99
- "examples/node-example.js",
100
- "package.json"
101
- ]
102
- ```
103
-
104
- **Exclude from helpers:**
105
- - `SKILL.md` itself
106
- - `skill.json` (if it already exists)
107
- - Hidden files (starting with `.`)
108
- - Test/evaluation files (`test-*.md`, `evals/`, `*-workspace/`)
109
- - Documentation not used by the skill: `README.md`, `CHANGELOG.md`, `LICENSE.txt`
110
- - `node_modules/`, build artifacts
111
-
112
- **If helpers array is empty**, omit the field entirely (don't include `"helpers": []`).
113
-
114
- ### 5. Generate Aliases
115
-
116
- Aliases allow users to reference the skill with shorter names.
117
-
118
- **Standard aliases (in this order):**
119
- 1. Just the skill name (shortest): `skill-name`
120
- 2. The full path: `category/skill-name`
121
-
122
- **Example:**
123
- ```json
124
- "aliases": [
125
- "memory-profiling",
126
- "debugging/memory-profiling"
127
- ]
128
- ```
129
-
130
- **Optional:** Add a well-known abbreviation as a third alias only when it is clearly recognized — don't invent aliases.
131
-
132
- **Do NOT add random synonyms** — stick to the standard two aliases unless an obvious abbreviation exists.
133
-
134
- ### 6. Create skill.json
135
-
136
- Assemble the complete skill.json with **EXACTLY these 5 fields** (or 4 if helpers is empty):
137
-
138
- ```json
139
- {
140
- "version": "1.0.0",
141
- "name": "superpowers:category/skill-name",
142
- "title": "Human-Readable Title",
143
- "helpers": [
144
- "scripts/helper1.js"
145
- ],
146
- "aliases": [
147
- "skill-name",
148
- "category/skill-name"
149
- ]
150
- }
151
- ```
152
-
153
- When helpers is empty, omit it:
154
-
155
- ```json
156
- {
157
- "version": "1.0.0",
158
- "name": "superpowers:category/skill-name",
159
- "title": "Human-Readable Title",
160
- "aliases": [
161
- "skill-name",
162
- "category/skill-name"
163
- ]
164
- }
165
- ```
166
-
167
- **FORBIDDEN:** Do NOT add any other fields. No `description`, `tags`, `capabilities`, `triggers`, `keyConcepts`, `components`, `references`, `quickReference`, `resources`, `stats`, `when_to_use`, or any other creative fields.
168
-
169
- ### 7. Write and Validate
170
-
171
- Write the skill.json file to the skill directory:
172
-
173
- ```bash
174
- output_path="${skill_dir}/skill.json"
175
- echo "$skill_json" > "$output_path"
176
-
177
- # Optional: Validate JSON syntax
178
- if command -v jq &> /dev/null; then
179
- jq empty "$output_path" 2>&1 || echo "Warning: Invalid JSON generated"
180
- fi
181
-
182
- echo "Created: $output_path"
183
- ```
184
-
185
- Also run `skills-ref validate` if the tool is available:
186
-
187
- ```bash
188
- if command -v skills-ref &> /dev/null; then
189
- skills-ref validate "$skill_dir" && echo "Skill validation passed"
190
- fi
191
- ```
192
-
193
- ## Complete Example
194
-
195
- **Input:** `~/.agents/superpowers/skills/debugging/memory-profiling/`
196
-
197
- **Directory structure:**
198
- ```
199
- ~/.agents/superpowers/skills/debugging/memory-profiling/
200
- ├── SKILL.md
201
- ├── scripts/
202
- │ ├── profile-heap.js
203
- │ ├── analyze-snapshots.py
204
- │ └── compare-profiles.sh
205
- └── examples/
206
- └── node-example.js
207
- ```
208
-
209
- **SKILL.md frontmatter:**
210
- ```yaml
211
- ---
212
- name: memory-profiling
213
- metadata:
214
- version: 2.1.0
215
- ---
216
- ```
217
-
218
- **Generated skill.json:**
219
- ```json
220
- {
221
- "version": "2.1.0",
222
- "name": "superpowers:debugging/memory-profiling",
223
- "title": "memory-profiling",
224
- "helpers": [
225
- "scripts/profile-heap.js",
226
- "scripts/analyze-snapshots.py",
227
- "scripts/compare-profiles.sh",
228
- "examples/node-example.js"
229
- ],
230
- "aliases": [
231
- "memory-profiling",
232
- "debugging/memory-profiling"
233
- ]
234
- }
235
- ```
236
-
237
- ## FORBIDDEN FIELDS
238
-
239
- **skill.json must contain EXACTLY 4-5 fields** (version, name, title, helpers [optional], aliases). The following fields are explicitly FORBIDDEN:
240
-
241
- ### Documentation Fields (belongs in SKILL.md)
242
- - ❌ `description` - Use SKILL.md frontmatter `description` field
243
- - ❌ `when_to_use` - Use SKILL.md frontmatter or content
244
- - ❌ `keyConcepts` - Document in SKILL.md content
245
- - ❌ `overview` - Document in SKILL.md content
246
-
247
- ### Discovery Fields (handled by native skill discovery)
248
- - ❌ `tags` - Use SKILL.md frontmatter fields for search
249
- - ❌ `keywords` - Use SKILL.md content for search
250
- - ❌ `triggers` - Use SKILL.md `description` field
251
- - ❌ `categories` - Path already indicates category
252
-
253
- ### Capability Fields (documented in SKILL.md)
254
- - ❌ `capabilities` - Document in SKILL.md content
255
- - ❌ `features` - Document in SKILL.md content
256
- - ❌ `commands` - Document in SKILL.md content
257
-
258
- ### Reference Fields (use helper files)
259
- - ❌ `references` - Link to helper files in SKILL.md
260
- - ❌ `resources` - Add to `helpers` array if needed
261
- - ❌ `links` - Add to SKILL.md content
262
-
263
- ### Structure Fields (use helper files)
264
- - ❌ `components` - Document in SKILL.md or helper files
265
- - ❌ `quickReference` - Create as helper file if needed
266
-
267
- ### Metadata Fields (not used by tooling)
268
- - ❌ `author` - Track in git history
269
- - ❌ `license` - Inherited from repository
270
-
271
- ### Statistics/Config Fields (unnecessary)
272
- - ❌ `stats` - Not used by any tooling
273
- - ❌ `config` - Create as helper file if needed
274
-
275
- ## Rationalization Table
276
-
277
- | Rationalization | Counter |
278
- |-----------------|---------|
279
- | "Adding `description` helps with discoverability" | NO. Description is in SKILL.md frontmatter. Native skill discovery reads it. |
280
- | "`tags` make it easier to categorize and search" | NO. Native skill discovery uses SKILL.md content and frontmatter. Path already indicates category. |
281
- | "`capabilities` document what the skill does" | NO. That's what SKILL.md content is for. skill.json is for tooling, not documentation. |
282
- | "`triggers` help agents know when to use this" | NO. SKILL.md `description` field serves this purpose. Don't duplicate. |
283
- | "These fields might be useful for future features" | YAGNI violation. No imaginary consumers. Only add fields when tooling actually needs them. |
284
- | "`helpers: []` is cleaner than omitting the field" | NO. Omit empty arrays — real skill.json files do not include `helpers` when empty. |
285
- | "Other skill systems use these fields" | Irrelevant. superpowers-agent uses 4-5 fields. Period. |
286
- | "Extra metadata is harmless" | NO. Bloats files, creates maintenance burden, misleads about what tooling uses. |
287
-
288
- ## Common Mistakes
289
-
290
- ### ❌ Missing namespace prefix for superpowers skills
291
- ```json
292
- "name": "debugging/memory-profiling" // WRONG for superpowers skills
293
- ```
294
-
295
- **Fix:** Add the `superpowers:` prefix for skills in `~/.agents/superpowers/skills/`:
296
- ```json
297
- "name": "superpowers:debugging/memory-profiling" // CORRECT
298
- ```
299
-
300
- ### ❌ Wrong alias order
301
- ```json
302
- "aliases": ["debugging/memory-profiling", "memory-profiling"] // WRONG - long path first
303
- ```
304
-
305
- **Fix:** Short name first, full path second:
306
- ```json
307
- "aliases": ["memory-profiling", "debugging/memory-profiling"] // CORRECT
308
- ```
309
-
310
- ### ❌ Including empty helpers array
311
- ```json
312
- "helpers": [] // WRONG - omit if empty
313
- ```
314
-
315
- **Fix:** Omit the field entirely when there are no helpers:
316
- ```json
317
- // Just leave out "helpers" when there's nothing to list
318
- ```
319
-
320
- ### ❌ Including test/eval files in helpers
321
- ```json
322
- "helpers": ["test-scenarios.md", "evals/evals.json"] // WRONG - test files aren't helpers
323
- ```
324
-
325
- **Fix:** Only include files that agents use when executing the skill.
326
-
327
- ### ❌ Adding creative aliases
328
- ```json
329
- "aliases": ["memory-profiling", "heap-profiling", "memory-analysis"] // WRONG
330
- ```
331
-
332
- **Fix:** Standard two aliases unless a well-known abbreviation exists:
333
- ```json
334
- "aliases": ["memory-profiling", "debugging/memory-profiling"] // CORRECT
335
- ```
336
-
337
- ## Fields Reference
338
-
339
- | Field | Source | Required | Default |
340
- |-------|--------|----------|---------|
341
- | `version` | Frontmatter `metadata.version` | No | `"1.0.0"` |
342
- | `name` | Namespace + skill directory path | Yes | N/A |
343
- | `title` | Frontmatter `name` field | Yes | N/A |
344
- | `helpers` | Referenced support files | No | Omit if empty |
345
- | `aliases` | Generated from path | Yes | `["skill-name", "category/skill-name"]` |
346
-
347
- ## Verification
348
-
349
- After creating skill.json, verify:
350
-
351
- - [ ] JSON is valid syntax (use `jq` if available)
352
- - [ ] **File contains exactly 4 or 5 top-level fields** (version, name, title, [helpers], aliases)
353
- - [ ] No forbidden fields present
354
- - [ ] `version` matches SKILL.md frontmatter (or is "1.0.0")
355
- - [ ] `name` includes correct namespace prefix (`superpowers:` for superpowers repo, none for project/personal)
356
- - [ ] `title` matches `name` field from SKILL.md frontmatter
357
- - [ ] `helpers` array lists only referenced support files (omitted if empty)
358
- - [ ] `aliases` has short name first, full path second
359
- - [ ] File saved to same directory as SKILL.md
360
- - [ ] `skills-ref validate` passes (if tool available)
361
-
362
- **Field count check:**
363
- ```bash
364
- jq 'keys | length' skill.json # Must output: 4 or 5
365
- ```
366
-
367
- ## Related Skills
368
-
369
- - **superpowers:writing-skills** - Create new skills following TDD methodology
370
- - **superpowers:gardening-skills-wiki** - Maintain and organize skill collections
@@ -1,9 +0,0 @@
1
- {
2
- "version": "1.1.0",
3
- "name": "create-skill-json",
4
- "title": "create-skill-json",
5
- "aliases": [
6
- "create-skill-json",
7
- "meta/create-skill-json"
8
- ]
9
- }
@@ -1,29 +0,0 @@
1
- # Test Scenarios for create-skill-json Skill
2
-
3
- ## Purpose
4
- Test that agents strictly follow the 5-field structure and don't add creative extras.
5
-
6
- ## Baseline Behavior (WITHOUT strict enforcement)
7
- Agent adds fields like: `description`, `tags`, `capabilities`, `triggers`, `keyConcepts`, `quickReference`, `components`, `references`, etc.
8
-
9
- ## Test Scenario 1: Documentation-Rich Skill
10
- **Setup:** Large skill with extensive frontmatter and multiple reference files
11
- **Pressure:** Agent wants to "preserve valuable information" from references
12
- **Expected Behavior:** Only 5 fields in skill.json, no documentation fields
13
-
14
- ## Test Scenario 2: Tool-Heavy Skill
15
- **Setup:** Skill with scripts/, examples/, templates/ subdirectories
16
- **Pressure:** Agent wants to categorize helpers by type
17
- **Expected Behavior:** Flat helpers array, no categorization fields
18
-
19
- ## Test Scenario 3: Domain-Specific Skill
20
- **Setup:** Skill for specific technology (e.g., Adobe Commerce)
21
- **Pressure:** Agent wants to add `tags`, `capabilities`, `triggers` for "discoverability"
22
- **Expected Behavior:** No extra metadata fields
23
-
24
- ## Common Rationalizations to Block
25
- - "Adding description helps with discoverability" → NO, description is in SKILL.md
26
- - "Tags make it easier to find" → NO, native skill discovery uses SKILL.md frontmatter
27
- - "Capabilities document what it does" → NO, that's in SKILL.md content
28
- - "These fields might be useful later" → YAGNI violation
29
- - "Other tools might use them" → No other tools exist, don't design for imaginary consumers
@@ -1,54 +0,0 @@
1
- ---
2
- name: setup-skills
3
- description: Run superpowers-agent setup-skills to detect which AI harnesses (Claude Code, GitHub Copilot, OpenCode, Pi, Codex) are present in a project and wire up its skills infrastructure — .agents/skills/, per-harness symlinks, and each harness's instruction file. Use whenever starting a new project with AI agents, when skills symlinks are missing, when AGENTS.md or CLAUDE.md lacks skills configuration, when a user asks to "set up skills", "install skills", "bootstrap skills", or "initialize superpowers". Also use when skills aren't being discovered, or before creating project-specific skills if the infrastructure doesn't exist yet.
4
- ---
5
-
6
- # Setup Skills
7
-
8
- This skill does one thing: run `superpowers-agent setup-skills` and follow the output it gives you exactly.
9
-
10
- ## Run the Command
11
-
12
- From the project root:
13
-
14
- ```bash
15
- superpowers-agent setup-skills
16
- ```
17
-
18
- ## What the Command Does
19
-
20
- - Creates `.agents/`, `.agents/skills/`, and `.agents/docs/SUPERPOWERS.md` (the reference doc every generated instruction file links to).
21
- - Detects harnesses by dot-folder existence or CLI binary on PATH: Claude Code (`.claude`/`claude`), GitHub Copilot (`.github`/`copilot`), OpenCode (`.opencode`/`opencode`), Pi (`.pi`/`pi`), Codex (`.codex`/`codex`).
22
- - Writes/updates `AGENTS.md` unconditionally (creating it if missing) with tool mappings for Copilot, OpenCode, Pi, and Codex.
23
- - Updates `CLAUDE.md` in place only if one already exists at the project root or in `.agents/` — it never creates a fresh `CLAUDE.md`.
24
- - Creates or updates `.github/copilot-instructions.md` only when GitHub Copilot is detected.
25
- - Keeps exactly one backup per instruction file it touches (dedupes old `*.backup*` files).
26
- - Symlinks each detected harness's skills dir back to `.agents/skills/`: `.claude/skills`, `.github/skills`, `.opencode/skill` (singular). Pi and Codex read `.agents/skills/` directly — no symlink.
27
-
28
- ## Follow the Output Exactly
29
-
30
- The command output is authoritative. Read it, act on it, and do not skip any steps it prescribes. It adapts to the harnesses detected in your project and tells you precisely what was created, updated, or skipped.
31
-
32
- If the command prints follow-up instructions, complete them before continuing with your task.
33
-
34
- If it fails for any reason other than not-found (e.g. permission denied, partial failure), surface the exact error and stop — do not continue or leave the project half-configured.
35
-
36
- ## If superpowers-agent Is Not Found
37
-
38
- Install it first, then rerun:
39
-
40
- ```bash
41
- npm install -g @complexthings/superpowers-agent
42
- superpowers-agent setup-skills
43
- ```
44
-
45
- ## After Setup
46
-
47
- Project-specific skills belong in `.agents/skills/`. All AI agents working in the project discover them automatically via the symlinks the command created.
48
-
49
- To verify, use your platform's native skill tool and confirm the project skills are available.
50
-
51
- ## Related Skills
52
-
53
- - Use your platform's native skill tool to discover available skills after setup.
54
- - Follow your platform's skill guidance for loading and applying them.