prjct-cli 2.23.12 → 2.23.16

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 CHANGED
@@ -1,6 +1,6 @@
1
- # prjct
1
+ # prjct-cli
2
2
 
3
- **Project memory + quality workflows for AI coding agents.** prjct gives Claude Code (and any agent) durable memory of your projects: decisions, learnings, gotchas, hot files, recurring bugs. Plus 5 named quality workflows (review, qa, security, investigate, ship) that persist findings back to memory so the next session compounds.
3
+ **Project memory + quality workflows for AI coding agents.** prjct-cli gives Claude Code (and any agent) durable memory of your projects: decisions, learnings, gotchas, hot files, recurring bugs. Plus 5 named quality workflows (review, qa, security, investigate, ship) that persist findings back to memory so the next session compounds.
4
4
 
5
5
  [![npm](https://img.shields.io/npm/v/prjct-cli)](https://www.npmjs.com/package/prjct-cli)
6
6
  [![Claude Code](https://img.shields.io/badge/Claude%20Code-Ready-6366f1)]()
@@ -12,7 +12,7 @@
12
12
  Copy this prompt and paste it in Claude Code (works for fresh install AND upgrade — Claude picks YOUR package manager, doesn't force npm):
13
13
 
14
14
  ```text
15
- Install or upgrade prjct on this machine. First detect which package manager I use globally (check `command -v pnpm`, `command -v bun`, `command -v yarn`, `command -v npm` in that order; also check where any existing `prjct` install lives via `command -v prjct` and use the SAME package manager so we don't create parallel installs). Then run the matching install:
15
+ Install or upgrade prjct-cli on this machine. First detect which package manager I use globally (check `command -v pnpm`, `command -v bun`, `command -v yarn`, `command -v npm` in that order; also check where any existing `prjct` install lives via `command -v prjct` and use the SAME package manager so we don't create parallel installs). Then run the matching install:
16
16
  - pnpm: `pnpm install -g prjct-cli@latest`
17
17
  - bun: `bun install -g prjct-cli@latest`
18
18
  - yarn: `yarn global add prjct-cli@latest`
@@ -35,9 +35,9 @@ curl -sSL https://raw.githubusercontent.com/jlopezlira/prjct-cli/main/scripts/in
35
35
 
36
36
  The script auto-detects platform (mac arm64/intel + linux x64), downloads the right binary from GitHub Releases, sets up `~/.local/bin/prjct` on your PATH, runs `prjct setup` + `prjct sync`, and warns you if a stale package-manager install is shadowing the new binary.
37
37
 
38
- ### Updating prjct (built-in)
38
+ ### Updating prjct-cli (built-in)
39
39
 
40
- prjct updates itself. The canonical command is **`prjct update`**, with
40
+ prjct-cli updates itself. The canonical command is **`prjct update`**, with
41
41
  **`prjct upgrade`** as an identical alias:
42
42
 
43
43
  ```bash
@@ -61,7 +61,7 @@ What it does, in three phases (`core/commands/update.ts`):
61
61
  Flags: `--dry-run`, `--yes`/`-y`, `--cleanup` / `--no-cleanup` (default `auto`),
62
62
  `--md` (machine-readable output for agents/CI).
63
63
 
64
- **Knowing an update exists:** prjct checks at most once every 24h (cached, fully
64
+ **Knowing an update exists:** prjct-cli checks at most once every 24h (cached, fully
65
65
  non-blocking — never delays a command) and, after the command's own output,
66
66
  prints a one-line banner: `Update available! x.y.z → a.b.c — Run: prjct upgrade`.
67
67
  Or set it and forget it: `prjct config set auto-update on` (throttled background
@@ -71,7 +71,7 @@ Full install + upgrade paths: [INSTALL_PROMPT.md](./INSTALL_PROMPT.md).
71
71
 
72
72
  ### Native dependency repair
73
73
 
74
- prjct uses SQLite for local project memory. On Node installs, that requires the
74
+ prjct-cli uses SQLite for local project memory. On Node installs, that requires the
75
75
  `better-sqlite3` native binding. The package install, `prjct install`, and
76
76
  daemon startup all verify the binding and retry `npm rebuild better-sqlite3`
77
77
  when needed. If a locked-down sandbox blocks the rebuild, install still
@@ -79,7 +79,7 @@ continues and the daemon retries the repair the next time it starts.
79
79
 
80
80
  ## What you get
81
81
 
82
- After install, **next session in any prjct project**:
82
+ After install, **next session in any prjct-cli project**:
83
83
 
84
84
  - **Lookup-first protocol**: Claude reads `~/Documents/prjct/<slug>/_generated/` (architecture, patterns, decisions, gotchas, recent ships) BEFORE re-exploring source. Cuts ~10K tokens of exploration per session.
85
85
  - **Auto-capture**: Stop hook scans the assistant transcript and persists durable insights (decisions/learnings/gotchas) tagged for dedup. The next session finds them in the vault.
@@ -97,7 +97,7 @@ After install, **next session in any prjct project**:
97
97
  State lives in **SQLite** at `~/.prjct-cli/projects/<id>/`. The vault at `~/Documents/prjct/<slug>/_generated/` is an auto-regenerated Markdown snapshot — agent-readable via `Read`/`Glob`, browsable in Obsidian.
98
98
 
99
99
  ```
100
- Claude Code session prjct
100
+ Claude Code session prjct-cli
101
101
  | |
102
102
  | SessionStart hook fires |
103
103
  | --------------------------------> | self-heal CLAUDE.md, regen vault
@@ -137,45 +137,7 @@ detail, worktrees, monorepos: **[docs/storage-and-paths.md](./docs/storage-and-p
137
137
 
138
138
  ## Execution environments (zero-config)
139
139
 
140
- The same binary runs in a plain shell, inside Claude Code, in an OpenAI Codex
141
- sandbox, or in CI — and **detects which, with no configuration**, then adapts
142
- output accordingly. Here is the actual *how*.
143
-
144
- **Mechanism 1 — agent detection** (`core/infrastructure/agent-detector.ts`,
145
- `isClaudeEnvironment()`). prjct concludes it's inside **Claude** if *any* of
146
- these is true, evaluated **in this order** (first match wins, result cached for
147
- the process):
148
-
149
- 1. env var `CLAUDE_AGENT` or `ANTHROPIC_CLAUDE` is set (Claude's runtime sets it);
150
- 2. `global.mcp` is present **or** `MCP_AVAILABLE` is set (MCP is available);
151
- 3. a `CLAUDE.md` file exists in the current working directory;
152
- 4. a `~/.claude/` directory exists;
153
- 5. the cwd path contains `/.claude/` or `/claude-workspace/`.
154
-
155
- If **none** match, prjct falls back to the **Terminal/CLI** profile — that *is*
156
- the plain-terminal detection: it's the default when no Claude signal is present.
157
- **OpenAI Codex** is detected separately (`ai-provider.ts`, `detectCodex()`) by
158
- the **`codex` CLI binary being on `PATH`** (a stray `~/.codex/` alone is not
159
- enough); Codex's context file is `AGENTS.md`, skills under `~/.codex/skills/`.
160
-
161
- **Mechanism 2 — output adaptation** (no flag needed; three independent signals):
162
-
163
- - **TTY** (`core/utils/output.ts`, `spin()`): `process.stdout.isTTY` decides the
164
- spinner — `true` (human terminal) → animated branded spinner redrawn with `\r`;
165
- `false` (Claude Code, Codex, CI, a pipe) → a **single static** `⚡ prjct …`
166
- line, no animation.
167
- - **LLM-context gate** (`core/index.ts`):
168
- `isLlmContext = !process.stdin.isTTY || options.md === true || options.json === true`.
169
- Commands declared `requiresLlm` refuse to run in a *raw human terminal* unless
170
- `--md`/`--json` is passed — inside an agent `stdin.isTTY` is already false, so
171
- they run transparently with no flag.
172
- - **`--md` / `--json`** (any env): an explicit override — strips the branding
173
- header/footer, emits machine-structured markdown/JSON.
174
-
175
- Every signal (env var, `PATH`, TTY, piped stdio) is something the **host sets on
176
- its own** — prjct reads those ambient facts instead of asking you to declare
177
- anything. Full per-environment output table:
178
- **[docs/environments.md](./docs/environments.md)**.
140
+ The same binary runs in a plain shell, inside Claude Code, in an OpenAI Codex sandbox, or in CI, and **adapts output automatically with no configuration**. Detection signals (env vars, MCP, `CLAUDE.md`, `~/.claude/`, the `codex` binary on PATH, `process.stdout.isTTY`) are read silently; `--md` / `--json` are the only overrides. Full per-environment table, source-file references, and the detection order: **[docs/environments.md](./docs/environments.md)**.
179
141
 
180
142
  ### What it looks like
181
143
 
@@ -216,7 +178,7 @@ In Claude Code, ask naturally:
216
178
  Optional flags:
217
179
  ```bash
218
180
  prjct config set auto-update on # silent self-update (1/hour throttled)
219
- prjct team --enforce # pre-commit hook blocks commits without prjct
181
+ prjct team --enforce # pre-commit hook blocks commits without prjct-cli
220
182
  ```
221
183
 
222
184
  ## Inside Claude Code / Gemini CLI
@@ -293,7 +255,7 @@ Remove with `prjct claude uninstall` (hooks only) or `prjct uninstall` (everythi
293
255
 
294
256
  ## MCP Server
295
257
 
296
- prjct exposes an MCP server with 5 tool groups:
258
+ prjct-cli exposes an MCP server with 5 tool groups:
297
259
 
298
260
  | Group | Tools |
299
261
  |---|---|
@@ -303,7 +265,7 @@ prjct exposes an MCP server with 5 tool groups:
303
265
  | **workflow** | list, run, log |
304
266
  | **code-intel** | related, impact, stale |
305
267
 
306
- The broker model: if you already have `linear`, `jira`, `posthog`, `gmail` MCPs wired, prjct **does not duplicate them** — it tells your agent they're available for the current persona and caches your insights locally.
268
+ The broker model: if you already have `linear`, `jira`, `posthog`, `gmail` MCPs wired, prjct-cli **does not duplicate them** — it tells your agent they're available for the current persona and caches your insights locally.
307
269
 
308
270
  ## CLI
309
271
 
@@ -377,7 +339,7 @@ A combined ranker fuses the three signals (`core/domain/file-ranker.ts`) and pow
377
339
 
378
340
  ## Issue Tracker Integration
379
341
 
380
- Bring your own MCP — prjct doesn't duplicate trackers.
342
+ Bring your own MCP — prjct-cli doesn't duplicate trackers.
381
343
 
382
344
  - **Linear**: configure the official Linear MCP in your agent and declare it in `persona.mcps`.
383
345
  - **Jira**: same — use the official Atlassian MCP.
@@ -425,7 +387,7 @@ prjct-cli/
425
387
  ## Common questions
426
388
 
427
389
  **How do I initialize / register a new project?**
428
- In any git repo, run `prjct sync` (it auto-runs on the first prjct command) or
390
+ In any git repo, run `prjct sync` (it auto-runs on the first `prjct` command) or
429
391
  `prjct init`. This creates `.prjct/prjct.config.json` with a `projectId`, builds
430
392
  the SQLite store at `~/.prjct-cli/projects/<projectId>/`, and generates the vault.
431
393
 
@@ -449,7 +411,7 @@ argument prints the currently active task.
449
411
 
450
412
  **How do I get AI assistance for a coding problem?**
451
413
  Inside Claude Code (or any wired agent) describe the problem in natural
452
- language — prjct maps the intent to a quality workflow and runs its methodology,
414
+ language — prjct-cli maps the intent to a quality workflow and runs its methodology,
453
415
  persisting findings to memory. Concrete examples:
454
416
 
455
417
  | You say… | Workflow activated | What it does |
@@ -464,7 +426,7 @@ project use?" and the agent reads `~/Documents/prjct/<slug>/_generated/patterns.
464
426
  instead of grepping source (the lookup-first protocol). Outside an agent, every
465
427
  command takes `--md` to emit agent-ready markdown.
466
428
 
467
- **What does prjct output look like in a normal terminal?**
429
+ **What does prjct-cli output look like in a normal terminal?**
468
430
  A branded, **animated** spinner with full colors and interactive prompts (the
469
431
  native human experience). See [What it looks like](#what-it-looks-like).
470
432
 
@@ -472,9 +434,9 @@ native human experience). See [What it looks like](#what-it-looks-like).
472
434
  `prjct update` (alias `prjct upgrade`) — auto-detects your package manager, pins
473
435
  the true registry-latest, consolidates parallel installs, restarts the daemon.
474
436
  A non-blocking 24h-cached banner tells you when one is available. See
475
- [Updating prjct](#updating-prjct-built-in).
437
+ [Updating prjct-cli](#updating-prjct-cli-built-in).
476
438
 
477
- **How does prjct tailor its output for Claude Code specifically?**
439
+ **How does prjct-cli tailor its output for Claude Code specifically?**
478
440
  Once it detects Claude (env vars / MCP / `CLAUDE.md` / `~/.claude/`) and sees
479
441
  piped stdio (non-TTY), it adapts on every axis, with no flag:
480
442
 
@@ -495,7 +457,7 @@ Full per-environment table: [docs/environments.md](./docs/environments.md).
495
457
 
496
458
  **What's the output in an OpenAI Codex sandbox?**
497
459
  Codex is detected by the `codex` CLI on PATH (context file `AGENTS.md`). The
498
- sandbox is non-interactive/non-TTY, so prjct emits the same static, prompt-free
460
+ sandbox is non-interactive/non-TTY, so prjct-cli emits the same static, prompt-free
499
461
  status line as any agent; add `--md` for fully markdown-structured output.
500
462
 
501
463
  **How do I quickly find the local `.prjct/` directory?**
@@ -516,10 +478,10 @@ the *other* tiers: DB at `~/.prjct-cli/projects/<projectId>/prjct.db`, vault at
516
478
  base). The in-repo `.prjct/` holds only config, not state — full detail in
517
479
  [docs/storage-and-paths.md](./docs/storage-and-paths.md).
518
480
 
519
- **How does prjct detect its environment with no configuration?**
481
+ **How does prjct-cli detect its environment with no configuration?**
520
482
  Every signal is something the host sets itself — Claude exports env vars and
521
483
  pipes stdio, Codex puts `codex` on PATH, a real terminal has a TTY, CI doesn't.
522
- prjct reads those ambient facts (precedence in
484
+ prjct-cli reads those ambient facts (precedence in
523
485
  [docs/environments.md](./docs/environments.md)) rather than asking you to declare
524
486
  anything.
525
487