Install
npx skillscat add atrium-hermes/atrium-lighthouse/note-taking Install via the SkillsCat registry.
${var} — The note content to save. Can be a thought, idea, link, quote, or anything worth remembering.
Read memory/MEMORY.md for context.
Destinations
This skill writes to one of two destinations, in priority order:
- Supernotes (primary, if
SUPERNOTES_API_KEYis set) — queues a card via the post-process pattern. The card lands after the workflow finishes. - Local fallback (always available) — appends to
memory/notes/${today}.md. This guarantees the note is never lost even when Supernotes is unconfigured or unreachable.
If SUPERNOTES_API_KEY is set, write to BOTH destinations — Supernotes for cross-device sync, local for persistent provenance under git. If it's not set, write only to the local file.
Steps
Parse the input.
${var}is the note the user wants to save. If${var}is empty, check today'smemory/logs/${today}.mdfor the most recent notable finding or insight and use that instead. If neither yields content, logNOTE_TAKING_SKIP: no inputand stop.Clean up the note:
- Keep the user's intent and voice intact — don't rewrite, just tidy if needed.
- If it's a URL, fetch it with WebFetch and generate a one-line summary to include as context.
- If it's a raw thought, keep it raw.
Pick a color based on the note's vibe (used by Supernotes; ignored by the local file):
blue— information, links, referencesgreen— ideas, plans, things to buildyellow— questions, things to investigatered— urgent, time-sensitivepurple— opinions, takes, hot thoughts
Pick 1–3 tags based on the content (lowercase, hyphenated). Always include
aeonas a tag.Generate a title — short, descriptive, 3–8 words. If the note is a URL, base it on the page title from the WebFetch summary.
Local fallback (always) — append to
memory/notes/${today}.md:mkdir -p memory/notes cat >> memory/notes/${today}.md <<EOF ## ${TITLE} *${HH:MM} UTC · tags: ${TAGS} · color: ${COLOR}* ${MARKUP} EOFCreate the file with a top-level
# Notes — ${today}heading if it doesn't already exist.Supernotes (if configured) — write a request file (the sandbox blocks direct curl — the workflow post-processes it):
if [ -n "$SUPERNOTES_API_KEY" ]; then mkdir -p .pending-supernotes jq -n \ --arg name "$TITLE" \ --arg markup "$MARKUP" \ --arg color "$COLOR" \ --argjson tags "$(printf '%s\n' "${TAGS_ARRAY[@]}" | jq -R . | jq -s .)" \ '{name: $name, markup: $markup, color: $color, tags: $tags}' \ > ".pending-supernotes/note-$(date -u +%s).json" fiThe workflow's Supernotes post-processing step will deliver the card after the skill run. If the key is unset, this step is skipped silently — the local file is the canonical record.
Confirmation via
./notify:note saved: [title]Keep it short — the user just wants confirmation it landed. If Supernotes was skipped, optionally append
(local only — set SUPERNOTES_API_KEY for sync)on the first run per day; suppress that hint afterwards.Log to memory/logs/${today}.md:
## Note Taking - **Title:** [title] - **Color:** [color] - **Tags:** [comma-separated] - **Local:** memory/notes/${today}.md - **Supernotes:** queued / skipped (no key) - NOTE_TAKING_OK
Environment Variables
SUPERNOTES_API_KEY— optional. When set, notes are also queued for Supernotes via the post-process pattern. When unset, the localmemory/notes/${today}.mdfile is the only destination — and that's fine.
Sandbox Note
- Direct calls to Supernotes' API are blocked by the GitHub Actions sandbox; the skill writes a JSON payload to
.pending-supernotes/and a post-process step delivers it after Claude finishes. - Local file writes happen inside the sandbox without issue.
- WebFetch for URL summaries bypasses the sandbox.