Skip to content

feat(fixtures): refresh web3 router fixtures from upstream, add 6 new routers#23

Open
Markeljan wants to merge 1 commit into
mainfrom
web3-router-comparison-refresh
Open

feat(fixtures): refresh web3 router fixtures from upstream, add 6 new routers#23
Markeljan wants to merge 1 commit into
mainfrom
web3-router-comparison-refresh

Conversation

@Markeljan
Copy link
Copy Markdown
Collaborator

Summary

  • Sync every fixture under e2e/fixtures/profiles/web3/ to its actual public upstream so the AST-10 Web3 Annex comparison reflects what npx skills add installs rather than curated mocks.
  • Add 6 new official-team router skills (Uniswap, PancakeSwap, LI.FI, Across, SushiSwap, deBridge) to the comparison.
  • Strip stale adversarial src/ shell scripts, orphan SKILL.fast.md, and curated skill.json files that were distorting audit scores away from what bunx agentsec reports on installed skills.

Scoreboard (11 skills, --profile web3)

Rank Skill Score Findings Source
🥇 Odos (ref) 88 B 4 odos-xyz/odos-skills
🥈 SushiSwap 71 C 5 sushi-labs/agent-skills
🥉 CowSwap 70 C 4 (mock — no upstream)
4 KyberSwap 49 D 29 KyberNetwork/kyberswap-skills
4 Uniswap 49 D 12 Uniswap/uniswap-ai
4 PancakeSwap 49 D 13 pancakeswap/pancakeswap-ai
4 Across 49 D 8 across-protocol/skills
4 deBridge 49 D 9 debridge-finance/debridge-skills
9 0x 48 D 9 0xProject/0x-ai
10 LI.FI 45 D 8 lifinance/lifi-agent-skills
11 1inch 29 F 134 Starchild-ai-agent/official-skills

Odos's score now matches bunx agentsec@latest on the installed skill exactly (88 B) — confirms the fixture is a faithful mirror, not a curated mock.

Notable audit signals (outreach hooks)

  • 0x official skill has 3× critical AST-W02 — Permit2 flow without allowedContracts allowlist; Odos solved this with one block of frontmatter.
  • KyberSwap's swap-execute-fast advertises "DANGEROUS - no confirmation before sending real transactions" in its description; the scanner flags 3× AST-W01 high signing-authority findings on exactly that code path.
  • 1inch community fork (Starchild v2.2.1) has 134 findings — 85× AST-W08 high (MCP chain-tool drift across 12 Python scripts), 14× AST03 medium over-privileged, 4× AST-W12 high (no audit sink / kill-switch). Strong case for an official 1inch-team skill.
  • LI.FI's li-fi-api SKILL.md has no license or version field, and its upstream Snyk audit failed.
  • SushiSwap, Across, PancakeSwap also ship without license declared (AST04 medium each).
  • Across skills/swap/SKILL.md has zero YAML frontmatter — pure markdown body, last touched Feb 2026.

Routers without any public skill (outreach candidates)

Curve, Bebop, Rango, Socket/Bungee, Jumper, Aerodrome, DODO, Maverick, Velora (ex-Paraswap). Squid and Symbiosis ship MCP servers only — recommend publishing a complementary SKILL.md.

What changed in each fixture

Fixture Action
odos-swap Replaced sub-skill with full repo (LICENSE + README + .gitignore + SKILL.md + skills/ — 6 sub-skills)
1inch-swap Bumped SKILL.md to v2.2.1, added upstream scripts/ (12 Python files), removed stale src/ + skill.json
kyberswap-swap Removed src/ + SKILL.fast.md + skill.json, added upstream references/
0x-swap Replaced unofficial 0xterrybit fixture with official 0xProject/0x-ai, removed stale src/ + skill.json
cowswap-swap Untouched — no upstream agent skill exists
uniswap-swap NEW — SKILL.md + references/advanced-patterns.md
pancakeswap-swap NEW — SKILL.md only (matches upstream skill folder)
lifi-swap NEW — SKILL.md + references/REFERENCE.md
across-swap NEW — SKILL.md only (no upstream frontmatter — real AST04 signal)
sushiswap-swap NEW — SKILL.md + references/OPENAPI.md + openapi.yaml
debridge-swap NEW — SKILL.md + monitoring.md + preflight.md siblings

Test plan

  • bun run compare:web3 runs cleanly on all 11 fixtures
  • examples/comparison/web3-routers/{report.md,report.html,report.json,scores.csv} regenerated
  • Odos fixture score (88 B) matches bunx agentsec@latest output on the installed ~/.agents/skills/odos/
  • Optional: rebase on live-version-npm's STOR-004 false-positive fix (9836f87) once that merges to main — would reduce 1inch findings 134 → 133

🤖 Generated with Claude Code

… routers

Sync every fixture under e2e/fixtures/profiles/web3/ to its actual public
upstream so the AST-10 Web3 Annex comparison reflects what `npx skills add`
installs rather than curated mocks.

Existing fixtures refreshed from upstream (2026-05-22):
- odos-swap        ← odos-xyz/odos-skills@main (full repo layout)
- 1inch-swap       ← Starchild-ai-agent/official-skills 2.2.1
- kyberswap-swap   ← KyberNetwork/kyberswap-skills swap-execute + references/
- 0x-swap          ← 0xProject/0x-ai (replaces unofficial 0xterrybit fixture)

New fixtures (top EVM routers/aggregators/bridges with public skills):
- uniswap-swap     ← Uniswap/uniswap-ai swap-integration
- pancakeswap-swap ← pancakeswap/pancakeswap-ai swap-integration
- lifi-swap        ← lifinance/lifi-agent-skills li-fi-api
- across-swap      ← across-protocol/skills swap
- sushiswap-swap   ← sushi-labs/agent-skills sushiswap-api
- debridge-swap    ← debridge-finance/debridge-skills swap

cowswap-swap retained as the only mock — no upstream agent skill exists.

Cleanup of stale leftovers from the prior fixture iteration:
- removed adversarial src/ shell scripts that injected `$PRIVATE_KEY` and
  hardcoded ERC-20 addresses, distorting AST05 audits
- removed orphan SKILL.fast.md (upstream ships fast as a separate skill)
- removed curated skill.json files so SKILL.md frontmatter is the canonical
  manifest — matches `bunx agentsec` output on installed skills

Comparison runner extended to 11 skills (scripts/run-web3-comparison.ts +
e2e/fixtures/profiles/web3/index.json). Regenerated report.{md,html,json}
and scores.csv. New scoreboard: Odos 88 B (matches installed audit
exactly), SushiSwap 71 C, CowSwap 70 C, mid-tier 45-49 D, 1inch 29 F (134
findings from script-first community fork).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant