twin
Reproduce a bug in the environment where it was reported, find the cause, and verify the fix. Runs on Solari.
Install / Use
claude mcp add crypticsaiyan -- npx -y github:crypticsaiyan/twinIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of twin
twin scores 78/100 on our quality scale, 3657th of 4,583 Development & Engineering skills we index.
Its MCP Server is 7.0 KB long, well organised into 12 sections with 7 code examples: a thorough specification that gives an agent plenty to work with.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated 22 days ago, so twin is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
twin compared with similar skills
All 4 of these similar skills score higher than twin; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| twin (this skill)by crypticsaiyan | 78 | 3 | 22d ago | MCP Server |
| taste-skillby Leonxlnx | 100 | 101.2k | 2d ago | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 101.1k | 2d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 77.6k | today | CLAUDE.md |
| ai-job-searchby ai-job-search-dev | 100 | 63.7k | 2d ago | CLAUDE.md |
Frequently asked questions
- How do I install twin?
- Run
claude mcp add crypticsaiyan -- npx -y github:crypticsaiyan/twin. The install tabs above show the steps for each supported agent. - Which AI agents does twin work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is twin safe to use?
- It is MIT-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is twin still maintained?
- The repository was last updated 22 days ago, so twin is actively maintained.
Skill content
View source on GitHubtwin
Reproduce a bug in the environment where it was reported, find the difference that causes it, and check the fix there.
Try it without capturing anything
The repo holds capsules and recorded runs for real cases. Replay one (needs a Solari key):
pnpm install
export SOLARI_API_KEY=slr_live_...
pnpm dev replay examples/lru-cache-397/bad.json
capture, inspect and diff work without a key. The other commands stop at once with a clear message when it is missing.
Website and docs: twincli.vercel.app
Why
"Works on my machine" is usually not a code bug. The commit is the same. What differs is a runtime version, a dependency the lockfile resolved differently, an environment variable, the time zone. The maintainer gets a pasted list of versions nobody can run, and the issue sits at "cannot reproduce".
twin makes the reporter's environment runnable:
- The reporter runs the failing command through
twin capture. twin writes a small scrubbed file, a capsule, to attach to the issue. - The maintainer runs
twin replay. twin rebuilds that environment on a clean Solari sandbox and runs the command three times. twin bisectfinds the smallest set of differences between a failing and a passing capsule that turns the pass into a fail.twin verifyapplies a fix in the reporter's environment, so "fixed" means fixed where the bug happened.
Install
Node 22 or newer.
npm install -g @crypticsaiyan/twincli
Or prefix any command with npx @crypticsaiyan/twincli.
Quickstart
Reporter, in the project where the command fails. No account needed, nothing is uploaded:
twin capture -- npm test
twin runs the command as usual, shows what it recorded, and writes twin-capsule.json after you confirm. Attach the file to the issue.
Maintainer, with a Solari key:
export SOLARI_API_KEY=slr_live_...
twin replay twin-capsule.json
twin bisect twin-capsule.json --good mine.json
twin verify twin-capsule.json --patch fix.patch
replay ends in REPRODUCED when every attempt fails the way the capsule recorded. Add --keep to leave the machine running, then twin shell for a terminal on it or twin shell --web for a browser terminal you can share with the reporter.
Examples
Each example has the capsules, the recorded Solari runs and a write-up in examples/.
| Case | Cause | Replay | Bisect | Verify |
|---|---|---|---|---|
| lru-cache 11.3.0, through DOMPurify | one broken package among 32 that differ from the lockfile | REPRODUCED 28 s | lru-cache@11.3.0 245 s | FIXED |
| apache/echarts#21538 | TZ=America/New_York | REPRODUCED 72 s | 69 s | FIXED 71 s |
| date-fns#2068 | TZ=America/New_York | REPRODUCED | found | FIXED |
| dayjs localizedFormat test, found in the wild | TZ=America/New_York | REPRODUCED | found | FIXED |
| click test_custom_parser, found in the wild | COLUMNS=40 | REPRODUCED | found | FIXED |
Commands
| Command | What it does |
|---|---|
| twin capture -- <cmd> | Run <cmd>, record its environment, write a capsule after review |
| twin inspect <capsule> | Summarize a capsule |
| twin diff <a> <b> | List every environment difference between two capsules |
| twin replay <capsule> | Rebuild the environment on Solari and run the command three times |
| twin bisect <bad> --good <good> | Find the smallest failing set of differences |
| twin verify <capsule> --patch <file> | Check a fix in the reporter's environment |
| twin shell [machine] [--web] | Terminal on a kept machine, or a shareable browser terminal |
| twin list | Machines twin has running |
| twin stop [machine] | Stop one machine, or all of them |
| twin mcp | Serve the commands to coding agents over MCP |
Every command has --help. Capsules can be paths or https URLs, such as issue attachments. replay, bisect and verify take --json. Full reference: twincli.vercel.app/reference/cli.
Coding agents
twin mcp gives an agent the reporter's machine: replay the failure, run commands there, write a file, verify a diff on a fresh machine, release the machine.
claude mcp add twin -e SOLARI_API_KEY=slr_live_... -- npx -y @crypticsaiyan/twincli mcp
The GitHub Action runs twin verify on a pull request that says Fixes #123 when issue 123 has a capsule attached, and fails the check unless the verdict is FIXED:
on: pull_request
permissions: { contents: read, issues: read, pull-requests: write }
jobs:
verify:
runs-on: ubuntu-latest
steps:
- uses: crypticsaiyan/twin@main
with:
solari-api-key: ${{ secrets.SOLARI_API_KEY }}
What a capsule records
OS and libc, runtimes, package managers and lockfile hashes, installed package versions, git remote, commit and git diff HEAD, time zone and locale, and the exit status with a fingerprint of the failure.
Environment variables are recorded by name only. Values are kept for a short allowlist (NODE_ENV, TZ, LANG, CI, and a few more) or for names you pass to --include-env. The output tail, diff and arguments pass through secret rules, home paths become ~, and untracked files are recorded by name only. twin shows a summary and lets you read the full JSON before anything is written. Redaction is pattern based, so read the capsule before posting it publicly. Details: privacy.
How it uses Solari
- One clean Linux sandbox per run, labelled so
twin listandtwin stopcan find it. - Setup and the command stream through
commands.startwith twin's own timeout. pty.createfortwin shell, andpreviewUrlin front of a password-protected web terminal for--web.sandboxes.connectto re-attach from any computer, and to give an agent a kept machine.- Every
kill()is confirmed withget()before it counts, and Ctrl-C releases live machines before exiting.
A replay costs a fraction of a cent. Platform behavior measured while building twin is in DESIGN.md.
Development
pnpm install
pnpm check # typecheck, lint and tests
pnpm dev capture -- npm test # run from source
pnpm build # compile to dist/
pnpm e2e:docker <capsule.json> # replay in a local Docker container, no key needed
Every Solari call goes through a small Backend interface, so the unit tests run against an in-memory fake. The website source is in site/.
License
MIT
Related Skills
taste-skill
101.2kAgent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
Agent-Reach
101.1kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
77.6kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ai-job-search
63.7kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
