weasel-poc
Proof of Concept exploit writing for Solidity vulnerabilities. Triggers on weasel poc, weasel prove, weasel exploit, or weasel demonstrate.
What this skill does
# Weasel PoC Writer
Expert in creating proof-of-concept exploits for smart contract vulnerabilities.
## When to Activate
- User wants to prove a vulnerability exists
- User asks for a PoC or exploit
- User wants to demonstrate an attack
## Process
1. **Understand** - What's the bug? What's the attack outcome?
2. **Find existing tests** - Look in `test/` for existing setup
3. **Write PoC** - Add to existing test file OR create new if none exists
4. **Run** - Execute and show result
**Do NOT** run Weasel analysis - user already found the bug!
## Critical Rules
### File Placement
- **Prefer existing test file** - Use dev's setup, add your test function
- **New file only if** no corresponding test exists
- Match project conventions (naming, directory)
### Use Real Contracts
- **NEVER** mock or simulate the vulnerable contract
- **ALWAYS** use the actual contract with real deployment
- Use project's existing deployment/fixture setup
### Code Style
- **Numbered steps** with comments explaining logic (not every line)
- **Assertions prove the vulnerability** - not console output
- The report tells the story, the PoC just proves it
### Console Output Rules (CRITICAL)
**NEVER use console.log/println/print for:**
- Celebration/confirmation: `"✓ CONFIRMED"`, `"VULNERABILITY FOUND"`, `"SUCCESS"`
- Banners: `"=== Results ==="`, `"--- Attack ---"`, `"******"`
- Explanatory text: `"Impact: funds stolen"`, `"Attack complete"`
- Checkmarks, emojis, X marks, or decorative output
- Summaries of what happened
**Assertions prove the vulnerability, not console output.**
```solidity
// BAD - spam that adds nothing
console.log("=== ATTACK RESULTS ===");
console.log("✓ CONFIRMED: Reentrancy vulnerability");
console.log(" - Attacker profit:", profit);
console.log(" - Victim loss:", loss);
console.log("VULNERABILITY PROVEN");
// GOOD - assertions speak for themselves
assertGt(attacker.balance, initialBalance, "Attacker should profit");
assertEq(vault.balance, 0, "Vault should be drained");
```
**Only acceptable console output:**
- Debugging values during development: `console.log("balance:", bal)` — remove before final
- Complex multi-step traces when assertion alone is unclear
### Pre-Commit Checklist
Before finalizing PoC, verify:
- [ ] Zero console output with ✓, ===, "CONFIRMED", "VULNERABILITY", "ATTACK", "SUCCESS"
- [ ] Zero banners, celebration messages, or summaries
- [ ] Numbered step comments (`// 1.`, `// 2.`, `// 3.`)
- [ ] Assertions prove the impact (not console.log)
- [ ] Test name is descriptive: `test_<VulnType>_<WhatItProves>_PoC`
### Rationalizations to Reject
| Rationalization | Why It's Wrong |
|-----------------|----------------|
| "Console output helps explain the attack" | That's what the report is for. PoC proves, report explains. |
| "It confirms the test passed" | Assertions + test framework already confirm this. |
| "It makes the output clearer" | It makes it noisy. Clean PoC = assertions only. |
| "Just a few logs won't hurt" | They train bad habits and pollute output. Zero tolerance. |
## PoC Structure
```solidity
function test_VulnerabilityName_PoC() public {
// 1. Setup attacker position
// ... setup code ...
// 2. Execute attack
// ... attack code ...
// 3. Verify impact
assertGt(attacker.balance, initialBalance);
}
```
**Key elements:**
- Descriptive test name: `test_Reentrancy_Withdraw_PoC`
- Clear step comments (1, 2, 3...)
- Assertions prove the impact
## Framework Detection
**Foundry:** Look for foundry.toml, then run forge test with match-test flag
**Hardhat:** Look for hardhat.config.js/ts, then run npx hardhat test
## Output
Keep it minimal:
```
PoC written: test/Vault.t.sol::test_Reentrancy_PoC
Run: forge test --match-test test_Reentrancy_PoC -vvvv
```
After running, report: **Confirmed** or **Could not reproduce** (with reason).
Related in Writing & Docs
jax-development
IncludedUse this skill when the user is writing, debugging, profiling, refactoring, reviewing, benchmarking, parallelising, exporting, or explaining JAX code, or when they mention JAX, jax.numpy, jit, grad, value_and_grad, vmap, scan, lax, random keys, pytrees, jax.Array, sharding, Mesh, PartitionSpec, NamedSharding, pmap, shard_map, Pallas, XLA, StableHLO, checkify, profiler, or the JAX repo. It helps turn NumPy or PyTorch-style code into pure functional JAX, fix tracer/control-flow/shape/PRNG bugs, remove recompiles and host-device syncs, choose transforms and sharding strategies, inspect jaxpr/lowering/IR, and benchmark compiled code correctly.
nature-article-writer
IncludedDrafts, rewrites, diagnostically critiques, and style-calibrates primary research manuscripts for Nature and Nature Portfolio journals. Use when the user wants a Nature-style title, summary paragraph or abstract, introduction, results, discussion, methods, figure legends, presubmission enquiry, cover letter, reviewer response, or when a scientific draft sounds generic, jargon-heavy, structurally weak, or AI-ish and needs precise, broad-reader-friendly prose without inventing data, analyses, or references. Best for primary research articles and letters rather than reviews or press releases unless explicitly adapting one.
deckrd
IncludedDocument-driven framework that derives requirements, specifications, implementation plans, and executable tasks from goals through structured AI dialogue. Use when user says "write requirements", "create spec", "plan implementation", "derive tasks", "structure this feature", "break down into tasks", or "document this module". Also use for reverse engineering existing code into docs (/deckrd rev). Do NOT use for direct code writing — use /deckrd-coder after tasks are generated. Do NOT use when the user only wants to run or fix existing code without planning.
clinical-decision-support
IncludedGenerate professional clinical decision support (CDS) documents for pharmaceutical and clinical research settings, including patient cohort analyses (biomarker-stratified with outcomes) and treatment recommendation reports (evidence-based guidelines with decision algorithms). Supports GRADE evidence grading, statistical analysis (hazard ratios, survival curves, waterfall plots), biomarker integration, and regulatory compliance. Outputs publication-ready LaTeX/PDF format optimized for drug development, clinical research, and evidence synthesis.
handling-sf-data
IncludedSalesforce data operations with 130-point scoring. Use this skill to create, update, delete, bulk import/export, generate test data, and clean up org records using sf CLI and anonymous Apex. TRIGGER when: user creates test data, performs bulk import/export, uses sf data CLI commands, needs data factory patterns for Apex tests, or needs to seed/clean records in a Salesforce org. DO NOT TRIGGER when: SOQL query writing only (use querying-soql), Apex test execution (use running-apex-tests), or metadata deployment (use deploying-metadata).
accelint-ac-to-playwright
IncludedConvert and validate acceptance criteria for Playwright test automation. Use when user asks to (1) review/evaluate/check if AC are ready for automation, (2) assess if AC can be converted as-is, (3) validate AC quality for Playwright, (4) turn AC into tests, (5) generate tests from acceptance criteria, (6) convert .md bullets or .feature Gherkin files to Playwright specs, (7) create test automation from requirements. Handles both bullet-style markdown and Gherkin syntax with JSON test plan generation and validation.