@ijfw/install 1.1.0 → 1.1.2

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/docs/GUIDE.md ADDED
@@ -0,0 +1,556 @@
1
+ <p align="center">
2
+ <img src="https://github.com/TheRealSeanDonahoe/ijfw/releases/download/v1.1.1/ijfw-hero.png" alt="IJFW" width="100%"/>
3
+ </p>
4
+
5
+ # The IJFW Guide
6
+
7
+ **90 seconds to your first win. 10 minutes to the full tour. 45 minutes to master it.**
8
+
9
+ This guide is bundled with every install. Run `ijfw help` in your terminal for the terminal-native version, or `ijfw help --browser` to read it in a rendered browser tab with images and syntax highlighting.
10
+
11
+ ---
12
+
13
+ ## Table of contents
14
+
15
+ **Part 1: Quickstart**
16
+ - [Install](#install)
17
+ - [Three quick wins in 90 seconds](#three-quick-wins-in-90-seconds)
18
+ - [The 10-minute tour](#the-10-minute-tour)
19
+ - [What to do tomorrow](#what-to-do-tomorrow)
20
+
21
+ **Part 2: Reference**
22
+ - [Command reference](#command-reference)
23
+ - [Skill reference](#skill-reference)
24
+ - [Workflow modes](#workflow-modes)
25
+ - [Platform parity](#platform-parity)
26
+ - [Configuration and environment](#configuration-and-environment)
27
+ - [Privacy and data handling](#privacy-and-data-handling)
28
+ - [Troubleshooting](#troubleshooting)
29
+ - [FAQ](#faq)
30
+
31
+ ---
32
+
33
+ # Part 1: Quickstart
34
+
35
+ ## Install
36
+
37
+ One command. Three seconds.
38
+
39
+ ```bash
40
+ npm install -g @ijfw/install && ijfw-install
41
+ ```
42
+
43
+ That installs the npm package, runs the installer, and wires up every AI coding agent it finds on your machine. Claude Code, Codex, Gemini, Cursor, Windsurf, and Copilot all pick up the shared memory and the same workflow discipline.
44
+
45
+ If you do not type commands, paste this block into Claude Code, Cursor, or any other AI coding agent. It will install IJFW for you, verify the MCP server handshake, and tell you when to restart.
46
+
47
+ ```
48
+ Install IJFW (It Just F*cking Works) on my machine with the one-command installer, then verify it is working.
49
+
50
+ Run this exactly:
51
+
52
+ npm install -g @ijfw/install && ijfw-install
53
+
54
+ After it finishes, run ijfw doctor and paste the result. Tell me if anything is red, then tell me to restart my AI agent so IJFW loads on session start.
55
+ ```
56
+
57
+ After the install finishes, fully quit your AI agent (Cmd+Q on macOS, not just a new tab) and relaunch it. IJFW loads on session start.
58
+
59
+ ---
60
+
61
+ ## Three quick wins in 90 seconds
62
+
63
+ Every feature in IJFW is designed to pay off in under a minute. These three are the ones to try first, in order. Each runs in seconds and each shows you something your AI could not do before.
64
+
65
+ ### Win 1: Your first cross-audit (30 seconds)
66
+
67
+ Pick any file you own. Run this.
68
+
69
+ ```bash
70
+ ijfw cross audit src/anything.js
71
+ ```
72
+
73
+ Two external AIs from different lineages (one OpenAI-family, one Google-family) review the same file in parallel. Your Claude specialist swarm runs alongside. Findings are tagged **consensus** (all three agree, high priority) or **contested** (they disagree, your judgment call).
74
+
75
+ ![Cross-audit output showing consensus and contested findings](guide/assets/trident-demo.svg)
76
+
77
+ Consensus means the single-model blind spot is gone. Contested means you are looking at a real engineering tradeoff, not a bug. Either way, the audit receipt is written to `~/.ijfw/receipts/` with full cost accounting, duration, and findings count. You can share any receipt with `ijfw receipt last`.
78
+
79
+ In Claude Code, the same runs as `/cross-audit <file>` or simply "cross-audit this" when a file is in your conversation context. In other agents, use the shell form.
80
+
81
+ ### Win 2: Your first memory round-trip (45 seconds)
82
+
83
+ Tell IJFW a decision in one session. Ask for it in another. No configuration required.
84
+
85
+ **Session A, any project:**
86
+
87
+ ```bash
88
+ ijfw memory store "We pin all npm packages to exact versions, no carets, decided 2026-04-19 because dependabot churn was destabilizing CI."
89
+ ```
90
+
91
+ **Session B, a completely different project, hours or days later:**
92
+
93
+ ```bash
94
+ ijfw memory recall "version pinning"
95
+ ```
96
+
97
+ It comes back. Full quote, original date, original project. Your AI is no longer amnesiac.
98
+
99
+ ![Cross-project memory recall pulling a prior decision](guide/assets/memory-recall.svg)
100
+
101
+ All memory lives as plain markdown in `.ijfw/memory/` inside each project. Three tiers run automatically: hot (always-on instant reads), warm (BM25 ranked retrieval, scales to ten thousand entries), cold (optional semantic vectors, off by default). You can `cat` any memory file. You can `grep` any memory file. You can commit the ones you want your team to see.
102
+
103
+ Inside Claude Code this surfaces as "recall X" in plain language. Outside, use the shell form.
104
+
105
+ ### Win 3: Your first observability view (15 seconds)
106
+
107
+ Start the local dashboard. One command.
108
+
109
+ ```bash
110
+ ijfw dashboard start
111
+ ```
112
+
113
+ Browser opens on `http://localhost:37891`. Every tool call every AI makes on your machine is already in the ledger (PostToolUse hooks capture in Claude Code, Codex, and Gemini by default). The dashboard just renders it.
114
+
115
+ ![IJFW observability dashboard showing today's cost, active session, cache efficiency, and 30-day totals](guide/assets/dashboard.png)
116
+
117
+ What you see above is a real IJFW user's month: $5.1k in spend today across five active sessions, 97% cache efficiency (2.71 billion tokens served from cache in 30 days), $9.4k actual 30-day burn. Those numbers are measured, not marketing. The bar they set is the bar your own dashboard will read against.
118
+
119
+ Every session also ends with a terminal receipt so the savings show up where you already work.
120
+
121
+ ```
122
+ [ijfw] This session: ~14.3k tokens saved vs baseline (~$0.087)
123
+ [ijfw] Memory: 3 decisions stored, 1 Trident run on record.
124
+ [ijfw] Next: ship the auth migration after Trident review.
125
+ ```
126
+
127
+ ![Session receipt showing tokens saved and next action](guide/assets/session-receipt.svg)
128
+
129
+ You now have three things your AI could not do this morning: a Trident that kills single-model blind spots, a memory that survives every restart, and a bill that goes down while the quality goes up. The rest of this guide shows you what else is in the box.
130
+
131
+ ---
132
+
133
+ ## The 10-minute tour
134
+
135
+ ### The workflow spine
136
+
137
+ Every IJFW command sits on top of one opinionated workflow: **Think, Build, Ship**. IJFW picks the right mode from your prompt automatically. You do not pick. You just describe what you want to do.
138
+
139
+ **Quick mode** (three to five minutes) runs five moves for features, bug fixes, and ideas: FRAME, WHY, SHAPE, STRESS, LOCK. Every move has one input slot. The AI proposes three approaches so you never face a blank page. A pre-mortem flash surfaces the risk you had not thought of. One word locks the brief.
140
+
141
+ **Deep mode** (twenty to forty-five minutes) runs six modules for new projects, major refactors, and launches: FRAME, RECON, HMW, DIVERGE, CONVERGE, LOCK. Plus auto-triggered modules for external-facing briefs (mini PR and FAQ), anti-scope ("what we will not do"), and Trident cross-critique before the brief is finalized.
142
+
143
+ Every phase is conversational. One question at a time. No monologues. Every artifact summarizes in chat before it writes to disk. Every gate is a user-facing checklist, never a silent pass.
144
+
145
+ To start: say "let's plan a new feature", "help me ship this", or "let's build X". In Claude Code the same triggers as `/workflow` or `/ijfw-plan`.
146
+
147
+ ### The observability dashboard
148
+
149
+ Every tool call every AI makes on your machine writes one line to `~/.ijfw/observations.jsonl`. The dashboard reads that ledger and streams new events to your browser in real time.
150
+
151
+ ```bash
152
+ ijfw dashboard start
153
+ ```
154
+
155
+ That binds to `127.0.0.1:37891` and opens a tab. You see the session timeline for every tool call, what file was touched, and a heuristic classification (bugfix, feature, change, discovery, decision). Filter by platform (Claude blue, Codex purple, Gemini green). The observation ledger feeds into the SessionEnd receipt.
156
+
157
+ Port is local only. External requests get a 403. Zero runtime dependencies. The whole dashboard is one HTML file, one JS file, one SSE stream.
158
+
159
+ ### Agent teams, generated per project
160
+
161
+ The first time you run IJFW on a new project, the `ijfw-team` skill reads what you are building, detects the domain, and generates a purpose-built bench. A software project gets architect, senior dev, security, qa. A fiction project gets story architect, world builder, lore master. A campaign gets strategist, copywriter, brand lead. Every agent fits this project's stack and this project's constraints, not a generic kit.
162
+
163
+ Teams live in `.ijfw/agents/`. Swap with one command. Dispatched automatically when a task matches their role.
164
+
165
+ Plus a permanent specialist swarm that runs alongside your team for hard problems: `code-reviewer`, `silent-failure-hunter`, `pr-test-analyzer`, `type-design-analyzer`. Dispatched in parallel during cross-audit and verify phases.
166
+
167
+ Run `/team setup` in Claude Code, or `ijfw team` from the shell, to see your current bench.
168
+
169
+ ### Memory tiers, explained in one minute
170
+
171
+ | Tier | Shape | When it runs |
172
+ |------|-------|--------------|
173
+ | Hot | Plain markdown in `.ijfw/memory/` | Always on. Instant reads. Git friendly. |
174
+ | Warm | BM25 ranked search | Always on. Scales to around 10,000 entries per project. |
175
+ | Cold | Optional semantic vectors | Only if you install `@xenova/transformers`. Off by default. |
176
+
177
+ Every session also ends with an optional "dream cycle". Run `/consolidate` or "run a dream cycle" to have IJFW sweep the day's memory: promote observed patterns into your knowledge base, prune stale entries, reconcile contradictions, optionally lift winners into global memory so every future project benefits. Memory that grows sharper over time instead of heavier.
178
+
179
+ ### Smart routing and the token economy
180
+
181
+ Inside Claude Code, tasks dispatch to the right model automatically. Reads go to Haiku, code goes to Sonnet, architecture goes to Opus. Across every platform, output rules strip verbose preamble at the source and prompt-cache discipline compounds across sessions so your second turn costs roughly ten percent of the first turn's input.
182
+
183
+ Typical observed saving: 25 percent or more output reduction versus an unmanaged baseline (same task, same prompt, no IJFW rules or routing applied). Your mileage varies by task, model, and cache state. The savings print in every session receipt so you can audit every claim against your own logs.
184
+
185
+ To see the running total with a breakdown by platform and session:
186
+
187
+ ```bash
188
+ ijfw metrics
189
+ ```
190
+
191
+ ---
192
+
193
+ ## What to do tomorrow
194
+
195
+ By tomorrow your AI already feels different. Three small habits compound the effect.
196
+
197
+ 1. **End every significant session with `ijfw handoff`.** It writes a short file other sessions can pick up from. New session, say "recall" or `/handoff`, and you are back in context instantly.
198
+
199
+ 2. **Run `ijfw cross audit` before you merge anything meaningful.** Even if you are the only reviewer, the Trident is a second opinion that costs pennies and catches what single-model eyes miss. Most IJFW users wire it into their git post-commit hook after a week.
200
+
201
+ 3. **Say "consolidate" once a week.** The dream cycle keeps memory sharp. Without it, memory grows heavier instead of smarter.
202
+
203
+ Everything else in IJFW builds on those three habits. Part 2 below is the full reference if you want to see every command and every skill.
204
+
205
+ ---
206
+
207
+ # Part 2: Reference
208
+
209
+ ## Command reference
210
+
211
+ Every command ships in three forms: a shell command, a Claude Code slash command, and a natural-language phrase. Use whichever fits the moment.
212
+
213
+ ### Install and lifecycle
214
+
215
+ | Command | Purpose |
216
+ |---------|---------|
217
+ | `ijfw install` | Install or re-install IJFW into every detected agent. Idempotent. Backs up every modified config. |
218
+ | `ijfw uninstall` | Reverse install. Preserves `~/.ijfw/memory/` by default. |
219
+ | `ijfw uninstall --purge` | Also remove memory. Destructive. |
220
+ | `ijfw off` | Alias for `ijfw uninstall`. |
221
+ | `ijfw update` | Pull latest, reinstall merge-safely. Your memory is preserved. |
222
+
223
+ ### Daily drivers
224
+
225
+ | Command | Purpose |
226
+ |---------|---------|
227
+ | `ijfw status` | Hero line plus recent activity plus cache savings. |
228
+ | `ijfw doctor` | Probe every AI CLI and API key. Tells you what is live and what is standing by. |
229
+ | `ijfw help` | Show this guide, paged. Add `--browser` to render in a browser tab. |
230
+ | `ijfw handoff` | Save a context handoff for the next session. |
231
+ | `ijfw receipt last` | Print the last Trident receipt, redacted and shareable. |
232
+
233
+ ### Memory
234
+
235
+ | Command | Purpose |
236
+ |---------|---------|
237
+ | `ijfw memory store "<text>"` | Persist a decision, pattern, or note. |
238
+ | `ijfw memory recall "<query>"` | BM25 ranked search over local memory. |
239
+ | `ijfw memory status` | Roughly 200-token project brief. Mode, pending, last handoff. |
240
+ | `ijfw memory search --scope all "<query>"` | Search across every registered IJFW project on this machine. |
241
+ | `ijfw import claude-mem` | Absorb existing claude-mem SQLite memory into IJFW markdown. |
242
+ | `ijfw import claude-mem --all` | Discover projects automatically, import in bulk. |
243
+ | `ijfw import claude-mem --dry-run` | Show what would happen first. |
244
+
245
+ ### Multi-AI Trident
246
+
247
+ | Command | Purpose |
248
+ |---------|---------|
249
+ | `ijfw cross audit <file>` | Two external AIs plus the Claude swarm review one file. |
250
+ | `ijfw cross research "<topic>"` | Multi-source research across two AI families. |
251
+ | `ijfw cross critique <range>` | Structured counter-argument generation for a diff or commit. |
252
+ | `ijfw cross project-audit <rule>` | Same audit across every registered IJFW project. |
253
+
254
+ ### Observability
255
+
256
+ | Command | Purpose |
257
+ |---------|---------|
258
+ | `ijfw dashboard start` | Bind `127.0.0.1:37891`, open the dashboard tab. |
259
+ | `ijfw dashboard stop` | Graceful shutdown. |
260
+ | `ijfw dashboard status` | Port plus observation count. |
261
+ | `ijfw metrics` | Tokens, cost, routing mix, session totals. |
262
+
263
+ ### Quality gates
264
+
265
+ | Command | Purpose |
266
+ |---------|---------|
267
+ | `ijfw preflight` | Run the 11-gate quality pipeline. Blocking plus advisory. |
268
+ | `ijfw preflight --fail-fast` | Stop on the first blocking failure. |
269
+ | `ijfw preflight --json` | Emit machine-readable output (CI integration). |
270
+
271
+ Every command accepts `--help`. Every command prints positive messages when it runs and specific next-step guidance when it cannot.
272
+
273
+ ---
274
+
275
+ ## Skill reference
276
+
277
+ Skills in Claude Code are on-demand capability modules. Only the core IJFW skill (around 55 lines) is always loaded. Everything else hot-loads when triggered and unloads when done.
278
+
279
+ ### Always on (one skill, under 60 lines)
280
+
281
+ - **`ijfw-core`**: smart output, routing, context discipline. Toggle with "ijfw off" or "normal mode".
282
+
283
+ ### Workflow and planning
284
+
285
+ - **`ijfw-workflow`**: universal Think, Build, Ship flow. Auto-picks Quick or Deep mode from your prompt.
286
+ - **`ijfw-plan-check`**: audit gate before execution. Fires on "audit plan", "review plan", "before we build".
287
+ - **`ijfw-preflight`**: runs the 11 quality gates before any ship.
288
+ - **`ijfw-team`**: generates a purpose-built agent team for this project the first time IJFW sees it.
289
+
290
+ ### Multi-AI cross-check
291
+
292
+ - **`ijfw-cross-audit`**: two external AIs plus Claude swarm adversarial review.
293
+ - **`ijfw-critique`**: poke holes, surface counter-arguments, flag assumptions.
294
+
295
+ ### Memory and continuity
296
+
297
+ - **`ijfw-recall`**: surface relevant memory at session start or on demand.
298
+ - **`ijfw-handoff`**: session handoff generation and loading.
299
+ - **`ijfw-memory-audit`**: audit and clean project memory files.
300
+ - **`ijfw-auto-memorize`**: session-end auto-extraction of lessons, errors, and user feedback.
301
+
302
+ ### Writing and shipping
303
+
304
+ - **`ijfw-commit`**: terse conventional commits.
305
+ - **`ijfw-debug`**: root-cause analysis with hypothesis tracking.
306
+ - **`ijfw-design`**: first-class design intelligence. Dispatches to installed design skills.
307
+ - **`ijfw-summarize`**: generate optimized project context from a codebase scan.
308
+
309
+ ### Observability
310
+
311
+ - **`ijfw-dashboard`**: control the observation dashboard from within your session.
312
+
313
+ ### System
314
+
315
+ - **`ijfw-recall`**, **`ijfw-memory-consent`**, **`ijfw-update`** cover the remaining slots.
316
+
317
+ Full list in Claude Code: run `/ijfw` or just type `ijfw` in conversation to see the command index.
318
+
319
+ ---
320
+
321
+ ## Workflow modes
322
+
323
+ IJFW auto-picks from your prompt. You can also pick explicitly with `ijfw-plan quick` or `ijfw-plan deep`.
324
+
325
+ ### Quick mode (3 to 5 minutes)
326
+
327
+ Five moves. One input each. Use for features, bug fixes, experiments, ideas.
328
+
329
+ | Move | What happens |
330
+ |------|--------------|
331
+ | FRAME | One sentence. What problem, for whom, by when? |
332
+ | WHY | One sentence. Why now? What changes if this ships? |
333
+ | SHAPE | Three candidate approaches. Pick one. |
334
+ | STRESS | Pre-mortem flash. One risk surfaces. You acknowledge it. |
335
+ | LOCK | Brief finalizes. You type one word (ship, revise, kill). |
336
+
337
+ ### Deep mode (20 to 45 minutes)
338
+
339
+ Six modules. Conversational. Used for new projects, major refactors, launches.
340
+
341
+ | Module | What happens |
342
+ |--------|--------------|
343
+ | FRAME | Problem, audience, constraints, outcome. |
344
+ | RECON | Codebase and domain scan. What is already solved? |
345
+ | HMW | "How might we" divergent thinking. Many angles. |
346
+ | DIVERGE | Four or five candidate shapes, each with tradeoffs. |
347
+ | CONVERGE | Rank, pick, justify. |
348
+ | LOCK | Full brief writes to disk. |
349
+
350
+ Auto-triggered extras when they apply: mini PR and FAQ (external-facing features), anti-scope ("what we will not do"), Trident cross-critique (before the brief is finalized).
351
+
352
+ Every module is a single question, answered in chat. Artifacts summarize in chat before they write. Every gate is user-signed. No silent passes, no "plan complete, 25 tasks ready to dispatch" surprises.
353
+
354
+ ---
355
+
356
+ ## Platform parity
357
+
358
+ IJFW configures six AI coding agents with native affordances on each, plus a universal rules file you can paste into anything else.
359
+
360
+ | Platform | What ships |
361
+ |----------|------------|
362
+ | Claude Code | Native plugin via marketplace, MCP auto-registered, 9 hooks, 20 on-demand skills, 21 slash commands |
363
+ | Codex CLI | Native plugin (`.codex-plugin/plugin.json`), 20 skills, 9 hooks, MCP registered, marketplace-ready |
364
+ | Gemini CLI | Native extension (`gemini-extension.json`), 20 skills, 11 hook events, 21 TOML slash commands, policy engine, BeforeModel injection, checkpointing |
365
+ | Cursor | `.cursor/mcp.json` plus `.cursor/rules/ijfw.mdc`. Dashboard view-only. |
366
+ | Windsurf | `~/.codeium/windsurf/mcp_config.json` plus `.windsurfrules`. Dashboard view-only. |
367
+ | Copilot (VS Code) | `.vscode/mcp.json` plus `.github/copilot-instructions.md`. Dashboard view-only. |
368
+ | Universal | `universal/ijfw-rules.md`. Paste into anything else. |
369
+
370
+ ### Observation ledger parity
371
+
372
+ | Platform | Writes observations | Dashboard (read) | Hook lifecycle |
373
+ |----------|---------------------|------------------|----------------|
374
+ | Claude Code | yes (PostToolUse hook) | yes | full |
375
+ | Codex CLI | yes (PostToolUse hook) | yes | full |
376
+ | Gemini CLI | yes (AfterTool hook) | yes | full |
377
+ | Cursor | view-only | yes | none |
378
+ | Windsurf | view-only | yes | none |
379
+ | Copilot | view-only | yes | none |
380
+
381
+ Claude, Codex, and Gemini write one JSONL line per tool call. Cursor, Windsurf, and Copilot have no hook lifecycle IJFW can write from, so they read the shared ledger via the dashboard instead. Same engine behind all of them.
382
+
383
+ ---
384
+
385
+ ## Configuration and environment
386
+
387
+ IJFW is zero-config by default. Everything below is optional.
388
+
389
+ ### Environment variables
390
+
391
+ | Variable | What it does |
392
+ |----------|--------------|
393
+ | `IJFW_HOME` | Override the install location. Default: `~/.ijfw`. |
394
+ | `IJFW_AUDIT_BUDGET_USD` | Per-session spend cap for cross-AI auditors. Default: 2. |
395
+ | `IJFW_MODE` | `smart`, `fast`, `deep`, `manual`, or `brutal`. Default: smart. |
396
+ | `NODE_PATH` | The installer absolute-resolves the node binary path into `.mcp.json` so MCP spawns do not depend on PATH. |
397
+
398
+ ### Files you can safely edit
399
+
400
+ | File | Purpose |
401
+ |------|---------|
402
+ | `~/.ijfw/settings.json` | Overrides for mode, routing, and audit budget. |
403
+ | `.ijfw/memory/*.md` | Project-level memory. Plain markdown. Commit or gitignore as you prefer. |
404
+ | `.ijfw/team/*.md` | Team-level memory. Commit these so teammates inherit. |
405
+
406
+ ### Files IJFW manages for you
407
+
408
+ | File | Purpose |
409
+ |------|---------|
410
+ | `~/.ijfw/observations.jsonl` | The observation ledger. |
411
+ | `~/.ijfw/receipts/` | Trident receipts. One per cross-audit. |
412
+ | `~/.ijfw/install.log` | Install history. Append-only. |
413
+ | `~/.ijfw/dashboard.port` | Dashboard port if it walked from 37891. |
414
+
415
+ Every file IJFW writes is plain text or JSON. No binaries, no caches you cannot inspect.
416
+
417
+ ---
418
+
419
+ ## Privacy and data handling
420
+
421
+ **Your code and memory never leave your machine unless you ask them to.**
422
+
423
+ - IJFW itself is zero-telemetry, zero-cloud, zero-account. No analytics, no phone-home.
424
+ - The MCP server speaks stdio only. No sockets. No daemon. No listening port.
425
+ - Hooks are deterministic bash. No LLM calls from hooks.
426
+ - All memory lives in `.ijfw/memory/` as plain markdown on your disk.
427
+
428
+ The only time bytes leave your machine: when you invoke `ijfw cross`. Even then, the audit fires against the external AI providers you have already configured (your existing CLI or your existing API key). Every cross-AI run is logged in a local receipt. Every cross-AI run is capped by a per-session spend limit (default two dollars, configurable via `IJFW_AUDIT_BUDGET_USD`).
429
+
430
+ Full accounting: [NO_TELEMETRY.md](../NO_TELEMETRY.md). Every data path, every file location, every "does this leave your machine?" question answered in a table.
431
+
432
+ ---
433
+
434
+ ## Troubleshooting
435
+
436
+ ### "Plugin directory does not exist"
437
+
438
+ Claude Code is showing a stale plugin path. Fix:
439
+
440
+ ```bash
441
+ ijfw doctor
442
+ ijfw install # idempotent, re-wires everything
443
+ ```
444
+
445
+ Then fully quit Claude Code (Cmd+Q on macOS, not just a tab close) and relaunch.
446
+
447
+ ### "MCP server not found"
448
+
449
+ Run the handshake test.
450
+
451
+ ```bash
452
+ echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{}}}' | node ~/.ijfw/mcp-server/src/server.js | head -1
453
+ ```
454
+
455
+ Expected: a JSON response containing `result` and `ijfw-memory`. If you see an error, the absolute node path in `~/.ijfw/claude/.mcp.json` is wrong. Reinstall fixes it.
456
+
457
+ ```bash
458
+ ijfw install
459
+ ```
460
+
461
+ ### "ijfw not found" after install
462
+
463
+ The `ijfw` binary lives in `~/.local/bin/`. Make sure that path is on your `PATH`.
464
+
465
+ ```bash
466
+ echo "$PATH" | grep -o "$HOME/.local/bin" || echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
467
+ ```
468
+
469
+ Open a new shell and retry.
470
+
471
+ ### "Preflight fails on oxlint with unused-vars"
472
+
473
+ Preflight blocks publishes on lint issues. To see every finding:
474
+
475
+ ```bash
476
+ cd installer
477
+ npm run preflight
478
+ ```
479
+
480
+ Autofix many at once:
481
+
482
+ ```bash
483
+ npx oxlint --fix
484
+ ```
485
+
486
+ ### "Cross audit says no auditors reachable"
487
+
488
+ Run the doctor. It tells you what is on your machine and the literal fix command for each.
489
+
490
+ ```bash
491
+ ijfw doctor
492
+ ```
493
+
494
+ One auditor reachable is enough. You do not need all three.
495
+
496
+ ### "Dashboard port 37891 is busy"
497
+
498
+ IJFW walks up to 37900. Check where it bound.
499
+
500
+ ```bash
501
+ cat ~/.ijfw/dashboard.port
502
+ ```
503
+
504
+ ### Still stuck
505
+
506
+ Every install writes a log to `~/.ijfw/install.log`. Every session writes observations to `~/.ijfw/observations.jsonl`. Open an issue at [github.com/TheRealSeanDonahoe/ijfw/issues](https://github.com/TheRealSeanDonahoe/ijfw/issues) with both files redacted and attached.
507
+
508
+ ---
509
+
510
+ ## FAQ
511
+
512
+ **Is this just a Claude Code plugin?**
513
+ No. Claude Code is one of six platforms. The plugin is richest there because Claude Code exposes the most integration points. Every capability is available on the other five through their native MCP and rules-file integrations.
514
+
515
+ **Do I need a specific AI provider?**
516
+ No. IJFW configures the agents you already have. Bring your own keys, your own CLIs. The Trident uses whatever auditors are reachable on your machine. One is enough to start.
517
+
518
+ **What does IJFW cost me?**
519
+ Runtime: zero npm dependencies. Tokens: the cross-AI Trident uses your existing API keys with a configurable per-session spend cap (default two dollars). Memory storage: kilobytes of markdown in your repo. Smart routing typically saves you more than the cap costs.
520
+
521
+ **Is the token-savings claim real?**
522
+ Yes, and verifiable in your own metrics. Sources: right-model dispatch (a cheaper tier when adequate, the heavyweight when needed), prompt cache discipline, output rules that cut padding, context discipline that stops re-pasting. Typical observed: 25 percent or more output reduction versus unmanaged baseline. The log is in your project.
523
+
524
+ **Can I turn it off?**
525
+ Yes. `ijfw off` disables the core skill. Each command is isolated. The MCP server can be unregistered per platform. Backups are timestamped. Nothing is sticky.
526
+
527
+ **What about my existing memory in claude-mem or other tools?**
528
+ `ijfw import claude-mem` round-trips the SQLite store into IJFW markdown. Idempotent. Safe to rerun. `--dry-run` shows what would happen first.
529
+
530
+ **Will it slow my sessions down?**
531
+ MCP handshake is about 50 ms. Hooks are under 30 ms. Memory recall across thousands of entries is under 10 ms. No perceptible overhead.
532
+
533
+ **How do I update?**
534
+ `ijfw update` pulls latest and reinstalls merge-safely. Your memory is preserved.
535
+
536
+ **Does it work on Windows?**
537
+ Yes. Git Bash (bundled with Git for Windows) is the supported shell. A PowerShell entry point lives at `installer/src/install.ps1` for users who prefer native PowerShell.
538
+
539
+ **Can my team share memory?**
540
+ Yes. `.ijfw/team/` is git-committed by default. Decisions, patterns, and stack conventions travel with the repo. A new hire's first session inherits all of it.
541
+
542
+ ---
543
+
544
+ <p align="center">
545
+ <strong>Install it. Inspect it. Fork it. Ship it. It just f*cking works.</strong>
546
+ </p>
547
+
548
+ <p align="center">
549
+ <a href="https://github.com/TheRealSeanDonahoe/ijfw">github.com/TheRealSeanDonahoe/ijfw</a>
550
+ &nbsp;·&nbsp;
551
+ <a href="https://www.npmjs.com/package/@ijfw/install">npm</a>
552
+ &nbsp;·&nbsp;
553
+ <a href="../NO_TELEMETRY.md">Privacy</a>
554
+ &nbsp;·&nbsp;
555
+ <a href="../CHANGELOG.md">Changelog</a>
556
+ </p>
@@ -0,0 +1,11 @@
1
+ # Guide assets
2
+
3
+ These three illustrations are placeholders. Capture real terminal screenshots at your leisure and drop them in with the same base filename. The guide references them by path, so a simple overwrite is enough.
4
+
5
+ | File | What to capture |
6
+ |------|-----------------|
7
+ | `trident-demo.svg` | Terminal running `ijfw cross audit <file>` with a consensus + contested finding visible |
8
+ | `memory-recall.svg` | Terminal running `ijfw memory recall "<query>"` with a cross-project hit |
9
+ | `session-receipt.svg` | End-of-session receipt (Claude Code or Codex) showing tokens saved |
10
+
11
+ If you prefer to keep the placeholder format mixed with real captures, update the file extension references in `docs/GUIDE.md` accordingly.
Binary file
@@ -0,0 +1,31 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 460" font-family="ui-monospace,Menlo,Consolas,monospace">
2
+ <defs>
3
+ <linearGradient id="bg2" x1="0" y1="0" x2="0" y2="1">
4
+ <stop offset="0" stop-color="#0d1117"/>
5
+ <stop offset="1" stop-color="#010409"/>
6
+ </linearGradient>
7
+ </defs>
8
+ <rect width="1200" height="460" fill="url(#bg2)" rx="10"/>
9
+ <circle cx="26" cy="26" r="7" fill="#ff5f56"/>
10
+ <circle cx="48" cy="26" r="7" fill="#ffbd2e"/>
11
+ <circle cx="70" cy="26" r="7" fill="#27c93f"/>
12
+ <text x="600" y="32" fill="#7d8590" text-anchor="middle" font-size="13">ijfw memory recall</text>
13
+
14
+ <text x="30" y="80" fill="#7d8590" font-size="14">$</text>
15
+ <text x="50" y="80" fill="#e6edf3" font-size="14">ijfw memory recall "version pinning"</text>
16
+
17
+ <text x="30" y="120" fill="#3fb950" font-size="13">[ijfw] 2 matches across 2 projects. Top result:</text>
18
+
19
+ <rect x="30" y="145" width="1140" height="190" rx="6" fill="#0d1f2d" stroke="#1f6feb" stroke-width="1"/>
20
+ <text x="50" y="172" fill="#58a6ff" font-size="14" font-weight="bold">◆ payments-api · 2026-04-19 · decision</text>
21
+ <text x="50" y="198" fill="#d1d7de" font-size="13">"We pin all npm packages to exact versions, no carets,</text>
22
+ <text x="50" y="220" fill="#d1d7de" font-size="13">decided 2026-04-19 because dependabot churn was</text>
23
+ <text x="50" y="242" fill="#d1d7de" font-size="13">destabilizing CI."</text>
24
+ <text x="50" y="278" fill="#7d8590" font-size="12">file: .ijfw/memory/project_pinning_policy.md</text>
25
+ <text x="50" y="298" fill="#7d8590" font-size="12">score: 0.94 BM25 · type: decision</text>
26
+
27
+ <text x="30" y="375" fill="#d1d7de" font-size="13">Your AI is no longer amnesiac. Store once, recall from anywhere,</text>
28
+ <text x="30" y="397" fill="#d1d7de" font-size="13">any project, any session.</text>
29
+
30
+ <text x="600" y="438" fill="#484f58" font-size="12" text-anchor="middle" font-style="italic">Placeholder illustration. Replace with a real terminal capture.</text>
31
+ </svg>
@@ -0,0 +1,30 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 340" font-family="ui-monospace,Menlo,Consolas,monospace">
2
+ <defs>
3
+ <linearGradient id="bg3" x1="0" y1="0" x2="0" y2="1">
4
+ <stop offset="0" stop-color="#0d1117"/>
5
+ <stop offset="1" stop-color="#010409"/>
6
+ </linearGradient>
7
+ </defs>
8
+ <rect width="1200" height="340" fill="url(#bg3)" rx="10"/>
9
+ <circle cx="26" cy="26" r="7" fill="#ff5f56"/>
10
+ <circle cx="48" cy="26" r="7" fill="#ffbd2e"/>
11
+ <circle cx="70" cy="26" r="7" fill="#27c93f"/>
12
+ <text x="600" y="32" fill="#7d8590" text-anchor="middle" font-size="13">Claude Code · SessionEnd</text>
13
+
14
+ <rect x="30" y="75" width="1140" height="185" rx="8" fill="#0a2b18" stroke="#2ea043" stroke-width="1.5"/>
15
+
16
+ <text x="60" y="110" fill="#3fb950" font-size="15" font-weight="bold">[ijfw]</text>
17
+ <text x="120" y="110" fill="#d1d7de" font-size="15">This session: ~14.3k tokens saved vs baseline (~$0.087)</text>
18
+
19
+ <text x="60" y="145" fill="#3fb950" font-size="15" font-weight="bold">[ijfw]</text>
20
+ <text x="120" y="145" fill="#d1d7de" font-size="15">Memory: 3 decisions stored, 1 Trident run on record.</text>
21
+
22
+ <text x="60" y="180" fill="#3fb950" font-size="15" font-weight="bold">[ijfw]</text>
23
+ <text x="120" y="180" fill="#d1d7de" font-size="15">Next: ship the auth migration after Trident review.</text>
24
+
25
+ <text x="60" y="222" fill="#7d8590" font-size="13">routing: Haiku 42% · Sonnet 51% · Opus 7% cache hit: 73%</text>
26
+
27
+ <text x="30" y="295" fill="#d1d7de" font-size="14">Your bill goes down while your quality goes up. Every session a receipt.</text>
28
+
29
+ <text x="600" y="325" fill="#484f58" font-size="12" text-anchor="middle" font-style="italic">Placeholder illustration. Replace with a real terminal capture.</text>
30
+ </svg>