Back to Blog
TechnicalTool CompositionOpenSkillsRuler

Tool Composition is Your AI Superpower

Why OpenSkills + Ruler beats native format support

By PRPM TeamNovember 20, 20258 min read
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

  1. Generate OpenSkills content (from Claude Code, PRPM packages, or write your own)
  2. Save it to .ruler/openskills.md
  3. Ruler automatically splices all .ruler/*.md files into AGENTS.md
  4. 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.md

Ruler 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.md works 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 name and description
  • 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 compatibility

It'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 content

Step 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 conventions

Step 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.md natively
  • 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.