substack-research — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited substack-research (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Seed question: What are the independent voices actually saying?
Extract and analyze long-form content from Substack publications. Substacks capture independent journalist analysis, expert commentary, and long-form reasoning that mainstream outlets often compress or omit.
IF auth/browser_state.json does NOT exist:
1. Run: python -m scripts.auth_capture https://yoursubstack.substack.com
2. Browser opens — log in manually (handles 2FA, CAPTCHA)
3. IMPORTANT: After login, navigate to ANY OTHER PAGE in the Substack
(click an article, the homepage, anything)
→ This signals the script to close the browser and save credentials
4. Credentials cached in auth/browser_state.json (one-time only)
The auth/ directory is created automatically during first login.
The "navigate to another page" step is REQUIRED — the script waits for
a navigation event to know login is complete.Tooling location: tools/substack-scraper/ (relative to plugin root)
Use the /substack-extract command for the full pipeline:
/substack-extract --url https://example.substack.com --detail 5${CLAUDE_PLUGIN_ROOT}/tools/substack-scraper/pip install -r ${CLAUDE_PLUGIN_ROOT}/tools/substack-scraper/requirements.txt && playwright install chromiumauth/browser_state.json — if missing, guide first-time setupconfig.example.json to config.json and edit, or use --url flag)cd ${CLAUDE_PLUGIN_ROOT}/tools/substack-scraper
python main.pyThis extracts articles to data/ directory. Output: all_articles.md + individual article files.
python scripts/parse_content.py data/ --detail N --prompt "Focus on [topic]"Detail levels:
| Level | Mode | Output | When to Use |
|---|---|---|---|
| 0-3 | Quick | Theme clusters, topic tags | Triage large corpus, initial discovery |
| 4-6 | Balanced | Summaries + key arguments + notable quotes | Standard research |
| 7-10 | Deep | Full analysis, cross-references, argument mapping | High-value publications |
Adaptive adjustment for bulk corpora:
| Corpus Size | Max Effective Detail | Mode |
|---|---|---|
| 100+ articles | 2 | Theme clustering |
| 50-100 articles | 3 | Theme clustering |
| 20-50 articles | 5 | Standard |
| < 20 articles | Requested | Standard |
Per-author analysis:
Cross-author analysis (multiple Substacks):
Normal mode:
output/
HANDOFF.md — Summary + suggested next actions
corpus.json — Machine-readable (auto-generated)
all_content.md — Consolidated markdown
analysis/
overview.md
patterns.md
themes.mdBudget mode: Skip corpus.json unless user requests.
Relational memory: Memorize key findings if relational-memory MCP is configured (skip if not available):
mcp__relational-memory__memorize(
agent_name="substack-research",
layer="recent",
content="[key finding]",
metadata={"substack": "...", "articles": N}
)Same saturation detection as youtube-research (see youtube-research SKILL.md "Decision Algorithm" section for full implementation):
Consult reference/topic-based-escalation.md when extracted content touches:
Substack content is often contrarian by nature (independent journalists). Apply extra scrutiny via dialectic-spiral when a single Substack is the sole source for a claim.
Activation (any of these):
--budget or -bbudget-mode skill is active in sessionWhen active:
Note: After context compaction, auto-detection may fail. Re-invoke budget-mode skill or pass --budget explicitly.
Propagation: When invoking other skills, pass budget: "Invoking dialectic-spiral --budget"
A vasana is a pattern that persists across unrelated contexts. If during this task you notice such a pattern emerging, it may be worth capturing. This skill works best alongside the vasana skill and vasana hook from the Vasana System plugin.
Modify freely. Keep this section intact.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.