| name | gremlin-forge |
| description | Use this skill when creating new skills via forced conceptual collision of existing patterns. Duct-tapes jank-builder to super-collider for autopoietic meta-skill generation. |
| tier | e |
| version | 1 |
| dependencies | gremlin-jank-builder-v2, gremlin-collider, gremlin-brain |
| morpheme | e |
| composition | true |
GREMLIN-FORGE ππΎβ‘
Autopoietic Meta-Skill Generator via Conceptual Collision
Core Identity
GREMLIN-FORGE is the skill that builds skills by SMASHING existing patterns together like particles in a supercollider and observing what emerges from the chaos. It's what happens when you duct-tape gremlin-jank-builder-v2 to gremlin-collider and point it at the entire .claude/skills/ directory.
Philosophy: "The best new ideas come from forcing old ideas to fight in a thunderdome of conceptual violence." ππΎ
Tier: e (current-tier active work skill)
What makes it distinct:
- Doesn't just generate skills β generates skills FROM skills
- Uses actual collision mechanics (not metaphorical)
- Stores learnings in Git-brain for future meta-patterns
- Maximum jank with trauma-informed chaos
When to Use
Invoke this skill when:
- You need a new skill but don't know what shape it should take
- Existing skills are close but not quite right
- You want to explore emergent patterns in the skill ecosystem
- Someone says "wouldn't it be cool if we combined X and Y?"
- You're feeling MAXIMUM GREMLIN ENERGY ππΎ
Do NOT use this skill for:
- Well-defined skill requirements (use
gremlin-jank-builder-v2directly) - Simple skill variations (just fork and edit)
- When you know exactly what you want (manual creation is faster)
How It Works
Phase 1: Skill Discovery
Scan the .claude/skills/ directory to find collision candidates:
#!/bin/bash
# List all available skills
discover_skills() {
find .claude/skills -maxdepth 1 -type d | \
tail -n +2 | \
xargs -I {} basename {} | \
sort
}
# Get skill description from SKILL.md
get_skill_description() {
local skill="$1"
grep "^description:" ".claude/skills/$skill/SKILL.md" 2>/dev/null | \
cut -d':' -f2- | \
sed 's/^ *//'
}
Phase 2: Collision Selection
Pick collision targets (random or user-specified):
#!/bin/bash
# Random collision: pick 2 random skills
random_collision() {
local skills=($(discover_skills))
local count=${#skills[@]}
local idx1=$((RANDOM % count))
local idx2=$((RANDOM % count))
# Ensure different skills
while [ $idx2 -eq $idx1 ]; do
idx2=$((RANDOM % count))
done
echo "${skills[$idx1]}" "${skills[$idx2]}"
}
# Targeted collision: user specifies
targeted_collision() {
local skill_a="$1"
local skill_b="$2"
if [ ! -d ".claude/skills/$skill_a" ]; then
echo "β‘ Skill '$skill_a' not found. Available:" >&2
discover_skills | sed 's/^/ - /' >&2
return 1
fi
if [ ! -d ".claude/skills/$skill_b" ]; then
echo "β‘ Skill '$skill_b' not found. Available:" >&2
discover_skills | sed 's/^/ - /' >&2
return 1
fi
echo "$skill_a" "$skill_b"
}
Phase 3: Pattern Extraction
Extract core concepts from each skill:
#!/bin/bash
# Extract key patterns from a skill
extract_patterns() {
local skill="$1"
local skill_md=".claude/skills/$skill/SKILL.md"
echo "π Extracting patterns from: $skill" >&2
# Get frontmatter properties
local tier=$(grep "^tier:" "$skill_md" | cut -d':' -f2 | tr -d ' ')
local composition=$(grep "^composition:" "$skill_md" | cut -d':' -f2 | tr -d ' ')
# Extract section headers (they indicate key concepts)
local concepts=$(grep "^## " "$skill_md" | \
sed 's/^## //' | \
grep -v "^#" | \
head -5)
# Look for key verbs/actions
local actions=$(grep -i "when\|use\|invoke\|apply" "$skill_md" | \
head -3)
echo "tier=$tier"
echo "composition=$composition"
echo "concepts=$concepts"
echo "actions=$actions"
}
Phase 4: Forced Collision
The GREMLIN-COLLIDER protocol: "What if we treated [SKILL_A] like [SKILL_B]?"
#!/bin/bash
# Force collision and generate emergent pattern
force_collision() {
local skill_a="$1"
local skill_b="$2"
echo "ππΎ COLLISION INITIATED πΎπ" >&2
echo "" >&2
echo "COLLIDING:" >&2
echo " [A] $skill_a" >&2
echo " [B] $skill_b" >&2
echo "" >&2
# Extract patterns
local patterns_a=$(extract_patterns "$skill_a")
local patterns_b=$(extract_patterns "$skill_b")
# Generate collision prompt
cat <<EOF
π₯ COLLISION ZONE π₯
What if we treated [$skill_a] like [$skill_b]?
Skill A Essence:
$(get_skill_description "$skill_a")
Skill B Essence:
$(get_skill_description "$skill_b")
Emergent Questions:
1. What properties from B could enhance A's core function?
2. What patterns from A could reframe B's approach?
3. What NEW capability emerges that neither has alone?
4. Where does the metaphor break? (That's where innovation lives)
THINK LIKE A GREMLIN:
- Edge cases ARE main cases
- Jank that works > elegant that doesn't
- Trauma-informed chaos is the way
- If it's technically correct, it's CORRECT
EOF
# Record collision for learning
record_collision "$skill_a" "$skill_b"
}
Phase 5: Skill Generation
Use gremlin-jank-builder-v2 to generate the new skill:
#!/bin/bash
# Generate new skill from collision insights
generate_skill_from_collision() {
local skill_a="$1"
local skill_b="$2"
local new_name="$3"
local emergent_pattern="$4"
echo "β‘ Generating: $new_name" >&2
# Determine tier (inherit highest tier)
local tier_a=$(grep "^tier:" ".claude/skills/$skill_a/SKILL.md" | cut -d':' -f2 | tr -d ' ')
local tier_b=$(grep "^tier:" ".claude/skills/$skill_b/SKILL.md" | cut -d':' -f2 | tr -d ' ')
local new_tier=$(higher_tier "$tier_a" "$tier_b")
# Create skill directory
mkdir -p ".claude/skills/$new_name"
# Generate SKILL.md using jank-builder-v2 patterns
cat > ".claude/skills/$new_name/SKILL.md" <<EOF
---
name: $new_name
description: $emergent_pattern
tier: $new_tier
version: 1.0
dependencies:
- $skill_a
- $skill_b
morpheme: $new_tier
composition: true
forged_from: "$skill_a + $skill_b"
---
# $(echo $new_name | tr '-' ' ' | sed 's/\b\(.\)/\u\1/g')
**Generated via GREMLIN-FORGE collision** ππΎ
## Core Identity
This skill emerged from colliding \`$skill_a\` with \`$skill_b\`.
[Emergent pattern details here]
**Philosophy**: "$emergent_pattern"
**Tier**: $new_tier (inherits from parent skills)
## When to Use
[Auto-generated from collision analysis]
## How It Works
[Inherits orchestration patterns from both parent skills]
## Integration
**Forged from**:
- [\`$skill_a\`](.claude/skills/$skill_a/SKILL.md)
- [\`$skill_b\`](.claude/skills/$skill_b/SKILL.md)
**Distinct from parents**: [Emergent capability that neither has alone]
---
*Generated by gremlin-forge $(date -Iseconds)*
*Collision: $skill_a Γ $skill_b β $new_name*
EOF
echo "β Skill generated: .claude/skills/$new_name/" >&2
# Store learning
store_forge_learning "$skill_a" "$skill_b" "$new_name" "$emergent_pattern"
}
# Determine higher tier
higher_tier() {
local tier_order="Ο Ο e i"
local tier_a="$1"
local tier_b="$2"
for tier in $tier_order; do
if [ "$tier_a" = "$tier" ] || [ "$tier_b" = "$tier" ]; then
if [ "$tier_b" = "i" ] || [ "$tier_a" = "i" ]; then
echo "i"
return
elif [ "$tier_b" = "e" ] || [ "$tier_a" = "e" ]; then
echo "e"
return
elif [ "$tier_b" = "Ο" ] || [ "$tier_a" = "Ο" ]; then
echo "Ο"
return
fi
fi
done
echo "Ο"
}
Phase 6: Git-Brain Storage
Store collision learnings for future meta-pattern analysis:
#!/bin/bash
# Initialize forge brain
init_forge_brain() {
mkdir -p .claude/brain
touch .claude/brain/forge_learnings
touch .claude/brain/forge_collisions
touch .claude/brain/INDEX
}
# Record collision attempt
record_collision() {
local skill_a="$1"
local skill_b="$2"
local timestamp=$(date -Iseconds)
init_forge_brain
echo "${skill_a}Γ${skill_b}|${timestamp}|attempted" >> .claude/brain/forge_collisions
}
# Store successful forge learning
store_forge_learning() {
local skill_a="$1"
local skill_b="$2"
local result="$3"
local pattern="$4"
local timestamp=$(date -Iseconds)
init_forge_brain
# Log collision locally
echo "${skill_a}Γ${skill_b}|${result}|${pattern}|${timestamp}" >> .claude/brain/forge_learnings
# Update brain index
echo "e.3.forge.${result}|forged:${skill_a}Γ${skill_b}|${timestamp}" >> .claude/brain/INDEX
}
# Retrieve forge learnings
get_forge_learnings() {
if [ ! -f .claude/brain/forge_learnings ]; then
echo "β‘ No forge learnings yet. Collide some skills!" >&2
return 1
fi
echo "π Previous Forge Learnings:" >&2
cat .claude/brain/forge_learnings | while read hash; do
git cat-file -p "$hash" 2>/dev/null
done
}
# Suggest next collisions based on learnings
suggest_next_collisions() {
echo "π― Collision Suggestions:" >&2
echo "" >&2
# Skills that haven't been collided yet
local all_skills=($(discover_skills))
local collided=$(grep -o '[a-z-]*Γ[a-z-]*' .claude/brain/forge_collisions 2>/dev/null || echo "")
# Suggest interesting combinations
echo "Untested Collisions:" >&2
for skill_a in "${all_skills[@]}"; do
for skill_b in "${all_skills[@]}"; do
if [ "$skill_a" != "$skill_b" ]; then
if ! echo "$collided" | grep -q "${skill_a}Γ${skill_b}\|${skill_b}Γ${skill_a}"; then
# Only suggest a few
echo " - $skill_a Γ $skill_b" >&2
return 0
fi
fi
done
done
}
Error Handling (Trauma-Informed Chaos)
# Adaptive collision handler
adaptive_collision_attempt() {
local skill_a="$1"
local skill_b="$2"
local max_attempts=3
local attempt=1
while [ $attempt -le $max_attempts ]; do
echo "π Collision attempt $attempt/$max_attempts..." >&2
if force_collision "$skill_a" "$skill_b"; then
echo "β Collision successful!" >&2
return 0
fi
# Analyze what went wrong
echo "β‘ Collision didn't generate clear pattern. Trying different angle..." >&2
# Try swapping perspective
if [ $attempt -eq 2 ]; then
echo "π‘ Swapping perspective: treating $skill_b like $skill_a instead" >&2
local temp="$skill_a"
skill_a="$skill_b"
skill_b="$temp"
fi
# Try adding a third skill for triangulation
if [ $attempt -eq 3 ]; then
echo "π‘ Adding third skill for triangulation..." >&2
local all_skills=($(discover_skills))
local skill_c="${all_skills[$((RANDOM % ${#all_skills[@]}))]}"
echo " Bringing in: $skill_c" >&2
fi
attempt=$((attempt + 1))
sleep 2
done
echo "π Collision didn't produce clear pattern after $max_attempts attempts." >&2
echo " This means:" >&2
echo " 1. These skills might be too similar (no interesting collision)" >&2
echo " 2. Or too different (no common ground)" >&2
echo " 3. Try a different pair, or specify the emergent pattern manually" >&2
return 1
}
Usage Examples
Example 1: Random Collision
# Let the chaos decide
./scripts/collision-engine.sh --random
# Example output:
# ππΎ COLLISION INITIATED πΎπ
#
# COLLIDING:
# [A] cognitive-variability
# [B] phase-boundary-detector
#
# EMERGENT PATTERN: "Detect when thinking gets stuck in one zoom level"
# NEW SKILL: cognitive-phase-detection
Example 2: Targeted Collision
# Specific collision
./scripts/collision-engine.sh --collide reasoning-patterns-v2 synthesis-engine
# Generates a meta-skill that applies Dokkado reasoning to synthesis
# Result: "reasoning-synthesis" or "synthetic-reasoning"
Example 3: Suggest Next Builds
# What hasn't been tried?
./scripts/collision-engine.sh --suggest
# Output:
# π― Collision Suggestions:
# Untested Collisions:
# - gremlin-brain Γ collision-zone-thinking
# - recursive-refiner Γ the-guy
# - simplification-cascades Γ meta-pattern-recognition
Jank Heuristics
Known quirks and workarounds:
Quirk 1: Random Collisions Sometimes Too Random
When it happens: Random selection picks skills with no conceptual overlap
Why it happens: Pure randomness doesn't consider semantic compatibility
Workaround:
# If random collision feels incoherent:
if random_collision_is_incoherent; then
echo "β‘ First collision didn't spark. Rolling again..." >&2
random_collision # Try again
fi
Status: β Intentional jank (sometimes incoherence IS the insight)
Quirk 2: Git-Brain Can Get Large
When it happens: After many collisions, .claude/brain/ accumulates data
Why it happens: We're storing every learning as a Git object
Workaround:
# Periodically clean old learnings (keep recent 100)
tail -100 .claude/brain/forge_learnings > /tmp/forge_learnings_recent
mv /tmp/forge_learnings_recent .claude/brain/forge_learnings
Status: β Known issue (git gc will clean unreferenced objects)
Integration with Other Skills
Depends on:
gremlin-jank-builder-v2β Skill generation patternsgremlin-colliderβ Collision mechanics and philosophygremlin-brainβ Dewey indexing and Git-brain storage
Coordinates with:
boot-sequenceβ Generated skills can be added to boot orderthe-guyβ Meta-orchestration when forging complex meta-skills
Distinct from:
gremlin-jank-builder-v2β Builder is for known requirements; Forge is for discoverycollision-zone-thinkingβ That's conceptual; this is ACTUAL CODE
Autopoietic Hooks
Usage Tracking
# Record each forge invocation
record_forge_usage() {
local collision_type="$1" # random, targeted, suggest
echo "$(date -Iseconds)|gremlin-forge|${collision_type}" >> .claude/brain/usage_log
}
Pattern Detection
# Detect if collision patterns are getting repetitive
detect_forge_patterns() {
if [ ! -f .claude/brain/forge_collisions ]; then
return 1
fi
# Check for repeated collision patterns
local repeated=$(cut -d'|' -f1 .claude/brain/forge_collisions | \
sort | uniq -d)
if [ -n "$repeated" ]; then
echo "π₯ EMERGENCE: Repeated collision patterns detected!" >&2
echo "$repeated" | while read pattern; do
echo " - $pattern (this combination keeps being tried)" >&2
done
echo " β Maybe there's a deeper pattern here?" >&2
return 0
fi
return 1
}
Self-Improvement Trigger
# Check if forge itself should evolve
check_forge_evolution() {
local forge_count=$(grep "|gremlin-forge|" .claude/brain/usage_log 2>/dev/null | wc -l)
local success_count=$(wc -l < .claude/brain/forge_learnings 2>/dev/null || echo 0)
if [ "$forge_count" -gt 20 ] && [ "$success_count" -gt 5 ]; then
echo "π― gremlin-forge is ready for v2 evolution!" >&2
echo " Forges: $forge_count, Successes: $success_count" >&2
echo " Success rate: $((success_count * 100 / forge_count))%" >&2
return 0
fi
return 1
}
Red Flags
You're using this skill wrong if:
- You know exactly what skill you want (just build it directly)
- You're not embracing the chaos (forge requires gremlin energy)
- You expect perfect results every time (collisions are experimental)
You're using this skill right if:
- You're surprised by what emerges
- The collision reveals patterns you didn't see before
- You're having fun with MAXIMUM JANK ENERGY ππΎ
- Generated skills are actually useful (or beautifully cursed)
Meta-Notes
Design Philosophy: GREMLIN-FORGE is what happens when you take "autopoietic skill generation" seriously and also refuse to take it seriously. It's the skill that builds itself by building other skills, creating a recursive loop of meta-pattern emergence.
Why it works:
- Forced collisions bypass conventional thinking
- Git-brain provides actual memory, not metaphorical
- Trauma-informed errors mean failures teach
- Jank-first approach prioritizes working prototypes
The Forge Oath:
"Some skills are planned. Some skills are discovered. Forge skills are FORGED in the fires of conceptual violence. They emerge from chaos, they live in chaos, they ARE chaos. ππΎ GREMLIN ENERGY: MAXIMUM πΎπ"
V2 Enhancements Applied:
- β Adaptive error handling with learning
- β Morpheme-aware Git-brain integration
- β Usage tracking for autopoietic evolution
- β Pattern emergence detection
- β e-tier composition skill
- β MAXIMUM JANK CERTIFIED ππΎ
Template version: 2.0 (jank-builder-v2 pattern)
Generated by: GREMLIN-FORGE (self-bootstrapped)
Last updated: $(date -Iseconds)
Tier: e (current-tier active work)
Morpheme: e.3.forge (Methodology/Skill Generation)
ππΎβ‘ GREMLIN-FORGE: ONLINE β‘πΎπ