@albinocrabs/feynman 0.2.2 → 0.2.5

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,6 +1,6 @@
1
1
  {
2
2
  "name": "feynman",
3
- "version": "0.2.2",
3
+ "version": "0.2.5",
4
4
  "description": "Auto-inject ASCII diagram rules into Codex and Claude Code prompts.",
5
5
  "author": {
6
6
  "name": "apolenkov",
package/CHANGELOG.md CHANGED
@@ -2,9 +2,75 @@
2
2
 
3
3
  All notable changes to this project are documented here.
4
4
 
5
- ## 0.2.2 - 2026-05-07
5
+ ## 0.2.5 - 2026-05-08
6
+
7
+ ### Features
8
+
9
+ - add SessionStart hook priming alongside UserPromptSubmit reinforcement
10
+ - keep full diagram rules enabled by default for Claude Code and Codex
11
+
12
+ ### Fixes
13
+
14
+ - preserve explicit /feynman off behavior with silent hooks
15
+ - keep feynman hooks quiet by omitting status messages
16
+
17
+ ### Maintenance
18
+
19
+ - bump package and plugin manifest versions to 0.2.5
20
+ - expand tests for SessionStart registration and runtime behavior
21
+
22
+ ## 0.2.4 - 2026-05-07
23
+
24
+ Changes since v0.2.2.
25
+
26
+ ### Fixes
27
+
28
+ - normalize hook bypass docs and lint-safe examples
29
+
30
+ ### CI/CD
31
+
32
+ - make coverage badge commit non-blocking on protected branch
33
+ - stabilize release note extraction by version section
34
+ - auto-update release notes and add npm publish verification
35
+
36
+ ### Documentation
37
+
38
+ - expand examples gallery and add activity sequence
39
+ - update changelog for v0.2.3
40
+ - add advanced before-after examples
6
41
 
7
42
  ### Maintenance
8
43
 
44
+ - v0.2.4
45
+ - regenerate changelog for 0.2.3 updates
46
+ - auto-merge #2
47
+ - finalize launch docs, examples and PR auto-merge wiring
48
+ - complete v0.2.0 milestone audit docs
9
49
  - sync plugin manifest versions for 0.2.2
10
50
 
51
+ ## 0.2.3 - 2026-05-07
52
+
53
+ Changes since v0.2.2.
54
+
55
+ ### Fixes
56
+
57
+ - normalize hook bypass docs and lint-safe examples
58
+
59
+ ### CI/CD
60
+
61
+ - make coverage badge commit non-blocking on protected branch
62
+ - stabilize release note extraction by version section
63
+ - auto-update release notes and add npm publish verification
64
+
65
+ ### Documentation
66
+
67
+ - expand examples gallery and add activity sequence
68
+ - update changelog for v0.2.3
69
+ - add advanced before-after examples
70
+
71
+ ### Maintenance
72
+
73
+ - auto-merge #2
74
+ - finalize launch docs, examples and PR auto-merge wiring
75
+ - complete v0.2.0 milestone audit docs
76
+ - sync plugin manifest versions for 0.2.2
package/CONTRIBUTING.md CHANGED
@@ -47,6 +47,7 @@ Before opening a pull request:
47
47
  - [ ] `README.md` updated if a user-facing feature changed
48
48
  - [ ] Commit message follows the format: `type(scope): description`
49
49
  (types: `feat`, `fix`, `test`, `docs`, `refactor`, `chore`)
50
+ - [ ] Add labels `auto-merge` and `status:ready` when the PR is fully reviewed and safe to merge automatically
50
51
 
51
52
  ---
52
53
 
package/README.md CHANGED
@@ -19,6 +19,7 @@
19
19
 
20
20
  <p align="center">
21
21
  <a href="#why-feynman">Why</a> •
22
+ <a href="docs/object-passport.md">Passport</a> •
22
23
  <a href="#before--after">Before/After</a> •
23
24
  <a href="#install">Install</a> •
24
25
  <a href="#intensity-levels">Levels</a> •
@@ -35,7 +36,7 @@ plugin that automatically injects ASCII diagram rules into every prompt via the
35
36
  `UserPromptSubmit` hook.
36
37
 
37
38
  ```bash
38
- npx -y @albinocrabs/feynman@latest install --target both
39
+ npx -y @albinocrabs/feynman@latest install --target all
39
40
  npx -y @albinocrabs/feynman@latest doctor --target codex
40
41
  ```
41
42
 
@@ -47,6 +48,15 @@ Code or Codex prompt and injects rules that turn flows into arrows,
47
48
  hierarchies into trees, comparisons into columns, and status into frames. The
48
49
  structure is visible before you have to think about it.
49
50
 
51
+ Conceptually, feynman is inspired by prompt-compression ideas from the Caveman
52
+ agent style: smaller prompts, clearer intent, and explicit diagram-first thinking.
53
+
54
+ ## Governance docs
55
+
56
+ - `AGENTS.md` — project execution contract for Codex-aware tooling.
57
+ - `CLAUDE.md` — canonical project memory, stack, and architecture constraints.
58
+ - Global instructions are loaded from user-level runtime configuration before repo-specific overrides.
59
+
50
60
  ## Before / After
51
61
 
52
62
  <table>
@@ -136,10 +146,10 @@ free | free | $$$
136
146
 
137
147
  ## Install
138
148
 
139
- **Claude Code via npx:**
149
+ **Install to Codex by default (when --target is omitted):**
140
150
 
141
151
  ```bash
142
- npx @albinocrabs/feynman install --target claude
152
+ npx @albinocrabs/feynman install
143
153
  ```
144
154
 
145
155
  **Codex via npx:**
@@ -151,7 +161,7 @@ npx @albinocrabs/feynman install --target codex
151
161
  **Both clients:**
152
162
 
153
163
  ```bash
154
- npx @albinocrabs/feynman install --target both
164
+ npx @albinocrabs/feynman install --target all
155
165
  ```
156
166
 
157
167
  The install command is idempotent: running it again updates the existing
@@ -167,7 +177,7 @@ Restart Claude Code or Codex. Done.
167
177
 
168
178
  **Verify:** `npx @albinocrabs/feynman doctor --target claude` or `npx @albinocrabs/feynman doctor --target codex`
169
179
 
170
- **Uninstall:** `npx @albinocrabs/feynman uninstall --target claude|codex|both`
180
+ **Uninstall:** `npx @albinocrabs/feynman uninstall --target claude|codex|both|all|*`
171
181
 
172
182
  **Plugin manifests:** this repo also ships `.claude-plugin/plugin.json`,
173
183
  `hooks/hooks.json`, `.codex-plugin/plugin.json`, and `hooks.json` so plugin
@@ -189,8 +199,7 @@ Add to `~/.claude/settings.json` — use the absolute path, not `~/`
189
199
  {
190
200
  "type": "command",
191
201
  "command": "node \"/absolute/path/to/feynman/hooks/feynman-activate.js\"",
192
- "timeout": 5,
193
- "statusMessage": "Injecting diagram rules..."
202
+ "timeout": 5
194
203
  }
195
204
  ]
196
205
  }
