| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
Rename the Memory section to Harness and nest the Shell notes under
it, alongside a new todo-list preference.
Reword the long-form-flags note and fix a grammar slip in the
agent-spawning rule.
|
| |
|
|
|
|
|
|
|
|
|
| |
ANSI-colour the systemMessage so it stands out at a glance: memory
rows cyan, a "(missing)" row red with an ❌, the $HOME warning
yellow with a ⚠️ per line.
Colours wrap each line around its already-computed padding, so the
util's column alignment is unaffected -- ANSI bytes never count
toward printf's width. jq encodes the ESC byte as an escape in the
JSON and the harness restores a real ESC when it prints.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
Replace the three near-identical dump scripts with a single
dump.hook.sh that derives both target dir and filename from the
payload: dir from hook_event_name (trailing `failure` stripped so the
two post events share posttooluse), id from tool_use_id else
session_id-source/reason.
This adds SessionEnd for free, so register the hook (and the notifier)
on SessionEnd too, and extend the notifier's id fallback to reason.
|
| |
|
|
|
|
| |
Add nvim-notify.hook.sh to the hook roster and give it its own bullet
describing the User Claude<Event> autocmd and how the pattern and data
are derived from the payload.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add nvim-notify.hook.sh, a generic hook that tells the Neovim instance
owning the terminal ($NVIM) that a state dump is available, by firing a
`User Claude<Event>` autocmd whose `data` is the dump's basename.
The signal is derived from the payload, so the one script serves every
event it is registered against: `hook_event_name` becomes the pattern,
and `tool_use_id` (else `session_id-source`) becomes the `data`, matching
how the dump hooks name their files. It is a no-op outside a Neovim
terminal or without an identifier, and the remote call is backgrounded
with a timeout so a slow or absent editor never blocks a tool call.
Register it after each dump hook on SessionStart, PreToolUse (Bash),
PostToolUse (Bash), and PostToolUseFailure (Bash).
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
Add sessionstart-dump.hook.sh, mirroring the Bash payload dumps: it
writes the full SessionStart JSON to
$XDG_STATE_HOME/claude/sessionstart/<session_id>-<source>.json. Register
it as a second SessionStart hook, alongside the memory-status report.
session_id is stable across a session's fires, so source
(startup/resume/clear/compact) is appended to keep them distinct.
|
| | |
|
| | |
|
| |
|
|
|
|
| |
$HOME is not treated as a project, so home skills (~/.claude/skills)
only load with --add-dir $HOME. No payload exposes whether that flag
was passed, so append the warning whenever cwd is $HOME.
|
| |
|
|
|
|
| |
Update the Hooks bullet and add a Bash dumps bullet covering the
pre/post split, the PostToolUseFailure registration, and the
tool_use_id pairing.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Capture each Bash call's full pre/post JSON payload to
$XDG_STATE_HOME/claude/{pretooluse,posttooluse}/<tool_use_id>.json.
The pre dump is the command (input), the post dump is command plus
result (output); the post hook registers on PostToolUse and
PostToolUseFailure so failed commands are captured. Naming files by the
shared tool_use_id lets a consumer pair a call's input and output dumps
by matching basename across the two folders.
Retire the per-session bash-log hook, which the dumps supersede.
|
| | |
|
| |
|
|
|
|
| |
Describe the hooks as thin .hook.sh wrappers in hooks/ backed by their
by-hand implementations in bin/, and repoint the managed-files audit
reference at bin/.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Move the hook wrappers out of bin/ into hooks/, and name every
registered hook with a .hook.sh suffix. bin/ keeps only the standalone
installer and the by-hand utilities (memory-status.sh, managed-files.sh)
that those wrappers now resolve as their implementations.
Coalesce the eight per-language formatter hooks into a single
format.hook.sh that dispatches on file type with a case, so no file is
ever run through more than one formatter.
Update settings.json, .claude/settings.json, and .gitignore to match.
|
| |
|
|
|
|
|
| |
Have bin/install.sh warn to log back in when the drop-in's vars are not
yet active in the session, since environment.d is read only at login.
Before falling back to a default $XDG_CONFIG_HOME, warn and, when
interactive, pause so the user can set it first.
|
| |
|
|
|
|
| |
Note the new installer in the README and the project CLAUDE.md:
it installs the binary and writes the session-env drop-in that sets
CLAUDE_CONFIG_DIR and CLAUDE_CODE_DISABLE_AUTO_MEMORY.
|
| |
|
|
|
|
|
|
| |
Add bin/install.sh, the standalone Claude Code installer.
It installs or updates the binary, then writes the systemd user drop-in
$XDG_CONFIG_HOME/environment.d/50-claude.conf, pointing CLAUDE_CONFIG_DIR
at this repo and setting CLAUDE_CODE_DISABLE_AUTO_MEMORY=1.
Whitelist it in .gitignore alongside the other bin/ scripts.
|
| |
|
|
|
|
|
| |
Remove the auto-memory mentions from README, CLAUDE.md, and the project
CLAUDE.md now that the feature is gone. Also drop the "Never git push"
rule, add the README/CLAUDE.md update reminder and the separate-docs-
commit convention, and trim the writing guidance.
|
| |
|
|
|
|
|
|
|
| |
Drop the user-level Setup hook that pointed each project's automemory at
its own .claude/memory/, the tracked memory entries, and the
autoMemoryDirectory settings. Strip the automemory stats, counts, and
warnings from the SessionStart memory-status report, leaving the
CLAUDE.md rows. Auto-memory is now disabled via
CLAUDE_CODE_DISABLE_AUTO_MEMORY in the environment.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
Collapse the granular git/dotfiles-git allow entries into a single
Bash(git *) rule, ask before commits, and deny push.
|
| | |
|
| | |
|
| |
|
|
|
|
| |
Mirror the plain-`git` allowlist for the `dotfiles git …` helper, now
that Claude's Bash reaches the dotfiles repo through the passthrough
rather than a forced GIT_DIR env.
|
| |
|
|
|
| |
Migrate the allow entries from `:*` to ` *` syntax, sort them
alphabetically, and add `git add`/`grep`/`restore`/`rm`.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
Reflect the per-repo .claude/memory/ relocation and the SessionStart hook split
(bin/session-start.hook.sh + bin/memory-status.sh) in README.md and the project
CLAUDE.md.
|
| |
|
|
|
|
|
| |
Relocate the tracked automemory store from projects/<encoded-cwd>/memory/ to
.claude/memory/, and set autoMemoryDirectory in this repo's .claude/settings.json
so the harness writes new automemory there. Matches the relocation the new Setup
hook applies to every project.
|
| |
|
|
|
|
|
|
|
|
| |
Add a user-level Setup hook (bin/auto-memory-dir.hook.sh) that sets
autoMemoryDirectory to "$CLAUDE_PROJECT_DIR/.claude/memory/" in each
project's .claude/settings.json, so automemory lives with the repo instead of
under the shared projects/<encoded-cwd>/ default.
Extend memory-status.sh to resolve the automemory dir from that setting (when
present) and to warn when a project has not opted in.
|
| |
|
|
|
|
|
|
|
|
| |
Mirror the managed-files.{sh,hook.sh} convention: move the stats logic out
of hooks/session-start.sh into a standalone bin/memory-status.sh (runnable by
hand, takes cwd as $1), and add a thin bin/session-start.hook.sh wrapper that
does the stdin/JSON plumbing.
Behavior change: omit the 'Automemory entries' row when MEMORY.md is missing,
rather than showing a 0 count.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
Add an "Automemory entries" row to the SessionStart stats — the count of
*.md under the automemory dir minus the always-loaded MEMORY.md index.
|