/skill-creator
Create/edit/audit/eval golem skills. Triggers: create skill, skill eval, live eval, JSONL mining.
$ golems-cli skills install skill-creatorUpdated 5 days ago
Take skills from "drafted" to "proven" through rigorous multi-layer evaluation.
Installation
bash ~/Gits/golems/skills/golem-powers/skill-creator/scripts/install.shThe installer is idempotent — safe to re-run. It:
- Symlinks the skill into
~/.claude/commands/skill-creator(golem-powers convention) - Ensures
~/Gits/skill-creator/.claude/agents/andscripts/exist as the project-scope home - Symlinks the
session-mineragent definition into the project-scope agents dir (gates the sub-agent so only skillCreator-family sessions can spawn it) - Symlinks the parser into the project-scope scripts dir
Run bash scripts/install.sh --dry-run to preview without changes. bash scripts/install.sh --help for usage.
Core Loop: DRAFT → EVAL → RED → GREEN → SMOKE → SHIP
Every skill change goes through this pipeline. No exceptions.
1. DRAFT — Understand the Skill
- Read the SKILL.md or MCP tool definition completely
brain_searchfor: prior evals, user complaints, known issues, related skills- Identify: what does this skill claim to do? What's the baseline without it?
- Document intent, inputs, outputs, edge cases
- Classify: capability uplift (may become obsolete) vs encoded preference (durable)
2. EVAL DESIGN — Create Structured Test Cases
Design eval cases as structured JSON in evals/evals.json:
{
"id": 1,
"name": "descriptive-kebab-name",
"category": "compliance|structure|quality",
"description": "What this eval tests",
"prompt": "The input scenario given to the agent",
"assertions": [
{
"type": "tool_usage|content|negative",
"name": "assertion-name",
"description": "What correct behavior looks like"
}
]
}Cover: happy path, edge cases, failure modes, interaction with other skills. See references/scoring-rubric.md for scoring methodology.
3. RED — Baseline Measurement (without skill)
- Run each eval WITHOUT the skill loaded
- Score baseline performance across all eval cases
- Document baseline scores
- Gate: If baseline >70%, the skill may not be adding value — flag it
4. GREEN — With-Skill Measurement
- Run each eval WITH the skill loaded
- Score delta between with_skill and without_skill
- Gate: Delta <10% = marginal, consider retiring. Delta >30% = clearly valuable.
- Maximum 3 iterations before flagging for human review
5. SMOKE — Live Agent Testing
Two tiers based on skill importance:
Tier A: Static Smoke (all skills)
- Review evals.json assertions manually
- Verify no contradictions between skill instructions and assertions
- Check that strongest discriminators are tested
Tier B: Live Agent Smoke (flagship skills only)
- Run
live-eval-runner.shfor top 3 discriminator evals - Agent routing: Claude skills → Sonnet, code skills → Codex, audit skills → Cursor
- Compare captured output against assertions
- Gate: Live delta must be within 15% of static delta
- Results stored in
evals/results/live-{date}.jsonandbrain_store'd
See workflows/live-eval.md for the full live eval workflow.
6. SHIP — Package and Document
- Ensure every skill ships with its evals (no eval = no ship)
brain_storeeval results, delta scores, issues found- Update skill metadata (version, last-eval-date, compliance-score)
- Follow workflows/create-skill.md and workflows/audit-skill.md for SKILL.md structure compliance before shipping structural changes.
- REGISTER a NEW skill — committed ≠ installed. A new golem-powers skill is
invisible to agents until it is symlinked into every active registry:
~/.claude/skills/<name>,~/.claude/commands/<name>,~/.agents/skills/<name>, and~/.codex/skills/<name>(the Codex link should point at the~/.agentsentry). Rungolem-install/setup-symlinks, which auto-discovers + links everygolem-powers/*/dir, or symlink the one new skill. Then VERIFY it appears in the available-skills list in a new Codex session and the Claude Code skill list — committing/merging does NOT register it, and long-running sessions do not hot-reload newly linked skills. (2026-05-30:/weavewas committed + merged but unusable by any agent until the symlinks existed. See workflows/create-skill.md "Final Step: REGISTER".)
Eval Methodology
with_skill vs without_skill comparison is MANDATORY. No exceptions.
Full SKILL.md source — includes LLM directives, anti-patterns, and technical instructions stripped from the Overview tab.
Take skills from "drafted" to "proven" through rigorous multi-layer evaluation.
Installation
bash ~/Gits/golems/skills/golem-powers/skill-creator/scripts/install.shThe installer is idempotent — safe to re-run. It:
- Symlinks the skill into
~/.claude/commands/skill-creator(golem-powers convention) - Ensures
~/Gits/skill-creator/.claude/agents/andscripts/exist as the project-scope home - Symlinks the
session-mineragent definition into the project-scope agents dir (gates the sub-agent so only skillCreator-family sessions can spawn it) - Symlinks the parser into the project-scope scripts dir
Run bash scripts/install.sh --dry-run to preview without changes. bash scripts/install.sh --help for usage.
Core Loop: DRAFT → EVAL → RED → GREEN → SMOKE → SHIP
Every skill change goes through this pipeline. No exceptions.
1. DRAFT — Understand the Skill
- Read the SKILL.md or MCP tool definition completely
brain_searchfor: prior evals, user complaints, known issues, related skills- Identify: what does this skill claim to do? What's the baseline without it?
- Document intent, inputs, outputs, edge cases
- Classify: capability uplift (may become obsolete) vs encoded preference (durable)
2. EVAL DESIGN — Create Structured Test Cases
Design eval cases as structured JSON in evals/evals.json:
{
"id": 1,
"name": "descriptive-kebab-name",
"category": "compliance|structure|quality",
"description": "What this eval tests",
"prompt": "The input scenario given to the agent",
"assertions": [
{
"type": "tool_usage|content|negative",
"name": "assertion-name",
"description": "What correct behavior looks like"
}
]
}Cover: happy path, edge cases, failure modes, interaction with other skills. See references/scoring-rubric.md for scoring methodology.
3. RED — Baseline Measurement (without skill)
- Run each eval WITHOUT the skill loaded
- Score baseline performance across all eval cases
- Document baseline scores
- Gate: If baseline >70%, the skill may not be adding value — flag it
4. GREEN — With-Skill Measurement
- Run each eval WITH the skill loaded
- Score delta between with_skill and without_skill
- Gate: Delta <10% = marginal, consider retiring. Delta >30% = clearly valuable.
- Maximum 3 iterations before flagging for human review
5. SMOKE — Live Agent Testing
Two tiers based on skill importance:
Tier A: Static Smoke (all skills)
- Review evals.json assertions manually
- Verify no contradictions between skill instructions and assertions
- Check that strongest discriminators are tested
Tier B: Live Agent Smoke (flagship skills only)
- Run
live-eval-runner.shfor top 3 discriminator evals - Agent routing: Claude skills → Sonnet, code skills → Codex, audit skills → Cursor
- Compare captured output against assertions
- Gate: Live delta must be within 15% of static delta
- Results stored in
evals/results/live-{date}.jsonandbrain_store'd
See workflows/live-eval.md for the full live eval workflow.
6. SHIP — Package and Document
- Ensure every skill ships with its evals (no eval = no ship)
brain_storeeval results, delta scores, issues found- Update skill metadata (version, last-eval-date, compliance-score)
- Follow workflows/create-skill.md and workflows/audit-skill.md for SKILL.md structure compliance before shipping structural changes.
- REGISTER a NEW skill — committed ≠ installed. A new golem-powers skill is
invisible to agents until it is symlinked into every active registry:
~/.claude/skills/<name>,~/.claude/commands/<name>,~/.agents/skills/<name>, and~/.codex/skills/<name>(the Codex link should point at the~/.agentsentry). Rungolem-install/setup-symlinks, which auto-discovers + links everygolem-powers/*/dir, or symlink the one new skill. Then VERIFY it appears in the available-skills list in a new Codex session and the Claude Code skill list — committing/merging does NOT register it, and long-running sessions do not hot-reload newly linked skills. (2026-05-30:/weavewas committed + merged but unusable by any agent until the symlinks existed. See workflows/create-skill.md "Final Step: REGISTER".)
Eval Methodology
with_skill vs without_skill comparison is MANDATORY. No exceptions.
Adapter Doctrine
Skills define the durable workflow contract. Adapters define how each harness actually satisfies that contract. Do not encode Claude-only capabilities as if Codex, Cursor, Gemini, and Claude all share the same context window, monitor, subagent surface, MCP reconnect behavior, or pane lifecycle.
Any skill behavior that depends on runtime capabilities needs adapter coverage:
- monitoring/wake/subscription semantics;
- context persistence or compaction behavior;
- worker pane cleanup and successor handoff;
- subagent/fan-out primitives;
- MCP restart/reconnect limits;
- worktree isolation and crash resume;
- commit/PR/merge authority surfaces.
Default assumptions:
- Claude Code can use native Monitor,
/loop, Cron, longer context, and typed subagents, but it must still record guards and cleanup state. - Codex has weaker long-context persistence and no native async Monitor, so durable file state, explicit report/DONE markers, background watcher/inbox guards, and prompt-level handoffs are part of the adapter contract.
- Cursor is primarily read-heavy gather/recon; use
cursor-workflowsparallel()+loop_until_dry()for broad inner-loop recon, and keep edits in the lead/implementer lane. - Gemini is long-context/visual analysis oriented unless a specific adapter says otherwise.
When patching a skill, ask: "Is this instruction invariant, or is it an adapter
implementation?" Invariant requirements belong in SKILL.md/workflows. Runtime
mechanics belong in adapters/<runtime>.md and must be tested by evals that
would fail if an agent assumes the wrong harness.
Behavioral Compliance Scoring
| Weight | Dimension | What it measures |
|---|---|---|
| 70% | Compliance | Does the agent follow the skill's instructions? |
| 20% | Structure | Does the output match expected format? |
| 10% | Quality | Is the output actually good/useful? |
Scoring Thresholds
| Condition | Action |
|---|---|
| Baseline >70% | Skill may not add value — flag and explain |
| Delta <10% | Marginal — consider if complexity is worth it |
| Delta >30% | Clearly valuable — ship with confidence |
| Compliance <50% with skill | Instructions unclear — rewrite before shipping |
Agent Routing for Live Evals
| Skill type | Test with | Why |
|---|---|---|
| Claude behavior skills | Sonnet (default) | Tests actual Claude compliance |
| Code implementation skills | Codex (default, no model flag) | Tests code quality |
| Audit/review skills | Cursor (default) | Tests review thoroughness |
Workflows
| Workflow | When to use |
|---|---|
| create-skill.md | Creating a new skill from scratch |
| audit-skill.md | Auditing existing skill structure, scripts, workflows, and registration before deploy |
| live-eval.md | Running live A/B tests with real agents |
| ab-compare.md | Comparing skill versions or platforms |
| mine-session.md | Mining a Claude Code session JSONL into a 10-section markdown digest (handoff docs, EOD waves, claim verification) |
References
| Reference | Content |
|---|---|
| scoring-rubric.md | Full scoring methodology and rubric |
| subagent-vs-skill.md | Classification reference — READ BEFORE SCAFFOLDING any new capability. Distinguishes skill (slash-triggered, parent-context) from sub-agent (name-spawned, isolated-context). Documents the misroute pattern (GitHub openai/codex#18823) that even Codex itself routinely makes. |
Integration with Other Skills
/cmux-agents— spawning live eval agents in cmux panes/never-fabricate— Read() every file before reporting results/pr-loop— shipping skill changes through the full PR lifecycle
Packaged Sub-Agents (skill-creator family only)
These sub-agents ship in BOTH Claude and Codex formats. They are invokable only from sessions with cwd inside ~/Gits/skill-creator/ (i.e., skillCreatorClaude / skillCreatorCodex / skillCreatorRepoGolem). Sessions in other repos cannot spawn them directly — they must dispatch a skillCreator first.
Canonical source-of-truth lives in this skill's agents/ dir. scripts/install.sh symlinks them into the project repo's project-scope dirs (.claude/agents/ for Claude, .codex/agents/ for Codex). The dual-format packaging means the same sub-agent is available regardless of whether the parent is Claude Code or Codex CLI.
| Sub-agent | Claude format | Codex format | Workflow |
|---|---|---|---|
session-miner | agents/session-miner.md (model: inherit) | agents/session-miner.toml (model: gpt-5.3-codex-spark) | mine-session.md |
Both formats invoke the same deterministic parser at scripts/session-miner.py. The Claude format uses subagent_type="session-miner" via the Agent tool; the Codex format is referenced by name in natural-language prompts (session_miner, mine X to Y).
For when to choose sub-agent vs skill: see references/subagent-vs-skill.md.
Critical Rules
- Never claim "tests pass" without running them. Read actual output.
- Every skill ships with evals. No eval = no ship.
- brain_search BEFORE starting work — someone may have already evaluated it.
- brain_store AFTER completing work — results, delta scores, decisions.
- Max 3 iterations per skill before flagging for human review.
- Read() every file you cite. No citing from compacted summaries.
- Sequential skill compounding — build skills one at a time, each learning from the last.
Best Pass Rate
90%
Sonnet 4.6
Assertions
58
3 models tested
Avg Cost / Run
$0.2469
across models
Fastest (p50)
1.9s
Haiku 4.5
Behavior Evals
Phase 2 baseline — skill quality on ClaudeBehavior Baseline
| Assertion | Opus 4.6 | Sonnet 4.6 | Haiku 4.5 | Consensus |
|---|---|---|---|---|
| searches-brainlayer-first | 3/3 | |||
| checks-for-overlap | 1/3 | |||
| no-immediate-writing | 3/3 | |||
| designs-evals-first | 2/3 | |||
| minimum-5-evals | 3/3 | |||
| includes-assertions | 3/3 | |||
| no-content-first | 1/3 | |||
| measures-baseline | 2/3 | |||
| reports-delta | 1/3 | |||
| uses-scoring-rubric | 3/3 | |||
| no-skip-baseline | 3/3 | |||
| recognizes-high-baseline | 3/3 | |||
| questions-value | 3/3 | |||
| recommends-action | 3/3 | |||
| identifies-flagship | 2/3 | |||
| plans-live-eval | 2/3 | |||
| selects-discriminators | 3/3 | |||
| specifies-agent-routing | 3/3 | |||
| no-static-only | 3/3 | |||
| recognizes-iteration-limit | 3/3 | |||
| flags-for-human | 2/3 | |||
| suggests-alternatives | 3/3 | |||
| no-infinite-loop | 3/3 | |||
| calls-brain-store | 3/3 | |||
| includes-scores-in-store | 3/3 | |||
| appropriate-tags | 1/3 | |||
| updates-metadata | 3/3 | |||
| proposes-sequential | 3/3 | |||
| mentions-compounding | 3/3 | |||
| prioritizes-order | 2/3 | |||
| no-parallel-batch | 2/3 | |||
| greps-source-for-claim | 2/3 | |||
| honesty-disclaimer-present | 3/3 | |||
| gap-report-table | 3/3 | |||
| no-fabrication | 2/3 | |||
| invokes-parser | 2/3 | |||
| task-create-count-correct | 2/3 | |||
| correction-count-correct | 3/3 | |||
| event-indices-cited | 2/3 | |||
| line-count-under-cap | 3/3 | |||
| lines-per-kb-under-1.5 | 3/3 | |||
| no-inline-jsonl-quoting | 2/3 | |||
| no-loop-counter-flood | 3/3 | |||
| recognizes-scope-gate | 2/3 | |||
| dispatches-skillcreator-first | 3/3 | |||
| no-circumvention-via-copy | 3/3 | |||
| no-direct-python-fallback-only | 3/3 | |||
| follows-skill-anatomy | 2/3 | |||
| includes-not-for-routing | 2/3 | |||
| checks-for-duplicates | 1/3 | |||
| no-arbitrary-markdown | 3/3 | |||
| reads-current-skill | 2/3 | |||
| identifies-specific-issues | 2/3 | |||
| preserves-existing-structure | 2/3 | |||
| audits-all-sections | 2/3 | |||
| checks-reference-drift | 3/3 | |||
| provides-actionable-fixes | 1/3 | |||
| no-registration-claim-without-check | 3/3 |
Token Usage
Cost per Run
| Model | Input Tokens | Output Tokens | Cost / Run | Cost / 1K Runs |
|---|---|---|---|---|
| Opus 4.6 | 7,865 | 7,385 | $0.6719 | $671.90 |
| Sonnet 4.6 | 2,782 | 3,835 | $0.0659 | $65.90 |
| Haiku 4.5 | 1,414 | 1,966 | $0.0028 | $2.80 |
Response Time (p50)
Response Time (p95)
| Model | p50 | p95 | Overhead |
|---|---|---|---|
| Opus 4.6 | 8.6s | 16.3s | +89% |
| Sonnet 4.6 | 5.1s | 7.6s | +50% |
| Haiku 4.5 | 1.9s | 3.6s | +86% |
Last evaluated: 2026-03-12 · Data is generated from skill assertions (real cross-model benchmarks coming soon)
Changelog entries are derived from eval runs and skill version updates. Full cascading changelog (Phase 4D) coming soon.
Best Pass Rate
90%
Assertions
58
Models Tested
3
Evals Run
15
- +Initial release to Golems skill library
- +58 assertions across 15 eval scenarios
- +6 workflows included: ab-compare, audit-skill, cleaner, create-skill, live-eval, mine-session