compose-reference
Goldsky Compose Reference
Reference for the compose.yaml manifest, the full goldsky compose CLI surface, the TaskContext API, wallets, gas sponsorship, contract codegen, the dashboard, and pricing. For interactive build flows use /compose; for debugging use /compose-doctor.
This is the reference layer of the Compose skill family.
/compose(loaded first) carries the general build rules and concepts; the template skills (/compose-bitcoin-oracle,/compose-vrf,/compose-dividend-distribution,/compose-compliance-oracle) carry example app source. Load this skill for any concrete field, flag, manifest shape, or API signature — and always before writing acompose.yamlor task file, rather than synthesizing the shape from memory.
Always validate the manifest before deploying.
goldsky compose startcatches schema errors fast.
Sandbox import rule — get this wrong and the task fails to bundle or crashes at runtime. Two things are NEVER imported: the Compose runtime capabilities and the EVM SDK.
env,fetch,callTask,logEvent,evm(wallets, chains, contracts,decodeEventLog), andcollectionall come from the injectedcontextargument — there is no@goldsky/compose-evm(or similar) package to import; reach chains viacontext.evm.chains.<name>, never by importingviemfor them. Beyond that, what you may import depends on whether the app has apackage.json:
- No
package.json(Deno-style app, e.g. bitcoin-oracle): import ONLY thecomposemodule (for types,import type { TaskContext } from "compose") and sibling project files (./lib/utils,../contracts/Foo). Any other bare import is rejected by the bundler.- Has a
package.json(esbuild-bundled, e.g. copy-trader withviem/@ethersproject/wallet, solana withgill): npm deps declared there ARE bundled and importable for local/pure use (crypto, signing, encoding). The hard limit is the network: Compose tasks run in a sandbox with no outbound socket of their own, so any package that does its own HTTP at runtime (axios,node-fetch, an SDK's built-in HTTP client) fails — route every network call throughcontext.fetchand use only the SDK's pure utilities.So: match the example you're scaffolding from. If it ships a
package.json, keep its npm imports; if it doesn't, don't introduce any.
Quick Reference
Most common lookups: