Write Once. Distribute Everywhere
The only AI package manager with lossless cross-format conversion—publish in one format, install in eight.
The Problem Every Package Publisher Faces
You've built the perfect Cursor rule for React best practices. It took weeks to refine. Now developers using Claude Code, Continue, Windsurf, and Copilot want it too.
Your options:
- Maintain eight separate versions - Different repos, different formats, different update cycles
- Pick one format and tell others "sorry" - Lose 80% of potential users
- Copy-paste with manual tweaks - Introduce bugs, forget which version has which fix
- Give up on multi-platform support - Watch your package's reach plateau
None of these are good. All waste your time. And when AI tooling evolves monthly, the maintenance burden compounds.
PRPM solves this: Write your package once in any format. The registry handles conversion to all eight formats automatically. Users get the right format for their editor. You publish once.
How It Works: The Technical Reality
PRPM doesn't just transform text files. It performs lossless, semantically-aware conversions that preserve format-specific features while adapting to each platform's conventions.
Real Example: Cursor Multi-File Rules
Say you publish a Cursor rule that references multiple files with @file syntax:
---
description: React TypeScript best practices
globs:
- "**/*.tsx"
- "**/*.ts"
---
# React Component Standards
When creating components, reference @components/Button.tsx for the canonical
pattern. All components must follow @docs/architecture.md conventions.
Use TypeScript strict mode as defined in @tsconfig.json.What happens when a Claude Code user installs it:
prpm install @yourname/react-best-practices --as claude --subtype skillPRPM's converter:
- Recognizes the Cursor format - Parses YAML frontmatter and MDC content
- Extracts file references - Identifies
@components/Button.tsx,@docs/architecture.md,@tsconfig.json - Converts to Claude skill syntax - Transforms to Claude's frontmatter structure
- Preserves glob patterns - Maps Cursor's glob logic to Claude's
allowed-toolsif specified - Maintains semantic intent - The instruction about "canonical pattern" stays intact
- Generates valid output - Passes Claude's schema validation
The user gets a working Claude skill. You didn't write two versions. Zero maintenance burden.
Format Support: All Eight Major Platforms
PRPM supports every major AI coding platform, each with complete JSON schemas and validation:
| Format | File Location | Frontmatter | Key Features |
|---|---|---|---|
| Cursor | .cursor/rules | Required | 4 rule types, MDC format, @file references |
| Claude Code | .claude/{agents,skills,commands}/ | Required | allowed-tools, model selection, hooks |
| Continue | .continue/rules/*.md | Required | Globs, regex, alwaysApply logic |
| Windsurf | .windsurf/rules | None | Plain markdown, 12k character limit |
| GitHub Copilot | .github/copilot-instructions.md | Optional | Two-tier, comma-separated patterns |
| Kiro Steering | .kiro/steering/*.md | Optional | Inclusion modes, foundational types |
| Kiro Hooks | .kiro/hooks/*.json | N/A (JSON) | Event-driven file automations |
| agents.md | agents.md | None | Plain markdown only |
Each format has different conventions. PRPM knows them all.
Technical Excellence: Why Conversion Works
1. Lossless Transformation
PRPM's converters don't strip features—they map equivalent capabilities across formats.
Example: File Pattern Matching
- Cursor:
globs: ["**/*.tsx"] - Continue:
applyTo: { globs: ["**/*.tsx"] } - Copilot:
applyTo: "*.tsx, **/*.tsx" - Windsurf: (Frontmatter-free, embedded in content)
Same intent, different syntax. PRPM handles the translation.
2. Format-Specific Features Preserved
Some platforms have unique features. PRPM preserves them when possible:
Claude Code's allowed-tools:
---
name: "Safe Migration Assistant"
description: "Helps with migrations without file deletion"
allowed-tools:
- read_file
- write_file
---When converted to Cursor, this becomes a comment annotation so users understand the intended tool restrictions. When converted to Windsurf (which has no tool restrictions), it's documented in the content.
3. Round-Trip Safety
Convert Cursor → Claude → Cursor? You get the same result (minus format-specific metadata that has no equivalent). PRPM's test suite includes cross-format round-trip validation to catch regressions.
Real-World Scenario: Publishing a TypeScript Migration Package
Let's say you maintain Next.js and want to ship a package for the Pages Router → App Router migration.
Traditional Approach (Manual Multi-Format)
Week 1: Write the Cursor version
- Create
.cursorrulesfile - Test with Cursor IDE
- Publish to GitHub
Week 2: Port to Continue
- Rewrite frontmatter (different required fields)
- Adjust glob patterns (different syntax)
- Test with Continue
- Create separate repo or branch
Week 3: Port to Claude Code
- Rewrite as Claude skill
- Add
allowed-toolsrestrictions - Convert
@filereferences to plain text - Test with Claude
- Another repo or branch
Week 4: Port to Windsurf
- Strip frontmatter (Windsurf doesn't use it)
- Ensure under 12k character limit
- Test with Windsurf
- Yet another repo
Result: Four repos, four update cycles, constant sync issues. When you fix a bug in the Cursor version, you have to remember to update the other three.
PRPM Approach (Write Once)
Week 1: Write the package once in your preferred format (say, Cursor)
prpm init
# Edit .cursor/rules/nextjs-app-router-migration.md
prpm publish @nextjs/app-router-migrationThat's it.
Users install in their preferred format automatically:
# Cursor user
prpm install @nextjs/app-router-migration
# Claude user
prpm install @nextjs/app-router-migration --as claude --subtype skill
# Continue user
prpm install @nextjs/app-router-migration --as continue
# Windsurf user
prpm install @nextjs/app-router-migration --as windsurfPRPM converts on-the-fly. Every user gets a validated, working package. You maintain one version.
Developer Experience: What Publishers Get
1. Publish Once, Reach Everyone
7,000+ packages in PRPM. Most were written in a single format and converted to support all platforms. Package authors don't think about formats—PRPM does.
2. Automatic Schema Validation
Before publishing, PRPM validates against the source format's JSON schema. Before conversion, PRPM validates against the target format's schema. Users never get broken packages.
$ prpm publish
✓ Validating against cursor.schema.json
✓ Testing conversions (claude-skill, continue-prompt, windsurf-rule...)
✓ Published @yourname/package@1.0.03. Future-Proof
New AI editor launches? PRPM adds conversion support. Your existing package automatically works with it. No republish needed.
Real example: When Claude Code launched hooks support in November 2024, PRPM added claude-hook conversion. Every existing package with equivalent automation became compatible retroactively.
4. Analytics Across Formats
PRPM tracks downloads by format:
@yourname/package downloads (last 30 days):
- cursor: 450
- claude-skill: 320
- continue-prompt: 180
- windsurf-rule: 120
- copilot-instruction: 90You see which platforms your users prefer. No need to maintain separate analytics per repo.
Getting Started as a Publisher
Step 1: Create Your Package
Write in your preferred format:
mkdir my-package
cd my-package
prpm init
# Choose your format:
# 1. Cursor (MDC with YAML frontmatter)
# 2. Claude (skill/agent/command)
# 3. Continue (prompt with frontmatter)
# ... or any other
# Edit the generated fileStep 2: Test Locally
# Test conversion to all formats
prpm convert --input=.cursor/rules/main.md --validate-all
✓ cursor: valid
✓ claude-skill: valid
✓ continue-prompt: valid
✓ windsurf-rule: valid
✓ copilot-instruction: validStep 3: Publish
# One command, all formats supported
prpm publish
✓ Published @yourname/my-package@1.0.0
Supports: cursor, claude-skill, claude-agent, continue-prompt,
windsurf-rule, copilot-instruction, kiro-steering, agents-mdStep 4: Monitor Analytics
prpm stats @yourname/my-package
Downloads by format:
cursor: ████████████ 450
claude-skill: ████████ 320
continue-prompt: █████ 180
...
Total downloads: 1,240Why This Matters for the Ecosystem
For Package Authors
- 10x reach with same effort (one package, eight platforms)
- Zero maintenance burden from format differences
- Future-proof against new editors launching
For Package Users
- More packages available for their preferred editor
- Guaranteed compatibility (schema-validated conversions)
- Consistent updates (author publishes once, everyone benefits)
For the AI Coding Community
- Knowledge sharing accelerates - Best practices spread across platforms
- Fragmentation reduces - No more "this only works in Cursor"
- Innovation compounds - Authors focus on content quality, not format maintenance
Call to Action: Publish Your First Package
Ready to reach developers across all AI coding platforms?
# Install PRPM
npm install -g prpm
# Create your package
prpm init
# Publish once
prpm publish @yourname/package
# Reach everyoneYour package will work in Cursor, Claude, Continue, Windsurf, Copilot, Kiro, agents.md, and every future platform PRPM supports.
Write once. Distribute everywhere.
Additional Resources
- Format Specifications Guide - Complete reference for all eight formats
- JSON Schemas for AI Prompts - Deep dive on PRPM's validation system
- Publishing Documentation - Step-by-step publishing guide