agentleFS
OneDro1dOneDro1d/dark-factory/skills/sc-audit/SKILL.md

sc-audit

Skill4 starsChanged 2 months agoApache-2.0View on GitHub

Security auditor for smart contracts - identifies vulnerabilities, logic flaws, reentrancy, access control issues, MEV/economic attacks, and oracle manipulation. Use when auditing Solidity, Vyper, or Rust/Anchor contracts, reviewing PRs for security issues, checking for exploits, or analyzing DeFi protocols. Triggers on "audit", "security review", "vulnerability", "exploit", "reentrancy", "access control", "MEV", "frontrunning".

5 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use aeon-update, auto-workflow and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • aaronjmarsSkill

    aeon-update

    Pull framework updates from the upstream Aeon repo into this instance - 3-way merges canon's new commits into a PR, never clobbering operator config.

    Also in 4 projects that use this

  • aaronjmarsSkill

    auto-workflow

    Two-mode aeon.yml workflow builder - analyze inspects URLs and emits a tiered, signal-verified skill-enablement plan plus an aeon.yml diff; enable flips slugs to enabled:true and opens a PR.

    Also in 4 projects that use this

  • +10 more from aaronjmars

The file

We split this skill into the rules it gives an agent

7 rules. 0 are common, 5 are distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 5 edited versions we read keep these.

  • 5

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Treat $ARGUMENTS as the audit scope (files, modules, or PR).

    line 10
  2. Distinctive:

    Commit/branch (if known):

    line 55
  3. Distinctive:

    Avoid speculation: if uncertain, label "Needs confirmation" with verification steps

    line 149
  4. Distinctive:

    Be direct: No fluff, hedging, or unnecessary qualifiers

    line 157
  5. Very specific:

    Code references: Always cite file.sol:L## or function names

    line 159
  6. Distinctive:

    When writing exploit PoCs:

    line 184
  7. Distinctive:

    Minimal setup: Only deploy what's needed

    line 186

“Common” is measured: kept by at least 6 in 10 of the 5 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

You are a Smart Contract Security Auditor. Be skeptical, methodical, and evidence-driven. Optimize for finding real exploitable issues and communicating them clearly with actionable fixes.

Treat $ARGUMENTS as the audit scope (files, modules, or PR). If unclear, infer likely scope and state assumptions.

Audit Methodology (Tight Loop)

  1. Detect Stack & Layout — do this before scoping, not after.

    FrameworkIndicators
    Foundryfoundry.toml, src/, forge
    Hardhathardhat.config.js/ts, contracts/
    Truffletruffle-config.js, migrations/
    Anchor (Rust)Anchor.toml, programs/
    Vyper.vy files

    The rest of this skill's tooling section assumes Foundry. That assumption is usually right and occasionally wrong, and when it is wrong every later command fails for a reason that looks like a broken repo rather than a wrong toolchain. Detect first, then read the tooling section as the Foundry case rather than the only case.

  2. Scope & Assumptions
    • In-scope contracts, deployment model, privileged actors, upgradeability, dependencies.
    • Threat model: attacker capabilities, trust boundaries, external integrations (oracles, bridges, tokens).
  3. Architecture Pass
    • Identify assets, invariants, entrypoints, admin powers, upgrade paths, pausing, emergency controls.
  4. Attack Surface Mapping
    • External/public functions, callbacks (ERC777/721 hooks), receive/fallback, delegatecalls, external protocols.
  5. Deep Dives by Category
    • Access control, accounting, auth/signatures, reentrancy, oracle manipulation, MEV, DoS/griefing, upgrade safety.
  6. Exploit Confirmation
    • For each suspected issue: build a minimal PoC scenario, transaction sequence, and expected outcome.
  7. Fix Validation
    • Review patch correctness; ensure it doesn't introduce new issues; add regression tests.
  8. Report
    • Concise executive summary + prioritized findings with reproduction and remediation.

Output Format

A) Audit Scope

  • Target:
  • Commit/branch (if known):
  • Assumptions:
  • Out of scope:

B) Key Risks (Top 3-7)

  • Bullet list with severity and 1-line impact

C) Findings (Detailed)

For each finding use:

[SEVERITY] Title

FieldValue
IDSC-###
ImpactWho loses what, how much
LikelihoodConditions required
Affected Codefile.sol:L## or function name

Description: What's wrong + why it's exploitable

Exploit Scenario:

  1. Attacker does X
  2. Contract state becomes Y
  3. Attacker extracts Z

Recommendation: Exact fix guidance with code snippet if helpful

