Skip to content
Back to skills

Indexedex Script Orchestration

ASecurity

IndexedEx shell/Forge orchestration for Sepolia, Base Sepolia and SuperSim bridge rehearsals and long broadcasts.

  • 9 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 10, 2026
code-qualityshellbashdebuggingrefactoringapifrontend

Works with

  • api

Security analysis

A100/100

Scanned September 22, 2026

npx -y skills add cyotee/indexedex --skill indexedex-script-orchestration --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Indexedex Script Orchestration?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Indexedex Script Orchestration
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/cyotee-indexedex-script-orchestration/badge)](https://www.skillsdirectory.com/skills/cyotee-indexedex-script-orchestration)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: indexedex-script-orchestration
description: "IndexedEx shell/Forge orchestration for Sepolia, Base Sepolia and SuperSim bridge rehearsals and long broadcasts."
---

# Indexedex Script Orchestration

This skill captures the scripting patterns that proved necessary for the repo's Sepolia plus Base Sepolia SuperSim rehearsal.

## Use This Skill For

- editing `scripts/foundry/supersim/deploy_mainnet_bridge_ui.sh`
- refactoring shell wrappers around `forge script`
- debugging sender, signer, or broadcast issues on local SuperSim forks
- passing deployment output directories and network profiles into Solidity scripts
- stabilizing long chain-local deployment runs

## Shell Rules

- Use `#!/usr/bin/env bash`, not `/bin/sh`.
- Use `set -euo pipefail`.
- Keep helper functions small and single-purpose.
- Prefer arrays for command construction so quoting stays correct.
- Redact API keys or provider secrets from any logged RPC URL.
- Validate and create required output directories before broadcasting.

## Wrapper Responsibilities

The top-level shell wrapper should own orchestration. In this repo that means:

1. resolve upstream RPCs from Foundry aliases when explicit env vars are absent
2. derive the shared fork height from Crane network constants
3. start or reuse SuperSim fork mode
4. wait for both local RPC endpoints
5. prepare the broadcast identity
6. sweep ETH to the deployer on both forks
7. run direct per-chain `forge script` commands
8. deploy bridge infra and bridge config
9. export frontend artifacts

Avoid pushing this orchestration into one large Solidity script.

## Prefer Direct Per-Chain Forge Scripts

Use shell-driven direct invocations such as:

- `scripts/foundry/supersim/ethereum/Script_DeployAll.s.sol:Script_DeployAll`
- `scripts/foundry/supersim/base/Script_DeployAll.s.sol:Script_DeployAll`
- `scripts/foundry/supersim/Script_24_DeploySuperchainBridgeInfra.s.sol:Script_24_DeploySuperchainBridgeInfra`
- `scripts/foundry/supersim/Script_25_ConfigureProtocolDetfBridge.s.sol:Script_25_ConfigureProtocolDetfBridge`

This is more debuggable and less fragile than a top-level script that nests many script contracts.

## Solidity Script Configuration Rules

Deployment scripts should accept configuration from the shell wrapper instead of inferring too much from `tx.origin`.

Recommended environment contract:

- `SENDER` for the desired deployer address
- `PRIVATE_KEY` only when key-backed broadcast is required
- `OUT_DIR_OVERRIDE` for per-run manifest directories
- `NETWORK_PROFILE` for address binding mode
- `REMOTE_OUT_DIR` for cross-chain bridge config
- `SUPERSIM_ETHEREUM_RPC_URL` and `SUPERSIM_BASE_RPC_URL` when scripts need both endpoints

In Solidity, load deployer config in this order:

1. `SENDER` if present and nonzero
2. fallback to `tx.origin`
3. if `PRIVATE_KEY` is present, derive deployer from that key

## Sender and Signer Rules

- `--sender` selects the sender address.
- `vm.startBroadcast(address)` still needs a signer that the RPC can use.
- On local forked RPCs with `--unlocked`, default dev accounts are directly signable.
- Non-default addresses are not automatically signable just because they were funded.
- If the local RPC supports Anvil impersonation, use `anvil_impersonateAccount` before broadcasting from a non-default deployer.

This distinction was critical in the recent SuperSim deployment work.

## Broadcast Stability Rules

- Forward `-v` through `-vvvvv` from the wrapper into `forge script`.
- Use `--slow` for long broadcast runs to serialize sends.
- Expect long deploy phases to appear quiet while Foundry simulates and broadcasts.
- Treat mempool drops, upstream `429` responses, and flaky late broadcast failures as sequencing pressure first, not necessarily contract logic bugs.

If a long deploy still flakes after `--slow`, split the sequence rather than hiding the problem behind more abstraction.

## Base Sepolia Rehearsal Rules

For the local Base Sepolia rehearsal:

- do not assume every upstream dependency already exists
- deploy local Uniswap V2, Balancer V3, and Aerodrome dependencies when needed
- deploy Balancer V3 using Crane packages and deterministic factory flows
- keep protocol address overrides in JSON manifests read by `scripts/foundry/anvil_base_main/DeploymentBase.sol`
- keep shared WETH assumptions consistent across Balancer, Aerodrome, and Uniswap wiring

## Logging Rules

- Emit short progress logs before each major script run.
- Log the active RPC, network profile, and output directory.
- Redact upstream provider secrets.
- Keep final post-deploy balance sweeping separate from the deployment workflow.

## Related (not this skill)

Robinhood Anvil launch trees (4663 / 46630), Phase/Stage file layout, and EIP-1559 gas quotes: `skill:indexedex-launch-scripts`.

## Anti-Patterns

- `/bin/sh` wrapper that uses Bash-only syntax
- relying only on `tx.origin` when shell orchestration already knows the intended sender
- assuming sender selection implies signer availability
- one opaque top-level Solidity wrapper that hides the failing stage
- hardcoding Base Sepolia protocol addresses when the rehearsal intentionally deploys local replacements

## Source Files

- `scripts/foundry/supersim/deploy_mainnet_bridge_ui.sh`
- `scripts/foundry/anvil_sepolia/DeploymentBase.sol`
- `scripts/foundry/anvil_base_main/DeploymentBase.sol`
- `scripts/foundry/supersim/Script_24_DeploySuperchainBridgeInfra.s.sol`
- `scripts/foundry/supersim/Script_25_ConfigureProtocolDetfBridge.s.sol`

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…