Hooks
What keel runs automatically, and when. A hook is a command Claude Code fires at a fixed moment, without you asking for it.
> /plugin marketplace add EdytaKucharska/keel > /plugin install keel@keel
Ships with keel. Installing the plugin gets these hooks.
What fires, and when
SessionStart
Fires once when a session begins, and again after a context compaction. It is where a plugin sets up its environment, or restores state the compaction dropped.
bash "${CLAUDE_PLUGIN_ROOT}/hooks/session-digest.sh"
Where it lives
- hooks/session-digest.shRunsGitHub
Read the script
#!/usr/bin/env bash # Keel ledger session digest — SessionStart hook. # If the project has a .keel/ ledger, print a five-line digest so the session # starts with decision memory ambient. Silent no-op when there is no ledger. set -euo pipefail LEDGER_DIR="${CLAUDE_PROJECT_DIR:-.}/.keel" [ -d "$LEDGER_DIR" ] || exit 0 # Count real entries only: headers carry a number (## #1, ## A-1, ## L-1), so the # placeholder examples inside the templates' <!-- Entry format --> comments # (## #N, ## A-N, ## L-N) don't inflate the counts. count() { if [ -f "$1" ]; then grep -c "$2" "$1" || true; else echo 0; fi } decisions=$(count "$LEDGER_DIR/decisions.md" '^## #[0-9]') open_assumptions=$(count "$LEDGER_DIR/assumptions.md" '^- \*\*Status:\*\* open$') lessons=$(count "$LEDGER_DIR/lessons.md" '^## L-[0-9]') echo "=== KEEL LEDGER (.keel/) ===" echo "Decisions on record: ${decisions} | Open assumptions: ${open_assumptions} | Lessons: ${lessons}" if [ "$open_assumptions" -gt 0 ] && [ -f "$LEDGER_DIR/assumptions.md" ]; then echo "Open assumptions (check whether any trigger has fired before advising):" awk '/^## A-[0-9]/ { header = substr($0, 4) } /^- \*\*Status:\*\* open$/ { if (header != "") print " - " header }' \ "$LEDGER_DIR/assumptions.md" | head -5 fi echo "Consult .keel/profile.md before asking context questions; append decisions and assumptions after recommending."
Read the script before you install anything that runs on your machine. This is the one part of a plugin that acts without being asked.
The AI fractional CTO that lives in your repo — and remembers you. A keel is the weighted spine below a boat's waterline: invisible, and the only reason the vessel stays upright as it takes on load. Your AI tools already generate the app — the sails.

