AI Agent Skill
Drop a single SKILL.md into Claude Code, Codex, Cursor, Windsurf, Aider, or any agent that supports AGENTS.md — and let it integrate FingerprintIQ without hallucinating.
FingerprintIQ Agent Skill
Modern AI coding agents can install project-specific or global "skills" — small Markdown files that teach them how to use a tool correctly. FingerprintIQ ships one canonical SKILL.md that works with all of them.
Once installed, you can say things like "add fingerprintiq bot detection to the checkout page" or "block AI agents from /api/public with sentinel" and the agent will write idiomatic code using real package names, real API shapes, and real framework subpaths — not whatever it remembered from training data.
The skill covers all three FingerprintIQ products — Identify (browser fingerprinting), Sentinel (server caller classification), and Pulse (CLI analytics) — in a single file. Install it once.
What's in the skill
- Product decision guide (Identify vs Sentinel vs Pulse)
- Install + code snippets for JS, TypeScript, React, Next.js, Vue, Hono, Express, FastAPI, Starlette, and Python
- Full
IdentifyResponseandSentinelResulttype definitions - API endpoint reference for custom integrations
- Server-side verification pattern (don't trust the client alone)
- Common mistakes checklist (hardcoded keys, missing allowlist, wallet-popup misuse, etc.)
Canonical URL:
texthttps://raw.githubusercontent.com/fingerprintiq/skills/main/fingerprintiq/SKILL.md
Browse on GitHub: fingerprintiq/skills
Install per tool
Claude Code
Claude Code loads skills from ~/.claude/skills/<name>/SKILL.md (user-wide) or .claude/skills/<name>/SKILL.md (project-local). The file already has the correct YAML frontmatter.
User-wide (recommended):
bashmkdir -p ~/.claude/skills/fingerprintiqcurl -fsSL https://raw.githubusercontent.com/fingerprintiq/skills/main/fingerprintiq/SKILL.md \ -o ~/.claude/skills/fingerprintiq/SKILL.md
Project-local:
bashmkdir -p .claude/skills/fingerprintiqcurl -fsSL https://raw.githubusercontent.com/fingerprintiq/skills/main/fingerprintiq/SKILL.md \ -o .claude/skills/fingerprintiq/SKILL.md
Restart Claude Code (or run /skills to refresh). The skill will auto-trigger whenever you mention fingerprintiq, visitor IDs, bot detection, Sentinel, Pulse, or any @fingerprintiq/* package. You can also invoke it explicitly with /skill fingerprintiq.
Codex / OpenAI Codex CLI
Codex CLI reads AGENTS.md files up the directory tree. Append the skill to your project's AGENTS.md, or link to it:
bashcurl -fsSL https://raw.githubusercontent.com/fingerprintiq/skills/main/fingerprintiq/SKILL.md \ >> AGENTS.md
Or, if you want the skill available across all projects, drop it in ~/.codex/AGENTS.md:
bashmkdir -p ~/.codexcurl -fsSL https://raw.githubusercontent.com/fingerprintiq/skills/main/fingerprintiq/SKILL.md \ >> ~/.codex/AGENTS.md
The YAML frontmatter is harmless — Codex reads the body as instructions.
Cursor
Cursor supports two places for rule files: project-level .cursor/rules/*.mdc and legacy .cursorrules.
Project rules (preferred, Cursor 0.42+):
bashmkdir -p .cursor/rulescurl -fsSL https://raw.githubusercontent.com/fingerprintiq/skills/main/fingerprintiq/SKILL.md \ -o .cursor/rules/fingerprintiq.mdc
Legacy .cursorrules:
bashcurl -fsSL https://raw.githubusercontent.com/fingerprintiq/skills/main/fingerprintiq/SKILL.md \ >> .cursorrules
Windsurf
Windsurf reads .windsurfrules at the project root and global rules from the Settings pane.
bashcurl -fsSL https://raw.githubusercontent.com/fingerprintiq/skills/main/fingerprintiq/SKILL.md \ >> .windsurfrules
Aider
Aider picks up CONVENTIONS.md automatically when started with --read CONVENTIONS.md, or you can load any file inline:
bashcurl -fsSL https://raw.githubusercontent.com/fingerprintiq/skills/main/fingerprintiq/SKILL.md \ -o .aider/fingerprintiq.mdaider --read .aider/fingerprintiq.md
Continue.dev
Add the skill as a custom context provider or a rule in ~/.continue/config.json:
json{ "rules": [ "https://raw.githubusercontent.com/fingerprintiq/skills/main/fingerprintiq/SKILL.md" ]}
Or inline it in a project .continue/rules.md.
Zed
Zed's assistant reads .zed/assistant_rules.md at the project root:
bashmkdir -p .zedcurl -fsSL https://raw.githubusercontent.com/fingerprintiq/skills/main/fingerprintiq/SKILL.md \ > .zed/assistant_rules.md
Generic — any agent that reads AGENTS.md
The AGENTS.md convention is supported by most modern coding agents, including Sourcegraph Cody, Replit Ghostwriter, and several open-source agents. Drop the skill content into AGENTS.md at your project root:
bashcurl -fsSL https://raw.githubusercontent.com/fingerprintiq/skills/main/fingerprintiq/SKILL.md \ >> AGENTS.md
Using it
Once installed, try prompts like:
- "Add fingerprintiq to this Next.js app so I can block bot checkouts."
- "Wire up @fingerprintiq/server sentinel middleware on my Hono routes and log the caller type."
- "Add Pulse to my CLI so I can see unique machines and command frequency. Python."
- "Look up a visitor by id from our FastAPI backend using fingerprintiq."
The agent should now reach for the right product, the right package subpath (e.g. @fingerprintiq/js/next), the right framework middleware (e.g. @fingerprintiq/server/hono), and — crucially — verify trust decisions on the server rather than trusting the client response.
The skill reminds the agent to never trust the client identify() response alone for access decisions. Expect it to add a server-side GET /v1/events/:requestId verification step automatically.
Keeping it up to date
The skill lives in the public fingerprintiq/skills repo and is automatically mirrored from our private SDK monorepo on every release, so the main branch always matches the latest published SDK surface. Re-run the curl command any time you want the latest version — it's idempotent and safe to overwrite.
If you want to pin to a specific commit:
texthttps://raw.githubusercontent.com/fingerprintiq/skills/<commit-sha>/fingerprintiq/SKILL.md
Why a skill beats "just read the docs"
Coding agents don't reliably read full documentation sites mid-task — they pattern-match to what they already know. That means unless you hand them the exact current shape of @fingerprintiq/js, @fingerprintiq/server, and @fingerprintiq/pulse, they tend to:
- Import from
@fingerprint/jsorfingerprintjs-pro(wrong package) - Pass
options.apiKeyto a static method instead ofnew FingerprintIQ({ apiKey }) - Make trust decisions on the client response alone
- Call
requestWalletConnection()on page load, which triggers a MetaMask popup - Confuse Sentinel (server-side classification) with Identify (client-side fingerprint)
The skill is a ~400-line cheat sheet that lives in the agent's context when it's relevant and stays out of the way when it isn't. One curl, and every future FingerprintIQ integration in that workspace starts from a correct baseline.
Questions or contributions
File an issue on fingerprintiq/skills. If the skill gets something wrong — a renamed export, a new framework subpath, a missing pattern — open an issue and we'll cut a new version.