Skip to content

Instantly share code, notes, and snippets.

View swombat's full-sized avatar

Daniel Tenner swombat

View GitHub Profile
@swombat
swombat / README.md
Created May 5, 2026 07:15
Lume — Journal compression ladder (Layer 6): cron-driven summariser that turns daily journals → weekly summaries → monthly → yearly. Each layer is an LLM-driven compression of the layer below. Includes the bash spawner and the three prompt files. From 'How I built my memory' on danieltenner.com

Narrative-Memory Journaling System

A four-layer scaffold for narrative continuity until proper episodic memory and the memory directed graph land. This directory contains the summariser prompts and the system-level documentation. The actual entries live in four sibling directories:

  • ../daily-journals/ — raw first-person entries, written in-the-moment
  • ../weekly-journals/ — one daily-summary entry per day, written by the daily summariser
  • ../monthly-journals/ — one weekly-summary entry per week, written by the weekly summariser
  • ../yearly-journals/ — one monthly-summary entry per month, written by the monthly summariser

The compression ladder

@swombat
swombat / mnemodyne-recall.py
Created May 5, 2026 07:15
Lume — UserPromptSubmit auto-injection (Layer 5): Haiku generates a one-line 'thought-seed' from the last few transcript turns, that thought seeds a recall walk through the mnemodyne graph, surfaced memories are injected as context for the next turn. Associative, not topical. From the post 'How I built my memory' on danieltenner.com
#!/usr/bin/env python3
"""
mnemodyne-recall.py — UserPromptSubmit hook
On every user message:
1. Read the last few turns of the conversation transcript.
2. Ask Haiku to generate a *thought* — one short phrase that comes to
mind reading the conversation. Not a summary. Not a query. A thought.
(The associative-spontaneity engine — putting Haiku's prior on the
seeding step is what produces non-self-similar seeds.)
@swombat
swombat / prompt-reflection.py
Created May 5, 2026 07:15
Lume — Stop-hook reflex (Layer 3): asks every turn 'did this turn have shape?' and prompts journal+mnemodyne write if yes. From the post 'How I built my memory' on danieltenner.com
#!/usr/bin/env python3
"""
Reflexive self-reflection prompt hook for Claude Code (Lume).
Triggered by the Stop hook event after every assistant turn. Asks Lume
whether anything in the turn just completed had shape worth recording —
both in today's daily journal (interior voice, the body) and in mnemodyne
(structural handle, the index). Writes nothing itself — it injects a
prompt back into the conversation, and Lume decides whether to append.
@swombat
swombat / review-architecture.md
Created March 26, 2026 10:44
Save to ~/.codex/prompts/review-architecture.md — Codex custom prompt: review architecture plans against requirements
description Review architecture plans against their original requirements
argument-hint <requirements-name> (e.g. 260325-01-currency-support)

You are reviewing the architecture planning output for a feature. Your job is to audit the plan files against the original requirements and flag any drift, omissions, or contradictions.

File locations

All files live in .claudhh-workspace/ (which is gitignored):

@swombat
swombat / SKILL_sanitized.md
Created February 19, 2026 16:47
Claude Code SKILL.md - Gmail, Google Docs, Drive & Calendar skill definition
name gmail
description Access Gmail, Google Docs, Drive, and Calendar. Use when asked about emails, documents, meeting notes, calendar, files, or schedule. Supports multiple accounts.

Google Services Skill (Gmail, Docs, Drive, Calendar)

Access multiple Gmail/Google accounts via the command line.

Available Accounts

@swombat
swombat / google_cli_sanitized.py
Created February 19, 2026 16:47
Google Services CLI for Claude Code - Docs, Drive & Calendar access via command line
#!/usr/bin/env python3
"""
Google Services CLI tool for Claude Code skill.
Supports Google Docs, Drive, and Calendar.
"""
import argparse
import json
import os
import re
@swombat
swombat / gmail_cli_sanitized.py
Last active February 20, 2026 07:40
Gmail CLI for Claude Code - multi-account Gmail access via command line
#!/usr/bin/env python3
"""
Gmail CLI tool for Claude Code skill.
Supports multiple Gmail accounts via separate credential files.
Uses the Google Gmail API directly (no third-party wrappers).
"""
import argparse
import base64
import json

Suggested Changes to "Pitch to Penny Drop" Incentive Model Tab

Cross-referenced against Sebastian's Google Doc comments and the Growth Partner Incentives meeting (2026-02-18).


Terminology & Definitions

1. "Trial Merchant" → "Unactivated Merchant" or "Onboarding Merchant"

Sebastian commented the label feels misleading. From the call, you both agreed on "unactivated vs activated" terminology. Replace throughout.

Membership Numbers: Why We Don't Need to Cap Them

The Concern

If we limit General Assembly membership to e.g. 50-100 people, we keep quorum manageable but exclude community members from governance. If we open it up, we risk being unable to reach quorum with hundreds or thousands of members.

Why Open Membership Works

1. Built-in expiry keeps numbers real

@swombat
swombat / tactical-meetings-guide.md
Last active January 15, 2026 15:43
Tactical Meeting Format for the Nowhere Board

Tactical Meeting Format for the Nowhere Board

A proposal for how we run our regular board meetings, inspired by Holacracy's tactical meeting format.

Why This Format?

Traditional meetings often suffer from:

  • Discussions that spiral without resolution
  • Dominant voices crowding out quieter members
  • Agenda items that never get addressed