skill-create — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited skill-create (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<objective> Synthesize one or more proven instincts (via a CLU- cluster or a single INS- instinct) into a real, runnable GSD skill definition at ~/.claude/skills/<skill-name>/SKILL.md, create a SKL-*.md reference record in the instinct system, and update all source lineage fields. </objective>
You are converting behavioral instincts into an executable GSD skill. The resulting SKILL.md must be a real, useful skill — not a placeholder. It must follow the same format as /learn, /learn-eval, and /evolve.
Parse the argument passed to this skill:
CLU-, it is a cluster ID.INS-, it is a single instinct ID.*From a CLU- cluster ID:**
Locate the cluster file:
find "$HOME/.claude/instincts/global/clusters/" -name "<cluster-id>.md" 2>/dev/nullRead the file. Parse the frontmatter to extract:
id, name, member_ids, avg_confidence, trigger_family, skill_hypothesisstatusRead each member instinct file listed in member_ids:
find "$HOME/.claude/instincts/" -name "<ins-id>.md" 2>/dev/nullParse each member instinct's frontmatter and ## Operational Rule body. Collect:
id, name, status, confidence, descriptionsignals.trigger_patterns*From a single INS- instinct ID:**
Locate the instinct file:
find "$HOME/.claude/instincts/" -name "<instinct-id>.md" 2>/dev/nullRead the file. Set source_cluster: null. Use the instinct itself as the sole member.
All member instincts must have status == "proven" or status == "active".
Skip any member with status == "candidate" or status == "deprecated" — warn in the report but do not abort.
If zero members pass validation (all were candidates or deprecated), output:
Cannot create skill: no proven or active member instincts found.
Members found: N (all candidates or deprecated)
Run /learn-eval first to mature these instincts, then retry.Then stop.
From cluster: Convert the cluster's name field to kebab-case. Drop any CLU/INS prefix. Use only lowercase letters, numbers, and hyphens.
From single instinct: Convert the instinct's name field to kebab-case the same way.
Examples:
"Slack Unread Detection" → slack-unread-detection"validate-roster-before-outbound-comms" → already kebab, use as-is"Weekly Digest -- Concise Format" → weekly-digest-concise-formatCollision check:
[ -d "$HOME/.claude/skills/<skill-name>" ] && echo "EXISTS" || echo "FREE"If the directory already exists, append a numeric suffix: <skill-name>-2, <skill-name>-3, etc. Check until a free name is found.
Create the directory and write the skill:
mkdir -p "$HOME/.claude/skills/<skill-name>"Frontmatter — use this exact format:
---
name: <skill-name>
description: "<one-line from skill_hypothesis (cluster) or instinct description (single)>"
argument-hint: ""
allowed-tools:
- Read
- Write
- Bash
- Grep
- Glob
---Body — generate a real, runnable skill following the /learn style:
<objective> section:skill_hypothesisdescription## Instructions section that synthesizes all member operational rules into a coherent, non-redundant process:## Operational Rule bodies## Important Constraints section that enumerates all the "never" / "always" / boundary conditions from the member rules.The generated skill must be actionable — an agent reading it must know exactly what to do. It must not say "follow best practices" or "be careful". Every statement must be a concrete instruction.
Minimum body length: 300 words. If the source instincts produce fewer than 300 words of synthesized instruction, expand with:
Ensure the skills directory exists:
mkdir -p "$HOME/.claude/instincts/global/skills"Generate a unique SKL ID:
SUFFIX=$(python3 -c "import secrets; print(secrets.token_hex(2))")
SKL_ID="SKL-$(date +%Y%m%d)-${SUFFIX}"Write ~/.claude/instincts/global/skills/${SKL_ID}.md:
---
id: <SKL_ID>
skill_name: "<skill-name>"
source_cluster: <CLU-ID | null>
source_instincts: [INS-..., ...]
created_at: "<ISO-8601 UTC now>"
---
## Skill Reference
**Generated from**: <CLU-XXXXXXXX-XXXX "<cluster name>" | INS-XXXXXXXX-XXXX "<instinct name>">
**Skill path**: ~/.claude/skills/<skill-name>/SKILL.md
**Members**: <N> instinct(s)
### Source Summary
<One paragraph summarizing what behavioral patterns were synthesized into this skill.>Cluster file (if source was a cluster):
Add skill_id: <skill-name> to the cluster's YAML frontmatter. Use the confidence library's update helper if available:
python3 -c "
import sys
sys.path.insert(0, '$HOME/.claude/instincts/lib')
from confidence import update_instinct_file
update_instinct_file('<CLU_FILE_PATH>', {
'skill_id': '<skill-name>',
'updated_at': '<ISO_NOW>',
})
"If the skill_id field does not exist in the cluster frontmatter yet, append it before the closing --- using the Edit tool.
Member instinct files:
For each member instinct that passed validation, add skill_created: <skill-name> to their lineage block:
python3 -c "
import sys
sys.path.insert(0, '$HOME/.claude/instincts/lib')
from confidence import update_instinct_file
update_instinct_file('<INSTINCT_PATH>', {
'lineage.skill_created': '<skill-name>',
'updated_at': '<ISO_NOW>',
})
"If the skill_created sub-key does not exist yet inside lineage:, append it there using the Edit tool.
Read ~/.claude/instincts/global/INSTINCTS.md. Find the ## Skills section. If it does not exist, append it at the end of the file.
Add one entry to the ## Skills section:
- <SKL_ID> | "<skill-name>" | from: <CLU-ID | INS-ID> | created <YYYY-MM-DD>Replace (none yet) if that placeholder is present.
Output a structured report:
## Skill Creation Report
**Source**: <CLU-XXX "<cluster name>" | INS-XXX "<instinct name>">
**Members**: N instinct(s) (<N> valid, <N> skipped)
### Generated Skill
- Name: <skill-name>
- Path: ~/.claude/skills/<skill-name>/SKILL.md
- Reference: <SKL-ID>
### Lineage Updated
<For each source — list the CLU or INS IDs and what field was added>
- CLU-XXX: skill_id = <skill-name>
- INS-XXX: lineage.skill_created = <skill-name>
- INS-YYY: lineage.skill_created = <skill-name>
### Skipped Members (N)
<Only present if any members were skipped>
- INS-ZZZ | "<name>" | status: candidate — not mature enoughIf the skill directory already existed and a suffix was appended, note it:
Note: ~/.claude/skills/<original-name>/ already existed — created as <skill-name> instead.~/.claude/skills/<skill-name>/ exists, append a numeric suffix (-2, -3, ...). Never delete existing skills.mkdir -p for both the skill dir and ~/.claude/instincts/global/skills/)./learn or /evolve — concrete steps, prescriptive instructions, no vague guidance. A reader should be able to execute it without ambiguity.skill_created field. Do not skip members silently.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.