Contributing Guide
Relevant source files
The following files were used as context for generating this wiki page: - [CONTRIBUTING.md](https://github.com/pr-pm/prpm/blob/HEAD/CONTRIBUTING.md) - [DOCUMENTATION_MAP.md](https://github.com/pr-pm/prpm/blob/HEAD/DOCUMENTATION_MAP.md) - [packages/webapp/src/app/blog/openskills-cross-ide-compatibility/page.tsx](https://github.com/pr-pm/prpm/blob/HEAD/packages/webapp/src/app/blog/openskills-cross-ide-compatibility/page.tsx) - [packages/webapp/public/legal/ACCEPTABLE_USE_POLICY.md](https://github.com/pr-pm/prpm/blob/HEAD/packages/webapp/public/legal/ACCEPTABLE_USE_POLICY.md) - [packages/converters/schemas/README.md](https://github.com/pr-pm/prpm/blob/HEAD/packages/converters/schemas/README.md) - [packages/webapp/src/app/blog/prpm-complete-feature-guide/page.tsx](https://github.com/pr-pm/prpm/blob/HEAD/packages/webapp/src/app/blog/prpm-complete-feature-guide/page.tsx) - [AGENTS.md](https://github.com/pr-pm/prpm/blob/HEAD/AGENTS.md) - [CLAUDE.md](https://github.com/pr-pm/prpm/blob/HEAD/CLAUDE.md) - [packages/webapp/src/app/blog/agents-md-deep-dive/page.tsx](https://github.com/pr-pm/prpm/blob/HEAD/packages/webapp/src/app/blog/agents-md-deep-dive/page.tsx)This guide provides instructions for contributing to the Prompt Package Manager (PRPM) project. Contributions can range from submitting new packages and creating collections to improving the core codebase and writing documentation.
Sources: CONTRIBUTING.md:3-4
Ways to Contribute
There are four primary ways to contribute to the PRPM ecosystem.
Sources: CONTRIBUTING.md:6-7
1. Submit Packages
The most common way to contribute is by sharing your AI prompts, rules, skills, or agents with the community. PRPM supports a wide variety of formats from different AI IDEs.
Sources: CONTRIBUTING.md:9-11, packages/webapp/src/app/blog/write-once-distribute-everywhere/page.tsx:21-23
Quick Start for Publishing
The following diagram shows the high-level steps to publish a package.
Sources: CONTRIBUTING.md:14-20
The commands are as follows:
# Install PRPM
npm install -g prpm
# Login to the registry
prpm login
# Publish your package
prpm publish
Sources: CONTRIBUTING.md:15-20
Package Structure
Each package requires a package.prpm.json manifest file to define its metadata.
{
"name": "my-awesome-rule",
"version": "1.0.0",
"description": "A helpful Cursor rule for...",
"type": "cursor",
"category": "code-quality",
"tags": ["typescript", "testing", "best-practices"],
"author": "your-username",
"license": "MIT",
"content": "./rule.md"
}
Sources: CONTRIBUTING.md:24-36
Supported Types and Categories
PRPM supports multiple package types and has a defined set of categories for organization.
| Type | Description |
|---|---|
cursor | Cursor IDE rules (.cursorrules) |
agent | Claude Code agents |
skill | Claude skills |
continue | Continue prompts |
windsurf | Windsurf rules |
mcp | MCP servers |
| Category | Description |
|---|---|
code-quality | Linting, formatting, best practices |
testing | TDD, test patterns, coverage |
debugging | Systematic debugging workflows |
architecture | Design patterns, system design |
security | Security best practices |
performance | Optimization techniques |
documentation | Doc generation, comments |
framework | Framework-specific (React, Next.js, etc.) |
general | General-purpose prompts |
Sources: CONTRIBUTING.md:38-58
2. Create Collections
Collections allow you to bundle related packages into a single, installable unit for complete workflow setups.
Sources: CONTRIBUTING.md:60-62
Example collection.prpm.json:
{
"scope": "@collection",
"id": "nextjs-pro",
"name": "Next.js Professional Setup",
"version": "1.0.0",
"description": "Complete Next.js development environment",
"category": "frontend",
"packages": [
{
"id": "react-best-practices",
"version": "^1.0.0",
"required": true
},
{
"id": "typescript-strict",
"version": "^1.0.0",
"required": true
},
{
"id": "tailwind-helper",
"version": "^1.0.0",
"required": false
}
]
}
Sources: CONTRIBUTING.md:66-89
3. Improve Core Code
Contributions to the core PRPM CLI, registry, or format converters are welcome. This requires setting up the local development environment.
Sources: CONTRIBUTING.md:91-93
Development Setup
The following diagram outlines the local development setup process.
Sources: CONTRIBUTING.md:96-109
The setup commands are:
# Clone the repository
git clone https://github.com/pr-pm/prpm.git
cd prompt-package-manager
# Install dependencies
npm install
# Build all packages
npm run build
# Start Docker services (PostgreSQL, Redis, MinIO)
docker compose up -d
# Run tests
npm test
# Start development
npm run dev:cli # CLI development
npm run dev:registry # Registry server
Sources: CONTRIBUTING.md:97-109
Project Structure
The monorepo is organized into several key packages.
This diagram shows the main directories within the prompt-package-manager repository.
Sources: CONTRIBUTING.md:154-162
4. Write Documentation
Improving guides, examples, and API documentation is a valuable contribution. You can find a map of the documentation structure in DOCUMENTATION_MAP.md.
Sources: CONTRIBUTING.md:164-170, DOCUMENTATION_MAP.md
Tool Composition: OpenSkills and Ruler
PRPM leverages a composition pattern with OpenSkills and Ruler to achieve cross-IDE compatibility without requiring native support for every format. This approach splices portable skill content into a universal AGENTS.md file.
Sources: CONTRIBUTING.md:111-114, packages/webapp/src/app/blog/openskills-cross-ide-compatibility/page.tsx:40-46
The workflow is as follows:
- Generate/Acquire Content: Get OpenSkills content, which is markdown with lightweight frontmatter.
- Save to Ruler Directory: Place the content in a
.ruler/directory (e.g.,.ruler/openskills.md). - Splice with Ruler: Ruler automatically combines all
.ruler/*.mdfiles into a singleAGENTS.mdfile. - Universal Compatibility: The resulting
AGENTS.mdworks in any tool that supports this open standard, such as Cursor, Windsurf, and Continue.
This diagram illustrates the composition pattern.
Testing Guidelines
The project has specific commands for running different test suites.
- CLI Tests:
cd packages/cli && npm test - Registry Tests:
cd packages/registry && npm test - E2E Tests:
docker compose up -d(from project root)cd packages/registry && npm run migratenpm run test:e2e(from project root)
Sources: CONTRIBUTING.md:174-189
Code Quality and Standards
Naming Conventions
| Element | Convention | Example |
|---|---|---|
| Files | kebab-case | install-command.ts |
| Classes | PascalCase | PackageManager |
| Functions | camelCase | installPackage |
| Constants | UPPER_SNAKE_CASE | DEFAULT_REGISTRY |
Sources: CONTRIBUTING.md:197-203
Commit Messages
Commit messages must follow the conventional commits specification.
feat: add collections support to CLI
fix: resolve package conflict errors
docs: update installation guide
test: add E2E tests for search
chore: update dependencies
Sources: CONTRIBUTING.md:205-212
Package Submission and Review
Quality Standards
| ✅ Good Package | ❌ Rejected Package |
|---|---|
| Clear, descriptive name | Malicious code |
| Helpful description | Copyright violations |
| Proper categorization | Duplicate submissions |
| Tested and working | Spam or low-quality |
| Well-documented | Offensive content |
| Appropriate license |
Sources: CONTRIBUTING.md:219-231, [packages/webapp/public/legal/ACCEPTABLE_USE_POLICY.md:121-137]
Review Process
The package review process involves automated checks and manual review before a package is published to the registry.
This diagram shows the package review flow.
Sources: CONTRIBUTING.md:233-240
Security
Security is a critical aspect of the project. Vulnerabilities must be reported privately.
- Reporting: Report vulnerabilities privately to
security@prpm.dev. - Prohibited Actions: Do not commit API keys or secrets, expose user data, include malicious code, or violate package licenses.
Sources: CONTRIBUTING.md:214-217, [packages/webapp/public/legal/ACCEPTABLE_USE_POLICY.md:211-214]
Getting Help
For questions, bug reports, or discussions, use the following channels:
- GitHub Issues: For bug reports and feature requests.
- Discussions: For questions, ideas, and community chat.
- Twitter: @prpmdev for updates.
- Email:
support@prpm.devfor support.
Sources: CONTRIBUTING.md:251-256