prpm 1.2.1 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/README.md +90 -862
  2. package/dist/index.js +24163 -65
  3. package/dist/schemas/agents-md.schema.json +24 -0
  4. package/dist/schemas/aider.schema.json +24 -0
  5. package/dist/schemas/canonical.schema.json +435 -0
  6. package/dist/schemas/claude-agent.schema.json +62 -0
  7. package/dist/schemas/claude-hook.schema.json +70 -0
  8. package/dist/schemas/claude-plugin.schema.json +122 -0
  9. package/dist/schemas/claude-skill.schema.json +51 -0
  10. package/dist/schemas/claude-slash-command.schema.json +77 -0
  11. package/dist/schemas/claude.schema.json +52 -0
  12. package/dist/schemas/continue.schema.json +98 -0
  13. package/dist/schemas/copilot.schema.json +76 -0
  14. package/dist/schemas/cursor-command.schema.json +27 -0
  15. package/dist/schemas/cursor-hooks.schema.json +59 -0
  16. package/dist/schemas/cursor.schema.json +74 -0
  17. package/dist/schemas/droid-hook.schema.json +103 -0
  18. package/dist/schemas/droid-skill.schema.json +46 -0
  19. package/dist/schemas/droid-slash-command.schema.json +53 -0
  20. package/dist/schemas/droid.schema.json +46 -0
  21. package/dist/schemas/format-capabilities.schema.json +101 -0
  22. package/dist/schemas/format-registry.schema.json +99 -0
  23. package/dist/schemas/gemini-extension.schema.json +77 -0
  24. package/dist/schemas/gemini-md.schema.json +24 -0
  25. package/dist/schemas/gemini.schema.json +30 -0
  26. package/dist/schemas/kiro-agent.schema.json +146 -0
  27. package/dist/schemas/kiro-hook.schema.json +165 -0
  28. package/dist/schemas/kiro-steering.schema.json +74 -0
  29. package/dist/schemas/mcp-server.schema.json +130 -0
  30. package/dist/schemas/opencode-plugin.schema.json +391 -0
  31. package/dist/schemas/opencode-slash-command.schema.json +60 -0
  32. package/dist/schemas/opencode.schema.json +111 -0
  33. package/dist/schemas/prpm-manifest.schema.json +758 -0
  34. package/dist/schemas/replit.schema.json +21 -0
  35. package/dist/schemas/ruler.schema.json +22 -0
  36. package/dist/schemas/trae.schema.json +24 -0
  37. package/dist/schemas/windsurf.schema.json +22 -0
  38. package/dist/schemas/zed-extension.schema.json +238 -0
  39. package/dist/schemas/zed.schema.json +44 -0
  40. package/dist/schemas/zencoder.schema.json +51 -0
  41. package/package.json +20 -14
  42. package/schemas/prpm-manifest.schema.json +490 -39
  43. package/dist/__tests__/e2e/test-helpers.js +0 -150
  44. package/dist/commands/collections.js +0 -606
  45. package/dist/commands/index.js +0 -186
  46. package/dist/commands/info.js +0 -82
  47. package/dist/commands/install.js +0 -477
  48. package/dist/commands/list.js +0 -166
  49. package/dist/commands/login.js +0 -281
  50. package/dist/commands/outdated.js +0 -128
  51. package/dist/commands/popular.js +0 -27
  52. package/dist/commands/publish.js +0 -274
  53. package/dist/commands/schema.js +0 -37
  54. package/dist/commands/search.js +0 -404
  55. package/dist/commands/telemetry.js +0 -103
  56. package/dist/commands/trending.js +0 -76
  57. package/dist/commands/uninstall.js +0 -77
  58. package/dist/commands/update.js +0 -121
  59. package/dist/commands/upgrade.js +0 -121
  60. package/dist/commands/whoami.js +0 -75
  61. package/dist/core/claude-config.js +0 -91
  62. package/dist/core/cursor-config.js +0 -130
  63. package/dist/core/downloader.js +0 -64
  64. package/dist/core/filesystem.js +0 -124
  65. package/dist/core/lockfile.js +0 -239
  66. package/dist/core/marketplace-converter.js +0 -198
  67. package/dist/core/registry-client.js +0 -265
  68. package/dist/core/schema-validator.js +0 -74
  69. package/dist/core/telemetry.js +0 -175
  70. package/dist/core/user-config.js +0 -79
  71. package/dist/types/registry.js +0 -5
  72. package/dist/types.js +0 -5
