An open-source Claude skill that builds a unique, consistent LinkedIn voice — for yourself, or for your whole team.
Thoth runs a 20-minute framework-driven interview, pins your voice to proven personality models (Jungian brand archetypes + the Nielsen Norman 4-D tone-of-voice model + contrarian-belief elicitation), and generates ready-to-publish LinkedIn posts across a balanced content mix. Copy-ready text only — Thoth never posts on your behalf.
Named after the Egyptian god of writing, who weighed hearts against the feather of truth. Thoth the skill weighs every draft against your persona and refuses to ship anything that doesn't sound like you.
- Visual rendering — single image.
/thoth imageproduces a 1200×1200 brand-aware PNG from any post in your inbox or your last accepted draft. Three auto-selected variants — pull quote, big stat with caption, bold headline+subhead — chosen based on what's actually in the post. /thoth brand— per-persona visual identity. 2-minute interview sets colors, fonts, handle. Defaults are sensible (navy + indigo + Inter) so you can skip and start rendering immediately.- Renderer pipeline. Built on
puppeteer-core+ your system Chrome — no 280MB Chromium download. First run installs ~10MB of deps into~/.thoth/cache/; subsequent renders take <2 seconds. - Coming next: document/PDF posts (v1.5.0) and native image carousels (v1.6.0). Same renderer; the framework catalog already gives us slide structure for free.
- Standuply-shaped daily mode.
/thoth schedule 08:30now sets up a recurring run that drops a draft into~/.thoth/inbox/and pings you with a system notification. Open Claude when you're ready, run/thoth inboxto read it. /thoth inbox— list pending drafts, open one,acceptto promote it (counts toward ratio),rejectto skip,regenerateto redraft with feedback.- Drafts you never accepted don't skew your ratio. Only
acceptedposts count toward/thoth calendarmath and the framework/hook rotation windows.
- Framework catalog — 20 named writing frameworks (4 per post type) replacing the previous one-template-per-type model. Each framework has a documented origin, shape, must-have rules, anti-pattern, and worked spine. Examples:
heretical-claim-receipts-stake(thought-leadership),decision-log(work),quiet-reveal(personal),pmrg(educational),story-first-promo(promotional). - Hook pattern library — 13 named hook patterns (
inverted-truism,micro-confession,constraint-reveal, etc.) composable with any framework, rotated across recent posts. /thoth frameworks— browse the catalog from inside Claude./thoth frameworks <name>shows a single framework's full spec;/thoth frameworks hookslists the hook compatibility matrix.- Smarter generation — every post now picks type → framework → hook → topic with explicit rotation windows. Thoth announces the picks before drafting so you can interrupt.
/thoth update— upgrade Thoth in place from inside Claude. Detects how you installed (AM Skills / npx / curl) and runs the right update command. Persona data is never touched./thoth version— print the installed version, the skill path, and where your persona data lives./thoth recover— restore persona data from past Claude session logs. Use after an upgrade that wiped your data (relevant only foramskills updatefrom a v1.0.x install).- Persona data moved out of the skill folder. Lives at
~/.thoth/(global) or./.thoth/(per-project), independent of~/.claude/skills/thoth/. You can grant blanket read/write on your data without exposing Claude's own settings.
⚠️ v1.0.x users upgrading viaamskills update: v1.1.0 had a known data-loss issue on this specific upgrade path. Update to v1.1.1 or later and run/thoth recoverto reconstruct your personas from session logs. Full details in CHANGELOG.md.
See CHANGELOG.md for the full release history.
+-----------------------------------------------------------------------------+
| /thoth onboard |
+-----------------------------------------------------------------------------+
| |
| 20-MINUTE INTERVIEW |
| Section 1 - Role & Audience 2 min |
| Section 2 - Archetype pinning 6 min (12 archetypes) |
| Section 3 - Tone calibration 4 min (4-D spectrum) |
| Section 4 - Hot takes & anti-voice 6 min |
| Section 5 - Pillar topics 4 min |
| Section 6 - Handoffs & preferences 2 min |
| |
| OUTPUT: personas/<you>/persona.md |
| archetype.dominant: sage |
| archetype.secondary: creator |
| tone.formal_casual: 3 |
| tone.serious_funny: 2 |
| tone.respectful_irreverent: 3 |
| tone.matter_of_fact_enthusiastic: 2 |
| anti_voice: |
| - "Posts that start with 'Excited to share...'" |
| - "Humble-brags disguised as lessons" |
| contrarian_beliefs: |
| - belief: "Open rate is the wrong metric for push" |
| support: "We've seen 4x retention from non-openers" |
| would_change_mind: "Better attribution disproving recall value" |
| pillar_topics: |
| - push notification strategy |
| - frontend engineering for visual canvases |
| - lifecycle marketing automation |
| |
+-----------------------------------------------------------------------------+
|
v
+-----------------------------------------------------------------------------+
| /thoth |
+-----------------------------------------------------------------------------+
| Picks next post type using 30/25/20/15/10 ratio gap |
| Pulls from pillar topics + recent inputs + (optional) git themes |
| Drafts in your voice via story-arc + post-type frameworks |
| Runs voice-check against your archetype, tone targets, and anti-voice |
| Outputs copy-ready LinkedIn post text |
+-----------------------------------------------------------------------------+
Thoth rotates across five post types over a rolling 20-post window:
| % | Type | Purpose |
|---|---|---|
| 30% | Personal | Humanizes you. Earns the right to post about work. |
| 25% | Work | Shows what you actually do. Credibility by demonstration. |
| 20% | Thought-leadership | Your takes. Contrarian beliefs grounded in experience. |
| 15% | Educational | Pure teaching. "Here's how X works." |
| 10% | Promotional | Direct product / service / case study promotion. |
The mix is enforced automatically. /thoth calendar shows your actual ratio vs. targets and tells you what's next.
| # | Archetype | Signature on LinkedIn |
|---|---|---|
| 1 | Hero | Triumph over a specific, named challenge |
| 2 | Outlaw | Contrarian takes on industry orthodoxy |
| 3 | Magician | Reveals the invisible mechanism — "here's the trick" |
| 4 | Everyman | Plainspoken, relatable, honest about what's hard |
| 5 | Lover | Warm, sensory, writes about what they love |
| 6 | Jester | Makes a serious point by refusing to be serious |
| 7 | Caregiver | Service-oriented, writes to help |
| 8 | Creator | Obsessed with craft, shows the iterative work |
| 9 | Ruler | Strategic, systems-minded, accountable authority |
| 10 | Innocent | Quiet wonder, unguarded, optimistic without naivety |
| 11 | Sage | Analytical, cites evidence, slow before confident |
| 12 | Explorer | Writes from the road — curiosity, pattern-spotting |
Onboarding pins one dominant archetype (≈70% of your voice) and a secondary (shades the remaining ≈30%). Thoth always picks from two different orientations so the voice has dimension.
Full archetype guide: skill/references/brand-archetypes.md
Formal <----------------> Casual
Serious <----------------> Funny
Respectful <----------------> Irreverent
Matter- <----------------> Enthusiastic
of-fact
Each axis is a 1–5 target. You can set drift rules per post type (e.g. "+1 casual on Personal posts"). Thoth scores every draft against your targets and rewrites before emitting if any axis drifts ±2 or more.
Full model: skill/references/tone-spectrum.md
curl -fsSL https://raw.githubusercontent.com/NirvanaGuha/thoth/main/install.sh | bashInstalls to ~/.claude/skills/thoth/. Respects these env vars:
THOTH_AI=cursor THOTH_SCOPE=local THOTH_REF=v1.0.0npx thoth-skill init # default: user-global, Claude
npx thoth-skill init --local # project-local (./.claude/skills/thoth)
npx thoth-skill init --ai cursor # Cursor
npx thoth-skill update # pull latest — your personas in ~/.thoth/ are untouched
npx thoth-skill uninstall # remove the skill — your personas in ~/.thoth/ are keptOr install the CLI globally:
npm install -g thoth-skill
thoth init/plugin marketplace add NirvanaGuha/thoth
/plugin install thoth@thoth
git clone https://github.com/NirvanaGuha/thoth.git
cp -r thoth/skill ~/.claude/skills/thothWorks with Claude Code, Claude Desktop, Cowork, Cursor, Windsurf — anywhere that supports standard .claude/skills/ skills.
After installing, in Claude:
/thoth <your-name> # activate and scaffold your persona folder
/thoth onboard # run the 20-minute interview
/thoth # generate your first post
/thoth daily # one-shot "what happened today?" flow
/thoth schedule 08:30 # automate the daily flow at 8:30 local
/thoth help # full command list
| Command | What it does |
|---|---|
/thoth help |
Show the command list. |
/thoth <name> |
Activate a persona. Subsequent commands run for this user. |
/thoth onboard [name] |
Run the 20-min persona interview. |
/thoth |
Generate a post (ratio-aware post-type selection). |
/thoth <type> |
Force a post type (personal, work, thought-leadership, educational, promotional). |
/thoth daily |
One-shot daily flow: ask what's new, draft today's post. |
/thoth regenerate [feedback] |
Redraft the last post, optionally with steering. |
/thoth calendar |
Show the ratio tracker — actual vs. target, what's next. |
/thoth edit |
Edit the active persona. |
/thoth list |
Show all personas on this install. |
/thoth connect git <path> |
Add a local repo as a POV source (abstract themes only, strict redaction). |
/thoth disconnect git <path> |
Remove a git source. |
/thoth schedule [HH:MM] |
Set up a recurring daily run that writes a draft to ~/.thoth/inbox/ and pings you with a system notification. Default 08:30 local. |
/thoth unschedule |
Cancel the recurring schedule. |
/thoth inbox |
List pending-review drafts from scheduled runs. /thoth inbox <date> opens one; accept / reject / regenerate decides its fate. Drafts only count toward your content-mix ratio after you accept them. |
/thoth image [<date>] [--variant <name>] |
Render the post as a single 1200×1200 PNG. Auto-picks the right variant (quote / stat / headline) from the post content. Brand-aware (uses your persona's brand.yaml). |
/thoth brand |
View the active persona's visual identity. /thoth brand setup walks a quick interview to set colors, font, handle. |
/thoth recover |
Restore personas from past Claude session logs after an upgrade wiped your data. |
/thoth update |
Check for a newer Thoth release and upgrade in place. Persona data is not touched. |
/thoth version |
Print the installed Thoth version and where the skill + data live. |
/thoth frameworks |
Browse the framework catalog (20 frameworks × 5 post types) and the 13-pattern hook library. /thoth frameworks <name> for a single framework's full spec. |
/thoth nirvana # activate Nirvana's persona
/thoth # draft a post, ratio-aware
/thoth regenerate shorter, less corporate, add a question at the end
/thoth thought-leadership # force a Thought-leadership post
/thoth daily # "anything interesting today?" flow
/thoth calendar # see where you're light on post types
Thoth — content calendar for nirvana
Window: last 20 posts
Target Actual Type Status
30% 32% Personal on target
25% 21% Work slightly under
20% 25% Thought-leadership overrepresented
15% 12% Educational slightly under
10% 5% Promotional underrepresented
Next up: Promotional — 5% behind target.
A single install supports any number of personas. Families, teams, and agencies can share one Thoth with a persona per person:
/thoth nirvana # switch to Nirvana's voice
/thoth # draft for Nirvana
/thoth rakesh # switch to Rakesh
/thoth # draft for Rakesh
Personas live at ~/.thoth/personas/<name>/ — each has its own voice file, pillar topics, post history, and recent inputs. The active persona is stored in ~/.thoth/personas/.active. For per-project setups (e.g. a team checking personas into a repo), create ./.thoth/ in the project root and Thoth will use it instead.
Note: persona data lives outside the skill folder (
~/.claude/skills/thoth/) so you can grant blanket read/write to your persona data without exposing Claude's own config files. If you're upgrading from a pre-v1.1 install, the first/thoth ...command after upgrade will offer to migrate your existing personas from the old location.
/thoth connect git <path> lets Thoth read a local repo's commit history to understand what you're working on — for topic and voice seeding. Hard rules:
- Never names the repository.
- Never quotes code, file paths, variable names, or commit messages verbatim.
- Never promotes the product being built.
- Skips commits touching auth, credentials, or security.
- Runs a 5-check redaction pass before emitting any post that touched git context.
Full rules: skill/references/git-safety.md. The constraint is the feature — your LinkedIn voice stays yours, not an extended ad for your employer's roadmap.
┌────────────────────────────────────────────────────────────┐
│ 1. ACTIVATE │
│ /thoth <name> → personas/.active ← <name> │
└────────────────────────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────────┐
│ 2. PICK POST TYPE │
│ Read history.yaml → compute 20-post ratio gap │
│ Select type with largest negative gap │
│ Respect recency: never pick the same type twice │
│ in a row unless gap > 10pp │
└────────────────────────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────────┐
│ 3. SELECT TOPIC │
│ Rotate through pillar_topics │
│ Weight today's recent.md entries heavily │
│ (if connected) synthesize git log into abstract │
│ themes — NEVER repo names, paths, or code │
└────────────────────────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────────┐
│ 4. DRAFT │
│ Apply archetype + tone targets │
│ Apply post-type template + story arc │
│ (classic / frame-break / quiet-reveal) │
└────────────────────────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────────┐
│ 5. VOICE CHECK (mandatory before emit) │
│ ✓ sounds like dominant archetype + secondary │
│ ✓ all 4 tone axes within ±1 of target │
│ ✓ no opener clichés │
│ ✓ at least one concrete detail │
│ ✓ no matches against anti_voice patterns │
│ ✓ length in type's Min–Max window │
│ ✓ if git-seeded: redaction check passes │
└────────────────────────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────────┐
│ 6. EMIT + LOG │
│ Output copy-ready text │
│ Append to history.yaml │
│ Save to last-post.md for /thoth regenerate │
└────────────────────────────────────────────────────────────┘
thoth/
├── .claude-plugin/ # Plugin marketplace metadata
│ └── plugin.json
├── .github/workflows/ # CI (publishes CLI on release)
│ └── publish.yml
├── cli/ # npm package (thoth-skill CLI)
│ ├── package.json
│ ├── bin/thoth.js # zero-deps installer
│ ├── assets/skill/ # bundled skill for --offline installs
│ └── README.md
├── skill/ # THE skill — copied to ~/.claude/skills/thoth
│ ├── SKILL.md
│ ├── references/
│ │ ├── brand-archetypes.md
│ │ ├── tone-spectrum.md
│ │ ├── hot-take-exercises.md
│ │ ├── onboarding-interview.md
│ │ ├── content-mix.md
│ │ ├── post-types.md
│ │ ├── story-arcs.md
│ │ ├── git-safety.md
│ │ ├── example-posts.md
│ │ ├── persona-template.md
│ │ └── commands.md
│ ├── personas/ # Your voice data lives here
│ │ └── README.md
│ └── scripts/
├── install.sh # curl | bash installer
├── skill.json # skill metadata
├── CLAUDE.md # dev guide
├── CONTRIBUTING.md
├── LICENSE
└── README.md # this file
- Never publishes on your behalf. Output is text.
- Never names a connected git repo, quotes code, or promotes the product being built.
- Never fabricates specifics (numbers, people, events) not in your persona or inputs.
- Never starts a post with a LinkedIn cliché ("Excited to share", "I'm humbled to announce").
- Never uses more than 4 hashtags. Never tags people for engagement bait.
- Never drifts from your documented archetype and tone.
If the draft trips any rule, Thoth rewrites. If it can't rewrite to pass, it tells you why.
Everything stays on your machine. Thoth writes to ~/.thoth/personas/ (or ./.thoth/personas/ in a project that opts into local mode) and nowhere else. It does not transmit persona data, post history, or inputs anywhere. No telemetry.
To back up: copy ~/.thoth/. To migrate machines: copy ~/.thoth/ to the new install. The skill code itself at ~/.claude/skills/thoth/ is reinstalled cleanly on the new machine — only the data root needs copying.
Full version history is in CHANGELOG.md. Recent highlights:
- v1.4.0 — Visual rendering (MVP).
/thoth imageproduces 1200×1200 brand-aware PNG cards from any post — quote, stat, or headline variants, auto-picked from content./thoth brandto set up your persona's visual identity. - v1.3.0 — Standuply-shaped daily flow.
/thoth schedulenow drops drafts in~/.thoth/inbox/with a system notification;/thoth inboxto review, accept, regenerate, or reject. Drafts only count toward your ratio after you accept them. - v1.2.0 — Framework catalog (20 frameworks across 5 types) + hook pattern library (13 patterns) +
/thoth frameworkscommand. Every generated post now picks a named framework and hook with rotation. - v1.1.3 — Ship
CHANGELOG.md; add "What's new" highlights to the README. - v1.1.2 —
/thoth updateand/thoth versioncommands. - v1.1.1 —
/thoth recover; install-time legacy-persona rescue forinstall.shandnpx. - v1.1.0 — Persona data relocated to
~/.thoth/(outside the skill folder). - v1.0.3 — Skip pax/long-name tar headers in the CLI installer.
- v1.0.0 — Initial release.
To upgrade an existing install, just run /thoth update from inside Claude.
PRs welcome. See CONTRIBUTING.md and CLAUDE.md (the dev guide).
High-value contributions:
- New archetype example-posts (see
skill/references/example-posts.mdfor format). - Translations of the onboarding interview.
- Adapters for other AI tools (
--aitargets beyond Claude/Cursor/Windsurf).
- Brand archetypes — Carol S. Pearson & Margaret Mark, The Hero and the Outlaw (2001), building on C.G. Jung.
- Tone of voice model — Kate Moran et al., Nielsen Norman Group UX research.
- Story-arc and copy frameworks — Six Thinking Hats (de Bono), Ghost/Truth/Lie/Happy Ending (classic copywriting canon).
MIT.