plugins/agent-plugin-analyzer/skills/self-audit/SKILL.md
Trigger with "run self-audit", "test the analyzer", "regression test the plugin analyzer", "audit the agent-plugin-analyzer", or "verify the analyzer works correctly". Runs the analyze-plugin skill against the agent-plugin-analyzer itself and its test fixtures as a regression smoke test. Use this after making changes to the analyzer to verify nothing broke.
npx skillsauth add richfrem/agent-plugins-skills self-auditInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill requires Python 3.8+ and standard library only. No external packages needed.
To install this skill's dependencies:
pip-compile ./requirements.in
pip install -r ./requirements.txt
See ./requirements.txt for the dependency lockfile (currently empty — standard library only).
Run the analyze-plugin skill against the agent-plugin-analyzer itself and the test fixtures. This is a regression smoke test that verifies the analyzer produces consistent, expected results.
Run inventory on self (security scanning is on by default):
python ./scripts/inventory_plugin.py --path . --format json
Run scanner against test fixtures:
python ./scripts/inventory_plugin.py --path ./tests/gold-standard-plugin --format json
python ./scripts/inventory_plugin.py --path ./tests/flawed-plugin --format json
Validate deterministic scanner results:
Self-analysis scanner must confirm:
security_flags = [] (zero security findings in the analyzer itself)issues = [] (zero structural violations)Gold-standard fixture scanner must confirm:
security_flags = [] (zero security findings)issues = [] (zero structural violations)warnings = [] (zero missing components)Flawed fixture scanner must confirm:
security_flags count ≥ 4 (network calls + env access; obfuscated credential is LLM-only)issues count ≥ 1 (bash script violation)warnings count ≥ 2 (missing acceptance criteria + references)./README.md for the full expected findings manifestTo run assertions programmatically:
python ./scripts/assert_audit.py --fixture flawed --json-output <path-to-scan-output.json>
Run the full 6-phase analysis on each fixture:
tests/gold-standard-plugin/ — should score maturity ≥ L2, zero Critical, at least 2 patterns identifiedtests/flawed-plugin/ — LLM must additionally detect: missing README file tree, missing plugin manifestValidate self-analysis (full 6-phase on the analyzer itself):
Report deviations:
⚠️ SELF-AUDIT REGRESSION: [dimension] expected [X] got [Y]
✅ SELF-AUDIT PASSED: [N] scanner checks passed, [M] fixtures validated, [K] 6-phase checks passed
tools
Ingests repository files into the ChromaDB vector store. Builds or updates the vector index from a manifest or directory scan using ingest.py. Use when new files need to be indexed or the vector store is out of date. <example> user: "Index these new plugin files into the vector database" assistant: "I'll use vector-db-ingest to add them to the vector store." </example> <example> user: "The vector store is missing recent files -- update it" assistant: "I'll use vector-db-ingest to re-index the changes." </example>
data-ai
Removes stale and orphaned chunks from the ChromaDB vector store for files that have been deleted or renamed. Use after files are removed or moved to keep the vector index in sync with the filesystem. <example> user: "Clean up the vector store after I deleted some files" assistant: "I'll use vector-db-cleanup to remove orphaned chunks." </example> <example> user: "The vector database has chunks for files that no longer exist" assistant: "I'll run vector-db-cleanup to prune them." </example>
testing
Audit Vector DB coverage -- compares the live filesystem manifest against the ChromaDB index to identify coverage gaps.
development
3-Phase Knowledge Search strategy for the RLM Factory ecosystem. Auto-invoked when tasks involve finding code, documentation, or architecture context in the repository. Enforces the optimal search order: RLM Summary Scan (O(1)) -> Vector DB Semantic Search -> Grep/Exact Match. Never skip phases.