Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add muratsilahtaroglu/claude-code-starter-kit --skill keel-handovergit clone --depth 1 https://github.com/muratsilahtaroglu/claude-code-starter-kitWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/muratsilahtaroglu/claude-code-starter-kit/keel-handover)<a href="https://agentmods.dev/skills/muratsilahtaroglu/claude-code-starter-kit/keel-handover"><img src="https://agentmods.dev/badge/skills/muratsilahtaroglu/claude-code-starter-kit/keel-handover/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/muratsilahtaroglu/claude-code-starter-kit/keel-handover"><img src="https://agentmods.dev/badge/skills/muratsilahtaroglu/claude-code-starter-kit/keel-handover.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00048 | $0.01629 |
| Opus 5.5 | $0.00019 | $0.00652 |
| Sonnet 5.5 | $0.00010 | $0.00326 |
| Haiku 4.5 | $0.00005 | $0.00163 |
Grade A, and why
keel-handover scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 77 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/keel-handover — write the session block
Add a new session block to the TOP of HANDOVER.md's "Session blocks" section (rules.md §1.4).
Newest first; never edit past blocks. Write the block in ENGLISH even on a non-English project
(§9.31: HANDOVER/LESSONS are machine-read and @-imported every session — EN is the cheaper token
surface); TASKS/PLAN/reports lines you touch stay in the project language, and the user's verbatim
words may stay quoted as-is.
Steps:
-
Read the current
HANDOVER.md. If it already has 3 blocks (or exceeds ~150 lines), run/keel-distillfirst to rotate the oldest block out (critical facts →LESSONS.md, raw block →docs/handover-archive.md). -
Write this session's block:
### <YYYY-MM-DD HH:MM> — @<git user.name> — <one-line status>(time = when the block was first created; the@<git user.name>attributes the session's author so multi-user handovers stay legible — read it fromgit config user.name; single-user projects still get it, at zero cost). One block per SESSION, not per day: if THIS session already wrote a block (a mid-session handover, or /keel-compact re-running this), UPDATE that block in place — keep its original HH:MM. A NEW session always adds a NEW block, even on the same day — same-day sessions must stay distinguishable. The block contains:- (a) Completed — what was done, dated; link decisions to their ADR/docs; include one-liners for
TASKS.md items finished this session (then delete them from TASKS.md). Multi-user exception
(
.claude/project-ownerexists and you are NOT the owner): do not delete your finished items — MOVE each to a TASKS## Reviewsection (create it if missing) as- [x] <id> ... (@you) — evidence: reports/team/<@you>/<task>_fix_<date>.md. The evidence is a FILE — verify it EXISTS before writing the line (a chat summary is not a delivery, rules.md §10.40): the solution note sits in YOUR author folder and its index line lands inreports/team/README.mdasdelivered. Pathless lines and missing files are flagged at session start, and the owner's probe may also test your UNDERSTANDING of the delivery (rules.md §10.41). Review ROUTING is then the owner/orchestrator's: mechanical verification is delegated and appends— verified ✓ (owner part: <one sentence>)to the line; on accept the OWNER deletes the item and flips the index line toclosed <date> accepted(reject → back to## Now+ one reason line, index back towip). The owner's own items follow the normal delete flow. - (b) Tried, didn't work — approaches that failed + the reason, so they aren't retried. This is the highest-value section — don't skip it.
- (c) Latest updates — the most recent concrete changes.
- (d) Next steps — prioritized, for the next session.
Signal only — a block is project STATE for the next session, not a transcript. Before writing a line, test it: would a FRESH session need it to continue, AND is it not already in
git logor.claude/ritual-log? If it fails either test, drop it. EXCLUDE: VCS/ritual bookkeeping ("committed/ pushed N commits", sha ranges, "ran /keel-distill / /keel-compact") and conversational meta ("user asked if I saved", "don't rush", who said what). A DECISION that merely touches git is different — keep the WHY ("left settings.json unstaged — it holds the machine's allow-list"), drop the mechanics. At the ~150-line cap this noise is exactly what crowds out the facts that matter. One line = one fact. A line that needs a second sentence of story, a table, or a round-by-round account is a REPORT — write it underreports/and leave the line as the fact + a pointer. The entry-budget hook blocks a new line over its per-line cap (HANDOVER_LINE_CHARS, default 400): measured on a live project, a 150-LINE cap stayed green while one line grew to 135 KB, and the file's weight fired auto-compact three times in five minutes. Rhythm: update the block at the end of each WORK BLOCK, not only at session end. Auto-compact is never blocked, so the only net under it is a disk that is already current; field case: a fix committed at 07:41, auto-compact at 07:43, and its WHY reached disk at 07:53 only because a ritual happened to run. If the SessionStart hook reports a STALE-DISK debt, settle it here FIRST — a compaction crossed this session's work before the block was written. - (a) Completed — what was done, dated; link decisions to their ADR/docs; include one-liners for
TASKS.md items finished this session (then delete them from TASKS.md). Multi-user exception
(
-
PLAN.md (if the project uses it): flip the phase statuses that changed this session, refresh Current focus, regenerate the diagram block from the table (see
/keel-planstep 2) — patch the file, never rewrite it wholesale. If the wip phase's gate looks MET (its## Nowitems all checked, gate evidence exists), propose/keel-phase-reviewto the user — don't run it unasked: flipping a phase todoneis the review's job, not this skill's (rules.md §2.7). -
Update the global Open questions / pending user decisions section (add new, delete resolved).
-
Drain TASKS
## Discovered(an INBOX, not storage — this includes project variants like## Discovered-team): converge every line OUT — a real task →## Next(with a done-when) · a domain/provider fact →docs/(architecture "known limitations" / the project's R-request or integration doc) · a lesson →LESSONS.md· a design decision → an ADR · resolved/superseded → DELETE (git keeps it). Entries are ONE line; anything longer is a report/spec/ADR fragment — write it there, leave a pointer. A line that survives two handovers is in the wrong file; leave only this session's genuinely untriaged finds (the re-ground hook flags week-old leftovers). -
Sweep the conversation for unwritten agreements (rules §9.31): any rule/test/gotcha agreed this session that isn't in
LESSONS.mdyet — ask, then append. -
Set the
_Last updated:_line to today's date + a one-line status. -
Do NOT commit/push without user approval (rules.md §1.3, §6.15).
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed · +10 lines 93b3d3672c9a
- 2mo ago First seen · 67 lines · 48 tokens per session scan A 704cf54eea38
keel-handover is a skill published in the GitHub repository muratsilahtaroglu/claude-code-starter-kit (9 stars, last pushed 1mo ago), licensed MIT. It adds 48 tokens to every session and 1,629 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
apple-reminders
Apple Reminders via remindctl: add, list, complete.
apple-notes
Manage Apple Notes via memo CLI: create, search, edit.
box
Box manages cloud files, sharing, search, and metadata.
obsidian
Read, search, create, and edit notes in the Obsidian vault.
channels-setup
Use when a developer wants to build their first CopilotKit Channels agent and get it answering in Slack or Microsoft Teams: "set up a channel", "connect my agent to Slack", "get my agent into Teams", or starting from nothing and wanting a working channel end to end. Covers the whole path: inspecting or scaffolding the…
mantis-configure
Configures and validates Mantis pipeline environments, sandbox mechanisms, and AI models. Use to set up workflow.json, auto-detect host capabilities, switch between sandboxes (static-only, gvisor, microsandbox, gce), select AI models, and run fast 1-2s preflight tests. Don't use for scanning source code or running…