[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-92707":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":22,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":16,"starSnapshotCount":16,"syncStatus":38,"lastSyncTime":39,"discoverSource":40},92707,"atrophy","ashutosh-rath02\u002Fatrophy","ashutosh-rath02","Measure what your brain is losing while AI does your work - unaided-skill baselines, decay curves, reliance drills","https:\u002F\u002Fashutosh-rath02.github.io\u002Fatrophy\u002F",null,"TypeScript",93,5,1,8,0,25,44.83,"MIT License",false,"main",true,[24,25,26,27,28,29,30,31,32,33,34],"ai","artificial-intelligence","cli","deliberate-practice","developer-tools","elo-rating","local-first","nodejs","skill-assessment","skill-decay","typescript","2026-07-22 04:02:06","# Atrophy\n\n**Are you getting worse at coding without AI? Atrophy tells you - with a number.**\n\n[![CI](https:\u002F\u002Fgithub.com\u002Fashutosh-rath02\u002Fatrophy\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fashutosh-rath02\u002Fatrophy\u002Factions\u002Fworkflows\u002Fci.yml)\n[![npm](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fatrophy.svg)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fatrophy)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-blue.svg)](LICENSE)\n\nAtrophy is a command-line app that regularly hands you a small coding exercise\nto solve **without any AI help** - no Copilot, no chat, just you and your\neditor. It grades your solution automatically, keeps a skill rating for you\n(like a chess Elo), and charts how that rating moves over the weeks. If AI\nassistance is quietly eroding your ability to code unaided, the chart shows\nyou - before an interview, an outage, or a day without wifi does.\n\n## How it works\n\n1. **`atrophy baseline`** - once, ~25 minutes. Solve one exercise for each of\n   five skills, AI off. This sets your starting ratings.\n2. **`atrophy drill`** - 5-10 minutes, two or three times a week. One\n   exercise, automatically picked from the skill you've neglected longest.\n   Pass and your rating rises; fail and it falls.\n3. **`atrophy serve`** - your dashboard. One curve per skill, plus the chart\n   this tool exists for (more below).\n4. **Once a month: `atrophy drill --ai-on`** - take one drill *with* your AI\n   tools. Those scores are tracked separately, so the dashboard can show the\n   gap between you-with-AI and you-alone.\n\n## What a drill looks like\n\n```text\n$ atrophy drill\n\nBinary search misses the edges  [debugging · python · tier 2]\n────────────────────────────────────────────────────────────\nbinary_search(items, target) should return the index of target in the\nsorted list items, or -1 if absent. It mysteriously fails for some\nvalues that are clearly in the list. Find and fix the bug.\n────────────────────────────────────────────────────────────\nEdit: \u002Ftmp\u002Fatrophy-k3XoP1\u002Fsolution.py\n\nAI off. Soft limit 7 min - timer started.\n\n[Enter] submit · [q] abandon >\n\n✓ 6\u002F6 tests passed in 214s\n\nScore 1.00 · debugging rating 1222 → 1241 (+19)\n```\n\nThe exercise opens in your own editor (`$EDITOR`). Grading runs your code\nagainst hidden tests in a sandboxed subprocess. There's a soft time limit  - \ngoing over shrinks your score gradually, nothing explodes. If tests fail you\ncan keep fixing and resubmit; the clock just keeps running.\n\nNot every skill is \"write code against tests\" - see the table below.\n\n## The five skills\n\n| Skill | The drill | Graded by |\n|---|---|---|\n| **Syntax recall** | Write a small function from a spec | Hidden tests |\n| **Debugging** | Working-looking code has one planted bug - find and fix it | Hidden tests |\n| **Code reading** | Read a snippet, type exactly what it prints | Compared to the snippet's real output |\n| **API memory** | Fill in the blanked-out stdlib call | Answer match |\n| **Decomposition** | Outline a design (rate limiter, folder sync…) in bullets | You score yourself against a revealed rubric |\n\nExercises come in Python and JavaScript across three difficulty tiers - a\nhand-written static bank plus **generator families that render endless fresh\nvariants** (randomized data, names, and twists; same seed always reproduces\nthe same exercise). Difficulty targets *you*: each drill picks the tier where\nyour predicted success is closest to ~65%, the point where a rep carries the\nmost information. Comfortable wins teach the rating nothing.\n\n## The dashboard\n\n```sh\natrophy serve   # http:\u002F\u002F127.0.0.1:4646\n```\n\n**[Try the live demo →](https:\u002F\u002Fashutosh-rath02.github.io\u002Fatrophy\u002F)** (synthetic data)\n\n![Atrophy dashboard: five skill curves with confidence bands, and the unaided-vs-AI-assisted score chart](docs\u002Fassets\u002Fatrophy-dashboard.gif)\n\nHow to read it:\n\n- **The line** is your skill rating. It only moves when you actually take a\n  drill - no evidence, no movement.\n- **The shaded band** around the line is confidence. Skip practicing for a\n  few weeks and the band visibly widens: the tool isn't claiming you got\n  worse, it's admitting it no longer knows you're still good. One drill\n  snaps it tight again.\n- **\"Unaided vs AI-assisted\"** plots every drill score in two colors: your\n  solo reps in blue, your monthly with-AI reps in green. If the blue line\n  sinks while the green line stays perfect, that growing gap is your\n  dependence, measured. This chart is the reason the tool exists.\n\n## Why take this seriously\n\nThe pattern is documented across professions, and it comes with no internal\nwarning signal - people consistently feel fine while measurably declining:\n\n- Doctors' unaided polyp-detection rates fell **28% → 22%** within months of\n  routine AI assistance ([*The Lancet* G&H, 2025](https:\u002F\u002Fwww.thelancet.com\u002Fjournals\u002Flangas\u002Farticle\u002FPIIS2468-1253(25)00133-5\u002Fabstract))\n- Students with GPT-4 scored **17% worse** than peers once it was taken away\n  ([*PNAS*, 2025](https:\u002F\u002Fwww.pnas.org\u002Fdoi\u002F10.1073\u002Fpnas.2422633122))\n- Experienced developers using AI were **19% slower** - while believing they\n  were 20% faster ([METR RCT, 2025](https:\u002F\u002Farxiv.org\u002Fabs\u002F2507.09089))\n- Engineers who used AI to write code scored **17% lower** on understanding\n  that same code - debugging suffered most ([Anthropic, 2026](https:\u002F\u002Fwww.anthropic.com\u002Fresearch\u002FAI-assistance-coding-skills))\n\nFull citations and an honest discussion of what this tool can and can't\nmeasure: [docs\u002Fresearch.md](docs\u002Fresearch.md).\n\n## Install\n\nRequires Node.js ≥ 22, plus Python 3 on `PATH` if you want the Python exercises.\n\n```sh\nnpm install -g atrophy\natrophy baseline\n```\n\n## Command reference\n\n| Command | What it does |\n|---|---|\n| `atrophy baseline` | First session: one drill per skill (~25 min) |\n| `atrophy drill` | One drill on your most-neglected skill |\n| `atrophy drill --axis debugging` | Drill a specific skill (`syntax-recall`, `debugging`, `code-reading`, `api-memory`, `decomposition`) |\n| `atrophy drill --lang python` | Only Python (or `javascript`) exercises |\n| `atrophy drill --ai-on` | Monthly comparison rep with AI allowed |\n| `atrophy publish --handle you` | Opt in to the [public leaderboard](https:\u002F\u002Fashutosh-rath02.github.io\u002Fatrophy\u002Fleaderboard.html); afterwards every drill syncs automatically (`--stop` opts out) |\n| `atrophy stats` | Ratings table and week streak in the terminal |\n| `atrophy serve` | Dashboard at `127.0.0.1:4646` |\n| `atrophy export -o out.json` | Dump all your data as JSON |\n\n## Your data\n\nOne SQLite file at `~\u002F.atrophy\u002Fatrophy.db`, owned by you. No account, no\nsync, no telemetry, nothing leaves your machine. `ATROPHY_DB` overrides the\nlocation if you want it in a dotfiles repo or synced folder.\n\n## Honest limitations\n\n- Ten-minute drills are a **proxy** for real-world skill, not a clinical\n  measurement - treat trends, not absolute numbers, as the signal.\n- Drilling makes you better at drills. That's fine - the drill *is* the\n  maintenance - but it's another reason the interesting number is the\n  unaided-vs-AI gap, not your raw rating.\n- \"AI off\" is an honor system, actively assisted: starting an unaided drill\n  while a known AI assistant is running (Copilot, Cursor, Claude, Windsurf,\n  Codeium, Tabnine, Ollama, LM Studio, ChatGPT, Aider) prints a warning that\n  names it. Warned, never blocked - you'd only be cheating your own chart.\n\n## Contributing & development\n\n```sh\ngit clone https:\u002F\u002Fgithub.com\u002Fashutosh-rath02\u002Fatrophy.git\ncd atrophy && npm install\nnpm run dev -- drill    # CLI from source\nnpm test                # 70 tests, incl. real grading subprocesses\n```\n\nNew exercises are the most welcome contribution: one JSON file under\n`bank\u002Fexercises\u002F\u003Cskill>\u002F`, validated by `bank\u002Fschema.ts`. CI proves every\nplanted bug actually fails a test and every code-reading snippet runs\ndeterministically, so a broken exercise can't merge.\n\nRoadmap: LLM-judged decomposition drills, more languages, spaced-repetition\nscheduling (FSRS), per-axis leaderboards.\n\n## License\n\n[MIT](LICENSE) © 2026 Ashutosh Rath\n","Atrophy 是一款面向开发者的命令行工具，用于量化评估和追踪人工编码能力的自然衰减趋势。它通过定期执行无AI辅助的编程小测验（涵盖语法回忆、调试、代码阅读、API记忆与问题分解五类技能），基于Elo评分机制动态更新个人技能等级，并生成技能衰减曲线。项目采用本地优先架构，所有练习在本地沙箱中运行并自动评分，支持对比AI辅助与纯手动表现的差距。适用于希望主动监控技术退化风险、开展刻意练习或准备技术面试的开发者。",2,"2026-07-10 02:30:12","CREATED_QUERY"]