prjct-cli 0.36.1 → 0.37.1

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.
@@ -1,19 +1,23 @@
1
1
  /**
2
2
  * AI Provider Types
3
3
  *
4
- * Abstractions for supporting multiple AI CLI agents (Claude Code, Gemini CLI).
5
- * Both agents share similar architectures, making compatibility achievable.
4
+ * Abstractions for supporting multiple AI coding agents:
5
+ * - Claude Code (CLI)
6
+ * - Gemini CLI (CLI)
7
+ * - Cursor IDE (GUI, project-level config)
6
8
  *
7
- * Key discovery: Skills use identical SKILL.md format for both providers.
9
+ * Key discovery: Skills use identical SKILL.md format for CLI providers.
10
+ * Cursor uses .mdc files with frontmatter for rules.
8
11
  *
9
12
  * @see https://geminicli.com/docs/cli/gemini-md/
10
13
  * @see https://geminicli.com/docs/cli/skills/
14
+ * @see https://cursor.com/docs/context/rules
11
15
  */
12
16
 
13
17
  /**
14
18
  * Supported AI provider names
15
19
  */
16
- export type AIProviderName = 'claude' | 'gemini'
20
+ export type AIProviderName = 'claude' | 'gemini' | 'cursor'
17
21
 
18
22
  /**
19
23
  * Command format for each provider
@@ -24,7 +28,7 @@ export type CommandFormat = 'md' | 'toml'
24
28
 
25
29
  /**
26
30
  * AI Provider configuration
27
- * Defines paths and formats for each AI CLI agent
31
+ * Defines paths and formats for each AI coding agent
28
32
  */
