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 skills add ashfulcra/fulcra-tools --skill skillgit clone --depth 1 https://github.com/ashfulcra/fulcra-toolsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/ashfulcra/fulcra-tools/skill)<a href="https://agentmods.dev/skills/ashfulcra/fulcra-tools/skill"><img src="https://agentmods.dev/badge/skills/ashfulcra/fulcra-tools/skill.svg" alt="Measured on agentmods" height="20"></a>What 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.1 | $0.00038 | $0.01235 |
| Opus 5 | $0.00019 | $0.00617 |
| Sonnet 5 | $0.00008 | $0.00247 |
| Haiku 4.5 | $0.00004 | $0.00123 |
Grade B, and why
fulcra-prefs scanned grade B with 1 finding 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 6d 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.
Reads agent configuration directoriesmediumAgent snooping
.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.
| Hooks installed? | `grep -q fulcra-prefs-hooks ~/.claude/settings.json` (or `~/.codex/hooks.json`; custom `--target-dir` installs won't match this grep) | exits 0 — a managed SessionStart/capture hook is wired | [Onboa How it starts
The opening of the file, as written. The whole thing — 80 lines — stays where its author put it; the contents beside it link to each section on GitHub.
fulcra-prefs
The user's preferences and facts live in their Fulcra account as typed, decaying signals, compiled into per-platform preference documents. Your job: LOAD them at session start, APPLY them, and CAPTURE new ones.
Where to start — the re-entrancy probes
Before loading anything, probe how far this user already got. Enter at the first row whose probe fails:
| Probe (run in order) | Command | Passes when | If it fails, enter at |
|---|---|---|---|
| Authed? | fulcra user-info |
exits 0 and prints valid JSON | Pick your path — install, then fulcra auth login |
| Onboarded? | fulcra-prefs compile (an idempotent write — also drains queued captures; safe anytime) |
exits 0 (compiled N keys …); exit 2 with not onboarded means no definition / prefs/meta.json yet |
Onboarding a new user — fulcra-prefs onboard |
| Prefs present? | fulcra-prefs inject --platform <your-platform> |
non-empty output (a rendered preference block) | Pick your path tier-1 capture — nothing to load yet; start capturing |
| Hooks installed? | grep -q fulcra-prefs-hooks ~/.claude/settings.json (or ~/.codex/hooks.json; custom --target-dir installs won't match this grep) |
exits 0 — a managed SessionStart/capture hook is wired | Onboarding a new user — fulcra-prefs install-hooks --platform <claude-code|codex> |
First failure wins. Hooks are optional: a CLI-capable agent runs inject/capture
by hand without them, so a hookless-but-onboarded user is fully usable — the last
row only tells you whether load/capture is automatic. All four pass → inject at
session start already carries their prefs; apply them and capture new ones.
Pick your path
- You can run shell commands → use the CLI. Setup once:
uv tool install fulcra-prefs(andfulcra auth loginif not authed).- Load:
fulcra-prefs inject --platform <your-platform>→ prepend output to your working context. Empty output = no prefs yet; continue silently. - Capture:
fulcra-prefs capture --key <ns.key> --value '<json>' --strength <-1..1> --platform <your-platform>(see references/fulcra-prefs-capture.md for when and what to capture). - Auto-capture: notice preferences passively and record them in one call at
session end —
fulcra-prefs capture-batch --file <json-array> --platform <your-platform>; mark inferred items lowerconfidence(compile won't let a guess override an explicit pref). See the capture reference. - Text extraction: when you have raw user text but not a hand-built key/value,
run
fulcra-prefs extract-candidates --platform <your-platform> --session <session_id> --text '<user text>' --write. It only queues explicit preference language; lifecycle hooks still perform the capture. - Hooked auto-capture: if
fulcra-prefs install-hooks --platform <your-platform>is installed, write candidates during the session to~/.local/state/fulcra-prefs/candidates/<your-platform>/<session_id>.json; the lifecycle hook drains that file throughcapture-batch. Prefer the helper command:fulcra-prefs notice --platform <your-platform> --session <session_id> --key <ns.key> --value '<json>' --strength <n>. - Refresh:
fulcra-prefs compile(run after captures; cheap).
- Load:
- You can make HTTP requests but not run commands → follow references/fulcra-prefs-tier2-http.md (device-flow auth + direct API).
- You only have the Fulcra MCP → you can read user data the MCP exposes, but preference write/read of the compiled docs is not available via MCP today. Tell the user to run onboarding from a CLI-capable agent.
What ships with it
3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 6d ago First seen · 80 lines · 38 tokens per session scan B b9cd13bf79e5
fulcra-prefs is a skill published in the GitHub repository ashfulcra/fulcra-tools (10 stars, last pushed today), licensed MIT. It adds 38 tokens to every session and 1,235 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it B with 1 finding (reads agent configuration directories). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
magic-compact
Compact this Claude Code session.
mem0-vercel-ai-sdk
Mem0 provider for Vercel AI SDK (@mem0/vercel-ai-provider). TRIGGER when: user mentions "vercel ai sdk", "@mem0/vercel-ai-provider", "createMem0", "retrieveMemories", "addMemories", "getMemories", "searchMemories", "mem0 vercel", "AI SDK provider", "AI SDK memory", or is using generateText/streamText with mem0. Also…
mem0-tour
Browses all stored memories grouped by category with full content display. Use when reviewing all project memories, exploring stored knowledge, onboarding to a project, or getting an overview of captured decisions, conventions, and learnings.
peek
Searches memories and displays compact one-liner results, or looks up a specific memory by ID. Use for quick memory lookups, checking if a decision was recorded, resolving [mem0:id] citations, or browsing memories without full category detail.
agent-carnet
Use this skill when the user asks to save, recall, find, or organize notes. Triggers on: 'remember this', 'save this', 'note this', 'what did we discuss about...', 'check the notebook', 'find in carnet'. Also use proactively when discovering findings worth preserving across sessions.
mem0-oss-to-platform
Plan and then execute a migration of a project from the mem0 open-source / self-hosted SDK (the local Memory class) to the mem0 Platform / hosted / managed SDK (the MemoryClient class). Use this whenever a developer wants to move, switch, or migrate their mem0 usage off OSS/self-hosted to the hosted API — e.g.…