Add repo-publication-auditor to Quality & Security - #316
Open
ArcticFox2029 wants to merge 1 commit into
Open
Conversation
The category has security-auditor for vulnerabilities and compliance-auditor for frameworks. Neither covers the one-time, irreversible act of making a repository public, which fails in ways a vulnerability audit does not look for. Every check in it came out of a real mistake rather than a checklist: - The history is the artifact. Auditing git status and the working tree misses a secret removed in a later commit, and a .gitignore added after the fact never untracks anything. - GitHub attributes a commit by the email in the commit object. A repository can publish an employer on every line of its contribution graph, and 665 of 673 commits carrying a work address is a different decision from 2 of 673, so the agent is told to report the count. - Push protection treats an invented credential exactly like a real one, and partner scanning forwards an AKIA string to AWS within minutes. A test fixture that ships credential shapes gets the pusher reported for a key that never existed. The agent recommends placeholders plus a seeded local generator rather than telling the owner to weaken their fixture. - A README number measured in the author's working copy can be measuring something else entirely, because tools that resolve a project root by walking up find the outer repository when the project sits inside one. The agent re-runs the README's own commands in a fresh clone. Every shell command in it was executed before being written down, against real repositories, and each found real instances. Ordered by reversibility rather than severity, and it is told to say what it did not check -- a grep that found nothing is not proof, and an owner about to do something they cannot undo is served only by an accurate report. Updates all four files CONTRIBUTING requires: both READMEs, the category plugin manifest (1.1.1 to 1.2.0, agent registered), and the matching marketplace entry. The marketplace bump is textual so the diff is the one line that changed rather than a reformat of the file.
wilyanaastuti-arch
approved these changes
Sep 1, 2026
wilyanaastuti-arch
approved these changes
Sep 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
One subagent for a gap in 04. Quality & Security: the category has
security-auditorfor vulnerabilities andcompliance-auditorfor frameworks, but nothing for the one-time, irreversible act of making a repository public.Those are different audits. A vulnerability review asks what an attacker could do to running code; this asks what a stranger can read the day the repo goes public — and what a scanner, a search engine, or a colleague's employer will notice. The second kind cannot be fixed afterwards: a force-push rewrites history on the server, but it does not un-fetch what a mirror bot cloned in the first ten minutes, and it does not recall a key a partner scanner already forwarded to a vendor.
Every check came from a real mistake, not a checklist
git statusmisses a secret removed in a later commit, and.gitignoreadded after the fact never untracks anything. A fully-ignoreddata/directory does not appear ingit statusat all, so it has to be opened rather than assumed clean.AKIA…string to AWS within minutes, and the vendor then tries to revoke a key that never existed. So the agent does not tell an owner to delete their redaction-test fixture — it recommends placeholders plus a seeded local generator, which keeps the fixture complete on disk and absent from the published tree.Verification
Every shell command in the agent was executed before being written down, against real repositories, and each found real instances — the author-email sweep, the credential-shape sweep (verified against a corpus with known planted credentials: 16 found planted, 0 after templating), the machine-path sweep, and the history enumeration.
Files updated, per CONTRIBUTING
categories/04-quality-security/repo-publication-auditor.md— the agentREADME.md— entry in the category section, alphabetical (afterqa-expert, beforesecurity-auditor)categories/04-quality-security/README.md— description, and a Quick Selection Guide row in the same positioncategories/04-quality-security/.claude-plugin/plugin.json— agent registered,1.1.1→1.2.0.claude-plugin/marketplace.json—voltagent-qa-secsynced to1.2.0The marketplace bump is a textual edit rather than a re-serialise, so the diff is the one line that changed — the file keeps
keywordsarrays on a single line andjson.dumpscannot reproduce that.tools: Read, Grep, Glob, Bash,model: inherit. Bash is needed because the git history checks are the substance of it; everything it runs is read-only.