Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Build custom skill trees with advanced orchestration and emit valid SKILL.md files. Use when the user says "build a skill", "create a skill tree", "build my skill", "design a workflow", "create a pipeline", "skill tree builder", or wants to create an agentic workflow with sub-agents, gated checks, improvement loops, or multi-perspective analysis.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-19 | ✗→✓ | ▲ Improved | 48% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 110% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 51% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 39% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 2% | 0% |
Find where the skill-inspector package is installed:
bashBUILDER_DIR=$(find "$(pwd)" ~/.agents/skills -path '*/skill-inspector/skill_inspector/builder.py' -type f 2>/dev/null -exec dirname {} \; | head -1) if [ -z "$BUILDER_DIR" ]; then BUILDER_DIR=$(find "$(pwd)" -path '*/skill_inspector/builder.py' -type f 2>/dev/null -exec dirname {} \; | head -1) fi echo "Builder found at: $BUILDER_DIR"
bashpython3 -c "import yaml" 2>/dev/null || pip3 install --user "PyYAML>=6.0"
Ask the user to describe what they want to build. Gather:
If the user is unsure, suggest one of these common patterns:
Based on the user's goal, design the skill tree using these node types. Read references/node-types.md for the full reference.
| Type | Use When | |------|----------| | executor | Agent takes action — writes files, generates content | | tool | External tool invocation — WebSearch, APIs, bash commands | | subagent | Spawn a dedicated sub-agent with its own context and tools | | context_loader | Dynamically inject context from files or URLs | | signal_gate | Gate on computed metrics with pass/fail thresholds | | improvement_loop | RALPH-style iterate until quality threshold met | | diverge | Fork into parallel branches for multi-angle analysis | | converge | Synthesize parallel outputs with a merge strategy | | router | Conditional branching based on computed values | | gate | Human approval checkpoint | | file_io | Read or write specific files |
Read references/patterns.md for orchestration pattern guidance.
Present the proposed tree to the user as a numbered phase list with node descriptions. Ask: "Does this structure look right? Any phases to add, remove, or reorder?"
Generate the Python builder code using the SkillTreeBuilder API:
pythonimport sys sys.path.insert(0, "$BUILDER_DIR/..") from skill_inspector.builder import SkillTreeBuilder from skill_inspector.emitter import emit_skill_md tree = SkillTreeBuilder("skill-name", "Description. Use when X, Y, or Z.") # Phase 1 p = tree.phase("Phase Name") p.executor("node-id", "What this step does") p.tool("tool-id", "Tool description", tools=["WebSearch"], commands=["..."]) p.subagent("agent-id", "Agent task", agent_type="Explore", tools=[...]) p.context_loader("ctx-id", "Load context", files=["..."]) p.signal_gate("gate-id", "Check metrics", criteria={"metric": ">= 0.7"}, on_fail="retry") p.improvement_loop("loop-id", "Improve output", strategy="ralph", max_iterations=5, exit_criteria={"quality": ">= 0.9"}, steps=["Reflect", "Analyze", "Learn", "Plan", "Hypothesize"]) p.diverge("fork-id", "Multiple perspectives", branches=[ {"id": "view-a", "label": "View A", "prompt": "..."}, {"id": "view-b", "label": "View B", "prompt": "..."}, ]) p.converge("join-id", "Synthesize results", strategy="weighted-merge") # Emit graph = tree.build() md = emit_skill_md(graph)
Run the generated code to produce the SKILL.md file.
Parse the generated SKILL.md through the existing parser to verify it round-trips:
bashpython3 -c " import sys, json sys.path.insert(0, '$BUILDER_DIR/..') from skill_inspector.parser import parse_skill result = parse_skill('$OUTPUT_PATH/SKILL.md') print(f'Nodes: {len(result[\"nodes\"])}, Edges: {len(result[\"edges\"])}') print(f'Pattern: {result[\"pattern\"]}') print(f'Quality: {result[\"quality\"][\"score\"]}/10') for issue in result['quality']['top_issues']: print(f' - {issue}') "
If quality score is below 7.0, review and fix the top issues.
Optionally generate the interactive visualization:
bashpython3 -c " import sys, json sys.path.insert(0, '$BUILDER_DIR/..') from skill_inspector.parser import parse_skill result = parse_skill('$OUTPUT_PATH/SKILL.md') payload = json.dumps({'generated_at': '$(date -Iseconds)', 'mode': 'standard', 'skills': [result]}) print(payload) " | python3 "$BUILDER_DIR/../skills/check-my-skills/scripts/build_report.py" -o "$OUTPUT_PATH/report.html"
Present the report and SKILL.md to the user.
Help the user install the new skill:
skills/ directorybashcp -r "$OUTPUT_PATH" "$(pwd)/skills/$(basename $OUTPUT_PATH)" echo "Skill installed at: $(pwd)/skills/$(basename $OUTPUT_PATH)"
If something goes wrong during execution, check these common issues:
Builder not found:
skill_inspector/ package must be importableGenerated SKILL.md has low quality score:
Parser fails on generated SKILL.md:
references/node-types.md — Full reference for all node types and their optionsreferences/patterns.md — Orchestration pattern guidance and examplesOther measured skills in the registry, with their headline benchmark lift.