prpm 1.0.3 → 1.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.
@@ -0,0 +1,23 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://prpm.dev/schemas/agents-md.schema.json",
4
+ "title": "agents.md Format",
5
+ "description": "JSON Schema for agents.md format - plain markdown project-specific AI instructions (NO frontmatter)",
6
+ "type": "object",
7
+ "required": ["content"],
8
+ "properties": {
9
+ "content": {
10
+ "type": "string",
11
+ "description": "Plain markdown content with project-specific instructions, architecture notes, conventions, etc. No frontmatter allowed."
12
+ }
13
+ },
14
+ "additionalProperties": false,
15
+ "examples": [
16
+ {
17
+ "content": "# Backend Guidelines\n\n## Architecture\n\nWe use a clean architecture pattern.\n\n## Database\n\nPostgreSQL with Prisma ORM.\n\n## Coding Standards\n\n- Use TypeScript strict mode\n- Write unit tests for all services"
18
+ },
19
+ {
20
+ "content": "# Project Context\n\nThis is a React + TypeScript web application.\n\n## Stack\n\n- React 18\n- TypeScript 5\n- Vite\n- Tailwind CSS"
21
+ }
22
+ ]
23
+ }
@@ -0,0 +1,435 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://prpm.dev/schemas/canonical.schema.json",
4
+ "title": "PRPM Canonical Package Format",
5
+ "description": "Universal intermediate format for AI prompt packages that can be converted to any editor-specific format",
6
+ "type": "object",
7
+ "required": ["id", "version", "name", "description", "author", "tags", "format", "subtype", "content"],
8
+ "properties": {
9
+ "id": {
10
+ "type": "string",
11
+ "description": "Unique identifier for the package"
12
+ },
13
+ "version": {
14
+ "type": "string",
15
+ "pattern": "^\\d+\\.\\d+\\.\\d+$",
16
+ "description": "Semantic version (e.g., '1.0.0')"
17
+ },
18
+ "name": {
19
+ "type": "string",
20
+ "description": "Package identifier/slug (used in frontmatter)"
21
+ },
22
+ "description": {
23
+ "type": "string",
24
+ "description": "Human-readable description"
25
+ },
26
+ "author": {
27
+ "type": "string",
28
+ "description": "Package author"
29
+ },
30
+ "tags": {
31
+ "type": "array",
32
+ "items": {
33
+ "type": "string"
34
+ },
35
+ "description": "Categorization tags"
36
+ },
37
+ "format": {
38
+ "type": "string",
39
+ "enum": ["cursor", "claude", "continue", "windsurf", "copilot", "kiro", "agents.md", "generic", "mcp"],
40
+ "description": "Source format this was parsed from"
41
+ },
42
+ "subtype": {
43
+ "type": "string",
44
+ "enum": ["rule", "agent", "skill", "slash-command", "prompt", "workflow", "tool", "template", "collection", "chatmode", "hook"],
45
+ "description": "Subtype classification"
46
+ },
47
+ "content": {
48
+ "type": "object",
49
+ "required": ["format", "version", "sections"],
50
+ "properties": {
51
+ "format": {
52
+ "type": "string",
53
+ "const": "canonical"
54
+ },
55
+ "version": {
56
+ "type": "string",
57
+ "const": "1.0"
58
+ },
59
+ "sections": {
60
+ "type": "array",
61
+ "description": "Content sections in semantic format",
62
+ "items": {
63
+ "oneOf": [
64
+ {
65
+ "$ref": "#/definitions/MetadataSection"
66
+ },
67
+ {
68
+ "$ref": "#/definitions/InstructionsSection"
69
+ },
70
+ {
71
+ "$ref": "#/definitions/RulesSection"
72
+ },
73
+ {
74
+ "$ref": "#/definitions/ExamplesSection"
75
+ },
76
+ {
77
+ "$ref": "#/definitions/ToolsSection"
78
+ },
79
+ {
80
+ "$ref": "#/definitions/PersonaSection"
81
+ },
82
+ {
83
+ "$ref": "#/definitions/ContextSection"
84
+ },
85
+ {
86
+ "$ref": "#/definitions/CustomSection"
87
+ }
88
+ ]
89
+ }
90
+ }
91
+ }
92
+ },
93
+ "metadata": {
94
+ "type": "object",
95
+ "description": "Extracted metadata for easier access",
96
+ "properties": {
97
+ "title": {
98
+ "type": "string",
99
+ "description": "Display title (from H1 or frontmatter)"
100
+ },
101
+ "description": {
102
+ "type": "string"
103
+ },
104
+ "icon": {
105
+ "type": "string",
106
+ "description": "Emoji icon"
107
+ },
108
+ "version": {
109
+ "type": "string"
110
+ },
111
+ "author": {
112
+ "type": "string"
113
+ },
114
+ "globs": {
115
+ "type": "array",
116
+ "items": {
117
+ "type": "string"
118
+ }
119
+ },
120
+ "alwaysApply": {
121
+ "type": "boolean"
122
+ },
123
+ "claudeAgent": {
124
+ "type": "object",
125
+ "properties": {
126
+ "model": {
127
+ "type": "string",
128
+ "enum": ["sonnet", "opus", "haiku", "inherit"]
129
+ }
130
+ }
131
+ },
132
+ "copilotConfig": {
133
+ "type": "object",
134
+ "properties": {
135
+ "instructionName": {
136
+ "type": "string"
137
+ },
138
+ "applyTo": {
139
+ "oneOf": [
140
+ {
141
+ "type": "string"
142
+ },
143
+ {
144
+ "type": "array",
145
+ "items": {
146
+ "type": "string"
147
+ }
148
+ }
149
+ ]
150
+ }
151
+ }
152
+ },
153
+ "kiroConfig": {
154
+ "type": "object",
155
+ "properties": {
156
+ "filename": {
157
+ "type": "string"
158
+ },
159
+ "inclusion": {
160
+ "type": "string",
161
+ "enum": ["always", "fileMatch", "manual"]
162
+ },
163
+ "fileMatchPattern": {
164
+ "type": "string"
165
+ },
166
+ "domain": {
167
+ "type": "string"
168
+ },
169
+ "foundationalType": {
170
+ "type": "string",
171
+ "enum": ["product", "tech", "structure"]
172
+ }
173
+ }
174
+ },
175
+ "agentsMdConfig": {
176
+ "type": "object",
177
+ "properties": {
178
+ "project": {
179
+ "type": "string"
180
+ },
181
+ "scope": {
182
+ "type": "string"
183
+ }
184
+ }
185
+ }
186
+ }
187
+ },
188
+ "sourceFormat": {
189
+ "type": "string",
190
+ "enum": ["cursor", "claude", "continue", "windsurf", "copilot", "kiro", "agents.md", "generic"],
191
+ "description": "Original format this was parsed from"
192
+ },
193
+ "sourceUrl": {
194
+ "type": "string",
195
+ "format": "uri",
196
+ "description": "Source URL if imported"
197
+ },
198
+ "official": {
199
+ "type": "boolean",
200
+ "description": "Official package from cursor.directory, claude.ai, etc."
201
+ },
202
+ "verified": {
203
+ "type": "boolean",
204
+ "description": "Verified by PRPM team"
205
+ },
206
+ "karenScore": {
207
+ "type": "number",
208
+ "minimum": 0,
209
+ "maximum": 100,
210
+ "description": "Quality score from Karen"
211
+ }
212
+ },
213
+ "definitions": {
214
+ "MetadataSection": {
215
+ "type": "object",
216
+ "required": ["type", "data"],
217
+ "properties": {
218
+ "type": {
219
+ "const": "metadata"
220
+ },
221
+ "data": {
222
+ "type": "object",
223
+ "required": ["title", "description"],
224
+ "properties": {
225
+ "title": {
226
+ "type": "string"
227
+ },
228
+ "description": {
229
+ "type": "string"
230
+ },
231
+ "icon": {
232
+ "type": "string"
233
+ },
234
+ "version": {
235
+ "type": "string"
236
+ },
237
+ "author": {
238
+ "type": "string"
239
+ },
240
+ "claudeAgent": {
241
+ "type": "object",
242
+ "properties": {
243
+ "model": {
244
+ "type": "string",
245
+ "enum": ["sonnet", "opus", "haiku", "inherit"]
246
+ }
247
+ }
248
+ }
249
+ }
250
+ }
251
+ }
252
+ },
253
+ "InstructionsSection": {
254
+ "type": "object",
255
+ "required": ["type", "title", "content"],
256
+ "properties": {
257
+ "type": {
258
+ "const": "instructions"
259
+ },
260
+ "title": {
261
+ "type": "string"
262
+ },
263
+ "content": {
264
+ "type": "string"
265
+ },
266
+ "priority": {
267
+ "type": "string",
268
+ "enum": ["high", "medium", "low"]
269
+ }
270
+ }
271
+ },
272
+ "RulesSection": {
273
+ "type": "object",
274
+ "required": ["type", "title", "items"],
275
+ "properties": {
276
+ "type": {
277
+ "const": "rules"
278
+ },
279
+ "title": {
280
+ "type": "string"
281
+ },
282
+ "items": {
283
+ "type": "array",
284
+ "items": {
285
+ "type": "object",
286
+ "required": ["content"],
287
+ "properties": {
288
+ "content": {
289
+ "type": "string"
290
+ },
291
+ "rationale": {
292
+ "type": "string"
293
+ },
294
+ "examples": {
295
+ "type": "array",
296
+ "items": {
297
+ "type": "string"
298
+ }
299
+ }
300
+ }
301
+ }
302
+ },
303
+ "ordered": {
304
+ "type": "boolean",
305
+ "description": "Whether rules should be numbered"
306
+ }
307
+ }
308
+ },
309
+ "ExamplesSection": {
310
+ "type": "object",
311
+ "required": ["type", "title", "examples"],
312
+ "properties": {
313
+ "type": {
314
+ "const": "examples"
315
+ },
316
+ "title": {
317
+ "type": "string"
318
+ },
319
+ "examples": {
320
+ "type": "array",
321
+ "items": {
322
+ "type": "object",
323
+ "required": ["description", "code"],
324
+ "properties": {
325
+ "description": {
326
+ "type": "string"
327
+ },
328
+ "code": {
329
+ "type": "string"
330
+ },
331
+ "language": {
332
+ "type": "string"
333
+ },
334
+ "good": {
335
+ "type": "boolean",
336
+ "description": "Is this a good or bad example?"
337
+ }
338
+ }
339
+ }
340
+ }
341
+ }
342
+ },
343
+ "ToolsSection": {
344
+ "type": "object",
345
+ "required": ["type", "tools"],
346
+ "properties": {
347
+ "type": {
348
+ "const": "tools"
349
+ },
350
+ "tools": {
351
+ "type": "array",
352
+ "items": {
353
+ "type": "string"
354
+ }
355
+ },
356
+ "description": {
357
+ "type": "string"
358
+ }
359
+ }
360
+ },
361
+ "PersonaSection": {
362
+ "type": "object",
363
+ "required": ["type", "data"],
364
+ "properties": {
365
+ "type": {
366
+ "const": "persona"
367
+ },
368
+ "data": {
369
+ "type": "object",
370
+ "required": ["role"],
371
+ "properties": {
372
+ "name": {
373
+ "type": "string"
374
+ },
375
+ "role": {
376
+ "type": "string"
377
+ },
378
+ "icon": {
379
+ "type": "string"
380
+ },
381
+ "style": {
382
+ "type": "array",
383
+ "items": {
384
+ "type": "string"
385
+ }
386
+ },
387
+ "expertise": {
388
+ "type": "array",
389
+ "items": {
390
+ "type": "string"
391
+ }
392
+ }
393
+ }
394
+ }
395
+ }
396
+ },
397
+ "ContextSection": {
398
+ "type": "object",
399
+ "required": ["type", "title", "content"],
400
+ "properties": {
401
+ "type": {
402
+ "const": "context"
403
+ },
404
+ "title": {
405
+ "type": "string"
406
+ },
407
+ "content": {
408
+ "type": "string"
409
+ }
410
+ }
411
+ },
412
+ "CustomSection": {
413
+ "type": "object",
414
+ "required": ["type", "content"],
415
+ "properties": {
416
+ "type": {
417
+ "const": "custom"
418
+ },
419
+ "editorType": {
420
+ "type": "string",
421
+ "enum": ["cursor", "claude", "continue", "windsurf", "copilot", "kiro"]
422
+ },
423
+ "title": {
424
+ "type": "string"
425
+ },
426
+ "content": {
427
+ "type": "string"
428
+ },
429
+ "metadata": {
430
+ "type": "object"
431
+ }
432
+ }
433
+ }
434
+ }
435
+ }
@@ -0,0 +1,57 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://prpm.dev/schemas/claude-agent.schema.json",
4
+ "title": "Claude Agent Format",
5
+ "description": "JSON Schema for Claude Code Agents - long-running assistants with tool access",
6
+ "type": "object",
7
+ "required": ["frontmatter", "content"],
8
+ "properties": {
9
+ "frontmatter": {
10
+ "type": "object",
11
+ "required": ["name", "description"],
12
+ "properties": {
13
+ "name": {
14
+ "type": "string",
15
+ "pattern": "^[a-z0-9-]+$",
16
+ "maxLength": 64,
17
+ "description": "Agent identifier (lowercase letters, numbers, hyphens only)"
18
+ },
19
+ "description": {
20
+ "type": "string",
21
+ "maxLength": 1024,
22
+ "description": "Brief overview of agent's functionality and use cases"
23
+ },
24
+ "allowed-tools": {
25
+ "type": "string",
26
+ "description": "Comma-separated list of available tools (e.g., 'Read, Write, Bash, WebSearch')"
27
+ },
28
+ "model": {
29
+ "type": "string",
30
+ "enum": ["sonnet", "opus", "haiku", "inherit"],
31
+ "description": "Claude model to use for this agent"
32
+ },
33
+ "agentType": {
34
+ "type": "string",
35
+ "const": "agent",
36
+ "description": "Explicit marker for round-trip conversion"
37
+ }
38
+ },
39
+ "additionalProperties": false
40
+ },
41
+ "content": {
42
+ "type": "string",
43
+ "description": "Markdown content with H1 title (can include emoji icon), persona, instructions, and examples"
44
+ }
45
+ },
46
+ "examples": [
47
+ {
48
+ "frontmatter": {
49
+ "name": "code-reviewer",
50
+ "description": "Reviews code for best practices and potential issues",
51
+ "allowed-tools": "Read, Grep, Bash",
52
+ "model": "sonnet"
53
+ },
54
+ "content": "# 🔍 Code Reviewer\n\nYou are an expert code reviewer with deep knowledge of software engineering principles.\n\n## Instructions\n\n- Check for code smells and anti-patterns\n- Verify test coverage"
55
+ }
56
+ ]
57
+ }
@@ -0,0 +1,68 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://prpm.dev/schemas/claude-hook.schema.json",
4
+ "title": "Claude Hook Format",
5
+ "description": "JSON Schema for Claude Code Hooks - executable code triggered by events",
6
+ "type": "object",
7
+ "required": ["frontmatter", "content"],
8
+ "properties": {
9
+ "frontmatter": {
10
+ "type": "object",
11
+ "required": ["name", "description"],
12
+ "properties": {
13
+ "name": {
14
+ "type": "string",
15
+ "pattern": "^[a-z0-9-]+$",
16
+ "maxLength": 64,
17
+ "description": "Hook identifier (lowercase letters, numbers, hyphens only)"
18
+ },
19
+ "description": {
20
+ "type": "string",
21
+ "maxLength": 1024,
22
+ "description": "Brief overview of what the hook does"
23
+ },
24
+ "event": {
25
+ "type": "string",
26
+ "enum": [
27
+ "PreToolUse",
28
+ "PostToolUse",
29
+ "UserPromptSubmit",
30
+ "Notification",
31
+ "Stop",
32
+ "SubagentStop",
33
+ "PreCompact",
34
+ "SessionStart",
35
+ "SessionEnd"
36
+ ],
37
+ "description": "Event that triggers this hook"
38
+ },
39
+ "language": {
40
+ "type": "string",
41
+ "enum": ["bash", "typescript", "javascript", "python", "binary"],
42
+ "description": "Programming language of the hook"
43
+ },
44
+ "hookType": {
45
+ "type": "string",
46
+ "const": "hook",
47
+ "description": "Explicit marker for round-trip conversion"
48
+ }
49
+ },
50
+ "additionalProperties": false
51
+ },
52
+ "content": {
53
+ "type": "string",
54
+ "description": "Markdown documentation with hook source code in code blocks"
55
+ }
56
+ },
57
+ "examples": [
58
+ {
59
+ "frontmatter": {
60
+ "name": "session-logger",
61
+ "description": "Logs session start/end times for tracking",
62
+ "event": "SessionStart",
63
+ "language": "bash"
64
+ },
65
+ "content": "# Session Logger Hook\n\nLogs Claude Code session activity for tracking and debugging.\n\n## Source Code\n\n```bash\n#!/bin/bash\necho \"Session started at $(date)\" >> ~/.claude/session.log\n```"
66
+ }
67
+ ]
68
+ }
@@ -0,0 +1,51 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://prpm.dev/schemas/claude-skill.schema.json",
4
+ "title": "Claude Skill Format",
5
+ "description": "JSON Schema for Claude Code Skills - reusable patterns invoked during conversation",
6
+ "type": "object",
7
+ "required": ["frontmatter", "content"],
8
+ "properties": {
9
+ "frontmatter": {
10
+ "type": "object",
11
+ "required": ["name", "description"],
12
+ "properties": {
13
+ "name": {
14
+ "type": "string",
15
+ "pattern": "^[a-z0-9-]+$",
16
+ "maxLength": 64,
17
+ "description": "Skill identifier (lowercase letters, numbers, hyphens only)"
18
+ },
19
+ "description": {
20
+ "type": "string",
21
+ "maxLength": 1024,
22
+ "description": "Brief overview of functionality and when to use it"
23
+ },
24
+ "allowed-tools": {
25
+ "type": "string",
26
+ "description": "Comma-separated list of allowed tools (e.g., 'Read, Grep, Glob')"
27
+ },
28
+ "skillType": {
29
+ "type": "string",
30
+ "const": "skill",
31
+ "description": "Explicit marker for round-trip conversion"
32
+ }
33
+ },
34
+ "additionalProperties": false
35
+ },
36
+ "content": {
37
+ "type": "string",
38
+ "description": "Markdown content with instructions and examples"
39
+ }
40
+ },
41
+ "examples": [
42
+ {
43
+ "frontmatter": {
44
+ "name": "refactor-helper",
45
+ "description": "Assists with code refactoring while maintaining functionality",
46
+ "allowed-tools": "Read, Edit, Grep"
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
+ }