Monorepo Structure
Relevant source files
The following files were used as context for generating this wiki page:
- packages/webapp/package.json
- packages/cli/package.json
- packages/converters/package.json
- packages/registry/package.json
- packages/webapp/src/app/blog/format-specifications-guide/page.tsx
- packages/webapp/src/app/blog/json-schemas-for-ai-prompts/page.tsx
- packages/webapp/src/app/blog/prpm-complete-feature-guide/page.tsx
- packages/converters/schemas/README.md
- public-documentation/mint.json
- packages/webapp/src/app/blog/agents-md-deep-dive/page.tsx
- packages/webapp/src/app/blog/distributable-intelligence/page.tsx
The prpm project is organized as a monorepo, a single repository containing multiple distinct packages. This structure facilitates code sharing, centralized dependency management, and streamlined development across its different components, such as the command-line interface (CLI), the web application, and the core format conversion logic. The primary goal is to provide a universal package manager for AI coding assistants, allowing users to "install once, use anywhere."
The monorepo contains several key packages, each with a specific responsibility, that work together to deliver the full prpm platform. This includes tools for package discovery, testing, publishing, and management of AI coding tool configurations.
Sources: packages/webapp/src/app/blog/prpm-complete-feature-guide/page.tsx:28-48, packages/webapp/src/app/blog/distributable-intelligence/page.tsx:29-32
High-Level Package Overview
The repository is divided into several scoped packages under the @pr-pm namespace. These packages represent the main functional units of the prpm ecosystem.
The diagram below illustrates the core packages within the monorepo and their primary roles.
Core Packages
The main components of the prpm project are organized into the following packages:
| Package Name | Description | Source File |
|---|---|---|
@pr-pm/cli | The command-line interface for interacting with the prpm ecosystem. It handles commands like install, search, publish, and playground. | packages/cli/package.json |
@pr-pm/converters | Contains the core logic for converting between the 15+ supported AI prompt formats. It also houses the JSON schemas for validation. | packages/converters/package.json |
@pr-pm/registry | Represents the backend and data layer for the package registry, which hosts over 7,500 packages. | packages/registry/package.json |
@pr-pm/webapp | The Next.js-based web application, providing a searchable interface for packages, collections, a testing playground, and author analytics. | packages/webapp/package.json |
public-documentation | Contains the configuration and content for the official documentation website, built with Mintlify. | public-documentation/mint.json |
Sources: packages/webapp/src/app/blog/prpm-complete-feature-guide/page.tsx:50-52, 100-103, packages/webapp/src/app/blog/json-schemas-for-ai-prompts/page.tsx:30-33, public-documentation/mint.json:2
Detailed Package Breakdown
@pr-pm/cli
The CLI is the primary entry point for developers using prpm from their terminal. It provides a familiar package manager experience.
Key Commands:
prpm install [package]: Installs a package, automatically converting it to the format required by the detected AI editor (e.g., Cursor, Claude, Continue).prpm search "[query]": Performs a keyword search across the registry.prpm ai-search "[description]": Uses semantic search to find packages based on user intent.prpm playground --package [package]: Allows testing packages with real AI models directly from the CLI.prpm publish: Publishes a package to theprpmregistry.
Sources: packages/webapp/src/app/blog/prpm-complete-feature-guide/page.tsx:44-46, 64-70, 100-103, 142-157
@pr-pm/converters
This package is the engine behind prpm's "install once, use anywhere" philosophy. It is responsible for the validation and conversion of prompt formats.
Core Components:
- Format Converters: Logic to translate between different AI prompt formats, such as Cursor, Claude,
agents.md, and GitHub Copilot. - JSON Schemas: A collection of schema files that define the structure, required fields, and validation rules for each supported format and its subtypes. These are located in
packages/converters/schemas/. - Validation Logic: Functions that use the JSON schemas to validate prompt files during publishing and conversion, ensuring correctness.
The conversion process is schema-driven, ensuring that any output is valid for the target format.
The following diagram shows the conversion flow when a user installs a package.
Supported Formats
The converters package supports a wide range of formats, enabling interoperability between different AI coding assistants.
| Format | File Location Example | Frontmatter |
|---|---|---|
| Cursor | .cursor/rules | Required |
| Claude Code | .claude/{agents,skills,commands}/ | Required |
| Continue | .continue/rules/*.md | Required |
| Windsurf | .windsurf/rules | None |
| GitHub Copilot | .github/copilot-instructions.md | Optional |
| Kiro Steering | .kiro/steering/*.md | Optional |
| agents.md | agents.md | None |
Source: packages/webapp/src/app/blog/format-specifications-guide/page.tsx:128-183
@pr-pm/webapp
The webapp serves as the graphical interface to the prpm ecosystem. It's a Next.js application that provides:
- Package and Collection Browsing: A searchable registry of all available packages.
- Playground: An interactive environment to test prompts with various AI models (e.g., Claude Sonnet 3.5, GPT-4) before installation.
- Author Analytics: Dashboards for package publishers to track downloads, views, and playground usage.
- Blog and Documentation: The webapp also hosts the project's blog, which contains deep dives and guides on various formats and features. The blog content is located within the
packages/webapp/src/app/blog/directory.
Sources: packages/webapp/package.json:2, 17-20, packages/webapp/src/app/blog/prpm-complete-feature-guide/pagetsx:100-110, 126-129
public-documentation
This directory contains the source for the official prpm documentation, which is built using Mintlify. The structure of the documentation is defined in mint.json.
The diagram below shows the navigation structure of the documentation site.
This is a snippet from the mint.json file defining the navigation:
{
"navigation": [
{
"group": "Get Started",
"pages": [
"introduction",
"quickstart",
"installation"
]
},
{
"group": "API Reference",
"pages": [
"api/overview",
"api/schemas",
"api/formats"
]
},
{
"group": "Core Concepts",
"pages": [
"concepts/packages",
"concepts/collections",
"concepts/formats",
"concepts/schemas"
]
}
]
}
Source: public-documentation/mint.json:30-73
Summary
The prpm monorepo is strategically structured to support its mission of creating a universal, interoperable ecosystem for AI coding assistance. By separating concerns into distinct packages like @pr-pm/cli, @pr-pm/converters, and @pr-pm/webapp, the project can be developed, tested, and scaled efficiently. The inclusion of comprehensive JSON schemas and a dedicated documentation package underscores a commitment to developer experience, validation, and clarity. This modular architecture is fundamental to prpm's ability to manage and convert a growing number of AI prompt formats seamlessly.
Sources: packages/webapp/src/app/blog/distributable-intelligence/page.tsx:29-45, packages/webapp/src/app/blog/json-schemas-for-ai-prompts/page.tsx:28-40