Summary
I'd like to propose a backwards-compatible extension to OpenClaw's skill system that enables skill composition: the ability for skills to declare dependencies on other skills, expose typed interfaces, and compose into higher-order capabilities.
Problem
Today, skills are flat and isolated. There's no mechanism for:
- Skill dependencies — a
video-narrator skill can't declare it needs video-frames + TTS
- Shared capabilities — multiple skills duplicate overlapping instructions (context window waste)
- Skill extension — no way to create a specialized variant without forking
- Conditional composition — no way to say "if TTS is available, add voice output"
As the skill ecosystem grows (50+ bundled, ClawHub registry), this becomes increasingly painful.
Proposed Solution
New optional frontmatter fields in SKILL.md (all additive, zero breaking changes):
requires.skills / optionalSkills — hard and soft skill dependencies
provides / requires.interfaces — abstract capability interfaces (tts, camera, etc.)
extends — single-inheritance skill extension
mixins — lightweight composable instruction fragments
- Conditional sections via HTML comments:
<!-- @if-skill sag --> (backwards-compatible, ignored by non-OpenClaw consumers)
Resolution happens at prompt-build time (no runtime changes). Topological sort with cycle detection and depth caps.
Full RFC
I've written a detailed RFC with:
- Complete specification for all new fields
- Dependency resolution algorithm
- 4 concrete examples using existing skills
- Token budget analysis
- Migration plan (3 phases)
- Backwards compatibility guarantees
Happy to share the full document or submit a PR with implementation. Would love feedback from maintainers on whether this direction aligns with OpenClaw's roadmap.
Implementation
I'm working on a TypeScript implementation that modifies the skill-scanner to support these new fields. PR incoming if there's interest.
cc @openclaw/maintainers
Summary
I'd like to propose a backwards-compatible extension to OpenClaw's skill system that enables skill composition: the ability for skills to declare dependencies on other skills, expose typed interfaces, and compose into higher-order capabilities.
Problem
Today, skills are flat and isolated. There's no mechanism for:
video-narratorskill can't declare it needsvideo-frames+ TTSAs the skill ecosystem grows (50+ bundled, ClawHub registry), this becomes increasingly painful.
Proposed Solution
New optional frontmatter fields in SKILL.md (all additive, zero breaking changes):
requires.skills/optionalSkills— hard and soft skill dependenciesprovides/requires.interfaces— abstract capability interfaces (tts, camera, etc.)extends— single-inheritance skill extensionmixins— lightweight composable instruction fragments<!-- @if-skill sag -->(backwards-compatible, ignored by non-OpenClaw consumers)Resolution happens at prompt-build time (no runtime changes). Topological sort with cycle detection and depth caps.
Full RFC
I've written a detailed RFC with:
Happy to share the full document or submit a PR with implementation. Would love feedback from maintainers on whether this direction aligns with OpenClaw's roadmap.
Implementation
I'm working on a TypeScript implementation that modifies the skill-scanner to support these new fields. PR incoming if there's interest.
cc @openclaw/maintainers