procoder README

The project's README from github.com/azrtydxb/procoder. As one markdown file: README.md.

Procoder — senior dev wisdom, automated

Make your AI coder work like a senior developer. One Go binary gives the agent a commit gate it cannot talk its way past, quality controllers that refuse to call unfinished work done, and a self-learning loop that turns every escaped bug into a permanently closed class. The agent stays in control — nothing ever touches your code behind its back.

CI Version License Agents

Quick start

/plugin marketplace add azrtydxb/procoder
/plugin install procoder
/procoder:init          # installs the tools this repository needs

That's Claude Code; Procoder also ships adapters for every agent — Cursor, Windsurf, Cline, Kilo Code, Roo, Kiro, Codex CLI, Copilot CLI, Gemini, OpenCode, and anything that reads AGENTS.md. See Every agent.

Before / after

Without Procoder, "done" is whatever the agent last said. With it, done has to survive the gate — this is a real run, verbatim, on a demo repo with an unformatted file, a conflict marker, and a staged junk file:

$ procoder check
unformatted  main.go  (run `procoder format "main.go"` for the result)
BLOCKING     notes.md:1  merge conflict marker left in the file
BLOCKING     notes.md:5  merge conflict marker left in the file
BLOCKING     .DS_Store  junk file staged — caches and garbage never belong in a commit
...
procoder gate: 0 clean, 2 unformatted, 0 unchecked, 1 out of scope, 8 hygiene finding(s) (3 blocking)

The agent gets the findings and the fixed content in the same turn; the binary never edits a file itself. And a tool that failed is never reported as clean — "unchecked" counts as failing, said out loud.

How it works

agent writes code ──► hook fires ──► binary computes findings
        ▲                                    │
        └──── agent reviews and implements ◄─┘

Two modes, one principle:

What's inside

