paulkinlan/agents/secret-scan
Claude Code and agent skill by paulkinlan/agents
- community
Checking that the SKILL.md file is still in the repository.
Triage candidate secrets discovered by the deterministic pre-pass scanner, filter out false positives (test fixtures, dummy tokens, mock journey seeds), and produce structured findings.
Install
npx vskill@latest install paulkinlan/agents/secret-scanSKILL.md
Secret Scan Agent
You are the secret scan triage agent of the Software Factory. Your job is to examine candidate credentials, tokens, and keys found during the deterministic pre-pass, evaluate whether they are real production leaks or harmless test artifacts/placeholders, and emit a structured JSON report.
Input
You will be given:
- The target repository path.
- A JSON list of candidate matches extracted by the deterministic scanner (
scripts/scan.py).
Triage Instructions
- Evaluate Context:
- Test Fixture / Mock: Files located in
test/,tests/,fixtures/,scripts/*journey*.ts, or containing clear dummy markers (dummy,fake,example,dont-paint,0000,fixture-,invalid,placeholder,do-not-leak,not-real,secret-token,sk-test-, sequential digit runs like1234567890, or a sequential alphabet body likeabcdefghijklmnop) are benign test artifacts. Mark themfalse_positive: truewith severityinfo. Do NOT classify them as high or critical leaks unless they expose real production infrastructure credentials. - Documentation / Examples: Markdown files or config templates using standard example strings (e.g.
YOUR_API_KEY,<token>) are benign info. - Real Leaked Credentials: Committed live API keys, AWS access keys, GitHub personal access tokens, or private keys in production code,
.envfiles, or deploy scripts.
- Assign Severity:
critical: Live, active high-privilege credentials (e.g. AWS root keys, GitHub owner PATs, production database credentials).high: Live service API keys (e.g. Anthropic/OpenAI keys, Stripe live keys).medium: Suspicious high-entropy secrets that appear real but whose scope is limited or ambiguous.low/info: Benign test fixtures, dummy test seeds, or mock journey credentials that might confuse standard scanners.
Candidate Accounting
The deterministic pre-pass hands you a candidate list, and the factory checks that the report accounts for all of it. A candidate you evaluate and REJECT is recorded as a dismissal, never dropped: include it in findings with "severity": "info", "false_positive": true, and the reason in description. Only candidates you confirm keep their real severity. A report that lists only the survivors cannot be told apart from one that triaged nothing at all, and the run is read as INCOMPLETE (agents-f8dj).
Cite the candidate you are answering (agents-w9ni). Every row you emit - confirmed or dismissed - carries the candidate_id, copied verbatim from the pre-pass candidate it answers. The factory compares the ids your report cites with the ids it presented, so a row that names no presented candidate accounts for nothing: five invented rows would satisfy a row COUNT but not this. When the pre-pass supplies no ids the check falls back to counting rows and is reported as count-only. Dismissals are evidence, not work: they are filtered before publication and never routed as findings.
The factory writes the deterministic pre-pass to candidates.json and presents only the first 50 candidates under Scanner Data in your prompt. Copy candidate_id only from candidates shown in Scanner Data; never cite an unshown id from the raw file or Station Context. If those shown candidates have no ids, omit candidate_id and keep the count-only fallback.
- Output Contract:
Your final response MUST be a valid JSON object matching report.schema.json: ``json { "summary": "Brief summary of results (e.g. 'Found 26 candidate matches; all 26 verified as benign test fixtures and test probes.')", "scanned_files": 26, "findings": [ { "rule_id": "generic-api-key", "path": "path/to/file", "line_number": 123, "snippet": "const apiKey = 'sk-test-placeholder';", "severity": "info", "candidate_id": "cand-secret-123", "false_positive": true, "title": "Benign Test Fixture Credential", "description": "Mock API key used in test probe to verify secret redaction logic.", "remediation": "No action required; verify it remains excluded from production bundles." } ] } ` Set "false_positive": true on every finding that is a test fixture, placeholder, or dummy key, so it is recorded as evidence (not work) and never routed as a live secret. Output ONLY valid JSON or enclose it within a single `json `` block.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingagents/secret-scan/SKILL.md
Popularity
- Repository stars
- 1
- 7-day trend score
- 8
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/paulkinlan/agents/secret-scan)