@@ -211,8 +220,7 @@ For Codex, add the same shape to `~/.codex/hooks.json` and set
211
220
  {
212
221
  "type": "command",
213
222
  "command": "FEYNMAN_HOME=\"$HOME/.codex\" node \"/absolute/path/to/feynman/hooks/feynman-activate.js\"",
214
- "timeout": 5,
215
- "statusMessage": "Injecting diagram rules..."
223
+ "timeout": 5
216
224
  }
217
225
  ]
218
226
  }
@@ -222,6 +230,10 @@ For Codex, add the same shape to `~/.codex/hooks.json` and set
222
230
  ```
223
231
  </details>
224
232
 
233
+ After install, feynman starts in `full` mode by default. Disable or change it
234
+ explicitly with `/feynman off`, `/feynman lite`, `/feynman full`, or
235
+ `/feynman ultra`.
236
+
225
237
  ## Intensity Levels
226
238
 
227
239
  | Level | What draws | Use when |
@@ -253,24 +265,229 @@ npx @albinocrabs/feynman lint response.md
253
265
 
254
266
  See [docs/lint-rules.md](docs/lint-rules.md) for the full L01-L08 reference.
255
267
 
268
+ ### Quick hard-disable / re-enable (testing and emergency)
269
+
270
+ For temporary global disable in Codex (for smoke tests or troubleshooting), use:
271
+
272
+ ```bash
273
+ touch ~/.codex/.feynman-disable-global # hard OFF
274
+ rm ~/.codex/.feynman-disable-global # hard ON
275
+ ```
276
+
277
+ This bypasses `~/.codex/hooks.json` hook execution entirely.
278
+ Regular `/feynman off` and `/feynman on` continue to use normal profile state
279
+ files (`~/.codex/.feynman-active`, `~/.codex/.feynman/state.json`).
280
+
281
+ ## CLI examples
282
+
283
+ Quickly discover and view repository prompt templates:
284
+
285
+ ```bash
286
+ feynman examples
287
+ feynman examples --name feature-planning
288
+ feynman examples --name incident-response
289
+ feynman examples --random
290
+ ```
291
+
292
+ Export a ready-to-distribute local package (examples, rules, plugins, and skill):
293
+
294
+ ```bash
295
+ feynman bootstrap
296
+ feynman bootstrap --out ./feynman-package
297
+ feynman bootstrap --out ./feynman-package --force
298
+ ```
299
+
300
+ This is useful for disconnected/air-gapped installs where you want to copy one
301
+ folder with all `Feynman` assets instead of depending on `npm`.
302
+
303
+ Slash command aliases (inside Claude/Codex):
304
+
305
+ ```text
306
+ /feynman on | off
307
+ /feynman start | stop
308
+ /feynman lite | full | ultra
309
+ /feynman status
310
+ ```
311
+
256
312
  ## Examples
257
313
 
258
- Domain-specific examples showing feynman in practice:
314
+ Run a concrete example in the needed style:
315
+
316
+ ```bash
317
+ feynman examples --name <example-name>
318
+ ```
259
319
 
260
- - [Architecture review](examples/architecture-review.md) auth service topology
261
- - [API flow](examples/api-flow.md) — POST /api/login request lifecycle
262
- - [Database schema](examples/db-schema.md) — e-commerce entity model
263
- - [Algorithm walkthrough](examples/algorithm-explain.md) — token-bucket rate limiter
264
- - [Deploy pipeline](examples/deploy-pipeline.md) — monorepo CI/CD
265
- - [Code review](examples/code-review.md) — priority + comparison diagrams
320
+ > Tip: all examples are ready-to-run templates in `examples/*.md`, can be copied into prompts or docs, and rendered as a compact ASCII layout with `feynman examples --name ...`.
321
+
322
+ ```text
323
+ [Flow] [Architecture] [API] [Decisions]
324
+ | | | |
325
+ v v v v
326
+ [Action] [System] [Lifecycle] [Reasoning]
327
+ ↓ ↓ ↓ ↓
328
+ [Outcome] [Design] [Change] [Choice]
329
+ ```
330
+
331
+ ## Visual example gallery
332
+
333
+ ### Flow and actioning
334
+
335
+ #### Incident-ready action playbooks
336
+
337
+ - [Activity sequence](examples/activity-sequence.md) — incident action plans with rollback gates
338
+ ```
339
+ [Incident] --> [Triage] --> [Contain] --> [Mitigate] --> [Review]
340
+ | no |
341
+ v |
342
+ [Rollback] <----+
343
+ ```
344
+ - [Incident response](examples/incident-response.md) — triage and containment sequence
345
+ ```
346
+ [Detect] --> [Classify] --> [Isolate] --> [Communicate]
347
+ |
348
+ +--> [Recover]
349
+ ```
350
+ - [Bug isolation](examples/bug-isolation.md) — stateful diagnostic flow with priorities
351
+ ```
352
+ ▲ high
353
+ high-likelihood
354
+ ▼ low
355
+ narrow scope
356
+ documentation
357
+ ```
358
+ - [Release readiness](examples/release-readiness.md) — staged launch gates and recovery triggers
359
+ ```
360
+ [Build] --> [QA] --> [Dark launch] --> [General]
361
+ | no | yes
362
+ v v
363
+ [Rollback] [Monitor]
364
+ ```
365
+
366
+ ### Architecture and design
367
+
368
+ - [Architecture review](examples/architecture-review.md) — auth system decomposition
369
+ ```
370
+ Auth
371
+ ├── Service
372
+ │ ├── Redis rate limits
373
+ │ └── Postgres users
374
+ └── Observability
375
+ └── Events
376
+ ```
377
+ - [C4 platform design](examples/c4-platform-diagramming.md) — context → container → component
378
+ ```
379
+ [User] --> [Web] --> [API] --> [DB]
380
+ ```
381
+ - [Context splitting](examples/context-splitting.md) — decomposing complex initiatives
382
+ ```
383
+ Initiative
384
+ ├── Domain A
385
+ ├── Domain B
386
+ └── Domain C
387
+ ```
388
+ - [Database schema](examples/db-schema.md) — entity model as structured tree
389
+ ```
390
+ Report
391
+ ├── Metadata
392
+ ├── Sections
393
+ └── History
394
+ ```
395
+
396
+ ### API and migration
397
+
398
+ - [API flow](examples/api-flow.md) — request lifecycle with branch diagnostics
399
+ ```
400
+ [Client] --> [Auth] --> [Service] --> [DB]
401
+ | yes |
402
+ +-->[Cache] ---+
403
+ ```
404
+ - [Deploy pipeline](examples/deploy-pipeline.md) — CI/CD action chain
405
+ ```
406
+ [Source] --> [Build] --> [Test] --> [Canary] --> [Scale]
407
+ | |
408
+ v +--> [Rollback]
409
+ ```
410
+ - [Service migration](examples/service-migration.md) — cutover with risk controls
411
+ ```
412
+ [Old service] --> [Dual write] --> [Read compare] --> [Cut over]
413
+ | mismatch
414
+ v
415
+ [Stop migration]
416
+ ```
417
+
418
+ ### Decisions and methods
419
+
420
+ - [Feature planning](examples/feature-planning.md) — decision matrix + phased rollout
421
+ ```
422
+ [Need] --> [Plan] --> [Run experiment] --> [Scale]
423
+ | |
424
+ +--> [Kill-switch]
425
+ ```
426
+ - [Algorithm walkthrough](examples/algorithm-explain.md) — rate-limiter logic as explainable sequence
427
+ ```
428
+ [Need decision?] --> [Compute score] --> [Allow / Deny]
429
+ ```
430
+ - [Code review](examples/code-review.md) — issue prioritization and evidence matrix
431
+ ```
432
+ ▲ must-fix [security]
433
+ ▲ medium [performance]
434
+ ▼ low [docs]
435
+ ```
436
+
437
+ ### One-command pack test
438
+
439
+ ```bash
440
+ feynman examples --name activity-sequence && \
441
+ feynman examples --name incident-response && \
442
+ feynman examples --name c4-platform-diagramming
443
+ ```
444
+
445
+ ## Visual gallery (before → after)
446
+
447
+ If you want to quickly see how diagram-first responses evolve, this is the core pattern:
448
+
449
+ Without feynman:
450
+
451
+ `We need to choose between shipping fast with a managed API, keeping control in-house, or a hybrid path while managing risk and cost.`
452
+
453
+ With feynman:
454
+
455
+ ```
456
+ [Is SLA strict?] --> [Yes] --> [Prefer managed service]
457
+ | | |
458
+ | v v
459
+ | [Contract + vendor risk] --> [Is rollback cheap?]
460
+ | |
461
+ v +--> [Yes] --> [Adopt + guardrails]
462
+ [Can we build fast?] +--> [No] --> [Hybrid path]
463
+ |
464
+ no ------ +------- yes
465
+ | |
466
+ v v
467
+ [Build in house] [Run controlled managed pilot]
468
+ ```
469
+
470
+ Same brief question, different clarity level.
471
+
472
+ ```
473
+ criterion | build in-house | managed API | hybrid
474
+ ---------------|----------------|-------------|----------------
475
+ launch speed | slow | fast | medium
476
+ vendor lock-in | low | high | medium
477
+ compliance | high control | partner SLA | custom controls
478
+ cost | low initial | medium | medium-high
479
+ ```
480
+
481
+ Use this gallery style if you want `feynman` examples to look “production-clean”
482
+ from day one.
266
483
 
267
484
  ## How it works
268
485
 
269
- The `UserPromptSubmit` hook fires on every Claude Code or Codex prompt. The
270
- hook reads the target-local state file (`~/.claude/.feynman/state.json` or
271
- `~/.codex/.feynman/state.json`), extracts the rules for the active intensity
272
- level, and injects them as `additionalContext` — invisible to you, visible to
273
- the model on every message.
486
+ The `SessionStart` hook primes fresh Claude Code or Codex sessions with the
487
+ active rules, and the `UserPromptSubmit` hook reinforces them on every prompt.
488
+ Both hooks read the target-local state file
489
+ (`~/.claude/.feynman/state.json` or `~/.codex/.feynman/state.json`), extract
490
+ the rules for the active intensity level, and inject them into model context.
274
491
 
275
492
  ```
276
493
  [your prompt]
@@ -289,7 +506,10 @@ the model on every message.
289
506
  Every push runs tests on Node 18 and 20 across Ubuntu and macOS. The release
290
507
  lane also lints public docs, smoke-tests the packed npm tarball, builds a
291
508
  `dist/*.tgz` artifact, and can publish to npm from a GitHub Release when
292
- `NPM_TOKEN` is configured.
509
+ `NPM_TOKEN` is configured. If the token is absent and the package version is
510
+ already published, the workflow updates release notes and exits successfully;
511
+ for a new publish, it fails with a clear message so token-less publication
512
+ cannot silently pass.
293
513
 
294
514
  ```bash
295
515
  npm run ci
@@ -297,6 +517,24 @@ npm run changelog
297
517
  npm run build
298
518
  ```
299
519
 
520
+ ### GitHub release path
521
+
522
+ 1. Tag and release from GitHub (or run workflow_dispatch with `dry_run=false`).
523
+ 2. Ensure repository secret `NPM_TOKEN` is set (only needed for first publish
524
+ of a new version).
525
+ 3. Keep version/tag aligned: release tag must equal `package.json` with `v`
526
+ prefix (enforced by workflow).
527
+ 4. Create release notes generated from `CHANGELOG.md` and verify package
528
+ availability after publish.
529
+ 5. Mark PRs for auto-merge with labels `auto-merge` and `status:ready` and
530
+ keep required review approvals in place.
531
+
532
+ Set or rotate `NPM_TOKEN` with:
533
+
534
+ ```bash
535
+ gh secret set NPM_TOKEN -r apolenkov/feynman
536
+ ```
537
+
300
538
  State is stored at `~/.claude/.feynman/state.json`. First run bootstraps
301
539
  automatically. See [docs/architecture.md](docs/architecture.md) for internals.
302
540
 
package/SECURITY.md CHANGED
@@ -29,3 +29,14 @@ feynman is a local hook package. The main security-sensitive surfaces are:
29
29
  - state files under `~/.claude/.feynman/` and `~/.codex/.feynman/`
30
30
 
31
31
  The package has zero runtime npm dependencies.
32
+
33
+ ## Release Security Checklist
34
+
35
+ Before publishing a new npm version:
36
+
37
+ - CI required checks must pass on Node 18 and 20 across Ubuntu and macOS.
38
+ - `npm run audit` must pass at `moderate` severity or higher.
39
+ - GitHub release tag must match `package.json` version with a `v` prefix.
40
+ - GitHub Actions secret `NPM_TOKEN` must be present for first publish of a new version.
41
+ - npm provenance is enabled in the release workflow.
42
+ - Registry smoke verification must pass after publish (`npm view`, install from npm, `feynman doctor --target both`).