prjct-cli 0.5.0 ā 0.5.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.
- package/CHANGELOG.md +16 -0
- package/README.md +3 -3
- package/core/commands.js +71 -58
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.5.1] - 2025-10-02
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- **Critical: `prjct start` Command Error** - Fixed "commandInstaller.detectEditors is not a function" error
|
|
14
|
+
- **Root Cause**: v0.5.0 refactored `command-installer.js` to Claude-only architecture but didn't update calling code
|
|
15
|
+
- **Files Modified**: `core/commands.js` (lines 2227-2374)
|
|
16
|
+
- **Changes**:
|
|
17
|
+
- Refactored `start()` function to use `detectClaude()` instead of `detectEditors()`
|
|
18
|
+
- Replaced `interactiveInstall()` with `installCommands()`
|
|
19
|
+
- Removed multi-editor logic (Cursor, Windsurf references)
|
|
20
|
+
- Updated messaging to be Claude-only with download link
|
|
21
|
+
- Simplified `setup()` function with installation status checking
|
|
22
|
+
- Added `--force` flag support for reinstallation
|
|
23
|
+
- **Result**: Both `prjct start` and `prjct setup` now work correctly
|
|
24
|
+
- **Commands Installed**: Successfully installs all 21 /p:* commands to `~/.claude/commands/p/`
|
|
25
|
+
|
|
10
26
|
### Fixed
|
|
11
27
|
- **Corrected Claude Subscription Messaging** - Clarified honest pricing throughout
|
|
12
28
|
- Updated `website/src/pages/Changelog.tsx`:
|
package/README.md
CHANGED
|
@@ -310,7 +310,7 @@ prjct recap # Show progress
|
|
|
310
310
|
- `/p:analyze` - Auto-analyze codebase
|
|
311
311
|
- `/p:analyze --sync` - Sync with implemented features
|
|
312
312
|
|
|
313
|
-
> š” **Tip:** Visit [prjct.
|
|
313
|
+
> š” **Tip:** Visit [prjct.app/commands](https://prjct.app/commands) for interactive command guide or [prjct.app/workflows-guide](https://prjct.app/workflows-guide) for step-by-step examples
|
|
314
314
|
|
|
315
315
|
## š Complete Command Reference
|
|
316
316
|
|
|
@@ -362,7 +362,7 @@ prjct recap # Show progress
|
|
|
362
362
|
|
|
363
363
|
**Sprint planning:** `/p:roadmap` ā Add features ā `/p:now` top priority ā `/p:ship` ā `/p:roadmap next`
|
|
364
364
|
|
|
365
|
-
> š **More workflows:** Visit [prjct.
|
|
365
|
+
> š **More workflows:** Visit [prjct.app/workflows-guide](https://prjct.app/workflows-guide) for detailed interactive examples
|
|
366
366
|
|
|
367
367
|
## ā FAQ
|
|
368
368
|
|
|
@@ -381,7 +381,7 @@ Designed for creators and small teams (2-5 people). Each member has their own lo
|
|
|
381
381
|
**How do I migrate from Jira/Trello?**
|
|
382
382
|
No migration needed. Just `/p:init` and start working.
|
|
383
383
|
|
|
384
|
-
> š¬ **More questions?** Check [prjct.
|
|
384
|
+
> š¬ **More questions?** Check [prjct.app/faq](https://prjct.app/faq) or [open an issue](https://github.com/jlopezlira/prjct-cli/issues)
|
|
385
385
|
|
|
386
386
|
## š File Structure
|
|
387
387
|
|
package/core/commands.js
CHANGED
|
@@ -2224,54 +2224,55 @@ ${diagram}
|
|
|
2224
2224
|
console.log(chalk.cyan(' š¤ Perfect context for AI agents'))
|
|
2225
2225
|
console.log('')
|
|
2226
2226
|
|
|
2227
|
-
console.log(chalk.bold.magenta('š¦ Setup - Install Commands to
|
|
2227
|
+
console.log(chalk.bold.magenta('š¦ Setup - Install Commands to Claude\n'))
|
|
2228
2228
|
|
|
2229
|
-
// Detect
|
|
2229
|
+
// Detect Claude
|
|
2230
2230
|
const commandInstaller = require('./command-installer')
|
|
2231
|
-
const
|
|
2232
|
-
const detectedEditors = Object.entries(detection).filter(([_, info]) => info.detected)
|
|
2231
|
+
const claudeDetected = await commandInstaller.detectClaude()
|
|
2233
2232
|
|
|
2234
|
-
if (
|
|
2233
|
+
if (!claudeDetected) {
|
|
2235
2234
|
return {
|
|
2236
2235
|
success: false,
|
|
2237
2236
|
message: this.agent.formatResponse(
|
|
2238
|
-
'
|
|
2237
|
+
'Claude not detected.\n\nPlease install Claude Code or Claude Desktop first.\n\nVisit: https://claude.ai/download',
|
|
2239
2238
|
'error'
|
|
2240
2239
|
),
|
|
2241
2240
|
}
|
|
2242
2241
|
}
|
|
2243
2242
|
|
|
2244
|
-
console.log(chalk.
|
|
2245
|
-
detectedEditors.forEach(([key, info]) => {
|
|
2246
|
-
const editorName = commandInstaller.editors[key]?.name || key
|
|
2247
|
-
console.log(chalk.green(` [ā] ${editorName} (${info.path})`))
|
|
2248
|
-
})
|
|
2243
|
+
console.log(chalk.green('ā Claude detected'))
|
|
2249
2244
|
console.log('')
|
|
2250
2245
|
|
|
2251
|
-
//
|
|
2252
|
-
|
|
2246
|
+
// Install commands
|
|
2247
|
+
console.log(chalk.cyan('Installing /p:* commands...'))
|
|
2248
|
+
const installResult = await commandInstaller.installCommands()
|
|
2253
2249
|
|
|
2254
2250
|
if (!installResult.success) {
|
|
2255
2251
|
return {
|
|
2256
2252
|
success: false,
|
|
2257
|
-
message: this.agent.formatResponse(
|
|
2253
|
+
message: this.agent.formatResponse(
|
|
2254
|
+
`Installation failed: ${installResult.error || 'Unknown error'}`,
|
|
2255
|
+
'error'
|
|
2256
|
+
),
|
|
2258
2257
|
}
|
|
2259
2258
|
}
|
|
2260
2259
|
|
|
2261
|
-
// Install Context7 MCP
|
|
2262
|
-
const mcpResult = await commandInstaller.installContext7MCP()
|
|
2263
|
-
|
|
2264
2260
|
// Success message
|
|
2265
|
-
|
|
2261
|
+
const installedCount = installResult.installed?.length || 0
|
|
2262
|
+
const errorCount = installResult.errors?.length || 0
|
|
2263
|
+
|
|
2264
|
+
let message = `ā
Successfully installed ${installedCount} commands to Claude\n`
|
|
2265
|
+
message += ` Location: ${installResult.path}\n`
|
|
2266
2266
|
|
|
2267
|
-
if (
|
|
2268
|
-
message += `\n
|
|
2267
|
+
if (errorCount > 0) {
|
|
2268
|
+
message += `\nā ļø ${errorCount} command(s) had issues during installation`
|
|
2269
2269
|
}
|
|
2270
2270
|
|
|
2271
2271
|
message += '\n\n⨠prjct is ready to use!'
|
|
2272
2272
|
message += '\n\nNext steps:'
|
|
2273
2273
|
message += '\n cd your-project/'
|
|
2274
2274
|
message += '\n prjct init'
|
|
2275
|
+
message += '\n\nā¹ļø Context7 MCP is automatically available in Claude'
|
|
2275
2276
|
|
|
2276
2277
|
return {
|
|
2277
2278
|
success: true,
|
|
@@ -2296,60 +2297,72 @@ ${diagram}
|
|
|
2296
2297
|
try {
|
|
2297
2298
|
await this.initializeAgent()
|
|
2298
2299
|
|
|
2299
|
-
const {
|
|
2300
|
-
force = false,
|
|
2301
|
-
editor = null,
|
|
2302
|
-
createTemplates = false,
|
|
2303
|
-
interactive = true,
|
|
2304
|
-
} = options
|
|
2300
|
+
const { force = false } = options
|
|
2305
2301
|
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2302
|
+
// Detect Claude
|
|
2303
|
+
const commandInstaller = require('./command-installer')
|
|
2304
|
+
const claudeDetected = await commandInstaller.detectClaude()
|
|
2305
|
+
|
|
2306
|
+
if (!claudeDetected) {
|
|
2307
|
+
return {
|
|
2308
|
+
success: false,
|
|
2309
|
+
message: this.agent.formatResponse(
|
|
2310
|
+
'Claude not detected. Please install Claude Code or Claude Desktop first.',
|
|
2311
|
+
'error'
|
|
2312
|
+
),
|
|
2313
2313
|
}
|
|
2314
2314
|
}
|
|
2315
2315
|
|
|
2316
|
-
|
|
2317
|
-
const
|
|
2318
|
-
|
|
2316
|
+
// Check current installation status
|
|
2317
|
+
const status = await commandInstaller.checkInstallation()
|
|
2318
|
+
|
|
2319
|
+
if (status.installed && !force) {
|
|
2320
|
+
const chalk = require('chalk')
|
|
2321
|
+
let report = chalk.green('ā Commands already installed\n')
|
|
2322
|
+
report += chalk.dim(` Location: ${status.path}\n`)
|
|
2323
|
+
report += chalk.dim(` Commands: ${status.commands.length}\n`)
|
|
2324
|
+
report += '\nUse --force to reinstall'
|
|
2319
2325
|
|
|
2320
|
-
if (detectedEditors.length === 0) {
|
|
2321
2326
|
return {
|
|
2322
|
-
success:
|
|
2323
|
-
message: this.agent.formatResponse(
|
|
2327
|
+
success: true,
|
|
2328
|
+
message: this.agent.formatResponse(report, 'info'),
|
|
2324
2329
|
}
|
|
2325
2330
|
}
|
|
2326
2331
|
|
|
2327
|
-
|
|
2332
|
+
// Install or reinstall commands
|
|
2333
|
+
const installResult = force
|
|
2334
|
+
? await commandInstaller.updateCommands()
|
|
2335
|
+
: await commandInstaller.installCommands()
|
|
2328
2336
|
|
|
2329
|
-
if (
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
installResult = await commandInstaller.installToAll(force)
|
|
2337
|
+
if (!installResult.success) {
|
|
2338
|
+
return {
|
|
2339
|
+
success: false,
|
|
2340
|
+
message: this.agent.formatResponse(
|
|
2341
|
+
`Installation failed: ${installResult.error || 'Unknown error'}`,
|
|
2342
|
+
'error'
|
|
2343
|
+
),
|
|
2344
|
+
}
|
|
2338
2345
|
}
|
|
2339
2346
|
|
|
2340
|
-
//
|
|
2341
|
-
const
|
|
2347
|
+
// Generate report
|
|
2348
|
+
const installedCount = installResult.installed?.length || 0
|
|
2349
|
+
const errorCount = installResult.errors?.length || 0
|
|
2342
2350
|
|
|
2343
|
-
let report =
|
|
2344
|
-
|
|
2345
|
-
|
|
2346
|
-
|
|
2347
|
-
report +=
|
|
2351
|
+
let report = `ā
Successfully ${force ? 'reinstalled' : 'installed'} ${installedCount} commands\n`
|
|
2352
|
+
report += ` Location: ${installResult.path}\n`
|
|
2353
|
+
|
|
2354
|
+
if (errorCount > 0) {
|
|
2355
|
+
report += `\nā ļø ${errorCount} command(s) had issues\n`
|
|
2356
|
+
installResult.errors.forEach(err => {
|
|
2357
|
+
report += ` - ${err.file}: ${err.error}\n`
|
|
2358
|
+
})
|
|
2348
2359
|
}
|
|
2349
2360
|
|
|
2361
|
+
report += '\nš Context7 MCP is automatically available in Claude'
|
|
2362
|
+
|
|
2350
2363
|
return {
|
|
2351
|
-
success:
|
|
2352
|
-
message: this.agent.formatResponse(report,
|
|
2364
|
+
success: true,
|
|
2365
|
+
message: this.agent.formatResponse(report, 'celebrate'),
|
|
2353
2366
|
}
|
|
2354
2367
|
} catch (error) {
|
|
2355
2368
|
await this.initializeAgent()
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prjct-cli",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "Built for Claude - Ship fast, track progress, stay focused. Developer momentum tool for indie hackers.",
|
|
5
5
|
"main": "core/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"no-bs",
|
|
37
37
|
"focus"
|
|
38
38
|
],
|
|
39
|
-
"author": "prjct.
|
|
39
|
+
"author": "prjct.app",
|
|
40
40
|
"license": "MIT",
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"chalk": "^4.1.2",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"bugs": {
|
|
63
63
|
"url": "https://github.com/jlopezlira/prjct-cli/issues"
|
|
64
64
|
},
|
|
65
|
-
"homepage": "https://prjct.
|
|
65
|
+
"homepage": "https://prjct.app",
|
|
66
66
|
"engines": {
|
|
67
67
|
"node": ">=18.0.0"
|
|
68
68
|
},
|