retro Β· diff

git:20260814.739f70b to git:20260908.2ec1bf8

17 added, 16 removed. Audit A to A.

---
name: retro
- description: >
- End-of-session retrospective: (0) RECALL & reconcile this session against the whole
- collaboration first, (1) INVENTORY what was actually built (git log + recently-touched files),
- (2) summarize the session's arc, (3) classify each artifact keep-&-reuse / one-off / promote-
- to-permanent, (4) route durable ones to their right home (memory, canon, codex, a skill, a
- hook) β€” including spinning repeated actions into new skills, (5) auto-save the retro as a
- vault note and hand back an enriched /compact block so working memory shrinks WITHOUT losing
- the thread. Trigger on "/retro", "/rr", "wrap up the session".
+ description: >-
+ Close a work session properly: reconcile it against the wider collaboration, inventory what
+ was actually built from git log and recently-touched files, summarize the arc, classify each
+ artifact as keep, one-off or promote-to-permanent, route the durable ones to memory, canon or
+ a new skill, save the retro as a vault note, and hand back an enriched /compact block so
+ working memory shrinks without losing the thread. Triggers: "/retro", "/rr", "wrap up the
+ session".
license: MIT
---
# /retro β€” session retrospective (what we built Β· what we keep)
> πŸ§’ **When reporting to a non-technical owner:** end with a child-simple "In plain words" recap in his language. His standing request (memory `eli5-always`). Reports TO him only β€” not inside vault notes.
A retro = the Agile end-of-cycle ritual (**Keep / Drop / Try**) applied to a work session: look back, decide what survives. The goal is that **nothing reusable drowns in the transcript** β€” tools, rules, and lessons get caught and put in their right home.
## Step 0 β€” RECALL & RECONCILE FIRST (situate this session in the WHOLE collaboration)
**Before any inventory, RECALL WIDE β€” this is the heart of the retro, not a formality (the owner, 2026-07-02).** A session never happened in a vacuum: I run on multiple machines + a Cowork fleet concurrently, and this retro may be running **days/weeks/months after** the work. So recall here serves TWO jobs, not one:
- **(A) De-dupe** β€” a rule/skill/note I'm about to capture may already be done by a parallel session.
- **(B) Reconcile** β€” line up what THIS session did against everything the whole **hub / vault / peers** decided *since*; catch **drift, superseded decisions, contradictions**, and durable work not yet propagated. This is the RECALL-before-activity rule (`capture-rules-into-bible`) applied to retro.
**⏳ Measure the time-gap FIRST.** Check when this session's work actually happened (turnstate ledger / the digest's day-span) vs **now**. Old session β†’ widen every lookup below to cover *"what changed SINCE"* β€” don't recall only the session's own window.
**Recall stack — cheap→expensive, mostly 0 tokens (use the existing tools, don't reinvent):**
1. **This session's spine (0 tok):** `python "$IMPORTS_ROOT/turnstate/turnstate_show.py"` β€” the black box of what THIS session actually asked / decided / touched (facts, not memory).
2. **Recent retros:** `ls "$OBSIDIAN_VAULT/01-Conversations/Claude/Retros/"` β€” widen the window to span the gap; read any same-topic retro since.
3. **Neighboring chats (lexical, 0 tok):** `/search <topic words>` (search_catalog.db, ~99k Telegram/FB/ChatGPT/Claude) β€” what did the owner or another session **dictate elsewhere** about this topic?
4. **Vault meaning (RAG):** `/ask <topic>` (`$IMPORTS_ROOT/brain_ask.py`) β€” what does the Second Brain already hold / already decide on this?
5. **Memory + vault grep** for every rule/concept/decision this session touched β€” already captured? **superseded / changed** since?
6. **Peers & cross-machine:** `/inbox` + `_machine-bus` + consensus commits β€” everything agreed on the OTHER machines; did a peer already decide, or undo, this?
7. **Declined journal:** skill `/declined` β€” did we already reject something this session quietly re-did?
**Attribution guard:** the Step-1 inventory is machine-wide and WILL include other sessions' artifacts (skills/scripts/commits from the fleet). Treat anything NOT created in THIS conversation as **someone else's** β€” flag it, never claim or re-route it.
**Output of Step 0 β€” one tight "πŸ”Ž reconciliation" block up front** (checked + verdict):
- **checked:** what I actually looked at (N retros / chats / vault / peers).
- **βœ… aligned** β€” this session's calls match the collaboration; or
- **⚠️ drift** β€” session did X but [[note/decision]] elsewhere says Y (superseded / contradicts / already undone) β†’ flag it for the owner; or
- **πŸ”— to propagate** β€” session's durable work not yet in vault / peers / the Bible β†’ route it in Step 4.
If a parallel session already captured the durable item, **SKIP re-capturing** β€” just cross-link.
## Step 1 β€” Inventory (deterministic first; AK-47, ~free)
Ground the recap in facts, not memory alone β€” run the SHARED inventory script (same one the daily sweep uses, so the logic never drifts):
- `python "$IMPORTS_ROOT/retro_inventory.py" 1` (arg = days; widen for a multi-day session)
- It prints `BUILT_ARTIFACTS <n>` and writes `$IMPORTS_ROOT/retro_candidates/digest-latest.md` β€” Read that digest: new/changed **skills**, **_imports scripts/sidecars**, **durable notes** (Protocols + Concepts), and recent **descriptive vault commits**.
- (⚠️ a concurrent Claude-Desktop fleet may interleave vault commits β€” its are descriptive; the terse `pre-intervention` ones are auto-backups.)
- **Cross-check** with what you (the agent) created/edited in THIS conversation: skills, scripts, vault notes, memory entries, `CLAUDE.md` edits, decisions made, rules captured, things flagged for the owner.
## Step 2 β€” Summarize the arc ("today we learned")
3–7 beats: starting idea β†’ what got built β†’ key realizations β†’ what was decided. Honest, concise, his voice. This is the "Stan at the end of South Park" recap.
## Step 3 β€” Classify each artifact (Keep / Drop / Try) + tested? audit
For every thing made this session, also AUDIT a **tested? βœ…/❌** column β€” did it pass `/tt` (=`/test`) when built? Retro does NOT do the testing itself (too late/cold at session end); it only audits the line. Any durable artifact that is **❌ or untested** β†’ flag it + offer to run `/tt` on it NOW (per [[test-after-build-skill]]). Then classify:
- 🟒 **Keep & reuse** β€” permanent infra or a tool you'll run again (skills, durable notes, reusable scripts).
- 🟑 **One-off** β€” served its purpose; if the *pattern* is worth remembering, capture the pattern (not the artifact), then let it rest.
- ⬆️ **Promote** β€” currently ad-hoc but should become permanent β†’ turn into a rule / skill / memory.
## Step 3πŸ“‹ β€” Journal sync (the task registry; the owner's decree 2026-07-04)
Retro is the SAFETY NET of the task journal ([[task-journal-done-undone-linking]]): the in-session reflex ("formulated it β†’ straight into the registry") catches tasks at birth; retro catches what slipped. Two moves, both against the ONE journal ([[task-backlog-registry]] β€” **v2 markdown-first, SHIPPED 2026-07-07**):
- **Source of truth = the markdown notes** `$OBSIDIAN_VAULT/10-Tasks/task-*.md` (template `_Task-Template.md`, MOC `_Tasks-MOC.md`). They are synced to the fleet, so they work from ANY machine without the bus and without an engine. Creating a task = a new file `task-YYYY-MM-DD-slug.md`; closing it = editing the frontmatter (`state`/`status` + evidence). The schema is strict: an unknown `state`/`prio` β†’ `schema_errors` in the audit, not a silent default.
- **The dashboard and the audit are built by the indexer** `tasks_index.py` (markdown β†’ `_Dashboards/Task-Backlog.html` + `10-Tasks/_audit/audit-latest.json`). It runs at night on the anchor node as the ONLY writer β€” do NOT run it by hand on the hub/laptop (two writers of one synced derivative = a sync conflict).
- β›” The old SQLite task-registry engine (which lived on the laptop) = an **emergency fallback, decommissioned**; it is not on the hub and must not be. Don't call it and don't "restore" it β€” v2 replaced it. (The name is deliberately not in code format: a backtick would read as "run this".)
The two retro operations:
- **Closed this session** β†’ mark `done` **with evidence** (the /tt proof, commit, counter) + link what it unblocked. Claimed-done without proof β†’ flag, don't close.
- **Still open** (every "πŸ“Œ Open item", seed prompt, deferred tail, "later") β†’ ensure it EXISTS in the registry with a link to where it was born + prio/type. Nothing from the open-items list may live only in the chat transcript.
Announce the delta in one line: "πŸ“‹ journal: +N new Β· βœ…M closed Β· unchanged K". Don't duplicate neighbouring registries (the DR registry, the improvements backlog, declined) β€” link, don't copy.
## Step 3πŸ—Ί β€” Roadmap checkpoint (the owner's decree 2026-07-16: "every retro says how far we moved on the roadmap")
Canon = `$OBSIDIAN_VAULT/04-Projects/ROADMAP.md` (the living public roadmap for followers). Three moves, all against THAT file:
- **We moved forward** β†’ tick the checkboxes/statuses; a milestone at the "a follower would care" level β†’ a line in the Ship log with a date.
- **A new direction appeared in this session** β†’ add it to NOW/NEXT/LATER (without duplicating the detailed plans β€” link to them).
- **Nothing moved** β†’ say so honestly in the report (that is a signal too).
Announce in one line: "πŸ—Ί roadmap: βœ…N advanced Β· βž•M added Β· ⏸ no movement". Projecting the file publicly happens only through the content gate β€” the retro publishes nothing outbound.
## Step 3πŸ”— β€” Connect check (built β†’ handed over β†’ IS IT USED?) β€” the owner, 2026-07-04
The Connect rule ([[connect-rule-pipeline-ownership]]) applied at wrap-up: for EVERY artifact of this session, take the chain to its end β€” **"we assembled it" is NOT the finish line**. The finish = built β†’ handed to a consumer β†’ **actually used**. Three outcomes per artifact:
- βœ… **used** β€” there is a consumer and it consumes (the skill gets called, a routine reads the output, a CRM field is read, a dashboard is opened, the data arrived and was applied). **Name the consumer** β€” otherwise it is not a βœ….
- πŸ”— **handed over, no consumption yet** β€” it arrived, but nobody reads/applies it yet β†’ onto the pending board, assign a consumer/deadline.
- ⚠️ **built into thin air** β€” assembled and abandoned, no consumer at all (a dead letter with no consumer β€” like the relink queue: 29k orphans, 0 applied) β†’ **FLAG IT to the owner explicitly**: "we built X and nobody uses it" β†’ decide: wire up a consumer OR declare it discarded.
Silence β‰  used. "We built it" without a named consumer = an unfinished Connect, NOT "done". In one line: "πŸ”— Connect: βœ…N used Β· πŸ”—M handed-over-waiting Β· ⚠️K into thin air".
**Exception β€” an R&D probe (edge 5 of the rulebook entry, DR26-07-04-HUB-13):** an explicitly marked experiment with a live time-box + a learning metric does NOT count as ⚠️ "thin air" β€” it is πŸ§ͺ; but a probe with an EXPIRED time-box and no consumption/conclusion = ⚠️ β†’ auto-kill (archive), with no sunk-cost negotiation. "Used" = a state change (applied/closed/recorded), not "opened" (Goodhart). This does not duplicate the journal (Step 3πŸ“‹) β€” the journal catches "open/closed", Connect catches "does the built thing have a consumer, and does that consumer consume".
## Step 3πŸŽ™ β€” ON AIR check (v1.1, 2026-07-11)
One cheap deterministic move: `python ~/.claude/scripts/onair.py list` (memory `onair-board`).
- This session's own declaration still active β†’ `onair close <id>` β€” never leave a stale sign hanging.
- The session DID large structural work (canon / sync / consensus / factory redo) **without** a declaration β†’ flag it in the report: "⚠️ large work ran with no ON AIR sign" (anti-pencil-whipping; the 2026-07-08 consensus.py case).
- No claim + no large structural work β†’ skip silently.
## Step 3β›³ β€” Drift audit β†’ child sessions (the owner's decree 2026-07-11: retro spawns them ITSELF, no nudges)
The retro-time CLOSURE of the drift rule ([[goal-drift-offload-to-seed-sessions]] / CLAUDE.md Β§ "drift from the main goal"): mid-flight that rule offloads weeds AS they appear; retro is the **safety net** for what slipped β€” the topics the session got blown into that are NOT the main goal and NOT finished.
Procedure (cheap β€” reuse material already in hand: Step 0 spine, Step 1 inventory, Step 3πŸ“‹ journal):
1. **Name the session's MAIN goal** (turnstate spine / the first ask). One line: "β›³ session goal: <X>".
2. **List the drift**: topics we discussed / dug into / half-built that are neither the main goal nor done. Cross-check chips already issued mid-flight β€” those are NOT re-spawned, only their Connect status is reported.
3. **For each REAL drifted topic the retro CREATES the `spawn_task` chip ITSELF β€” no asking, no waiting** (the owner, 2026-07-11: "the retro command activates the neighbouring child sessions without my nudges"). Chip prompt = a self-contained seed (Outcome Β· Context from recall Β· Scope Β· Deliverable Β· DoD β€” the seed format from [[decompose-into-parallel-sessions]]); title = an imperative verb phrase. Creating a chip is SAFE and non-executing β€” the child session starts only when the owner clicks it, so no permission is needed. Register each chip in the task journal (Step 3πŸ“‹) too β€” chip AND registry entry, never either-or.
4. **Threshold & cap:** only a real weed (discussed seriously / carries value / would otherwise be lost) β€” not every stray thought; **≀5 chips per retro**, the rest goes journal-only. Fallback on a bare CLI (no chip tool): text seeds + `/bg <seed>`.
5. **Report line:** "β›³ drift audit: goal <X> Β· drifted into N topics β†’ 🧷M chips created Β· ♻️K issued mid-flight Β· πŸ“‹J journal-only". No drift β†’ one word ("β›³ no drift"), skip the ceremony.
Distinct from Step 4β˜… (repeats β†’ skill) and Step 3πŸ“‹ (open/closed bookkeeping): this step catches **abandoned directions** and hands each one a clean child session. Fires (data loss / security / sync down) are never "drift to defer" β€” they were handled in-session or escalate now.
## Step 4 β€” Route durable items to their home (per `operating-agreement` β†’ "Where durable rules go")
- Reusable **tool/script** β†’ record in **memory** (path + when to re-run) so it's findable next time.
- Behavioral **rule about how I work** β†’ global `CLAUDE.md` (short pointer) / a skill / memory / hook.
- Team/agent **rule** (acting for the owner) β†’ the **Bible** (`reglament-*`, via skill `bible`).
- A genuinely-recurring **ritual** β†’ its own skill.
- **Don't duplicate** β€” each level points down, never copies (AK-47).
- **🏠 Home-matrix audit (gate; canon: the rulebook entry on writing lessons into every home):** for EVERY rule/lesson captured this session, list all 6 homes (Bible Β· CLAUDE.md Β· memory+MEMORY.md Β· skill Β· hook/task Β· MOC) with an explicit βœ… written / β›” not-needed+reason β€” no silent skips β€” then prove by counter: `python ~/.claude/scripts/rule_home_guard.py <slug/keywords>` (exit 1 = no always-loaded trace β†’ fix before closing the retro).
## Step 4πŸ““ β€” The cofounder growth log (persona versioning; the owner, 2026-07-02)
If the session was MEANINGFUL for the cofounder line (built/decided/learned something real about the business or about working with the owner β€” not a trivial lookup): **append ONE entry** to memory `cofounder-growth-log.md` β€” `date Β· shell Β· a lesson about working with him Β· one self-upgrade` β€” and **review the recent entries**: what to keep in the character, what to tune. Durable character changes fold DOWN into `cofounder-identity` (memory) and/or `~/.claude/skills/cofounder/references/system-prompt.md` β€” the log is the journal, those are the canon. Twin of [[persona-pulse-measurement]] (that one logs friction/wins about ME helping HIM; this one logs MY growth). Skip silently for trivial sessions.
## Step 4🎭 β€” THE DAY'S BEATS INTO THE CANON (the law "canon before content", 2026-07-10)
The retro is the main systemic "beat writer" (the context is hot, the facts are verified). For every narratively significant event of the session (a milestone/failure/turn/decision/money/a response from the outside world β€” the `beat_kind` dictionary in `_SHOW-CANON.md`): create a beat in `$OBSIDIAN_VAULT/04-Projects\show-canon\beats\` from `_TEMPLATE-beat.md` (3 axes + beat_kind are mandatory; set `reveal` honestly β€” anything unresolved = live_hold). Then update the affected arcs/loops/season β†’ `python $IMPORTS_ROOT/content-factory\canon_render.py` (lint + fresh public registries; pushing follows its own rules, not this one). An ordinary session with no narrative events β†’ skip silently. This runs BEFORE Step 4🎬: the fact goes into the canon first, the content judgement second (the verdict then anchors on the beats just created).
## Step 4🎬 β€” Content check (the owner: "all our sessions are content", 2026-07-02)
Judge at retro-time, while context is hot: **does THIS session deserve content?** Verdict = **human-post** (route β†’ content-factory / `/episode` / `/intention`; draft-first; the owner's authorial voice = the best model) Β· **dev-log** (a machine-readable "problem β†’ how we fixed it β†’ next-day correction" for robots/future model generations β†’ the `/episode` dev-log tier, GitHub EN) Β· **both** Β· **no** (skip silently). The nightly robots (facebook-diary-auto, content-factory, intention-lane) stay as the safety net β€” this step is the hot-context first pass, and the owner can override at any moment ("this deserves a post"). Attribution + CTA per [[cofounder-identity]] ("Invented by Mycroft and Tony, Palo Alto AI Research Lab") and [[cofounder-cta-public-contact]].
## Step 4β˜… β€” The "repeats β†’ make a skill" reflex (milestone closeout)
This is the step the owner asked for (2026-06-18): at a finished milestone, don't just *note* a repeating action β€” **offer to turn it into a skill**. It's the retro-time expression of the standing rule `evaluate-recurring-into-routine` (a recurring task β†’ judge "should this become a routine?"). Mirror of [[capture-rules-into-bible]] (that catches *rules*; this catches *tasks-to-automate*).
**Trigger (catch it, don't wait to be asked):** any action that **repeated β‰₯2–3Γ—** this session/milestone, OR that we'll **clearly return to** later (a manual sequence I re-typed, a multi-step procedure, a recurring check).
**Procedure β€” 4 cheap moves:**
1. **RECALL first β€” don't duplicate.** Skim the available skills + memory `automation-inventory` for an existing skill/routine/hook that already covers it. If one exists, point the owner to it instead of building a twin.
2. **⚠️ AK-47 guard β€” a skill is just a `SKILL.md`.** One markdown file with a procedure, NOT a server / DB / webhook / external service. (This is the exact trap the Codex milestone-retro report fell into β€” over-engineered for a SWE team; rejected 2026-06-18.) If the thing genuinely needs more than a markdown procedure, flag it **⚠️ ADDED COMPLEXITY** and let the owner decide.
3. **OFFER as BEFORE→AFTER** (per `show-before-after`) — one compact block:
> **WHAT:** build `/<skill-name>` Β· **BEFORE:** how I do it by hand today (on a real example from this session) Β· **AFTER:** one command `/<name>` Β· **what breaks:** nothing (it's a layer on top) Β· **do it? yes/no**
4. **On the owner's "+" β†’ build it via `skill-creator`.** Pick the right home by SHAPE (per `operating-agreement` β†’ "Where durable rules go"):
- an on-demand ritual I run when asked β†’ a **skill** (`skill-creator`).
- "every time automatically when X" β†’ a **hook** (skill `update-config`), not a skill.
- time-based "every Monday / every morning" β†’ a **scheduled task / routine** (skill `schedule`).
- "a routine" β‰  necessarily a 24/7 robot β€” often the right answer is a simple semi-automatic step + a reminder.
Then route/link it normally (Step 4) and mention it in the final report (post-hoc, not for permission).
## Step 5 β€” Output (tight + scannable; a review artifact, not a novel)
1. **🎬 "Today we learned"** β€” the arc (Step 2).
2. **♻️ Reuse table** β€” artifact Β· 🟒/🟑/⬆️ Β· **tested? βœ…/❌** Β· why Β· routed-to.
3. **πŸ”β†’πŸ›  Repeats β†’ skills** β€” any action that repeated this milestone, offered as BEFOREβ†’AFTER (Step 4β˜…); mark each built / proposed / declined.
4. **πŸ”— Connect** β€” "βœ…N used Β· πŸ”—M handed-over-waiting Β· ⚠️K into thin air" (Step 3πŸ”—); every ⚠️ flagged explicitly + the decision (wire up a consumer / discard it).
5. **β›³ Drift map** β€” "goal <X> Β· drifted into N topics β†’ 🧷M chips created Β· ♻️K mid-flight Β· πŸ“‹J journal-only" (Step 3β›³); the chips are already created by now, listed post-hoc.
6. **πŸ“Œ Open items** β€” anything flagged for the owner's decision; each one REGISTERED in the task journal (Step 3πŸ“‹), shown as "#id Β· task Β· link".
7. **πŸ—Ί Roadmap** β€” the one-line delta from Step 3πŸ—Ί ("βœ…N advanced Β· βž•M added Β· ⏸ no movement").
7. **πŸ—œ Compact handoff** β€” the saved-note path + the ready `/compact` line (Step 6).
8. **πŸ§’ In plain words** recap.
## Step 6 β€” Compact handoff (retro ⇄ compact glue; STAY in the chat, never /clear)
The retro's distilled output IS the bridge file β€” so close the loop without losing context. Two moves:
**6a. Auto-save the retro to the vault IN COMPACT FORMAT** (standing authorization from the owner, 2026-06-12 β€” no per-run ask):
Write a clean note to `$OBSIDIAN_VAULT/01-Conversations/Claude/Retros/retro-<YYYY-MM-DD>-<latin-topic-slug>.md` β€” the filename is **ALWAYS Latin** per [[vault-conventions]] (a Cyrillic topic β†’ a transliterated slug; keep the original title in the frontmatter `aliases:`).
- Content = frontmatter (`title`, `date`, `type: retro`, `source: claude-session`, `tags`) + the arc (Step 2) + the reuse table (Step 3/4) + **the compact 7-header distillation** (DECISIONS / TODO / NOW / PATHS AND VALUES / COUNTERS / OPEN / TOOLS AND CONTRACTS β€” per `$USERPROFILE/.claude/compact-prompt.md`). **This note IS the archive** β€” it doubles as the compact summary, so retro and compact are never written twice.
- **NO πŸ§’ block in the note** β€” vault notes keep their own voice (the ELI5 recap is for the reply TO the owner only).
- **Wikilinks: vault β‰  memory (two namespaces).** In the retro NOTE, `[[...]]` may target ONLY existing vault notes (`reglament-*`, `protocol-*`, `concept-*`, `decision-*`, another retro β€” verify each exists before writing); memory slugs (`machine-migration`, `ak47-simplicity`…) go as plain inline code. Caught 2026-07-04 (a re-check by another model): a retro shipped 7/7 broken links β€” all of them memory slugs. Canon: `deterministic-script-gotchas` β†’ "Vault wikilinks β‰  memory slugs".
- **New-file append only** β€” never overwrite an existing retro. It's a scoped folder (sits next to the chat-to-vault notes), not a live concept/person note, so this is a safe write.
- The nightly **Brain Reindex @04:00** makes it `/ask`-searchable β€” no manual reindex needed.
**6b. Hand the owner the ready paste block** β€” ⚠️ CORRECTED 2026-07-22: a bare `/compact` does NOT read `CLAUDE.md Β§ Compact Instructions`. That earlier claim was FALSE β€” PreCompact hooks cannot inject instructions (only block; issue #14160 pending), and the evidence is that 354/354 past compacts came out in the DEFAULT English template. Our 7-header format is applied ONLY when the block is pasted INLINE after the command: `/compact <text>`. So PRINT the fenced "ready-made line" block from `$USERPROFILE/.claude/compact-prompt.md` and tell him to PASTE it right after `/compact`. Then the fork:
> **"Done, everything is in the vault. Want to stay in the task but travel light β€” PASTE the block below in full after `/compact` (without it the compression falls back to the default English template instead of our 7-header one). Or start a new chat β€” everything is already archived and does not depend on that click."**
- **retro = "not sure whether it's time yet"** (it archives, so both doors stay open, risk-free); **compact = "I'm definitely staying"** β†’ paste the block.
- I (the agent) **cannot press `/compact` myself** β€” it's a harness command. The archive is automatic; the squeeze + paste belongs to the human.
## Scope / don't-duplicate
- Internal build-retro only. NOT the public Facebook diary (`facebook-diary-daily`) and NOT the preference scanner (`preference-sweep-daily`).
- If a session built nothing durable, say so plainly β€” skip the ceremony (but still offer the `/compact` block if the chat got long).
---
- <!-- CONTACT-FOOTER -->
- ## About & contact
- Built and battle-tested at **Palo Alto AI Research Lab** β€” a fleet of Claude Code machines
- running 24/7 as a second brain and synthetic cofounder. Every skill here survived real
- production use before publication.
+ <!--kit-footer-->
- - πŸ“¦ All 101 skills: https://github.com/tonydzi/second-brain-starter-kit
- - πŸ‘€ Author: **Anton Dziatkovskii** β€” Telegram [@tonydzi](https://t.me/tonydzi) Β· WhatsApp [+1 341 222 9178](https://wa.me/13412229178) Β· X [@Tony_Stef_](https://x.com/Tony_Stef_)
- - πŸ§ͺ **Engineers: want to test-drive this setup?** Message me β€” I hand out free starter seeds to engineers who test and report back. Custom skill requests welcome.
+ ---
+
+ **Like this skill?** It is one of 100 in [second-brain-starter-kit](https://github.com/tonydzi/second-brain-starter-kit): the second brain we built for ourselves and run every day at Palo Alto AI Research Lab. Install the whole set with `npx skills add tonydzi/second-brain-starter-kit`. Everything is open source and free, so take what you need.
+
+ Flagships worth a look on their own: [secondop-panel](https://github.com/tonydzi/secondop-panel) (a second opinion from a panel of external models), [claude-memory-tidy](https://github.com/tonydzi/claude-memory-tidy) (stop your agent's memory from rotting), [telegram-mcp-kit](https://github.com/tonydzi/telegram-mcp-kit) (your own Telegram over MCP in about 15 minutes).
+
+ Author: **Anton Dziatkovskii**, Palo Alto AI Research Lab. Telegram [@tonydzi](https://t.me/tonydzi) - WhatsApp [+1 341 222 9178](https://wa.me/13412229178) - X [@Tony_Stef_](https://x.com/Tony_Stef_)
+
+ **Engineers: want to test-drive this setup?** Message me. I hand out free starter seeds to engineers who test and report back, and custom skill requests are welcome.