web3skill 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +127 -0
  3. package/dist/archives/web3-audit-orchestrator.skill +0 -0
  4. package/dist/archives/web3-audit-reporting.skill +0 -0
  5. package/dist/archives/web3-fuzzing-and-invariants.skill +0 -0
  6. package/dist/archives/web3-native-operator.skill +0 -0
  7. package/dist/archives/web3-repo-heuristics.skill +0 -0
  8. package/dist/archives/web3-research-and-market-intel.skill +0 -0
  9. package/dist/archives/web3-risk-gate.skill +0 -0
  10. package/dist/archives/web3-service-orchestrator.skill +0 -0
  11. package/dist/archives/web3-static-analysis-runner.skill +0 -0
  12. package/dist/archives/web3-trace-and-state-analysis.skill +0 -0
  13. package/dist/archives/web3-transaction-simulator.skill +0 -0
  14. package/dist/archives/web3-wallet-operator.skill +0 -0
  15. package/dist/manifest.json +170 -0
  16. package/dist/skills/web3-audit-orchestrator/SKILL.md +79 -0
  17. package/dist/skills/web3-audit-orchestrator/references/ADAPTER_CONSUMPTION_MAP.md +15 -0
  18. package/dist/skills/web3-audit-orchestrator/references/OUTPUT_TEMPLATE.md +52 -0
  19. package/dist/skills/web3-audit-orchestrator/references/REVIEW_STATE_MACHINE.md +25 -0
  20. package/dist/skills/web3-audit-orchestrator/scripts/render_audit_review.py +95 -0
  21. package/dist/skills/web3-audit-reporting/SKILL.md +77 -0
  22. package/dist/skills/web3-audit-reporting/references/FINDING_TEMPLATE.md +54 -0
  23. package/dist/skills/web3-audit-reporting/references/REPORT_TEMPLATE.md +58 -0
  24. package/dist/skills/web3-audit-reporting/references/RETEST_TEMPLATE.md +35 -0
  25. package/dist/skills/web3-audit-reporting/references/SEVERITY_RUBRIC.md +75 -0
  26. package/dist/skills/web3-fuzzing-and-invariants/SKILL.md +68 -0
  27. package/dist/skills/web3-fuzzing-and-invariants/references/ADAPTER_CONSUMPTION_MAP.md +14 -0
  28. package/dist/skills/web3-fuzzing-and-invariants/references/OUTPUT_TEMPLATE.md +40 -0
  29. package/dist/skills/web3-fuzzing-and-invariants/references/READINESS_AND_FAILURES.md +25 -0
  30. package/dist/skills/web3-fuzzing-and-invariants/scripts/render_fuzz_summary.py +64 -0
  31. package/dist/skills/web3-native-operator/SKILL.md +218 -0
  32. package/dist/skills/web3-native-operator/references/EXECUTION_BUNDLE_TEMPLATE.md +47 -0
  33. package/dist/skills/web3-native-operator/references/OPERATOR_BUNDLE_TEMPLATE.md +39 -0
  34. package/dist/skills/web3-native-operator/references/POSTTRADE_FOLLOWUP_BUNDLE_TEMPLATE.md +35 -0
  35. package/dist/skills/web3-native-operator/references/POSTTRADE_WATCH_TEMPLATE.md +34 -0
  36. package/dist/skills/web3-native-operator/references/PRETRADE_PACKET_TEMPLATE.md +34 -0
  37. package/dist/skills/web3-native-operator/references/ROUTE_RECIPES.md +140 -0
  38. package/dist/skills/web3-native-operator/references/ROUTING_STATE_MACHINE.md +73 -0
  39. package/dist/skills/web3-native-operator/references/WATCH_CRON_REQUEST_TEMPLATE.md +26 -0
  40. package/dist/skills/web3-native-operator/references/WATCH_FOLLOWUP_BUNDLE_TEMPLATE.md +35 -0
  41. package/dist/skills/web3-native-operator/references/WATCH_HEARTBEAT_TEMPLATE.md +31 -0
  42. package/dist/skills/web3-native-operator/scripts/apply_followup_bundle_to_heartbeat.py +118 -0
  43. package/dist/skills/web3-native-operator/scripts/render_execution_bundle.py +259 -0
  44. package/dist/skills/web3-native-operator/scripts/render_operator_bundle.py +800 -0
  45. package/dist/skills/web3-native-operator/scripts/render_posttrade_followup_bundle.py +118 -0
  46. package/dist/skills/web3-native-operator/scripts/render_posttrade_watch_status.py +125 -0
  47. package/dist/skills/web3-native-operator/scripts/render_pretrade_packet.py +205 -0
  48. package/dist/skills/web3-native-operator/scripts/render_watch_cron_request.py +88 -0
  49. package/dist/skills/web3-native-operator/scripts/render_watch_followup_bundle.py +118 -0
  50. package/dist/skills/web3-native-operator/scripts/render_watch_heartbeat.py +52 -0
  51. package/dist/skills/web3-repo-heuristics/SKILL.md +37 -0
  52. package/dist/skills/web3-repo-heuristics/references/FOUNDRY.md +49 -0
  53. package/dist/skills/web3-repo-heuristics/references/HARDHAT.md +47 -0
  54. package/dist/skills/web3-repo-heuristics/references/VYPER.md +26 -0
  55. package/dist/skills/web3-research-and-market-intel/SKILL.md +138 -0
  56. package/dist/skills/web3-research-and-market-intel/references/ADAPTER_CONSUMPTION_MAP.md +66 -0
  57. package/dist/skills/web3-research-and-market-intel/references/EVIDENCE_QUALITY.md +27 -0
  58. package/dist/skills/web3-research-and-market-intel/references/OUTPUT_TEMPLATE.md +37 -0
  59. package/dist/skills/web3-research-and-market-intel/references/PORTFOLIO_STATUS_TEMPLATE.md +51 -0
  60. package/dist/skills/web3-research-and-market-intel/references/WATCH_STATUS_TEMPLATE.md +39 -0
  61. package/dist/skills/web3-research-and-market-intel/scripts/render_portfolio_status.py +85 -0
  62. package/dist/skills/web3-research-and-market-intel/scripts/render_research_brief.py +58 -0
  63. package/dist/skills/web3-research-and-market-intel/scripts/render_watch_status.py +70 -0
  64. package/dist/skills/web3-risk-gate/SKILL.md +100 -0
  65. package/dist/skills/web3-risk-gate/references/OUTPUT_TEMPLATE.md +72 -0
  66. package/dist/skills/web3-risk-gate/references/SIGNAL_TAXONOMY.md +34 -0
  67. package/dist/skills/web3-risk-gate/scripts/merge_risk_gate_blocks.py +189 -0
  68. package/dist/skills/web3-service-orchestrator/SKILL.md +34 -0
  69. package/dist/skills/web3-static-analysis-runner/SKILL.md +76 -0
  70. package/dist/skills/web3-static-analysis-runner/references/ADAPTER_CONSUMPTION_MAP.md +13 -0
  71. package/dist/skills/web3-static-analysis-runner/references/OUTPUT_TEMPLATE.md +45 -0
  72. package/dist/skills/web3-static-analysis-runner/references/TRIAGE_BUCKETS.md +16 -0
  73. package/dist/skills/web3-static-analysis-runner/scripts/render_static_analysis_summary.py +64 -0
  74. package/dist/skills/web3-trace-and-state-analysis/SKILL.md +74 -0
  75. package/dist/skills/web3-trace-and-state-analysis/references/ADAPTER_CONSUMPTION_MAP.md +27 -0
  76. package/dist/skills/web3-trace-and-state-analysis/references/OUTPUT_TEMPLATE.md +63 -0
  77. package/dist/skills/web3-trace-and-state-analysis/references/TRACE_BACKEND_PREFLIGHT.md +47 -0
  78. package/dist/skills/web3-trace-and-state-analysis/scripts/render_trace_summary.py +99 -0
  79. package/dist/skills/web3-transaction-simulator/SKILL.md +83 -0
  80. package/dist/skills/web3-transaction-simulator/references/OUTPUT_TEMPLATE.md +86 -0
  81. package/dist/skills/web3-transaction-simulator/references/STATUS_AND_FAILURES.md +49 -0
  82. package/dist/skills/web3-transaction-simulator/scripts/merge_simulation_blocks.py +198 -0
  83. package/dist/skills/web3-wallet-operator/SKILL.md +52 -0
  84. package/dist/skills/web3-wallet-operator/references/ACTION_RECIPES.md +56 -0
  85. package/dist/skills/web3-wallet-operator/references/OUTPUT_TEMPLATE.md +43 -0
  86. package/dist/skills/web3-wallet-operator/scripts/render_wallet_operation_plan.py +101 -0
  87. package/index.js +50 -0
  88. package/package.json +36 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 nanobot contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,127 @@
