soul-builder

Installation
SKILL.md

${var} — a source brief. Two accepted shapes:

  • Structured (from the dashboard): |-separated key=value tokens — any of x=<handle>, name=<full name>, links=<url1>,<url2>. Example: x=karpathy | name=Andrej Karpathy | links=https://karpathy.ai,https://github.com/karpathy.
  • Bare handle (back-compat / scheduled runs): just an X handle like aeonfun (optionally @/URL).

If ${var} is empty, reuse the handle already referenced in soul/SOUL.md. If no source at all can be resolved, log SOUL_BUILDER_SKIP: no source — set var (x=, name=, or links=) and stop with no notification.

Today is ${today}. This skill turns someone's public footprint — their X account, their name on the open web, their own writing and profiles — into a SOUL: the identity-and-voice files every content-generating skill reads (see the "Voice" section of CLAUDE.md). The goal, borrowed from the soul.md project: produce files where someone reading them could predict the person's take on a new topic. Favour specific opinions with reasoning over safe, nuanced mush. Keep real contradictions — they make an identity recognisable.

This is the agent behind the dashboard's Soul → Build my soul button.

Why this skill exists

A blank soul/SOUL.md means every article, tweet, and digest comes out in generic-AI voice. Hand-writing a good soul is real work most operators never do. But the raw material already exists in public: how someone tweets is their worldview, opinions, interests, and style, compressed. This skill reads that signal and drafts the files, so the operator edits a strong first draft instead of staring at a scaffold.

Steps

0. Parse the source brief

Parse ${var} into up to three sources:

Installs
8
Repository
aeonfun/aeon
GitHub Stars
715
First Seen
Aug 20, 2026
soul-builder — aeonfun/aeon