{"id":47145764,"url":"https://github.com/benmarte/autoimprove","last_synced_at":"2026-03-27T02:07:19.434Z","repository":{"id":343721678,"uuid":"1178852501","full_name":"benmarte/autoimprove","owner":"benmarte","description":"Autonomous codebase improvement loop for Claude Code","archived":false,"fork":false,"pushed_at":"2026-03-13T20:17:59.000Z","size":483,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-15T09:55:57.164Z","etag":null,"topics":["ai","ai-skill","claude","claude-code","claude-code-plugin","claude-skills"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/benmarte.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"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-03-11T12:40:57.000Z","updated_at":"2026-03-14T01:58:26.000Z","dependencies_parsed_at":"2026-03-14T01:01:18.678Z","dependency_job_id":null,"html_url":"https://github.com/benmarte/autoimprove","commit_stats":null,"previous_names":["benmarte/autoimprove"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/benmarte/autoimprove","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benmarte%2Fautoimprove","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benmarte%2Fautoimprove/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benmarte%2Fautoimprove/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benmarte%2Fautoimprove/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/benmarte","download_url":"https://codeload.github.com/benmarte/autoimprove/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benmarte%2Fautoimprove/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31009053,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-27T01:56:05.093Z","status":"online","status_checked_at":"2026-03-27T02:00:08.055Z","response_time":164,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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","ai-skill","claude","claude-code","claude-code-plugin","claude-skills"],"created_at":"2026-03-13T00:08:35.397Z","updated_at":"2026-03-27T02:07:19.396Z","avatar_url":"https://github.com/benmarte.png","language":"Shell","readme":"\u003cdiv align=\"center\"\u003e\n\n# 🔁 autoimprove\n\n### Autonomous codebase improvement loop for Claude Code\n\n[![Claude Code](https://img.shields.io/badge/Claude%20Code-Plugin-blueviolet?logo=anthropic)](https://code.claude.com)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)\n[![Languages](https://img.shields.io/badge/languages-10%2B-blue)](#supported-languages)\n\n*Inspired by [karpathy/autoresearch](https://github.com/karpathy/autoresearch) — but for any codebase, not just ML training loops.*\n\n\u003c/div\u003e\n\n---\n\n## What is this?\n\nKarpathy's `autoresearch` lets an AI agent run ML experiments overnight: modify `train.py` → measure `val_bpb` → keep if better, discard if worse → repeat. You wake up to a log of experiments and a better model.\n\n**autoimprove does the same thing for your codebase.**\n\nGive Claude Code your project, run `/autoimprove:improve`, and let it iterate autonomously. It proposes a targeted change, scores your codebase before and after using your own tooling (TypeScript, `cargo clippy`, `pytest`, `golangci-lint` — whatever you already have), keeps the changes that improve the score, reverts the ones that don't, and logs everything. You wake up to a readable log of what worked, what didn't, and a cleaner codebase.\n\n```\npropose → measure BEFORE → implement → measure AFTER → keep ✅ or discard ❌ → log → repeat\n```\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"autoimprove.png\" alt=\"autoimprove session showing 5 iterations with 3 wins, score going from 50 to 59\" width=\"100%\"\u003e\n\u003cbr\u003e\u003cem\u003eA real autoimprove session: 5 iterations, 3 wins, score 50 → 59 (+9 pts) in under 6 minutes\u003c/em\u003e\n\u003c/div\u003e\n\n---\n\n## Quick start\n\n```bash\n# 1. Add the marketplace and install the plugin\n/plugin marketplace add benmarte/autoimprove\n/plugin install autoimprove@autoimprove\n\n# 2. Auto-detect your stack and see your codebase report\n/autoimprove:setup\n\n# 3. The audit shows what's wrong and offers to start fixing\n# Or run the audit anytime for a fresh check\n/autoimprove:audit\n\n# 4. For unattended runs (e.g. overnight), use improve directly\n/autoimprove:improve 20\n\n# Or focus on a specific task\n/autoimprove:improve 10 \"Replace all any types with proper interfaces\"\n\n# 5. Review in the morning\ncat .claude/autoimprove/log.md\ngit log --oneline   # one commit per winning experiment\ngit show HEAD       # inspect the latest win\n```\n\nThat's it. No config required upfront — `/autoimprove:setup` fingerprints your project, writes `.claude/autoimprove/config.md`, and immediately runs an audit showing your codebase's deficiencies ranked by efficiency.\n\n### Upgrading\n\n#### If you already have the upgrade command\n\n```bash\n/autoimprove:upgrade\n```\n\n#### If you don't have the upgrade command (older installs)\n\nThe plugin system caches marketplace clones locally. If your install predates the upgrade command, you need to update the marketplace clone first:\n\n```bash\n# 1. Update the marketplace clone\ncd ~/.claude/plugins/marketplaces/autoimprove \u0026\u0026 git pull origin main\n\n# 2. Reinstall the plugin\n/plugin update autoimprove@autoimprove\n```\n\nIf `/plugin update` still shows \"already at the latest version\", uninstall and reinstall:\n\n```bash\n/plugin uninstall autoimprove@autoimprove\n/plugin install autoimprove@autoimprove\n```\n\nAfter this, `/autoimprove:upgrade` will be available for all future updates.\n\n### Auto-update check\n\nautoimprove checks for new releases once per day on session start. If an update is available, you'll see:\n\n```\nUpdate available: v1.2.0 → v1.3.0\nRun /autoimprove:upgrade to update.\n```\n\nThe check is lightweight (single GitHub API call, 3s timeout, cached for 24 hours) and never blocks startup.\n\n---\n\n## How it works\n\n### 1. Setup (once per project)\n\n`/autoimprove:setup` scans your project root to detect:\n- Language and framework\n- Package manager (`npm`, `cargo`, `poetry`, `uv`, etc.)\n- Test runner (`pytest`, `jest`, `go test`, `rspec`, etc.)\n- Type checker (`tsc`, `mypy`, `pyright`, etc.)\n- Linter (`eslint`, `ruff`, `golangci-lint`, `rubocop`, etc.)\n\nIt writes an `.claude/autoimprove/config.md` file in your project root — a plain Markdown config that maps your specific tools to a **0–100 composite quality score**. You can edit this file to customise the loop for your project.\n\n### 2. Isolated experiments via git worktrees\n\nEvery experiment runs in a **separate git worktree** — its own directory, its own branch, completely isolated from your main codebase:\n\n```\nyour-project/              ← main branch (never touched during experiments)\n.claude/autoimprove/worktrees/           ← gitignored, auto-created\n  experiment-001/          ← branch: autoimprove/experiment-001\n  experiment-002/          ← branch: autoimprove/experiment-002\n  experiment-003/          ← branch: autoimprove/experiment-003\n```\n\n- ✅ Winning experiments get **squash-merged** back to main as a clean commit\n- ❌ Losing experiments have the **worktree and branch deleted** — nothing touches main\n- 🔒 Your working directory is **read-only** for the entire session\n- 🧹 All worktrees are cleaned up automatically at session end\n\nNo more `git checkout -- .` rollbacks. No risk of a broken experiment corrupting your codebase.\n\n### 3. The audit\n\nBefore diving into fixes, `/autoimprove:audit` scans your codebase and shows exactly what needs work:\n\n```\n━━━ Codebase Audit ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n📊 Current Score: 61/100\n\n  Type safety:   24/40  ██████░░░░  (16 pts to max)\n  Build:         20/20  ██████████  ✓ maxed\n  Tests:         10/30  ███░░░░░░░  (20 pts to max)\n  Lint:           7/10  ███████░░░  (3 pts to max)\n\n━━━ Fastest Path to 100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n  #  Area          Gap    Issues  Est. iterations  Efficiency\n  1  Type safety   16pts  8 errors   3 iterations   5.3 pts/iter ← best\n  2  Lint           3pts  2 warnings 1 iteration    3.0 pts/iter\n  3  Tests         20pts  0/4 covered 7 iterations  2.9 pts/iter\n\n  Total: ~11 iterations to reach 100/100\n  ⚡ Estimated token usage: ~250K tokens (rough estimate, actual usage varies)\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n```\n\nThe audit ranks areas by **efficiency** — points gained per iteration — so you fix the highest-impact issues first. It then offers to start fixing interactively, area by area, or you can run `/autoimprove:improve` directly.\n\nSetup auto-runs the audit after generating your config, so first-time users see this report immediately.\n\n### 4. The score\n\nEvery iteration, the loop measures your codebase on four axes:\n\n| Metric | Weight | What it checks |\n|---|---|---|\n| **Type / compile errors** | 40 pts | `tsc --noEmit`, `cargo check`, `go build`, `mypy`, etc. |\n| **Build success** | 20 pts | Does the project build without errors? |\n| **Test pass rate** | 30 pts | `(passing / total) × 30` |\n| **Lint errors** | 10 pts | `eslint`, `ruff`, `clippy`, `golangci-lint`, etc. |\n\nIf a metric doesn't apply (no tests yet, no linter configured), its weight is redistributed across the others.\n\n### 5. The loop\n\nEach iteration prints visible progress so you always know what's happening:\n\n```\n━━━ Iteration 1/5 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n🔬 PROPOSE: Targeting error handling in src/api/client.ts\n🔬 SNAPSHOT: Measuring BEFORE score...\n🔬 IMPLEMENT: Adding try/catch to unhandled async calls\n🔬 MEASURE: Measuring AFTER score...\n🔬 DECIDE: 85 → 89 (+4 pts) — KEPT ✅\n🔬 LOG: Recorded to .claude/autoimprove/log.md\n```\n\nSteps per iteration:\n\n1. **Creates** a fresh git worktree + branch (`autoimprove/experiment-NNN`)\n2. **Proposes** one bounded improvement with an explicit hypothesis — *\"I will fix the three unhandled promise rejections in `api/invoices.ts` because I expect it to reduce TypeScript errors and improve the type score by ~8 points\"*\n3. **Measures** the score inside the worktree (BEFORE)\n4. **Implements** the change inside the worktree (surgical — 1–3 files at most)\n5. **Measures** again (AFTER)\n6. **Keeps** — squash-merges to main and deletes the worktree — if AFTER ≥ BEFORE\n7. **Discards** — deletes the worktree and branch, main untouched — if AFTER \u003c BEFORE\n8. **Logs** the result to `.claude/autoimprove/log.md`\n\n### 6. The log\n\nAfter each iteration, `.claude/autoimprove/log.md` gets an entry like:\n\n```\n## Iteration 4 — 2026-03-11 02:14\n**Hypothesis:** Replace 3 `any` types in convex/invoices.ts with proper TypeScript interfaces\n**Branch:** autoimprove/experiment-004\n**Files changed:** convex/invoices.ts\n**Before:** 74/100 — type: 28, build: 20, tests: 18, lint: 8\n**After:**  82/100 — type: 36, build: 20, tests: 18, lint: 8\n**Decision:** KEPT ✅ (squash-merged to main, worktree deleted)\n**Reason:** Eliminated 2 TS errors by typing the invoice mutation arguments properly\n```\n\n---\n\n## Commands\n\n| Command | Description |\n|---|---|\n| `/autoimprove:setup` | Detect stack, generate config, and run initial audit |\n| `/autoimprove:audit` | Scan codebase for deficiencies and get a prioritized fix plan |\n| `/autoimprove:improve [N] [\"focus\"]` | Run N iterations of the loop (default: 5), optionally focused on a specific task |\n| `/autoimprove:continue [N] [\"focus\"]` | Resume an interrupted session — inherits remaining iterations and focus from the log |\n| `/autoimprove:status` | Show a summary of all runs from `.claude/autoimprove/log.md` |\n| `/autoimprove:upgrade` | Check for and install the latest version |\n\n---\n\n## Supported languages\n\n| Language | Type check | Build | Tests | Lint |\n|---|---|---|---|---|\n| **TypeScript / JavaScript** | `tsc --noEmit` | `npm/pnpm/yarn/bun build` | jest / vitest / mocha | eslint |\n| **Next.js / Nuxt / Remix / Astro** | `tsc --noEmit` | framework build cmd | jest / vitest | eslint |\n| **Python** | mypy / pyright | — | pytest | ruff / flake8 / pylint |\n| **Go** | `go build ./...` | `go build` | `go test ./...` | golangci-lint / `go vet` |\n| **Rust** | `cargo check` | `cargo build` | `cargo test` | `cargo clippy` |\n| **Ruby** | sorbet (if configured) | — | rspec / minitest | rubocop |\n| **Java / Kotlin** | `mvn compile` / `./gradlew build` | same | `mvn test` / `./gradlew test` | checkstyle / ktlint |\n| **C# / .NET** | `dotnet build` | `dotnet build` | `dotnet test` | `dotnet format --verify-no-changes` |\n| **PHP** | phpstan | — | phpunit | phpcs |\n| **Swift** | `swift build` | `swift build` | `swift test` | swiftlint |\n| **Any Makefile project** | `make check` / `make typecheck` | `make build` | `make test` | `make lint` |\n\nDon't see your stack? Edit `.claude/autoimprove/config.md` after setup to add your own commands.\n\n---\n\n## Customising .claude/autoimprove/config.md\n\nAfter running `/autoimprove:setup`, edit the generated `.claude/autoimprove/config.md` to tailor the loop to your project:\n\n```markdown\n## Improvement Areas\n- Check all Convex mutations have auth guards\n- Replace fetch() calls with our internal apiClient wrapper\n- Ensure every page component has a loading.tsx sibling\n\n## Files to Never Modify\n- convex/schema.ts\n- src/generated/\n- migrations/\n- .env.local\n```\n\nYou can also override any auto-detected command, change scoring weights, or add custom shell commands as additional metrics.\n\n---\n\n## Focused improvements\n\nYou can focus the loop on a specific task **directly from the command** — no config editing needed. Just pass a quoted string:\n\n```bash\n# Focus on type safety\n/autoimprove:improve 10 \"Replace all any types with proper TypeScript interfaces\"\n\n# Focus on a specific directory\n/autoimprove:improve 5 \"Fix all lint warnings in src/components/dashboard/\"\n\n# Focus on tests\n/autoimprove:improve 10 \"Add unit tests for every exported function in lib/billing/\"\n\n# Focus on a migration\n/autoimprove:improve 20 \"Replace all raw fetch() calls with the apiClient wrapper from lib/api-client.ts\"\n```\n\nWhen a focus string is provided, **every iteration targets that task**. The loop breaks it into file-by-file sub-tasks and chips away one per iteration until the focus is fully addressed or iterations run out.\n\nWithout a focus string, the loop rotates through all areas listed in your `.claude/autoimprove/config.md` as usual.\n\n### Alternative: edit the config\n\nFor recurring focus areas, you can also edit the `Improvement Areas` section in `.claude/autoimprove/config.md` directly:\n\n```markdown\n## Improvement Areas\n- Replace every `any` type with a proper TypeScript interface or type alias\n```\n\nThis is useful when you want the focus to persist across multiple sessions without re-typing it.\n\n### Tips for focused runs\n\n- **Be specific.** `\"Fix type errors\"` is vague. `\"Replace any with proper types in convex/ mutations\"` gives the loop a clear target.\n- **One concern at a time** works best. The loop makes surgical 1–3 file changes per iteration — a narrow focus means every iteration chips away at the same problem.\n- **Match iteration count to scope.** If you have ~20 files to fix, run `/autoimprove:improve 20 \"...\"` so each iteration can tackle one file.\n- **Use \"Files to Never Modify\"** in the config to protect areas you don't want touched during a focused run.\n\n---\n\n## Resuming interrupted sessions\n\nIf your session gets interrupted (Ctrl+C, context limit, crash), you can pick up where you left off:\n\n```bash\n# Resume with remaining iterations and same focus\n/autoimprove:continue\n\n# Resume but only run 3 more iterations\n/autoimprove:continue 3\n\n# Resume with a different focus\n/autoimprove:continue \"New focus area\"\n\n# Override both\n/autoimprove:continue 5 \"Fix error handling in api/\"\n```\n\nThe continue command reads `.claude/autoimprove/log.md` to find the interrupted session, inherits its settings, and picks up from the next iteration. Iteration numbering continues seamlessly (e.g., if you completed 4/10, it resumes at 5/10).\n\nIf the codebase has changed since the interrupted session (you made manual commits), autoimprove will warn you and re-measure the baseline.\n\nCheck `/autoimprove:status` to see if you have an interrupted session to resume.\n\n---\n\n## What the loop improves\n\nThe loop rotates through these universal improvement areas (and adds language-specific ones based on your stack):\n\n- **Type safety** — fix type errors, replace `any`/`interface{}`/untyped constructs\n- **Error handling** — unhandled promises, bare `catch {}`, swallowed errors\n- **Dead code** — unused imports, variables, unreachable branches\n- **Code duplication** — extract repeated logic (3+ occurrences) into shared utilities\n- **Naming \u0026 readability** — cryptic names, functions over ~50 lines\n- **Performance** — N+1 query patterns, missing memoization, unnecessary allocations\n- **Security** — hardcoded secrets, missing input validation, unguarded auth routes\n- **Tests** — add a test for the most critical untested function, fix flaky tests\n\n---\n\n## Safety\n\nThe loop is designed to be safe to run unattended:\n\n| Rule | Detail |\n|---|---|\n| 🔒 Never touches lock files | `package-lock.json`, `Cargo.lock`, `go.sum`, `Gemfile.lock`, etc. |\n| 🔒 Never touches generated files | Migrations, protobuf output, OpenAPI generated code |\n| 🔒 Never touches secrets | `.env`, `.env.local`, any secrets file |\n| 🔒 Never deploys or publishes | No `git push`, `npm publish`, `cargo publish`, etc. |\n| 🔒 Requires clean git state | Won't start if `git status` shows uncommitted changes |\n| 🔒 Experiments in isolated worktrees | Each experiment is on its own branch — main is never modified mid-session |\n| 🔒 Losers deleted, not rolled back | Failed experiments: worktree deleted, branch deleted, main untouched |\n| 🔒 Winners squash-merged | One clean commit per winning experiment — easy to review with `git log` |\n| 🔒 Pauses every 10 iterations | Cleans up worktrees, writes summary, waits for human review |\n\nYou always review and push — the loop never commits or pushes on your behalf.\n\n---\n\n## Plugin structure\n\n```\nautoimprove/\n├── .claude-plugin/\n│   ├── plugin.json          # Plugin manifest\n│   └── hooks/\n│       └── hooks.json       # SessionStart hook registration\n├── hooks/\n│   └── sessionstart.sh      # update check on startup (once per day)\n├── skills/\n│   ├── audit/\n│   │   └── SKILL.md         # Codebase deficiency scan, prioritized report, interactive fix loop\n│   ├── detect-stack/\n│   │   └── SKILL.md         # Fingerprints project, writes .claude/autoimprove/config.md\n│   ├── worktree/\n│   │   └── SKILL.md         # Creates/manages/cleans up git worktrees per experiment\n│   ├── improve-loop/\n│   │   └── SKILL.md         # Core loop: worktree → propose → implement → measure → merge/delete\n│   ├── measure/\n│   │   └── SKILL.md         # Internal scoring utility (used by audit and improve-loop)\n│   └── rollback/\n│       └── SKILL.md         # Emergency cleanup of all experiment worktrees\n└── commands/\n    ├── audit.md              # /autoimprove:audit\n    ├── continue.md           # /autoimprove:continue [N] [\"focus\"]\n    ├── setup.md              # /autoimprove:setup\n    ├── improve.md            # /autoimprove:improve [N] [\"focus\"]\n    ├── status.md             # /autoimprove:status\n    └── upgrade.md            # /autoimprove:upgrade (check for updates)\n```\n\n---\n\n## Example run\n\nHere's what a real overnight session looks like. This is from a Next.js + Convex project starting at a score of 61/100:\n\n```\n## Iteration 1 — 23:04\n**Hypothesis:** Replace 4 implicit `any` types in `convex/invoices.ts` with proper interfaces\n**Files changed:** convex/invoices.ts\n**Before:** 61/100 — type: 24, build: 20, tests: 10, lint: 7\n**After:**  69/100 — type: 32, build: 20, tests: 10, lint: 7\n**Decision:** KEPT ✅\n**Reason:** Removed 4 TS7006 implicit-any errors by typing mutation arguments\n\n## Iteration 5 — 23:37\n**Hypothesis:** Move ExpenseList to a server component — it only reads data, no interactivity\n**Branch:** autoimprove/experiment-005\n**Files changed:** components/ExpenseList.tsx\n**Before:** 71/100 — type: 32, build: 20, tests: 10, lint: 9\n**After:**  68/100 — type: 26, build: 20, tests: 10, lint: 12\n**Decision:** DISCARDED ❌ (worktree deleted, main untouched)\n**Reason:** Removing \"use client\" broke useQuery hook — must stay client component.\n\n## Iteration 8 — 00:02\n**Hypothesis:** Add unit tests for calculateTaxEstimate() — most complex function, zero coverage\n**Files changed:** lib/tax.test.ts (new)\n**Before:** 78/100 — type: 36, build: 20, tests: 10, lint: 10\n**After:**  84/100 — type: 36, build: 20, tests: 16, lint: 10\n**Decision:** KEPT ✅\n**Reason:** 2 new tests passing, covers basic and edge-case tax bracket logic\n\n━━━ Session Complete ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n📊 Score: 61 → 84 (+23 pts)\n🔁 Iterations: 10 total — 9 kept ✅, 1 discarded ❌\n📝 Merged commits:\n   • abc1234 autoimprove(001): Replace 4 implicit any types\n   • def5678 autoimprove(002): Add error boundaries\n   • ...\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n```\n\nSee [`autoimprove-log.example.md`](autoimprove-log.example.md) for the full 10-iteration session with summary table.\n\n---\n\n## Contributing\n\nPRs welcome! Especially:\n- New language profiles in `detect-stack/SKILL.md`\n- Better improvement area prompts for specific frameworks\n- Example `.claude/autoimprove/config.md` files for common stacks\n\n---\n\n## License\n\nMIT\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenmarte%2Fautoimprove","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbenmarte%2Fautoimprove","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenmarte%2Fautoimprove/lists"}