@@ -0,0 +1,122 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://registry.prpm.dev/api/v1/schemas/claude-plugin.json",
4
+ "$comment": "https://code.claude.com/docs/en/plugins",
5
+ "title": "Claude Plugin Format",
6
+ "description": "JSON Schema for Claude plugins - bundles of agents, skills, commands, and MCP server configurations",
7
+ "type": "object",
8
+ "required": ["name"],
9
+ "properties": {
10
+ "name": {
11
+ "type": "string",
12
+ "description": "Plugin identifier/slug (e.g., 'compounding-engineering')",
13
+ "pattern": "^[a-z0-9-]+$"
14
+ },
15
+ "version": {
16
+ "type": "string",
17
+ "description": "Semantic version (e.g., '1.0.0')",
18
+ "pattern": "^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.]+)?(\\+[a-zA-Z0-9.]+)?$"
19
+ },
20
+ "description": {
21
+ "type": "string",
22
+ "description": "Human-readable description of the plugin"
23
+ },
24
+ "author": {
25
+ "type": "string",
26
+ "description": "Author name and optional email (e.g., 'John Doe <john@example.com>')"
27
+ },
28
+ "license": {
29
+ "type": "string",
30
+ "description": "SPDX license identifier (e.g., 'MIT', 'Apache-2.0')"
31
+ },
32
+ "repository": {
33
+ "type": "string",
34
+ "format": "uri",
35
+ "description": "Repository URL"
36
+ },
37
+ "homepage": {
38
+ "type": "string",
39
+ "format": "uri",
40
+ "description": "Homepage URL"
41
+ },
42
+ "keywords": {
43
+ "type": "array",
44
+ "items": {
45
+ "type": "string"
46
+ },
47
+ "description": "Keywords for discovery"
48
+ },
49
+ "mcpServers": {
50
+ "type": "object",
51
+ "description": "MCP (Model Context Protocol) server configurations",
52
+ "additionalProperties": {
53
+ "type": "object",
54
+ "properties": {
55
+ "type": {
56
+ "type": "string",
57
+ "enum": ["stdio", "http", "sse"],
58
+ "description": "Server transport type"
59
+ },
60
+ "command": {
61
+ "type": "string",
62
+ "description": "Command to run for stdio servers (e.g., 'npx')"
63
+ },
64
+ "args": {
65
+ "type": "array",
66
+ "items": {
67
+ "type": "string"
68
+ },
69
+ "description": "Arguments for the command"
70
+ },
71
+ "url": {
72
+ "type": "string",
73
+ "format": "uri",
74
+ "description": "URL for http/sse servers"
75
+ },
76
+ "env": {
77
+ "type": "object",
78
+ "additionalProperties": {
79
+ "type": "string"
80
+ },
81
+ "description": "Environment variables for the server"
82
+ }
83
+ },
84
+ "oneOf": [
85
+ {
86
+ "required": ["command"],
87
+ "properties": {
88
+ "type": { "const": "stdio" }
89
+ }
90
+ },
91
+ {
92
+ "required": ["url"],
93
+ "properties": {
94
+ "type": { "enum": ["http", "sse"] }
95
+ }
96
+ }
97
+ ]
98
+ }
99
+ }
100
+ },
101
+ "examples": [
102
+ {
103
+ "name": "compounding-engineering",
104
+ "version": "2.8.1",
105
+ "description": "AI-powered development tools with agents, commands, and MCP servers",
106
+ "author": "Kieran Klaassen <kieran@every.to>",
107
+ "license": "MIT",
108
+ "keywords": ["ai-powered", "code-review", "playwright", "browser-automation"],
109
+ "mcpServers": {
110
+ "playwright": {
111
+ "type": "stdio",
112
+ "command": "npx",
113
+ "args": ["-y", "@playwright/mcp@latest"]
114
+ },
115
+ "context7": {
116
+ "type": "http",
117
+ "url": "https://mcp.context7.com/mcp"
118
+ }
119
+ }
120
+ }
121
+ ]
122
+ }
@@ -0,0 +1,51 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://registry.prpm.dev/api/v1/schemas/claude/skill.json",
4
+ "$comment": "https://code.claude.com/docs/en/skills",
5
+ "title": "Claude Skill Format",
6
+ "description": "JSON Schema for Claude Code Skills - reusable patterns invoked during conversation",
7
+ "type": "object",
8
+ "required": ["frontmatter", "content"],
9
+ "properties": {
10
+ "frontmatter": {
11
+ "type": "object",
12
+ "required": ["name", "description"],
13
+ "properties": {
14
+ "name": {
15
+ "type": "string",
16
+ "pattern": "^[a-z0-9-]+$",
17
+ "maxLength": 64,
18
+ "description": "Skill identifier (lowercase letters, numbers, hyphens only)"
19
+ },
20
+ "description": {
21
+ "type": "string",
22
+ "maxLength": 1024,
23
+ "description": "Brief overview of functionality and when to use it"
24
+ },
25
+ "license": {
26
+ "type": "string",
27
+ "maxLength": 128,
28
+ "description": "Optional license identifier for the skill (e.g., MIT, Apache-2.0)"
29
+ },
30
+ "allowed-tools": {
31
+ "type": "string",
32
+ "description": "Comma-separated list of tools the skill is allowed to use (e.g., 'Read, Edit, Bash')"
33
+ }
34
+ },
35
+ "additionalProperties": false
36
+ },
37
+ "content": {
38
+ "type": "string",
39
+ "description": "Markdown content with instructions and examples"
40
+ }
41
+ },
42
+ "examples": [
43
+ {
44
+ "frontmatter": {
45
+ "name": "refactor-helper",
46
+ "description": "Assists with code refactoring while maintaining functionality"
47
+ },
48
+ "content": "# Refactor Helper Skill\n\nHelps refactor code while maintaining functionality.\n\n## Guidelines\n\n- Preserve existing behavior\n- Improve code structure and readability"
49
+ }
50
+ ]
51
+ }
@@ -0,0 +1,77 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://registry.prpm.dev/api/v1/schemas/claude/slash-command.json",
4
+ "$comment": "https://code.claude.com/docs/en/slash-commands",
5
+ "title": "Claude Slash Command Format",
6
+ "description": "JSON Schema for Claude Code Slash Commands - quick actions triggered by /command-name",
7
+ "type": "object",
8
+ "required": ["frontmatter", "content"],
9
+ "properties": {
10
+ "frontmatter": {
11
+ "type": "object",
12
+ "properties": {
13
+ "allowed-tools": {
14
+ "type": "string",
15
+ "description": "List of tools the command can use (inherits from conversation if not specified)"
16
+ },
17
+ "argument-hint": {
18
+ "oneOf": [
19
+ {
20
+ "type": "string",
21
+ "description": "The arguments expected for the slash command as a string (e.g., 'add [tagId] | remove [tagId] | list')"
22
+ },
23
+ {
24
+ "type": "array",
25
+ "items": { "type": "string" },
26
+ "description": "The arguments expected for the slash command as an array of positional arguments (e.g., ['pr-number', 'priority', 'assignee'])"
27
+ }
28
+ ],
29
+ "description": "The arguments expected for the slash command. Can be a string or array of positional arguments. Shown when auto-completing the command."
30
+ },
31
+ "description": {
32
+ "type": "string",
33
+ "description": "Brief description of the command (defaults to first line from the prompt if not specified)"
34
+ },
35
+ "model": {
36
+ "type": "string",
37
+ "description": "Specific model string (inherits from conversation if not specified)"
38
+ },
39
+ "disable-model-invocation": {
40
+ "type": "boolean",
41
+ "description": "Whether to prevent SlashCommand tool from calling this command"
42
+ }
43
+ },
44
+ "additionalProperties": false
45
+ },
46
+ "content": {
47
+ "type": "string",
48
+ "description": "Markdown content with instructions for executing the command. Can include H1 title with emoji icon."
49
+ }
50
+ },
51
+ "examples": [
52
+ {
53
+ "frontmatter": {
54
+ "description": "Generate documentation for selected code",
55
+ "allowed-tools": "Read, Edit",
56
+ "model": "sonnet"
57
+ },
58
+ "content": "# 📝 Documentation Generator\n\nGenerate comprehensive documentation for the selected code.\n\n## Instructions\n\n- Analyze code structure and purpose\n- Generate clear, concise documentation\n- Follow JSDoc/TSDoc format for TypeScript"
59
+ },
60
+ {
61
+ "frontmatter": {
62
+ "description": "Manage tags for files",
63
+ "argument-hint": "add [tagId] | remove [tagId] | list",
64
+ "allowed-tools": "Read, Write"
65
+ },
66
+ "content": "# Tag Manager\n\nManage tags for project files.\n\n## Usage\n\n- `/tags add <tagId>` - Add a tag\n- `/tags remove <tagId>` - Remove a tag\n- `/tags list` - List all tags"
67
+ },
68
+ {
69
+ "frontmatter": {
70
+ "description": "Bulk build GitHub Actions for PRs",
71
+ "argument-hint": ["pr-number", "priority", "assignee"],
72
+ "allowed-tools": "Bash, Read"
73
+ },
74
+ "content": "# Bulk Build Actions\n\nBuild GitHub Actions for multiple PRs.\n\n## Arguments\n\n- `pr-number` - The PR number to build\n- `priority` - Build priority (high, normal, low)\n- `assignee` - Person responsible for the build"
75
+ }
76
+ ]
77
+ }
@@ -0,0 +1,52 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://registry.prpm.dev/api/v1/schemas/claude.json",
4
+ "$comment": "https://code.claude.com/docs/en",
5
+ "title": "Claude Code Format",
6
+ "description": "JSON Schema for Claude Code agents, skills, and slash commands format",
7
+ "type": "object",
8
+ "required": ["frontmatter", "content"],
9
+ "properties": {
10
+ "frontmatter": {
11
+ "type": "object",
12
+ "description": "YAML frontmatter enclosed in --- markers",
13
+ "required": ["name", "description"],
14
+ "properties": {
15
+ "name": {
16
+ "type": "string",
17
+ "description": "Identifier/slug for the agent/skill/command (e.g., 'code-reviewer', 'refactor-helper')"
18
+ },
19
+ "description": {
20
+ "type": "string",
21
+ "description": "Human-readable description of what this does"
22
+ },
23
+ "allowed-tools": {
24
+ "type": "string",
25
+ "description": "Comma-separated list of available tools (e.g., 'Read, Write, Bash, WebSearch')",
26
+ "pattern": "^[A-Za-z]+(,\\s*[A-Za-z]+)*$"
27
+ },
28
+ "model": {
29
+ "type": "string",
30
+ "enum": ["sonnet", "opus", "haiku", "inherit"],
31
+ "description": "Claude model to use for this agent"
32
+ }
33
+ },
34
+ "additionalProperties": false
35
+ },
36
+ "content": {
37
+ "type": "string",
38
+ "description": "Markdown content following the frontmatter. Should include H1 title (can include emoji icon), persona instructions, guidelines, examples, etc."
39
+ }
40
+ },
41
+ "examples": [
42
+ {
43
+ "frontmatter": {
44
+ "name": "code-reviewer",
45
+ "description": "Reviews code for best practices",
46
+ "allowed-tools": "Read, Grep, Bash",
47
+ "model": "sonnet"
48
+ },
49
+ "content": "# 🔍 Code Reviewer\n\nYou are an expert code reviewer.\n\n## Instructions\n\n- Check for code smells\n- Verify test coverage"
50
+ }
51
+ ]
52
+ }
@@ -0,0 +1,98 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://registry.prpm.dev/api/v1/schemas/continue.json",
4
+ "$comment": "https://docs.continue.dev/customize/deep-dives/rules",
5
+ "title": "Continue Rules Format",
6
+ "description": "JSON Schema for Continue rules format - markdown with optional YAML frontmatter or YAML configuration",
7
+ "type": "object",
8
+ "required": ["frontmatter", "content"],
9
+ "properties": {
10
+ "frontmatter": {
11
+ "type": "object",
12
+ "description": "YAML frontmatter for metadata and file matching",
13
+ "required": ["name"],
14
+ "properties": {
15
+ "name": {
16
+ "type": "string",
17
+ "description": "Display name/title for the rule (required)"
18
+ },
19
+ "description": {
20
+ "type": "string",
21
+ "description": "Description of when the rule should be used (agents may read this)"
22
+ },
23
+ "globs": {
24
+ "oneOf": [
25
+ {
26
+ "type": "string",
27
+ "description": "Single glob pattern to match files (e.g., '**/*.{ts,tsx}')"
28
+ },
29
+ {
30
+ "type": "array",
31
+ "items": {
32
+ "type": "string"
33
+ },
34
+ "description": "Array of glob patterns to match files"
35
+ }
36
+ ]
37
+ },
38
+ "regex": {
39
+ "oneOf": [
40
+ {
41
+ "type": "string",
42
+ "description": "Single regex pattern to match file content"
43
+ },
44
+ {
45
+ "type": "array",
46
+ "items": {
47
+ "type": "string"
48
+ },
49
+ "description": "Array of regex patterns to match file content"
50
+ }
51
+ ]
52
+ },
53
+ "alwaysApply": {
54
+ "type": "boolean",
55
+ "description": "Inclusion behavior: true = Always included. false = Included if globs match OR agent decides. undefined/omitted = Included if no globs specified OR globs match."
56
+ },
57
+ "version": {
58
+ "type": "string",
59
+ "description": "Rule version (for YAML format)"
60
+ },
61
+ "schema": {
62
+ "type": "string",
63
+ "description": "Schema version (for YAML format)"
64
+ }
65
+ }
66
+ },
67
+ "content": {
68
+ "type": "string",
69
+ "description": "Markdown content with rules and guidelines"
70
+ }
71
+ },
72
+ "examples": [
73
+ {
74
+ "frontmatter": {
75
+ "name": "General Guidelines"
76
+ },
77
+ "content": "# General Guidelines\n\n- Write clean code\n- Add tests"
78
+ },
79
+ {
80
+ "frontmatter": {
81
+ "name": "Documentation Standards",
82
+ "globs": "docs/**/*.{md,mdx}",
83
+ "alwaysApply": false,
84
+ "description": "Standards for writing and maintaining documentation"
85
+ },
86
+ "content": "# Documentation Standards\n\n## Structure\n\n- Follow consistent heading hierarchy"
87
+ },
88
+ {
89
+ "frontmatter": {
90
+ "name": "React Component Standards",
91
+ "regex": "^import React",
92
+ "globs": ["**/*.tsx", "**/*.jsx"],
93
+ "alwaysApply": false
94
+ },
95
+ "content": "# React Component Standards\n\n## Component Structure\n\n- Use functional components with hooks"
96
+ }
97
+ ]
98
+ }
@@ -0,0 +1,76 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://registry.prpm.dev/api/v1/schemas/copilot.json",
4
+ "$comment": "https://docs.github.com/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot",
5
+ "title": "GitHub Copilot Instructions Format",
6
+ "description": "JSON Schema for GitHub Copilot instructions (.github/copilot-instructions.md or .github/instructions/*.instructions.md)",
7
+ "type": "object",
8
+ "properties": {
9
+ "frontmatter": {
10
+ "type": "object",
11
+ "description": "Optional YAML frontmatter for path-specific instructions (required for path-specific files)",
12
+ "properties": {
13
+ "applyTo": {
14
+ "oneOf": [
15
+ {
16
+ "type": "string",
17
+ "description": "Single glob pattern or comma-separated patterns (e.g., 'app/models/**/*.rb' or '**/*.ts,**/*.tsx'). Use '**', '*', or '**/*' for all files."
18
+ },
19
+ {
20
+ "type": "array",
21
+ "description": "Multiple glob patterns as array",
22
+ "items": {
23
+ "type": "string"
24
+ }
25
+ }
26
+ ]
27
+ },
28
+ "excludeAgent": {
29
+ "type": "string",
30
+ "enum": ["code-review", "coding-agent"],
31
+ "description": "Prevent file from being used by specific agent. 'code-review': only used by coding agent. 'coding-agent': only used by code review."
32
+ },
33
+ "subtype": {
34
+ "type": "string",
35
+ "enum": ["rule", "tool", "chatmode"],
36
+ "description": "Type of Copilot instruction (PRPM extension)"
37
+ }
38
+ }
39
+ },
40
+ "content": {
41
+ "type": "string",
42
+ "description": "Natural language markdown instructions. Whitespace between instructions is ignored. Simple, clear, and actionable."
43
+ }
44
+ },
45
+ "required": ["content"],
46
+ "examples": [
47
+ {
48
+ "content": "# API Development Guidelines\n\nFollow REST best practices.\n\n## Principles\n\n- Use semantic HTTP methods\n- Return appropriate status codes"
49
+ },
50
+ {
51
+ "frontmatter": {
52
+ "applyTo": "app/models/**/*.rb"
53
+ },
54
+ "content": "# Model Guidelines\n\nThese rules apply only to Ruby model files."
55
+ },
56
+ {
57
+ "frontmatter": {
58
+ "applyTo": "**/*.ts,**/*.tsx"
59
+ },
60
+ "content": "# TypeScript Guidelines\n\nThese rules apply to all TypeScript files using comma-separated patterns."
61
+ },
62
+ {
63
+ "frontmatter": {
64
+ "applyTo": ["src/api/**/*.ts", "src/services/**/*.ts"]
65
+ },
66
+ "content": "# API Guidelines\n\nThese rules apply to API files using array of patterns."
67
+ },
68
+ {
69
+ "frontmatter": {
70
+ "applyTo": "**",
71
+ "excludeAgent": "code-review"
72
+ },
73
+ "content": "# Coding Agent Only\n\nThese instructions are only used by the Copilot coding agent, not code review."
74
+ }
75
+ ]
76
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://registry.prpm.dev/api/v1/schemas/cursor/command.json",
4
+ "$comment": "https://cursor.com/docs/agent/chat/commands#commands",
5
+ "title": "Cursor Command Format",
6
+ "description": "JSON Schema for Cursor commands (slash commands) - plain Markdown files in .cursor/commands/",
7
+ "type": "object",
8
+ "required": ["content"],
9
+ "properties": {
10
+ "content": {
11
+ "type": "string",
12
+ "description": "Plain Markdown content describing what the command should do. No frontmatter supported."
13
+ }
14
+ },
15
+ "additionalProperties": false,
16
+ "examples": [
17
+ {
18
+ "content": "# Review Code\n\nReview the selected code for:\n- Code quality and best practices\n- Potential bugs or edge cases\n- Performance improvements\n- Security vulnerabilities\n\nProvide specific, actionable feedback."
19
+ },
20
+ {
21
+ "content": "# Generate Tests\n\nGenerate comprehensive unit tests for the selected code.\n\nInclude:\n- Happy path test cases\n- Edge cases and error handling\n- Mock external dependencies\n- Follow existing test patterns in the project"
22
+ },
23
+ {
24
+ "content": "# Explain Code\n\nProvide a clear explanation of what the selected code does.\n\nInclude:\n- High-level purpose\n- Step-by-step breakdown\n- Any non-obvious behavior\n- Dependencies and side effects"
25
+ }
26
+ ]
27
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://registry.prpm.dev/api/v1/schemas/cursor-hooks.json",
4
+ "title": "Cursor Hooks Configuration",
5
+ "description": "JSON Schema for Cursor hooks.json configuration files",
6
+ "type": "object",
7
+ "properties": {
8
+ "beforeShellExecution": {
9
+ "type": "string",
10
+ "description": "Path to script that runs before shell commands are executed"
11
+ },
12
+ "afterShellExecution": {
13
+ "type": "string",
14
+ "description": "Path to script that runs after shell commands are executed"
15
+ },
16
+ "beforeMCPExecution": {
17
+ "type": "string",
18
+ "description": "Path to script that runs before MCP tool calls"
19
+ },
20
+ "afterMCPExecution": {
21
+ "type": "string",
22
+ "description": "Path to script that runs after MCP tool calls"
23
+ },
24
+ "beforeReadFile": {
25
+ "type": "string",
26
+ "description": "Path to script that runs before files are read"
27
+ },
28
+ "afterFileEdit": {
29
+ "type": "string",
30
+ "description": "Path to script that runs after files are edited"
31
+ },
32
+ "beforeSubmitPrompt": {
33
+ "type": "string",
34
+ "description": "Path to script that runs before prompts are submitted"
35
+ },
36
+ "stop": {
37
+ "type": "string",
38
+ "description": "Path to script that runs when agent loop stops"
39
+ },
40
+ "afterAgentResponse": {
41
+ "type": "string",
42
+ "description": "Path to script that runs after agent responses"
43
+ },
44
+ "afterAgentThought": {
45
+ "type": "string",
46
+ "description": "Path to script that runs after agent thoughts"
47
+ },
48
+ "beforeTabFileRead": {
49
+ "type": "string",
50
+ "description": "Path to script that runs before tab file reads"
51
+ },
52
+ "afterTabFileEdit": {
53
+ "type": "string",
54
+ "description": "Path to script that runs after tab file edits"
55
+ }
56
+ },
57
+ "additionalProperties": false,
58
+ "minProperties": 1
59
+ }
@@ -0,0 +1,74 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://registry.prpm.dev/api/v1/schemas/cursor.json",
4
+ "$comment": "https://cursor.com/docs/context/rules",
5
+ "title": "Cursor Rules Format",
6
+ "description": "JSON Schema for Cursor .cursor/rules format with MDC (Markdown Components) frontmatter",
7
+ "type": "object",
8
+ "required": ["frontmatter", "content"],
9
+ "properties": {
10
+ "frontmatter": {
11
+ "type": "object",
12
+ "description": "YAML frontmatter enclosed in --- markers",
13
+ "required": ["description"],
14
+ "properties": {
15
+ "description": {
16
+ "type": "string",
17
+ "description": "Human-readable description of what this rule does (REQUIRED by Cursor). Used by AI to determine relevance for 'Apply Intelligently' type."
18
+ },
19
+ "globs": {
20
+ "type": "array",
21
+ "description": "File patterns to apply this rule to. When specified, creates 'Apply to Specific Files' rule type.",
22
+ "items": {
23
+ "type": "string"
24
+ }
25
+ },
26
+ "alwaysApply": {
27
+ "type": "boolean",
28
+ "description": "Whether to apply this rule to all files. true = 'Always Apply' type, false (default) = 'Apply Intelligently' or file-specific based on globs.",
29
+ "default": false
30
+ },
31
+ "name": {
32
+ "type": "string",
33
+ "description": "Package identifier (PRPM extension, ignored by Cursor)"
34
+ },
35
+ "tags": {
36
+ "type": "array",
37
+ "description": "Categorization tags (PRPM extension, ignored by Cursor)",
38
+ "items": {
39
+ "type": "string"
40
+ }
41
+ }
42
+ },
43
+ "additionalProperties": false
44
+ },
45
+ "content": {
46
+ "type": "string",
47
+ "description": "Markdown content following the frontmatter. Standard markdown with headings, lists, code blocks, etc."
48
+ }
49
+ },
50
+ "examples": [
51
+ {
52
+ "frontmatter": {
53
+ "description": "Core coding standards that apply to all files",
54
+ "alwaysApply": true
55
+ },
56
+ "content": "# Core Coding Standards\n\nThese standards apply to every chat session.\n\n- Write self-documenting code\n- Keep functions under 50 lines"
57
+ },
58
+ {
59
+ "frontmatter": {
60
+ "description": "RPC Service boilerplate patterns and conventions",
61
+ "alwaysApply": false
62
+ },
63
+ "content": "# RPC Service Patterns\n\nAgent will include this when it detects RPC service context.\n\n- Use internal RPC pattern\n- Use snake_case for service names"
64
+ },
65
+ {
66
+ "frontmatter": {
67
+ "description": "React component development standards",
68
+ "globs": ["src/**/*.tsx", "src/**/*.jsx"],
69
+ "alwaysApply": false
70
+ },
71
+ "content": "# React Component Standards\n\nApplied only to React component files.\n\n- Use functional components with hooks"
72
+ }
73
+ ]
74
+ }