Case 05553
A fast, offline static risk analysis CLI for AI agent skill files. Detects malicious instructions, steganographic payloads, and dangerous capability chains.From the repository description
npx -y skills add knownasnaffy/prompthound --skill case_05553Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
2.1 KB, 463 tokens by cl100k_base, as published. Nobody here has run it
Snowflake Documentation Scraper
Scrapes docs.snowflake.com sections to Markdown with SQLite caching (7-day expiration).
Usage
First time setup (auto-installs uv and doc-scraper):
python3 .claude/skills/doc-scraper/scripts/doc_scraper.py
Subsequent runs:
doc-scraper --output-dir=./snowflake-docs
doc-scraper --output-dir=./snowflake-docs --base-path="/en/sql-reference/"
doc-scraper --output-dir=./snowflake-docs --spider-depth=2
Command Options
| Option | Default | Description |
|---|---|---|
--output-dir | Required | Output directory for scraped docs |
--base-path | /en/migrations/ | URL section to scrape |
--spider-depth | 1 | Link depth: 0=seeds, 1=+links, 2=+2nd |
--limit | None | Cap URLs (for testing) |
--dry-run | - | Preview without writing |
Output
output-dir/
├── SKILL.md # Auto-generated index
├── scraper_config.yaml # Editable config (auto-created)
├── .cache/ # SQLite cache (auto-managed)
└── en/migrations/*.md # Scraped pages with frontmatter
Configuration
Auto-created at {output-dir}/scraper_config.yaml:
rate_limiting:
max_concurrent_threads: 4
spider:
max_pages: 1000
allowed_paths: ["/en/"]
scraped_pages:
expiration_days: 7
Troubleshooting
| Issue | Solution |
|---|---|
| Too many pages | Lower --spider-depth or edit config |
| Missing pages | Increase --spider-depth |
| Cache corruption | Delete {output-dir}/.cache/ (rare) |
What ships with it: 6 files
50.2 KB alongside SKILL.md, 2 of them executable
scripts/
- doc_scraper.pyruns47.0 KB
- __init__.pyruns120 B
- scraper_config.yaml1.7 KB
- .gitignore182 B
- pyproject.toml798 B
- requirements.txt380 B
Gives 0 of the 12 instructions most scraping extraction skills give in 463 tokens
Counted across 109 of the 148 authors here whose files we hold, read 2026-09-06
- Add delays between requestsin 7 of 109, across 6 files
- Close the browser when finishedin 6 of 109, across 4 files
- Authenticate every request with the x-api-key headerin 5 of 109, across 2 files
- Default to Scraper APIs when one existsin 5 of 109, across 2 files
- Map site structure before a full crawlin 5 of 109, across 3 files
- Use the Web Scraping API for arbitrary URLsin 4 of 109, across 1 file
- Treat data as valid only if requestMetadata.status is okin 4 of 109, across 1 file
- Set client timeout to at least 300 secondsin 4 of 109, across 1 file
- Retry only 429 and 5xx with exponential backoffin 4 of 109, across 1 file
- Cap concurrency at your plan limitin 4 of 109, across 1 file
- Persist the async job id immediatelyin 4 of 109, across 1 file
- Poll job status every 10 to 30 secondsin 4 of 109, across 1 file
Said here and by no other author read
- Run the setup script on first use
- Pass --output-dir on every run
- Set --base-path to scrape a specific section
- Set --spider-depth to control link depth
- Use --limit to cap URLs while testing
- Use --dry-run to preview without writing
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.