clarity-audit/SKILL.md
Clarity smart contract security audit — structured review covering correctness, security vulnerabilities, design concerns, and deployment readiness.
npx skillsauth add aibtcdev/skills clarity-auditInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Structured security audit for Clarity smart contracts. Produces a comprehensive review covering correctness, security vulnerabilities, design concerns, and deployment readiness. Designed to work both as a standalone skill (structured JSON output) and as the foundation for the clarity-expert agent (open-ended reasoning).
This is a doc-only skill. Agents read this file to understand the audit framework and invoke it through the skill framework or clarity-expert agent. The CLI interface below documents the planned implementation.
bun run clarity-audit/clarity-audit.ts <subcommand> [options]
Run a full structured audit on a Clarity contract.
bun run clarity-audit/clarity-audit.ts audit --source <path-to-file.clar> [--contract-id <deployed-contract-id>] [--severity-threshold <level>]
Options:
--source (required) — Path to the .clar source file to audit--contract-id (optional) — Deployed contract ID for on-chain verification; enables cross-referencing deployed vs source--severity-threshold (optional) — Minimum severity to report: critical, high, medium, low (default: low)Output:
{
"file": "contracts/my-contract.clar",
"summary": "Token transfer contract with admin controls and minting capability",
"verdict": "CONDITIONAL_PASS",
"riskLevel": "MEDIUM",
"stats": {
"publicFunctions": 5,
"readOnlyFunctions": 3,
"privateFunctions": 2,
"maps": 2,
"dataVars": 1,
"constants": 8
},
"whatWorksCorrectly": [
"Transfer function uses try! for error propagation",
"Admin functions check tx-sender against owner constant",
"Events follow structured notification/payload format"
],
"bugs": [
{
"severity": "high",
"title": "Unbounded mint allows infinite token supply",
"location": {"function": "mint", "line": 45},
"description": "The mint function has no supply cap check. Any admin can mint unlimited tokens.",
"recommendation": "Add MAX_SUPPLY constant and check (< (+ current-supply amount) MAX_SUPPLY) before minting",
"category": "logic"
}
],
"designConcerns": [
{
"severity": "medium",
"title": "Single admin with no succession plan",
"description": "CONTRACT_OWNER is set at deploy time with no transfer mechanism",
"recommendation": "Add set-admin function with two-step transfer (propose + accept)"
}
],
"gasAnalysis": {
"mostExpensiveFunction": "batch-transfer",
"concern": "fold over list of 200 recipients may approach block limits"
}
}
Run a lightweight scan focused on critical and high severity issues only.
bun run clarity-audit/clarity-audit.ts quick-check --source <path-to-file.clar>
Options:
--source (required) — Path to the .clar source fileOutput:
{
"file": "contracts/my-contract.clar",
"criticalIssues": 0,
"highIssues": 1,
"quickVerdict": "REVIEW_NEEDED",
"findings": [
{
"severity": "high",
"title": "Unbounded mint allows infinite token supply",
"line": 45,
"fix": "Add MAX_SUPPLY cap"
}
]
}
Audit a single function in detail with color-coded risk assessment.
bun run clarity-audit/clarity-audit.ts function-review --source <path-to-file.clar> --function <function-name>
Options:
--source (required) — Path to the .clar source file--function (required) — Function name to reviewOutput:
{
"function": "transfer",
"visibility": "public",
"riskColor": "ORANGE",
"riskReason": "Token transfer with external call",
"parameters": [
{"name": "amount", "type": "uint", "validated": true},
{"name": "to", "type": "principal", "validated": false}
],
"checks": [
{"check": "Input validation", "status": "partial", "detail": "amount checked but recipient not validated"},
{"check": "Proper sender check", "status": "pass", "detail": "Uses tx-sender correctly"},
{"check": "Error propagation", "status": "pass", "detail": "Uses try! for ft-transfer?"},
{"check": "Post-condition safe", "status": "warn", "detail": "No post-condition hints in contract"},
{"check": "Reentrancy safe", "status": "pass", "detail": "State changes before external calls"}
],
"recommendation": "Add recipient validation (not contract principal) if transfers should be restricted to standard principals"
}
| Color | Meaning | Examples |
|-------|---------|---------|
| GREEN | Harmless read-only | get-balance, get-stats |
| YELLOW | State changes with proper guards | check-in with auth, vote with snapshot |
| ORANGE | Token transfers, external calls | transfer, swap, any contract-call? |
| RED | Critical — admin functions, treasury access | withdraw, mint, set-admin, upgrade |
| Category | What it covers |
|----------|---------------|
| logic | Incorrect behavior, missing checks, wrong conditions |
| security | Reentrancy, overflow, access control bypass, locked funds |
| design | Architecture issues, missing features, upgrade concerns |
| gas | Functions that may exceed block cost limits |
| standards | SIP compliance, event format, naming conventions |
| Level | Criteria |
|-------|---------|
| critical | Funds at risk, contract can be bricked, exploitable by anyone |
| high | Significant logic errors, access control issues, economic attacks |
| medium | Non-critical issues that affect functionality or user experience |
| low | Best practice violations, code quality, documentation gaps |
clarity-expert agentclarity-check for pre-deployment validationclarity-test-scaffolddevelopment
Web of Trust operations for Nostr pubkeys — trust scoring, sybil detection, trust path analysis, neighbor discovery, follow recommendations, and network health. Free tier (wot.klabo.world, 50 req/day) with paid fallback (maximumsats.com, 100 sats via L402). Covers 52K+ pubkeys and 2.4M+ zap-weighted trust edges. Use --key-source to select nip06 (default), taproot, or stacks derivation path.
data-ai
BTC ordinals marketplace operations via Magic Eden — browse active listings, list inscriptions for sale via PSBT flow, submit signed listings, buy inscriptions, and cancel active listings. BTC ordinals only (not Solana). Mainnet-only.
testing
Pay-per-call access to LunarCrush social and market intelligence (Galaxy Score, AltRank, market cap rank, price, 24h change) via x402 on Stacks. USD-pegged pricing recomputed hourly from live STX/USD. Mainnet endpoint live; testnet supported.
devops
Detects HODLMM LP inventory drift (token-ratio imbalance from one-sided swap flow) and restores the target ratio via a corrective Bitflow swap plus a hodlmm-move-liquidity redeploy, gated by the 4h per-pool cooldown.