1
+ # web3skill
2
+
3
+ `web3skill` packages the Web3-focused `nanobot` skills into a single npm
4
+ artifact.
5
+
6
+ It is meant for runtimes, installers, registries, or internal tooling that
7
+ need to:
8
+
9
+ - ship raw skill folders
10
+ - consume prebuilt `.skill` archives
11
+ - inspect skill metadata from a generated manifest
12
+ - resolve packaged file paths programmatically
13
+
14
+ This package is a distribution bundle, not a chain client or wallet SDK.
15
+
16
+ ## What is included
17
+
18
+ The published tarball contains:
19
+
20
+ - `dist/skills/`: raw skill directories
21
+ - `dist/archives/`: zipped `.skill` artifacts
22
+ - `dist/manifest.json`: generated metadata for all bundled skills
23
+ - `index.js`: small runtime helpers for listing and resolving assets
24
+
25
+ ## Bundled skills
26
+
27
+ - `web3-audit-orchestrator`
28
+ - `web3-audit-reporting`
29
+ - `web3-fuzzing-and-invariants`
30
+ - `web3-native-operator`
31
+ - `web3-repo-heuristics`
32
+ - `web3-research-and-market-intel`
33
+ - `web3-risk-gate`
34
+ - `web3-service-orchestrator`
35
+ - `web3-static-analysis-runner`
36
+ - `web3-trace-and-state-analysis`
37
+ - `web3-transaction-simulator`
38
+ - `web3-wallet-operator`
39
+
40
+ ## Install
41
+
42
+ ```bash
43
+ npm install web3skill
44
+ ```
45
+
46
+ ## Usage
47
+
48
+ ```js
49
+ import {
50
+ getManifest,
51
+ getSkillArchive,
52
+ getSkillDir,
53
+ listSkills
54
+ } from "web3skill";
55
+
56
+ console.log(listSkills());
57
+ console.log(getManifest().skills[0]);
58
+ console.log(getSkillDir("web3-native-operator"));
59
+ console.log(getSkillArchive("web3-native-operator"));
60
+ ```
61
+
62
+ ## API
63
+
64
+ ### `listSkills()`
65
+
66
+ Returns the bundled skill names.
67
+
68
+ ### `getManifest()`
69
+
70
+ Returns the parsed `dist/manifest.json` object.
71
+
72
+ ### `getSkillDir(name)`
73
+
74
+ Returns the absolute path to a packaged raw skill directory.
75
+
76
+ ### `getSkillArchive(name)`
77
+
78
+ Returns the absolute path to a packaged `.skill` archive.
79
+
80
+ ## File layout
81
+
82
+ ```text
83
+ web3skill/
84
+ dist/
85
+ archives/
86
+ web3-native-operator.skill
87
+ ...
88
+ skills/
89
+ web3-native-operator/
90
+ SKILL.md
91
+ references/
92
+ scripts/
93
+ ...
94
+ manifest.json
95
+ index.js
96
+ ```
97
+
98
+ ## Build from source
99
+
100
+ Requirements:
101
+
102
+ - `node >= 20`
103
+ - `python3`
104
+
105
+ Build the distributable contents:
106
+
107
+ ```bash
108
+ npm run build
109
+ ```
110
+
111
+ Preview the npm tarball:
112
+
113
+ ```bash
114
+ npm run pack:check
115
+ ```
116
+
117
+ ## Publish
118
+
119
+ From `/home/kaima/Future/nanobot/web3skill`:
120
+
121
+ ```bash
122
+ npm login
123
+ npm publish --access public
124
+ ```
125
+
126
+ As checked on `2026-03-22`, `npm view web3skill` returned `404 Not Found`, so
127
+ the unscoped package name appeared to be available at that time.
@@ -0,0 +1,170 @@
1
+ {
2
+ "packageName": "web3skill",
3
+ "generatedAt": "2026-03-22T08:08:25.760Z",
4
+ "sourceRoot": "../nanobot/skills",
5
+ "skills": [
6
+ {
7
+ "name": "web3-audit-orchestrator",
8
+ "description": "Audit orchestration layer for smart contract and protocol reviews. Use when the task is a contract audit, security review, contest-style finding hunt, or fix validation. It routes to upstream audit workflows and normalizes the review lifecycle.",
9
+ "always": false,
10
+ "fileCount": 5,
11
+ "resourceDirs": [
12
+ "references",
13
+ "scripts"
14
+ ],
15
+ "paths": {
16
+ "directory": "dist/skills/web3-audit-orchestrator",
17
+ "archive": "dist/archives/web3-audit-orchestrator.skill"
18
+ }
19
+ },
20
+ {
21
+ "name": "web3-audit-reporting",
22
+ "description": "Produce high-signal Web3 audit deliverables with scope, trust boundaries, evidence-backed findings, severity calibration, remediation, and retest conclusions. Use when the user wants a smart contract audit report, finding writeup, severity review, contest submission, fix validation, or consolidated security deliverable.",
23
+ "always": false,
24
+ "fileCount": 5,
25
+ "resourceDirs": [
26
+ "references"
27
+ ],
28
+ "paths": {
29
+ "directory": "dist/skills/web3-audit-reporting",
30
+ "archive": "dist/archives/web3-audit-reporting.skill"
31
+ }
32
+ },
33
+ {
34
+ "name": "web3-fuzzing-and-invariants",
35
+ "description": "Fuzzing and invariant orchestration layer for protocol reviews and smart contract testing. Use when deriving invariants, writing harnesses, evaluating property-based tests, or interpreting fuzz failures.",
36
+ "always": false,
37
+ "fileCount": 5,
38
+ "resourceDirs": [
39
+ "references",
40
+ "scripts"
41
+ ],
42
+ "paths": {
43
+ "directory": "dist/skills/web3-fuzzing-and-invariants",
44
+ "archive": "dist/archives/web3-fuzzing-and-invariants.skill"
45
+ }
46
+ },
47
+ {
48
+ "name": "web3-native-operator",
49
+ "description": "Web3 routing layer for safe execution, simulation, trace analysis, and repo-first smart contract work. Use for transfers, approvals, swaps, audits, onchain debugging, or Web3 research. It does not execute venue-specific flows directly; it routes to safety gates and profile adapters.",
50
+ "always": true,
51
+ "fileCount": 20,
52
+ "resourceDirs": [
53
+ "references",
54
+ "scripts"
55
+ ],
56
+ "paths": {
57
+ "directory": "dist/skills/web3-native-operator",
58
+ "archive": "dist/archives/web3-native-operator.skill"
59
+ }
60
+ },
61
+ {
62
+ "name": "web3-repo-heuristics",
63
+ "description": "Repository triage and execution heuristics for Solidity and Vyper codebases, with explicit support for Foundry, Hardhat, and mixed monorepos. Use when inspecting, modifying, testing, or auditing smart contract repositories and deployment scripts.",
64
+ "always": true,
65
+ "fileCount": 4,
66
+ "resourceDirs": [
67
+ "references"
68
+ ],
69
+ "paths": {
70
+ "directory": "dist/skills/web3-repo-heuristics",
71
+ "archive": "dist/archives/web3-repo-heuristics.skill"
72
+ }
73
+ },
74
+ {
75
+ "name": "web3-research-and-market-intel",
76
+ "description": "Web3 market and protocol research routing layer. Use for token research, protocol diligence, TVL and market data analysis, whale flow review, wallet portfolio review, and multi-source investment intelligence before trading or monitoring.",
77
+ "always": false,
78
+ "fileCount": 9,
79
+ "resourceDirs": [
80
+ "references",
81
+ "scripts"
82
+ ],
83
+ "paths": {
84
+ "directory": "dist/skills/web3-research-and-market-intel",
85
+ "archive": "dist/archives/web3-research-and-market-intel.skill"
86
+ }
87
+ },
88
+ {
89
+ "name": "web3-risk-gate",
90
+ "description": "Pre-execution Web3 risk gate for transfers, approvals, swaps, and protocol interactions. Use before any value-moving or approval-changing action. It normalizes adapter output into ALLOW, WARN, or BLOCK.",
91
+ "always": false,
92
+ "fileCount": 4,
93
+ "resourceDirs": [
94
+ "references",
95
+ "scripts"
96
+ ],
97
+ "paths": {
98
+ "directory": "dist/skills/web3-risk-gate",
99
+ "archive": "dist/archives/web3-risk-gate.skill"
100
+ }
101
+ },
102
+ {
103
+ "name": "web3-service-orchestrator",
104
+ "description": "Service-level orchestrator for complex Web3 tasks decomposed into a local DAG. Use when a service plan is already present in prompt context and the task should be completed by combining multiple base Web3 skills step by step instead of improvising a monolithic answer.",
105
+ "always": false,
106
+ "fileCount": 1,
107
+ "resourceDirs": [],
108
+ "paths": {
109
+ "directory": "dist/skills/web3-service-orchestrator",
110
+ "archive": "dist/archives/web3-service-orchestrator.skill"
111
+ }
112
+ },
113
+ {
114
+ "name": "web3-static-analysis-runner",
115
+ "description": "Static analysis routing layer for smart contract and adjacent codebases. Use when running or coordinating Semgrep, CodeQL, SARIF parsing, or vulnerability pattern scans, especially during audits and pre-deployment reviews.",
116
+ "always": false,
117
+ "fileCount": 5,
118
+ "resourceDirs": [
119
+ "references",
120
+ "scripts"
121
+ ],
122
+ "paths": {
123
+ "directory": "dist/skills/web3-static-analysis-runner",
124
+ "archive": "dist/archives/web3-static-analysis-runner.skill"
125
+ }
126
+ },
127
+ {
128
+ "name": "web3-trace-and-state-analysis",
129
+ "description": "Trace and state analysis layer for transaction inspection, trace_call style reasoning, proxy/delegatecall analysis, and storage/state deltas. Use for tx hashes, suspicious calls, archive-node analysis, and call-path debugging.",
130
+ "always": false,
131
+ "fileCount": 5,
132
+ "resourceDirs": [
133
+ "references",
134
+ "scripts"
135
+ ],
136
+ "paths": {
137
+ "directory": "dist/skills/web3-trace-and-state-analysis",
138
+ "archive": "dist/archives/web3-trace-and-state-analysis.skill"
139
+ }
140
+ },
141
+ {
142
+ "name": "web3-transaction-simulator",
143
+ "description": "Pre-execution simulation layer for swaps, approvals, transfers, and liquidity actions. Use after risk gating and before any chain write. It combines venue planners with live read checks and returns a normalized go/no-go summary.",
144
+ "always": false,
145
+ "fileCount": 4,
146
+ "resourceDirs": [
147
+ "references",
148
+ "scripts"
149
+ ],
150
+ "paths": {
151
+ "directory": "dist/skills/web3-transaction-simulator",
152
+ "archive": "dist/archives/web3-transaction-simulator.skill"
153
+ }
154
+ },
155
+ {
156
+ "name": "web3-wallet-operator",
157
+ "description": "Wallet-first routing layer for bot-driven Web3 wallet use. Use when the user wants to inspect a wallet, transfer tokens, approve or revoke allowances, prepare a swap, or run MetaMask delegation flows through the bot. It classifies wallet intent first, then routes to the operator, risk gate, simulator, portfolio adapters, or MetaMask wallet tooling.",
158
+ "always": true,
159
+ "fileCount": 4,
160
+ "resourceDirs": [
161
+ "references",
162
+ "scripts"
163
+ ],
164
+ "paths": {
165
+ "directory": "dist/skills/web3-wallet-operator",
166
+ "archive": "dist/archives/web3-wallet-operator.skill"
167
+ }
168
+ }
169
+ ]
170
+ }
@@ -0,0 +1,79 @@
1
+ ---
2
+ name: web3-audit-orchestrator
3
+ description: Audit orchestration layer for smart contract and protocol reviews. Use when the task is a contract audit, security review, contest-style finding hunt, or fix validation. It routes to upstream audit workflows and normalizes the review lifecycle.
4
+ ---
5
+
6
+ # Web3 Audit Orchestrator
7
+
8
+ Use this skill as the top-level coordinator for contract audits and protocol security reviews.
9
+
10
+ ## Required Components
11
+
12
+ - `web3-repo-heuristics`
13
+ - `web3-audit-reporting`
14
+
15
+ ## Required Profile Adapters
16
+
17
+ Prefer the bundled upstream skills:
18
+
19
+ - `solidity-auditor`
20
+ - `audit-context-building`
21
+ - `secure-workflow-guide`
22
+ - `security-auditor`
23
+
24
+ Use [references/ADAPTER_CONSUMPTION_MAP.md](references/ADAPTER_CONSUMPTION_MAP.md)
25
+ to keep audit adapter outputs stable across review states.
26
+ Use [references/REVIEW_STATE_MACHINE.md](references/REVIEW_STATE_MACHINE.md)
27
+ and [references/OUTPUT_TEMPLATE.md](references/OUTPUT_TEMPLATE.md) to keep
28
+ review lifecycle and emitted state stable.
29
+ Use [scripts/render_audit_review.py](scripts/render_audit_review.py) when a
30
+ downstream skill or runtime needs a machine-consumable audit state block.
31
+
32
+ ## Workflow
33
+
34
+ 1. Lock review context:
35
+ - repo or code snapshot
36
+ - commit, branch, or file scope
37
+ - chain / deployment assumptions
38
+ 2. Use `web3-repo-heuristics` to identify the real build and test surface.
39
+ 3. Use `audit-context-building` to establish architecture, invariants, and trust boundaries.
40
+ 4. Choose the main audit engine:
41
+ - `solidity-auditor` for Solidity-first repo audits
42
+ - `security-auditor` for broader structured security review
43
+ - `secure-workflow-guide` when the user wants a stepwise ToB security workflow
44
+ 5. Route concrete findings to `web3-static-analysis-runner` and `web3-fuzzing-and-invariants` when needed.
45
+ 6. Finalize output with `web3-audit-reporting`.
46
+
47
+ ## Review State Machine
48
+
49
+ ```text
50
+ Scope Locked
51
+ -> Context Built
52
+ -> Evidence Collected
53
+ -> Candidate Findings Triaged
54
+ -> Confirmed Findings Written
55
+ -> Retest / Residual Risk
56
+ ```
57
+
58
+ ## Reusable Output Contract
59
+
60
+ Always emit both:
61
+
62
+ 1. A short audit progress summary
63
+ 2. A normalized `audit_review` block
64
+
65
+ The normalized block must preserve:
66
+
67
+ - `review_state`
68
+ - scope and repo reference
69
+ - which audit engines actually ran
70
+ - coverage across context, manual review, static analysis, fuzzing, and retest
71
+ - candidate vs confirmed finding counts
72
+ - next steps and exact evidence sources
73
+
74
+ ## Guardrails
75
+
76
+ - Do not write findings before scope and threat model are explicit.
77
+ - Keep candidate issues separate from confirmed findings.
78
+ - Do not let static tool output bypass human triage.
79
+ - If the review lacks buildability, deployment data, or testability, state the coverage gap explicitly.
@@ -0,0 +1,15 @@
1
+ # Audit Adapter Consumption Map
2
+
3
+ - `audit-context-building` -> architecture, trust boundaries, invariants
4
+ - `solidity-auditor` -> candidate findings and manual review vectors
5
+ - `secure-workflow-guide` -> ordered review workflow and coverage steps
6
+ - `security-auditor` -> structured audit checklist and validation paths
7
+
8
+ Normalize into review states:
9
+
10
+ - scope locked
11
+ - context built
12
+ - evidence collected
13
+ - candidate findings triaged
14
+ - confirmed findings written
15
+ - retest / residual risk
@@ -0,0 +1,52 @@
1
+ # Web3 Audit Review Output Template
2
+
3
+ Always emit:
4
+
5
+ 1. A short human-readable audit status summary
6
+ 2. A normalized block
7
+
8
+ ```yaml
9
+ audit_review:
10
+ version: 1
11
+ review_state: candidate-findings-triaged
12
+ scope:
13
+ repo: protocol-x
14
+ ref: 9f3c2b1
15
+ target: src/core
16
+ engines:
17
+ - audit-context-building
18
+ - solidity-auditor
19
+ - semgrep
20
+ coverage:
21
+ context: complete
22
+ manual: partial
23
+ static: complete
24
+ fuzz: not-run
25
+ retest: pending
26
+ findings:
27
+ candidate_count: 4
28
+ confirmed_count: 1
29
+ next_steps:
30
+ - validate privilege issue with focused manual review
31
+ evidence:
32
+ - adapter: audit-context-building
33
+ detail: architecture and privilege boundaries mapped
34
+ - adapter: solidity-auditor
35
+ detail: privilege escalation path identified for triage
36
+ ```
37
+
38
+ ## Required Fields
39
+
40
+ - `review_state`
41
+ - `scope`
42
+ - `engines`
43
+ - `coverage`
44
+ - `findings`
45
+ - `next_steps`
46
+ - `evidence`
47
+
48
+ ## Notes
49
+
50
+ - `candidate_count` and `confirmed_count` must remain separate.
51
+ - `static` and `fuzz` can be `not-run`; do not fake completion.
52
+ - If the audit is blocked before evidence collection, explain the blocker in `next_steps`.
@@ -0,0 +1,25 @@
1
+ # Audit Review State Machine
2
+
3
+ Use this state machine to normalize audit progress before findings are reported.
4
+
5
+ ## States
6
+
7
+ - `scope-locked`
8
+ - repo, commit/ref, file scope, and deployment assumptions named
9
+ - `context-built`
10
+ - architecture, invariants, trust boundaries, and roles summarized
11
+ - `evidence-collected`
12
+ - manual review and supporting scanners/harnesses have produced usable evidence
13
+ - `candidate-findings-triaged`
14
+ - raw issues deduped and separated into candidate vs false-positive buckets
15
+ - `confirmed-findings-written`
16
+ - findings have root cause, exploit relevance, impact, and remediation
17
+ - `retest-or-residual-risk`
18
+ - fixes checked or residual gaps explicitly documented
19
+
20
+ ## Transition Rules
21
+
22
+ - Do not skip from `scope-locked` to confirmed findings.
23
+ - If buildability or runtime assumptions block evidence collection, stay at `context-built`.
24
+ - If tool output exists but manual validation is incomplete, stay at `candidate-findings-triaged`.
25
+ - Move to `retest-or-residual-risk` only after findings are already written or explicitly ruled out.
@@ -0,0 +1,95 @@
1
+ #!/usr/bin/env python3
2
+ """Render a stable Web3 audit review block."""
3
+
4
+ from __future__ import annotations
5
+
6
+ import argparse
7
+ import json
8
+ import sys
9
+
10
+
11
+ def build_parser() -> argparse.ArgumentParser:
12
+ parser = argparse.ArgumentParser(description="Render a Web3 audit review block.")
13
+ parser.add_argument("--repo", required=True)
14
+ parser.add_argument("--ref", default="")
15
+ parser.add_argument("--target", default="")
16
+ parser.add_argument(
17
+ "--review-state",
18
+ choices=(
19
+ "scope-locked",
20
+ "context-built",
21
+ "evidence-collected",
22
+ "candidate-findings-triaged",
23
+ "confirmed-findings-written",
24
+ "retest-or-residual-risk",
25
+ ),
26
+ required=True,
27
+ )
28
+ parser.add_argument("--engine", action="append", default=[])
29
+ parser.add_argument(
30
+ "--context-coverage", choices=("complete", "partial", "missing"), default="partial"
31
+ )
32
+ parser.add_argument(
33
+ "--manual-coverage", choices=("complete", "partial", "missing"), default="partial"
34
+ )
35
+ parser.add_argument(
36
+ "--static-coverage", choices=("complete", "partial", "not-run"), default="not-run"
37
+ )
38
+ parser.add_argument(
39
+ "--fuzz-coverage", choices=("complete", "partial", "not-run"), default="not-run"
40
+ )
41
+ parser.add_argument(
42
+ "--retest-status", choices=("pending", "complete", "not-needed"), default="pending"
43
+ )
44
+ parser.add_argument("--candidate-count", type=int, default=0)
45
+ parser.add_argument("--confirmed-count", type=int, default=0)
46
+ parser.add_argument("--next-step", action="append", default=[])
47
+ parser.add_argument("--evidence", action="append", default=[])
48
+ return parser
49
+
50
+
51
+ def parse_evidence(entries: list[str]) -> list[dict[str, str]]:
52
+ parsed = []
53
+ for entry in entries:
54
+ adapter, sep, detail = entry.partition(":")
55
+ if sep:
56
+ parsed.append({"adapter": adapter.strip(), "detail": detail.strip()})
57
+ else:
58
+ parsed.append({"adapter": "unknown", "detail": entry})
59
+ return parsed
60
+
61
+
62
+ def main() -> int:
63
+ args = build_parser().parse_args()
64
+ payload = {
65
+ "audit_review": {
66
+ "version": 1,
67
+ "review_state": args.review_state,
68
+ "scope": {
69
+ "repo": args.repo,
70
+ "ref": args.ref,
71
+ "target": args.target,
72
+ },
73
+ "engines": args.engine,
74
+ "coverage": {
75
+ "context": args.context_coverage,
76
+ "manual": args.manual_coverage,
77
+ "static": args.static_coverage,
78
+ "fuzz": args.fuzz_coverage,
79
+ "retest": args.retest_status,
80
+ },
81
+ "findings": {
82
+ "candidate_count": args.candidate_count,
83
+ "confirmed_count": args.confirmed_count,
84
+ },
85
+ "next_steps": args.next_step,
86
+ "evidence": parse_evidence(args.evidence),
87
+ }
88
+ }
89
+ json.dump(payload, sys.stdout, ensure_ascii=False, indent=2)
90
+ sys.stdout.write("\n")
91
+ return 0
92
+
93
+
94
+ if __name__ == "__main__":
95
+ raise SystemExit(main())