{
  "markdown": "```\n █████  ██████  ████████ ██  ██████ ██   ██ ██       █████  ████████ ███████\n██   ██ ██   ██    ██    ██ ██      ██   ██ ██      ██   ██    ██    ██\n███████ ██████     ██    ██ ██      ██   ██ ██      ███████    ██    █████\n██   ██ ██   ██    ██    ██ ██      ██   ██ ██      ██   ██    ██    ██\n██   ██ ██   ██    ██    ██  ██████  █████  ███████ ██   ██    ██    ███████\n```\n\n**Quick language challenges pulled from your real writing.**\n\n---\n\n## What It Is\n\nArticulate is a Claude Code skill that gives you a surprise language challenge every time you invoke it. Swap a word, trim a phrase, punch up a sentence, snipe your own weak writing. Each session takes under 2 minutes — short, honest feedback with a one-line etymology nugget that makes you think differently about words.\n\nThree modes: **Lucky** (random missions from your writing), **Roast** (find your own weaknesses), **Ambient Coach** (tips while you work).\n\nWorks with Claude Code, Codex, Cursor, OpenCode, and Gemini CLI.\n\n---\n\n## Demo\n\n### 🎯 Swap — Replace one word\n\n```\n## 🎯 Swap\n\nOne word is holding this sentence back:\n\n> \"We need to **handle** the migration before the sprint ends.\"\n\nReplace **handle**. One word.\n>\n```\n\nYou type: `execute`\n\n```\n✅ Nailed it. \"Handle\" is vague — you handle luggage, complaints, exceptions.\n\"Execute\" (Latin exsequī — follow to the end) means carry out a plan with precision.\n\n💡 *\"Execute\" entered English through legal death warrants. When you execute a\nmigration, you're following every step to completion. No ambiguity.*\n\n⚡ +28 XP (base 10 + score 9 + streak 9) | 🔥 5d\n\n🎲 Another? go | 💾 Save save | ✌️ Done\n```\n\n### 🔍 Snipe — Fix your own writing\n\n```\n## 🔍 Snipe\n\nYour words, under the microscope:\n\n> \"I think we should maybe try to basically refactor the thing that handles auth\"\n\n4 problems. Find and fix them all. Rewrite it.\n>\n```\n\nYou type: `Refactor the auth middleware.`\n\n```\n🔍 4/4 caught. Clean sweep. 🔥\n\n✓ \"I think\" — hedge gone\n✓ \"maybe\" + \"basically\" — filler gone\n✓ \"the thing that handles\" → \"the auth middleware\" — named it\n\n📉 14 → 4 words. That's a sentence now.\n\n💡 *\"Thing\" (Old Norse þing) originally meant a public assembly. You were\naccidentally calling every object a Viking parliament.*\n\n⚡ +24 XP | 🔥 3d\n```\n\n### 💪 Punch — Make it hit\n\n```\n## 💪 Punch\n\nThis sentence has zero pulse:\n\n> \"The meeting went well and we discussed several important topics.\"\n\nMake it hit. Same meaning, more impact.\n>\n```\n\nYou type: `We cracked three blockers in 40 minutes. No follow-up needed.`\n\n```\n💪 That landed. Numbers + specifics > adjectives.\n\n💡 *\"Several important topics\" tells nothing. \"Three blockers\" tells everything.\nNumbers are the most precise words in any language — they leave zero room for\ninterpretation.*\n\nScore: 92/100\n```\n\n### 🔥 Roast — Detective game\n\n```\n## 🔥 Roast\n\nYour words. My microscope.\n\n> \"I basically think we should probably try to implement some kind of\n> solution for the thing that keeps breaking\"\n\n6 problems. Find them all. Rewrite it.\n>\n```\n\n### 💡 Ambient Coach\n\nDrops inline tips while you work:\n\nYou: *\"Can you basically just make the button do the thing?\"*\n\nClaude responds normally, then:\n\n> 💡 *You wrote \"make the button do the thing\" — try \"trigger validation on click\" for clarity.*\n\n---\n\n## The Six Missions\n\nEvery `/articulate` picks a random mission type. You never know what's coming.\n\n| Mission | What you do | Time |\n|---------|-------------|------|\n| 🎯 **Swap** | Replace one weak word | 15 sec |\n| ✂️ **Trim** | Cut a sentence in half | 30 sec |\n| 💪 **Punch** | Make a flat sentence hit | 30 sec |\n| 🔍 **Snipe** | Fix your own real writing | 1 min |\n| 🔄 **Flip** | Rewrite in opposite tone | 30 sec |\n| 🧩 **Fill** | One blank, one perfect word | 15 sec |\n\nPlus **surprise twists** (~10% of sessions): Blind Punch, Reverse Swap, Speed Trim.\n\nMissions are personalized from your recent conversations and project context. When you miss a word, you can **practice it** immediately in the next mission.\n\n---\n\n## Installation\n\n### Claude Code\n\n```bash\n# Option A: Plugin install\nclaude plugin install https://github.com/hristo2612/articulate.git\n\n# Option B: Manual clone\ngit clone https://github.com/hristo2612/articulate.git ~/.claude/skills/articulate\n```\n\n### Codex\n\n```bash\ngit clone https://github.com/hristo2612/articulate.git ~/.codex/articulate\nln -s ~/.codex/articulate/skills ~/.agents/skills/articulate\n```\n\nSee [`.codex/INSTALL.md`](.codex/INSTALL.md) for details.\n\n### Cursor\n\n```bash\n# Option A: Marketplace (if available)\n# Search \"Articulate\" in Cursor extensions\n\n# Option B: Manual clone\ngit clone https://github.com/hristo2612/articulate.git ~/.cursor/skills/articulate\n```\n\n### OpenCode\n\nAdd to your `opencode.json`:\n\n```json\n{\n  \"plugin\": [\"articulate@git+https://github.com/hristo2612/articulate.git\"]\n}\n```\n\nSee [`.opencode/INSTALL.md`](.opencode/INSTALL.md) for details.\n\n### Gemini CLI\n\n```bash\ngemini extensions install https://github.com/hristo2612/articulate.git\n```\n\n---\n\n## Usage\n\nAll commands start with `/articulate`. First run triggers onboarding (name, language, coaching toggle).\n\n| Command | What it does |\n|---------|-------------|\n| `/articulate` | Random surprise mission |\n| `/articulate roast` | Roast your past writing |\n| `/articulate roast here` | Roast current conversation |\n| `/articulate coach on/off` | Toggle ambient coaching |\n| `/articulate stats` | Your progress |\n| `/articulate streak` | Streak status |\n| `/articulate lexicon` | Words you've learned |\n| `/articulate save` | Save progress to disk |\n| `/articulate help` | All commands |\n\nAppend `--en` or `--bg` to force a language: `/articulate --bg`\n\n### Save System\n\nProgress is kept in memory during your session. Type `save` or `/articulate save` when you're ready to persist. No file I/O slowing you down between missions.\n\n---\n\n## Progression\n\nSeven ranks. All modes available from Level 1 — levels are milestones, not gates.\n\n| Level | Rank | XP | Badge |\n|-------|------|-----|-------|\n| 1 | RECRUIT | 0 | ⬜ |\n| 2 | INITIATE | 100 | 🟩 |\n| 3 | OPERATIVE | 300 | 🟨 |\n| 4 | SPECIALIST | 600 | 🟧 |\n| 5 | COMMANDER | 1000 | 🔴 |\n| 6 | ARCHITECT | 1800 | 💎 |\n| 7 | MASTERMIND | 3000 | 👑 |\n\n**Badges:** 14 badges for streaks, scores, session counts, and multilingual training. Permanent — survive prestige resets.\n\n**Streaks:** Daily sessions build streaks. Bonus XP up to +20/session. Streak shields at 30, 60, and 100 days.\n\n**Prestige:** At MASTERMIND, optionally reset to RECRUIT with a ★ star. Badges and lexicon carry over.\n\n---\n\n## Languages\n\nWorks with **any language**. English and Bulgarian have curated reference files for richer sessions. Want to add yours? See [Contributing](#contributing).\n\n---\n\n## Data\n\nAll state at `~/.articulate/`. Nothing in the repo.\n\n| File | What's in it |\n|------|-------------|\n| `user.json` | Name, languages, coaching toggle |\n| `state.json` | XP, level, rank, streak, badges, weaknesses |\n| `history.json` | Last 100 sessions (FIFO) |\n| `lexicon.json` | Words learned with usage counts |\n| `contexts/` | Cached project summaries |\n\n```bash\n# Backup\ncp -r ~/.articulate ~/.articulate-backup\n\n# Reset (requires confirmation)\n/articulate reset\n```\n\n---\n\n## Contributing\n\n### Add a Language Pack\n\n1. Create `skills/articulate/references/languages/{lang}.md`\n2. Use `english.md` and `bulgarian.md` as reference\n3. PR welcome\n\n---\n\n## License\n\n[MIT](LICENSE) — Hristo Bogoev ([@hristo2612](https://github.com/hristo2612))\n",
  "bytes": 7461,
  "sha": "91f88d3a85f9eec2ad0f315a6c266a795596428914671971f3d197216cda7be6",
  "repo_slug": "hristo2612/articulate",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_hristo2612_articulate_eb3e1559/readme"
}