个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证slopstop is a system for preventing a coding agent, in this case Claude Code, from introducing slop and bugs into your code base. Slopstart is quite large when you using all of its features. It also is slow. A single ticket may take multiple hours... that's because its doing the checks that a senior engineer would do.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Ticket-anchored AI development, built on one idea: stop slop before it goes in, instead of
reviewing it out afterwards.
Work starts from a ticket, not a prompt. /slopstop:run takes one or more tickets and carries
each from "open" to "merged and archived" by itself — investigate, write failing tests for what
the ticket requires, prove each fails for the right reason, attack the plan adversarially,
implement without weakening the tests, run four mechanical gates, review the diff in a context
that never saw the conversation that wrote it, open the PR, merge, close the ticket, archive the
notes.查看完整 README ↗Ticket-anchored AI development, built on one idea: stop slop before it goes in, instead of reviewing it out afterwards.
Work starts from a ticket, not a prompt. /slopstop:run takes one or more tickets and carries
each from "open" to "merged and archived" by itself — investigate, write failing tests for what
the ticket requires, prove each fails for the right reason, attack the plan adversarially,
implement without weakening the tests, run four mechanical gates, review the diff in a context
that never saw the conversation that wrote it, open the PR, merge, close the ticket, archive the
notes.
It is autonomous by default. An unattended run that stalls waiting for someone is the failure mode the default exists to avoid.
During August 2026 it delivered 16,595 lines of production code and 46,123 lines of tests across five repositories, for 5.5 hours of human attention — one interruption every 2.8 hours of compute, answered in a median of four and a half minutes.
That is about 5.2x what a very generously-defined strong engineer produces, at measured concurrency of 1.45x — with both parallelism multipliers well below their ceiling.
REPORT.md is the full measurement, including the method, the arithmetic, and a section on what would make the comparison wrong.
walkthrough/ is the other half of the answer: six real defects from those runs, each caught by a different check, each quoted from the log that recorded it. Five of the six would have survived a fully green test suite.
Six, and that is the whole list. Full reference with when and why each is used: COMMANDS.md.
| Command | Use it when |
|---|---|
/slopstop:design <topic> | You have an idea and no plan. Produces a PRD. |
/slopstop:tickets <run-id> | You have a PRD and no tickets. Produces a ticket tree. |
/slopstop:run <TICKET>… | You have tickets. Produces merged pull requests. |
/slopstop:grill [plan] | You want a plan attacked before you commit to it. |
/slopstop:gh-init | First time in a GitHub repo. Run once. |
/slopstop:doc-sync | You changed design/ and want the wiki to match. |
The normal path is :design → :tickets → :run. If you already have tickets, go straight to
:run.
Everything else — eleven single-purpose workers — is an internal agent the orchestrators launch. You never invoke one, and there is no slash command for any of them.
Most "AI code review" tooling is recovery: it hunts for slop once it is already in the diff. slopstop puts the weight earlier. The work is scoped and test-anchored before the implementation exists, so there is less slop to catch.
Three properties hold whether or not anyone is watching:
The tests are written first and then frozen. The agent whose code must satisfy them cannot edit them. A gate checks this at every subsequent stage, and it checks by attribution — every change to a frozen test is traced to the commit that made it.
The mechanical gates have no permissive setting. Slop detection, a vacuity check that proves each test would have failed before the branch existed, a complexity bound, and a duplication gate that catches copy-paste clones in the diff. There is no flag that softens a gate because the change looked small. A gate that waves through the cases it exists to police is worse than no gate, because it reports clean.
The session that wrote the code never reviews it. Reviewers and adversaries run as subagents with their own context and no access to the conversation that produced the work. This has an incident behind it — a PR once recorded a clean review the authoring session had performed on its own code.
The argument at length: Prevention, Not Recovery.
Claude Desktop users: commands in this document use the Claude Code form (
/slopstop:run,/slopstop:design, etc.). If you installed via the Desktop installer, use the hyphenated form instead:/slopstop-run,/slopstop-design, and so on.
/plugin marketplace add iansmith/slopstop
/plugin install slopstop@slopstop
Commands are then namespaced: /slopstop:run, /slopstop:design, and so on.
(The repo, the marketplace it hosts, and the plugin inside it all share the name slopstop —
hence the doubled-up second command.)
Claude Desktop has no /plugin manager and cannot install from a marketplace. It does load
standalone slash commands from ~/.claude/commands/, so this installer drops them there directly.
A stopgap until Desktop ships plugin support.
curl -fsSL https://raw.githubusercontent.com/iansmith/slopstop/master/install-for-claude-desktop.sh | bash
Commands then appear un-namespaced: /slopstop-run, /slopstop-design. The installer drops every
skill, workers included, since an orchestrator has to be able to invoke them.
Pinning to a tag, uninstalling, and the MCP details are in SETUP-GUIDE.md.
slopstop is a wrapper around a ticket-system MCP and a GitHub backend. It has no API client of its own.
Required
/plugin install linear@claude-plugins-official
/plugin install atlassian@claude-plugins-official
.project-conf.toml in each project. See below.Required for the complexity gate
pip install lizard. slopstop's
complexity-check gate measures every function touched in a diff for
cyclomatic complexity — the
number of independent paths through the code. Functions above the project's configured
threshold stop the ticket. lizard is the tool that does the measuring; without it on
your PATH the gate cannot run.Required for the duplication gate
brew install ast-grep or
cargo install ast-grep. slopstop's duplication-check gate extracts AST blocks from
every changed file, normalises identifiers and literals, and flags clone groups with two
or more members. ast-grep is the tree-sitter frontend that does the extraction; without
it on your PATH the gate cannot run. Supports Python, Go, TypeScript, JavaScript, C#,
Rust, Kotlin, and Java.Required for the PR and merge stages
/plugin install github@claude-plugins-official), or the gh CLI, or
both. Two things still prefer gh: reading bot comments, and the merge itself — :run uses
gh pr merge --merge --delete-branch, and the MCP's merge tool does not delete the branch.Known limitation.
mcp__plugin_github_github__create_pull_requestreturns 403 on some repos due to the plugin's PAT scope.:runfalls back togh pr createon a 403, so withoutghinstalled PR creation will fail.
Recommended
Taskfile.yml, package.json,
Makefile, Cargo.toml, go.mod, or pyproject.toml, then threaded to every worker that
needs one.review worker. It is read
once and never waited for.Full detail, including MCP tool namespaces and troubleshooting: SETUP-GUIDE.md.
Every project needs .project-conf.toml at its repo root. Minimal versions:
GitHub Issues
system = "github"
key = "owner/repo"
prefix = "MYPREFIX"
[status_labels]
in_progress = "status:in-progress"
/slopstop:gh-init writes this for you and creates the labels. Run it once.
Linear
system = "linear"
key = "MAZ" # Linear team key
prefix = "MAZ"
JIRA
system = "jira"
key = "PLTF" # JIRA project key
prefix = "PLTF"
The plugin reads this on every invocation and only operates on tickets whose key matches the
cwd's prefix — so a session in one project can never touch another project's ticket.
Every available key, with defaults: CONFIG.md.
| QUICKSTART.md | One real bug from ticket to merged PR, in about 15 minutes. |
| COMMANDS.md | The six commands — when and why to use each. |
| REPORT.md | What it produces, measured. |
| walkthrough/ | Six defects, six different checks, quoted from the logs. |
| SETUP-GUIDE.md | Installation, MCP servers, project layout. |
| CONFIG.md | Every .project-conf.toml setting. |
| PRIVACY.md | What leaves your machine, and what does not. |
CC-BY-SA-4.0. See LICENSE.
Ian Smith — github.com/iansmith