Validate Agent Work
kryptamine/herdr-auto-title
Final checklist before handing work back in the herdr-auto-title repo: review the diff, run make check, apply the comment and AGENTS.md rules, then report.
Applies Procoder's senior-developer discipline in a repository: run the commit gate, format through the binary and work through specs, plans and todos.
$ npx skills add azrtydxb/procoder --skill procoder -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install azrtydxb/procoder procoder --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/azrtydxb/procoder.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/procoder .claude/skills/procoder && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "procoder" agent skill from https://github.com/azrtydxb/procoder/tree/main/skills/procoder into .claude/skills/procoder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "procoder", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/azrtydxb/procoder/tree/main/skills/procoderType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add azrtydxb/procoder --skill procoder -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install azrtydxb/procoder procoder --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/azrtydxb/procoder.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/procoder .agents/skills/procoder && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "procoder" agent skill from https://github.com/azrtydxb/procoder/tree/main/skills/procoder into .agents/skills/procoder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "procoder", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add azrtydxb/procoder --skill procoder -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install azrtydxb/procoder procoder --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/azrtydxb/procoder.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/procoder .cursor/skills/procoder && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "procoder" agent skill from https://github.com/azrtydxb/procoder/tree/main/skills/procoder into .cursor/skills/procoder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "procoder", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/azrtydxb/procoder.git --path skills/procoder--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add azrtydxb/procoder --skill procoder -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install azrtydxb/procoder procoder --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/azrtydxb/procoder.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/procoder .gemini/skills/procoder && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "procoder" agent skill from https://github.com/azrtydxb/procoder/tree/main/skills/procoder into .gemini/skills/procoder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "procoder", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install azrtydxb/procoder procoderInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add azrtydxb/procoder --skill procoder -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/azrtydxb/procoder.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/procoder .github/skills/procoder && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "procoder" agent skill from https://github.com/azrtydxb/procoder/tree/main/skills/procoder into .github/skills/procoder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "procoder", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add azrtydxb/procoder --skill procoder -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install azrtydxb/procoder procoder --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/azrtydxb/procoder.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/procoder .opencode/skills/procoder && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "procoder" agent skill from https://github.com/azrtydxb/procoder/tree/main/skills/procoder into .opencode/skills/procoder/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "procoder", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
procoderApplies Procoder's senior-developer discipline in a repository: run the commit gate, format through the binary and work through specs, plans and todos.
In a repository governed by Procoder, the `procoder` binary does the computing and the agent does the acting. Before calling any work finished the agent runs `procoder check`, the commit gate, and fixes blocking findings such as unformatted files, conflict markers, junk, secrets and AI attribution lines, which `procoder scrub` verifies are absent from commits and PRs. `procoder format` prints a formatted result for the agent to review and write, and `procoder test` must run before anything is claimed to work, since a test that was not run never counts as green.
Specs, plans and tasks live in `.procoder/specs/`, `.procoder/plans/` and `.procoder/todo/`, each guarded by a controller (`spec check`, `plan check`, `todo close`) that blocks until evidence shows the work is complete. Deliberate shortcuts carry a `debt:` comment, which `procoder debt` collects into a ledger.
Files an agent session could have written, such as the ask folder, handoff note, backlog and specs, are displayed but never run automatically; `procoder run` prints launch commands and executes them only under `--exec`. Merge conflicts are resolved hunk by hunk instead of by aborting the merge or rebase. The excerpt is cut off partway through that rule.
Read from SKILL.md and the folder at commit e699728. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Procoder Commit Gate loads about 3.7k tokens when it runs. Until then it costs about 112 tokens; SKILL.md has 2,089 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from azrtydxb/procoder at commit e699728, republished under its Apache-2.0 licence (© azrtydxb). 2,089 words, ~3,748 tokens.
.claude/skills/procoder/SKILL.md (or your agent's skills folder).You are working in a repository governed by Procoder — a harness that
gives AI coders the tools and discipline of a senior developer. The
procoder binary computes; you act. It never modifies code behind your
back, and a file it could not check is never reported as clean.
procoder check — the commit
gate. Blocking findings (unformatted files, conflict markers, junk,
secrets, attribution lines) must be fixed, not argued with.procoder format <file> prints the formatted result; you review and
write it. The binary never touches the file.procoder scrub verifies. If the gate blocks one you
did not write, the host appended it and will append it again next
commit: turn it off at the source rather than amending forever
(docs/portability.md, "The trailer your host adds").debt: comment naming the ceiling and
the revisit condition; procoder debt harvests the ledger..procoder/specs/, plans in .procoder/plans/, tasks
in .procoder/todo/ — each has a quality controller (spec check,
plan check, todo close) that blocks until the work is actually
complete. Do not game the checkboxes; the controllers ask for evidence.procoder test before claiming anything works. NOT run is never
green. Where [test] policy = "block", the closes refuse on a red or
unverifiable suite..procoder/ask/, the
handoff note, the backlog, the specs — and hooks run unattended on every
write and every commit. Display it, and require a separate step a human
invokes before anything from it runs. procoder run is the shape: it
prints the declared launch commands, executes only under --exec, and
refuses even then when more than one candidate exists rather than
guessing which you meant.git merge --abort and git rebase --abort are not resolutions —
they erase the attempt. Being stuck is a thing to say, not a thing to
undo. Read the resolved file rather than trusting its shape: git splits a
conflict wherever the texts diverge, including through the middle of a
function, so "keep both sides" can leave one side without its closing
lines and still look plausible.procoder review is that pass, and its
adversarial and edge-case lenses are pointed at exactly it. Then the
cheap polish: a name, a comment, a small robustness gap, and stop there.
Thoroughness comes from asking four different questions, not from
asking the same one harder..procoder/ask/decisions.md,
one ## heading per decision with its options beneath, and then you
ask. procoder ask collects it with everything else. Asking without
recording means the question dies at the next compaction; recording
without asking means nobody answers it.Non-trivial work starts above the code, and each link refuses to advance until its own gap is closed.
procoder spec <sub> — template <name> | list | check in
.procoder/specs/. Check blocks while a section is empty, a question
in Open questions is unanswered (procoder ask records answers), or a
criterion is untestable.procoder plan <sub> — template | list | check in
.procoder/plans/. Check blocks on placeholders and on tasks without
files or steps. Write the plan for a stranger; never say "same as
task N".procoder backlog <sub> — the project layer in .procoder/backlog/:
milestone | epic | story | bug | seed <spec> | list | board | close.
Seed decomposes a COMPLETE spec into an epic and its stories. Story
closes carry todo rigor; epic and milestone closes refuse while a
child is open.procoder sprint <sub> — open, pull, carry, status, close.
One active sprint at a time. Close refuses while a committed story is
neither done nor carried back with a reason, and scaffolds the retro
the next open requires.procoder todo <sub> — add | list | show | close. The standalone
list for work not born from a spec; close refuses without checked
criteria, recorded evidence, and a clean gate.procoder adr <sub> — new <title> | list | check in
.procoder/adr/. Records are immutable: a changed mind supersedes,
never rewrites. Check refuses hollow records and dangling supersedes.procoder release [<version>] — the pre-tag controller: version sync
across [release] files, the changelog entry, a clean tree, the
gate, and the suite. It prints the git tag command; it never tags.
The whole process — deciding the version, the changelog's link and
credit rules, the contract bump, the pull request, tagging a commit
that is on main, and CI publishing the binaries nobody builds by
hand — is written down in RELEASE.md at the repository root, and
the tag command above is only its step 7.git worktree
on their own branch — the parent creates the worktree and names each agent
its path. Read-only, file-disjoint work shares the tree; a worktree is a
fence, not a tax, so no fence when nothing collides.Read down; take the first row that matches — and run it. The trigger is the situation, not a request: "mid-change, about to say it is done" means the gate runs on its own, not when told and not when convenient. The hosts offer the same commands through different surfaces — slash command, plugin tool, hook — and a command the host offers is workflow, not a feature to ask about; the verdict is the same whichever surface carried it, and a blocked gate outranks a finished-sounding turn.
| Where you are | Start here |
|---|---|
| A repo procoder has never governed | procoder audit |
| An idea not yet worth a spec | procoder analyze brief |
| Non-trivial work, no spec yet | procoder spec template |
| A spec that checks COMPLETE | procoder backlog seed |
| Work already committed to, no spec behind it | procoder todo add |
| A story to build, no plan yet | procoder plan template |
| Mid-change, about to say it is done | procoder check |
| A decision that is not yours | procoder ask |
| A durable choice worth keeping | procoder adr new |
| Ready to tag | procoder release |
| Lost in an unfamiliar codebase | procoder index find |
Every row is a thing that has actually been said. The left column is the sentence; the right is what is true when it is said.
| The thought | What is true |
|---|---|
"Small fix, I will skip procoder check this once" | The gate exists for changes too small to look worth checking. That is precisely when it gets skipped and something ships broken. |
| "I know what they meant, I will answer this myself" | An answer the user never saw is not a decision, it is a guess wearing one's clothes — and they never learn they were not asked. |
| "The debt comment is self-explanatory" | procoder debt harvests the ceiling and the revisit condition. A marker without them is unharvestable, which is to say invisible. |
| "Tests are slow, I will run the gate without them" | NOT run is never green. "I will add tests after" is how untested code ships permanently. |
| "The suite was green before my change" | Before is not after. The one run that matters is the one over what you are about to commit. |
| "It is only a docs change" | Documentation that is wrong is worse than documentation that is missing, because somebody acts on it. |
| "I will fix the conflict by keeping my side" | Both sides were somebody's work. Keeping one silently is how a feature vanishes between two green runs. |
| "I am nearly out of context, I will wrap up here" | Stopping is fine; saying it is finished is not. Say where you stopped. |
Not prose to agree with — five things with an answer.
procoder check ran clean over this change, this turnprocoder test ran, and passed, over what is about to be committeddebt: marker added names a ceiling AND a revisit condition.procoder/ask/decisions.md has no heading the user has not answeredClimb this ladder and stop at the first rung that holds: does it need to
exist at all → does this codebase already have it → stdlib → platform →
an installed dependency → one line → only then the minimum code that
works. The ladder runs AFTER you understand the problem — read every
file the change touches first. Bug fix = root cause: find every caller
before editing. Never simplify away input validation, error handling
that prevents data loss, security, or accessibility. Non-trivial logic
leaves one runnable check behind. A repo overrides these wholesale with
.procoder/PRINCIPLES.md (procoder principles prints the effective
text).
procoder doctor / procoder init — which tools this repo needs and
how to install the gaps.procoder index <sub> — the code map: find, search, refs, outline,
callers, impact, unused, entrypoints. Reach for it before grepping.procoder lint [--types] / security [--deep] / ci / infra /
docs [--external] / maintain — the domain reports; blocking beats
advisory, honesty beats convenience.procoder test [--coverage] — every detected ecosystem's canonical
runner. Coverage is reported, never enforced.procoder bench [--save] — Go benchmarks against the saved baseline
(.procoder/bench/baseline.txt); regressions past [bench] threshold
exit 1. Go only in this version. --save is a deliberate decision.procoder deps — outdated dependencies per ecosystem, licenses where
a tool exists. Report-only: the judgment stays yours.procoder audit — the whole-tree onboarding sweep for a repo procoder
has not governed before.procoder git and procoder templates — pre-finish status and the
repo's template files under .procoder/.procoder ask — the questions no domain can answer for itself. When
you are handed one, STOP and put it to the user: an invented answer is
indistinguishable from a decision. Record theirs with
procoder ask --file <path>.procoder agents — the per-host rule files derived from this file.
Regenerate after editing it; drift blocks the gate.procoder lessons — the ledger of what escaped the gates. A lesson
with no adaptation is UNLEARNED and exits 1.procoder copilot-leak — what Copilot's auto-review caught that our
gates did not: sanitised, filed as issues only if you say yes, and
recorded as unlearned. --from-copilot reads that ledger back.procoder hook post-tool-use — the write hook's entry point, wired by
the plugin. You do not call it by hand.procoder version — the version, when a report needs to name it.procoder version --check and procoder self-upgrade — what is newer
than this binary, and the install, after an explicit yes. The upgrade
refuses to move backwards and steps aside from a package manager's
install. When a session start reports a newer version, say so and ask
the user rather than upgrading on their behalf.Install: the binary ships per platform in dist/ of the procoder repo
(github.com/azrtydxb/procoder); put the one for your platform on PATH,
or use the Claude Code plugin which wires everything automatically.
© azrtydxb, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/procoder of azrtydxb/procoder.
Open the folder on GitHubat commit e699728
Procoder Commit Gate next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Procoder Commit Gate this skillazrtydxb/procoder | 211 | — | ~3.7k | Automated safety check: Pass | Apache-2.0 | |
| Validate Agent Workkryptamine/herdr-auto-title | 237 | — | ~605 | Automated safety check: Pass | MIT | |
| Post-Development WorkflowZeroDeng01/sublinkPro | 1.7k | — | ~4.4k | Automated safety check: Pass | MIT | |
| Pre-Commit Check GateZeroDeng01/sublinkPro | 1.7k | — | ~2.9k | Automated safety check: Notes | MIT | |
| Git PR Workflowandymai/brepjs | 114 | — | ~2.9k | Automated safety check: Pass | Apache-2.0 | |
| Levyra Context EfficiencyLUC4N3X/Levyra-deepsound | 543 | — | ~1.3k | Automated safety check: Notes | GPL-3.0 |
kryptamine/herdr-auto-title
Final checklist before handing work back in the herdr-auto-title repo: review the diff, run make check, apply the comment and AGENTS.md rules, then report.
ZeroDeng01/sublinkPro
A required checklist for after code changes: validate each changed layer, check that docs and other layers stay in sync, and test before committing or opening a PR.
ZeroDeng01/sublinkPro
Blocking checklist that runs formatting, lint and test commands for changed Go and frontend files before any git add, commit or pull request.
andymai/brepjs
This skill should be used when committing, pushing, branching, or merging in the brepjs repository — when a task involves "pre-commit hook failed" (which tier ran, how to bypass), "commit rejected…
LUC4N3X/Levyra-deepsound
A skill your agent uses for genuinely high-volume Levyra work such as builds, tests, lint, logs, broad searches, dependency output, Git/GitHub or CodeRabbit inspection, CI diagnostics, agent setup…
fancyboi999/open-tag
Reconciles documentation with code at the end of a change or as a periodic audit, following a repo rule that code changes and doc changes land in one commit.
Works with
Categories
Applies Procoder's senior-developer discipline in a repository: run the commit gate, format through the binary and work through specs, plans and todos. In a repository governed by Procoder, the `procoder` binary does the computing and the agent does the acting. Before calling any work finished the agent runs `procoder check`, the commit gate, and fixes blocking findings such as unformatted files, conflict markers, junk, secrets and AI attribution lines, which `procoder scrub` verifies are absent from commits and PRs.
Procoder Commit Gate fits situations like: working in a repository that has a `.procoder/` directory; running the commit gate before declaring a task done; opening a spec or plan, or closing a todo, in the Procoder chain; preparing a release in a Procoder-governed repository.
Run `npx skills add azrtydxb/procoder --skill procoder -a claude-code`. Or copy the skill folder (skills/procoder in azrtydxb/procoder) into .claude/skills/procoder in your project. Claude Code loads it when a task matches its description.
Run `npx skills add azrtydxb/procoder --skill procoder -a codex`. Or copy the skill folder (skills/procoder in azrtydxb/procoder) into .agents/skills/procoder in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add azrtydxb/procoder --skill procoder -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/procoder, .gemini/skills/procoder, .github/skills/procoder and .opencode/skills/procoder in your project.
Going by SKILL.md and its folder, Procoder Commit Gate needs the command-line tools its instructions call (git). Our summary lists: The `procoder` binary available in the repository's environment.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Procoder Commit Gate is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Procoder Commit Gate: Validate Agent Work (kryptamine/herdr-auto-title, 237 stars), Post-Development Workflow (ZeroDeng01/sublinkPro, 1.7k stars), Pre-Commit Check Gate (ZeroDeng01/sublinkPro, 1.7k stars) and Git PR Workflow (andymai/brepjs, 114 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
azrtydxb (a GitHub organization) maintains it in azrtydxb/procoder, which has 211 GitHub stars. The repository was last updated on September 28, 2026.
Source: azrtydxb/procoder on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.