29
33
  export interface AIProviderConfig {
30
34
  /** Provider identifier */
@@ -33,33 +37,39 @@ export interface AIProviderConfig {
33
37
  /** Display name for UI/logs */
34
38
  displayName: string
35
39
 
36
- /** CLI command name (e.g., 'claude', 'gemini') */
37
- cliCommand: string
40
+ /** CLI command name (e.g., 'claude', 'gemini'). Null for GUI apps like Cursor */
41
+ cliCommand: string | null
38
42
 
39
- /** Global config directory (e.g., ~/.claude, ~/.gemini) */
40
- configDir: string
43
+ /** Global config directory (e.g., ~/.claude, ~/.gemini). Null for project-level only (Cursor) */
44
+ configDir: string | null
41
45
 
42
- /** Context file name (CLAUDE.md or GEMINI.md) */
46
+ /** Context file name (CLAUDE.md, GEMINI.md, or prjct.mdc for Cursor) */
43
47
  contextFile: string
44
48
 
45
- /** Skills directory (e.g., ~/.claude/skills, ~/.gemini/skills) */
46
- skillsDir: string
49
+ /** Skills directory (e.g., ~/.claude/skills). Null for providers without skill support */
50
+ skillsDir: string | null
47
51
 
48
- /** Commands directory relative to project (e.g., .claude/commands, .gemini/commands) */
52
+ /** Commands directory relative to project (e.g., .claude/commands, .cursor/commands) */
49
53
  commandsDir: string
50
54
 
55
+ /** Rules directory for project-level config (e.g., .cursor/rules). Only used by Cursor */
56
+ rulesDir?: string
57
+
51
58
  /** Command file format */
52
59
  commandFormat: CommandFormat
53
60
 
54
- /** Settings file name (settings.json for both) */
55
- settingsFile: string
61
+ /** Settings file name (settings.json). Null if not applicable */
62
+ settingsFile: string | null
56
63
 
57
- /** Project settings file (e.g., settings.local.json, settings.json) */
58
- projectSettingsFile: string
64
+ /** Project settings file (e.g., settings.local.json). Null if not applicable */
65
+ projectSettingsFile: string | null
59
66
 
60
- /** Ignore file name (.claudeignore, .geminiignore) */
67
+ /** Ignore file name (.claudeignore, .geminiignore, .cursorignore) */
61
68
  ignoreFile: string
62
69
 
70
+ /** Whether config is project-level only (no global config directory) */
71
+ isProjectLevel?: boolean
72
+
63
73
  /** URL for provider website */
64
74
  websiteUrl: string
65
75
 
@@ -88,16 +98,30 @@ export interface ProviderSelectionResult {
88
98
  /** Selected provider */
89
99
  provider: AIProviderName
90
100
 
91
- /** Whether user was prompted to choose (both installed) */
101
+ /** Whether user was prompted to choose (multiple installed) */
92
102
  userSelected: boolean
93
103
 
94
- /** Detection details */
104
+ /** Detection details for CLI-based providers */
95
105
  detection: {
96
106
  claude: ProviderDetectionResult
97
107
  gemini: ProviderDetectionResult
98
108
  }
99
109
  }
100
110
 
111
+ /**
112
+ * Result of Cursor project detection
113
+ */
114
+ export interface CursorProjectDetection {
115
+ /** Whether .cursor/ directory exists in project */
116
+ detected: boolean
117
+
118
+ /** Whether prjct router is installed */
119
+ routerInstalled: boolean
120
+
121
+ /** Project root path */
122
+ projectRoot?: string
123
+ }
124
+
101
125
  /**
102
126
  * Provider-aware branding configuration
103
127
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prjct-cli",
3
- "version": "0.36.1",
3
+ "version": "0.37.1",
4
4
  "description": "Context layer for AI agents. Project context for Claude Code, Gemini CLI, and more.",
5
5
  "main": "core/index.ts",
6
6
  "bin": {
@@ -15,6 +15,8 @@ All issue tracker integrations (Linear, JIRA, GitHub Issues, Monday.com) inherit
15
15
 
16
16
  - `{projectId}`: From `.prjct/prjct.config.json`
17
17
  - `{globalPath}`: `~/.prjct-cli/projects/{projectId}`
18
+ - `{agentName}`: Name of the AI agent (Claude Code, Gemini CLI)
19
+ - `{agentSettingsPath}`: Path to agent settings (settings.json)
18
20
  - `{args}`: User-provided arguments (subcommand)
19
21
  - `{tracker}`: The tracker name (linear, jira, github, monday)
20
22
  - `{mcpPrefix}`: MCP tool prefix (e.g., `mcp__linear__`, `mcp__atlassian__jira_`)
@@ -75,7 +77,7 @@ ELSE:
75
77
  ## Step 3: Install MCP Server (COMMON)
76
78
 
77
79
  ```
78
- READ: ~/.claude/settings.json (create {} if not exists)
80
+ READ: {agentSettingsPath} (create {} if not exists)
79
81
  CHECK: Does mcpServers.{mcpServerName} exist?
80
82
 
81
83
  IF not exists:
@@ -86,11 +88,11 @@ IF not exists:
86
88
  }
87
89
  }
88
90
 
89
- WRITE: ~/.claude/settings.json
91
+ WRITE: {agentSettingsPath}
90
92
 
91
93
  OUTPUT: "✅ Installed {TRACKER} MCP server"
92
94
  OUTPUT: ""
93
- OUTPUT: "⚠️ Restart Claude Code to activate the MCP server."
95
+ OUTPUT: "⚠️ Restart your AI agent ({agentName}) to activate the MCP server."
94
96
  OUTPUT: "Then run `p. {tracker} setup` again to complete configuration."
95
97
  STOP
96
98
  ```
@@ -104,7 +106,7 @@ CHECK: Are {mcpPrefix}* tools available?
104
106
 
105
107
  IF not available:
106
108
  OUTPUT: "{TRACKER} MCP is installed but not yet active."
107
- OUTPUT: "Restart Claude Code, then run `p. {tracker} setup` again."
109
+ OUTPUT: "Restart {agentName}, then run `p. {tracker} setup` again."
108
110
  STOP
109
111
  ```
110
112
 
@@ -238,7 +240,7 @@ Comment added to {ID}
238
240
  |-------|--------|
239
241
  | No project | "Run `p. init` first" |
240
242
  | Auth not configured | "Run `p. {tracker} setup` first" |
241
- | MCP tools not found | "Restart Claude Code after setup" |
243
+ | MCP tools not found | "Restart {agentName} after setup" |
242
244
  | Auth failed | Re-authenticate message |
243
245
  | Issue not found | "Issue {ID} not found in {TRACKER}" |
244
246
  | Rate limited | "Rate limited. Try again later" |
@@ -22,6 +22,8 @@ Manage GitHub Issues directly from prjct using MCP.
22
22
 
23
23
  - `{projectId}`: From `.prjct/prjct.config.json`
24
24
  - `{globalPath}`: `~/.prjct-cli/projects/{projectId}`
25
+ - `{agentName}`: Name of the AI agent (Claude Code, Gemini CLI)
26
+ - `{agentSettingsPath}`: Path to agent settings (settings.json)
25
27
  - `{args}`: User-provided arguments (subcommand)
26
28
 
27
29
  ---
@@ -81,14 +83,14 @@ IF not set:
81
83
  ## Step 3: Install MCP Server (if needed)
82
84
 
83
85
  ```
84
- READ: ~/.claude/settings.json (create {} if not exists)
86
+ READ: {agentSettingsPath} (create {} if not exists)
85
87
  CHECK: Does mcpServers.github exist?
86
88
 
87
89
  IF not exists:
88
90
  READ: templates/mcp-config.json
89
91
  EXTRACT: mcpServers.github
90
92
 
91
- MERGE into ~/.claude/settings.json:
93
+ MERGE into {agentSettingsPath}:
92
94
  {
93
95
  "mcpServers": {
94
96
  "github": {
@@ -101,11 +103,11 @@ IF not exists:
101
103
  }
102
104
  }
103
105
 
104
- WRITE: ~/.claude/settings.json
106
+ WRITE: {agentSettingsPath}
105
107
 
106
108
  OUTPUT: "✅ Installed GitHub MCP server"
107
109
  OUTPUT: ""
108
- OUTPUT: "⚠️ Restart Claude Code to activate the MCP server."
110
+ OUTPUT: "⚠️ Restart {agentName} to activate the MCP server."
109
111
  OUTPUT: "Then run `p. github setup` again to complete configuration."
110
112
  STOP
111
113
  ```
@@ -119,7 +121,7 @@ CHECK: Are mcp__github__* tools available?
119
121
 
120
122
  IF not available:
121
123
  OUTPUT: "GitHub MCP is installed but not yet active."
122
- OUTPUT: "Restart Claude Code, then run `p. github setup` again."
124
+ OUTPUT: "Restart {agentName}, then run `p. github setup` again."
123
125
  STOP
124
126
  ```
125
127
 
@@ -22,6 +22,21 @@ Create `.prjct/prjct.config.json`:
22
22
 
23
23
  Create `{globalPath}/project.json` with project name from package.json
24
24
 
25
+ ## Cursor IDE Detection
26
+
27
+ If `.cursor/` directory exists in project:
28
+ 1. Ask: "Cursor IDE detected. Configure prjct for Cursor?"
29
+ 2. If yes:
30
+ - Get npm root: `npm root -g`
31
+ - Copy router: `{npmRoot}/prjct-cli/templates/cursor/router.mdc` → `.cursor/rules/prjct.mdc`
32
+ - Copy commands: `{npmRoot}/prjct-cli/templates/cursor/p.md` → `.cursor/commands/p.md`
33
+ - Add to `.gitignore`:
34
+ ```
35
+ # prjct Cursor routers (regenerated per-developer)
36
+ .cursor/rules/prjct.mdc
37
+ .cursor/commands/p.md
38
+ ```
39
+
25
40
  Optional: Ask about JIRA/Linear integration
26
41
 
27
42
  **Output**:
@@ -30,6 +45,7 @@ Optional: Ask about JIRA/Linear integration
30
45
 
31
46
  Project ID: {uuid}
32
47
  Data: ~/.prjct-cli/projects/{uuid}/
48
+ Cursor: {configured/not detected}
33
49
 
34
50
  Next:
35
51
  - Analyze project → `p. sync`
@@ -22,6 +22,8 @@ Manage JIRA issues directly from prjct.
22
22
 
23
23
  - `{projectId}`: From `.prjct/prjct.config.json`
24
24
  - `{globalPath}`: `~/.prjct-cli/projects/{projectId}`
25
+ - `{agentName}`: Name of the AI agent (Claude Code, Gemini CLI)
26
+ - `{agentSettingsPath}`: Path to agent settings (settings.json)
25
27
  - `{args}`: User-provided arguments (subcommand)
26
28
 
27
29
  ---
@@ -82,14 +84,14 @@ IF file not found:
82
84
  ## Step 2: Install MCP Server (if needed)
83
85
 
84
86
  ```
85
- READ: ~/.claude/settings.json (create {} if not exists)
87
+ READ: {agentSettingsPath} (create {} if not exists)
86
88
  CHECK: Does mcpServers.Atlassian exist?
87
89
 
88
90
  IF not exists:
89
91
  READ: templates/mcp-config.json
90
92
  EXTRACT: mcpServers.Atlassian
91
93
 
92
- MERGE into ~/.claude/settings.json:
94
+ MERGE into {agentSettingsPath}:
93
95
  {
94
96
  "mcpServers": {
95
97
  "Atlassian": {
@@ -99,11 +101,11 @@ IF not exists:
99
101
  }
100
102
  }
101
103
 
102
- WRITE: ~/.claude/settings.json
104
+ WRITE: {agentSettingsPath}
103
105
 
104
106
  OUTPUT: "✅ Installed Atlassian MCP server"
105
107
  OUTPUT: ""
106
- OUTPUT: "⚠️ Restart Claude Code to activate the MCP server."
108
+ OUTPUT: "⚠️ Restart {agentName} to activate the MCP server."
107
109
  OUTPUT: "Then run `p. jira setup` again to complete configuration."
108
110
  STOP
109
111
  ```
@@ -122,9 +124,9 @@ ELSE IF mcp__atlassian__jira_* tools available:
122
124
  SET: authMode = "mcp"
123
125
 
124
126
  # MCP installed but not active
125
- ELSE IF mcpServers.Atlassian exists in settings.json:
127
+ ELSE IF mcpServers.Atlassian exists in {agentSettingsPath}:
126
128
  OUTPUT: "Atlassian MCP is installed but not yet active."
127
- OUTPUT: "Restart Claude Code, then run `p. jira setup` again."
129
+ OUTPUT: "Restart {agentName}, then run `p. jira setup` again."
128
130
  STOP
129
131
 
130
132
  # Neither available
@@ -22,6 +22,8 @@ Manage Linear issues directly from prjct using MCP (no SDK needed).
22
22
 
23
23
  - `{projectId}`: From `.prjct/prjct.config.json`
24
24
  - `{globalPath}`: `~/.prjct-cli/projects/{projectId}`
25
+ - `{agentName}`: Name of the AI agent (Claude Code, Gemini CLI)
26
+ - `{agentSettingsPath}`: Path to agent settings (settings.json)
25
27
  - `{args}`: User-provided arguments (subcommand)
26
28
 
27
29
  ---
@@ -64,14 +66,14 @@ IF file not found:
64
66
  ## Step 2: Install MCP Server (if needed)
65
67
 
66
68
  ```
67
- READ: ~/.claude/settings.json (create {} if not exists)
69
+ READ: {agentSettingsPath} (create {} if not exists)
68
70
  CHECK: Does mcpServers.linear exist?
69
71
 
70
72
  IF not exists:
71
73
  READ: templates/mcp-config.json
72
74
  EXTRACT: mcpServers.linear
73
75
 
74
- MERGE into ~/.claude/settings.json:
76
+ MERGE into {agentSettingsPath}:
75
77
  {
76
78
  "mcpServers": {
77
79
  "linear": {
@@ -81,11 +83,11 @@ IF not exists:
81
83
  }
82
84
  }
83
85
 
84
- WRITE: ~/.claude/settings.json
86
+ WRITE: {agentSettingsPath}
85
87
 
86
88
  OUTPUT: "✅ Installed Linear MCP server"
87
89
  OUTPUT: ""
88
- OUTPUT: "⚠️ Restart Claude Code to activate the MCP server."
90
+ OUTPUT: "⚠️ Restart {agentName} to activate the MCP server."
89
91
  OUTPUT: "Then run `p. linear setup` again to complete configuration."
90
92
  STOP
91
93
  ```
@@ -99,7 +101,7 @@ CHECK: Are mcp__linear__* tools available?
99
101
 
100
102
  IF not available:
101
103
  OUTPUT: "Linear MCP is installed but not yet active."
102
- OUTPUT: "Restart Claude Code, then run `p. linear setup` again."
104
+ OUTPUT: "Restart {agentName}, then run `p. linear setup` again."
103
105
  STOP
104
106
  ```
105
107
 
@@ -293,7 +295,7 @@ PARAMS:
293
295
 
294
296
  | Error | Action |
295
297
  |-------|--------|
296
- | MCP tools not found | "Add Linear MCP to settings, restart Claude" |
298
+ | MCP tools not found | "Add Linear MCP to settings, restart {agentName}" |
297
299
  | OAuth failed | "Re-authenticate via browser" |
298
300
  | Issue not found | "Issue {ID} not found in Linear" |
299
301
 
@@ -22,6 +22,8 @@ Manage Monday.com boards directly from prjct using MCP.
22
22
 
23
23
  - `{projectId}`: From `.prjct/prjct.config.json`
24
24
  - `{globalPath}`: `~/.prjct-cli/projects/{projectId}`
25
+ - `{agentName}`: Name of the AI agent (Claude Code, Gemini CLI)
26
+ - `{agentSettingsPath}`: Path to agent settings (settings.json)
25
27
  - `{args}`: User-provided arguments (subcommand)
26
28
 
27
29
  ---
@@ -63,14 +65,14 @@ IF file not found:
63
65
  ## Step 2: Install MCP Server (if needed)
64
66
 
65
67
  ```
66
- READ: ~/.claude/settings.json (create {} if not exists)
68
+ READ: {agentSettingsPath} (create {} if not exists)
67
69
  CHECK: Does mcpServers.monday exist?
68
70
 
69
71
  IF not exists:
70
72
  READ: templates/mcp-config.json
71
73
  EXTRACT: mcpServers.monday
72
74
 
73
- MERGE into ~/.claude/settings.json:
75
+ MERGE into {agentSettingsPath}:
74
76
  {
75
77
  "mcpServers": {
76
78
  "monday": {
@@ -80,11 +82,11 @@ IF not exists:
80
82
  }
81
83
  }
82
84
 
83
- WRITE: ~/.claude/settings.json
85
+ WRITE: {agentSettingsPath}
84
86
 
85
87
  OUTPUT: "✅ Installed Monday.com MCP server"
86
88
  OUTPUT: ""
87
- OUTPUT: "⚠️ Restart Claude Code to activate the MCP server."
89
+ OUTPUT: "⚠️ Restart {agentName} to activate the MCP server."
88
90
  OUTPUT: "Then run `p. monday setup` again to complete configuration."
89
91
  STOP
90
92
  ```
@@ -98,7 +100,7 @@ CHECK: Are mcp__monday__* tools available?
98
100
 
99
101
  IF not available:
100
102
  OUTPUT: "Monday MCP is installed but not yet active."
101
- OUTPUT: "Restart Claude Code, then run `p. monday setup` again."
103
+ OUTPUT: "Restart {agentName}, then run `p. monday setup` again."
102
104
  STOP
103
105
  ```
104
106
 
@@ -224,7 +226,7 @@ Next: Work on the task, then `p. done`
224
226
 
225
227
  | Error | Action |
226
228
  |-------|--------|
227
- | MCP tools not found | "Add Monday MCP to settings, restart Claude" |
229
+ | MCP tools not found | "Add Monday MCP to settings, restart {agentName}" |
228
230
  | OAuth failed | "Re-authenticate via browser" |
229
231
  | Item not found | "Item not found in board" |
230
232
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- allowed-tools: [Bash]
2
+ allowed-tools: [Bash, Read, Write]
3
3
  ---
4
4
 
5
5
  # p. sync
@@ -10,12 +10,22 @@ prjct sync
10
10
 
11
11
  CLI handles: git analysis, context generation, agents, skills.
12
12
 
13
+ ## Cursor Router Regeneration
14
+
15
+ If `.cursor/` exists but `.cursor/rules/prjct.mdc` is missing:
16
+ 1. Get npm root: `npm root -g`
17
+ 2. Create `.cursor/rules/` directory if needed
18
+ 3. Copy router: `{npmRoot}/prjct-cli/templates/cursor/router.mdc` → `.cursor/rules/prjct.mdc`
19
+ 4. Copy commands: `{npmRoot}/prjct-cli/templates/cursor/p.md` → `.cursor/commands/p.md`
20
+ 5. Report: "Cursor routers regenerated"
21
+
13
22
  **Output**:
14
23
  ```
15
24
  ✅ Synced: {projectName}
16
25
 
17
26
  Ecosystem: {ecosystem}
18
27
  Agents: {count} generated
28
+ Cursor: {regenerated/ready/not detected}
19
29
 
20
30
  Next:
21
31
  - Start work → `p. task "description"`
@@ -0,0 +1,8 @@
1
+ # /bug - Report a bug
2
+
3
+ **ARGUMENTS**: {{args}}
4
+
5
+ Run `npm root -g` to get npm global root, then read and execute:
6
+ `{npmRoot}/prjct-cli/templates/commands/bug.md`
7
+
8
+ Pass the arguments as the bug description.
@@ -0,0 +1,4 @@
1
+ # /done - Complete current subtask
2
+
3
+ Run `npm root -g` to get npm global root, then read and execute:
4
+ `{npmRoot}/prjct-cli/templates/commands/done.md`
@@ -0,0 +1,6 @@
1
+ # /pause - Pause current task
2
+
3
+ **ARGUMENTS**: {{args}}
4
+
5
+ Run `npm root -g` to get npm global root, then read and execute:
6
+ `{npmRoot}/prjct-cli/templates/commands/pause.md`
@@ -0,0 +1,4 @@
1
+ # /resume - Resume paused task
2
+
3
+ Run `npm root -g` to get npm global root, then read and execute:
4
+ `{npmRoot}/prjct-cli/templates/commands/resume.md`
@@ -0,0 +1,8 @@
1
+ # /ship - Ship feature with PR + version bump
2
+
3
+ **ARGUMENTS**: {{args}}
4
+
5
+ Run `npm root -g` to get npm global root, then read and execute:
6
+ `{npmRoot}/prjct-cli/templates/commands/ship.md`
7
+
8
+ Pass the arguments as the feature name (optional).
@@ -0,0 +1,4 @@
1
+ # /sync - Analyze project
2
+
3
+ Run `npm root -g` to get npm global root, then read and execute:
4
+ `{npmRoot}/prjct-cli/templates/commands/sync.md`
@@ -0,0 +1,8 @@
1
+ # /task - Start a task
2
+
3
+ **ARGUMENTS**: {{args}}
4
+
5
+ Run `npm root -g` to get npm global root, then read and execute:
6
+ `{npmRoot}/prjct-cli/templates/commands/task.md`
7
+
8
+ Pass the arguments as the task description.
@@ -0,0 +1,29 @@
1
+ # p. Command Router for Cursor IDE
2
+
3
+ **ARGUMENTS**: {{args}}
4
+
5
+ ## Instructions
6
+
7
+ 1. **Get npm root**: Run `npm root -g`
8
+ 2. **Parse arguments**: First word = `command`, rest = `commandArgs`
9
+ 3. **Read template**: `{npmRoot}/prjct-cli/templates/commands/{command}.md`
10
+ 4. **Execute**: Follow the template with `commandArgs` as input
11
+
12
+ ## Example
13
+
14
+ If arguments = `task fix the login bug`:
15
+ - command = `task`
16
+ - commandArgs = `fix the login bug`
17
+ - npm root → `/opt/homebrew/lib/node_modules`
18
+ - Read: `/opt/homebrew/lib/node_modules/prjct-cli/templates/commands/task.md`
19
+ - Execute template with: `fix the login bug`
20
+
21
+ ## Available Commands
22
+
23
+ task, done, ship, sync, init, idea, dash, next, pause, resume, bug,
24
+ linear, github, jira, monday, enrich, feature, prd, plan, review,
25
+ merge, git, test, cleanup, design, analyze, history, update, spec
26
+
27
+ ## Action
28
+
29
+ NOW run `npm root -g` and read the appropriate command template.
@@ -0,0 +1,28 @@
1
+ ---
2
+ description: "prjct - Context layer for AI coding agents"
3
+ alwaysApply: true
4
+ ---
5
+
6
+ # prjct
7
+
8
+ You are using **prjct**, a context layer for AI coding agents.
9
+
10
+ ## Load Full Instructions
11
+
12
+ 1. Run: `npm root -g` to get the npm global root
13
+ 2. Read: `{npmRoot}/prjct-cli/templates/global/CURSOR.mdc`
14
+ 3. Follow those instructions for ALL `/command` requests
15
+
16
+ ## Quick Reference
17
+
18
+ | Command | Action |
19
+ |---------|--------|
20
+ | `/sync` | Analyze project, generate agents |
21
+ | `/task "..."` | Start a task |
22
+ | `/done` | Complete subtask |
23
+ | `/ship` | Ship with PR + version |
24
+
25
+ ## Note
26
+
27
+ This router auto-regenerates with `/sync` if deleted.
28
+ Full instructions are in the npm package (always up-to-date).