Johannes Kaindl18 downloadsNeurodivergence-friendly gamification: XP, levels, streaks with freeze tokens, deterministic loot, and lore. Off-by-default for anything that could escalate.
🇬🇧 English · 🇩🇪 Deutsch
Neurodivergence-friendly gamification for Obsidian — XP, levels, streaks with freeze tokens, deterministic loot drops, and optional lore, with everything that could escalate off by default.
isDesktopOnly: false).Search for Kuro Gamification in Settings → Community plugins → Browse, then click Install and Enable.
main.js, manifest.json, styles.css, versions.json from the latest release and copy them into <vault>/.obsidian/plugins/kuro-gamification/Cmd+P → "Open status sidebar"qigong: true) in Settings → Habits, each with its own XP value.review_done: true / planung_done: true in a weekly note's frontmatter for the weekly review/planning bonus.kuro-status code block (see Status code block below) in any note for a live status view without opening the sidebar.Most gamification plugins for note apps are built for neurotypical brains: hard streaks that punish you for missing one day, exponential XP curves that reward consistency over actual life, push notifications that nag you. This one was built for ADHD and autism:
qigong: true etc., XP per habit configurablereview_done / planung_done frontmatterSIGNAL LOST → K U R O, all titles + thresholds editable in Settingspacks/ folder, or import your own```kuro-status embed in any note)This plugin works without external styling — it ships with sane structural CSS. For the full gothic-cyberpunk CRT terminal aesthetic (phosphor green, scanlines, flicker), see Aesthetic CSS · (DE) for the CSS and install instructions (it's kept as a doc, not a tracked .css file, so it isn't bundled and never shows up in CSS linting of the plugin's own source).
The snippet styles pre.kuro-status, pre.kuro-loot, and the [!kuro], [!levelup], [!spoiler], [!streak] callouts. It has no hard dependency on the Kuro theme (works under any theme that respects CSS custom properties).
| Section | What it controls |
|---|---|
| 🎮 General | Language (DE/EN), reduce-animations, status-bar item, action notices, verbose breakdown, sidebar enable/disable |
| 📁 Paths | Daily/weekly folder paths + date formats |
| ⚡ XP sources | XP per checkbox, completion bonuses, pomodoro key/threshold/bonus |
| 🎯 Habits | Add/edit/remove your own habit list (frontmatter key + label + XP) |
| 📅 Weekly | Review/planning frontmatter keys + XP |
| 🔥 Streaks | Day-qualification threshold, monthly freeze tokens |
| 📊 Levels & loot | Loot enable/disable, options per drop |
| 📜 Lore | Lore reveal enable/disable |
| 📚 Packs | Install/switch/delete loot·lore packs; per-unit export/copy/reset to factory |
| 🛠 Advanced | Log level; whole-state data export/import/reset (incl. XP) |
| ℹ️ About | Version, link to in-vault docs |
Embed your status anywhere:
```kuro-status
mode: full # full | compact | minimal
loot: show # show | hide
lore: show # show | hide
breakdown: hide # show | hide
## Recommended habits (example for an ADHD-friendly daily)
In your daily note frontmatter:
```yaml
qigong: true
peloton: false
draussen: true
haushalt: false
pomodoros: 4
Then in Settings → Habits, add e.g.:
qigong → 🧘 Qi Gong → 10 XPpeloton → 🚴 Peloton → 15 XPdraussen → 🌳 Draußen → 10 XPhaushalt → 🏠 Haushalt → 10 XPPomodoros bonus is automatic when pomodoros >= threshold (default ≥ 4 → +10 XP).
The plugin watches vault.modify events (800 ms debounced) on your daily/weekly notes. On each trigger it re-reads the relevant notes' checkboxes and frontmatter, and pure-function engines compute the result from scratch — XP totals, level, streak state, and (once a new level is reached) a deterministic loot drop:
XpEngine sums XP from ticked checkboxes, completion-percentage bonuses, configured habits, and the weekly review/planning bonus, then derives the level from the linear-quadratic curve.StreakEngine checks whether "today" met the day-qualification threshold, consumes a freeze token on a missed day instead of resetting, and applies streak-tier bonuses (3/7/14/30 days).LootEngine picks a deterministic reward per level-up above 1 (seeded by level + save count, so a drop doesn't change on reload) from a 5-tier pool that's user-replaceable via packs.LoreEngine reveals the narrative fragment tied to the new level, from whichever lore pack is active.All four engines live under src/engine/, are free of Obsidian imports, and run in plain Node under jest — the UI layer (sidebar, status code-block, modals, settings tab) is a thin layer over these pure computations and the Obsidian API. Data is persisted to data.json via Obsidian's plugin data API; export/import/reset in Settings → Erweitert operate on that same JSON.
vault.modify debounced 800ms triggers refreshv6t2b9), 2026-03 to 2026-04Code: AGPL-3.0-or-later — see LICENSE.
Documentation: CC BY-SA 4.0 — see LICENSE-DOCS.
A commercial license is available for uses incompatible with the AGPL — see LICENSING.md. Contributions are accepted under the CLA.