@promptscript/cli 1.0.0-rc.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.
- package/CHANGELOG.md +22 -0
- package/README.md +152 -103
- package/index.js +5746 -2915
- package/package.json +4 -4
- package/skills/migrate-to-promptscript/SKILL.md +228 -0
- package/skills/promptscript/SKILL.md +372 -0
- package/src/cli.d.ts.map +1 -1
- package/src/commands/compile.d.ts.map +1 -1
- package/src/commands/diff.d.ts.map +1 -1
- package/src/commands/init.d.ts.map +1 -1
- package/src/commands/pull.d.ts.map +1 -1
- package/src/commands/registry/index.d.ts +6 -0
- package/src/commands/registry/index.d.ts.map +1 -0
- package/src/commands/registry/init.d.ts +7 -0
- package/src/commands/registry/init.d.ts.map +1 -0
- package/src/commands/registry/publish.d.ts +7 -0
- package/src/commands/registry/publish.d.ts.map +1 -0
- package/src/commands/registry/validate.d.ts +7 -0
- package/src/commands/registry/validate.d.ts.map +1 -0
- package/src/commands/update-check.d.ts.map +1 -1
- package/src/commands/validate.d.ts.map +1 -1
- package/src/config/env-config.d.ts +13 -0
- package/src/config/env-config.d.ts.map +1 -0
- package/src/config/index.d.ts +4 -1
- package/src/config/index.d.ts.map +1 -1
- package/src/config/loader.d.ts +9 -0
- package/src/config/loader.d.ts.map +1 -1
- package/src/config/merge-config.d.ts +7 -0
- package/src/config/merge-config.d.ts.map +1 -0
- package/src/config/user-config.d.ts +11 -0
- package/src/config/user-config.d.ts.map +1 -0
- package/src/types.d.ts +41 -0
- package/src/types.d.ts.map +1 -1
- package/src/utils/ai-tools-detector.d.ts +1 -1
- package/src/utils/ai-tools-detector.d.ts.map +1 -1
- package/src/utils/manifest-loader.d.ts +2 -15
- package/src/utils/manifest-loader.d.ts.map +1 -1
- package/src/utils/registry-scaffolder.d.ts +23 -0
- package/src/utils/registry-scaffolder.d.ts.map +1 -0
- package/src/utils/registry-validator.d.ts +30 -0
- package/src/utils/registry-validator.d.ts.map +1 -0
- package/src/utils/version-check.d.ts.map +1 -1
- package/src/templates/migrate-skill.d.ts +0 -9
- package/src/templates/migrate-skill.d.ts.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@promptscript/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "CLI for PromptScript - standardize AI instructions across GitHub Copilot, Claude, Cursor and other AI tools",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -40,12 +40,12 @@
|
|
|
40
40
|
"node": ">=18"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@inquirer/prompts": "^8.
|
|
43
|
+
"@inquirer/prompts": "^8.3.0",
|
|
44
44
|
"chalk": "^5.6.2",
|
|
45
45
|
"chokidar": "^5.0.0",
|
|
46
46
|
"commander": "^14.0.3",
|
|
47
|
-
"ora": "^9.
|
|
47
|
+
"ora": "^9.3.0",
|
|
48
48
|
"yaml": "^2.8.2",
|
|
49
|
-
"simple-git": "^3.
|
|
49
|
+
"simple-git": "^3.33.0"
|
|
50
50
|
}
|
|
51
51
|
}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: migrate-to-promptscript
|
|
3
|
+
description: Migrate existing AI instruction files to PromptScript format. Use when converting CLAUDE.md, .cursorrules, copilot-instructions.md, AGENTS.md, or other AI instruction files into a unified .prs source.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Migrate to PromptScript
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
This skill guides you through migrating existing AI instruction files
|
|
11
|
+
to PromptScript format, creating a unified source of truth for all
|
|
12
|
+
AI coding assistants.
|
|
13
|
+
|
|
14
|
+
## Step 1: Discovery
|
|
15
|
+
|
|
16
|
+
Search for existing instruction files using these patterns:
|
|
17
|
+
|
|
18
|
+
Claude Code:
|
|
19
|
+
|
|
20
|
+
- CLAUDE.md, claude.md, CLAUDE.local.md
|
|
21
|
+
|
|
22
|
+
Cursor:
|
|
23
|
+
|
|
24
|
+
- .cursorrules
|
|
25
|
+
- .cursor/rules/\*.md
|
|
26
|
+
- .cursor/rules/\*.mdc
|
|
27
|
+
|
|
28
|
+
GitHub Copilot:
|
|
29
|
+
|
|
30
|
+
- .github/copilot-instructions.md
|
|
31
|
+
- .github/instructions/\*.md
|
|
32
|
+
|
|
33
|
+
Factory AI:
|
|
34
|
+
|
|
35
|
+
- AGENTS.md
|
|
36
|
+
- .factory/skills/\*/SKILL.md
|
|
37
|
+
|
|
38
|
+
Other:
|
|
39
|
+
|
|
40
|
+
- AI_INSTRUCTIONS.md
|
|
41
|
+
- AI.md
|
|
42
|
+
- .ai/instructions.md
|
|
43
|
+
|
|
44
|
+
Use Glob tool to find these files.
|
|
45
|
+
|
|
46
|
+
## Step 2: Read and Analyze
|
|
47
|
+
|
|
48
|
+
For each discovered file:
|
|
49
|
+
|
|
50
|
+
1. Read the full content using the Read tool
|
|
51
|
+
2. Identify sections by headers (##, ###) and patterns
|
|
52
|
+
3. Classify content type using the mapping table below
|
|
53
|
+
4. Note any tool-specific content that may need special handling
|
|
54
|
+
|
|
55
|
+
## Step 3: Content Mapping
|
|
56
|
+
|
|
57
|
+
Map source content to PromptScript blocks:
|
|
58
|
+
|
|
59
|
+
| Source Pattern | PromptScript Block |
|
|
60
|
+
| ------------------------------------ | ------------------ |
|
|
61
|
+
| You are, persona, identity, role | @identity |
|
|
62
|
+
| Tech stack, languages, frameworks | @context |
|
|
63
|
+
| Coding standards, conventions, rules | @standards |
|
|
64
|
+
| Don't, Never, restrictions | @restrictions |
|
|
65
|
+
| Commands, shortcuts | @shortcuts |
|
|
66
|
+
| API docs, references, knowledge base | @knowledge |
|
|
67
|
+
| Parameters, config values | @params |
|
|
68
|
+
| File patterns, globs, applyTo | @guards |
|
|
69
|
+
| Skills, capabilities | @skills |
|
|
70
|
+
| Agents, subagents | @agents |
|
|
71
|
+
| Local-only settings | @local |
|
|
72
|
+
|
|
73
|
+
## Step 4: Generate PromptScript
|
|
74
|
+
|
|
75
|
+
### Required: @meta block
|
|
76
|
+
|
|
77
|
+
Every PromptScript file needs metadata with id and syntax fields.
|
|
78
|
+
|
|
79
|
+
### Identity (persona)
|
|
80
|
+
|
|
81
|
+
Convert persona descriptions to @identity block with triple-quote string.
|
|
82
|
+
|
|
83
|
+
### Context (project info)
|
|
84
|
+
|
|
85
|
+
Convert tech stack to @context block with structured properties
|
|
86
|
+
like project, languages, frameworks.
|
|
87
|
+
|
|
88
|
+
### Standards (conventions)
|
|
89
|
+
|
|
90
|
+
Convert coding standards to @standards block organized by category:
|
|
91
|
+
code, naming, commits, etc.
|
|
92
|
+
|
|
93
|
+
### Restrictions (don'ts)
|
|
94
|
+
|
|
95
|
+
Convert restrictions to @restrictions block using dash prefix for each item.
|
|
96
|
+
|
|
97
|
+
### Shortcuts (commands)
|
|
98
|
+
|
|
99
|
+
Convert custom commands to @shortcuts block. Simple shortcuts use
|
|
100
|
+
key-value format. Complex shortcuts use object format with
|
|
101
|
+
prompt, description, and content fields.
|
|
102
|
+
|
|
103
|
+
### Knowledge (references)
|
|
104
|
+
|
|
105
|
+
Convert API docs and reference material to @knowledge block
|
|
106
|
+
using triple-quote string for rich content.
|
|
107
|
+
|
|
108
|
+
### Guards (file patterns)
|
|
109
|
+
|
|
110
|
+
Convert file-specific rules to @guards block with globs array
|
|
111
|
+
specifying file patterns.
|
|
112
|
+
|
|
113
|
+
### Params (configuration)
|
|
114
|
+
|
|
115
|
+
Convert configuration parameters to @params block with type annotations:
|
|
116
|
+
range(), enum(), boolean.
|
|
117
|
+
|
|
118
|
+
### Skills (capabilities)
|
|
119
|
+
|
|
120
|
+
Convert skill definitions to @skills block with description,
|
|
121
|
+
trigger, and content fields.
|
|
122
|
+
|
|
123
|
+
### Agents (subagents)
|
|
124
|
+
|
|
125
|
+
Convert agent definitions to @agents block with description,
|
|
126
|
+
tools, model, and content fields.
|
|
127
|
+
|
|
128
|
+
## Step 5: File Organization
|
|
129
|
+
|
|
130
|
+
Simple Projects - single file structure:
|
|
131
|
+
|
|
132
|
+
- .promptscript/project.prs
|
|
133
|
+
- promptscript.yaml
|
|
134
|
+
|
|
135
|
+
Complex Projects - modular file structure:
|
|
136
|
+
|
|
137
|
+
- .promptscript/project.prs (main with @use imports)
|
|
138
|
+
- .promptscript/context.prs
|
|
139
|
+
- .promptscript/standards.prs
|
|
140
|
+
- .promptscript/restrictions.prs
|
|
141
|
+
- .promptscript/commands.prs
|
|
142
|
+
- promptscript.yaml
|
|
143
|
+
|
|
144
|
+
## Step 6: Configuration
|
|
145
|
+
|
|
146
|
+
Create promptscript.yaml with:
|
|
147
|
+
|
|
148
|
+
- version: '1'
|
|
149
|
+
- project.id
|
|
150
|
+
- input.entry pointing to main .prs file
|
|
151
|
+
- targets for github, claude, cursor, factory, etc.
|
|
152
|
+
|
|
153
|
+
## Step 7: Validation
|
|
154
|
+
|
|
155
|
+
After generating PromptScript files:
|
|
156
|
+
|
|
157
|
+
1. Validate syntax: prs validate
|
|
158
|
+
2. Test compilation: prs compile --dry-run
|
|
159
|
+
3. Compare output with original files
|
|
160
|
+
4. Iterate if content is missing or incorrect
|
|
161
|
+
|
|
162
|
+
## Common Patterns
|
|
163
|
+
|
|
164
|
+
### Merging Multiple Sources
|
|
165
|
+
|
|
166
|
+
When instructions exist in multiple files:
|
|
167
|
+
|
|
168
|
+
1. Identity: Take from most detailed source
|
|
169
|
+
2. Standards: Merge all, deduplicate
|
|
170
|
+
3. Restrictions: Combine all (union)
|
|
171
|
+
4. Commands: Merge, resolve conflicts
|
|
172
|
+
|
|
173
|
+
### Tool-Specific Content
|
|
174
|
+
|
|
175
|
+
Handle tool-specific content:
|
|
176
|
+
|
|
177
|
+
- GitHub prompts: Use @shortcuts with prompt: true
|
|
178
|
+
- Claude agents: Use @agents block
|
|
179
|
+
- Cursor rules: Map to @standards
|
|
180
|
+
- Local content: Use @local block
|
|
181
|
+
|
|
182
|
+
### Preserving Formatting
|
|
183
|
+
|
|
184
|
+
Use triple-quote multiline strings for:
|
|
185
|
+
|
|
186
|
+
- Rich markdown content
|
|
187
|
+
- Code examples
|
|
188
|
+
- Complex instructions
|
|
189
|
+
|
|
190
|
+
## Syntax Rules
|
|
191
|
+
|
|
192
|
+
Quick reference for PromptScript syntax:
|
|
193
|
+
|
|
194
|
+
- Strings: quoted or identifier
|
|
195
|
+
- Multi-line: triple quotes
|
|
196
|
+
- Arrays: [item1, item2] or - item prefix
|
|
197
|
+
- Objects: { key: value }
|
|
198
|
+
- Comments: # comment
|
|
199
|
+
- Required @meta fields: id, syntax
|
|
200
|
+
|
|
201
|
+
## Quality Checklist
|
|
202
|
+
|
|
203
|
+
Before completing migration:
|
|
204
|
+
|
|
205
|
+
- @meta block has id and syntax
|
|
206
|
+
- Identity is clear and specific
|
|
207
|
+
- Standards are organized by category
|
|
208
|
+
- Restrictions use dash prefix (-)
|
|
209
|
+
- Shortcuts work in target tools
|
|
210
|
+
- prs validate passes
|
|
211
|
+
- prs compile produces correct output
|
|
212
|
+
- No duplicate content across blocks
|
|
213
|
+
|
|
214
|
+
## Troubleshooting
|
|
215
|
+
|
|
216
|
+
### Missing @meta Error
|
|
217
|
+
|
|
218
|
+
Add required metadata block at the start.
|
|
219
|
+
|
|
220
|
+
### Multiline String in Object Error
|
|
221
|
+
|
|
222
|
+
Assign multiline strings to named keys, don't leave them loose
|
|
223
|
+
inside objects.
|
|
224
|
+
|
|
225
|
+
### Content Not Appearing in Output
|
|
226
|
+
|
|
227
|
+
Check block names match expected patterns and
|
|
228
|
+
verify syntax with prs validate --verbose.
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: promptscript
|
|
3
|
+
description: >-
|
|
4
|
+
PromptScript language expert for reading, writing, modifying, and
|
|
5
|
+
troubleshooting .prs files. Use when working with PromptScript syntax,
|
|
6
|
+
creating or editing .prs files, adding blocks like @identity, @standards,
|
|
7
|
+
@restrictions, @shortcuts, @skills, or @agents, configuring
|
|
8
|
+
promptscript.yaml, resolving compilation errors, understanding inheritance
|
|
9
|
+
(@inherit) and composition (@use, @extend), or migrating AI instructions
|
|
10
|
+
to PromptScript. Also use when asked about compilation targets (GitHub
|
|
11
|
+
Copilot, Claude Code, Cursor, Antigravity, Factory AI, and 30+ other
|
|
12
|
+
AI coding agents).
|
|
13
|
+
license: MIT
|
|
14
|
+
metadata:
|
|
15
|
+
author: PromptScript
|
|
16
|
+
homepage: https://getpromptscript.dev
|
|
17
|
+
compatibility:
|
|
18
|
+
- claude-code
|
|
19
|
+
- github-copilot
|
|
20
|
+
- cursor
|
|
21
|
+
- factory-ai
|
|
22
|
+
- gemini-cli
|
|
23
|
+
- opencode
|
|
24
|
+
- windsurf
|
|
25
|
+
- cline
|
|
26
|
+
- roo
|
|
27
|
+
- codex
|
|
28
|
+
- continue
|
|
29
|
+
- augment
|
|
30
|
+
- goose
|
|
31
|
+
- kilo
|
|
32
|
+
- amp
|
|
33
|
+
- trae
|
|
34
|
+
- junie
|
|
35
|
+
- kiro-cli
|
|
36
|
+
allowed-tools:
|
|
37
|
+
- Read
|
|
38
|
+
- Write
|
|
39
|
+
- Glob
|
|
40
|
+
- Grep
|
|
41
|
+
- Bash
|
|
42
|
+
user-invocable: true
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
# PromptScript Language Guide
|
|
46
|
+
|
|
47
|
+
PromptScript is a domain-specific language that compiles `.prs` files into native instruction formats for AI coding assistants (GitHub Copilot, Claude Code, Cursor, Antigravity, Factory AI, OpenCode, Gemini CLI). One source of truth, multiple outputs.
|
|
48
|
+
|
|
49
|
+
## File Structure
|
|
50
|
+
|
|
51
|
+
A `.prs` file is made of blocks. Order doesn't matter except `@meta` should come first by convention.
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
# Comments start with #
|
|
55
|
+
|
|
56
|
+
@meta { ... } # Required metadata
|
|
57
|
+
@inherit @path # Single inheritance (optional)
|
|
58
|
+
@use @path [as alias] # Imports/mixins (optional, multiple)
|
|
59
|
+
|
|
60
|
+
@identity { ... } # AI persona
|
|
61
|
+
@context { ... } # Project context
|
|
62
|
+
@standards { ... } # Coding conventions
|
|
63
|
+
@restrictions { ... } # Hard rules
|
|
64
|
+
@shortcuts { ... } # Command aliases
|
|
65
|
+
@knowledge { ... } # Reference documentation
|
|
66
|
+
@skills { ... } # Reusable skill definitions
|
|
67
|
+
@agents { ... } # Subagent definitions
|
|
68
|
+
@params { ... } # Template parameters
|
|
69
|
+
@guards { ... } # File globs and priorities
|
|
70
|
+
@local { ... } # Private config (not committed)
|
|
71
|
+
@extend path { ... } # Modify imported blocks
|
|
72
|
+
@custom-name { ... } # Arbitrary named blocks
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Content Types
|
|
76
|
+
|
|
77
|
+
PromptScript has three content types inside blocks:
|
|
78
|
+
|
|
79
|
+
### Text Content
|
|
80
|
+
|
|
81
|
+
Use triple quotes (three double-quote characters) to wrap multiline text.
|
|
82
|
+
Text is automatically dedented - leading whitespace from source indentation is stripped.
|
|
83
|
+
Use for prose, markdown, or freeform content.
|
|
84
|
+
|
|
85
|
+
Example: `@identity` with a text block describing an AI persona starting with "You are..."
|
|
86
|
+
|
|
87
|
+
### Object Content (key-value pairs)
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
@context {
|
|
91
|
+
project: "My App"
|
|
92
|
+
team: "Frontend"
|
|
93
|
+
monorepo: {
|
|
94
|
+
tool: "Nx"
|
|
95
|
+
packageManager: "pnpm"
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Values can be strings (quoted or unquoted), numbers, booleans, nested objects, or arrays.
|
|
101
|
+
|
|
102
|
+
### Array Content
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
@standards {
|
|
106
|
+
code: [
|
|
107
|
+
"Use strict TypeScript",
|
|
108
|
+
"Named exports only"
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
@restrictions {
|
|
113
|
+
- "Never use any type"
|
|
114
|
+
- "Never commit secrets"
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Mixed Content
|
|
119
|
+
|
|
120
|
+
Blocks can contain both object properties and text in the same block.
|
|
121
|
+
Place the triple-quoted text block alongside key-value pairs.
|
|
122
|
+
|
|
123
|
+
## Block Reference
|
|
124
|
+
|
|
125
|
+
### @meta (required)
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
@meta {
|
|
129
|
+
id: "project-id" # Required: unique identifier
|
|
130
|
+
syntax: "1.0.0" # Required: syntax version (semver)
|
|
131
|
+
org: "Company Name" # Optional
|
|
132
|
+
team: "Frontend" # Optional
|
|
133
|
+
tags: [react, ts] # Optional
|
|
134
|
+
params: { # Optional: template parameters
|
|
135
|
+
projectName: string
|
|
136
|
+
port: number = 3000
|
|
137
|
+
debug?: boolean
|
|
138
|
+
framework: enum("react", "vue") = "react"
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### @identity
|
|
144
|
+
|
|
145
|
+
Defines AI persona. Start with "You are..." for consistent output across all formatters.
|
|
146
|
+
Contains a triple-quoted text block with the persona description.
|
|
147
|
+
|
|
148
|
+
### @context
|
|
149
|
+
|
|
150
|
+
Project context with structured properties (project, team, languages, runtime)
|
|
151
|
+
plus optional triple-quoted text for architecture details, diagrams, etc.
|
|
152
|
+
|
|
153
|
+
### @standards
|
|
154
|
+
|
|
155
|
+
Category-based conventions. Any category name is valid:
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
@standards {
|
|
159
|
+
typescript: ["Strict mode", "No any type"]
|
|
160
|
+
naming: ["Files: kebab-case.ts", "Classes: PascalCase"]
|
|
161
|
+
git: {
|
|
162
|
+
format: "Conventional Commits"
|
|
163
|
+
types: [feat, fix, docs, refactor, test, chore]
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### @restrictions
|
|
169
|
+
|
|
170
|
+
Hard rules as a list of dash-prefixed strings:
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
@restrictions {
|
|
174
|
+
- "Never expose API keys"
|
|
175
|
+
- "Never commit secrets to version control"
|
|
176
|
+
- "Always validate user input"
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### @shortcuts
|
|
181
|
+
|
|
182
|
+
Simple strings appear as documentation. Objects with `prompt: true` generate
|
|
183
|
+
executable prompt/command files for GitHub Copilot and Cursor:
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
@shortcuts {
|
|
187
|
+
"/review": "Review code for quality"
|
|
188
|
+
"/test": {
|
|
189
|
+
prompt: true
|
|
190
|
+
description: "Write unit tests"
|
|
191
|
+
content: (triple-quoted text with instructions)
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### @skills
|
|
197
|
+
|
|
198
|
+
Reusable skill definitions with metadata:
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
@skills {
|
|
202
|
+
commit: {
|
|
203
|
+
description: "Create git commits"
|
|
204
|
+
trigger: "commit, git commit"
|
|
205
|
+
disableModelInvocation: true
|
|
206
|
+
userInvocable: true
|
|
207
|
+
allowedTools: ["Bash", "Read"]
|
|
208
|
+
content: (triple-quoted text with skill instructions)
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
Properties: description (required), content (required), trigger, disableModelInvocation,
|
|
214
|
+
userInvocable, allowedTools, context ("fork" or "inherit"), agent.
|
|
215
|
+
|
|
216
|
+
### @agents
|
|
217
|
+
|
|
218
|
+
Custom subagent definitions:
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
@agents {
|
|
222
|
+
code-reviewer: {
|
|
223
|
+
description: "Reviews code quality"
|
|
224
|
+
tools: ["Read", "Grep", "Glob", "Bash"]
|
|
225
|
+
model: "sonnet"
|
|
226
|
+
permissionMode: "default"
|
|
227
|
+
content: (triple-quoted text with agent instructions)
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### @knowledge
|
|
233
|
+
|
|
234
|
+
Reference documentation as triple-quoted text. Used for command references,
|
|
235
|
+
API docs, and other material that should appear in the output.
|
|
236
|
+
|
|
237
|
+
### @params
|
|
238
|
+
|
|
239
|
+
Template parameter definitions with types: string, number, boolean, enum("a", "b").
|
|
240
|
+
Optional parameters use `?` suffix. Defaults use `= value`.
|
|
241
|
+
|
|
242
|
+
### @guards
|
|
243
|
+
|
|
244
|
+
File glob patterns and priority rules for path-specific instructions.
|
|
245
|
+
|
|
246
|
+
### @local
|
|
247
|
+
|
|
248
|
+
Private local configuration. Not included in compiled output or committed to git.
|
|
249
|
+
|
|
250
|
+
## Inheritance and Composition
|
|
251
|
+
|
|
252
|
+
### @inherit (single, linear)
|
|
253
|
+
|
|
254
|
+
One per file. Child blocks merge on top of parent:
|
|
255
|
+
|
|
256
|
+
```
|
|
257
|
+
@inherit @company/frontend-team
|
|
258
|
+
@inherit ./parent
|
|
259
|
+
@inherit @stacks/react-app(projectName: "my-app", port: 3000)
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### @use (multiple, mixins)
|
|
263
|
+
|
|
264
|
+
Import and merge fragments:
|
|
265
|
+
|
|
266
|
+
```
|
|
267
|
+
@use @core/security
|
|
268
|
+
@use @core/quality
|
|
269
|
+
@use ./local-config
|
|
270
|
+
@use @core/typescript as ts # alias enables @extend access
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
Merge rules:
|
|
274
|
+
|
|
275
|
+
- Text: concatenated with deduplication
|
|
276
|
+
- Objects: deep merged (target wins on conflicts)
|
|
277
|
+
- Arrays: unique concatenation
|
|
278
|
+
|
|
279
|
+
### @extend (modify imported blocks)
|
|
280
|
+
|
|
281
|
+
Requires an aliased @use:
|
|
282
|
+
|
|
283
|
+
```
|
|
284
|
+
@use @core/typescript as ts
|
|
285
|
+
|
|
286
|
+
@extend ts.standards {
|
|
287
|
+
testing: { coverage: 95 }
|
|
288
|
+
}
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
## Configuration: promptscript.yaml
|
|
292
|
+
|
|
293
|
+
```
|
|
294
|
+
version: '1'
|
|
295
|
+
input:
|
|
296
|
+
entry: .promptscript/project.prs
|
|
297
|
+
include: ['.promptscript/**/*.prs']
|
|
298
|
+
targets:
|
|
299
|
+
github:
|
|
300
|
+
version: full # simple | multifile | full
|
|
301
|
+
claude:
|
|
302
|
+
version: full
|
|
303
|
+
cursor:
|
|
304
|
+
version: standard
|
|
305
|
+
antigravity:
|
|
306
|
+
version: frontmatter
|
|
307
|
+
factory:
|
|
308
|
+
version: full
|
|
309
|
+
windsurf: # 31 additional agents supported
|
|
310
|
+
version: simple
|
|
311
|
+
cline:
|
|
312
|
+
version: simple
|
|
313
|
+
registry:
|
|
314
|
+
git: https://github.com/org/registry.git
|
|
315
|
+
ref: main
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
## CLI Commands
|
|
319
|
+
|
|
320
|
+
```
|
|
321
|
+
prs init # Initialize project
|
|
322
|
+
prs init --migrate # Initialize + migration skills
|
|
323
|
+
prs compile # Compile to all targets
|
|
324
|
+
prs compile --watch # Watch mode
|
|
325
|
+
prs validate --strict # Validate syntax
|
|
326
|
+
prs pull # Update registry
|
|
327
|
+
prs diff --target claude # Show compilation diff
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
## Output Targets
|
|
331
|
+
|
|
332
|
+
38 supported targets. Key examples:
|
|
333
|
+
|
|
334
|
+
| Target | Main File | Skills |
|
|
335
|
+
| ----------- | ------------------------------- | ------------------------------ |
|
|
336
|
+
| GitHub | .github/copilot-instructions.md | .github/skills/\*/SKILL.md |
|
|
337
|
+
| Claude | CLAUDE.md | .claude/skills/\*/SKILL.md |
|
|
338
|
+
| Cursor | .cursor/rules/project.mdc | .cursor/commands/\*.md |
|
|
339
|
+
| Antigravity | .agent/rules/project.md | .agent/rules/\*.md |
|
|
340
|
+
| Factory | AGENTS.md | .factory/skills/\*/SKILL.md |
|
|
341
|
+
| OpenCode | OPENCODE.md | .opencode/skills/\*/SKILL.md |
|
|
342
|
+
| Gemini | GEMINI.md | .gemini/skills/\*/skill.md |
|
|
343
|
+
| Windsurf | .windsurf/rules/project.md | .windsurf/skills/\*/SKILL.md |
|
|
344
|
+
| Cline | .clinerules | .agents/skills/\*/SKILL.md |
|
|
345
|
+
| Roo Code | .roorules | .roo/skills/\*/SKILL.md |
|
|
346
|
+
| Codex | AGENTS.md | .agents/skills/\*/SKILL.md |
|
|
347
|
+
| Continue | .continue/rules/project.md | .continue/skills/\*/SKILL.md |
|
|
348
|
+
| + 26 more | | See full list in documentation |
|
|
349
|
+
|
|
350
|
+
## Project Organization
|
|
351
|
+
|
|
352
|
+
Typical modular structure:
|
|
353
|
+
|
|
354
|
+
```
|
|
355
|
+
.promptscript/
|
|
356
|
+
project.prs # Entry: @meta, @inherit, @use, @identity, @agents
|
|
357
|
+
context.prs # @context (architecture, tech stack)
|
|
358
|
+
standards.prs # @standards (coding conventions)
|
|
359
|
+
restrictions.prs # @restrictions (hard rules)
|
|
360
|
+
commands.prs # @shortcuts and @knowledge
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
The entry file uses `@use ./context`, `@use ./standards`, etc. to compose them.
|
|
364
|
+
|
|
365
|
+
## Common Mistakes
|
|
366
|
+
|
|
367
|
+
1. Missing @meta block - every .prs file needs `@meta` with `id` and `syntax`
|
|
368
|
+
2. Multiple @inherit - only one per file; use `@use` for additional imports
|
|
369
|
+
3. @extend without alias - requires prior `@use ... as alias`
|
|
370
|
+
4. Unquoted strings with special chars - quote strings containing `:`, `#`, `{`, `}`
|
|
371
|
+
5. Forgetting to compile - `.prs` changes need `prs compile` to take effect
|
|
372
|
+
6. Triple quotes inside triple quotes - not supported; describe content textually instead
|
package/src/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../../packages/cli/src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../../packages/cli/src/cli.ts"],"names":[],"mappings":";AAmIA;;;GAGG;AACH,wBAAgB,GAAG,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,IAAI,CAEvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../../../packages/cli/src/commands/compile.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAQlD,OAAO,EAAE,KAAK,WAAW,EAAyB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../../../packages/cli/src/commands/compile.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAQlD,OAAO,EAAE,KAAK,WAAW,EAAyB,MAAM,gBAAgB,CAAC;AAwTzE;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,cAAc,EACvB,QAAQ,GAAE,WAAqC,GAC9C,OAAO,CAAC,IAAI,CAAC,CA8Gf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../../../packages/cli/src/commands/diff.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAmG/C;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../../../packages/cli/src/commands/diff.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAmG/C;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFrE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../../packages/cli/src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../../packages/cli/src/commands/init.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAyB,MAAM,gBAAgB,CAAC;AAmBzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAyD/C;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,EACpB,QAAQ,GAAE,WAAqC,GAC9C,OAAO,CAAC,IAAI,CAAC,CAyJf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../../../packages/cli/src/commands/pull.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAa/C;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../../../packages/cli/src/commands/pull.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAa/C;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqErE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/cli/src/commands/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CA2BhE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { RegistryInitOptions } from '../../types.js';
|
|
2
|
+
import { type CliServices } from '../../services.js';
|
|
3
|
+
/**
|
|
4
|
+
* Initialize a new PromptScript registry.
|
|
5
|
+
*/
|
|
6
|
+
export declare function registryInitCommand(directory: string | undefined, options: RegistryInitOptions, services?: CliServices): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../../../packages/cli/src/commands/registry/init.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,KAAK,WAAW,EAAyB,MAAM,mBAAmB,CAAC;AAM5E;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,GAAE,WAAqC,GAC9C,OAAO,CAAC,IAAI,CAAC,CAyFf"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { RegistryPublishOptions } from '../../types.js';
|
|
2
|
+
import { type CliServices } from '../../services.js';
|
|
3
|
+
/**
|
|
4
|
+
* Publish a PromptScript registry to its remote.
|
|
5
|
+
*/
|
|
6
|
+
export declare function registryPublishCommand(path: string | undefined, options: RegistryPublishOptions, services?: CliServices): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=publish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../../../../../packages/cli/src/commands/registry/publish.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,KAAK,WAAW,EAAyB,MAAM,mBAAmB,CAAC;AAI5E;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,sBAAsB,EAC/B,QAAQ,GAAE,WAAqC,GAC9C,OAAO,CAAC,IAAI,CAAC,CA4Gf"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { RegistryValidateOptions } from '../../types.js';
|
|
2
|
+
import { type CliServices } from '../../services.js';
|
|
3
|
+
/**
|
|
4
|
+
* Validate a PromptScript registry.
|
|
5
|
+
*/
|
|
6
|
+
export declare function registryValidateCommand(path: string | undefined, options: RegistryValidateOptions, services?: CliServices): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../../../../packages/cli/src/commands/registry/validate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,KAAK,WAAW,EAAyB,MAAM,mBAAmB,CAAC;AAI5E;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,uBAAuB,EAChC,QAAQ,GAAE,WAAqC,GAC9C,OAAO,CAAC,IAAI,CAAC,CA6Df"}
|