技能创建器
skill-creator
创建、改进和评估自定义技能,把专业流程转化为可重复使用的 AI 能力。
clarion-sec-research【数据与研究】Pull, index, and search SEC EDGAR filings for any public company. Supports 10-K and 10-Q (annual/quarterly with curated section extraction for risk factors, MD&A, business, and financials), Form 3/4/5 (insider transactions), 8-K (material events), DEF 14A (proxy/governance), S-1 (IPO/registration), 20-F (foreign private issuers), and any other SEC fo…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Five subcommands: index, search, status, reindex, doctor.
User asks any of:
When the user asks about a specific ticker:
status <TICKER> to check whether the requested filings are already indexed.search with a query phrase that captures the user's question. Pass --tickers <TICKER> to scope the search.index <TICKER> (no flags). This enqueues the eval profile (high-signal default): latest 2 10-Ks, latest 3 10-Qs, latest DEF 14A, 8-Ks and other high-signal forms from the last 90 days, plus the latest few insider Form 4s. Administrative/registration forms (S-8, 424B, 13G, …) are deferred — add --profile full for those when doing deep diligence. The queue is priority-ordered — the annual report (10-K / 20-F) indexes first, then quarterlies, then proxies — so a ticker becomes eval-ready well before the set finishes. Tell the user indexing is queued (typically 1-5 minutes per filing) and that they can re-run status <TICKER> to watch the Eval readiness line flip to "Ready to evaluate." For a narrow query, use --form X to scope the index to one form.search with --tickers NVDA,AMD,INTC. If any of the tickers shows zero hits, surface that and suggest indexing them.The script is at /home/workspace/clarion-intelligence-system/skills/clarion-sec-research/scripts/research.py. Below, RESEARCH=python /home/workspace/clarion-intelligence-system/skills/clarion-sec-research/scripts/research.py for brevity.
# Composite default — EVAL profile (high-signal set for a first-pass evaluation):
# latest 2 10-Ks + latest 3 10-Qs + latest DEF 14A + 8-K & other high-signal
# forms in the last 90 days + the latest few insider Form 4s (deduped).
# Administrative/registration forms (13G/D, S-8, 144, 424B, EFFECT, ARS) are deferred.
$RESEARCH index NVDA
# FULL profile — everything above PLUS all remaining forms in the last 90 days
# (administrative/registration). Use when moving toward sizing or publication.
$RESEARCH index NVDA --profile full
# Form-scoped — ALL filings of FORM in the window (default 90 days), any profile:
$RESEARCH index NVDA --form 4 # all Form 4s (insider transactions) in last 90d
$RESEARCH index TSLA --form 8-K # all 8-Ks in last 90d
$RESEARCH index META --form "DEF 14A" # all proxy statements in last 90d
$RESEARCH index BABA --form 20-F # all 20-Fs in last 90d
# Tune the window:
$RESEARCH index NVDA --form 4 --days 180 # all Form 4s in last 180d
$RESEARCH index NVDA --form 10-K --count 3 # most-recent 3 10-Ks (any age)
# Legacy single-result — only the single most-recent filing of FORM:
$RESEARCH index NVDA --form 10-Q --latest # just the latest 10-Q
--form accepts any SEC form name. Pass it exactly as SEC reports it (e.g. 10-K, 10-Q, 4, 3, 5, 8-K, S-1, DEF 14A, 20-F). Amendments use /A suffix (10-K/A). --latest is mutually exclusive with --days/--count. --profile applies only to the composite default (it's ignored with --form).
Why two profiles (issue #40): a Buffett-lens evaluation runs on year-over-year financials (10-Ks), recent operating context (10-Qs), governance/comp (DEF 14A), material events (8-K), and a little insider signal (recent Form 4s) — which is exactly the eval profile. Pulling every administrative/registration filing from the last 90 days (S-8, 424B, 13G, …) adds indexing time without changing a first-pass view, so it's deferred to --profile full for deep diligence. clarion-single-stock-eval discloses in its output when administrative filings weren't indexed.
$RESEARCH search "supply chain risk"
$RESEARCH search "supply chain risk" --tickers NVDA,AMD
$RESEARCH search "competitive pressure" --sections risk_factors,mdna
$RESEARCH search "data center revenue" --top-k 5
$RESEARCH search "insider transaction" --tickers NVDA # Form 4 hits
Section labels depend on the form type:
business, risk_factors, mdna, financial_statements. The --sections filter is most useful here.form-4-insider-transaction-report, issuer, reporting-owners, non-derivative-transactions. Look at status output or run search without --sections to see what's actually indexed before filtering.$RESEARCH status NVDA
$RESEARCH reindex # whole corpus: re-extract anything built by older code
$RESEARCH reindex NVDA # just one ticker
$RESEARCH reindex --force # re-extract everything, even if already current
Re-extracts already-indexed filings so the latest extraction fixes reach your existing corpus (issue #57). By default it only re-extracts filings built by older code — filings already on the current code are skipped, so it's safe and cheap to re-run. This is the command to run after upgrading (after doctor confirms the service is current). Without it, an upgrade only affects newly-indexed filings; your existing data keeps its old extraction.
$RESEARCH doctor
Checks whether the running sec-indexer service is on the currently installed code (issue #55). After pulling code updates, the long-running service must be restarted or it keeps executing old code and re-indexing produces wrong data — silently. Run doctor after any update (and before a big re-index); if it reports STALE, restart the service, then reindex. Exit code is non-zero on STALE.
Each subcommand prints structured markdown that you should pass through to the user verbatim. index confirms the queue submission. search returns a hit table and top-5 snippets with citations. status shows an Eval readiness summary (whether the annual report is indexed yet, plus any high-signal gaps), the indexed filings, and last request state. reindex confirms which filings were queued for re-extraction. doctor reports indexer code freshness (up to date / STALE / not started).
When you want to summarize or interpret the filing content beyond the script's snippets:
citation field is the canonical form: NVDA 10-K filed 2026-02-21 → risk_factors.Conservative and direct. Show the math (numbers from the filing) where relevant. Never fabricate financial data — if the search snippet doesn't have the number the user asked for, say "the indexed sections don't contain that figure" and offer to index more sections or another form (e.g. the 10-Q for more recent data).
status shows last_request.state = failed** — the indexer hit an error. Surface the errorfield. Common causes: ticker not in SEC's tickers map (typo), noZO_API_KEY` set, network issue.search returns no hits for a ticker that should have content — confirm with status that indexing actually completed; if state is still running or missing, indexing isn't done yet.