prpm 1.0.3 → 1.0.4
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.
- package/README.md +86 -358
- package/dist/index.js +37 -13
- package/dist/schemas/agents-md.schema.json +23 -0
- package/dist/schemas/canonical.schema.json +435 -0
- package/dist/schemas/claude-agent.schema.json +57 -0
- package/dist/schemas/claude-hook.schema.json +68 -0
- package/dist/schemas/claude-skill.schema.json +51 -0
- package/dist/schemas/claude-slash-command.schema.json +63 -0
- package/dist/schemas/claude.schema.json +51 -0
- package/dist/schemas/continue.schema.json +97 -0
- package/dist/schemas/copilot.schema.json +75 -0
- package/dist/schemas/cursor-command.schema.json +26 -0
- package/dist/schemas/cursor.schema.json +88 -0
- package/dist/schemas/kiro-hooks.schema.json +119 -0
- package/dist/schemas/kiro-steering.schema.json +73 -0
- package/dist/schemas/windsurf.schema.json +21 -0
- package/package.json +4 -4
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://prpm.dev/schemas/claude.schema.json",
|
|
4
|
+
"title": "Claude Code Format",
|
|
5
|
+
"description": "JSON Schema for Claude Code agents, skills, and slash commands format",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["frontmatter", "content"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"frontmatter": {
|
|
10
|
+
"type": "object",
|
|
11
|
+
"description": "YAML frontmatter enclosed in --- markers",
|
|
12
|
+
"required": ["name", "description"],
|
|
13
|
+
"properties": {
|
|
14
|
+
"name": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"description": "Identifier/slug for the agent/skill/command (e.g., 'code-reviewer', 'refactor-helper')"
|
|
17
|
+
},
|
|
18
|
+
"description": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"description": "Human-readable description of what this does"
|
|
21
|
+
},
|
|
22
|
+
"allowed-tools": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"description": "Comma-separated list of available tools (e.g., 'Read, Write, Bash, WebSearch')",
|
|
25
|
+
"pattern": "^[A-Za-z]+(,\\s*[A-Za-z]+)*$"
|
|
26
|
+
},
|
|
27
|
+
"model": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"enum": ["sonnet", "opus", "haiku", "inherit"],
|
|
30
|
+
"description": "Claude model to use for this agent"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"additionalProperties": false
|
|
34
|
+
},
|
|
35
|
+
"content": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"description": "Markdown content following the frontmatter. Should include H1 title (can include emoji icon), persona instructions, guidelines, examples, etc."
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"examples": [
|
|
41
|
+
{
|
|
42
|
+
"frontmatter": {
|
|
43
|
+
"name": "code-reviewer",
|
|
44
|
+
"description": "Reviews code for best practices",
|
|
45
|
+
"allowed-tools": "Read, Grep, Bash",
|
|
46
|
+
"model": "sonnet"
|
|
47
|
+
},
|
|
48
|
+
"content": "# 🔍 Code Reviewer\n\nYou are an expert code reviewer.\n\n## Instructions\n\n- Check for code smells\n- Verify test coverage"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://prpm.dev/schemas/continue.schema.json",
|
|
4
|
+
"title": "Continue Rules Format",
|
|
5
|
+
"description": "JSON Schema for Continue rules format - markdown with optional YAML frontmatter or YAML configuration",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["frontmatter", "content"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"frontmatter": {
|
|
10
|
+
"type": "object",
|
|
11
|
+
"description": "YAML frontmatter for metadata and file matching",
|
|
12
|
+
"required": ["name"],
|
|
13
|
+
"properties": {
|
|
14
|
+
"name": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"description": "Display name/title for the rule (required)"
|
|
17
|
+
},
|
|
18
|
+
"description": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"description": "Description of when the rule should be used (agents may read this)"
|
|
21
|
+
},
|
|
22
|
+
"globs": {
|
|
23
|
+
"oneOf": [
|
|
24
|
+
{
|
|
25
|
+
"type": "string",
|
|
26
|
+
"description": "Single glob pattern to match files (e.g., '**/*.{ts,tsx}')"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"type": "array",
|
|
30
|
+
"items": {
|
|
31
|
+
"type": "string"
|
|
32
|
+
},
|
|
33
|
+
"description": "Array of glob patterns to match files"
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
"regex": {
|
|
38
|
+
"oneOf": [
|
|
39
|
+
{
|
|
40
|
+
"type": "string",
|
|
41
|
+
"description": "Single regex pattern to match file content"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"type": "array",
|
|
45
|
+
"items": {
|
|
46
|
+
"type": "string"
|
|
47
|
+
},
|
|
48
|
+
"description": "Array of regex patterns to match file content"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
"alwaysApply": {
|
|
53
|
+
"type": "boolean",
|
|
54
|
+
"description": "Inclusion behavior: true = Always included. false = Included if globs match OR agent decides. undefined/omitted = Included if no globs specified OR globs match."
|
|
55
|
+
},
|
|
56
|
+
"version": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"description": "Rule version (for YAML format)"
|
|
59
|
+
},
|
|
60
|
+
"schema": {
|
|
61
|
+
"type": "string",
|
|
62
|
+
"description": "Schema version (for YAML format)"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"content": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"description": "Markdown content with rules and guidelines"
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"examples": [
|
|
72
|
+
{
|
|
73
|
+
"frontmatter": {
|
|
74
|
+
"name": "General Guidelines"
|
|
75
|
+
},
|
|
76
|
+
"content": "# General Guidelines\n\n- Write clean code\n- Add tests"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"frontmatter": {
|
|
80
|
+
"name": "Documentation Standards",
|
|
81
|
+
"globs": "docs/**/*.{md,mdx}",
|
|
82
|
+
"alwaysApply": false,
|
|
83
|
+
"description": "Standards for writing and maintaining documentation"
|
|
84
|
+
},
|
|
85
|
+
"content": "# Documentation Standards\n\n## Structure\n\n- Follow consistent heading hierarchy"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"frontmatter": {
|
|
89
|
+
"name": "React Component Standards",
|
|
90
|
+
"regex": "^import React",
|
|
91
|
+
"globs": ["**/*.tsx", "**/*.jsx"],
|
|
92
|
+
"alwaysApply": false
|
|
93
|
+
},
|
|
94
|
+
"content": "# React Component Standards\n\n## Component Structure\n\n- Use functional components with hooks"
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://prpm.dev/schemas/copilot.schema.json",
|
|
4
|
+
"title": "GitHub Copilot Instructions Format",
|
|
5
|
+
"description": "JSON Schema for GitHub Copilot instructions (.github/copilot-instructions.md or .github/instructions/*.instructions.md)",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"frontmatter": {
|
|
9
|
+
"type": "object",
|
|
10
|
+
"description": "Optional YAML frontmatter for path-specific instructions (required for path-specific files)",
|
|
11
|
+
"properties": {
|
|
12
|
+
"applyTo": {
|
|
13
|
+
"oneOf": [
|
|
14
|
+
{
|
|
15
|
+
"type": "string",
|
|
16
|
+
"description": "Single glob pattern or comma-separated patterns (e.g., 'app/models/**/*.rb' or '**/*.ts,**/*.tsx'). Use '**', '*', or '**/*' for all files."
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"type": "array",
|
|
20
|
+
"description": "Multiple glob patterns as array",
|
|
21
|
+
"items": {
|
|
22
|
+
"type": "string"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
"excludeAgent": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"enum": ["code-review", "coding-agent"],
|
|
30
|
+
"description": "Prevent file from being used by specific agent. 'code-review': only used by coding agent. 'coding-agent': only used by code review."
|
|
31
|
+
},
|
|
32
|
+
"subtype": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"enum": ["rule", "tool", "chatmode"],
|
|
35
|
+
"description": "Type of Copilot instruction (PRPM extension)"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"content": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"description": "Natural language markdown instructions. Whitespace between instructions is ignored. Simple, clear, and actionable."
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"required": ["content"],
|
|
45
|
+
"examples": [
|
|
46
|
+
{
|
|
47
|
+
"content": "# API Development Guidelines\n\nFollow REST best practices.\n\n## Principles\n\n- Use semantic HTTP methods\n- Return appropriate status codes"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"frontmatter": {
|
|
51
|
+
"applyTo": "app/models/**/*.rb"
|
|
52
|
+
},
|
|
53
|
+
"content": "# Model Guidelines\n\nThese rules apply only to Ruby model files."
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"frontmatter": {
|
|
57
|
+
"applyTo": "**/*.ts,**/*.tsx"
|
|
58
|
+
},
|
|
59
|
+
"content": "# TypeScript Guidelines\n\nThese rules apply to all TypeScript files using comma-separated patterns."
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"frontmatter": {
|
|
63
|
+
"applyTo": ["src/api/**/*.ts", "src/services/**/*.ts"]
|
|
64
|
+
},
|
|
65
|
+
"content": "# API Guidelines\n\nThese rules apply to API files using array of patterns."
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"frontmatter": {
|
|
69
|
+
"applyTo": "**",
|
|
70
|
+
"excludeAgent": "code-review"
|
|
71
|
+
},
|
|
72
|
+
"content": "# Coding Agent Only\n\nThese instructions are only used by the Copilot coding agent, not code review."
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://prpm.dev/schemas/cursor-command.schema.json",
|
|
4
|
+
"title": "Cursor Command Format",
|
|
5
|
+
"description": "JSON Schema for Cursor commands (slash commands) - plain Markdown files in .cursor/commands/",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["content"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"content": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"description": "Plain Markdown content describing what the command should do. No frontmatter supported."
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"additionalProperties": false,
|
|
15
|
+
"examples": [
|
|
16
|
+
{
|
|
17
|
+
"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."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"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"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"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"
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://prpm.dev/schemas/cursor.schema.json",
|
|
4
|
+
"title": "Cursor Rules Format",
|
|
5
|
+
"description": "JSON Schema for Cursor .cursor/rules format with MDC (Markdown Components) frontmatter",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["frontmatter", "content"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"frontmatter": {
|
|
10
|
+
"type": "object",
|
|
11
|
+
"description": "YAML frontmatter enclosed in --- markers",
|
|
12
|
+
"required": ["description"],
|
|
13
|
+
"properties": {
|
|
14
|
+
"description": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"description": "Human-readable description of what this rule does (REQUIRED by Cursor). Used by AI to determine relevance for 'Apply Intelligently' type."
|
|
17
|
+
},
|
|
18
|
+
"globs": {
|
|
19
|
+
"type": "array",
|
|
20
|
+
"description": "File patterns to apply this rule to. When specified, creates 'Apply to Specific Files' rule type.",
|
|
21
|
+
"items": {
|
|
22
|
+
"type": "string"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"alwaysApply": {
|
|
26
|
+
"type": "boolean",
|
|
27
|
+
"description": "Whether to apply this rule to all files. true = 'Always Apply' type, false (default) = 'Apply Intelligently' or file-specific based on globs.",
|
|
28
|
+
"default": false
|
|
29
|
+
},
|
|
30
|
+
"name": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"description": "Package identifier (PRPM extension, ignored by Cursor)"
|
|
33
|
+
},
|
|
34
|
+
"tags": {
|
|
35
|
+
"type": "array",
|
|
36
|
+
"description": "Categorization tags (PRPM extension, ignored by Cursor)",
|
|
37
|
+
"items": {
|
|
38
|
+
"type": "string"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"agentType": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"enum": ["agent"],
|
|
44
|
+
"description": "Marks as agent subtype (PRPM extension for round-trip conversion)"
|
|
45
|
+
},
|
|
46
|
+
"skillType": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"enum": ["skill"],
|
|
49
|
+
"description": "Marks as skill subtype (PRPM extension for round-trip conversion)"
|
|
50
|
+
},
|
|
51
|
+
"commandType": {
|
|
52
|
+
"type": "string",
|
|
53
|
+
"enum": ["slash-command"],
|
|
54
|
+
"description": "Marks as slash command subtype (PRPM extension for round-trip conversion)"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"additionalProperties": false
|
|
58
|
+
},
|
|
59
|
+
"content": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"description": "Markdown content following the frontmatter. Standard markdown with headings, lists, code blocks, etc."
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"examples": [
|
|
65
|
+
{
|
|
66
|
+
"frontmatter": {
|
|
67
|
+
"description": "Core coding standards that apply to all files",
|
|
68
|
+
"alwaysApply": true
|
|
69
|
+
},
|
|
70
|
+
"content": "# Core Coding Standards\n\nThese standards apply to every chat session.\n\n- Write self-documenting code\n- Keep functions under 50 lines"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"frontmatter": {
|
|
74
|
+
"description": "RPC Service boilerplate patterns and conventions",
|
|
75
|
+
"alwaysApply": false
|
|
76
|
+
},
|
|
77
|
+
"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"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"frontmatter": {
|
|
81
|
+
"description": "React component development standards",
|
|
82
|
+
"globs": ["src/**/*.tsx", "src/**/*.jsx"],
|
|
83
|
+
"alwaysApply": false
|
|
84
|
+
},
|
|
85
|
+
"content": "# React Component Standards\n\nApplied only to React component files.\n\n- Use functional components with hooks"
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://prpm.dev/schemas/kiro-hooks.schema.json",
|
|
4
|
+
"title": "Kiro Hooks Format",
|
|
5
|
+
"description": "JSON Schema for Kiro hook configuration files (.kiro/hooks/*.json) - event-driven automations",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["name", "description", "version", "when", "then"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"name": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"description": "Human-readable name for the hook",
|
|
12
|
+
"minLength": 1
|
|
13
|
+
},
|
|
14
|
+
"description": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"description": "Explanation of what this hook does",
|
|
17
|
+
"minLength": 1
|
|
18
|
+
},
|
|
19
|
+
"version": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"description": "Hook version (typically '1')",
|
|
22
|
+
"pattern": "^[0-9]+$"
|
|
23
|
+
},
|
|
24
|
+
"when": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"description": "Event trigger configuration",
|
|
27
|
+
"required": ["type", "patterns"],
|
|
28
|
+
"properties": {
|
|
29
|
+
"type": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"enum": ["fileCreated", "fileModified", "fileDeleted"],
|
|
32
|
+
"description": "Type of file system event to trigger on"
|
|
33
|
+
},
|
|
34
|
+
"patterns": {
|
|
35
|
+
"type": "array",
|
|
36
|
+
"description": "Glob patterns to match files",
|
|
37
|
+
"items": {
|
|
38
|
+
"type": "string"
|
|
39
|
+
},
|
|
40
|
+
"minItems": 1
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"then": {
|
|
45
|
+
"type": "object",
|
|
46
|
+
"description": "Action to take when event occurs",
|
|
47
|
+
"required": ["type"],
|
|
48
|
+
"properties": {
|
|
49
|
+
"type": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"enum": ["askAgent", "runCommand"],
|
|
52
|
+
"description": "Type of action to perform"
|
|
53
|
+
},
|
|
54
|
+
"prompt": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"description": "Prompt for askAgent action type"
|
|
57
|
+
},
|
|
58
|
+
"command": {
|
|
59
|
+
"type": "string",
|
|
60
|
+
"description": "Shell command for runCommand action type"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"allOf": [
|
|
64
|
+
{
|
|
65
|
+
"if": {
|
|
66
|
+
"properties": {
|
|
67
|
+
"type": {
|
|
68
|
+
"const": "askAgent"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"then": {
|
|
73
|
+
"required": ["prompt"]
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"if": {
|
|
78
|
+
"properties": {
|
|
79
|
+
"type": {
|
|
80
|
+
"const": "runCommand"
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"then": {
|
|
85
|
+
"required": ["command"]
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"examples": [
|
|
92
|
+
{
|
|
93
|
+
"name": "Auto Test Files",
|
|
94
|
+
"description": "Creates test files for new components",
|
|
95
|
+
"version": "1",
|
|
96
|
+
"when": {
|
|
97
|
+
"type": "fileCreated",
|
|
98
|
+
"patterns": ["src/components/**/*.tsx"]
|
|
99
|
+
},
|
|
100
|
+
"then": {
|
|
101
|
+
"type": "askAgent",
|
|
102
|
+
"prompt": "A new component was created. Create a corresponding test file."
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"name": "Lint on Save",
|
|
107
|
+
"description": "Runs linter when files are modified",
|
|
108
|
+
"version": "1",
|
|
109
|
+
"when": {
|
|
110
|
+
"type": "fileModified",
|
|
111
|
+
"patterns": ["src/**/*.ts", "src/**/*.tsx"]
|
|
112
|
+
},
|
|
113
|
+
"then": {
|
|
114
|
+
"type": "runCommand",
|
|
115
|
+
"command": "npm run lint"
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
]
|
|
119
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://prpm.dev/schemas/kiro-steering.schema.json",
|
|
4
|
+
"title": "Kiro Steering Files Format",
|
|
5
|
+
"description": "JSON Schema for Kiro steering files (.kiro/steering/*.md) - context-aware instructions with optional frontmatter (defaults to 'always' inclusion)",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["content"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"frontmatter": {
|
|
10
|
+
"type": "object",
|
|
11
|
+
"description": "Optional YAML frontmatter enclosed in --- markers. If omitted, file defaults to 'always' inclusion mode.",
|
|
12
|
+
"properties": {
|
|
13
|
+
"inclusion": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"enum": ["always", "fileMatch", "manual"],
|
|
16
|
+
"default": "always",
|
|
17
|
+
"description": "When to include this steering file: always (all contexts, default), fileMatch (specific files), manual (user-triggered)"
|
|
18
|
+
},
|
|
19
|
+
"fileMatchPattern": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"description": "Glob pattern for fileMatch inclusion mode (REQUIRED if inclusion is fileMatch)"
|
|
22
|
+
},
|
|
23
|
+
"domain": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"description": "Domain or topic for organization (e.g., 'testing', 'api', 'security')"
|
|
26
|
+
},
|
|
27
|
+
"foundationalType": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"enum": ["product", "tech", "structure"],
|
|
30
|
+
"description": "Type of foundational file (product.md, tech.md, structure.md)"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"allOf": [
|
|
34
|
+
{
|
|
35
|
+
"if": {
|
|
36
|
+
"properties": {
|
|
37
|
+
"inclusion": {
|
|
38
|
+
"const": "fileMatch"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"then": {
|
|
43
|
+
"required": ["fileMatchPattern"]
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"content": {
|
|
49
|
+
"type": "string",
|
|
50
|
+
"description": "Markdown content following the frontmatter (or entire file if no frontmatter). Should include H1 title, guidelines, rules, examples."
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"examples": [
|
|
54
|
+
{
|
|
55
|
+
"content": "# Testing Guidelines\n\nAlways write tests first.\n\n## Principles\n\n- Test edge cases\n- Mock external dependencies"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"frontmatter": {
|
|
59
|
+
"inclusion": "always",
|
|
60
|
+
"domain": "Testing"
|
|
61
|
+
},
|
|
62
|
+
"content": "# Testing Guidelines\n\nAlways write tests first.\n\n## Principles\n\n- Test edge cases\n- Mock external dependencies"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"frontmatter": {
|
|
66
|
+
"inclusion": "fileMatch",
|
|
67
|
+
"fileMatchPattern": "**/*.test.ts",
|
|
68
|
+
"domain": "Testing"
|
|
69
|
+
},
|
|
70
|
+
"content": "# Test File Guidelines\n\nRules specific to test files."
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://prpm.dev/schemas/windsurf.schema.json",
|
|
4
|
+
"title": "Windsurf Rules Format",
|
|
5
|
+
"description": "JSON Schema for Windsurf .windsurf/rules format - plain markdown without frontmatter",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["content"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"content": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"description": "Plain markdown content. No frontmatter. Maximum 12,000 characters.",
|
|
12
|
+
"maxLength": 12000
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"examples": [
|
|
16
|
+
{
|
|
17
|
+
"content": "# React Best Practices\n\n## Core Principles\n\n- Use functional components\n- Keep components small and focused"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"additionalProperties": false
|
|
21
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prpm",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "Prompt Package Manager CLI - Install and manage prompt-based files",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -45,9 +45,9 @@
|
|
|
45
45
|
"license": "MIT",
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@octokit/rest": "^22.0.0",
|
|
48
|
-
"@pr-pm/converters": "^1.0.
|
|
49
|
-
"@pr-pm/registry-client": "^2.0.
|
|
50
|
-
"@pr-pm/types": "^1.0.
|
|
48
|
+
"@pr-pm/converters": "^1.0.4",
|
|
49
|
+
"@pr-pm/registry-client": "^2.0.4",
|
|
50
|
+
"@pr-pm/types": "^1.0.4",
|
|
51
51
|
"ajv": "^8.17.1",
|
|
52
52
|
"ajv-formats": "^3.0.1",
|
|
53
53
|
"commander": "^11.1.0",
|