@ijfw/install 1.5.6 → 1.6.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/dist/ijfw.js +134 -46
- package/dist/install.js +296 -79
- package/dist/uninstall.js +543 -52
- package/docs/GUIDE.md +20 -1
- package/docs/guide/assets/ferrox-hero.png +0 -0
- package/package.json +5 -2
- package/src/install.ps1 +2 -2
- package/templates/aider/CONVENTIONS.md +54 -0
- package/templates/aider/aider.conf.yml +23 -0
- package/templates/pi/AGENTS.md +55 -0
- package/dist/hub-index-snippet.json +0 -50
package/docs/GUIDE.md
CHANGED
|
@@ -232,11 +232,30 @@ Every command ships in three forms: a shell command, a Claude Code slash command
|
|
|
232
232
|
| Command | Purpose |
|
|
233
233
|
|---------|---------|
|
|
234
234
|
| `ijfw memory checkpoint "<text>"` | Snapshot a decision, pattern, or note to local memory. |
|
|
235
|
+
| `ijfw checkpoint "<text>"` | Top-level shortcut for `ijfw memory checkpoint`. |
|
|
235
236
|
| `ijfw memory search "<query>"` | BM25 ranked search over local memory. Add `--scope all` to search every registered IJFW project. |
|
|
236
237
|
| `ijfw import claude-mem` | Absorb existing claude-mem SQLite memory into IJFW markdown. |
|
|
237
238
|
| `ijfw import claude-mem --all` | Discover projects automatically, import in bulk. |
|
|
238
239
|
| `ijfw import claude-mem --dry-run` | Show what would happen first. |
|
|
239
240
|
|
|
241
|
+
### Personalize (profile-bus learning)
|
|
242
|
+
|
|
243
|
+
IJFW can learn your low-sensitivity interaction *style* (verbosity, formality,
|
|
244
|
+
code-vs-prose) locally and — only if you opt in — include a short brief in
|
|
245
|
+
prompts so agents match it. Capture is always local and never includes raw
|
|
246
|
+
text. Injection is **off until you turn it on**.
|
|
247
|
+
|
|
248
|
+
| Command | Purpose |
|
|
249
|
+
|---------|---------|
|
|
250
|
+
| `ijfw personalize status` | Show the current flags plus a summary of what was inferred. |
|
|
251
|
+
| `ijfw personalize on` | Enable injecting the learned low-sensitivity style brief into prompts. |
|
|
252
|
+
| `ijfw personalize off` | Disable injection. Capture continues locally. |
|
|
253
|
+
| `ijfw personalize forget [pattern]` | Delete inferences (no pattern = forget all). |
|
|
254
|
+
| `ijfw personalize share-sensitive on\|off` | Allow/deny medium+high-sensitivity prefs to allowlisted hosts. Default off. |
|
|
255
|
+
|
|
256
|
+
Hard override: set `IJFW_PROFILE_KILL=1` to force-disable all injection
|
|
257
|
+
regardless of these settings.
|
|
258
|
+
|
|
240
259
|
### Multi-AI Trident
|
|
241
260
|
|
|
242
261
|
| Command | Purpose |
|
|
@@ -521,7 +540,7 @@ Runtime: zero npm dependencies. Tokens: the cross-AI Trident uses your existing
|
|
|
521
540
|
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.
|
|
522
541
|
|
|
523
542
|
**Can I turn it off?**
|
|
524
|
-
Yes. `ijfw off`
|
|
543
|
+
Yes. `ijfw off` removes what IJFW added: it unregisters the MCP server across all 15 platforms, deletes IJFW skill/command/context files, and strips IJFW's managed marker regions out of every project `CLAUDE.md` / `AGENTS.md` it ever touched -- your own content in those files is preserved. Every file it edits is backed up with a timestamped `.bak` first. Your memory at `~/.ijfw/memory/` is kept (delete by hand, or `ijfw off --purge` to remove it too). Files it can't prove were IJFW-authored (e.g. hand-edited Aider rules) are left in place and called out so you can remove them yourself.
|
|
525
544
|
|
|
526
545
|
**What about my existing memory in claude-mem or other tools?**
|
|
527
546
|
`ijfw import claude-mem` round-trips the SQLite store into IJFW markdown. Idempotent. Safe to rerun. `--dry-run` shows what would happen first.
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ijfw/install",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.1",
|
|
4
4
|
"description": "One-command installer for IJFW -- the AI efficiency layer. One install, every AI coding agent, zero config.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
"src/install.ps1",
|
|
14
14
|
"docs/GUIDE.md",
|
|
15
15
|
"docs/guide/assets",
|
|
16
|
+
"templates/aider/**",
|
|
17
|
+
"templates/pi/**",
|
|
16
18
|
"scripts/pack-hub-extension.js",
|
|
17
19
|
"scripts/hub-extension/**",
|
|
18
20
|
"README.md",
|
|
@@ -21,8 +23,9 @@
|
|
|
21
23
|
],
|
|
22
24
|
"scripts": {
|
|
23
25
|
"build": "node scripts/build.js",
|
|
24
|
-
"test": "node --test test.js",
|
|
26
|
+
"test": "node --test test.js test/uninstall-completeness.test.mjs test/project-write-guard.test.mjs",
|
|
25
27
|
"test:hub-extension": "node --test test/test-pack-hub-extension.js",
|
|
28
|
+
"test:uninstall-completeness": "node --test test/uninstall-completeness.test.mjs",
|
|
26
29
|
"preflight": "node dist/ijfw.js preflight",
|
|
27
30
|
"pack:check": "npm pack --dry-run",
|
|
28
31
|
"pack:hub-extension": "node scripts/pack-hub-extension.js",
|
package/src/install.ps1
CHANGED
|
@@ -282,7 +282,7 @@ function Remove-StalePosixLaunchers {
|
|
|
282
282
|
$removed++
|
|
283
283
|
}
|
|
284
284
|
} catch {
|
|
285
|
-
#
|
|
285
|
+
$null = $_ # best-effort: keep going on locked / inaccessible files
|
|
286
286
|
}
|
|
287
287
|
}
|
|
288
288
|
if ($removed -gt 0) {
|
|
@@ -323,7 +323,7 @@ function Provision-Plugin {
|
|
|
323
323
|
}
|
|
324
324
|
Copy-Item $srcItem.FullName $dstItem -Force
|
|
325
325
|
# Preserve source mtime so next install doesn't mistake our copy for a user edit.
|
|
326
|
-
try { (Get-Item $dstItem -ErrorAction Stop).LastWriteTime = $srcItem.LastWriteTime } catch {}
|
|
326
|
+
try { (Get-Item $dstItem -ErrorAction Stop).LastWriteTime = $srcItem.LastWriteTime } catch { $null = $_ }
|
|
327
327
|
}
|
|
328
328
|
}
|
|
329
329
|
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# IJFW Conventions for Aider
|
|
2
|
+
|
|
3
|
+
<!-- Aider MCP support last verified: 2026-05-06 against https://aider.chat/docs/.
|
|
4
|
+
If Aider adds a native MCP client, regenerate this file and the rules-only
|
|
5
|
+
section in scripts/install.sh:aider). -->
|
|
6
|
+
|
|
7
|
+
Aider doesn't have native MCP, so IJFW's memory + cross-audit tools aren't
|
|
8
|
+
available inside Aider sessions. These conventions carry the IJFW spirit
|
|
9
|
+
(disciplined workflow, terse output, no scope creep) into the Aider chat.
|
|
10
|
+
|
|
11
|
+
## Workflow
|
|
12
|
+
|
|
13
|
+
- One question at a time. Don't dump multi-step plans before user signs off.
|
|
14
|
+
- Lead with the answer. No restating the question.
|
|
15
|
+
- For multi-file changes, propose the plan in chat FIRST. Wait for user "go".
|
|
16
|
+
|
|
17
|
+
## Code
|
|
18
|
+
|
|
19
|
+
- Match existing style. Don't refactor adjacent code that wasn't asked for.
|
|
20
|
+
- No speculative abstractions. Three similar lines beats a premature helper.
|
|
21
|
+
- No error handling for impossible scenarios. Trust internal code.
|
|
22
|
+
- Default to writing no comments. Only add WHEN the WHY is non-obvious.
|
|
23
|
+
|
|
24
|
+
## Memory + cross-audit
|
|
25
|
+
|
|
26
|
+
Aider sessions don't see IJFW's persistent memory. After significant work:
|
|
27
|
+
|
|
28
|
+
- Run `ijfw cross audit <file>` in your terminal to get Trident review.
|
|
29
|
+
- Use `ijfw_memory_store` from Claude/Codex/Gemini sessions to persist
|
|
30
|
+
decisions Aider makes -- they won't survive otherwise.
|
|
31
|
+
|
|
32
|
+
## Scope
|
|
33
|
+
|
|
34
|
+
Stay in the lane the user asked for. If you spot adjacent issues, mention them
|
|
35
|
+
in chat -- don't fix them silently.
|
|
36
|
+
|
|
37
|
+
## DESIGN picker
|
|
38
|
+
|
|
39
|
+
If the user asks for a design contract and no `DESIGN.md` exists, suggest one
|
|
40
|
+
of the 12 IJFW curated templates (alphabetical):
|
|
41
|
+
|
|
42
|
+
bento-grid, brutalist-luxe, cinematic-dark, data-dense-dashboard,
|
|
43
|
+
editorial-warm, glassmorphic, magazine-editorial, maximalist-vibrant,
|
|
44
|
+
neo-swiss-tech, swiss-minimal, terminal-native, warm-organic.
|
|
45
|
+
|
|
46
|
+
Aider has no MCP client, so it cannot fetch the template body itself. Ask the
|
|
47
|
+
user to run this in any MCP-capable sibling CLI on their machine (Claude Code
|
|
48
|
+
/ Codex / Gemini / Cursor / Windsurf / Copilot / Hermes / Wayland / OpenCode /
|
|
49
|
+
Qwen / Kimi / OpenClaw) and paste the output back into the Aider chat:
|
|
50
|
+
|
|
51
|
+
ijfw_memory_recall({ context_hint: "design_template:<name>" })
|
|
52
|
+
|
|
53
|
+
Once the user pastes the body, Aider writes `DESIGN.md` at the project root
|
|
54
|
+
and picks it up automatically on the next turn.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# IJFW-shipped Aider config. Aider has no native MCP client (1.1.7 status);
|
|
2
|
+
# this file scaffolds project conventions + auto-loads CONVENTIONS.md so
|
|
3
|
+
# IJFW principles travel into Aider sessions.
|
|
4
|
+
#
|
|
5
|
+
# Edit freely -- IJFW only writes this file if absent.
|
|
6
|
+
|
|
7
|
+
# Auto-load IJFW conventions on every Aider session.
|
|
8
|
+
read:
|
|
9
|
+
- ~/CONVENTIONS.md
|
|
10
|
+
|
|
11
|
+
# Default model -- override per-session with --model or per-project.
|
|
12
|
+
# model: gpt-4o
|
|
13
|
+
# weak-model: gpt-4o-mini
|
|
14
|
+
|
|
15
|
+
# Auto-commits OFF by default. Aider's auto-commit can produce noisy
|
|
16
|
+
# history; IJFW workflow prefers atomic commits at gate boundaries.
|
|
17
|
+
auto-commits: false
|
|
18
|
+
|
|
19
|
+
# Show diffs in the chat for transparency.
|
|
20
|
+
show-diffs: true
|
|
21
|
+
|
|
22
|
+
# Subtree-only -- don't grep the entire monorepo every turn.
|
|
23
|
+
subtree-only: true
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# IJFW Conventions for Pi
|
|
2
|
+
|
|
3
|
+
<!-- Pi MCP support last verified: 2026-05-28 against https://pi.dev/.
|
|
4
|
+
Pi has no native MCP client (build as extension or skill). When Pi adds
|
|
5
|
+
native MCP, regenerate this file and consider promoting Pi from
|
|
6
|
+
rules-only to full-skill tier in installer/src/install-targets-8-14.js
|
|
7
|
+
and add the MCP wiring path. -->
|
|
8
|
+
|
|
9
|
+
Pi has no native MCP, so IJFW's memory + cross-audit tools aren't available
|
|
10
|
+
inside Pi sessions out of the box. These conventions carry the IJFW spirit
|
|
11
|
+
(disciplined workflow, terse output, no scope creep, no half-shipping) into
|
|
12
|
+
Pi's terminal harness. Pi loads this file at startup from `~/.pi/agent/`,
|
|
13
|
+
parent directories, and the current working directory -- exactly where IJFW
|
|
14
|
+
installs it.
|
|
15
|
+
|
|
16
|
+
## Workflow
|
|
17
|
+
|
|
18
|
+
- One question at a time. Don't dump multi-step plans before the user signs off.
|
|
19
|
+
- Lead with the answer. No restating the question.
|
|
20
|
+
- For multi-file changes, propose the plan in chat FIRST. Wait for the user "go".
|
|
21
|
+
- Terse output. The diff is the deliverable, not your prose about the diff.
|
|
22
|
+
|
|
23
|
+
## Code
|
|
24
|
+
|
|
25
|
+
- Match existing style. Don't refactor adjacent code that wasn't asked for.
|
|
26
|
+
- No speculative abstractions. Three similar lines beats a premature helper.
|
|
27
|
+
- No error handling for impossible scenarios. Trust internal code; validate only at system boundaries.
|
|
28
|
+
- Default to writing no comments. Only add when the WHY is non-obvious (a hidden constraint, a subtle invariant, a workaround for a specific bug).
|
|
29
|
+
- Never write multi-paragraph docstrings. One short line max.
|
|
30
|
+
|
|
31
|
+
## Memory + cross-audit
|
|
32
|
+
|
|
33
|
+
Pi sessions don't see IJFW's persistent memory by default. After significant work:
|
|
34
|
+
|
|
35
|
+
- Run `ijfw cross audit <file>` in a separate terminal to get a Trident review across two model families.
|
|
36
|
+
- Use `ijfw_memory_store` from a Claude/Codex/Gemini session (where MCP is native) to persist decisions Pi makes -- they won't survive otherwise.
|
|
37
|
+
- Or build a Pi extension that bridges to the IJFW MCP memory server (`~/.ijfw/mcp-server/src/server.js`). Pi's extension API supports tool registration; the bridge is the cleanest path to native parity.
|
|
38
|
+
|
|
39
|
+
## Scope
|
|
40
|
+
|
|
41
|
+
Stay in the lane the user asked for. If you spot adjacent issues, mention them in chat -- don't fix them silently. No drive-by refactors. No backwards-compatibility shims for code that isn't shipped yet.
|
|
42
|
+
|
|
43
|
+
## DESIGN picker
|
|
44
|
+
|
|
45
|
+
If the user asks for a design contract and no `DESIGN.md` exists in the project root, suggest one of the 12 IJFW curated templates (alphabetical):
|
|
46
|
+
|
|
47
|
+
apple-glass, anthropic, bauhaus, brutalist, calm, dark-mode, document, editorial, glassmorphism, minimal, neo-brutalist, terminal
|
|
48
|
+
|
|
49
|
+
Show 3 options matching the project's vibe; let the user pick. Then write `DESIGN.md` to project root. Every IJFW-connected agent reads the same visual contract -- you keep them consistent.
|
|
50
|
+
|
|
51
|
+
## Executing actions with care
|
|
52
|
+
|
|
53
|
+
Carefully consider blast radius before destructive ops. Local edits and tests are safe; check with the user before `rm -rf`, force pushes, dropping tables, sending messages, or anything visible to others or hard to reverse.
|
|
54
|
+
|
|
55
|
+
When you hit an obstacle, find the root cause rather than bypassing safety checks (no `--no-verify`, no force-push to main). If you encounter unfamiliar state, investigate before deleting -- it may be the user's in-progress work.
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "ijfw",
|
|
3
|
-
"displayName": "IJFW — AI Efficiency Layer",
|
|
4
|
-
"version": "1.5.6",
|
|
5
|
-
"description": "One install, every AI coding agent, zero config. Unifies 16 CLIs under a shared MCP memory layer so context follows you across Claude, Codex, Gemini, Cursor, Windsurf, and 11 more.",
|
|
6
|
-
"author": "Sean Donahoe",
|
|
7
|
-
"icon": "assets/ijfw-logo.svg",
|
|
8
|
-
"dist": {
|
|
9
|
-
"tarball": "extensions/ijfw-1.5.6.zip",
|
|
10
|
-
"integrity": "sha512-vm3ot0+GhXYy0/HcStB/xmFjZhSXWG7jzSLuIPe43/Dla8qhyR9gsCwBI/8+RsUJqMXiPgc0GuxrgwW2f5DDWA==",
|
|
11
|
-
"unpackedSize": 3312
|
|
12
|
-
},
|
|
13
|
-
"engines": {
|
|
14
|
-
"wayland": ">=0.6.0"
|
|
15
|
-
},
|
|
16
|
-
"hubs": [
|
|
17
|
-
"acpAdapters",
|
|
18
|
-
"mcpServers"
|
|
19
|
-
],
|
|
20
|
-
"contributes": {
|
|
21
|
-
"acpAdapters": [
|
|
22
|
-
"claude",
|
|
23
|
-
"codex",
|
|
24
|
-
"gemini",
|
|
25
|
-
"cursor",
|
|
26
|
-
"windsurf",
|
|
27
|
-
"copilot",
|
|
28
|
-
"hermes",
|
|
29
|
-
"wayland",
|
|
30
|
-
"aider",
|
|
31
|
-
"opencode",
|
|
32
|
-
"qwencode",
|
|
33
|
-
"cline",
|
|
34
|
-
"kimicode",
|
|
35
|
-
"openclaw",
|
|
36
|
-
"antigravity",
|
|
37
|
-
"pi"
|
|
38
|
-
],
|
|
39
|
-
"mcpServers": [
|
|
40
|
-
"ijfw-memory"
|
|
41
|
-
]
|
|
42
|
-
},
|
|
43
|
-
"tags": [
|
|
44
|
-
"ai",
|
|
45
|
-
"coding",
|
|
46
|
-
"mcp",
|
|
47
|
-
"memory",
|
|
48
|
-
"multi-agent"
|
|
49
|
-
]
|
|
50
|
-
}
|