audit-ai-config
Skill2 starsChanged 18 days agoMITView on GitHub
Read-only assessment of a repository's AI agent configuration for Claude Code, Codex, and Copilot that reports findings and never writes files. Use it when asked to audit or check a repository's agent instructions or setup, not to create or change them.
In this repository30 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- audit-repositorySkill
- change-skillSkill
- evaluate-skillSkill
- implement-changeSkill
- review-repositorySkill
- runtime-canarySkill
- shepherd-pull-requestsSkill
- audit-repositorySkill
- change-skillSkill
- evaluate-skillSkill
- implement-changeSkill
- review-repositorySkill
- runtime-canarySkill
- shepherd-pull-requestsSkill
- audit-skillSkill
- curate-agent-memorySkill
- dotnet-dependenciesSkill
- dotnet-formatSkill
- ejryan89-code-review-coreSkill
- ejryan89-skill-coreSkill
- flag-review-findingSkill
- github-activity-reportSkill
- repo-cleanupSkill
- review-documentSkill
- review-insightsSkill
- review-prsSkill
- update-coding-agent-skillsSkill
- update-pr-dashboardSkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 36
Only for a conforming repository, Read the instruction files the engine lists as effective sources for each targeted surface (the layering …
- Distinctive: line 46
Only when the user explicitly authorizes it for a trusted repository, because both commands execute repository-controlled code:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Audit AI Agent Configuration
Assess a repository's AI agent configuration across Claude Code, Codex, and Copilot and report findings by severity. The audit engine performs every deterministic check; you run it, relay its report, and add only the judgment it cannot make. Never write, modify, or delete files, and do not read the engine to redo its checks by hand. Remediation is a manual fix.
1. Run the engine
Confirm the target is a Git repository (git rev-parse --show-toplevel); if it is not, ask the user with AskUserQuestion which repository to audit. Then run, from anywhere:
{{PYTHON}} -B "${CLAUDE_SKILL_DIR}/scripts/audit_ai_config.py" --root "<repository root>"Add --json when the user wants machine-readable output, and --provenance when they ask why a finding holds or what guidance a check follows: the report then names, for each check its findings name, the published page and the passage the check rests on, or this source's decision where no page governs it. Cite that source beside the finding.
The report states its result on one line, before the SUMMARY lines; report by that line, not the exit code:
| Line | Meaning | Report as |
RESULT COMPLIANT | No ERROR findings and the authority is conforming | Compliant within statically verifiable scope |
RESULT ERRORS | One or more ERROR findings | Errors found |
RESULT INCONCLUSIVE | Authority is ambiguous, unconfigured, or an alternative source | Inconclusive; the conforming-only checks did not run |
FAILED <reason> | There is no report: the root is not a Git repository, --provenance could not read the provenance file, or the --json report cannot hold a value the audit found | The failure |
With --json there is no RESULT line: a non-conforming authority is inconclusive, otherwise exitCode 1 means errors found.
The Markdown report writes the punctuation of each path and message as character entities, such as . for ., so the repository's text cannot break its table; relay them as the characters they stand for. Relay the report's authority and scope status, every ERROR and WARNING finding, and every finding whose check is limitation, which names a documented limitation that applies to this repository. For the remaining INFO findings, relay only the engine's SUMMARY lines, which count findings per severity and INFO findings per check; give the full INFO list only when the user asks. ${CLAUDE_SKILL_DIR}/references/audit-policy.md explains what every check covers, ${CLAUDE_SKILL_DIR}/references/report-schema.md the finding format, ${CLAUDE_SKILL_DIR}/references/generated-layout.md the generated files a conforming repository holds, and ${CLAUDE_SKILL_DIR}/references/known-limitations.md the limitations in full; read them only to answer a question the report raises.
2. Review instruction content (judgment)
Only for a conforming repository, Read the instruction files the engine lists as effective sources for each targeted surface (the layering findings) and every file Glob matches for .github/instructions/**/*.instructions.md, and report as WARNING findings of your own:
- instructions that contradict each other within one surface's effective set, such as two sources prescribing different build commands or formatting rules;
- substantial overlap that duplicates
CLAUDE.mdguidance in a non-generated file, which will drift; - a missing dogfooding requirement, when the repository ships tools or rules that it should also apply to itself.
Label these as your assessment, separate from the engine's findings, and do not change the engine's result because of them.
3. Optional operational validation
Only when the user explicitly authorizes it for a trusted repository, because both commands execute repository-controlled code:
- Run the generator the engine found, in read-only mode, never
--write:{{PYTHON}} -B "<path>" --checkfrom the repository root, where<path>is thepathof the first finding whose message beginsGenerator script found:in the engine's--jsonreport, which carries it as written (the Markdown report writes punctuation as character entities). Without that finding there is no generator to run; say so. Handshake each stdio MCP server, which starts it, sends
initializeandtools/list, and stops it without invoking a tool:{{PYTHON}} -B "${CLAUDE_SKILL_DIR}/scripts/mcp_handshake.py" --root "<repository root>"The skill does not pre-approve this command, because it starts commands the repository configures, so the user approves it when it runs.
It prints
HANDSHAKE_OK,HANDSHAKE_FAILED <reason>, orSKIPPED(remote transports, or a server without a command or refused) per server, orNO_SERVERS.CONFIG_ERROR <file> <reason>means that file could not be read, so none of its servers was checked, or one server in it is malformed or would start outside the repository while the others ran: report it as a failure, never as "no servers".CONFIG_WARNING <file> <reason>names an entry that is not a server, or a.mcp.jsonor.github/mcp.jsonwithout itsmcpServerskey: report it as a warning. Pass--server <name>to start only one;FAILED no MCP server named <name>means none has that name.
Report the results as additional findings.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

