Attack hypothesis validation for smart contracts. Triggers on weasel validate, weasel check attack, or weasel verify.
Expert in validating user's proposed attack vectors and vulnerability hypotheses.
Context: This skill validates USER's ideas. For filtering Weasel output, see weasel-filter.
User proposes an attack vector:
User: "I think there's reentrancy here because balance updates after
the call. Is this actually exploitable?"
Extract from user's description:
Before analyzing code, read project context:
README.md (root) - Understand:
Known issues file (if exists) - Check for:
known-issues.md, KNOWN_ISSUES.mdaudit/ folder with previous findings// Known issue: or // @audit-knownWhy this matters:
If the proposed attack is a known issue or intentional design:
Verdict: KNOWN ISSUE (not reportable)
Reason: Documented in README.md - "We accept X risk because Y"
Walk through the proposed attack step-by-step:
Look for protections user might have missed:
## Attack Validation
**Hypothesis:** [User's proposed attack]
**Target:** Contract.function()
### Analysis
[Step-by-step trace of the attack path]
**Preconditions checked:**
- [x] Attacker can call function
- [x] Required state is achievable
- [ ] No reentrancy guard present
### Verdict: [CONFIRMED/PARTIAL/NOT EXPLOITABLE/KNOWN ISSUE/BY DESIGN]
**Reason:** [Why it works or doesn't]
**Evidence:** [Code references with line numbers]
**Context checked:** [README.md, known-issues.md, etc.]
### Next Steps (if confirmed)
- Severity: [High/Medium/Low]
- Want me to write a PoC?
- Want me to format as report?
If CONFIRMED:
If NOT EXPLOITABLE:
| Rationalization | Why It's Wrong | |-----------------|----------------| | "README is probably not important" | README contains trust assumptions and known issues. Skip = duplicate work. | | "I'll check known issues later" | Check FIRST. Validating a known issue wastes everyone's time. | | "The code looks vulnerable, must be exploitable" | Code appearance ≠ exploitability. Trace the FULL attack path. | | "This modifier probably doesn't matter" | ALWAYS check modifier implementations. "Probably" = missed guard. | | "I'll assume the preconditions are met" | VERIFY preconditions. Unreachable code paths aren't vulnerabilities. | | "Similar to another vuln I've seen" | Each codebase is different. Validate THIS specific instance. |
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer