Summary
The current workspace adds a vendor-neutral privacy-router skill on top of the existing HoudiniSwap direct skill. The router lets agents plan privacy-preserving transfer/swap intents, compare provider quotes, create routed orders, and poll routed order status using provider-prefixed IDs.
Change set reflected in the workspace
- Add
skills/privacy-router/ with SKILL.md, provider registry, routing model, quote ranking, CLI commands, and tests.
- Add root wrappers under
scripts/router/ for list-providers, plan-transfer, get-quotes, create-order, get-order, and wait-order.
- Add a HoudiniSwap provider adapter with independent enable/disable configuration, asset resolution, quote normalization, routed quote/order IDs, order creation, and status polling.
- Preserve strict privacy behavior: strict requirements are not silently downgraded; unmet routes return an unmet result instead of creating an order.
- Fix
highest-available behavior so HoudiniSwap probes both regular and anonymous=true private quotes and prefers the strongest available privacy route.
- Fix live order status handling by recognizing
statusLabel, displayStatus, and status, including HoudiniSwap terminal labels like FINISHED, SWAP_COMPLETED, SWAP_FAILED, and DEPOSIT_EXPIRED.
- Update README,
.env.example, package scripts, installers, test discovery, and deployment verification to include both privacy-router and houdiniswap skills.
- Make
scripts/verify-deployment.sh --target accept both parent skills directories and direct skill directories for backward compatibility.
Acceptance criteria
privacy-router can list providers even when HoudiniSwap credentials are missing, with a clear disabled reason.
get-quotes --privacy unlinkability returns only eligible private quotes or an unmet result.
get-quotes --privacy highest-available probes private HoudiniSwap routes and selects the private quote when available.
create-order and wait-order dispatch routed IDs such as houdiniswap:q-... and houdiniswap:h-... to the correct provider adapter.
- Install scripts link both bundled skills into existing agent skills directories.
- Deployment verification works for both
--target ~/.claude/skills and --target ~/.claude/skills/houdiniswap style paths.
Validation already run locally
npm test passed: 153 tests total, 151 passed, 2 live tests skipped by configuration, 0 failed.
npm run lint:syntax passed.
- Functional mock flow passed:
get-quotes --privacy highest-available issued both regular and anonymous=true quote probes, selected an unlinkability quote, created an order, and wait-order completed it.
Summary
The current workspace adds a vendor-neutral
privacy-routerskill on top of the existing HoudiniSwap direct skill. The router lets agents plan privacy-preserving transfer/swap intents, compare provider quotes, create routed orders, and poll routed order status using provider-prefixed IDs.Change set reflected in the workspace
skills/privacy-router/withSKILL.md, provider registry, routing model, quote ranking, CLI commands, and tests.scripts/router/forlist-providers,plan-transfer,get-quotes,create-order,get-order, andwait-order.highest-availablebehavior so HoudiniSwap probes both regular andanonymous=trueprivate quotes and prefers the strongest available privacy route.statusLabel,displayStatus, andstatus, including HoudiniSwap terminal labels likeFINISHED,SWAP_COMPLETED,SWAP_FAILED, andDEPOSIT_EXPIRED..env.example, package scripts, installers, test discovery, and deployment verification to include bothprivacy-routerandhoudiniswapskills.scripts/verify-deployment.sh --targetaccept both parent skills directories and direct skill directories for backward compatibility.Acceptance criteria
privacy-routercan list providers even when HoudiniSwap credentials are missing, with a clear disabled reason.get-quotes --privacy unlinkabilityreturns only eligible private quotes or an unmet result.get-quotes --privacy highest-availableprobes private HoudiniSwap routes and selects the private quote when available.create-orderandwait-orderdispatch routed IDs such ashoudiniswap:q-...andhoudiniswap:h-...to the correct provider adapter.--target ~/.claude/skillsand--target ~/.claude/skills/houdiniswapstyle paths.Validation already run locally
npm testpassed: 153 tests total, 151 passed, 2 live tests skipped by configuration, 0 failed.npm run lint:syntaxpassed.get-quotes --privacy highest-availableissued both regular andanonymous=truequote probes, selected anunlinkabilityquote, created an order, andwait-ordercompleted it.