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.
- package/LICENSE +21 -0
- package/README.md +127 -0
- package/dist/archives/web3-audit-orchestrator.skill +0 -0
- package/dist/archives/web3-audit-reporting.skill +0 -0
- package/dist/archives/web3-fuzzing-and-invariants.skill +0 -0
- package/dist/archives/web3-native-operator.skill +0 -0
- package/dist/archives/web3-repo-heuristics.skill +0 -0
- package/dist/archives/web3-research-and-market-intel.skill +0 -0
- package/dist/archives/web3-risk-gate.skill +0 -0
- package/dist/archives/web3-service-orchestrator.skill +0 -0
- package/dist/archives/web3-static-analysis-runner.skill +0 -0
- package/dist/archives/web3-trace-and-state-analysis.skill +0 -0
- package/dist/archives/web3-transaction-simulator.skill +0 -0
- package/dist/archives/web3-wallet-operator.skill +0 -0
- package/dist/manifest.json +170 -0
- package/dist/skills/web3-audit-orchestrator/SKILL.md +79 -0
- package/dist/skills/web3-audit-orchestrator/references/ADAPTER_CONSUMPTION_MAP.md +15 -0
- package/dist/skills/web3-audit-orchestrator/references/OUTPUT_TEMPLATE.md +52 -0
- package/dist/skills/web3-audit-orchestrator/references/REVIEW_STATE_MACHINE.md +25 -0
- package/dist/skills/web3-audit-orchestrator/scripts/render_audit_review.py +95 -0
- package/dist/skills/web3-audit-reporting/SKILL.md +77 -0
- package/dist/skills/web3-audit-reporting/references/FINDING_TEMPLATE.md +54 -0
- package/dist/skills/web3-audit-reporting/references/REPORT_TEMPLATE.md +58 -0
- package/dist/skills/web3-audit-reporting/references/RETEST_TEMPLATE.md +35 -0
- package/dist/skills/web3-audit-reporting/references/SEVERITY_RUBRIC.md +75 -0
- package/dist/skills/web3-fuzzing-and-invariants/SKILL.md +68 -0
- package/dist/skills/web3-fuzzing-and-invariants/references/ADAPTER_CONSUMPTION_MAP.md +14 -0
- package/dist/skills/web3-fuzzing-and-invariants/references/OUTPUT_TEMPLATE.md +40 -0
- package/dist/skills/web3-fuzzing-and-invariants/references/READINESS_AND_FAILURES.md +25 -0
- package/dist/skills/web3-fuzzing-and-invariants/scripts/render_fuzz_summary.py +64 -0
- package/dist/skills/web3-native-operator/SKILL.md +218 -0
- package/dist/skills/web3-native-operator/references/EXECUTION_BUNDLE_TEMPLATE.md +47 -0
- package/dist/skills/web3-native-operator/references/OPERATOR_BUNDLE_TEMPLATE.md +39 -0
- package/dist/skills/web3-native-operator/references/POSTTRADE_FOLLOWUP_BUNDLE_TEMPLATE.md +35 -0
- package/dist/skills/web3-native-operator/references/POSTTRADE_WATCH_TEMPLATE.md +34 -0
- package/dist/skills/web3-native-operator/references/PRETRADE_PACKET_TEMPLATE.md +34 -0
- package/dist/skills/web3-native-operator/references/ROUTE_RECIPES.md +140 -0
- package/dist/skills/web3-native-operator/references/ROUTING_STATE_MACHINE.md +73 -0
- package/dist/skills/web3-native-operator/references/WATCH_CRON_REQUEST_TEMPLATE.md +26 -0
- package/dist/skills/web3-native-operator/references/WATCH_FOLLOWUP_BUNDLE_TEMPLATE.md +35 -0
- package/dist/skills/web3-native-operator/references/WATCH_HEARTBEAT_TEMPLATE.md +31 -0
- package/dist/skills/web3-native-operator/scripts/apply_followup_bundle_to_heartbeat.py +118 -0
- package/dist/skills/web3-native-operator/scripts/render_execution_bundle.py +259 -0
- package/dist/skills/web3-native-operator/scripts/render_operator_bundle.py +800 -0
- package/dist/skills/web3-native-operator/scripts/render_posttrade_followup_bundle.py +118 -0
- package/dist/skills/web3-native-operator/scripts/render_posttrade_watch_status.py +125 -0
- package/dist/skills/web3-native-operator/scripts/render_pretrade_packet.py +205 -0
- package/dist/skills/web3-native-operator/scripts/render_watch_cron_request.py +88 -0
- package/dist/skills/web3-native-operator/scripts/render_watch_followup_bundle.py +118 -0
- package/dist/skills/web3-native-operator/scripts/render_watch_heartbeat.py +52 -0
- package/dist/skills/web3-repo-heuristics/SKILL.md +37 -0
- package/dist/skills/web3-repo-heuristics/references/FOUNDRY.md +49 -0
- package/dist/skills/web3-repo-heuristics/references/HARDHAT.md +47 -0
- package/dist/skills/web3-repo-heuristics/references/VYPER.md +26 -0
- package/dist/skills/web3-research-and-market-intel/SKILL.md +138 -0
- package/dist/skills/web3-research-and-market-intel/references/ADAPTER_CONSUMPTION_MAP.md +66 -0
- package/dist/skills/web3-research-and-market-intel/references/EVIDENCE_QUALITY.md +27 -0
- package/dist/skills/web3-research-and-market-intel/references/OUTPUT_TEMPLATE.md +37 -0
- package/dist/skills/web3-research-and-market-intel/references/PORTFOLIO_STATUS_TEMPLATE.md +51 -0
- package/dist/skills/web3-research-and-market-intel/references/WATCH_STATUS_TEMPLATE.md +39 -0
- package/dist/skills/web3-research-and-market-intel/scripts/render_portfolio_status.py +85 -0
- package/dist/skills/web3-research-and-market-intel/scripts/render_research_brief.py +58 -0
- package/dist/skills/web3-research-and-market-intel/scripts/render_watch_status.py +70 -0
- package/dist/skills/web3-risk-gate/SKILL.md +100 -0
- package/dist/skills/web3-risk-gate/references/OUTPUT_TEMPLATE.md +72 -0
- package/dist/skills/web3-risk-gate/references/SIGNAL_TAXONOMY.md +34 -0
- package/dist/skills/web3-risk-gate/scripts/merge_risk_gate_blocks.py +189 -0
- package/dist/skills/web3-service-orchestrator/SKILL.md +34 -0
- package/dist/skills/web3-static-analysis-runner/SKILL.md +76 -0
- package/dist/skills/web3-static-analysis-runner/references/ADAPTER_CONSUMPTION_MAP.md +13 -0
- package/dist/skills/web3-static-analysis-runner/references/OUTPUT_TEMPLATE.md +45 -0
- package/dist/skills/web3-static-analysis-runner/references/TRIAGE_BUCKETS.md +16 -0
- package/dist/skills/web3-static-analysis-runner/scripts/render_static_analysis_summary.py +64 -0
- package/dist/skills/web3-trace-and-state-analysis/SKILL.md +74 -0
- package/dist/skills/web3-trace-and-state-analysis/references/ADAPTER_CONSUMPTION_MAP.md +27 -0
- package/dist/skills/web3-trace-and-state-analysis/references/OUTPUT_TEMPLATE.md +63 -0
- package/dist/skills/web3-trace-and-state-analysis/references/TRACE_BACKEND_PREFLIGHT.md +47 -0
- package/dist/skills/web3-trace-and-state-analysis/scripts/render_trace_summary.py +99 -0
- package/dist/skills/web3-transaction-simulator/SKILL.md +83 -0
- package/dist/skills/web3-transaction-simulator/references/OUTPUT_TEMPLATE.md +86 -0
- package/dist/skills/web3-transaction-simulator/references/STATUS_AND_FAILURES.md +49 -0
- package/dist/skills/web3-transaction-simulator/scripts/merge_simulation_blocks.py +198 -0
- package/dist/skills/web3-wallet-operator/SKILL.md +52 -0
- package/dist/skills/web3-wallet-operator/references/ACTION_RECIPES.md +56 -0
- package/dist/skills/web3-wallet-operator/references/OUTPUT_TEMPLATE.md +43 -0
- package/dist/skills/web3-wallet-operator/scripts/render_wallet_operation_plan.py +101 -0
- package/index.js +50 -0
- 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.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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())
|