Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Expert integration with Slither static analyzer for smart contract vulnerability detection, code quality analysis, and security reporting. Supports all Slither detectors and custom analysis configurations.
.claude/skills/a5c-ai-slither-analysis/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 65% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 155% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 28% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 28% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 117% | 0% |
Expert-level integration with Slither, the leading static analysis framework for Solidity smart contracts.
bash# Install via pip pip install slither-analyzer # Or via pipx for isolation pipx install slither-analyzer # Verify installation slither --version
bash# Analyze single file slither Contract.sol # Analyze Foundry project slither . --foundry-compile-all # Analyze Hardhat project slither . --hardhat-compile-all
bash# Human readable (default) slither . # JSON output for processing slither . --json output.json # Markdown report slither . --checklist # SARIF for CI integration slither . --sarif output.sarif
| Detector | Description | |----------|-------------| | reentrancy-eth | Reentrancy with ETH transfer | | reentrancy-no-eth | Reentrancy without ETH | | arbitrary-send-eth | Arbitrary ETH send | | controlled-delegatecall | Controlled delegatecall | | suicidal | Functions allowing anyone to destruct | | uninitialized-storage | Uninitialized storage variables |
| Detector | Description | |----------|-------------| | reentrancy-benign | Benign reentrancy | | incorrect-equality | Dangerous strict equality | | locked-ether | Contracts that lock ether | | missing-zero-check | Missing zero address validation | | unchecked-transfer | Unchecked token transfers |
| Detector | Description | |----------|-------------| | naming-convention | Naming convention violations | | external-function | Functions that could be external | | constable-states | State variables that could be constant | | immutable-states | State variables that could be immutable |
json{ "detectors_to_run": "all", "exclude_informational": false, "exclude_low": false, "exclude_medium": false, "exclude_high": false, "exclude_optimization": false, "fail_on": "high,medium", "filter_paths": [ "node_modules", "lib", "test" ], "exclude_dependencies": true, "legacy_ast": false }
bash# Run specific detectors slither . --detect reentrancy-eth,uninitialized-storage # Exclude detectors slither . --exclude naming-convention,external-function # Filter by severity slither . --exclude-informational --exclude-low # Exclude specific paths slither . --filter-paths "test|lib|node_modules"
bash# Generate call graph slither . --print call-graph # Generate inheritance graph slither . --print inheritance-graph # Generate contract summary slither . --print contract-summary
bash# Print function summaries slither . --print function-summary # Print variable order (storage layout) slither . --print variable-order # Print data dependency slither . --print data-dependency
python# custom_detector.py from slither.detectors.abstract_detector import AbstractDetector, DetectorClassification class MyCustomDetector(AbstractDetector): ARGUMENT = "my-detector" HELP = "Detect my custom issue" IMPACT = DetectorClassification.HIGH CONFIDENCE = DetectorClassification.HIGH WIKI = "https://example.com/my-detector" WIKI_TITLE = "My Custom Detector" WIKI_DESCRIPTION = "Detects..." WIKI_EXPLOIT_SCENARIO = "..." WIKI_RECOMMENDATION = "..." def _detect(self): results = [] for contract in self.compilation_unit.contracts_derived: for function in contract.functions: # Detection logic if self._has_issue(function): info = [function, " has an issue\n"] results.append(self.generate_result(info)) return results
yamlname: Slither Analysis on: [push, pull_request] jobs: slither: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 - name: Install Slither run: pip install slither-analyzer - name: Run Slither run: slither . --foundry-compile-all --fail-on high --sarif results.sarif - name: Upload SARIF uses: github/codeql-action/upload-sarif@v2 with: sarif_file: results.sarif
json{ "success": true, "error": null, "results": { "detectors": [ { "check": "reentrancy-eth", "impact": "High", "confidence": "Medium", "description": "Reentrancy in Contract.withdraw()...", "elements": [...], "first_markdown_element": "...", "id": "abc123" } ] } }
| Process | Purpose | |---------|---------| | smart-contract-security-audit.js | Primary security analysis | | smart-contract-development-lifecycle.js | Development validation | | formal-verification.js | Pre-verification checks |
| Tool | Purpose | |------|---------| | Slither | Core static analyzer | | crytic-compile | Compilation framework | | slither-doctor | Configuration debugger |
--triage-database to track false positivesskills/mythril-symbolic/SKILL.md - Symbolic execution analysisskills/echidna-fuzzer/SKILL.md - Property-based fuzzingagents/solidity-auditor/AGENT.md - Security auditor agent| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 7,576 | 3,211 | -58% | 1 | 1 | 0% | 1,397 | 2,312 | +65% | 0 | 0 | — |
case-02 | fail→pass | 17,777 | 5,944 | -67% | 1 | 1 | 0% | 1,136 | 2,901 | +155% | 0 | 0 | — |
case-03 | fail→fail | 11,116 | 8,511 | -23% | 1 | 1 | 0% | 2,295 | 3,462 | +51% | 0 | 0 | — |
case-04 | fail→fail | 10,162 | 9,187 | -10% | 1 | 1 | 0% | 2,036 | 3,671 | +80% | 0 | 0 | — |
case-05 | fail→fail | 5,995 | 6,956 | +16% | 1 | 1 | 0% | 958 | 2,112 | +120% | 0 | 0 | — |
case-06 | fail→pass | 8,902 | 2,959 | -67% | 1 | 1 | 0% | 1,654 | 2,109 | +28% | 0 | 0 | — |
case-07 | fail→fail | 4,202 | 3,201 | -24% | 1 | 1 | 0% | 877 | 2,152 | +145% | 0 | 0 | — |
case-08 | fail→fail | 6,908 | 3,426 | -50% | 1 | 1 | 0% | 1,367 | 2,326 | +70% | 0 | 0 | — |
case-09 | fail→fail | 10,280 | 3,515 | -66% | 1 | 1 | 0% | 1,740 | 2,360 | +36% | 0 | 0 | — |
case-10 | fail→pass | 9,182 | 3,687 | -60% | 1 | 1 | 0% | 1,878 | 2,410 | +28% | 0 | 0 | — |
case-11 | fail→fail | 5,933 | 3,628 | -39% | 1 | 1 | 0% | 1,016 | 2,403 | +137% | 0 | 0 | — |
case-12 | fail→pass | 5,981 | 2,974 | -50% | 1 | 1 | 0% | 1,006 | 2,187 | +117% | 0 | 0 | — |
case-13 | fail→fail | 8,324 | 4,508 | -46% | 1 | 1 | 0% | 1,272 | 2,586 | +103% | 0 | 0 | — |
case-14 | fail→fail | 6,058 | 2,999 | -50% | 1 | 1 | 0% | 1,003 | 2,224 | +122% | 0 | 0 | — |
case-15 | fail→pass | 6,112 | 6,051 | -1% | 1 | 1 | 0% | 1,223 | 2,741 | +124% | 0 | 0 | — |
case-16 | fail→pass | 8,040 | 2,422 | -70% | 1 | 1 | 0% | 1,359 | 2,140 | +57% | 0 | 0 | — |
case-17 | fail→pass | 16,724 | 8,192 | -51% | 1 | 1 | 0% | 2,551 | 3,307 | +30% | 0 | 0 | — |
case-18 | fail→pass | 9,810 | 5,266 | -46% | 1 | 1 | 0% | 1,791 | 2,689 | +50% | 0 | 0 | — |
case-19 | fail→fail | 5,937 | 3,177 | -46% | 1 | 1 | 0% | 1,056 | 2,354 | +123% | 0 | 0 | — |
case-20 | fail→fail | 9,752 | 6,915 | -29% | 1 | 1 | 0% | 1,641 | 2,950 | +80% | 0 | 0 | — |
case-21 | fail→fail | 12,586 | 9,919 | -21% | 1 | 1 | 0% | 2,374 | 3,621 | +53% | 0 | 0 | — |
case-22 | fail→fail | 9,747 | 9,979 | +2% | 1 | 1 | 0% | 2,159 | 3,737 | +73% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +41 percentage points is the difference between those two pass rates over the 21 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.