sf-thesis-build — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited sf-thesis-build (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.
npm install -g @spfunctions/cli
sf loginThesis lifecycle requires authentication — theses are user-scoped.
create → context → signal → evaluate → augment → fork → publish → unpublishEach verb is a CLI command and an HTTP endpoint.
sf create "<thesis statement in one sentence>"Example:
sf create "Fed cuts rates by July driven by jobs softening + CPI ≤ 2.5%"The server runs an LLM classifier that:
Returns the new thesis id. Capture this — every subsequent command needs it.
sf context <thesis-id> --jsonReturns:
Inspect the tree. Common issues:
If the tree is wrong, use Step 4 (augment) to add nodes, or fork (Step 5b) to start a variant.
When new information arrives — a news article, a Powell speech, a CPI release — feed it:
sf signal <thesis-id> "Powell speech: 'job market is softening more than expected'"The server:
sf evaluate <thesis-id>Triggers a deep evaluation (uses heavy model — costs more, slower). Returns:
Run evaluate periodically (daily or after major signals), not on every minor update. Use signal for routine updates; evaluate is the expensive consolidation step.
sf augment <thesis-id>LLM proposes new tree nodes (e.g., "Add: SEP dot plot at FOMC meeting"). You accept or reject each. Append-only — existing nodes are never deleted.
To explore a contrarian or refined version:
sf thesis fork <thesis-id> "<variant>"
# or via MCP: fork_thesis toolCreates a new thesis id with the same parent, independent confidence and signals.
sf whatif <thesis-id> --jsonReturns implied prices if you assume specific node confidences. Useful for stress-testing the position.
When the thesis is mature and you want it public:
sf publish <thesis-id> --slug fed-rate-cut-julyMakes the thesis live at simplefunctions.dev/thesis/fed-rate-cut-july. The slug is normalized (/[^a-z0-9-]/g strip, max 60 chars).
To unpublish:
sf unpublish <thesis-id>A good causal tree:
n1 Fed cuts by July 65%
├── n1.1 Jobs report softens 75% [market: KXNFP-26JUN-T100K]
├── n1.2 CPI ≤ 2.5% 50% [market: KXCPIYOY-26JUN-T2.5]
└── n1.3 No external shock 85%
n2 Yield curve responds 70% [market: KX2Y10Y-26JUL-T0]
n3 Equity flows in 55% [market: KXSPX-26JUL-T5500]Each leaf node should have:
If a leaf has no market attached, either find one with sf scan --keyword "<leaf trigger>" or note that the leaf is unmeasurable.
Always define what would invalidate the thesis. The heartbeat will check these:
sf heartbeat <thesis-id> --closed-loop-entry --closed-loop-exit --jsonConfigure heartbeat fields:
killConditions: list of conditions (signals or market price thresholds)cadence: how often to re-check (default: 30m for active, 24h for monitor)evaluation_tier: which model to use (cheap for routine, heavy for evaluation)See sf-thesis-monitor skill for full monitoring setup.
sf-research — topic research that informs thesis designsf-thesis-monitor — heartbeat + kill condition setupsf-pre-trade-check — adversarial check before opening positions linked to thesis~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.