Project Notebook
Treat Git and the repository's Project Manifest as authoritative. Treat the
remote notebook as scoped, derivative context that PJangler owns and can audit.
Work through PJangler
- Resolve the repository explicitly when the current directory is ambiguous.
- Inspect
pj notebook status [repo] before assuming a healthy binding.
- Use
--json when another tool will consume the result. Check ok, symbolic
error code, and next_actions; do not infer success from prose.
- Keep reads and mutations project-scoped. Never call the notebook service
directly or accept a result whose membership in the resolved binding is not
proven.
- Use
pj notebook audit [repo] to diagnose Drift. Use
pj notebook migrate [repo] for an owned repair plan, adding --apply for
local changes and --live only when remote repair is intended.
- Preserve repository files as the source of truth. Never overwrite Git
content from notebook content.
Use the public command surface
Use these command families rather than internal hook or worker entrypoints:
pj notebook status|create|overview|audit|migrate
pj notebook list notes, get note, add note, update note, delete note
pj notebook search notes
pj notebook capture list|retry
Direct note mutation authorizes only that selected operation. create and live
migration require --live; note deletion requires confirmation or --yes.
Never delete the stable Overview note.
For complete command forms, policy precedence, hook projection, and safe
configuration, read configuration.md. For
capture pressure, Drift, snapshots, uninstall, and failure recovery, read
recovery.md.
Handle session context safely
- Let the global wrappers scope themselves at runtime. Global installation does
not enable a repository.
- Use true
SessionStart and SessionEnd only. Never substitute Stop for a
session boundary.
- Keep hook payloads and user content out of argv and logs.
- Treat hook failures as bounded, actionable, fail-open diagnostics.
- Treat
PROJECT NOTEBOOK OVERVIEW DRIFT as stale context. Run the exact audit
or migration action reported before relying on the stored Overview.
- Treat retention pressure as an admission diagnostic, not a receipt state.
Never delete or compact an unresolved receipt to make room.
Protect credentials and foreign configuration
Resolve endpoint and authentication through PJangler runtime configuration;
never store them in a repository Manifest, note, hook command, or skill file.
Use scripts/project-hooks.py for global Claude projection. Its owner marker is
exactly project-notebook.v1; do not hand-edit live settings or remove
Bloodbank, Hindsight, Git checkpoint, notification, CommonProject, or other
foreign hooks.
1---2name: project-notebook3description: Operate PJangler Project Notebook as bounded, Git-grounded project memory. Use when an agent needs to inspect notebook status, read or update the stable Overview, manage scoped notes, search project knowledge, audit or migrate a binding, recover capture receipts, or install/check the canonical global Project Notebook hooks without changing foreign hooks.4---56# Project Notebook78Treat Git and the repository's Project Manifest as authoritative. Treat the9remote notebook as scoped, derivative context that PJangler owns and can audit.1011## Work through PJangler12131. Resolve the repository explicitly when the current directory is ambiguous.142. Inspect `pj notebook status [repo]` before assuming a healthy binding.153. Use `--json` when another tool will consume the result. Check `ok`, symbolic16 error code, and `next_actions`; do not infer success from prose.174. Keep reads and mutations project-scoped. Never call the notebook service18 directly or accept a result whose membership in the resolved binding is not19 proven.205. Use `pj notebook audit [repo]` to diagnose Drift. Use21 `pj notebook migrate [repo]` for an owned repair plan, adding `--apply` for22 local changes and `--live` only when remote repair is intended.236. Preserve repository files as the source of truth. Never overwrite Git24 content from notebook content.2526## Use the public command surface2728Use these command families rather than internal hook or worker entrypoints:2930- `pj notebook status|create|overview|audit|migrate`31- `pj notebook list notes`, `get note`, `add note`, `update note`, `delete note`32- `pj notebook search notes`33- `pj notebook capture list|retry`3435Direct note mutation authorizes only that selected operation. `create` and live36migration require `--live`; note deletion requires confirmation or `--yes`.37Never delete the stable Overview note.3839For complete command forms, policy precedence, hook projection, and safe40configuration, read [configuration.md](references/configuration.md). For41capture pressure, Drift, snapshots, uninstall, and failure recovery, read42[recovery.md](references/recovery.md).4344## Handle session context safely4546- Let the global wrappers scope themselves at runtime. Global installation does47 not enable a repository.48- Use true `SessionStart` and `SessionEnd` only. Never substitute `Stop` for a49 session boundary.50- Keep hook payloads and user content out of argv and logs.51- Treat hook failures as bounded, actionable, fail-open diagnostics.52- Treat `PROJECT NOTEBOOK OVERVIEW DRIFT` as stale context. Run the exact audit53 or migration action reported before relying on the stored Overview.54- Treat retention pressure as an admission diagnostic, not a receipt state.55 Never delete or compact an unresolved receipt to make room.5657## Protect credentials and foreign configuration5859Resolve endpoint and authentication through PJangler runtime configuration;60never store them in a repository Manifest, note, hook command, or skill file.61Use `scripts/project-hooks.py` for global Claude projection. Its owner marker is62exactly `project-notebook.v1`; do not hand-edit live settings or remove63Bloodbank, Hindsight, Git checkpoint, notification, CommonProject, or other64foreign hooks.