Tool Composition is Your AI Superpower
Why OpenSkills + Ruler beats native format support
The AI tooling landscape moves too fast to support everything natively. But composing tools? That's how you build superpowers.
New AI editors launch every week. Formats evolve daily. Cursor rules, Claude skills, Continue prompts, Windsurf cascades, Kiro steering, agents.md, OpenSkills—the list grows faster than any package manager can keep up.
We could play whack-a-mole adding native support for each format. Or we could get smarter about composition.
Here's what we discovered: OpenSkills content + Ruler pipeline = universal compatibility across every IDE. No native format support needed. Just two specialized tools working together.
The Discovery
Instead of adding OpenSkills as a native format in PRPM (more code to maintain, more conversions to test, more edge cases to debug), we found a better path.
The Composition Workflow
- Generate OpenSkills content (from Claude Code, PRPM packages, or write your own)
- Save it to
.ruler/openskills.md - Ruler automatically splices all
.ruler/*.mdfiles intoAGENTS.md - Boom—that OpenSkills content now works in any tool that reads
agents.md: Cursor, Windsurf, Continue, future editors
No native PRPM support for OpenSkills needed. No format converters. No special installation logic. Just two tools composing elegantly.
What is Ruler?
Ruler is a beautifully simple tool: it combines plain markdown files from your .ruler/ directory and automatically splices them into AGENTS.md.
How Ruler Works
Drop any markdown file into .ruler/:
.ruler/
├── typescript-conventions.md
├── api-design-patterns.md
├── openskills-content.md
└── custom-instructions.mdRuler reads all of them, splices them together with proper markdown formatting, and outputs a single AGENTS.md file.
That AGENTS.md is now readable by any AI editor that supports the agents.md format: Cursor, Windsurf, Continue, and future tools.
Why This is Genius
- Simple, focused tool: Ruler does one thing (splice markdown) and does it perfectly
- Universal output:
AGENTS.mdworks across all major AI editors - Composable: Works with content from anywhere—OpenSkills, Claude skills, hand-written markdown, PRPM packages
- No lock-in: If Ruler disappears tomorrow, you still have plain markdown files
What is OpenSkills?
OpenSkills is a minimal skill format from the Claude Code ecosystem. The spec is beautifully simple:
- Markdown content with instructions and guidelines
- YAML frontmatter with just
nameanddescription - That's it—no complex schema, no tool specifications
---
name: refactor-helper
description: Assists with code refactoring
---
# Refactor Helper
Helps refactor code while maintaining functionality.
## Guidelines
- Preserve existing behavior
- Improve code structure and readability
- Update tests accordingly
- Maintain backward compatibilityIt's essentially a subset of Claude skills format: same structure, same install location (.claude/skills/), but minimal frontmatter.
The Composition: OpenSkills + Ruler
Here's how the pieces fit together to create universal compatibility:
Step 1: Generate OpenSkills Content
Run OpenSkills sync to generate content:
# OpenSkills generates content and adds it to AGENTS.md
npx openskills sync
# This creates/updates AGENTS.md with OpenSkills-generated contentStep 2: Extract to Ruler Directory
Take the OpenSkills-generated content from AGENTS.md and save it to a separate file in .ruler/:
# Extract OpenSkills content to Ruler directory
# (manually copy the OpenSkills section from AGENTS.md)
# Save as .ruler/openskills.md
# Now you can manage it alongside other rules
.ruler/
├── openskills.md # From OpenSkills sync
├── typescript-rules.md # Your custom rules
└── api-conventions.md # Team conventionsStep 3: Ruler Manages Everything
Ruler reads all .ruler/*.md files (including your extracted OpenSkills content) and combines them:
# Ruler output: AGENTS.md
<!-- Source: .ruler/openskills.md -->
# OpenSkills Content
[Content from OpenSkills sync]
<!-- Source: .ruler/typescript-rules.md -->
# TypeScript Rules
[Your custom TypeScript conventions]
<!-- Source: .ruler/api-conventions.md -->
# API Conventions
[Your team's API guidelines]Step 4: Universal Compatibility
Now that AGENTS.md works in:
- Cursor: Reads
AGENTS.mdnatively - Windsurf: Supports agents.md format
- Continue: Can read agents.md
- Future AI editors: Any tool that supports agents.md (and many will)
You just made OpenSkills content work everywhere without PRPM needing native OpenSkills support.
Why Composition Beats Native Integration
1. Things Are Moving FAST
New AI editors launch weekly. Formats evolve daily. Building native support for every format means:
- Endless format converters to write and maintain
- Test coverage for every format × every conversion path
- Breaking changes when formats evolve
- Constant catch-up with new tools
That's exhausting and unsustainable.
2. Composition Scales Infinitely
Instead of PRPM supporting OpenSkills natively, we compose:
- PRPM handles package distribution and Claude format (the superset)
- Ruler handles markdown splicing and universal output
- OpenSkills content (which is compatible with Claude format) flows through both
Each tool does one thing well. Compose them, and you get superpowers.
3. Interoperability > Native Integration
The Unix philosophy: build small, focused tools that work well together. Apply it to AI tooling:
- Ruler doesn't care where markdown comes from (Claude, OpenSkills, hand-written)
- PRPM doesn't care where packages get consumed (Ruler, direct install, manual copy)
- OpenSkills doesn't care what splices it into agents.md (Ruler, custom scripts, manual)
Loose coupling. Maximum flexibility. Composable power.
The Meta Lesson
This isn't just about OpenSkills and Ruler. It's a mindset shift for how we think about AI tooling.
Stop Building Everything
When a new format or tool emerges, ask:
- Can we compose existing tools instead of building native support?
- Is there a specialized tool that already does this well?
- Can we bridge formats with minimal glue code instead of full converters?
- Does this tool play well with others, or does it demand lock-in?
Favor Composability
Build tools that:
- Accept standard inputs (plain text, markdown, JSON)
- Produce standard outputs (markdown, JSON, files)
- Don't assume what comes before or after them
- Work equally well in pipelines or standalone
Ruler is a perfect example: it doesn't care if you're using PRPM, Claude, OpenSkills, or hand-written markdown. It just splices .ruler/*.md into AGENTS.md. Beautifully focused. Infinitely composable.
Practical Workflow Summary
Here's the complete end-to-end workflow:
# 1. Generate OpenSkills content
npx openskills sync
# This creates/updates AGENTS.md with OpenSkills-generated content
# 2. Extract OpenSkills content to Ruler directory
# (manually copy the OpenSkills section from AGENTS.md)
# Save to .ruler/openskills.md
# 3. Add your own custom instructions alongside it
echo "# TypeScript Conventions\n\n..." > .ruler/typescript.md
echo "# API Patterns\n\n..." > .ruler/api-patterns.md
# 4. Ruler manages everything together
# Your .ruler/ directory now has:
# - openskills.md (from OpenSkills sync)
# - typescript.md (your custom rules)
# - api-patterns.md (team conventions)
# 5. Ruler splices all .ruler/*.md files into AGENTS.md
# Install Ruler: https://okigu.com/ruler
# 6. Now your composed content works in:
# - Cursor (reads AGENTS.md)
# - Windsurf (reads AGENTS.md)
# - Continue (reads AGENTS.md)
# - Any future tool that supports agents.md
# No native OpenSkills support needed in PRPM.
# Just tool composition.What Other Tool Combinations Unlock Superpowers?
OpenSkills + Ruler is just one example. The AI tooling ecosystem is full of specialized, well-designed tools waiting to be composed.
Think about combinations like:
- PRPM + Git hooks: Auto-sync packages across team via git
- Claude skills + Continue prompts: Cross-pollinate best practices
- Ruler + Custom scripts: Dynamic agents.md generation based on project context
- PRPM + CI/CD: Automated package publishing from monorepos
The future of AI tooling isn't one universal format or one mega-tool that does everything. It's specialized tools that compose elegantly together.
Composition is the superpower.
Try It Yourself
Install PRPM, grab Ruler, and start composing tools. Discover your own superpower combinations.