Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/minihellboy/factorminer/factor-datanpx skills add minihellboy/factorminer --skill factor-datagit clone --depth 1 https://github.com/minihellboy/factorminerWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00098 | $0.00870 |
| Opus 5 | $0.00049 | $0.00435 |
| Sonnet 5 | $0.00020 | $0.00174 |
| Haiku 4.5 | $0.00010 | $0.00087 |
Grade A, and why
factor-data scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 88 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Factor Data
Market data is the input contract for every FactorMiner workflow. This skill makes sure a dataset is schema-valid and split-covered before a mining run burns iterations on a broken file.
Canonical schema
FactorMiner expects an OHLCV panel with one row per (asset, timestamp):
| Column | Meaning | Notes |
|---|---|---|
datetime |
Bar timestamp | Parseable date/datetime |
asset_id |
Instrument id | Aliases: code, ticker, symbol |
open high low close |
Prices | — |
volume |
Share/contract volume | — |
amount |
Dollar/turnover volume | vwap derived as amount / volume when missing |
returns and vwap are derived automatically when absent. Column aliasing is handled by the loader, so near-canonical files pass.
Workflow
1. Validate
Always validate first:
factorminer validate-data path/to/market_data.csv --json
Read the report. It lists detected columns, applied aliases, derived fields, and train/test split coverage. If either split has zero rows, stop — fix the file or the config's data.train_period / data.test_period before mining. Use --strict to treat warnings as failures in CI.
2. Resample (optional)
If the bars are finer than the research horizon (e.g. 5-minute bars for a daily study), resample:
factorminer resample-data raw_5m.csv bars_1h.parquet --rule 1h
3. Fetch from an MCP connector (optional)
To pull data from a financial-data MCP connector instead of a local file, write a small MCP-source config and run fetch-data. The config maps the connector's tool and field names onto the canonical loader-required schema, including volume and amount:
factorminer mcp-connectors
# factset_source.yaml
transport: http
url: https://mcp.factset.com/mcp
headers:
Authorization: "Bearer ${FACTSET_TOKEN}"
tool: get_prices
arguments:
ids: ["AAPL-US", "MSFT-US"]
start: "2022-01-01"
end: "2024-12-31"
frequency: "1d"
records_path: data.prices
field_mapping:
datetime: date
asset_id: fsym_id
open: price_open
high: price_high
low: price_low
close: price_close
volume: volume
amount: turnover
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 88 lines · 98 tokens per session scan A dd8c5d5bf548
factor-data is a skill published in the GitHub repository minihellboy/factorminer (105 stars, last pushed 15d ago), licensed MIT. It adds 98 tokens to every session and 870 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
next-cache-components-adoption
Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…
babysit-pr
Babysit a GitHub pull request after creation by continuously polling review comments, CI checks/workflow runs, and mergeability state until the PR is merged/closed or user help is required. Diagnose failures, retry likely flaky failures up to 3 times, auto-fix/push branch-related issues when appropriate, and keep…
imagegen
Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output…
cpu-profile-analysis
Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…
next-cache-components-optimizer
Drive a Next.js route to instant navigation by setting up an agentic loop, under Cache Components / PPR, on initial load (hard navigation) and client-side navigation (soft navigation). Encode the goal as a failing @next/playwright instant() e2e and work it to green, one verified route at a time; the shipped test then…