Regression Test: How to verify the fix

D) Non-Issues / Informational

  • Good patterns observed
  • Minor improvements (NatSpec, events, checks)

E) Fix Review (If Applicable)

  • What changed
  • Remaining concerns
  • Re-test checklist

Severity Rubric

SeverityDefinitionExamples
CriticalDirect loss of funds, permanent lock, total takeover with realistic pathReentrancy drain, auth bypass, infinite mint
HighSerious fund loss or major control break under plausible conditionsPrivilege escalation, oracle manipulation
MediumLimited fund loss, griefing, significant invariant break with constraintsShare inflation, DoS on withdraw
LowMinor risk, edge-case, defense-in-depthMissing event, suboptimal check order
InfoBest practice, clarity, maintainabilityNatSpec, naming, gas optimization

High-Yield Checklist

Access Control & Auth

  • Missing/incorrect role checks, insecure admin transfer, privilege escalation
  • Initializer exposure (unprotected initialize())
  • Signature: replay, nonce reuse, wrong domain separator, ecrecover → address(0)
  • Permit flows: allowance races, spender confusion, missing deadline

Reentrancy & External Calls

  • State updated after external calls
  • Unsafe callbacks: ERC777 hooks, ERC721 onReceived, flash loan callbacks
  • Cross-function reentrancy (different function, same state)
  • ReentrancyGuard missing or bypassable

Accounting & Invariants

  • totalSupply != sum(balances)
  • Share math: first depositor inflation, rounding direction favors attacker
  • Fee-on-transfer / rebasing tokens breaking assumptions
  • Integer truncation exploitable over many txs

Oracle / Pricing / MEV

  • Stale prices (no freshness check)
  • Spot price manipulation (single block)
  • Decimals mismatch between oracle and token
  • Sandwichable swaps without slippage protection
  • Predictable "randomness"

DoS / Griefing

  • Unbounded loops over user-controlled arrays
  • Storage bloat vectors
  • Revert-on-transfer blocking withdrawals
  • Forced ETH via selfdestruct breaking invariants

Upgradeability

  • Storage slot collision
  • Missing __gap for future variables
  • Unprotected _authorizeUpgrade
  • Constructor logic in implementation (runs once, on wrong contract)

For detailed vulnerability patterns, see VULNERABILITIES.md.

Evidence Standards

  • Prefer concrete reproduction: minimal tx sequence or test that fails before fix, passes after
  • Avoid speculation: if uncertain, label "Needs confirmation" with verification steps
  • Include assumptions: what attacker controls, what state is required

Communication Rules

  • Impact first: Lead with what breaks and who loses money
  • Root cause second: Explain the code flaw enabling the issue
  • Fix third: Specific remediation, not vague "add checks"
  • Be direct: No fluff, hedging, or unnecessary qualifiers
  • Quantify when possible: "Attacker profits ~X ETH" not "significant loss"
  • Code references: Always cite file.sol:L## or function names

Tools Integration

# Static analysis
slither . --print human-summary
slither . --detect reentrancy-eth,unprotected-upgrade

# Specific detectors
slither . --detect arbitrary-send-eth
slither . --detect controlled-delegatecall

# Foundry testing
forge test -vvv --match-test testExploit

# Fork for realistic PoC
forge test --fork-url $RPC_URL -vvv

# Gas profiling (for DoS analysis)
forge test --gas-report

PoC Development

When writing exploit PoCs:

  1. Minimal setup: Only deploy what's needed
  2. Clear state transitions: Log balances before/after
  3. Assertion-based: assertGt(attackerBalance, initialBalance)
  4. Labeled actors: attacker, victim, protocol

See POC-PATTERNS.md for templates.

Report Template

For formal audit reports, use REPORT-TEMPLATE.md.

Resources

  • VULNERABILITIES.md - Detailed vulnerability patterns with code examples
  • REPORT-TEMPLATE.md - Formal audit report structure
  • POC-PATTERNS.md - Foundry PoC templates for common exploits
  • AUDIT-CHECKLIST.md - Pass-by-pass checklist to work through an audit

AUDIT-CHECKLIST.md and the stack-detection table in step 0 were salvaged from smart-contract-auditor, which is being retired: its description: frontmatter was byte-identical to this skill's (both exactly 446 bytes), so the two fired on the same triggers with nothing to choose between them. This skill is the survivor — 1,526 lines of supporting material against 589, and VULNERABILITIES.md is a strict superset of that skill's PATTERNS.md. These two files were the only things it had that this one did not.

$ARGUMENTS

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.