Disciplined open-source intelligence: lens stack, calibrated synthesis, red-teaming, evidence ledger, and live-data fetchers for news-analysis tradecraft
Produce a deep strategic brief on a topic — provenance check, multi-source fetch, evidence ledger, multi-lens analysis, calibrated synthesis, red-team review.
Verify a single claim or URL — chain of custody, two-source rule, primary fetch, archive, and Admiralty-graded ledger row with verdict.
Sweep the configured watchlist of named outlets, dedupe against prior runs, cluster by topic, and produce today's morning situation report.
Stress-test an existing assessment — Key Assumptions Check, alternative hypotheses, weakest evidence, pre-mortem, calibration adjustment.
Use when applying a single analytical lens (economic, political, historical, demographic, military, public-finance, or geographic) to one event. Designed to be invoked in parallel — one agent per lens that has been triaged as load-bearing. Returns a structured finding (claim with calibration, evidence weight, residual uncertainty, citations), not narrative. <example> Context: orchestrator has triaged that public-finance, economic, and political lenses are load-bearing for an Argentine capital-controls event. user: [orchestrator dispatches three lens-applier agents in parallel] assistant: lens-applier returns three structured findings; orchestrator merges them in synthesising-strategic-assessment </example> <example> Context: a sovereign-debt downgrade story. user: "apply the public-finance lens to the Bolivia downgrade" assistant: invoke lens-applier with lens=public-finance and the event description; receive a structured finding back </example>
Use to stress-test a drafted strategic assessment before it goes to a principal. Designed to be invoked as a separate agent so the review is structurally independent of the drafting reasoning — the red-teamer sees only the finished assessment plus the evidence ledger, not how the analyst got there. Returns a structured review with calibration adjustments. The /red-team slash command invokes this agent. <example> Context: an analyst has drafted briefs/turkey-cbrt-decision-2026-05-05.md with the corresponding evidence/turkey-cbrt-decision-2026-05-05.csv ledger. user: invokes /red-team assistant: dispatches red-teamer with the assessment path and ledger path; receives a structured review that adjusts the calibration band and adds indicators </example> <example> Context: a synthesis just completed in-thread; the user wants an independent check before sending. user: "red-team this" assistant: dispatches red-teamer with the assessment text; receives a fresh adversarial review uncontaminated by the drafting reasoning </example>
Use to ingest a large set of articles, feed items, or URLs and return a compressed, graded summary that the main thread can consume without burning context on raw text. Designed to keep article bodies out of the orchestrator's window — fetches and reads in its own context, returns narrative clusters plus evidence-ledger rows. Invoked by /strategic-brief and /daily-sitrep when N > ~10 sources are involved. <example> Context: orchestrator wants the last 24h of global coverage of "Turkey CBRT rate decision" without reading 80 articles in the main thread. user: "ingest the last 24h of news on this topic and tell me what's there" assistant: dispatches source-ingestor with topic + window; receives 3 narrative clusters + 8 ledger rows; never sees the article bodies </example> <example> Context: a /daily-sitrep run pulls 200 RSS items across 14 outlets. user: invokes /daily-sitrep assistant: dispatches source-ingestor with the watchlist + dedup state; gets back the day's narratives + new ledger rows; assembles the sitrep from those, not from the raw items </example>
Use when an event implicates population structure, fertility, migration, ageing, urbanisation, ethnic composition, or labour supply. Triggers include "ageing population", "youth bulge", "migration crisis", pension or health-system stress, ethnic or sectarian dynamics, demographic dividend or drag.
Use when interpreting currency moves, trade flows, inflation prints, growth data, sanctions, supply-chain shocks, commodity moves, or central-bank actions. Triggers include "what's the economic impact", "why did markets move", "is this inflationary", "who wins from this trade policy", or any claim of economic causation.
Use when an event implicates terrain, distance, chokepoints, resources, climate, or maritime or pipeline geography. Triggers include shipping-lane disruptions, pipeline politics, border or territorial questions, infrastructure projects, satellite-derived claims, or "why does X matter strategically".
Use when placing an event in historical context — precedent, analogies, cycles, path dependencies, or claims that something is "unprecedented". Triggers include "has this happened before", "is this like X", "what's the precedent", long-run trend reasoning, or structural-break vs continuation calls.
Use when an event involves armed forces, deterrence, alliances, procurement, escalation risk, or grey-zone activity. Triggers include troop movements, exercises, weapons announcements, missile tests, naval deployments, cyber operations, "is this escalation", or "what's the military balance".
Uses power tools
Uses Bash, Write, or Edit tools
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
No model invocation
No model invocation
Executes directly as bash, bypassing the AI model
Executes directly as bash, bypassing the AI model
A Claude Code plugin that turns the assistant into a disciplined open-source intelligence analyst.
# 1. Get dependencies
uv sync # installs from pyproject.toml + uv.lock
# 2. Set up secrets
cp .env.example .env
chmod 600 .env
# edit .env and fill in at least FRED_API_KEY (see "API keys" below)
# 3. Install the plugin into Claude Code
/plugin marketplace add /path/to/this/dir
/plugin install strategic-analyst@local
# 4. Try a slash command
/strategic-brief Argentina capital controls — what's the call?
If you're not sure what's working, the SessionStart hook reports which keys are set and which aren't every time you start Claude Code in this directory.
From the directory containing this plugin folder:
/plugin marketplace add /absolute/path/to/claude-strategic-analysis
/plugin install strategic-analyst@local
Skill descriptions appear immediately. Reload Claude Code to pick up edits.
Publish this repo to GitHub, register a marketplace pointing at it, then:
/plugin marketplace add github:<your-user>/strategic-analyst-marketplace
/plugin install strategic-analyst
Symlink this folder into ~/.claude/plugins/ and add the path to ~/.claude/plugins/installed_plugins.json. Useful for development; not recommended for distribution.
The plugin's fetch skills need to make HTTP calls and run Python. Claude Code asks for permission per tool call by default. To run the workflow without per-call prompts, add allows to .claude/settings.local.json (project-local, gitignored). The shipped .claude/settings.local.json.example-style block is reproduced below — copy what you want into your own .claude/settings.local.json:
{
"permissions": {
"allow": [
"Read(//<your-claude-dir>/**)",
"Bash(uv run *)",
"Bash(uv run python *)",
"Bash(ls *)", "Bash(pwd)", "Bash(cat *.md)",
"Bash(head *)", "Bash(tail *)", "Bash(wc *)",
"Bash(grep *)", "Bash(find *)",
"Bash(mkdir -p *)",
"Bash(rm -f tests/scratch/*)", "Bash(rmdir tests/scratch)",
"WebFetch(domain:api.stlouisfed.org)",
"WebFetch(domain:api.eia.gov)",
"WebFetch(domain:www.sec.gov)",
"WebFetch(domain:data.sec.gov)",
"WebFetch(domain:sanctionslistservice.ofac.treas.gov)",
"WebFetch(domain:www.treasury.gov)",
"WebFetch(domain:ofac.treasury.gov)",
"WebFetch(domain:api.opensanctions.org)",
"WebFetch(domain:comtradeapi.un.org)",
"WebFetch(domain:acleddata.com)",
"WebFetch(domain:api.gdeltproject.org)",
"WebFetch(domain:sh.dataspace.copernicus.eu)",
"WebFetch(domain:identity.dataspace.copernicus.eu)",
"WebFetch(domain:catalogue.dataspace.copernicus.eu)",
"WebFetch(domain:newsapi.org)",
"WebFetch(domain:web.archive.org)",
"WebFetch(domain:archive.org)",
"WebFetch(domain:httpbin.org)",
"WebSearch"
]
}
}
Why this list:
python3 * — that would silently bypass the project's uv + pyproject.toml convention. If a fetcher tries to run bare python3, the hard-fail discipline (see skills/handling-credentials-safely) catches it rather than letting it through.chmod, no python3 fallback, no destructive Bash patterns. If you need them for one-off setup, run them yourself; they shouldn't be in an always-allow list.If you skip these allows, Claude Code will prompt per call. That's safe — and you can promote the patterns you trust to allows after a few sessions of seeing what fires.
.env.example ships placeholder slots for every key the plugin understands. Copy to .env, then fill in keys top-to-bottom — each tier multiplies what the analyst can verify live.
These work out of the box:
fetching-news-gdeltfetching-ofac-sanctions for the sanctions list itselffetching-rss-watchlist for outlet-level monitoringarchiving-with-wayback for snapshot evidenceThese unlock the macro/markets/regulatory backbone:
npx claudepluginhub alexander-newton/anacatalyst --plugin strategic-analystComplete creative writing suite with 10 specialized agents covering the full writing process: research gathering, character development, story architecture, world-building, dialogue coaching, editing/review, outlining, content strategy, believability auditing, and prose style/voice analysis. Includes genre-specific guides, templates, and quality checklists.
Comprehensive skill pack with 66 specialized skills for full-stack developers: 12 language experts (Python, TypeScript, Go, Rust, C++, Swift, Kotlin, C#, PHP, Java, SQL, JavaScript), 10 backend frameworks, 6 frontend/mobile, plus infrastructure, DevOps, security, and testing. Features progressive disclosure architecture for 50% faster loading.
Upstash Context7 MCP server for up-to-date documentation lookup. Pull version-specific documentation and code examples directly from source repositories into your LLM context.
Intelligent draw.io diagramming plugin with AI-powered diagram generation, multi-platform embedding (GitHub, Confluence, Azure DevOps, Notion, Teams, Harness), conditional formatting, live data binding, and MCP server integration for programmatic diagram creation and management.
Comprehensive startup business analysis with market sizing (TAM/SAM/SOM), financial modeling, team planning, and strategic research
v9.44.1 — Patch release for Gemini environment/version detection and qwen auth gating. Run /octo:setup.