[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-trail-of-bits-entry-point-analyzer":3,"mdc--oudlzz-key":38,"related-org-trail-of-bits-entry-point-analyzer":2848,"related-repo-trail-of-bits-entry-point-analyzer":3000},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":33,"sourceUrl":36,"mdContent":37},"entry-point-analyzer","identify smart contract entry points for auditing","Analyzes smart contract codebases to identify state-changing entry points for security auditing. Detects externally callable functions that modify state, categorizes them by access level (public, admin, role-restricted, contract-only), and generates structured audit reports. Excludes view\u002Fpure\u002Fread-only functions. Use when auditing smart contracts (Solidity, Vyper, Solana\u002FRust, Move, TON, CosmWasm) or when asked to find entry points, audit flows, external functions, access control patterns, or privileged operations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"trail-of-bits","Trail of Bits","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Ftrail-of-bits.png","trailofbits",[13,17,20,23],{"name":14,"slug":15,"type":16},"Security","security","tag",{"name":18,"slug":19,"type":16},"Audit","audit",{"name":21,"slug":22,"type":16},"Smart Contracts","smart-contracts",{"name":24,"slug":25,"type":16},"Code Analysis","code-analysis",6139,"https:\u002F\u002Fgithub.com\u002Ftrailofbits\u002Fskills","2026-07-18T05:48:00.397299",null,541,[32],"agent-skills",{"repoUrl":27,"stars":26,"forks":30,"topics":34,"description":35},[32],"Trail of Bits Claude Code skills for security research, vulnerability detection, and audit workflows","https:\u002F\u002Fgithub.com\u002Ftrailofbits\u002Fskills\u002Ftree\u002FHEAD\u002Fplugins\u002Fentry-point-analyzer\u002Fskills\u002Fentry-point-analyzer","---\nname: entry-point-analyzer\ndescription: Analyzes smart contract codebases to identify state-changing entry points for security auditing. Detects externally callable functions that modify state, categorizes them by access level (public, admin, role-restricted, contract-only), and generates structured audit reports. Excludes view\u002Fpure\u002Fread-only functions. Use when auditing smart contracts (Solidity, Vyper, Solana\u002FRust, Move, TON, CosmWasm) or when asked to find entry points, audit flows, external functions, access control patterns, or privileged operations.\nallowed-tools: Read Grep Glob Bash\n---\n\n# Entry Point Analyzer\n\nSystematically identify all **state-changing** entry points in a smart contract codebase to guide security audits.\n\n## When to Use\n\nUse this skill when:\n- Starting a smart contract security audit to map the attack surface\n- Asked to find entry points, external functions, or audit flows\n- Analyzing access control patterns across a codebase\n- Identifying privileged operations and role-restricted functions\n- Building an understanding of which functions can modify contract state\n\n## When NOT to Use\n\nDo NOT use this skill for:\n- Vulnerability detection (use audit-context-building or domain-specific-audits)\n- Writing exploit POCs (use solidity-poc-builder)\n- Code quality or gas optimization analysis\n- Non-smart-contract codebases\n- Analyzing read-only functions (this skill excludes them)\n\n## Scope: State-Changing Functions Only\n\nThis skill focuses exclusively on functions that can modify state. **Excluded:**\n\n| Language | Excluded Patterns |\n|----------|-------------------|\n| Solidity | `view`, `pure` functions |\n| Vyper | `@view`, `@pure` functions |\n| Solana | Functions without `mut` account references |\n| Move | Non-entry `public fun` (module-callable only) |\n| TON | `get` methods (FunC), read-only receivers (Tact) |\n| CosmWasm | `query` entry point and its handlers |\n\n**Why exclude read-only functions?** They cannot directly cause loss of funds or state corruption. While they may leak information, the primary audit focus is on functions that can change state.\n\n## Workflow\n\n1. **Detect Language** - Identify contract language(s) from file extensions and syntax\n2. **Use Tooling (if available)** - For Solidity, check if Slither is available and use it\n3. **Locate Contracts** - Find all contract\u002Fmodule files (apply directory filter if specified)\n4. **Extract Entry Points** - Parse each file for externally callable, state-changing functions\n5. **Classify Access** - Categorize each function by access level\n6. **Generate Report** - Output structured markdown report\n\n## Slither Integration (Solidity)\n\nFor Solidity codebases, Slither can automatically extract entry points. Before manual analysis:\n\n### 1. Check if Slither is Available\n\n```bash\nwhich slither\n```\n\n### 2. If Slither is Detected, Run Entry Points Printer\n\n```bash\nslither . --print entry-points\n```\n\nThis outputs a table of all state-changing entry points with:\n- Contract name\n- Function name\n- Visibility\n- Modifiers applied\n\n### 3. Use Slither Output as Foundation\n\n- Parse the Slither output table to populate your analysis\n- Cross-reference with manual inspection for access control classification\n- Slither may miss some patterns (callbacks, dynamic access control)—supplement with manual review\n- If Slither fails (compilation errors, unsupported features), fall back to manual analysis\n\n### 4. When Slither is NOT Available\n\nIf `which slither` returns nothing, proceed with manual analysis using the language-specific reference files.\n\n## Language Detection\n\n| Extension | Language | Reference |\n|-----------|----------|-----------|\n| `.sol` | Solidity | [{baseDir}\u002Freferences\u002Fsolidity.md]({baseDir}\u002Freferences\u002Fsolidity.md) |\n| `.vy` | Vyper | [{baseDir}\u002Freferences\u002Fvyper.md]({baseDir}\u002Freferences\u002Fvyper.md) |\n| `.rs` + `Cargo.toml` with `solana-program` | Solana (Rust) | [{baseDir}\u002Freferences\u002Fsolana.md]({baseDir}\u002Freferences\u002Fsolana.md) |\n| `.move` + `Move.toml` with `edition` | [{baseDir}\u002Freferences\u002Fmove-sui.md]({baseDir}\u002Freferences\u002Fmove-sui.md) |\n| `.move` + `Move.toml` with `Aptos` | [{baseDir}\u002Freferences\u002Fmove-aptos.md]({baseDir}\u002Freferences\u002Fmove-aptos.md) |\n| `.fc`, `.func`, `.tact` | TON (FunC\u002FTact) | [{baseDir}\u002Freferences\u002Fton.md]({baseDir}\u002Freferences\u002Fton.md) |\n| `.rs` + `Cargo.toml` with `cosmwasm-std` | CosmWasm | [{baseDir}\u002Freferences\u002Fcosmwasm.md]({baseDir}\u002Freferences\u002Fcosmwasm.md) |\n\nLoad the appropriate reference file(s) based on detected language before analysis.\n\n## Access Classification\n\nClassify each state-changing entry point into one of these categories:\n\n### 1. Public (Unrestricted)\nFunctions callable by anyone without restrictions.\n\n### 2. Role-Restricted\nFunctions limited to specific roles. Common patterns to detect:\n- Explicit role names: `admin`, `owner`, `governance`, `guardian`, `operator`, `manager`, `minter`, `pauser`, `keeper`, `relayer`, `lender`, `borrower`\n- Role-checking patterns: `onlyRole`, `hasRole`, `require(msg.sender == X)`, `assert_owner`, `#[access_control]`\n- When role is ambiguous, flag as **\"Restricted (review required)\"** with the restriction pattern noted\n\n### 3. Contract-Only (Internal Integration Points)\nFunctions callable only by other contracts, not by EOAs. Indicators:\n- Callbacks: `onERC721Received`, `uniswapV3SwapCallback`, `flashLoanCallback`\n- Interface implementations with contract-caller checks\n- Functions that revert if `tx.origin == msg.sender`\n- Cross-contract hooks\n\n## Output Format\n\nGenerate a markdown report with this structure:\n\n```markdown\n# Entry Point Analysis: [Project Name]\n\n**Analyzed**: [timestamp]\n**Scope**: [directories analyzed or \"full codebase\"]\n**Languages**: [detected languages]\n**Focus**: State-changing functions only (view\u002Fpure excluded)\n\n## Summary\n\n| Category | Count |\n|----------|-------|\n| Public (Unrestricted) | X |\n| Role-Restricted | X |\n| Restricted (Review Required) | X |\n| Contract-Only | X |\n| **Total** | **X** |\n\n---\n\n## Public Entry Points (Unrestricted)\n\nState-changing functions callable by anyone—prioritize for attack surface analysis.\n\n| Function | File | Notes |\n|----------|------|-------|\n| `functionName(params)` | `path\u002Fto\u002Ffile.sol:L42` | Brief note if relevant |\n\n---\n\n## Role-Restricted Entry Points\n\n### Admin \u002F Owner\n| Function | File | Restriction |\n|----------|------|-------------|\n| `setFee(uint256)` | `Config.sol:L15` | `onlyOwner` |\n\n### Governance\n| Function | File | Restriction |\n|----------|------|-------------|\n\n### Guardian \u002F Pauser\n| Function | File | Restriction |\n|----------|------|-------------|\n\n### Other Roles\n| Function | File | Restriction | Role |\n|----------|------|-------------|------|\n\n---\n\n## Restricted (Review Required)\n\nFunctions with access control patterns that need manual verification.\n\n| Function | File | Pattern | Why Review |\n|----------|------|---------|------------|\n| `execute(bytes)` | `Executor.sol:L88` | `require(trusted[msg.sender])` | Dynamic trust list |\n\n---\n\n## Contract-Only (Internal Integration Points)\n\nFunctions only callable by other contracts—useful for understanding trust boundaries.\n\n| Function | File | Expected Caller |\n|----------|------|-----------------|\n| `onFlashLoan(...)` | `Vault.sol:L200` | Flash loan provider |\n\n---\n\n## Files Analyzed\n\n- `path\u002Fto\u002Ffile1.sol` (X state-changing entry points)\n- `path\u002Fto\u002Ffile2.sol` (X state-changing entry points)\n```\n\n## Filtering\n\nWhen user specifies a directory filter:\n- Only analyze files within that path\n- Note the filter in the report header\n- Example: \"Analyze only `src\u002Fcore\u002F`\" → scope = `src\u002Fcore\u002F`\n\n## Analysis Guidelines\n\n1. **Be thorough**: Don't skip files. Every state-changing externally callable function matters.\n2. **Be conservative**: When uncertain about access level, flag for review rather than miscategorize.\n3. **Skip read-only**: Exclude `view`, `pure`, and equivalent read-only functions.\n4. **Note inheritance**: If a function's access control comes from a parent contract, note this.\n5. **Track modifiers**: List all access-related modifiers\u002Fdecorators applied to each function.\n6. **Identify patterns**: Look for common patterns like:\n   - Initializer functions (often unrestricted on first call)\n   - Upgrade functions (high-privilege)\n   - Emergency\u002Fpause functions (guardian-level)\n   - Fee\u002Fparameter setters (admin-level)\n   - Token transfers and approvals (often public)\n\n## Common Role Patterns by Protocol Type\n\n| Protocol Type | Common Roles |\n|---------------|--------------|\n| DEX | `owner`, `feeManager`, `pairCreator` |\n| Lending | `admin`, `guardian`, `liquidator`, `oracle` |\n| Governance | `proposer`, `executor`, `canceller`, `timelock` |\n| NFT | `minter`, `admin`, `royaltyReceiver` |\n| Bridge | `relayer`, `guardian`, `validator`, `operator` |\n| Vault\u002FYield | `strategist`, `keeper`, `harvester`, `manager` |\n\n## Rationalizations to Reject\n\nWhen analyzing entry points, reject these shortcuts:\n- \"This function looks standard\" → Still classify it; standard functions can have non-standard access control\n- \"The modifier name is clear\" → Verify the modifier's actual implementation\n- \"This is obviously admin-only\" → Trace the actual restriction; \"obvious\" assumptions miss subtle bypasses\n- \"I'll skip the callbacks\" → Callbacks define trust boundaries; always include them\n- \"It doesn't modify much state\" → Any state change can be exploited; include all non-view functions\n\n## Error Handling\n\nIf a file cannot be parsed:\n1. Note it in the report under \"Analysis Warnings\"\n2. Continue with remaining files\n3. Suggest manual review for unparsable files\n",{"data":39,"body":41},{"name":4,"description":6,"allowed-tools":40},"Read Grep Glob Bash",{"type":42,"children":43},"root",[44,52,66,73,78,108,114,119,147,153,163,324,334,340,404,410,415,422,451,457,488,493,516,522,545,551,564,570,840,845,851,856,862,867,873,878,1020,1026,1031,1080,1086,1091,2390,2396,2401,2432,2438,2542,2548,2774,2780,2785,2813,2819,2824,2842],{"type":45,"tag":46,"props":47,"children":48},"element","h1",{"id":4},[49],{"type":50,"value":51},"text","Entry Point Analyzer",{"type":45,"tag":53,"props":54,"children":55},"p",{},[56,58,64],{"type":50,"value":57},"Systematically identify all ",{"type":45,"tag":59,"props":60,"children":61},"strong",{},[62],{"type":50,"value":63},"state-changing",{"type":50,"value":65}," entry points in a smart contract codebase to guide security audits.",{"type":45,"tag":67,"props":68,"children":70},"h2",{"id":69},"when-to-use",[71],{"type":50,"value":72},"When to Use",{"type":45,"tag":53,"props":74,"children":75},{},[76],{"type":50,"value":77},"Use this skill when:",{"type":45,"tag":79,"props":80,"children":81},"ul",{},[82,88,93,98,103],{"type":45,"tag":83,"props":84,"children":85},"li",{},[86],{"type":50,"value":87},"Starting a smart contract security audit to map the attack surface",{"type":45,"tag":83,"props":89,"children":90},{},[91],{"type":50,"value":92},"Asked to find entry points, external functions, or audit flows",{"type":45,"tag":83,"props":94,"children":95},{},[96],{"type":50,"value":97},"Analyzing access control patterns across a codebase",{"type":45,"tag":83,"props":99,"children":100},{},[101],{"type":50,"value":102},"Identifying privileged operations and role-restricted functions",{"type":45,"tag":83,"props":104,"children":105},{},[106],{"type":50,"value":107},"Building an understanding of which functions can modify contract state",{"type":45,"tag":67,"props":109,"children":111},{"id":110},"when-not-to-use",[112],{"type":50,"value":113},"When NOT to Use",{"type":45,"tag":53,"props":115,"children":116},{},[117],{"type":50,"value":118},"Do NOT use this skill for:",{"type":45,"tag":79,"props":120,"children":121},{},[122,127,132,137,142],{"type":45,"tag":83,"props":123,"children":124},{},[125],{"type":50,"value":126},"Vulnerability detection (use audit-context-building or domain-specific-audits)",{"type":45,"tag":83,"props":128,"children":129},{},[130],{"type":50,"value":131},"Writing exploit POCs (use solidity-poc-builder)",{"type":45,"tag":83,"props":133,"children":134},{},[135],{"type":50,"value":136},"Code quality or gas optimization analysis",{"type":45,"tag":83,"props":138,"children":139},{},[140],{"type":50,"value":141},"Non-smart-contract codebases",{"type":45,"tag":83,"props":143,"children":144},{},[145],{"type":50,"value":146},"Analyzing read-only functions (this skill excludes them)",{"type":45,"tag":67,"props":148,"children":150},{"id":149},"scope-state-changing-functions-only",[151],{"type":50,"value":152},"Scope: State-Changing Functions Only",{"type":45,"tag":53,"props":154,"children":155},{},[156,158],{"type":50,"value":157},"This skill focuses exclusively on functions that can modify state. ",{"type":45,"tag":59,"props":159,"children":160},{},[161],{"type":50,"value":162},"Excluded:",{"type":45,"tag":164,"props":165,"children":166},"table",{},[167,186],{"type":45,"tag":168,"props":169,"children":170},"thead",{},[171],{"type":45,"tag":172,"props":173,"children":174},"tr",{},[175,181],{"type":45,"tag":176,"props":177,"children":178},"th",{},[179],{"type":50,"value":180},"Language",{"type":45,"tag":176,"props":182,"children":183},{},[184],{"type":50,"value":185},"Excluded Patterns",{"type":45,"tag":187,"props":188,"children":189},"tbody",{},[190,219,244,265,286,305],{"type":45,"tag":172,"props":191,"children":192},{},[193,199],{"type":45,"tag":194,"props":195,"children":196},"td",{},[197],{"type":50,"value":198},"Solidity",{"type":45,"tag":194,"props":200,"children":201},{},[202,209,211,217],{"type":45,"tag":203,"props":204,"children":206},"code",{"className":205},[],[207],{"type":50,"value":208},"view",{"type":50,"value":210},", ",{"type":45,"tag":203,"props":212,"children":214},{"className":213},[],[215],{"type":50,"value":216},"pure",{"type":50,"value":218}," functions",{"type":45,"tag":172,"props":220,"children":221},{},[222,227],{"type":45,"tag":194,"props":223,"children":224},{},[225],{"type":50,"value":226},"Vyper",{"type":45,"tag":194,"props":228,"children":229},{},[230,236,237,243],{"type":45,"tag":203,"props":231,"children":233},{"className":232},[],[234],{"type":50,"value":235},"@view",{"type":50,"value":210},{"type":45,"tag":203,"props":238,"children":240},{"className":239},[],[241],{"type":50,"value":242},"@pure",{"type":50,"value":218},{"type":45,"tag":172,"props":245,"children":246},{},[247,252],{"type":45,"tag":194,"props":248,"children":249},{},[250],{"type":50,"value":251},"Solana",{"type":45,"tag":194,"props":253,"children":254},{},[255,257,263],{"type":50,"value":256},"Functions without ",{"type":45,"tag":203,"props":258,"children":260},{"className":259},[],[261],{"type":50,"value":262},"mut",{"type":50,"value":264}," account references",{"type":45,"tag":172,"props":266,"children":267},{},[268,273],{"type":45,"tag":194,"props":269,"children":270},{},[271],{"type":50,"value":272},"Move",{"type":45,"tag":194,"props":274,"children":275},{},[276,278,284],{"type":50,"value":277},"Non-entry ",{"type":45,"tag":203,"props":279,"children":281},{"className":280},[],[282],{"type":50,"value":283},"public fun",{"type":50,"value":285}," (module-callable only)",{"type":45,"tag":172,"props":287,"children":288},{},[289,294],{"type":45,"tag":194,"props":290,"children":291},{},[292],{"type":50,"value":293},"TON",{"type":45,"tag":194,"props":295,"children":296},{},[297,303],{"type":45,"tag":203,"props":298,"children":300},{"className":299},[],[301],{"type":50,"value":302},"get",{"type":50,"value":304}," methods (FunC), read-only receivers (Tact)",{"type":45,"tag":172,"props":306,"children":307},{},[308,313],{"type":45,"tag":194,"props":309,"children":310},{},[311],{"type":50,"value":312},"CosmWasm",{"type":45,"tag":194,"props":314,"children":315},{},[316,322],{"type":45,"tag":203,"props":317,"children":319},{"className":318},[],[320],{"type":50,"value":321},"query",{"type":50,"value":323}," entry point and its handlers",{"type":45,"tag":53,"props":325,"children":326},{},[327,332],{"type":45,"tag":59,"props":328,"children":329},{},[330],{"type":50,"value":331},"Why exclude read-only functions?",{"type":50,"value":333}," They cannot directly cause loss of funds or state corruption. While they may leak information, the primary audit focus is on functions that can change state.",{"type":45,"tag":67,"props":335,"children":337},{"id":336},"workflow",[338],{"type":50,"value":339},"Workflow",{"type":45,"tag":341,"props":342,"children":343},"ol",{},[344,354,364,374,384,394],{"type":45,"tag":83,"props":345,"children":346},{},[347,352],{"type":45,"tag":59,"props":348,"children":349},{},[350],{"type":50,"value":351},"Detect Language",{"type":50,"value":353}," - Identify contract language(s) from file extensions and syntax",{"type":45,"tag":83,"props":355,"children":356},{},[357,362],{"type":45,"tag":59,"props":358,"children":359},{},[360],{"type":50,"value":361},"Use Tooling (if available)",{"type":50,"value":363}," - For Solidity, check if Slither is available and use it",{"type":45,"tag":83,"props":365,"children":366},{},[367,372],{"type":45,"tag":59,"props":368,"children":369},{},[370],{"type":50,"value":371},"Locate Contracts",{"type":50,"value":373}," - Find all contract\u002Fmodule files (apply directory filter if specified)",{"type":45,"tag":83,"props":375,"children":376},{},[377,382],{"type":45,"tag":59,"props":378,"children":379},{},[380],{"type":50,"value":381},"Extract Entry Points",{"type":50,"value":383}," - Parse each file for externally callable, state-changing functions",{"type":45,"tag":83,"props":385,"children":386},{},[387,392],{"type":45,"tag":59,"props":388,"children":389},{},[390],{"type":50,"value":391},"Classify Access",{"type":50,"value":393}," - Categorize each function by access level",{"type":45,"tag":83,"props":395,"children":396},{},[397,402],{"type":45,"tag":59,"props":398,"children":399},{},[400],{"type":50,"value":401},"Generate Report",{"type":50,"value":403}," - Output structured markdown report",{"type":45,"tag":67,"props":405,"children":407},{"id":406},"slither-integration-solidity",[408],{"type":50,"value":409},"Slither Integration (Solidity)",{"type":45,"tag":53,"props":411,"children":412},{},[413],{"type":50,"value":414},"For Solidity codebases, Slither can automatically extract entry points. Before manual analysis:",{"type":45,"tag":416,"props":417,"children":419},"h3",{"id":418},"_1-check-if-slither-is-available",[420],{"type":50,"value":421},"1. Check if Slither is Available",{"type":45,"tag":423,"props":424,"children":429},"pre",{"className":425,"code":426,"language":427,"meta":428,"style":428},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","which slither\n","bash","",[430],{"type":45,"tag":203,"props":431,"children":432},{"__ignoreMap":428},[433],{"type":45,"tag":434,"props":435,"children":438},"span",{"class":436,"line":437},"line",1,[439,445],{"type":45,"tag":434,"props":440,"children":442},{"style":441},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[443],{"type":50,"value":444},"which",{"type":45,"tag":434,"props":446,"children":448},{"style":447},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[449],{"type":50,"value":450}," slither\n",{"type":45,"tag":416,"props":452,"children":454},{"id":453},"_2-if-slither-is-detected-run-entry-points-printer",[455],{"type":50,"value":456},"2. If Slither is Detected, Run Entry Points Printer",{"type":45,"tag":423,"props":458,"children":460},{"className":425,"code":459,"language":427,"meta":428,"style":428},"slither . --print entry-points\n",[461],{"type":45,"tag":203,"props":462,"children":463},{"__ignoreMap":428},[464],{"type":45,"tag":434,"props":465,"children":466},{"class":436,"line":437},[467,473,478,483],{"type":45,"tag":434,"props":468,"children":470},{"style":469},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[471],{"type":50,"value":472},"slither",{"type":45,"tag":434,"props":474,"children":475},{"style":447},[476],{"type":50,"value":477}," .",{"type":45,"tag":434,"props":479,"children":480},{"style":447},[481],{"type":50,"value":482}," --print",{"type":45,"tag":434,"props":484,"children":485},{"style":447},[486],{"type":50,"value":487}," entry-points\n",{"type":45,"tag":53,"props":489,"children":490},{},[491],{"type":50,"value":492},"This outputs a table of all state-changing entry points with:",{"type":45,"tag":79,"props":494,"children":495},{},[496,501,506,511],{"type":45,"tag":83,"props":497,"children":498},{},[499],{"type":50,"value":500},"Contract name",{"type":45,"tag":83,"props":502,"children":503},{},[504],{"type":50,"value":505},"Function name",{"type":45,"tag":83,"props":507,"children":508},{},[509],{"type":50,"value":510},"Visibility",{"type":45,"tag":83,"props":512,"children":513},{},[514],{"type":50,"value":515},"Modifiers applied",{"type":45,"tag":416,"props":517,"children":519},{"id":518},"_3-use-slither-output-as-foundation",[520],{"type":50,"value":521},"3. Use Slither Output as Foundation",{"type":45,"tag":79,"props":523,"children":524},{},[525,530,535,540],{"type":45,"tag":83,"props":526,"children":527},{},[528],{"type":50,"value":529},"Parse the Slither output table to populate your analysis",{"type":45,"tag":83,"props":531,"children":532},{},[533],{"type":50,"value":534},"Cross-reference with manual inspection for access control classification",{"type":45,"tag":83,"props":536,"children":537},{},[538],{"type":50,"value":539},"Slither may miss some patterns (callbacks, dynamic access control)—supplement with manual review",{"type":45,"tag":83,"props":541,"children":542},{},[543],{"type":50,"value":544},"If Slither fails (compilation errors, unsupported features), fall back to manual analysis",{"type":45,"tag":416,"props":546,"children":548},{"id":547},"_4-when-slither-is-not-available",[549],{"type":50,"value":550},"4. When Slither is NOT Available",{"type":45,"tag":53,"props":552,"children":553},{},[554,556,562],{"type":50,"value":555},"If ",{"type":45,"tag":203,"props":557,"children":559},{"className":558},[],[560],{"type":50,"value":561},"which slither",{"type":50,"value":563}," returns nothing, proceed with manual analysis using the language-specific reference files.",{"type":45,"tag":67,"props":565,"children":567},{"id":566},"language-detection",[568],{"type":50,"value":569},"Language Detection",{"type":45,"tag":164,"props":571,"children":572},{},[573,593],{"type":45,"tag":168,"props":574,"children":575},{},[576],{"type":45,"tag":172,"props":577,"children":578},{},[579,584,588],{"type":45,"tag":176,"props":580,"children":581},{},[582],{"type":50,"value":583},"Extension",{"type":45,"tag":176,"props":585,"children":586},{},[587],{"type":50,"value":180},{"type":45,"tag":176,"props":589,"children":590},{},[591],{"type":50,"value":592},"Reference",{"type":45,"tag":187,"props":594,"children":595},{},[596,622,647,689,727,763,803],{"type":45,"tag":172,"props":597,"children":598},{},[599,608,612],{"type":45,"tag":194,"props":600,"children":601},{},[602],{"type":45,"tag":203,"props":603,"children":605},{"className":604},[],[606],{"type":50,"value":607},".sol",{"type":45,"tag":194,"props":609,"children":610},{},[611],{"type":50,"value":198},{"type":45,"tag":194,"props":613,"children":614},{},[615],{"type":45,"tag":616,"props":617,"children":619},"a",{"href":618},"%7BbaseDir%7D\u002Freferences\u002Fsolidity.md",[620],{"type":50,"value":621},"{baseDir}\u002Freferences\u002Fsolidity.md",{"type":45,"tag":172,"props":623,"children":624},{},[625,634,638],{"type":45,"tag":194,"props":626,"children":627},{},[628],{"type":45,"tag":203,"props":629,"children":631},{"className":630},[],[632],{"type":50,"value":633},".vy",{"type":45,"tag":194,"props":635,"children":636},{},[637],{"type":50,"value":226},{"type":45,"tag":194,"props":639,"children":640},{},[641],{"type":45,"tag":616,"props":642,"children":644},{"href":643},"%7BbaseDir%7D\u002Freferences\u002Fvyper.md",[645],{"type":50,"value":646},"{baseDir}\u002Freferences\u002Fvyper.md",{"type":45,"tag":172,"props":648,"children":649},{},[650,675,680],{"type":45,"tag":194,"props":651,"children":652},{},[653,659,661,667,669],{"type":45,"tag":203,"props":654,"children":656},{"className":655},[],[657],{"type":50,"value":658},".rs",{"type":50,"value":660}," + ",{"type":45,"tag":203,"props":662,"children":664},{"className":663},[],[665],{"type":50,"value":666},"Cargo.toml",{"type":50,"value":668}," with ",{"type":45,"tag":203,"props":670,"children":672},{"className":671},[],[673],{"type":50,"value":674},"solana-program",{"type":45,"tag":194,"props":676,"children":677},{},[678],{"type":50,"value":679},"Solana (Rust)",{"type":45,"tag":194,"props":681,"children":682},{},[683],{"type":45,"tag":616,"props":684,"children":686},{"href":685},"%7BbaseDir%7D\u002Freferences\u002Fsolana.md",[687],{"type":50,"value":688},"{baseDir}\u002Freferences\u002Fsolana.md",{"type":45,"tag":172,"props":690,"children":691},{},[692,715,724],{"type":45,"tag":194,"props":693,"children":694},{},[695,701,702,708,709],{"type":45,"tag":203,"props":696,"children":698},{"className":697},[],[699],{"type":50,"value":700},".move",{"type":50,"value":660},{"type":45,"tag":203,"props":703,"children":705},{"className":704},[],[706],{"type":50,"value":707},"Move.toml",{"type":50,"value":668},{"type":45,"tag":203,"props":710,"children":712},{"className":711},[],[713],{"type":50,"value":714},"edition",{"type":45,"tag":194,"props":716,"children":717},{},[718],{"type":45,"tag":616,"props":719,"children":721},{"href":720},"%7BbaseDir%7D\u002Freferences\u002Fmove-sui.md",[722],{"type":50,"value":723},"{baseDir}\u002Freferences\u002Fmove-sui.md",{"type":45,"tag":194,"props":725,"children":726},{},[],{"type":45,"tag":172,"props":728,"children":729},{},[730,751,760],{"type":45,"tag":194,"props":731,"children":732},{},[733,738,739,744,745],{"type":45,"tag":203,"props":734,"children":736},{"className":735},[],[737],{"type":50,"value":700},{"type":50,"value":660},{"type":45,"tag":203,"props":740,"children":742},{"className":741},[],[743],{"type":50,"value":707},{"type":50,"value":668},{"type":45,"tag":203,"props":746,"children":748},{"className":747},[],[749],{"type":50,"value":750},"Aptos",{"type":45,"tag":194,"props":752,"children":753},{},[754],{"type":45,"tag":616,"props":755,"children":757},{"href":756},"%7BbaseDir%7D\u002Freferences\u002Fmove-aptos.md",[758],{"type":50,"value":759},"{baseDir}\u002Freferences\u002Fmove-aptos.md",{"type":45,"tag":194,"props":761,"children":762},{},[],{"type":45,"tag":172,"props":764,"children":765},{},[766,789,794],{"type":45,"tag":194,"props":767,"children":768},{},[769,775,776,782,783],{"type":45,"tag":203,"props":770,"children":772},{"className":771},[],[773],{"type":50,"value":774},".fc",{"type":50,"value":210},{"type":45,"tag":203,"props":777,"children":779},{"className":778},[],[780],{"type":50,"value":781},".func",{"type":50,"value":210},{"type":45,"tag":203,"props":784,"children":786},{"className":785},[],[787],{"type":50,"value":788},".tact",{"type":45,"tag":194,"props":790,"children":791},{},[792],{"type":50,"value":793},"TON (FunC\u002FTact)",{"type":45,"tag":194,"props":795,"children":796},{},[797],{"type":45,"tag":616,"props":798,"children":800},{"href":799},"%7BbaseDir%7D\u002Freferences\u002Fton.md",[801],{"type":50,"value":802},"{baseDir}\u002Freferences\u002Fton.md",{"type":45,"tag":172,"props":804,"children":805},{},[806,827,831],{"type":45,"tag":194,"props":807,"children":808},{},[809,814,815,820,821],{"type":45,"tag":203,"props":810,"children":812},{"className":811},[],[813],{"type":50,"value":658},{"type":50,"value":660},{"type":45,"tag":203,"props":816,"children":818},{"className":817},[],[819],{"type":50,"value":666},{"type":50,"value":668},{"type":45,"tag":203,"props":822,"children":824},{"className":823},[],[825],{"type":50,"value":826},"cosmwasm-std",{"type":45,"tag":194,"props":828,"children":829},{},[830],{"type":50,"value":312},{"type":45,"tag":194,"props":832,"children":833},{},[834],{"type":45,"tag":616,"props":835,"children":837},{"href":836},"%7BbaseDir%7D\u002Freferences\u002Fcosmwasm.md",[838],{"type":50,"value":839},"{baseDir}\u002Freferences\u002Fcosmwasm.md",{"type":45,"tag":53,"props":841,"children":842},{},[843],{"type":50,"value":844},"Load the appropriate reference file(s) based on detected language before analysis.",{"type":45,"tag":67,"props":846,"children":848},{"id":847},"access-classification",[849],{"type":50,"value":850},"Access Classification",{"type":45,"tag":53,"props":852,"children":853},{},[854],{"type":50,"value":855},"Classify each state-changing entry point into one of these categories:",{"type":45,"tag":416,"props":857,"children":859},{"id":858},"_1-public-unrestricted",[860],{"type":50,"value":861},"1. Public (Unrestricted)",{"type":45,"tag":53,"props":863,"children":864},{},[865],{"type":50,"value":866},"Functions callable by anyone without restrictions.",{"type":45,"tag":416,"props":868,"children":870},{"id":869},"_2-role-restricted",[871],{"type":50,"value":872},"2. Role-Restricted",{"type":45,"tag":53,"props":874,"children":875},{},[876],{"type":50,"value":877},"Functions limited to specific roles. Common patterns to detect:",{"type":45,"tag":79,"props":879,"children":880},{},[881,969,1008],{"type":45,"tag":83,"props":882,"children":883},{},[884,886,892,893,899,900,906,907,913,914,920,921,927,928,934,935,941,942,948,949,955,956,962,963],{"type":50,"value":885},"Explicit role names: ",{"type":45,"tag":203,"props":887,"children":889},{"className":888},[],[890],{"type":50,"value":891},"admin",{"type":50,"value":210},{"type":45,"tag":203,"props":894,"children":896},{"className":895},[],[897],{"type":50,"value":898},"owner",{"type":50,"value":210},{"type":45,"tag":203,"props":901,"children":903},{"className":902},[],[904],{"type":50,"value":905},"governance",{"type":50,"value":210},{"type":45,"tag":203,"props":908,"children":910},{"className":909},[],[911],{"type":50,"value":912},"guardian",{"type":50,"value":210},{"type":45,"tag":203,"props":915,"children":917},{"className":916},[],[918],{"type":50,"value":919},"operator",{"type":50,"value":210},{"type":45,"tag":203,"props":922,"children":924},{"className":923},[],[925],{"type":50,"value":926},"manager",{"type":50,"value":210},{"type":45,"tag":203,"props":929,"children":931},{"className":930},[],[932],{"type":50,"value":933},"minter",{"type":50,"value":210},{"type":45,"tag":203,"props":936,"children":938},{"className":937},[],[939],{"type":50,"value":940},"pauser",{"type":50,"value":210},{"type":45,"tag":203,"props":943,"children":945},{"className":944},[],[946],{"type":50,"value":947},"keeper",{"type":50,"value":210},{"type":45,"tag":203,"props":950,"children":952},{"className":951},[],[953],{"type":50,"value":954},"relayer",{"type":50,"value":210},{"type":45,"tag":203,"props":957,"children":959},{"className":958},[],[960],{"type":50,"value":961},"lender",{"type":50,"value":210},{"type":45,"tag":203,"props":964,"children":966},{"className":965},[],[967],{"type":50,"value":968},"borrower",{"type":45,"tag":83,"props":970,"children":971},{},[972,974,980,981,987,988,994,995,1001,1002],{"type":50,"value":973},"Role-checking patterns: ",{"type":45,"tag":203,"props":975,"children":977},{"className":976},[],[978],{"type":50,"value":979},"onlyRole",{"type":50,"value":210},{"type":45,"tag":203,"props":982,"children":984},{"className":983},[],[985],{"type":50,"value":986},"hasRole",{"type":50,"value":210},{"type":45,"tag":203,"props":989,"children":991},{"className":990},[],[992],{"type":50,"value":993},"require(msg.sender == X)",{"type":50,"value":210},{"type":45,"tag":203,"props":996,"children":998},{"className":997},[],[999],{"type":50,"value":1000},"assert_owner",{"type":50,"value":210},{"type":45,"tag":203,"props":1003,"children":1005},{"className":1004},[],[1006],{"type":50,"value":1007},"#[access_control]",{"type":45,"tag":83,"props":1009,"children":1010},{},[1011,1013,1018],{"type":50,"value":1012},"When role is ambiguous, flag as ",{"type":45,"tag":59,"props":1014,"children":1015},{},[1016],{"type":50,"value":1017},"\"Restricted (review required)\"",{"type":50,"value":1019}," with the restriction pattern noted",{"type":45,"tag":416,"props":1021,"children":1023},{"id":1022},"_3-contract-only-internal-integration-points",[1024],{"type":50,"value":1025},"3. Contract-Only (Internal Integration Points)",{"type":45,"tag":53,"props":1027,"children":1028},{},[1029],{"type":50,"value":1030},"Functions callable only by other contracts, not by EOAs. Indicators:",{"type":45,"tag":79,"props":1032,"children":1033},{},[1034,1059,1064,1075],{"type":45,"tag":83,"props":1035,"children":1036},{},[1037,1039,1045,1046,1052,1053],{"type":50,"value":1038},"Callbacks: ",{"type":45,"tag":203,"props":1040,"children":1042},{"className":1041},[],[1043],{"type":50,"value":1044},"onERC721Received",{"type":50,"value":210},{"type":45,"tag":203,"props":1047,"children":1049},{"className":1048},[],[1050],{"type":50,"value":1051},"uniswapV3SwapCallback",{"type":50,"value":210},{"type":45,"tag":203,"props":1054,"children":1056},{"className":1055},[],[1057],{"type":50,"value":1058},"flashLoanCallback",{"type":45,"tag":83,"props":1060,"children":1061},{},[1062],{"type":50,"value":1063},"Interface implementations with contract-caller checks",{"type":45,"tag":83,"props":1065,"children":1066},{},[1067,1069],{"type":50,"value":1068},"Functions that revert if ",{"type":45,"tag":203,"props":1070,"children":1072},{"className":1071},[],[1073],{"type":50,"value":1074},"tx.origin == msg.sender",{"type":45,"tag":83,"props":1076,"children":1077},{},[1078],{"type":50,"value":1079},"Cross-contract hooks",{"type":45,"tag":67,"props":1081,"children":1083},{"id":1082},"output-format",[1084],{"type":50,"value":1085},"Output Format",{"type":45,"tag":53,"props":1087,"children":1088},{},[1089],{"type":50,"value":1090},"Generate a markdown report with this structure:",{"type":45,"tag":423,"props":1092,"children":1096},{"className":1093,"code":1094,"language":1095,"meta":428,"style":428},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Entry Point Analysis: [Project Name]\n\n**Analyzed**: [timestamp]\n**Scope**: [directories analyzed or \"full codebase\"]\n**Languages**: [detected languages]\n**Focus**: State-changing functions only (view\u002Fpure excluded)\n\n## Summary\n\n| Category | Count |\n|----------|-------|\n| Public (Unrestricted) | X |\n| Role-Restricted | X |\n| Restricted (Review Required) | X |\n| Contract-Only | X |\n| **Total** | **X** |\n\n---\n\n## Public Entry Points (Unrestricted)\n\nState-changing functions callable by anyone—prioritize for attack surface analysis.\n\n| Function | File | Notes |\n|----------|------|-------|\n| `functionName(params)` | `path\u002Fto\u002Ffile.sol:L42` | Brief note if relevant |\n\n---\n\n## Role-Restricted Entry Points\n\n### Admin \u002F Owner\n| Function | File | Restriction |\n|----------|------|-------------|\n| `setFee(uint256)` | `Config.sol:L15` | `onlyOwner` |\n\n### Governance\n| Function | File | Restriction |\n|----------|------|-------------|\n\n### Guardian \u002F Pauser\n| Function | File | Restriction |\n|----------|------|-------------|\n\n### Other Roles\n| Function | File | Restriction | Role |\n|----------|------|-------------|------|\n\n---\n\n## Restricted (Review Required)\n\nFunctions with access control patterns that need manual verification.\n\n| Function | File | Pattern | Why Review |\n|----------|------|---------|------------|\n| `execute(bytes)` | `Executor.sol:L88` | `require(trusted[msg.sender])` | Dynamic trust list |\n\n---\n\n## Contract-Only (Internal Integration Points)\n\nFunctions only callable by other contracts—useful for understanding trust boundaries.\n\n| Function | File | Expected Caller |\n|----------|------|-----------------|\n| `onFlashLoan(...)` | `Vault.sol:L200` | Flash loan provider |\n\n---\n\n## Files Analyzed\n\n- `path\u002Fto\u002Ffile1.sol` (X state-changing entry points)\n- `path\u002Fto\u002Ffile2.sol` (X state-changing entry points)\n","markdown",[1097],{"type":45,"tag":203,"props":1098,"children":1099},{"__ignoreMap":428},[1100,1114,1124,1165,1187,1209,1231,1239,1253,1261,1289,1298,1324,1349,1374,1399,1444,1452,1461,1469,1482,1490,1499,1507,1542,1551,1604,1612,1620,1628,1641,1649,1663,1696,1705,1764,1772,1785,1817,1825,1833,1846,1878,1886,1894,1907,1948,1957,1965,1973,1981,1994,2002,2011,2019,2061,2070,2138,2146,2154,2162,2175,2183,2192,2200,2233,2242,2293,2301,2309,2317,2330,2338,2365],{"type":45,"tag":434,"props":1101,"children":1102},{"class":436,"line":437},[1103,1109],{"type":45,"tag":434,"props":1104,"children":1106},{"style":1105},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1107],{"type":50,"value":1108},"# ",{"type":45,"tag":434,"props":1110,"children":1111},{"style":469},[1112],{"type":50,"value":1113},"Entry Point Analysis: [Project Name]\n",{"type":45,"tag":434,"props":1115,"children":1117},{"class":436,"line":1116},2,[1118],{"type":45,"tag":434,"props":1119,"children":1121},{"emptyLinePlaceholder":1120},true,[1122],{"type":50,"value":1123},"\n",{"type":45,"tag":434,"props":1125,"children":1127},{"class":436,"line":1126},3,[1128,1134,1140,1144,1150,1155,1160],{"type":45,"tag":434,"props":1129,"children":1131},{"style":1130},"--shiki-light:#39ADB5;--shiki-light-font-weight:bold;--shiki-default:#89DDFF;--shiki-default-font-weight:bold;--shiki-dark:#89DDFF;--shiki-dark-font-weight:bold",[1132],{"type":50,"value":1133},"**",{"type":45,"tag":434,"props":1135,"children":1137},{"style":1136},"--shiki-light:#E53935;--shiki-light-font-weight:bold;--shiki-default:#F07178;--shiki-default-font-weight:bold;--shiki-dark:#F07178;--shiki-dark-font-weight:bold",[1138],{"type":50,"value":1139},"Analyzed",{"type":45,"tag":434,"props":1141,"children":1142},{"style":1130},[1143],{"type":50,"value":1133},{"type":45,"tag":434,"props":1145,"children":1147},{"style":1146},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1148],{"type":50,"value":1149},": ",{"type":45,"tag":434,"props":1151,"children":1152},{"style":1105},[1153],{"type":50,"value":1154},"[",{"type":45,"tag":434,"props":1156,"children":1157},{"style":447},[1158],{"type":50,"value":1159},"timestamp",{"type":45,"tag":434,"props":1161,"children":1162},{"style":1105},[1163],{"type":50,"value":1164},"]\n",{"type":45,"tag":434,"props":1166,"children":1168},{"class":436,"line":1167},4,[1169,1173,1178,1182],{"type":45,"tag":434,"props":1170,"children":1171},{"style":1130},[1172],{"type":50,"value":1133},{"type":45,"tag":434,"props":1174,"children":1175},{"style":1136},[1176],{"type":50,"value":1177},"Scope",{"type":45,"tag":434,"props":1179,"children":1180},{"style":1130},[1181],{"type":50,"value":1133},{"type":45,"tag":434,"props":1183,"children":1184},{"style":1146},[1185],{"type":50,"value":1186},": [directories analyzed or \"full codebase\"]\n",{"type":45,"tag":434,"props":1188,"children":1190},{"class":436,"line":1189},5,[1191,1195,1200,1204],{"type":45,"tag":434,"props":1192,"children":1193},{"style":1130},[1194],{"type":50,"value":1133},{"type":45,"tag":434,"props":1196,"children":1197},{"style":1136},[1198],{"type":50,"value":1199},"Languages",{"type":45,"tag":434,"props":1201,"children":1202},{"style":1130},[1203],{"type":50,"value":1133},{"type":45,"tag":434,"props":1205,"children":1206},{"style":1146},[1207],{"type":50,"value":1208},": [detected languages]\n",{"type":45,"tag":434,"props":1210,"children":1212},{"class":436,"line":1211},6,[1213,1217,1222,1226],{"type":45,"tag":434,"props":1214,"children":1215},{"style":1130},[1216],{"type":50,"value":1133},{"type":45,"tag":434,"props":1218,"children":1219},{"style":1136},[1220],{"type":50,"value":1221},"Focus",{"type":45,"tag":434,"props":1223,"children":1224},{"style":1130},[1225],{"type":50,"value":1133},{"type":45,"tag":434,"props":1227,"children":1228},{"style":1146},[1229],{"type":50,"value":1230},": State-changing functions only (view\u002Fpure excluded)\n",{"type":45,"tag":434,"props":1232,"children":1234},{"class":436,"line":1233},7,[1235],{"type":45,"tag":434,"props":1236,"children":1237},{"emptyLinePlaceholder":1120},[1238],{"type":50,"value":1123},{"type":45,"tag":434,"props":1240,"children":1242},{"class":436,"line":1241},8,[1243,1248],{"type":45,"tag":434,"props":1244,"children":1245},{"style":1105},[1246],{"type":50,"value":1247},"## ",{"type":45,"tag":434,"props":1249,"children":1250},{"style":469},[1251],{"type":50,"value":1252},"Summary\n",{"type":45,"tag":434,"props":1254,"children":1256},{"class":436,"line":1255},9,[1257],{"type":45,"tag":434,"props":1258,"children":1259},{"emptyLinePlaceholder":1120},[1260],{"type":50,"value":1123},{"type":45,"tag":434,"props":1262,"children":1264},{"class":436,"line":1263},10,[1265,1270,1275,1279,1284],{"type":45,"tag":434,"props":1266,"children":1267},{"style":1105},[1268],{"type":50,"value":1269},"|",{"type":45,"tag":434,"props":1271,"children":1272},{"style":1146},[1273],{"type":50,"value":1274}," Category ",{"type":45,"tag":434,"props":1276,"children":1277},{"style":1105},[1278],{"type":50,"value":1269},{"type":45,"tag":434,"props":1280,"children":1281},{"style":1146},[1282],{"type":50,"value":1283}," Count ",{"type":45,"tag":434,"props":1285,"children":1286},{"style":1105},[1287],{"type":50,"value":1288},"|\n",{"type":45,"tag":434,"props":1290,"children":1292},{"class":436,"line":1291},11,[1293],{"type":45,"tag":434,"props":1294,"children":1295},{"style":1105},[1296],{"type":50,"value":1297},"|----------|-------|\n",{"type":45,"tag":434,"props":1299,"children":1301},{"class":436,"line":1300},12,[1302,1306,1311,1315,1320],{"type":45,"tag":434,"props":1303,"children":1304},{"style":1105},[1305],{"type":50,"value":1269},{"type":45,"tag":434,"props":1307,"children":1308},{"style":1146},[1309],{"type":50,"value":1310}," Public (Unrestricted) ",{"type":45,"tag":434,"props":1312,"children":1313},{"style":1105},[1314],{"type":50,"value":1269},{"type":45,"tag":434,"props":1316,"children":1317},{"style":1146},[1318],{"type":50,"value":1319}," X ",{"type":45,"tag":434,"props":1321,"children":1322},{"style":1105},[1323],{"type":50,"value":1288},{"type":45,"tag":434,"props":1325,"children":1327},{"class":436,"line":1326},13,[1328,1332,1337,1341,1345],{"type":45,"tag":434,"props":1329,"children":1330},{"style":1105},[1331],{"type":50,"value":1269},{"type":45,"tag":434,"props":1333,"children":1334},{"style":1146},[1335],{"type":50,"value":1336}," Role-Restricted ",{"type":45,"tag":434,"props":1338,"children":1339},{"style":1105},[1340],{"type":50,"value":1269},{"type":45,"tag":434,"props":1342,"children":1343},{"style":1146},[1344],{"type":50,"value":1319},{"type":45,"tag":434,"props":1346,"children":1347},{"style":1105},[1348],{"type":50,"value":1288},{"type":45,"tag":434,"props":1350,"children":1352},{"class":436,"line":1351},14,[1353,1357,1362,1366,1370],{"type":45,"tag":434,"props":1354,"children":1355},{"style":1105},[1356],{"type":50,"value":1269},{"type":45,"tag":434,"props":1358,"children":1359},{"style":1146},[1360],{"type":50,"value":1361}," Restricted (Review Required) ",{"type":45,"tag":434,"props":1363,"children":1364},{"style":1105},[1365],{"type":50,"value":1269},{"type":45,"tag":434,"props":1367,"children":1368},{"style":1146},[1369],{"type":50,"value":1319},{"type":45,"tag":434,"props":1371,"children":1372},{"style":1105},[1373],{"type":50,"value":1288},{"type":45,"tag":434,"props":1375,"children":1377},{"class":436,"line":1376},15,[1378,1382,1387,1391,1395],{"type":45,"tag":434,"props":1379,"children":1380},{"style":1105},[1381],{"type":50,"value":1269},{"type":45,"tag":434,"props":1383,"children":1384},{"style":1146},[1385],{"type":50,"value":1386}," Contract-Only ",{"type":45,"tag":434,"props":1388,"children":1389},{"style":1105},[1390],{"type":50,"value":1269},{"type":45,"tag":434,"props":1392,"children":1393},{"style":1146},[1394],{"type":50,"value":1319},{"type":45,"tag":434,"props":1396,"children":1397},{"style":1105},[1398],{"type":50,"value":1288},{"type":45,"tag":434,"props":1400,"children":1402},{"class":436,"line":1401},16,[1403,1407,1412,1417,1421,1426,1430,1435,1439],{"type":45,"tag":434,"props":1404,"children":1405},{"style":1105},[1406],{"type":50,"value":1269},{"type":45,"tag":434,"props":1408,"children":1409},{"style":1130},[1410],{"type":50,"value":1411}," **",{"type":45,"tag":434,"props":1413,"children":1414},{"style":1136},[1415],{"type":50,"value":1416},"Total",{"type":45,"tag":434,"props":1418,"children":1419},{"style":1130},[1420],{"type":50,"value":1133},{"type":45,"tag":434,"props":1422,"children":1423},{"style":1105},[1424],{"type":50,"value":1425}," |",{"type":45,"tag":434,"props":1427,"children":1428},{"style":1130},[1429],{"type":50,"value":1411},{"type":45,"tag":434,"props":1431,"children":1432},{"style":1136},[1433],{"type":50,"value":1434},"X",{"type":45,"tag":434,"props":1436,"children":1437},{"style":1130},[1438],{"type":50,"value":1133},{"type":45,"tag":434,"props":1440,"children":1441},{"style":1105},[1442],{"type":50,"value":1443}," |\n",{"type":45,"tag":434,"props":1445,"children":1447},{"class":436,"line":1446},17,[1448],{"type":45,"tag":434,"props":1449,"children":1450},{"emptyLinePlaceholder":1120},[1451],{"type":50,"value":1123},{"type":45,"tag":434,"props":1453,"children":1455},{"class":436,"line":1454},18,[1456],{"type":45,"tag":434,"props":1457,"children":1458},{"style":1146},[1459],{"type":50,"value":1460},"---\n",{"type":45,"tag":434,"props":1462,"children":1464},{"class":436,"line":1463},19,[1465],{"type":45,"tag":434,"props":1466,"children":1467},{"emptyLinePlaceholder":1120},[1468],{"type":50,"value":1123},{"type":45,"tag":434,"props":1470,"children":1472},{"class":436,"line":1471},20,[1473,1477],{"type":45,"tag":434,"props":1474,"children":1475},{"style":1105},[1476],{"type":50,"value":1247},{"type":45,"tag":434,"props":1478,"children":1479},{"style":469},[1480],{"type":50,"value":1481},"Public Entry Points (Unrestricted)\n",{"type":45,"tag":434,"props":1483,"children":1485},{"class":436,"line":1484},21,[1486],{"type":45,"tag":434,"props":1487,"children":1488},{"emptyLinePlaceholder":1120},[1489],{"type":50,"value":1123},{"type":45,"tag":434,"props":1491,"children":1493},{"class":436,"line":1492},22,[1494],{"type":45,"tag":434,"props":1495,"children":1496},{"style":1146},[1497],{"type":50,"value":1498},"State-changing functions callable by anyone—prioritize for attack surface analysis.\n",{"type":45,"tag":434,"props":1500,"children":1502},{"class":436,"line":1501},23,[1503],{"type":45,"tag":434,"props":1504,"children":1505},{"emptyLinePlaceholder":1120},[1506],{"type":50,"value":1123},{"type":45,"tag":434,"props":1508,"children":1510},{"class":436,"line":1509},24,[1511,1515,1520,1524,1529,1533,1538],{"type":45,"tag":434,"props":1512,"children":1513},{"style":1105},[1514],{"type":50,"value":1269},{"type":45,"tag":434,"props":1516,"children":1517},{"style":1146},[1518],{"type":50,"value":1519}," Function ",{"type":45,"tag":434,"props":1521,"children":1522},{"style":1105},[1523],{"type":50,"value":1269},{"type":45,"tag":434,"props":1525,"children":1526},{"style":1146},[1527],{"type":50,"value":1528}," File ",{"type":45,"tag":434,"props":1530,"children":1531},{"style":1105},[1532],{"type":50,"value":1269},{"type":45,"tag":434,"props":1534,"children":1535},{"style":1146},[1536],{"type":50,"value":1537}," Notes ",{"type":45,"tag":434,"props":1539,"children":1540},{"style":1105},[1541],{"type":50,"value":1288},{"type":45,"tag":434,"props":1543,"children":1545},{"class":436,"line":1544},25,[1546],{"type":45,"tag":434,"props":1547,"children":1548},{"style":1105},[1549],{"type":50,"value":1550},"|----------|------|-------|\n",{"type":45,"tag":434,"props":1552,"children":1554},{"class":436,"line":1553},26,[1555,1559,1564,1569,1574,1578,1582,1587,1591,1595,1600],{"type":45,"tag":434,"props":1556,"children":1557},{"style":1105},[1558],{"type":50,"value":1269},{"type":45,"tag":434,"props":1560,"children":1561},{"style":1105},[1562],{"type":50,"value":1563}," `",{"type":45,"tag":434,"props":1565,"children":1566},{"style":447},[1567],{"type":50,"value":1568},"functionName(params)",{"type":45,"tag":434,"props":1570,"children":1571},{"style":1105},[1572],{"type":50,"value":1573},"`",{"type":45,"tag":434,"props":1575,"children":1576},{"style":1105},[1577],{"type":50,"value":1425},{"type":45,"tag":434,"props":1579,"children":1580},{"style":1105},[1581],{"type":50,"value":1563},{"type":45,"tag":434,"props":1583,"children":1584},{"style":447},[1585],{"type":50,"value":1586},"path\u002Fto\u002Ffile.sol:L42",{"type":45,"tag":434,"props":1588,"children":1589},{"style":1105},[1590],{"type":50,"value":1573},{"type":45,"tag":434,"props":1592,"children":1593},{"style":1105},[1594],{"type":50,"value":1425},{"type":45,"tag":434,"props":1596,"children":1597},{"style":1146},[1598],{"type":50,"value":1599}," Brief note if relevant ",{"type":45,"tag":434,"props":1601,"children":1602},{"style":1105},[1603],{"type":50,"value":1288},{"type":45,"tag":434,"props":1605,"children":1607},{"class":436,"line":1606},27,[1608],{"type":45,"tag":434,"props":1609,"children":1610},{"emptyLinePlaceholder":1120},[1611],{"type":50,"value":1123},{"type":45,"tag":434,"props":1613,"children":1615},{"class":436,"line":1614},28,[1616],{"type":45,"tag":434,"props":1617,"children":1618},{"style":1146},[1619],{"type":50,"value":1460},{"type":45,"tag":434,"props":1621,"children":1623},{"class":436,"line":1622},29,[1624],{"type":45,"tag":434,"props":1625,"children":1626},{"emptyLinePlaceholder":1120},[1627],{"type":50,"value":1123},{"type":45,"tag":434,"props":1629,"children":1631},{"class":436,"line":1630},30,[1632,1636],{"type":45,"tag":434,"props":1633,"children":1634},{"style":1105},[1635],{"type":50,"value":1247},{"type":45,"tag":434,"props":1637,"children":1638},{"style":469},[1639],{"type":50,"value":1640},"Role-Restricted Entry Points\n",{"type":45,"tag":434,"props":1642,"children":1644},{"class":436,"line":1643},31,[1645],{"type":45,"tag":434,"props":1646,"children":1647},{"emptyLinePlaceholder":1120},[1648],{"type":50,"value":1123},{"type":45,"tag":434,"props":1650,"children":1652},{"class":436,"line":1651},32,[1653,1658],{"type":45,"tag":434,"props":1654,"children":1655},{"style":1105},[1656],{"type":50,"value":1657},"### ",{"type":45,"tag":434,"props":1659,"children":1660},{"style":469},[1661],{"type":50,"value":1662},"Admin \u002F Owner\n",{"type":45,"tag":434,"props":1664,"children":1666},{"class":436,"line":1665},33,[1667,1671,1675,1679,1683,1687,1692],{"type":45,"tag":434,"props":1668,"children":1669},{"style":1105},[1670],{"type":50,"value":1269},{"type":45,"tag":434,"props":1672,"children":1673},{"style":1146},[1674],{"type":50,"value":1519},{"type":45,"tag":434,"props":1676,"children":1677},{"style":1105},[1678],{"type":50,"value":1269},{"type":45,"tag":434,"props":1680,"children":1681},{"style":1146},[1682],{"type":50,"value":1528},{"type":45,"tag":434,"props":1684,"children":1685},{"style":1105},[1686],{"type":50,"value":1269},{"type":45,"tag":434,"props":1688,"children":1689},{"style":1146},[1690],{"type":50,"value":1691}," Restriction ",{"type":45,"tag":434,"props":1693,"children":1694},{"style":1105},[1695],{"type":50,"value":1288},{"type":45,"tag":434,"props":1697,"children":1699},{"class":436,"line":1698},34,[1700],{"type":45,"tag":434,"props":1701,"children":1702},{"style":1105},[1703],{"type":50,"value":1704},"|----------|------|-------------|\n",{"type":45,"tag":434,"props":1706,"children":1708},{"class":436,"line":1707},35,[1709,1713,1717,1722,1726,1730,1734,1739,1743,1747,1751,1756,1760],{"type":45,"tag":434,"props":1710,"children":1711},{"style":1105},[1712],{"type":50,"value":1269},{"type":45,"tag":434,"props":1714,"children":1715},{"style":1105},[1716],{"type":50,"value":1563},{"type":45,"tag":434,"props":1718,"children":1719},{"style":447},[1720],{"type":50,"value":1721},"setFee(uint256)",{"type":45,"tag":434,"props":1723,"children":1724},{"style":1105},[1725],{"type":50,"value":1573},{"type":45,"tag":434,"props":1727,"children":1728},{"style":1105},[1729],{"type":50,"value":1425},{"type":45,"tag":434,"props":1731,"children":1732},{"style":1105},[1733],{"type":50,"value":1563},{"type":45,"tag":434,"props":1735,"children":1736},{"style":447},[1737],{"type":50,"value":1738},"Config.sol:L15",{"type":45,"tag":434,"props":1740,"children":1741},{"style":1105},[1742],{"type":50,"value":1573},{"type":45,"tag":434,"props":1744,"children":1745},{"style":1105},[1746],{"type":50,"value":1425},{"type":45,"tag":434,"props":1748,"children":1749},{"style":1105},[1750],{"type":50,"value":1563},{"type":45,"tag":434,"props":1752,"children":1753},{"style":447},[1754],{"type":50,"value":1755},"onlyOwner",{"type":45,"tag":434,"props":1757,"children":1758},{"style":1105},[1759],{"type":50,"value":1573},{"type":45,"tag":434,"props":1761,"children":1762},{"style":1105},[1763],{"type":50,"value":1443},{"type":45,"tag":434,"props":1765,"children":1767},{"class":436,"line":1766},36,[1768],{"type":45,"tag":434,"props":1769,"children":1770},{"emptyLinePlaceholder":1120},[1771],{"type":50,"value":1123},{"type":45,"tag":434,"props":1773,"children":1775},{"class":436,"line":1774},37,[1776,1780],{"type":45,"tag":434,"props":1777,"children":1778},{"style":1105},[1779],{"type":50,"value":1657},{"type":45,"tag":434,"props":1781,"children":1782},{"style":469},[1783],{"type":50,"value":1784},"Governance\n",{"type":45,"tag":434,"props":1786,"children":1788},{"class":436,"line":1787},38,[1789,1793,1797,1801,1805,1809,1813],{"type":45,"tag":434,"props":1790,"children":1791},{"style":1105},[1792],{"type":50,"value":1269},{"type":45,"tag":434,"props":1794,"children":1795},{"style":1146},[1796],{"type":50,"value":1519},{"type":45,"tag":434,"props":1798,"children":1799},{"style":1105},[1800],{"type":50,"value":1269},{"type":45,"tag":434,"props":1802,"children":1803},{"style":1146},[1804],{"type":50,"value":1528},{"type":45,"tag":434,"props":1806,"children":1807},{"style":1105},[1808],{"type":50,"value":1269},{"type":45,"tag":434,"props":1810,"children":1811},{"style":1146},[1812],{"type":50,"value":1691},{"type":45,"tag":434,"props":1814,"children":1815},{"style":1105},[1816],{"type":50,"value":1288},{"type":45,"tag":434,"props":1818,"children":1820},{"class":436,"line":1819},39,[1821],{"type":45,"tag":434,"props":1822,"children":1823},{"style":1105},[1824],{"type":50,"value":1704},{"type":45,"tag":434,"props":1826,"children":1828},{"class":436,"line":1827},40,[1829],{"type":45,"tag":434,"props":1830,"children":1831},{"emptyLinePlaceholder":1120},[1832],{"type":50,"value":1123},{"type":45,"tag":434,"props":1834,"children":1836},{"class":436,"line":1835},41,[1837,1841],{"type":45,"tag":434,"props":1838,"children":1839},{"style":1105},[1840],{"type":50,"value":1657},{"type":45,"tag":434,"props":1842,"children":1843},{"style":469},[1844],{"type":50,"value":1845},"Guardian \u002F Pauser\n",{"type":45,"tag":434,"props":1847,"children":1849},{"class":436,"line":1848},42,[1850,1854,1858,1862,1866,1870,1874],{"type":45,"tag":434,"props":1851,"children":1852},{"style":1105},[1853],{"type":50,"value":1269},{"type":45,"tag":434,"props":1855,"children":1856},{"style":1146},[1857],{"type":50,"value":1519},{"type":45,"tag":434,"props":1859,"children":1860},{"style":1105},[1861],{"type":50,"value":1269},{"type":45,"tag":434,"props":1863,"children":1864},{"style":1146},[1865],{"type":50,"value":1528},{"type":45,"tag":434,"props":1867,"children":1868},{"style":1105},[1869],{"type":50,"value":1269},{"type":45,"tag":434,"props":1871,"children":1872},{"style":1146},[1873],{"type":50,"value":1691},{"type":45,"tag":434,"props":1875,"children":1876},{"style":1105},[1877],{"type":50,"value":1288},{"type":45,"tag":434,"props":1879,"children":1881},{"class":436,"line":1880},43,[1882],{"type":45,"tag":434,"props":1883,"children":1884},{"style":1105},[1885],{"type":50,"value":1704},{"type":45,"tag":434,"props":1887,"children":1889},{"class":436,"line":1888},44,[1890],{"type":45,"tag":434,"props":1891,"children":1892},{"emptyLinePlaceholder":1120},[1893],{"type":50,"value":1123},{"type":45,"tag":434,"props":1895,"children":1897},{"class":436,"line":1896},45,[1898,1902],{"type":45,"tag":434,"props":1899,"children":1900},{"style":1105},[1901],{"type":50,"value":1657},{"type":45,"tag":434,"props":1903,"children":1904},{"style":469},[1905],{"type":50,"value":1906},"Other Roles\n",{"type":45,"tag":434,"props":1908,"children":1910},{"class":436,"line":1909},46,[1911,1915,1919,1923,1927,1931,1935,1939,1944],{"type":45,"tag":434,"props":1912,"children":1913},{"style":1105},[1914],{"type":50,"value":1269},{"type":45,"tag":434,"props":1916,"children":1917},{"style":1146},[1918],{"type":50,"value":1519},{"type":45,"tag":434,"props":1920,"children":1921},{"style":1105},[1922],{"type":50,"value":1269},{"type":45,"tag":434,"props":1924,"children":1925},{"style":1146},[1926],{"type":50,"value":1528},{"type":45,"tag":434,"props":1928,"children":1929},{"style":1105},[1930],{"type":50,"value":1269},{"type":45,"tag":434,"props":1932,"children":1933},{"style":1146},[1934],{"type":50,"value":1691},{"type":45,"tag":434,"props":1936,"children":1937},{"style":1105},[1938],{"type":50,"value":1269},{"type":45,"tag":434,"props":1940,"children":1941},{"style":1146},[1942],{"type":50,"value":1943}," Role ",{"type":45,"tag":434,"props":1945,"children":1946},{"style":1105},[1947],{"type":50,"value":1288},{"type":45,"tag":434,"props":1949,"children":1951},{"class":436,"line":1950},47,[1952],{"type":45,"tag":434,"props":1953,"children":1954},{"style":1105},[1955],{"type":50,"value":1956},"|----------|------|-------------|------|\n",{"type":45,"tag":434,"props":1958,"children":1960},{"class":436,"line":1959},48,[1961],{"type":45,"tag":434,"props":1962,"children":1963},{"emptyLinePlaceholder":1120},[1964],{"type":50,"value":1123},{"type":45,"tag":434,"props":1966,"children":1968},{"class":436,"line":1967},49,[1969],{"type":45,"tag":434,"props":1970,"children":1971},{"style":1146},[1972],{"type":50,"value":1460},{"type":45,"tag":434,"props":1974,"children":1976},{"class":436,"line":1975},50,[1977],{"type":45,"tag":434,"props":1978,"children":1979},{"emptyLinePlaceholder":1120},[1980],{"type":50,"value":1123},{"type":45,"tag":434,"props":1982,"children":1984},{"class":436,"line":1983},51,[1985,1989],{"type":45,"tag":434,"props":1986,"children":1987},{"style":1105},[1988],{"type":50,"value":1247},{"type":45,"tag":434,"props":1990,"children":1991},{"style":469},[1992],{"type":50,"value":1993},"Restricted (Review Required)\n",{"type":45,"tag":434,"props":1995,"children":1997},{"class":436,"line":1996},52,[1998],{"type":45,"tag":434,"props":1999,"children":2000},{"emptyLinePlaceholder":1120},[2001],{"type":50,"value":1123},{"type":45,"tag":434,"props":2003,"children":2005},{"class":436,"line":2004},53,[2006],{"type":45,"tag":434,"props":2007,"children":2008},{"style":1146},[2009],{"type":50,"value":2010},"Functions with access control patterns that need manual verification.\n",{"type":45,"tag":434,"props":2012,"children":2014},{"class":436,"line":2013},54,[2015],{"type":45,"tag":434,"props":2016,"children":2017},{"emptyLinePlaceholder":1120},[2018],{"type":50,"value":1123},{"type":45,"tag":434,"props":2020,"children":2022},{"class":436,"line":2021},55,[2023,2027,2031,2035,2039,2043,2048,2052,2057],{"type":45,"tag":434,"props":2024,"children":2025},{"style":1105},[2026],{"type":50,"value":1269},{"type":45,"tag":434,"props":2028,"children":2029},{"style":1146},[2030],{"type":50,"value":1519},{"type":45,"tag":434,"props":2032,"children":2033},{"style":1105},[2034],{"type":50,"value":1269},{"type":45,"tag":434,"props":2036,"children":2037},{"style":1146},[2038],{"type":50,"value":1528},{"type":45,"tag":434,"props":2040,"children":2041},{"style":1105},[2042],{"type":50,"value":1269},{"type":45,"tag":434,"props":2044,"children":2045},{"style":1146},[2046],{"type":50,"value":2047}," Pattern ",{"type":45,"tag":434,"props":2049,"children":2050},{"style":1105},[2051],{"type":50,"value":1269},{"type":45,"tag":434,"props":2053,"children":2054},{"style":1146},[2055],{"type":50,"value":2056}," Why Review ",{"type":45,"tag":434,"props":2058,"children":2059},{"style":1105},[2060],{"type":50,"value":1288},{"type":45,"tag":434,"props":2062,"children":2064},{"class":436,"line":2063},56,[2065],{"type":45,"tag":434,"props":2066,"children":2067},{"style":1105},[2068],{"type":50,"value":2069},"|----------|------|---------|------------|\n",{"type":45,"tag":434,"props":2071,"children":2073},{"class":436,"line":2072},57,[2074,2078,2082,2087,2091,2095,2099,2104,2108,2112,2116,2121,2125,2129,2134],{"type":45,"tag":434,"props":2075,"children":2076},{"style":1105},[2077],{"type":50,"value":1269},{"type":45,"tag":434,"props":2079,"children":2080},{"style":1105},[2081],{"type":50,"value":1563},{"type":45,"tag":434,"props":2083,"children":2084},{"style":447},[2085],{"type":50,"value":2086},"execute(bytes)",{"type":45,"tag":434,"props":2088,"children":2089},{"style":1105},[2090],{"type":50,"value":1573},{"type":45,"tag":434,"props":2092,"children":2093},{"style":1105},[2094],{"type":50,"value":1425},{"type":45,"tag":434,"props":2096,"children":2097},{"style":1105},[2098],{"type":50,"value":1563},{"type":45,"tag":434,"props":2100,"children":2101},{"style":447},[2102],{"type":50,"value":2103},"Executor.sol:L88",{"type":45,"tag":434,"props":2105,"children":2106},{"style":1105},[2107],{"type":50,"value":1573},{"type":45,"tag":434,"props":2109,"children":2110},{"style":1105},[2111],{"type":50,"value":1425},{"type":45,"tag":434,"props":2113,"children":2114},{"style":1105},[2115],{"type":50,"value":1563},{"type":45,"tag":434,"props":2117,"children":2118},{"style":447},[2119],{"type":50,"value":2120},"require(trusted[msg.sender])",{"type":45,"tag":434,"props":2122,"children":2123},{"style":1105},[2124],{"type":50,"value":1573},{"type":45,"tag":434,"props":2126,"children":2127},{"style":1105},[2128],{"type":50,"value":1425},{"type":45,"tag":434,"props":2130,"children":2131},{"style":1146},[2132],{"type":50,"value":2133}," Dynamic trust list ",{"type":45,"tag":434,"props":2135,"children":2136},{"style":1105},[2137],{"type":50,"value":1288},{"type":45,"tag":434,"props":2139,"children":2141},{"class":436,"line":2140},58,[2142],{"type":45,"tag":434,"props":2143,"children":2144},{"emptyLinePlaceholder":1120},[2145],{"type":50,"value":1123},{"type":45,"tag":434,"props":2147,"children":2149},{"class":436,"line":2148},59,[2150],{"type":45,"tag":434,"props":2151,"children":2152},{"style":1146},[2153],{"type":50,"value":1460},{"type":45,"tag":434,"props":2155,"children":2157},{"class":436,"line":2156},60,[2158],{"type":45,"tag":434,"props":2159,"children":2160},{"emptyLinePlaceholder":1120},[2161],{"type":50,"value":1123},{"type":45,"tag":434,"props":2163,"children":2165},{"class":436,"line":2164},61,[2166,2170],{"type":45,"tag":434,"props":2167,"children":2168},{"style":1105},[2169],{"type":50,"value":1247},{"type":45,"tag":434,"props":2171,"children":2172},{"style":469},[2173],{"type":50,"value":2174},"Contract-Only (Internal Integration Points)\n",{"type":45,"tag":434,"props":2176,"children":2178},{"class":436,"line":2177},62,[2179],{"type":45,"tag":434,"props":2180,"children":2181},{"emptyLinePlaceholder":1120},[2182],{"type":50,"value":1123},{"type":45,"tag":434,"props":2184,"children":2186},{"class":436,"line":2185},63,[2187],{"type":45,"tag":434,"props":2188,"children":2189},{"style":1146},[2190],{"type":50,"value":2191},"Functions only callable by other contracts—useful for understanding trust boundaries.\n",{"type":45,"tag":434,"props":2193,"children":2195},{"class":436,"line":2194},64,[2196],{"type":45,"tag":434,"props":2197,"children":2198},{"emptyLinePlaceholder":1120},[2199],{"type":50,"value":1123},{"type":45,"tag":434,"props":2201,"children":2203},{"class":436,"line":2202},65,[2204,2208,2212,2216,2220,2224,2229],{"type":45,"tag":434,"props":2205,"children":2206},{"style":1105},[2207],{"type":50,"value":1269},{"type":45,"tag":434,"props":2209,"children":2210},{"style":1146},[2211],{"type":50,"value":1519},{"type":45,"tag":434,"props":2213,"children":2214},{"style":1105},[2215],{"type":50,"value":1269},{"type":45,"tag":434,"props":2217,"children":2218},{"style":1146},[2219],{"type":50,"value":1528},{"type":45,"tag":434,"props":2221,"children":2222},{"style":1105},[2223],{"type":50,"value":1269},{"type":45,"tag":434,"props":2225,"children":2226},{"style":1146},[2227],{"type":50,"value":2228}," Expected Caller ",{"type":45,"tag":434,"props":2230,"children":2231},{"style":1105},[2232],{"type":50,"value":1288},{"type":45,"tag":434,"props":2234,"children":2236},{"class":436,"line":2235},66,[2237],{"type":45,"tag":434,"props":2238,"children":2239},{"style":1105},[2240],{"type":50,"value":2241},"|----------|------|-----------------|\n",{"type":45,"tag":434,"props":2243,"children":2245},{"class":436,"line":2244},67,[2246,2250,2254,2259,2263,2267,2271,2276,2280,2284,2289],{"type":45,"tag":434,"props":2247,"children":2248},{"style":1105},[2249],{"type":50,"value":1269},{"type":45,"tag":434,"props":2251,"children":2252},{"style":1105},[2253],{"type":50,"value":1563},{"type":45,"tag":434,"props":2255,"children":2256},{"style":447},[2257],{"type":50,"value":2258},"onFlashLoan(...)",{"type":45,"tag":434,"props":2260,"children":2261},{"style":1105},[2262],{"type":50,"value":1573},{"type":45,"tag":434,"props":2264,"children":2265},{"style":1105},[2266],{"type":50,"value":1425},{"type":45,"tag":434,"props":2268,"children":2269},{"style":1105},[2270],{"type":50,"value":1563},{"type":45,"tag":434,"props":2272,"children":2273},{"style":447},[2274],{"type":50,"value":2275},"Vault.sol:L200",{"type":45,"tag":434,"props":2277,"children":2278},{"style":1105},[2279],{"type":50,"value":1573},{"type":45,"tag":434,"props":2281,"children":2282},{"style":1105},[2283],{"type":50,"value":1425},{"type":45,"tag":434,"props":2285,"children":2286},{"style":1146},[2287],{"type":50,"value":2288}," Flash loan provider ",{"type":45,"tag":434,"props":2290,"children":2291},{"style":1105},[2292],{"type":50,"value":1288},{"type":45,"tag":434,"props":2294,"children":2296},{"class":436,"line":2295},68,[2297],{"type":45,"tag":434,"props":2298,"children":2299},{"emptyLinePlaceholder":1120},[2300],{"type":50,"value":1123},{"type":45,"tag":434,"props":2302,"children":2304},{"class":436,"line":2303},69,[2305],{"type":45,"tag":434,"props":2306,"children":2307},{"style":1146},[2308],{"type":50,"value":1460},{"type":45,"tag":434,"props":2310,"children":2312},{"class":436,"line":2311},70,[2313],{"type":45,"tag":434,"props":2314,"children":2315},{"emptyLinePlaceholder":1120},[2316],{"type":50,"value":1123},{"type":45,"tag":434,"props":2318,"children":2320},{"class":436,"line":2319},71,[2321,2325],{"type":45,"tag":434,"props":2322,"children":2323},{"style":1105},[2324],{"type":50,"value":1247},{"type":45,"tag":434,"props":2326,"children":2327},{"style":469},[2328],{"type":50,"value":2329},"Files Analyzed\n",{"type":45,"tag":434,"props":2331,"children":2333},{"class":436,"line":2332},72,[2334],{"type":45,"tag":434,"props":2335,"children":2336},{"emptyLinePlaceholder":1120},[2337],{"type":50,"value":1123},{"type":45,"tag":434,"props":2339,"children":2341},{"class":436,"line":2340},73,[2342,2347,2351,2356,2360],{"type":45,"tag":434,"props":2343,"children":2344},{"style":1105},[2345],{"type":50,"value":2346},"-",{"type":45,"tag":434,"props":2348,"children":2349},{"style":1105},[2350],{"type":50,"value":1563},{"type":45,"tag":434,"props":2352,"children":2353},{"style":447},[2354],{"type":50,"value":2355},"path\u002Fto\u002Ffile1.sol",{"type":45,"tag":434,"props":2357,"children":2358},{"style":1105},[2359],{"type":50,"value":1573},{"type":45,"tag":434,"props":2361,"children":2362},{"style":1146},[2363],{"type":50,"value":2364}," (X state-changing entry points)\n",{"type":45,"tag":434,"props":2366,"children":2368},{"class":436,"line":2367},74,[2369,2373,2377,2382,2386],{"type":45,"tag":434,"props":2370,"children":2371},{"style":1105},[2372],{"type":50,"value":2346},{"type":45,"tag":434,"props":2374,"children":2375},{"style":1105},[2376],{"type":50,"value":1563},{"type":45,"tag":434,"props":2378,"children":2379},{"style":447},[2380],{"type":50,"value":2381},"path\u002Fto\u002Ffile2.sol",{"type":45,"tag":434,"props":2383,"children":2384},{"style":1105},[2385],{"type":50,"value":1573},{"type":45,"tag":434,"props":2387,"children":2388},{"style":1146},[2389],{"type":50,"value":2364},{"type":45,"tag":67,"props":2391,"children":2393},{"id":2392},"filtering",[2394],{"type":50,"value":2395},"Filtering",{"type":45,"tag":53,"props":2397,"children":2398},{},[2399],{"type":50,"value":2400},"When user specifies a directory filter:",{"type":45,"tag":79,"props":2402,"children":2403},{},[2404,2409,2414],{"type":45,"tag":83,"props":2405,"children":2406},{},[2407],{"type":50,"value":2408},"Only analyze files within that path",{"type":45,"tag":83,"props":2410,"children":2411},{},[2412],{"type":50,"value":2413},"Note the filter in the report header",{"type":45,"tag":83,"props":2415,"children":2416},{},[2417,2419,2425,2427],{"type":50,"value":2418},"Example: \"Analyze only ",{"type":45,"tag":203,"props":2420,"children":2422},{"className":2421},[],[2423],{"type":50,"value":2424},"src\u002Fcore\u002F",{"type":50,"value":2426},"\" → scope = ",{"type":45,"tag":203,"props":2428,"children":2430},{"className":2429},[],[2431],{"type":50,"value":2424},{"type":45,"tag":67,"props":2433,"children":2435},{"id":2434},"analysis-guidelines",[2436],{"type":50,"value":2437},"Analysis Guidelines",{"type":45,"tag":341,"props":2439,"children":2440},{},[2441,2451,2461,2484,2494,2504],{"type":45,"tag":83,"props":2442,"children":2443},{},[2444,2449],{"type":45,"tag":59,"props":2445,"children":2446},{},[2447],{"type":50,"value":2448},"Be thorough",{"type":50,"value":2450},": Don't skip files. Every state-changing externally callable function matters.",{"type":45,"tag":83,"props":2452,"children":2453},{},[2454,2459],{"type":45,"tag":59,"props":2455,"children":2456},{},[2457],{"type":50,"value":2458},"Be conservative",{"type":50,"value":2460},": When uncertain about access level, flag for review rather than miscategorize.",{"type":45,"tag":83,"props":2462,"children":2463},{},[2464,2469,2471,2476,2477,2482],{"type":45,"tag":59,"props":2465,"children":2466},{},[2467],{"type":50,"value":2468},"Skip read-only",{"type":50,"value":2470},": Exclude ",{"type":45,"tag":203,"props":2472,"children":2474},{"className":2473},[],[2475],{"type":50,"value":208},{"type":50,"value":210},{"type":45,"tag":203,"props":2478,"children":2480},{"className":2479},[],[2481],{"type":50,"value":216},{"type":50,"value":2483},", and equivalent read-only functions.",{"type":45,"tag":83,"props":2485,"children":2486},{},[2487,2492],{"type":45,"tag":59,"props":2488,"children":2489},{},[2490],{"type":50,"value":2491},"Note inheritance",{"type":50,"value":2493},": If a function's access control comes from a parent contract, note this.",{"type":45,"tag":83,"props":2495,"children":2496},{},[2497,2502],{"type":45,"tag":59,"props":2498,"children":2499},{},[2500],{"type":50,"value":2501},"Track modifiers",{"type":50,"value":2503},": List all access-related modifiers\u002Fdecorators applied to each function.",{"type":45,"tag":83,"props":2505,"children":2506},{},[2507,2512,2514],{"type":45,"tag":59,"props":2508,"children":2509},{},[2510],{"type":50,"value":2511},"Identify patterns",{"type":50,"value":2513},": Look for common patterns like:\n",{"type":45,"tag":79,"props":2515,"children":2516},{},[2517,2522,2527,2532,2537],{"type":45,"tag":83,"props":2518,"children":2519},{},[2520],{"type":50,"value":2521},"Initializer functions (often unrestricted on first call)",{"type":45,"tag":83,"props":2523,"children":2524},{},[2525],{"type":50,"value":2526},"Upgrade functions (high-privilege)",{"type":45,"tag":83,"props":2528,"children":2529},{},[2530],{"type":50,"value":2531},"Emergency\u002Fpause functions (guardian-level)",{"type":45,"tag":83,"props":2533,"children":2534},{},[2535],{"type":50,"value":2536},"Fee\u002Fparameter setters (admin-level)",{"type":45,"tag":83,"props":2538,"children":2539},{},[2540],{"type":50,"value":2541},"Token transfers and approvals (often public)",{"type":45,"tag":67,"props":2543,"children":2545},{"id":2544},"common-role-patterns-by-protocol-type",[2546],{"type":50,"value":2547},"Common Role Patterns by Protocol Type",{"type":45,"tag":164,"props":2549,"children":2550},{},[2551,2567],{"type":45,"tag":168,"props":2552,"children":2553},{},[2554],{"type":45,"tag":172,"props":2555,"children":2556},{},[2557,2562],{"type":45,"tag":176,"props":2558,"children":2559},{},[2560],{"type":50,"value":2561},"Protocol Type",{"type":45,"tag":176,"props":2563,"children":2564},{},[2565],{"type":50,"value":2566},"Common Roles",{"type":45,"tag":187,"props":2568,"children":2569},{},[2570,2600,2636,2674,2703,2738],{"type":45,"tag":172,"props":2571,"children":2572},{},[2573,2578],{"type":45,"tag":194,"props":2574,"children":2575},{},[2576],{"type":50,"value":2577},"DEX",{"type":45,"tag":194,"props":2579,"children":2580},{},[2581,2586,2587,2593,2594],{"type":45,"tag":203,"props":2582,"children":2584},{"className":2583},[],[2585],{"type":50,"value":898},{"type":50,"value":210},{"type":45,"tag":203,"props":2588,"children":2590},{"className":2589},[],[2591],{"type":50,"value":2592},"feeManager",{"type":50,"value":210},{"type":45,"tag":203,"props":2595,"children":2597},{"className":2596},[],[2598],{"type":50,"value":2599},"pairCreator",{"type":45,"tag":172,"props":2601,"children":2602},{},[2603,2608],{"type":45,"tag":194,"props":2604,"children":2605},{},[2606],{"type":50,"value":2607},"Lending",{"type":45,"tag":194,"props":2609,"children":2610},{},[2611,2616,2617,2622,2623,2629,2630],{"type":45,"tag":203,"props":2612,"children":2614},{"className":2613},[],[2615],{"type":50,"value":891},{"type":50,"value":210},{"type":45,"tag":203,"props":2618,"children":2620},{"className":2619},[],[2621],{"type":50,"value":912},{"type":50,"value":210},{"type":45,"tag":203,"props":2624,"children":2626},{"className":2625},[],[2627],{"type":50,"value":2628},"liquidator",{"type":50,"value":210},{"type":45,"tag":203,"props":2631,"children":2633},{"className":2632},[],[2634],{"type":50,"value":2635},"oracle",{"type":45,"tag":172,"props":2637,"children":2638},{},[2639,2644],{"type":45,"tag":194,"props":2640,"children":2641},{},[2642],{"type":50,"value":2643},"Governance",{"type":45,"tag":194,"props":2645,"children":2646},{},[2647,2653,2654,2660,2661,2667,2668],{"type":45,"tag":203,"props":2648,"children":2650},{"className":2649},[],[2651],{"type":50,"value":2652},"proposer",{"type":50,"value":210},{"type":45,"tag":203,"props":2655,"children":2657},{"className":2656},[],[2658],{"type":50,"value":2659},"executor",{"type":50,"value":210},{"type":45,"tag":203,"props":2662,"children":2664},{"className":2663},[],[2665],{"type":50,"value":2666},"canceller",{"type":50,"value":210},{"type":45,"tag":203,"props":2669,"children":2671},{"className":2670},[],[2672],{"type":50,"value":2673},"timelock",{"type":45,"tag":172,"props":2675,"children":2676},{},[2677,2682],{"type":45,"tag":194,"props":2678,"children":2679},{},[2680],{"type":50,"value":2681},"NFT",{"type":45,"tag":194,"props":2683,"children":2684},{},[2685,2690,2691,2696,2697],{"type":45,"tag":203,"props":2686,"children":2688},{"className":2687},[],[2689],{"type":50,"value":933},{"type":50,"value":210},{"type":45,"tag":203,"props":2692,"children":2694},{"className":2693},[],[2695],{"type":50,"value":891},{"type":50,"value":210},{"type":45,"tag":203,"props":2698,"children":2700},{"className":2699},[],[2701],{"type":50,"value":2702},"royaltyReceiver",{"type":45,"tag":172,"props":2704,"children":2705},{},[2706,2711],{"type":45,"tag":194,"props":2707,"children":2708},{},[2709],{"type":50,"value":2710},"Bridge",{"type":45,"tag":194,"props":2712,"children":2713},{},[2714,2719,2720,2725,2726,2732,2733],{"type":45,"tag":203,"props":2715,"children":2717},{"className":2716},[],[2718],{"type":50,"value":954},{"type":50,"value":210},{"type":45,"tag":203,"props":2721,"children":2723},{"className":2722},[],[2724],{"type":50,"value":912},{"type":50,"value":210},{"type":45,"tag":203,"props":2727,"children":2729},{"className":2728},[],[2730],{"type":50,"value":2731},"validator",{"type":50,"value":210},{"type":45,"tag":203,"props":2734,"children":2736},{"className":2735},[],[2737],{"type":50,"value":919},{"type":45,"tag":172,"props":2739,"children":2740},{},[2741,2746],{"type":45,"tag":194,"props":2742,"children":2743},{},[2744],{"type":50,"value":2745},"Vault\u002FYield",{"type":45,"tag":194,"props":2747,"children":2748},{},[2749,2755,2756,2761,2762,2768,2769],{"type":45,"tag":203,"props":2750,"children":2752},{"className":2751},[],[2753],{"type":50,"value":2754},"strategist",{"type":50,"value":210},{"type":45,"tag":203,"props":2757,"children":2759},{"className":2758},[],[2760],{"type":50,"value":947},{"type":50,"value":210},{"type":45,"tag":203,"props":2763,"children":2765},{"className":2764},[],[2766],{"type":50,"value":2767},"harvester",{"type":50,"value":210},{"type":45,"tag":203,"props":2770,"children":2772},{"className":2771},[],[2773],{"type":50,"value":926},{"type":45,"tag":67,"props":2775,"children":2777},{"id":2776},"rationalizations-to-reject",[2778],{"type":50,"value":2779},"Rationalizations to Reject",{"type":45,"tag":53,"props":2781,"children":2782},{},[2783],{"type":50,"value":2784},"When analyzing entry points, reject these shortcuts:",{"type":45,"tag":79,"props":2786,"children":2787},{},[2788,2793,2798,2803,2808],{"type":45,"tag":83,"props":2789,"children":2790},{},[2791],{"type":50,"value":2792},"\"This function looks standard\" → Still classify it; standard functions can have non-standard access control",{"type":45,"tag":83,"props":2794,"children":2795},{},[2796],{"type":50,"value":2797},"\"The modifier name is clear\" → Verify the modifier's actual implementation",{"type":45,"tag":83,"props":2799,"children":2800},{},[2801],{"type":50,"value":2802},"\"This is obviously admin-only\" → Trace the actual restriction; \"obvious\" assumptions miss subtle bypasses",{"type":45,"tag":83,"props":2804,"children":2805},{},[2806],{"type":50,"value":2807},"\"I'll skip the callbacks\" → Callbacks define trust boundaries; always include them",{"type":45,"tag":83,"props":2809,"children":2810},{},[2811],{"type":50,"value":2812},"\"It doesn't modify much state\" → Any state change can be exploited; include all non-view functions",{"type":45,"tag":67,"props":2814,"children":2816},{"id":2815},"error-handling",[2817],{"type":50,"value":2818},"Error Handling",{"type":45,"tag":53,"props":2820,"children":2821},{},[2822],{"type":50,"value":2823},"If a file cannot be parsed:",{"type":45,"tag":341,"props":2825,"children":2826},{},[2827,2832,2837],{"type":45,"tag":83,"props":2828,"children":2829},{},[2830],{"type":50,"value":2831},"Note it in the report under \"Analysis Warnings\"",{"type":45,"tag":83,"props":2833,"children":2834},{},[2835],{"type":50,"value":2836},"Continue with remaining files",{"type":45,"tag":83,"props":2838,"children":2839},{},[2840],{"type":50,"value":2841},"Suggest manual review for unparsable files",{"type":45,"tag":2843,"props":2844,"children":2845},"style",{},[2846],{"type":50,"value":2847},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2849,"total":2999},[2850,2867,2877,2895,2906,2919,2931,2941,2954,2965,2977,2988],{"slug":2851,"name":2851,"fn":2852,"description":2853,"org":2854,"tags":2855,"stars":26,"repoUrl":27,"updatedAt":2866},"address-sanitizer","detect memory errors during fuzzing","AddressSanitizer detects memory errors during fuzzing. Use when fuzzing C\u002FC++ code to find buffer overflows and use-after-free bugs.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2856,2859,2862,2863],{"name":2857,"slug":2858,"type":16},"C#","c",{"name":2860,"slug":2861,"type":16},"Debugging","debugging",{"name":14,"slug":15,"type":16},{"name":2864,"slug":2865,"type":16},"Testing","testing","2026-07-17T06:05:14.925095",{"slug":2868,"name":2868,"fn":2869,"description":2870,"org":2871,"tags":2872,"stars":26,"repoUrl":27,"updatedAt":2876},"aflpp","perform multi-core fuzzing of C\u002FC++ projects","AFL++ is a fork of AFL with better fuzzing performance and advanced features. Use for multi-core fuzzing of C\u002FC++ projects.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2873,2874,2875],{"name":2857,"slug":2858,"type":16},{"name":14,"slug":15,"type":16},{"name":2864,"slug":2865,"type":16},"2026-07-17T06:05:12.433192",{"slug":2878,"name":2878,"fn":2879,"description":2880,"org":2881,"tags":2882,"stars":26,"repoUrl":27,"updatedAt":2894},"agentic-actions-auditor","audit GitHub Actions for security vulnerabilities","Audits GitHub Actions workflows for security vulnerabilities in AI agent integrations including Claude Code Action, Gemini CLI, OpenAI Codex, and GitHub AI Inference. Detects attack vectors where attacker-controlled input reaches AI agents running in CI\u002FCD pipelines, including env var intermediary patterns, direct expression injection, dangerous sandbox configurations, and wildcard user allowlists. Use when reviewing workflow files that invoke AI coding agents, auditing CI\u002FCD pipeline security for prompt injection risks, or evaluating agentic action configurations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2883,2886,2889,2890,2893],{"name":2884,"slug":2885,"type":16},"Agents","agents",{"name":2887,"slug":2888,"type":16},"CI\u002FCD","ci-cd",{"name":24,"slug":25,"type":16},{"name":2891,"slug":2892,"type":16},"GitHub Actions","github-actions",{"name":14,"slug":15,"type":16},"2026-07-18T05:47:48.564744",{"slug":2896,"name":2896,"fn":2897,"description":2898,"org":2899,"tags":2900,"stars":26,"repoUrl":27,"updatedAt":2905},"algorand-vulnerability-scanner","scan Algorand smart contracts for vulnerabilities","Scans Algorand smart contracts for 11 common vulnerabilities including rekeying attacks, unchecked transaction fees, missing field validations, and access control issues. Use when auditing Algorand projects (TEAL\u002FPyTeal).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2901,2902,2903,2904],{"name":18,"slug":19,"type":16},{"name":24,"slug":25,"type":16},{"name":14,"slug":15,"type":16},{"name":21,"slug":22,"type":16},"2026-07-18T05:47:43.989063",{"slug":2907,"name":2907,"fn":2908,"description":2909,"org":2910,"tags":2911,"stars":26,"repoUrl":27,"updatedAt":2918},"ask-questions-if-underspecified","clarify requirements before implementation","Clarify requirements before implementing. Use when serious doubts arise.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2912,2915],{"name":2913,"slug":2914,"type":16},"Engineering","engineering",{"name":2916,"slug":2917,"type":16},"Productivity","productivity","2026-07-17T06:05:33.543262",{"slug":2920,"name":2920,"fn":2921,"description":2922,"org":2923,"tags":2924,"stars":26,"repoUrl":27,"updatedAt":2930},"atheris","fuzz Python code with Atheris","Atheris is a coverage-guided Python fuzzer based on libFuzzer. Use for fuzzing pure Python code and Python C extensions.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2925,2928,2929],{"name":2926,"slug":2927,"type":16},"Python","python",{"name":14,"slug":15,"type":16},{"name":2864,"slug":2865,"type":16},"2026-07-17T06:05:14.575191",{"slug":2932,"name":2932,"fn":2933,"description":2934,"org":2935,"tags":2936,"stars":26,"repoUrl":27,"updatedAt":2940},"audit-augmentation","augment code graphs with audit findings","Augments Trailmark code graphs with external audit findings from SARIF static analysis results, weAudit annotation files, and version-gated Trailmark 0.4.x binary-analysis graph exports. Maps findings to graph nodes by file and line overlap, creates severity-based subgraphs, and enables cross-referencing findings with pre-analysis data (blast radius, taint, etc.). Use when projecting SARIF results onto a code graph, overlaying weAudit annotations, importing binary graph findings, cross-referencing Semgrep, CodeQL, or binary-analysis findings with call graph data, or visualizing audit findings in the context of code structure.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2937,2938,2939],{"name":18,"slug":19,"type":16},{"name":24,"slug":25,"type":16},{"name":14,"slug":15,"type":16},"2026-08-01T05:44:54.920542",{"slug":2942,"name":2942,"fn":2943,"description":2944,"org":2945,"tags":2946,"stars":26,"repoUrl":27,"updatedAt":2953},"audit-context-building","build architectural context for code analysis","Enables ultra-granular, line-by-line code analysis to build deep architectural context before vulnerability or bug finding.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2947,2950,2951,2952],{"name":2948,"slug":2949,"type":16},"Architecture","architecture",{"name":18,"slug":19,"type":16},{"name":24,"slug":25,"type":16},{"name":2913,"slug":2914,"type":16},"2026-07-18T05:47:40.122449",{"slug":2955,"name":2955,"fn":2956,"description":2957,"org":2958,"tags":2959,"stars":26,"repoUrl":27,"updatedAt":2964},"audit-prep-assistant","prepare codebases for security audits","Prepares codebases for security review using Trail of Bits' checklist. Helps set review goals, runs static analysis tools, increases test coverage, removes dead code, ensures accessibility, and generates documentation (flowcharts, user stories, inline comments).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2960,2961,2962,2963],{"name":18,"slug":19,"type":16},{"name":24,"slug":25,"type":16},{"name":2913,"slug":2914,"type":16},{"name":14,"slug":15,"type":16},"2026-07-18T05:47:39.210985",{"slug":2966,"name":2966,"fn":2967,"description":2968,"org":2969,"tags":2970,"stars":26,"repoUrl":27,"updatedAt":2976},"burpsuite-project-parser","parse Burp Suite project files","Searches and explores Burp Suite project files (.burp) from the command line. Use when searching response headers or bodies with regex patterns, extracting security audit findings, dumping proxy history or site map data, or analyzing HTTP traffic captured in a Burp project.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2971,2972,2975],{"name":18,"slug":19,"type":16},{"name":2973,"slug":2974,"type":16},"CLI","cli",{"name":14,"slug":15,"type":16},"2026-07-17T06:05:33.198077",{"slug":2978,"name":2978,"fn":2979,"description":2980,"org":2981,"tags":2982,"stars":26,"repoUrl":27,"updatedAt":2987},"c-review","audit C and C++ code","Performs comprehensive C\u002FC++ security review for memory corruption, integer overflows, race conditions, and platform-specific vulnerabilities. Use when auditing native C\u002FC++ applications, reviewing daemons or services for memory safety, or hunting integer overflow \u002F use-after-free \u002F race conditions in userspace code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2983,2984,2985,2986],{"name":18,"slug":19,"type":16},{"name":2857,"slug":2858,"type":16},{"name":24,"slug":25,"type":16},{"name":14,"slug":15,"type":16},"2026-07-17T06:05:11.333374",{"slug":2989,"name":2989,"fn":2990,"description":2991,"org":2992,"tags":2993,"stars":26,"repoUrl":27,"updatedAt":2998},"cairo-vulnerability-scanner","scan Cairo and StarkNet contracts for vulnerabilities","Scans Cairo\u002FStarkNet smart contracts for 6 critical vulnerabilities including felt252 arithmetic overflow, L1-L2 messaging issues, address conversion problems, and signature replay. Use when auditing StarkNet projects.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2994,2995,2996,2997],{"name":18,"slug":19,"type":16},{"name":24,"slug":25,"type":16},{"name":14,"slug":15,"type":16},{"name":21,"slug":22,"type":16},"2026-07-18T05:47:42.84568",111,{"items":3001,"total":3047},[3002,3009,3015,3023,3030,3035,3041],{"slug":2851,"name":2851,"fn":2852,"description":2853,"org":3003,"tags":3004,"stars":26,"repoUrl":27,"updatedAt":2866},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3005,3006,3007,3008],{"name":2857,"slug":2858,"type":16},{"name":2860,"slug":2861,"type":16},{"name":14,"slug":15,"type":16},{"name":2864,"slug":2865,"type":16},{"slug":2868,"name":2868,"fn":2869,"description":2870,"org":3010,"tags":3011,"stars":26,"repoUrl":27,"updatedAt":2876},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3012,3013,3014],{"name":2857,"slug":2858,"type":16},{"name":14,"slug":15,"type":16},{"name":2864,"slug":2865,"type":16},{"slug":2878,"name":2878,"fn":2879,"description":2880,"org":3016,"tags":3017,"stars":26,"repoUrl":27,"updatedAt":2894},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3018,3019,3020,3021,3022],{"name":2884,"slug":2885,"type":16},{"name":2887,"slug":2888,"type":16},{"name":24,"slug":25,"type":16},{"name":2891,"slug":2892,"type":16},{"name":14,"slug":15,"type":16},{"slug":2896,"name":2896,"fn":2897,"description":2898,"org":3024,"tags":3025,"stars":26,"repoUrl":27,"updatedAt":2905},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3026,3027,3028,3029],{"name":18,"slug":19,"type":16},{"name":24,"slug":25,"type":16},{"name":14,"slug":15,"type":16},{"name":21,"slug":22,"type":16},{"slug":2907,"name":2907,"fn":2908,"description":2909,"org":3031,"tags":3032,"stars":26,"repoUrl":27,"updatedAt":2918},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3033,3034],{"name":2913,"slug":2914,"type":16},{"name":2916,"slug":2917,"type":16},{"slug":2920,"name":2920,"fn":2921,"description":2922,"org":3036,"tags":3037,"stars":26,"repoUrl":27,"updatedAt":2930},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3038,3039,3040],{"name":2926,"slug":2927,"type":16},{"name":14,"slug":15,"type":16},{"name":2864,"slug":2865,"type":16},{"slug":2932,"name":2932,"fn":2933,"description":2934,"org":3042,"tags":3043,"stars":26,"repoUrl":27,"updatedAt":2940},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3044,3045,3046],{"name":18,"slug":19,"type":16},{"name":24,"slug":25,"type":16},{"name":14,"slug":15,"type":16},77]