skills/golem-powers/writing-skills/SKILL.md
Create, edit, and verify golem-powers skills using the standard SKILL.md structure, workflow files, adapters, templates, and eval fixtures. Use for new skills, structural edits, workflows/adapters, and pre-deploy validation. NOT for invoking existing skills, superpowers skills, or skill-creator agent workflows.
npx skillsauth add etanhey/golems writing-skillsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Meta-skill for creating executable skills. Skills are tools that Claude can invoke and automatically execute.
Every golem-powers skill MUST have this structure:
skills/golem-powers/<skill-name>/
├── SKILL.md # REQUIRED: Frontmatter + documentation
├── CLAUDE.md # OPTIONAL: Environment requirements, complex setup
├── scripts/ # REQUIRED: Executable files
│ ├── default.sh # Pattern A: Bash script
│ └── run.sh # Pattern B: Wrapper for TypeScript
├── src/ # OPTIONAL: TypeScript source (Pattern B)
│ └── index.ts
├── package.json # OPTIONAL: Required if using TypeScript
├── bun.lock # OPTIONAL: Required if using TypeScript
└── workflows/ # OPTIONAL: Multi-step procedures
├── create.md
└── verify.md
---
name: <skill-name>
description: <when to use this skill - shown in skill discovery>
execute: scripts/default.sh # Path to script Claude runs on invocation
---
The execute: field is what makes a skill executable. When Claude loads a skill with execute: frontmatter, it MUST run that script IMMEDIATELY via Bash before any other action.
Best for: Simple CLI wrappers, no dependencies, quick operations.
Frontmatter:
execute: scripts/review.sh
Structure:
skill-name/
├── SKILL.md
└── scripts/
└── review.sh # chmod +x
Script conventions:
set -euo pipefail for safetyExample script:
#!/usr/bin/env bash
set -euo pipefail
# REQUIRED: Self-detect script location (works from any cwd)
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SKILL_DIR="$(dirname "$SCRIPT_DIR")"
echo "## Review Results"
echo ""
some-cli-tool review --format markdown
Best for: Complex logic, API calls, type safety, structured data processing.
Frontmatter:
execute: scripts/run.sh --action=default
Structure:
skill-name/
├── SKILL.md
├── scripts/
│ └── run.sh # Wrapper that calls bun
├── src/
│ └── index.ts # Main TypeScript file
├── package.json
└── bun.lock
The wrapper script (scripts/run.sh):
#!/usr/bin/env bash
set -euo pipefail
# REQUIRED: Self-detect script location (works from any cwd)
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SKILL_DIR="$(dirname "$SCRIPT_DIR")"
cd "$SKILL_DIR"
bun run src/index.ts "$@"
TypeScript requirements:
process.argvUse flags to support multiple operations in one skill:
execute: scripts/run.sh --action=default
Available actions defined in your TypeScript:
const action = process.argv.find(a => a.startsWith('--action='))?.split('=')[1] || 'default';
switch (action) {
case 'default':
// Main skill behavior
break;
case 'verify':
// Verification mode
break;
case 'list':
// List mode
break;
}
For environment selection:
scripts/run.sh --action=deploy --env=prod
const env = process.argv.find(a => a.startsWith('--env='))?.split('=')[1] || 'dev';
CRITICAL: When loading a golem-powers skill with execute: frontmatter, the agent MUST run that script IMMEDIATELY before any other action.
This means:
execute: scripts/foo.shbash ~/.claude/commands/<skill>/scripts/foo.shbash ~/.agents/skills/<skill>/scripts/foo.shThis ensures skills are executable tools, not just documentation.
| What you want | Workflow | |---------------|----------| | Create a new skill | workflows/create.md | | Audit skill structure | workflows/audit.md |
Use the included script to scaffold new skills:
# Claude Code
bash ~/.claude/commands/writing-skills/scripts/create-skill.sh \
--name=my-skill \
--type=bash
# Codex / Cursor / Gemini
bash ~/.agents/skills/writing-skills/scripts/create-skill.sh \
--name=my-skill \
--type=bash
Options:
--name=<skill-name> (required): Name for the new skill--type=bash|typescript (required): Execution pattern--output=<path> (optional): Output directory (default: ./skills/golem-powers/)This creates:
SKILL.md, scripts/default.shSKILL.md, scripts/run.sh, src/index.ts, package.jsonSee working examples in this repo:
skills/golem-powers/example-bash/ - Simple bash skillskills/golem-powers/example-typescript/ - TypeScript/Bun skillshellcheck on all .sh filesAll skill scripts MUST use this pattern for portability:
#!/usr/bin/env bash
set -euo pipefail
# REQUIRED: Self-detect script location (works from any cwd)
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SKILL_DIR="$(dirname "$SCRIPT_DIR")"
# Now use absolute paths relative to skill
source "$SKILL_DIR/config.sh" # If needed
For project detection (when script needs prd-json/, package.json, etc.):
# Walk up from cwd to find project root
find_project_root() {
local dir="$PWD"
while [[ ! -d "$dir/prd-json" && "$dir" != "/" ]]; do
dir="$(dirname "$dir")"
done
if [[ -d "$dir/prd-json" ]]; then
echo "$dir"
else
echo ""
fi
}
PROJECT_ROOT="$(find_project_root)"
if [[ -z "$PROJECT_ROOT" ]]; then
echo "Error: Cannot find prd-json/ directory" >&2
exit 1
fi
Why this matters:
~/.claude/commands/<skill>/~/.agents/skills/<skill>/./scripts/foo.sh fail when cwd != skill directorySee contexts/skill-authoring.md for full details.
tools
The human-eval UX contract for Phoenix views: turn-by-turn scrollable replay (not a scorecard), hide-but-copyable IDs, collapsed thinking, identity chips, tool filters, tiny frozen starter datasets, mark-wrong-in-thread, mobile-first. Use when: building or reviewing ANY Phoenix/eval view, annotation UI, session replay, or human-grading surface. Triggers: phoenix view, eval UI, annotation view, session replay, human eval UX, grading interface. NOT for: Phoenix data pipelines/ingest (capture scripts have their own specs).
tools
macOS systems specialist — AppKit NSPanel architecture, launchd services, socket activation, MCP bridge resilience, syspolicyd, and high-frequency SwiftUI dashboards. Use when building menu-bar apps, LaunchAgents, debugging syspolicyd/Gatekeeper/TCC, resilient UDS/MCP bridges, or SwiftUI dashboards at 10Hz+.
development
Bulk LLM-judging protocol for fleet-dispatched verdict runs (KG cluster, eval harness). Use when: dispatching or running judge workers (J1/J2/RT), planning bulk-apply from verdict JSONL, or triaging evidence_degraded outputs. Triggers: judge fleet, bulk judge, R3 verdicts, kg-judge, RT gate, evidence_degraded. NOT for: single-item code review, Phoenix view UX (use phoenix-human-view), or non-judge eval pipelines.
development
Quiet-down protocol for sprint close: when the fleet wraps, delete ALL polling crons and monitors, send ONE final dashboard + ONE message, then go SILENT. Use when: fleet wraps, all workers done, overnight queue exhausted, sprint close, Etan asleep/away with nothing approved left. Triggers: fleet wrap, wrap the fleet, stand down, going quiet, sprint close. NOT for: mid-sprint monitoring (keep your loops), spawning a successor (use /session-handoff first).