{"_id":"sphinx-understand","_rev":"6-d78575806bef38b542bf265a1c595e5b","name":"sphinx-understand","dist-tags":{"latest":"0.1.4"},"versions":{"0.0.0-stage":{"name":"sphinx-understand","version":"0.0.0-stage","_id":"sphinx-understand@0.0.0-stage","stub":true,"maintainers":[{"name":"critique-ai","email":"parth@critique-labs.ai"}],"dist":{"shasum":"1b52746048851fb08c1c9ad1449ac350bd856197","tarball":"https://registry.npmjs.org/sphinx-understand/-/sphinx-understand-0.0.0-stage.tgz","fileCount":2,"integrity":"sha512-ACiykNYXKDgLf42+SLf1Kgl4p5YYo9RoR15TWF/4Mt860aLtxaWzZSESCcxnwnedoXD+WNVJ79b44o3gSLZyyQ==","signatures":[{"sig":"MEUCIQDPc6Law+13fbw5euIqu/KBhuWRjCCkFBm6TLww+kQEIwIgEv1nYESzcKjXvw3DG4nJzv7/Wc2ack8bd2i3ZbQ03zw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":339},"_npmUser":{"name":"critique-ai","email":"parth@critique-labs.ai"},"description":"Temporary package placeholder for staged publishing","directories":{}},"0.1.0":{"name":"sphinx-understand","version":"0.1.0","keywords":["git","hooks","codex","claude-code","learning","code-review"],"license":"MIT","_id":"sphinx-understand@0.1.0","maintainers":[{"name":"critique-ai","email":"parth@critique-labs.ai"}],"homepage":"https://github.com/parthh01/sphinx#readme","bugs":{"url":"https://github.com/parthh01/sphinx/issues"},"bin":{"sphinx":"bin/sphinx.js"},"dist":{"shasum":"c5c2ef16546fa8e268c940aea8d3284b4ff553f3","tarball":"https://registry.npmjs.org/sphinx-understand/-/sphinx-understand-0.1.0.tgz","fileCount":54,"integrity":"sha512-gxEUKxUA2e01E0W90xeWlhaIppL1TXu7oAOjhZE4O7v+RDoYHSq6nvdPRLzlsjO9JASh3VZiPrmDXAxOARgUBQ==","signatures":[{"sig":"MEUCIBYt+Ca/oG0TCuMUd8Ith7RXylmQ/o+TU8Dmymv6p8c6AiEAonqfmonZmoch2/V2S+mneoo6B3h7LTaRtebXkXg65Bc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCTQ+S8v1envKYV47LRJQolktc2BLi5/jupKuxB94TN4QIhAKYIKWr0kfo7m8uDL83PPNNrrtgWDOAKqOYNgPYQFs8o","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":647733},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"818748c092876a9fc7997d8c8a8229f4e7519647","scripts":{"eval":"node eval/run.js","test":"node scripts/run-suite.mjs","check":"node --check bin/sphinx.js && node scripts/run-suite.mjs","start":"node bin/sphinx.js"},"_npmUser":{"name":"critique-ai","email":"parth@critique-labs.ai"},"repository":{"url":"git+https://github.com/parthh01/sphinx.git","type":"git"},"_npmVersion":"11.5.1","description":"Outsource your thinking, not your understanding. A comprehension checkpoint for agent-assisted development.","directories":{},"_nodeVersion":"24.6.0","dependencies":{"@earendil-works/pi-ai":"1.2.0","@earendil-works/pi-coding-agent":"1.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sphinx-understand_0.1.0_1792188873327_0.5688293185250539","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"sphinx-understand","version":"0.1.1","keywords":["git","hooks","codex","claude-code","learning","code-review"],"license":"MIT","_id":"sphinx-understand@0.1.1","maintainers":[{"name":"critique-ai","email":"parth@critique-labs.ai"}],"homepage":"https://github.com/parthh01/sphinx#readme","bugs":{"url":"https://github.com/parthh01/sphinx/issues"},"bin":{"sphinx":"bin/sphinx.js"},"dist":{"shasum":"6aa96416a89b07bc0fae3ddc625570912023b62c","tarball":"https://registry.npmjs.org/sphinx-understand/-/sphinx-understand-0.1.1.tgz","fileCount":61,"integrity":"sha512-7/N9AbNVQDeg90QMdi3nIqHKaGy29dGo5b9nerNcuavIBAJx79yY7vcE4YWaFz877eMOSRLIU3Jdy17o+MxAXA==","signatures":[{"sig":"MEYCIQDpaEQRV0OZvzCnlEk/0bNsv7j0DAkNAa7H/dTe5Xs+bQIhAMhuLKaoXXgY9GQdvB7BQNop/I3zNLNdxRLrY+3oizhg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAeTHRCXXH+4VN/IR1udEeXf7jgMVGyosZe98zAENfKnAiEAymc3LmrlYDHQ9tbK/22AOvcdoG7Hao6tvY5IwLTmre0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":728042},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"c7c6e25c608c519de3383c2dd3bcf9b06a4b600b","scripts":{"eval":"node eval/run.js","test":"node scripts/run-suite.mjs","check":"node --check bin/sphinx.js && node scripts/run-suite.mjs","start":"node bin/sphinx.js"},"_npmUser":{"name":"critique-ai","email":"parth@critique-labs.ai"},"repository":{"url":"git+https://github.com/parthh01/sphinx.git","type":"git"},"_npmVersion":"11.5.1","description":"Outsource your thinking, not your understanding. A comprehension checkpoint for agent-assisted development.","directories":{},"_nodeVersion":"24.6.0","dependencies":{"@earendil-works/pi-ai":"1.2.0","@earendil-works/pi-coding-agent":"1.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sphinx-understand_0.1.1_1792266590157_0.38258819080945794","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"sphinx-understand","version":"0.1.2","keywords":["git","hooks","codex","claude-code","learning","code-review"],"license":"MIT","_id":"sphinx-understand@0.1.2","maintainers":[{"name":"critique-ai","email":"parth@critique-labs.ai"}],"homepage":"https://github.com/parthh01/sphinx#readme","bugs":{"url":"https://github.com/parthh01/sphinx/issues"},"bin":{"sphinx":"bin/sphinx.js"},"dist":{"shasum":"7e5086b2a884c106fedfb784d41eb5bed1858e58","tarball":"https://registry.npmjs.org/sphinx-understand/-/sphinx-understand-0.1.2.tgz","fileCount":62,"integrity":"sha512-IpVKMVEan7deYjIeozpjxVZu0ysg79PjdwsnDr7Y4uF5dTLcUorUegZZJFrGUlllQ3en22YsYmMcIIP5fZWnkg==","signatures":[{"sig":"MEUCIQDiy4x6O7s++Jb8QxDVWYxZWPbi+fWEEWON4tnkWO/KBAIgb2xwIiaEgYDnXwP5XayfuRYv1sqACAhD314kmKioOYo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDOYRMq9k4lMKDYM01SjrJKZOumWfH7w0OkKBZ6Hj9sjQIgYhQzhgCmgRZmy5x/umjIe3IMqejBs8mh9cSoMxtNQv8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":729486},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"5a707188d2bd6bc627c273624b7d30d6865805a6","scripts":{"eval":"node eval/run.js","test":"node scripts/run-suite.mjs","check":"node --check bin/sphinx.js && node scripts/run-suite.mjs","start":"node bin/sphinx.js","postinstall":"node scripts/postinstall.js"},"_npmUser":{"name":"critique-ai","email":"parth@critique-labs.ai"},"repository":{"url":"git+https://github.com/parthh01/sphinx.git","type":"git"},"_npmVersion":"11.5.1","description":"Outsource your thinking, not your understanding. A comprehension checkpoint for agent-assisted development.","directories":{},"_nodeVersion":"24.6.0","dependencies":{"@earendil-works/pi-ai":"1.2.0","@earendil-works/pi-coding-agent":"1.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sphinx-understand_0.1.2_1792266904010_0.9425679198735963","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"sphinx-understand","version":"0.1.3","keywords":["git","hooks","codex","claude-code","learning","code-review"],"license":"MIT","_id":"sphinx-understand@0.1.3","maintainers":[{"name":"critique-ai","email":"parth@critique-labs.ai"}],"homepage":"https://github.com/parthh01/sphinx#readme","bugs":{"url":"https://github.com/parthh01/sphinx/issues"},"bin":{"sphinx":"bin/sphinx.js"},"dist":{"shasum":"2e4b72f980a2ade97cd2e7e7024437a257f70e76","tarball":"https://registry.npmjs.org/sphinx-understand/-/sphinx-understand-0.1.3.tgz","fileCount":62,"integrity":"sha512-aCwhSxunGfgv4o5zo0Ex1hUwwmofD7SW5TnEFB7QhFNb0nRmJYoYJH6HTVW9IIV+gTWdpStPq0B5mKDhVMLIvg==","signatures":[{"sig":"MEYCIQD7VaYiHYS8LE53Cy5s+CljPkl6+dlMPXZm5wN/ERihYwIhANWcz/dFYC0swTyZs2VrR5TwrTOECWv4tXrrY2jJF1ZF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFp2yxJd+S7ygwboH2pv48gcH3esZLvnWufVkZv7DYIiAiA94Tuj8msCowrxqV1LNmZHMMdigJM5tPmdBi8kCID/hA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":730399},"type":"module","engines":{"node":">=22.19.0"},"gitHead":"8d56e92ff1770b8fc475d60e8ea0adb90bddaf78","scripts":{"eval":"node eval/run.js","test":"node scripts/run-suite.mjs","check":"node --check bin/sphinx.js && node scripts/run-suite.mjs","start":"node bin/sphinx.js","postinstall":"node scripts/postinstall.js"},"_npmUser":{"name":"critique-ai","email":"parth@critique-labs.ai"},"repository":{"url":"git+https://github.com/parthh01/sphinx.git","type":"git"},"_npmVersion":"11.5.1","description":"Outsource your thinking, not your understanding. A comprehension checkpoint for agent-assisted development.","directories":{},"_nodeVersion":"24.6.0","dependencies":{"@earendil-works/pi-ai":"1.2.0","@earendil-works/pi-coding-agent":"1.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sphinx-understand_0.1.3_1792285775844_0.47537047800661303","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"_id":"sphinx-understand@0.1.4","bin":{"sphinx":"bin/sphinx.js"},"bugs":{"url":"https://github.com/parthh01/sphinx/issues"},"dist":{"shasum":"ed0c9c3f0e0c070d6fb469e624fad73303f7c8d8","tarball":"https://registry.npmjs.org/sphinx-understand/-/sphinx-understand-0.1.4.tgz","fileCount":62,"integrity":"sha512-KTHniPG0Uhsp6roT5WcVrNHWFmWODTeHnneIKYP9qP4l/X5X3I6kUnVGooQWDsLx5Qbg7BM9FWrmcLouhKjAWA==","signatures":[{"sig":"MEYCIQDPg140oAw9Vj3LkNSYx1qi54/aTYgmXaheM3Vub+ClkwIhAPoWlKxrPW8BoqowCSELKsOOgj2YlCPhl1f7PbPJP5wz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDmUyBJrLs40aonFmLXmgFhMsBoLyj9KLH/A76o0Ud59wIhAOUYsdAInuzZuLNl0y6zyJWKt1AAAoy9dHghlTvc2GZA"}],"unpackedSize":733293},"name":"sphinx-understand","type":"module","engines":{"node":">=22.19.0"},"gitHead":"0bbfb745265d44778c9b68912c2ae9cc284e88f4","license":"MIT","scripts":{"eval":"node eval/run.js","test":"node scripts/run-suite.mjs","check":"node --check bin/sphinx.js && node scripts/run-suite.mjs","start":"node bin/sphinx.js","postinstall":"node scripts/postinstall.js"},"version":"0.1.4","_npmUser":{"name":"critique-ai","email":"parth@critique-labs.ai"},"homepage":"https://github.com/parthh01/sphinx#readme","keywords":["git","hooks","codex","claude-code","learning","code-review"],"repository":{"url":"git+https://github.com/parthh01/sphinx.git","type":"git"},"_npmVersion":"11.5.1","description":"Outsource your thinking, not your understanding. A comprehension checkpoint for agent-assisted development.","directories":{},"maintainers":[{"name":"critique-ai","email":"parth@critique-labs.ai"}],"_nodeVersion":"24.6.0","dependencies":{"@earendil-works/pi-ai":"1.2.0","@earendil-works/pi-coding-agent":"1.2.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sphinx-understand_0.1.4_1792297914649_0.06708408471416716"}}},"time":{"created":"2026-10-16T22:12:25.245Z","modified":"2026-10-18T04:31:54.937Z","0.0.0-stage":"2026-10-16T22:12:25.245Z","0.1.0":"2026-10-16T22:14:33.624Z","0.1.1":"2026-10-17T19:49:50.234Z","0.1.2":"2026-10-17T19:55:04.113Z","0.1.3":"2026-10-18T01:09:35.937Z","0.1.4":"2026-10-18T04:31:54.759Z"},"bugs":{"url":"https://github.com/parthh01/sphinx/issues"},"license":"MIT","homepage":"https://github.com/parthh01/sphinx#readme","keywords":["git","hooks","codex","claude-code","learning","code-review"],"repository":{"url":"git+https://github.com/parthh01/sphinx.git","type":"git"},"description":"Outsource your thinking, not your understanding. A comprehension checkpoint for agent-assisted development.","maintainers":[{"name":"critique-ai","email":"parth@critique-labs.ai"}],"readme":"<p align=\"center\"><img src=\"docs/logo.svg\" width=\"96\" alt=\"Sphinx logo\"></p>\n\n<h1 align=\"center\">Sphinx</h1>\n\n<p align=\"center\"><em>Outsource your thinking, not your understanding.</em></p>\n\nSphinx adds an understanding check to agent-assisted development. When you push to a protected branch, Git waits while Sphinx asks you to predict what your change will do. If you miss something, it explains and gives you a new scenario to try. Once you pass, the same push continues. This works whether you or a coding agent ran `git push`.\n\nThe questions come from a separate reviewer model. It reads the committed change through read-only Git tools and does not see the conversation that produced the code.\n\n## What a check looks like\n\nThis is an illustrative exchange for a change that adds a background job queue:\n\n> **Question.** The worker commits the operation but crashes before acknowledging the job. After redelivery, can the operation happen twice? Give a short reason.\n>\n> **Your answer.** No, the job is marked done when the operation commits.\n>\n> **Sphinx.** Not quite. The job is only marked done by the acknowledgement, which happens after the commit. A crash between the two leaves it unacknowledged, so the queue delivers it again and the operation runs a second time.\n>\n> **New scenario.** A worker stalls past the visibility timeout, so a second worker receives the same job. Both commit before either acknowledges. What stops a duplicate, if anything?\n\nQuestions cover behavior, failure modes, and invariants rather than file names or function names. The check is open-book: you can read the code, or ask your agent to show it to you, while you answer.\n\n## Before you install\n\n- **Requirements.** Node.js 22.19 or newer, Git, and macOS, Linux, or WSL. Native Windows is not supported yet.\n- **It applies to every repository on this machine.** `sphinx install` sets your global Git `core.hooksPath`. Your existing hooks still run first. Right after install, pushes to `main` or `master` in any repository are checked. `sphinx init` lets you adjust that for each repository.\n- **It blocks Git.** A matching push waits until you pass, pause, or skip, for up to 25 minutes. Your coding agent's shell may time out sooner.\n- **You need a reviewer model account.** This can be a signed-in Codex or Claude Code CLI, which uses that plan's allowance. It can also be an OpenRouter API key, which bills separately and is required even for free models, or any [OpenAI-compatible endpoint](docs/configuration.md#openai-compatible-endpoints). Sphinx has no account or hosted service of its own.\n- **Code leaves your machine.** The reviewer provider receives the changed code and related files from the commit, your answers, and `.sphinxcontext.md`. Ignored files are never read, and `.env` files, private keys, and common credential files are excluded by default. Add your own sensitive paths to `.sphinxignore` before your first check. Ignore rules match file paths, so they will not catch a secret pasted into ordinary source.\n- **There is no default cap on model calls.** A typical check makes about 5 to 8 requests, plus about one per answer. You can [set a cap](docs/configuration.md#model-calls-tokens-and-limits), and you should set spending limits with paid providers.\n- **This is practice, not a security gate.** Anyone with local access, including a coding agent, can bypass hooks or get outside help. Passing does not prove who wrote the code or that you understood it unaided. The examiner is an LLM and can be wrong.\n\n## Quick start\n\n### 1. Install (required)\n\n```sh\nnpm install -g sphinx-understand\nsphinx install\n```\n\nGuided setup asks which coding agents you use and which reviewer to use. It suggests Haiku through Claude Code or GPT-6 Luna through Codex. If you choose OpenRouter, it asks for an API key. It then offers the recommended checkpoints (pushes to `main` or `master` at standard depth) or **Customize** to pick events, branches, remotes, and depth. To install without prompts:\n\n```sh\nsphinx install --yes --preset claude-economy --agents claude\n```\n\nYou should see:\n\n```text\n✓ Git hooks installed for this user. Existing hooks are chained.\n✓ Claude Code native questionnaire hooks and Sphinx MCP server installed.\n```\n\nUse `--preset codex-economy` for Codex, or `--agents none` if you don't use a coding agent. Other presets, OpenRouter, OpenAI-compatible endpoints, and custom routes are covered in [configuration](docs/configuration.md#reviewer-models).\n\n### 2. Load Sphinx in your coding agent (required if you use one)\n\nGuided setup opens your selected agents in fresh sessions. Then:\n\n- **Codex:** open `/hooks` and trust the Sphinx hooks. Sphinx cannot do or verify this for you.\n- **Claude Code:** start a new session. `/mcp` should show `sphinx` connected.\n- **Pi, Cursor, OpenCode:** see [per-client notes](docs/integrations.md#per-client-notes).\n\nIf you skip this step, the Git checkpoint still works. However, your agent won't know it should wait for a blocked push, and the fallback forms used when the browser can't open won't be available.\n\n### 3. Set up a repository (required)\n\n```sh\ncd your-repo\nsphinx init\n```\n\nThis asks which branches and events to check and how deep the questions should go. Then it creates three files without overwriting existing ones:\n\n- `.sphinxconfig`: the repository's policy.\n- `.sphinxignore`: paths that are never read. **Edit this now** if the repository has private or generated files.\n- `.sphinxcontext.md`: a short description of what the project does, which every reviewer request receives. Leave out secrets.\n\nTo set it up without prompts:\n\n```sh\nsphinx init --yes --branches main\n```\n\nCommit the three files to share the policy with collaborators.\n\n### 4. Check the setup (recommended)\n\n```sh\nsphinx doctor\n```\n\nIt should end with `✓ Configured integrations are in place.` and exit with status 0. If not, it says what needs attention, such as a repository with its own hooks directory. Fix that with `sphinx install --repo`.\n\n### 5. Push and pass your first check\n\n```sh\ngit push origin main\n```\n\nGit prints the questionnaire address and waits:\n\n```text\nSphinx: understanding check needed for refs/heads/main (medium change).\nSphinx: Git is waiting for your answers in the local Sphinx questionnaire. It will continue automatically after you pass. Do not start another copy of this Git operation.\nSphinx questionnaire: http://127.0.0.1:56114/fSdZM7yg…\nSphinx: questionnaire opened in a background browser tab. Your coding window stays in place.\n```\n\nOn macOS, the page opens in a background browser tab. On Linux, WSL, and over SSH, Git prints `open the local URL above to answer` instead, so open the printed address yourself. From a remote session, forward the same port and open the URL unchanged, or run `sphinx check`; see [remote machines](docs/integrations.md#remote-machines-ssh-and-ci). Questions can take a moment while the reviewer reads the change, and the page shows its progress as it works. Beside each question, the page shows the checkpoint's changed files, lines added and removed, a browsable diff, and the code locations the reviewer read for that question. Answer each question with a prediction and a short reason. When you pass:\n\n```text\nSphinx: understanding check complete. Continuing this Git operation.\nTo github.com:you/your-repo.git\n * [new branch]      main -> main\n```\n\nPushing the same change again does not ask again. A pass lasts 24 hours, unless the code, destination, or policy changes.\n\n## During and after a check\n\n- **Wrong answer.** You get an explanation and a new scenario about the same concept. Disputes and errors never count as passing.\n- **Explain this.** Shows the concept and asks you a new question.\n- **Dispute question.** Use this if a question's premise is wrong or ambiguous. A bad question must be corrected before that concept can pass.\n- **Pause check.** Saves your progress and stops the push. Run the same `git push` later to pick up where you left off.\n- **Closing the tab** doesn't stop anything. Git keeps waiting, and the same address works until the 25-minute deadline.\n- **Skip this time.** Lets the push through immediately, even while the review is still running. Skips never count as passing.\n- **`sphinx yolo`** turns checks off for the current repository, or globally when run outside one. Run it again to turn checks back on. A repository's own setting wins over the global one, so turning yolo off inside a repository keeps checks on there even while global yolo is on. `--reason \"prod hotfix\"` is optional.\n- **`sphinx check`** runs the same check in your terminal instead of the browser.\n\nEvery skip and yolo toggle is logged with its reason, and `sphinx status` lists recent ones. If Git exited before you finished, for example because your agent's shell timed out, run the push once more. Never start a second copy while one is still waiting. For more cases, see [troubleshooting](docs/integrations.md#troubleshooting).\n\nYour answers go straight from the page to Sphinx. Your coding agent sees only the check's status, progress, and usage, never your answers.\n\n## Limits and cost\n\nQuestion count depends on the size of the change and the depth you choose. Small changes get one question, and large ones get up to three at the default depth. After commits, Sphinx prepares questions in the background, so they are often ready by the time you push. Calls, tokens, and (when reported) cost appear in the questionnaire.\n\n```sh\nsphinx config --max-model-calls 30        # optional cap per check (1–100)\nsphinx config --preset openrouter-value --allow-paid\n```\n\nContext size, output tokens, and review time are always capped. Provider failures never retry automatically. For routing thresholds, model tables, pricing, and every limit, see [configuration and cost](docs/configuration.md).\n\nVersion 0.1 checks local commits and pushes only. It does not cover web merges, CI-required checks, or deployments. It cannot read binary file contents, and it tests understanding rather than auditing the code. The [evaluation results](eval/RESULTS.md) record question quality, grading errors, and costs on synthetic changes. They do not certify arbitrary repositories.\n\n## Commands\n\n| Command | Use it to |\n| --- | --- |\n| `install` | Set up machine-wide Git hooks and agent integrations |\n| `init` | Create this repository's policy, ignore, and context files |\n| `doctor` | Check hook and integration coverage |\n| `status` | Show this repository's policy, pending checks, and recent skips |\n| `check` | Start or resume a check in the terminal (`--staged` for commits) |\n| `pending` | List unfinished checks |\n| `yolo` | Toggle skipping checks |\n| `config` | Change reviewer models and limits |\n| `auth` | Save your OpenRouter key or an OpenAI-compatible endpoint |\n| `prepare` | Schedule background preparation (`--retry` after a failure) |\n| `activate` | Open configured coding agents without reinstalling |\n| `uninstall` | Remove Sphinx integrations, keeping unrelated settings |\n\nEach command explains itself with `sphinx <command> --help`. `--json` gives machine-readable output, and `NO_COLOR=1` turns off color.\n\n## Reference\n\n- [Configuration and cost](docs/configuration.md): reviewer models, OpenRouter, pricing, routing, limits, `.sphinxconfig`, `.sphinxignore`, project context, and background preparation.\n- [Integrations and troubleshooting](docs/integrations.md): Codex, Claude Code, Pi, Cursor, OpenCode, fallback forms, SSH, existing hooks, the JSON protocol, and uninstalling.\n- [Architecture](docs/architecture.md): the checkpoint sequence, the reviewer and its evidence, compaction, and state.\n- [Evaluation](eval/README.md) and [results](eval/RESULTS.md).\n\n## Development\n\n```sh\nnpm ci\nnpm test\nnpm run eval -- --out /tmp/sphinx-eval.json\nnode bin/sphinx.js --help\nnpm install -g .   # use this checkout as the installed sphinx\n```\n\nTests use Node's test runner, real temporary Git repositories, isolated homes, and fixture model backends. The suite makes no live model requests. Never run installer tests against a real home directory or Git configuration. See [CONTRIBUTING.md](CONTRIBUTING.md). MIT licensed.\n","readmeFilename":"README.md"}