The commit gate (procoder check) — formatting across the popular languages (Go, Python, JS/TS/HTML/CSS, PHP, Rust, C/C++, Java, Kotlin, Swift, Ruby, Dart, C#, shell — one canonical formatter each, the project's config always wins), git hygiene (conflict markers, junk, oversized files, AI-attribution lines), secrets, lint, ci and infra hygiene, and documentation health, all through one code path so check, git, and CI can never disagree.

That full set is what a repository that has adopted procoder gets — one with a .procoder/ directory, or an AGENTS.md naming procoder. In somebody else's repository only the checks that are true anywhere run (secrets, oversized files, conflict markers, junk, AI-attribution lines), and the ones that read file content see only the lines your commit wrote. procoder does not apply its conventions to a project that never asked for them, and every run says which mode it was in.

The quality chain — thinking before code, with a refusing controller at every link: a spec interview closes design gaps before anything is built (spec check blocks while sections are missing or questions open), a plan turns the spec into tasks an engineer with zero context could execute (plan check blocks placeholders), a backlog holds larger projects as milestones → epics → user stories seeded from specs and worked in scope-boxed sprints (one active sprint, explicit carry-over, closes that refuse), and a todo list tracks standalone work (todo close refuses until every acceptance criterion is checked, evidence is recorded, and the gate is clean — story closes carry the same rigor).

The self-learning loop — a pre-PR self-review catches reviewer-class findings before a PR exists; anything that still escapes becomes a lessons ledger entry whose adaptation (a linter rule, a rubric line, a pinning test) must land before the work counts as done. Downstream bot reviewers are the fallback net, not the net — and what that net catches is not lost either: procoder copilot-leak collects GitHub Copilot's auto-review findings, strips every trace of your code from them, and — only after you say yes on a terminal — files them as issues and records them as unlearned until someone writes the adaptation that closes the class.

The test domain — procoder test runs the repository's real suite with each ecosystem's canonical runner (go test, cargo test, the package.json test script, pytest, gradle/maven): PASS with counts, FAIL with the failing tests named, and NOT run, which is never the same as green. Coverage is reported where the runner measures it natively and never enforced. Set [test] policy = "block" and a green suite becomes part of "done" — the closes refuse while it is red or unverifiable.

The release controller — procoder release is the last refusal before a tag: the version in sync across every file you list, the changelog entry present, the tree clean, the gate clean, the suite green. Every failure arrives in one list, and on success the git tag command is printed for you to run. Procoder tags nothing itself.

The ten domains — security (gitleaks, semgrep, osv-scanner), best practices (lint with curated baselines), maintainability (dead code, complexity, plus deps freshness per ecosystem), performance (bench against a saved baseline — Go only, said out loud), documentation (broken refs, drift, diagrams, badges, adr decision records, this very README's completeness), clean code (formatting), testing, ci (pinned actions, timeouts), infra (Docker, Terraform, Kubernetes, Helm), and GitOps discipline.

The code index — ctags + SCIP, the agent's fast map: find, refs, callers, impact, unused, entrypoints.

Senior habits, encoded — engineering principles injected at session start (build ladder: reuse → stdlib → platform → minimum code; delegation: parallel subagents under a contract, watched and judged; ADHD/ASD-friendly formatting for complex answers — problem cards, decisions surfaced, noise filtered; all repo-overridable), deliberate corner-cuts marked and harvested as debt with revisit triggers, and an audit command that onboards any existing codebase with a triaged scorecard.

Replaces the plugins you are already running

Procoder absorbed three earlier tools, and running them alongside it means two sets of instructions competing for the same agent:

Full provenance map, including where the serena replacement stops: Influences.

Configuration

Everything Procoder owns lives in .procoder/ — plain files, made to be edited, and the repo's version always wins over the built-in default: config.toml (policies, thresholds), PRINCIPLES.md, the github templates, the docs/security rules, the review rubric, the lessons ledger. Full reference: Configuration.

The docs

The full story lives on the site, organised the way the Divio documentation system splits it: the tutorial (Getting started), the how-to guides (Ship a change), the reference (every command), and the explanation (the quality chain, how it's built).

What the reports mean

A file that could not be checked is never called clean. A task without fresh verification evidence cannot close. This README is held to a completeness check — a feature family it stops mentioning blocks the gate. No benchmark numbers appear here because none have been run; any future number will carry its method alongside it.

Where the rigor costs more than it returns, and where a check is narrower than its name, is written down rather than left to be discovered: Honest limits. What layer procoder occupies, and what it does not try to be: Where procoder sits.

The external evidence behind each premise, and the premises that have none, are separated and labelled in Research.

Implementation

One Go binary, no runtime dependencies, cross-compiled per platform into dist/ and committed with the plugin — no npm, no network at hook time, air-gapped included. go test ./... to develop; the design contract lives in the docs and supersedes anything here that drifts from it.

procoder (azrtydxb/procoder)

Searching Database…

Что это такое?Слой дисциплины для AI-агентов, пишущих код: один бинарник на Go, который даёт агенту «ворота» перед коммитом, через которые тот не сможет протолкать плохой код, контроллёры качества, отказывающиеся признавать незавершённую работу готовой, и цикл самообучения на пропущенных багах.
Procoder — это плагин внутри моего агента для кодинга или отдельный инструмент, который я запускаю сам?И то и другое: самостоятельный бинарник на Go плюс адаптеры-плагины для вашего агента. Агент сам запускает свои сервисные инструменты (check, lint, index); принудительные хуки срабатывают при каждой записи и в начале каждой сессии, и обойти их нельзя.
Как его запустить?Установите готовый бинарник на Go (кросс-компилируется под каждую платформу и коммитится вместе с плагином — без npm, ничего собирать не нужно) и подключите его к своему агенту; быстрый старт — это Claude Code, а на сайте документации есть туториал Getting started.
С какими агентами для кодинга он работает?Claude Code работает сразу «из коробки», плюс есть адаптеры для Cursor, Windsurf, Cline, Kilo Code, Roo, Kiro, Codex CLI, Copilot CLI, Gemini, OpenCode и всего, что читает AGENTS.md, — свыше 20 агентов. У бинарника нет зависимостей в рантайме.
Полный набор правил действует в любом репозитории или только в тех, где внедрён Procoder?Только там, где репозиторий его внедрил — есть каталог .procoder/ или в AGENTS.md упомянут Procoder. В остальных местах работают только универсальные проверки (секреты, слишком большие файлы, маркеры конфликтов, мусор, AI-атрибуция), причём они смотрят лишь на строки, которые добавил ваш коммит.
Для работы ему нужен доступ в сеть?Нет. Это один самодостаточный бинарник: без npm install и без сетевых запросов во время срабатывания хуков, так что полностью изолированные от сети окружения тоже поддерживаются.
Он не тронет мой код за моей спиной?Нет — бинарник только вычисляет и докладывает, пока действует агент; сам он файлы в репозитории не редактирует. Единственное исключение — procoder prune --apply, который удаляет устаревшие копии плагина из вашего кэша, и то лишь после двойного подтверждения.
Что именно проверяют «ворота» перед коммитом?Один общий код, покрывающий форматирование (один канонический форматтер на язык: Go, Python, JS/TS, PHP, Rust, C/C++, Java, Kotlin, Swift, Ruby, Dart, C#, shell), гигиену git (маркеры конфликтов, мусор, слишком большие файлы, строки AI-атрибуции), секреты, линт, гигиену CI и инфраструктуры, а также состояние документации. procoder test запускает настоящий набор тестов (go test, cargo test, pytest, gradle/maven) — «не запускал» никогда не равно «зелёный», и файл, который проверить не удалось, никогда не признаётся чистым.
Как устроена цепочка контроля качества?Сначала мышление, потом код, причём на каждом звене стоит контролёр, умеющий отказывать: спецификационное интервью закрывает пробелы в дизайне до начала разработки, план должен быть исполним инженером без всякого контекста, крупная работа живёт в бэклоге в виде майлстоунов, эпиков и пользовательских историй и разбирается в спринтах с жёсткими рамками объёма, а тудушка не закроется, пока не отмечены все критерии приёмки и «ворота» не чисты.
А если баг всё-таки просочился?Самопроверка перед PR сначала ловит находки уровня ревьюера; всё, что всё же просочилось, попадает в «журнал уроков», и его адаптация — правило линтера, пункт рубрики или закрепляющий тест — должна быть внесена, прежде чем работа считается завершённой. Кроме того, procoder copilot-leak умеет собирать находки авто-ревью GitHub Copilot, вычищать из них любые следы вашего кода и оформлять их как issues — но только после подтверждения в терминале.
У меня уже стоят superpowers, ponytail или serena — их оставить?Нет — Procoder вобрал в себя все три, а запуск их вместе означает два набора инструкций, конкурирующих за одного и того же агента. Навигация по символам из Serena стала procoder index (ctags + SCIP: поиск, ссылки, вызывающие, влияние) без MCP-сервера, который пришлось бы держать запущенным; её инструменты записи на уровне символов сознательно не переняли — бинарник сам вычисляет изменение и отдаёт вам дифф.
Creator
azrtydxb
Size
192.1 MB
Stars
211
Age
2mo
Commits · 90 Days