{"id":50118623,"url":"https://github.com/nirvanaguha/thoth","last_synced_at":"2026-05-23T17:04:58.881Z","repository":{"id":359631015,"uuid":"1219905656","full_name":"NirvanaGuha/thoth","owner":"NirvanaGuha","description":"An open-source Claude skill that builds a unique, consistent LinkedIn voice. Framework-driven persona interview (Jungian archetypes + NN/g tone model + anti-voice) → daily post generation on a 30/25/20/15/10 content mix. Works for one person or a whole team. Install with one npx command.","archived":false,"fork":false,"pushed_at":"2026-05-22T17:39:16.000Z","size":68,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-22T21:32:45.533Z","etag":null,"topics":["ai-skills","ai-writing","brand-archetypes","claude","claude-code","claude-desktop","claude-skills","content-calendar","creator-economy","jungian-archetypes","linkedin","linkedin-posts","mit-license","npm","open-source","personal-brand","thought-leadership","tone-of-voice","voice-design","writing-assistant"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NirvanaGuha.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-24T10:42:21.000Z","updated_at":"2026-05-22T17:32:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/NirvanaGuha/thoth","commit_stats":null,"previous_names":["nirvanaguha/thoth"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/NirvanaGuha/thoth","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NirvanaGuha%2Fthoth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NirvanaGuha%2Fthoth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NirvanaGuha%2Fthoth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NirvanaGuha%2Fthoth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NirvanaGuha","download_url":"https://codeload.github.com/NirvanaGuha/thoth/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NirvanaGuha%2Fthoth/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33404350,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T04:15:53.637Z","status":"ssl_error","status_checked_at":"2026-05-23T04:15:53.242Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-skills","ai-writing","brand-archetypes","claude","claude-code","claude-desktop","claude-skills","content-calendar","creator-economy","jungian-archetypes","linkedin","linkedin-posts","mit-license","npm","open-source","personal-brand","thought-leadership","tone-of-voice","voice-design","writing-assistant"],"created_at":"2026-05-23T17:04:58.100Z","updated_at":"2026-05-23T17:04:58.866Z","avatar_url":"https://github.com/NirvanaGuha.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Thoth\n\n[![Release](https://img.shields.io/github/v/release/NirvanaGuha/thoth?style=for-the-badge\u0026color=blue)](https://github.com/NirvanaGuha/thoth/releases)\n[![12 Archetypes](https://img.shields.io/badge/archetypes-12-purple?style=for-the-badge)](./skill/references/brand-archetypes.md)\n[![4-D Tone Model](https://img.shields.io/badge/tone_model-NN%2Fg-green?style=for-the-badge)](./skill/references/tone-spectrum.md)\n[![License](https://img.shields.io/github/license/NirvanaGuha/thoth?style=for-the-badge\u0026color=green)](./LICENSE)\n\n[![npm](https://img.shields.io/npm/v/thoth-skill?style=flat-square\u0026logo=npm\u0026label=CLI)](https://www.npmjs.com/package/thoth-skill)\n[![npm downloads](https://img.shields.io/npm/dm/thoth-skill?style=flat-square\u0026label=downloads)](https://www.npmjs.com/package/thoth-skill)\n[![GitHub stars](https://img.shields.io/github/stars/NirvanaGuha/thoth?style=flat-square\u0026logo=github)](https://github.com/NirvanaGuha/thoth/stargazers)\n\n**An open-source Claude skill that builds a unique, consistent LinkedIn voice — for yourself, or for your whole team.**\n\nThoth 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.\n\nNamed 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.\n\n---\n\n## What Thoth actually does\n\n```\n+-----------------------------------------------------------------------------+\n|  /thoth onboard                                                             |\n+-----------------------------------------------------------------------------+\n|                                                                             |\n|  20-MINUTE INTERVIEW                                                        |\n|     Section 1 - Role \u0026 Audience           2 min                             |\n|     Section 2 - Archetype pinning         6 min   (12 archetypes)           |\n|     Section 3 - Tone calibration          4 min   (4-D spectrum)            |\n|     Section 4 - Hot takes \u0026 anti-voice    6 min                             |\n|     Section 5 - Pillar topics             4 min                             |\n|     Section 6 - Handoffs \u0026 preferences    2 min                             |\n|                                                                             |\n|  OUTPUT: personas/\u003cyou\u003e/persona.md                                          |\n|     archetype.dominant:   sage                                              |\n|     archetype.secondary:  creator                                           |\n|     tone.formal_casual:               3                                     |\n|     tone.serious_funny:               2                                     |\n|     tone.respectful_irreverent:       3                                     |\n|     tone.matter_of_fact_enthusiastic: 2                                     |\n|     anti_voice:                                                             |\n|       - \"Posts that start with 'Excited to share...'\"                       |\n|       - \"Humble-brags disguised as lessons\"                                 |\n|     contrarian_beliefs:                                                     |\n|       - belief: \"Open rate is the wrong metric for push\"                    |\n|         support: \"We've seen 4x retention from non-openers\"                 |\n|         would_change_mind: \"Better attribution disproving recall value\"     |\n|     pillar_topics:                                                          |\n|       - push notification strategy                                          |\n|       - frontend engineering for visual canvases                            |\n|       - lifecycle marketing automation                                      |\n|                                                                             |\n+-----------------------------------------------------------------------------+\n                              |\n                              v\n+-----------------------------------------------------------------------------+\n|  /thoth                                                                     |\n+-----------------------------------------------------------------------------+\n|  Picks next post type using 30/25/20/15/10 ratio gap                        |\n|  Pulls from pillar topics + recent inputs + (optional) git themes           |\n|  Drafts in your voice via story-arc + post-type frameworks                  |\n|  Runs voice-check against your archetype, tone targets, and anti-voice      |\n|  Outputs copy-ready LinkedIn post text                                      |\n+-----------------------------------------------------------------------------+\n```\n\n---\n\n## The content mix\n\nThoth rotates across five post types over a rolling 20-post window:\n\n| % | Type | Purpose |\n|---|---|---|\n| **30%** | **Personal** | Humanizes you. Earns the right to post about work. |\n| **25%** | **Work** | Shows what you actually do. Credibility by demonstration. |\n| **20%** | **Thought-leadership** | Your takes. Contrarian beliefs grounded in experience. |\n| **15%** | **Educational** | Pure teaching. \"Here's how X works.\" |\n| **10%** | **Promotional** | Direct product / service / case study promotion. |\n\nThe mix is enforced automatically. `/thoth calendar` shows your actual ratio vs. targets and tells you what's next.\n\n---\n\n## The 12 archetypes (dominant + secondary)\n\n| # | Archetype | Signature on LinkedIn |\n|---|---|---|\n| 1 | Hero | Triumph over a specific, named challenge |\n| 2 | Outlaw | Contrarian takes on industry orthodoxy |\n| 3 | Magician | Reveals the invisible mechanism — \"here's the trick\" |\n| 4 | Everyman | Plainspoken, relatable, honest about what's hard |\n| 5 | Lover | Warm, sensory, writes about what they love |\n| 6 | Jester | Makes a serious point by refusing to be serious |\n| 7 | Caregiver | Service-oriented, writes to help |\n| 8 | Creator | Obsessed with craft, shows the iterative work |\n| 9 | Ruler | Strategic, systems-minded, accountable authority |\n| 10 | Innocent | Quiet wonder, unguarded, optimistic without naivety |\n| 11 | Sage | Analytical, cites evidence, slow before confident |\n| 12 | Explorer | Writes from the road — curiosity, pattern-spotting |\n\nOnboarding 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.\n\nFull archetype guide: [skill/references/brand-archetypes.md](./skill/references/brand-archetypes.md)\n\n---\n\n## The 4-D tone spectrum (Nielsen Norman)\n\n```\n    Formal  \u003c----------------\u003e  Casual\n   Serious  \u003c----------------\u003e  Funny\nRespectful  \u003c----------------\u003e  Irreverent\n   Matter-  \u003c----------------\u003e  Enthusiastic\n  of-fact\n```\n\nEach 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.\n\nFull model: [skill/references/tone-spectrum.md](./skill/references/tone-spectrum.md)\n\n---\n\n## Installation\n\n### Option 1 — One-line installer (fastest, no Node required)\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/NirvanaGuha/thoth/main/install.sh | bash\n```\n\nInstalls to `~/.claude/skills/thoth/`. Respects these env vars:\n\n```sh\nTHOTH_AI=cursor     THOTH_SCOPE=local     THOTH_REF=v1.0.0\n```\n\n### Option 2 — npx (recommended for Node users)\n\n```sh\nnpx thoth-skill init                   # default: user-global, Claude\nnpx thoth-skill init --local           # project-local (./.claude/skills/thoth)\nnpx thoth-skill init --ai cursor       # Cursor\nnpx thoth-skill update                 # pull latest — your personas in ~/.thoth/ are untouched\nnpx thoth-skill uninstall              # remove the skill — your personas in ~/.thoth/ are kept\n```\n\nOr install the CLI globally:\n\n```sh\nnpm install -g thoth-skill\nthoth init\n```\n\n### Option 3 — Claude plugin marketplace (Claude Code)\n\n```\n/plugin marketplace add NirvanaGuha/thoth\n/plugin install thoth@thoth\n```\n\n### Option 4 — Manual\n\n```sh\ngit clone https://github.com/NirvanaGuha/thoth.git\ncp -r thoth/skill ~/.claude/skills/thoth\n```\n\nWorks with Claude Code, Claude Desktop, Cowork, Cursor, Windsurf — anywhere that supports standard `.claude/skills/` skills.\n\n---\n\n## Quick start\n\nAfter installing, in Claude:\n\n```\n/thoth \u003cyour-name\u003e     # activate and scaffold your persona folder\n/thoth onboard         # run the 20-minute interview\n/thoth                 # generate your first post\n/thoth daily           # one-shot \"what happened today?\" flow\n/thoth schedule 08:30  # automate the daily flow at 8:30 local\n/thoth help            # full command list\n```\n\n### All commands\n\n| Command | What it does |\n|---|---|\n| `/thoth help` | Show the command list. |\n| `/thoth \u003cname\u003e` | Activate a persona. Subsequent commands run for this user. |\n| `/thoth onboard [name]` | Run the 20-min persona interview. |\n| `/thoth` | Generate a post (ratio-aware post-type selection). |\n| `/thoth \u003ctype\u003e` | Force a post type (`personal`, `work`, `thought-leadership`, `educational`, `promotional`). |\n| `/thoth daily` | One-shot daily flow: ask what's new, draft today's post. |\n| `/thoth regenerate [feedback]` | Redraft the last post, optionally with steering. |\n| `/thoth calendar` | Show the ratio tracker — actual vs. target, what's next. |\n| `/thoth edit` | Edit the active persona. |\n| `/thoth list` | Show all personas on this install. |\n| `/thoth connect git \u003cpath\u003e` | Add a local repo as a POV source (abstract themes only, strict redaction). |\n| `/thoth disconnect git \u003cpath\u003e` | Remove a git source. |\n| `/thoth schedule [HH:MM]` | Automate the daily flow via the `schedule` skill. |\n| `/thoth unschedule` | Cancel the recurring schedule. |\n| `/thoth recover` | Restore personas from past Claude session logs after an upgrade wiped your data. |\n| `/thoth update` | Check for a newer Thoth release and upgrade in place. Persona data is not touched. |\n| `/thoth version` | Print the installed Thoth version and where the skill + data live. |\n\n---\n\n## Example prompts\n\n```\n/thoth nirvana                         # activate Nirvana's persona\n/thoth                                 # draft a post, ratio-aware\n\n/thoth regenerate shorter, less corporate, add a question at the end\n\n/thoth thought-leadership              # force a Thought-leadership post\n\n/thoth daily                           # \"anything interesting today?\" flow\n\n/thoth calendar                        # see where you're light on post types\n```\n\n### What `/thoth calendar` looks like\n\n```\nThoth — content calendar for nirvana\nWindow: last 20 posts\n\nTarget    Actual   Type                       Status\n30%       32%      Personal                   on target\n25%       21%      Work                       slightly under\n20%       25%      Thought-leadership         overrepresented\n15%       12%      Educational                slightly under\n10%        5%      Promotional                underrepresented\n\nNext up: Promotional — 5% behind target.\n```\n\n---\n\n## Multi-user support (teams / agencies)\n\nA single install supports any number of personas. Families, teams, and agencies can share one Thoth with a persona per person:\n\n```\n/thoth nirvana        # switch to Nirvana's voice\n/thoth                # draft for Nirvana\n\n/thoth rakesh         # switch to Rakesh\n/thoth                # draft for Rakesh\n```\n\nPersonas live at `~/.thoth/personas/\u003cname\u003e/` — 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.\n\n\u003e **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.\n\n---\n\n## Git as a POV source (optional, strictly sandboxed)\n\n`/thoth connect git \u003cpath\u003e` lets Thoth read a local repo's commit history **to understand what you're working on** — for topic and voice seeding. Hard rules:\n\n- Never names the repository.\n- Never quotes code, file paths, variable names, or commit messages verbatim.\n- Never promotes the product being built.\n- Skips commits touching auth, credentials, or security.\n- Runs a 5-check redaction pass before emitting any post that touched git context.\n\nFull rules: [skill/references/git-safety.md](./skill/references/git-safety.md). The constraint is the feature — your LinkedIn voice stays yours, not an extended ad for your employer's roadmap.\n\n---\n\n## How it works\n\n```\n┌────────────────────────────────────────────────────────────┐\n│  1. ACTIVATE                                               │\n│     /thoth \u003cname\u003e → personas/.active ← \u003cname\u003e              │\n└────────────────────────────────────────────────────────────┘\n                            │\n                            ▼\n┌────────────────────────────────────────────────────────────┐\n│  2. PICK POST TYPE                                         │\n│     Read history.yaml → compute 20-post ratio gap          │\n│     Select type with largest negative gap                  │\n│     Respect recency: never pick the same type twice        │\n│     in a row unless gap \u003e 10pp                             │\n└────────────────────────────────────────────────────────────┘\n                            │\n                            ▼\n┌────────────────────────────────────────────────────────────┐\n│  3. SELECT TOPIC                                           │\n│     Rotate through pillar_topics                           │\n│     Weight today's recent.md entries heavily               │\n│     (if connected) synthesize git log into abstract        │\n│     themes — NEVER repo names, paths, or code              │\n└────────────────────────────────────────────────────────────┘\n                            │\n                            ▼\n┌────────────────────────────────────────────────────────────┐\n│  4. DRAFT                                                  │\n│     Apply archetype + tone targets                         │\n│     Apply post-type template + story arc                   │\n│     (classic / frame-break / quiet-reveal)                 │\n└────────────────────────────────────────────────────────────┘\n                            │\n                            ▼\n┌────────────────────────────────────────────────────────────┐\n│  5. VOICE CHECK (mandatory before emit)                    │\n│     ✓ sounds like dominant archetype + secondary           │\n│     ✓ all 4 tone axes within ±1 of target                  │\n│     ✓ no opener clichés                                    │\n│     ✓ at least one concrete detail                         │\n│     ✓ no matches against anti_voice patterns               │\n│     ✓ length in type's Min–Max window                      │\n│     ✓ if git-seeded: redaction check passes                │\n└────────────────────────────────────────────────────────────┘\n                            │\n                            ▼\n┌────────────────────────────────────────────────────────────┐\n│  6. EMIT + LOG                                             │\n│     Output copy-ready text                                 │\n│     Append to history.yaml                                 │\n│     Save to last-post.md for /thoth regenerate             │\n└────────────────────────────────────────────────────────────┘\n```\n\n---\n\n## Repository layout\n\n```\nthoth/\n├── .claude-plugin/              # Plugin marketplace metadata\n│   └── plugin.json\n├── .github/workflows/           # CI (publishes CLI on release)\n│   └── publish.yml\n├── cli/                         # npm package (thoth-skill CLI)\n│   ├── package.json\n│   ├── bin/thoth.js             # zero-deps installer\n│   ├── assets/skill/            # bundled skill for --offline installs\n│   └── README.md\n├── skill/                       # THE skill — copied to ~/.claude/skills/thoth\n│   ├── SKILL.md\n│   ├── references/\n│   │   ├── brand-archetypes.md\n│   │   ├── tone-spectrum.md\n│   │   ├── hot-take-exercises.md\n│   │   ├── onboarding-interview.md\n│   │   ├── content-mix.md\n│   │   ├── post-types.md\n│   │   ├── story-arcs.md\n│   │   ├── git-safety.md\n│   │   ├── example-posts.md\n│   │   ├── persona-template.md\n│   │   └── commands.md\n│   ├── personas/                # Your voice data lives here\n│   │   └── README.md\n│   └── scripts/\n├── install.sh                   # curl | bash installer\n├── skill.json                   # skill metadata\n├── CLAUDE.md                    # dev guide\n├── CONTRIBUTING.md\n├── LICENSE\n└── README.md                    # this file\n```\n\n---\n\n## Hard rules (never violated)\n\n1. Never publishes on your behalf. Output is text.\n2. Never names a connected git repo, quotes code, or promotes the product being built.\n3. Never fabricates specifics (numbers, people, events) not in your persona or inputs.\n4. Never starts a post with a LinkedIn cliché (\"Excited to share\", \"I'm humbled to announce\").\n5. Never uses more than 4 hashtags. Never tags people for engagement bait.\n6. Never drifts from your documented archetype and tone.\n\nIf the draft trips any rule, Thoth rewrites. If it can't rewrite to pass, it tells you why.\n\n---\n\n## Privacy\n\nEverything 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.\n\nTo 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.\n\n---\n\n## Contributing\n\nPRs welcome. See [CONTRIBUTING.md](./CONTRIBUTING.md) and [CLAUDE.md](./CLAUDE.md) (the dev guide).\n\nHigh-value contributions:\n- New archetype example-posts (see `skill/references/example-posts.md` for format).\n- Translations of the onboarding interview.\n- Adapters for other AI tools (`--ai` targets beyond Claude/Cursor/Windsurf).\n\n---\n\n## Credits\n\n- **Brand archetypes** — Carol S. Pearson \u0026 Margaret Mark, *The Hero and the Outlaw* (2001), building on C.G. Jung.\n- **Tone of voice model** — Kate Moran et al., Nielsen Norman Group UX research.\n- **Story-arc and copy frameworks** — Six Thinking Hats (de Bono), Ghost/Truth/Lie/Happy Ending (classic copywriting canon).\n\n---\n\n## License\n\n[MIT](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnirvanaguha%2Fthoth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnirvanaguha%2Fthoth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnirvanaguha%2Fthoth/lists"}