@artblocks/abx-cli 0.7.1 → 0.7.2

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/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @artblocks/abx-cli
2
2
 
3
+ ## 0.7.2
4
+
5
+ ### Patch Changes
6
+
7
+ - d86143f: Add selectively loaded ecosystem discovery references for every selectable ABX network, with shared
8
+ official tooling, ERC-20 and external token-launch ideas, and input provenance. Favor resilient
9
+ same-chain EVM reads and self-contained output; disclose lifetime service dependencies, owner-controlled
10
+ replacement, fallback behavior, and account/credential requirements for service-dependent designs.
11
+ - 6fe1f7c: Broaden skill ideation to programmable digital objects, clarify state-changing hook capabilities, and keep concept exploration separate from implementation.
12
+
3
13
  ## 0.7.1
4
14
 
5
15
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@artblocks/abx-cli",
3
- "version": "0.7.1",
3
+ "version": "0.7.2",
4
4
  "license": "MIT",
5
5
  "description": "Command-line interface for deploying, operating, indexing, and serving ABX projects.",
6
6
  "type": "module",
@@ -43,9 +43,9 @@
43
43
  "@napi-rs/keyring": "2.0.0",
44
44
  "@privy-io/node": "0.34.0",
45
45
  "viem": "^2.56.5",
46
- "@artblocks/abx-sdk": "0.7.0",
47
46
  "@artblocks/abx-indexer": "0.1.8",
48
47
  "@artblocks/abx-storage": "0.1.8",
48
+ "@artblocks/abx-sdk": "0.7.0",
49
49
  "@artblocks/abx-token-api": "0.2.7"
50
50
  },
51
51
  "optionalDependencies": {
package/skill/SKILL.md CHANGED
@@ -1,15 +1,16 @@
1
1
  ---
2
2
  name: abx
3
3
  description: >-
4
- Use the ABX CLI (`abx`) to plan, launch, host, inspect, and operate ABX NFT projects on supported
5
- networks: static 1/1s, image series, editions, JavaScript/code drops, and Solidity-rendered projects.
4
+ Use the ABX CLI (`abx`) to explore, plan, launch, host, inspect, and operate programmable NFT
5
+ projects on supported networks, from artwork to shared resources and stateful digital objects.
6
6
  Covers on-chain and off-chain content, managed or self-hosted resolvers, storage, minting and sales,
7
7
  PostParams, hooks, custom minters, migrations, feedback, locks, and capability questions. Use for
8
8
  requests to create, deploy, mint, host, serve, verify, repair, migrate, report ABX feedback, or
9
- change an ABX collection, or to determine whether ABX supports a mechanic.
9
+ change an ABX collection, develop project ideas or ecosystem integrations, or determine whether
10
+ ABX supports a mechanic.
10
11
  compatibility: Drives @artblocks/abx-cli on Node 22.13+. Co-versioned with the CLI; install or refresh with `abx skill install`.
11
12
  metadata:
12
- version: "0.7.1"
13
+ version: "0.7.2"
13
14
  ---
14
15
 
15
16
  # ABX
@@ -17,6 +18,11 @@ metadata:
17
18
  Use `abx` as the execution and truth surface. Help, capability output, dry runs, on-chain reads, and
18
19
  typed errors outrank remembered prose.
19
20
 
21
+ Think of ABX NFTs as programmable, durable digital objects that use blockchain technology. Their
22
+ data, state, permissions, and behavior can matter as much as their appearance. Configure and transfer
23
+ hooks can execute contract actions, including creating assets or interacting with financial protocols.
24
+ For project ideation, read [ideation.md](reference/ideation.md) before choosing an implementation path.
25
+
20
26
  ## Non-negotiable rules
21
27
 
22
28
  - Never read or print `.env`, private keys, RPC URLs, provider tokens, storage credentials, wallet
@@ -62,7 +68,7 @@ typed errors outrank remembered prose.
62
68
 
63
69
  ## Use the lifecycle
64
70
 
65
- Follow this state machine instead of accumulating retries:
71
+ For implementation and operations, follow this state machine instead of accumulating retries:
66
72
 
67
73
  1. **Discover** — identify the working directory, CLI provenance/version, active chain, artifacts,
68
74
  existing contract addresses, configured remote, and signer preference. Run `abx doctor` for a
@@ -73,6 +79,8 @@ Follow this state machine instead of accumulating retries:
73
79
  replace an explicit signer choice.
74
80
  2. **Classify surfaces** — decide collection shape, runtime, required public surfaces, custody,
75
81
  resolution, authority, mutability, and mint/sale timing. Use the model below.
82
+ For ecosystem integrations, load [ecosystem.md](reference/ecosystem.md); choose inputs that fit
83
+ the object's behavior and explain ongoing dependencies before choosing third-party tools.
76
84
  3. **Inspect** — run `abx capabilities --json`; for code run `abx inspect` and `abx preview`. For an
77
85
  existing collection run `abx state`, `abx tokens`, `abx tokenuri`, and `abx verify` as relevant.
78
86
  4. **Plan** — use the selected deploy command with `--dry-run --json`. Read its normalized shape,
@@ -191,7 +199,7 @@ Before any real deploy, say these choices explicitly when relevant:
191
199
 
192
200
  ## Use capability classification, not optimism or refusal
193
201
 
194
- Classify an unusual request as exactly one of:
202
+ When assessing implementation feasibility, classify an unusual request as exactly one of:
195
203
 
196
204
  1. **Native** — a documented CLI lane performs it.
197
205
  2. **Extension** — a custom minter, configure/transfer/augment hook, field renderer, or seed source
@@ -216,6 +224,7 @@ lane. Read [capabilities.md](reference/capabilities.md) before designing a custo
216
224
  - Failure classification, resume, RPC/storage/rendering faults, and retry discipline → [diagnose.md](reference/diagnose.md)
217
225
  - Capability questions, extension seams, mechanics, and hard boundaries → [capabilities.md](reference/capabilities.md)
218
226
  - ERC-721C/ERC-1155C enrollment and validator operations → [creator-token.md](reference/creator-token.md)
227
+ - Ecosystem ideation, official third-party tools, chain coverage, and setup footprint → [ecosystem.md](reference/ecosystem.md)
219
228
 
220
229
  Read every reference applicable to the requested workflow before sending a real transaction. Do not
221
230
  load unrelated references merely because they exist.
@@ -51,6 +51,16 @@ active chain, artifacts, signer, storage, addresses, transaction count, and meas
51
51
 
52
52
  A custom mechanic normally lives beside a canonical token rather than replacing it.
53
53
 
54
+ Configure and transfer hooks are state-changing contract callbacks, not just validators. They can
55
+ call an AMM, deploy through a factory, or settle an obligation in the triggering transaction using
56
+ the external protocol's official interfaces. Augment hooks are read-only. These callbacks are
57
+ distinct from off-chain effects workers.
58
+
59
+ For either state-changing hook, authenticate the calling token and arrange funding, approvals, and
60
+ controller/minter permissions explicitly. Installation grants no automatic transfer, mint, or
61
+ spending authority, and the callback receives no automatic payment from the initiating wallet.
62
+ Bound spending and slippage, guard reentrancy and repeated triggers, and test every lifecycle path.
63
+
54
64
  | Seam | Wired with | Runs | Can veto? |
55
65
  |---|---|---|---|
56
66
  | Custom minter | `abx set-minter --minter 0x…` | before/calling issuance | it controls whether it calls mint |
@@ -81,10 +91,12 @@ a Series/edition before deploying.
81
91
 
82
92
  ### Configure hook
83
93
 
84
- The configure hook receives the proposed typed parameter write before it persists. Its revert rejects
85
- the write. It can enforce monotonicity, one-time writes, cross-contract authorization, payload shape,
86
- or size bounds. For blob-backed strings/bytes, validate length before reading large data and read the
87
- provided data pointer using the documented SSTORE2 convention.
94
+ The configure hook receives the proposed typed parameter write before it persists. It can execute
95
+ contract actions as well as enforce monotonicity, one-time writes, cross-contract authorization,
96
+ payload shape, or size bounds. A holder-authorized edit could trigger a swap through an official AMM
97
+ router or creation through a factory. If the hook reverts, the write and its on-chain actions revert.
98
+ For blob-backed strings/bytes, validate length before reading large data and read the provided data
99
+ pointer using the documented SSTORE2 convention.
88
100
 
89
101
  The previously stored value remains visible during validation, enabling comparisons. A rejected
90
102
  write may still have paid for preparatory blob storage; front ends should simulate before asking for a
@@ -92,17 +104,17 @@ signature.
92
104
 
93
105
  ### Transfer hook
94
106
 
95
- The transfer hook runs for mints (`from == 0`), ordinary transfers, and burns (`to == 0`). Reverting
96
- vetoes the entire operation. It can implement vesting, soulbinding, redemption, escrow settlement,
97
- provenance counters, and lifecycle rules.
107
+ The transfer hook runs after ownership/balance changes for mints (`from == 0`), ordinary transfers,
108
+ and burns (`to == 0`), within the same transaction. It can execute contract actions for redemption,
109
+ escrow settlement, asset creation, or other lifecycle rules, as well as enforce vesting or soulbinding.
110
+ Its revert rolls back the entire operation and its on-chain actions.
98
111
 
99
112
  On ERC-721 projects it also receives self-transfers (`from == to`) because those emit `Transfer`.
100
113
  That is intentional; a hook concerned only with ownership-set changes should ignore the case itself.
101
114
  ERC-1155 projects skip self-transfers and zero-amount entries before invoking the hook.
102
115
 
103
- It cannot initiate a transfer; it only observes or rejects one. Burn-based mechanics require the
104
- collection to have been deployed burnable. On editions, ids may have many holders, so shared per-id
105
- state cannot model a single current owner.
116
+ Burn-based mechanics require a burnable collection. On editions, ids may have many holders, so
117
+ shared per-id state cannot model a single current owner.
106
118
 
107
119
  ### Augment hook
108
120
 
@@ -124,6 +136,8 @@ token-data object.
124
136
  | Soulbound or timed transfer lock | transfer hook | deploy-code; hook also sees mint |
125
137
  | Burn-to-redeem/combine | external controller/minter + burnable; optional transfer/augment hooks | ABX provides seams, not the atomic combine implementation |
126
138
  | Escrow tied to token lifecycle | minter + transfer hook | external value-holding contract |
139
+ | Parameter edit triggers a swap or asset creation | configure hook + official router/factory | custom contract; explicit funding, authority, spending bounds, and replay protection |
140
+ | Transfer triggers settlement or asset creation | transfer hook + external controller/protocol | custom contract; explicit authority and lifecycle/reentrancy tests |
127
141
  | Monotonic level/high-water mark | governed param + configure hook | schema and old-value comparison |
128
142
  | Structured collector configuration | governed param + configure hook | typed payload and bounded size |
129
143
  | Holder of another token may configure | schema address auth or configure hook | cross-contract read |
@@ -139,7 +153,6 @@ When several routes work, prefer the smallest authority surface. Use the stock f
139
153
  instead of custom Solidity for an ordinary sale; use a schema without a hook when static authorization
140
154
  is sufficient; use an on-chain renderer only when its durability/reach/cost trade is desired.
141
155
 
142
- A transfer hook only observes or vetoes a burn; it does not initiate two burns or mint a replacement.
143
156
  For combine mechanics, prove the controller's burn authorization and canonical mint call against a
144
157
  real clone, make the transition atomic and replay-safe, and define pair/history storage. On ERC-721,
145
158
  `--max` is a lifetime id cap and burns do not reopen slots, so reserve replacement-id headroom or use
@@ -88,7 +88,10 @@ document size, and lane fit. Treat findings as evidence and the deploy dry run/t
88
88
  the final proof.
89
89
 
90
90
  Avoid unseeded randomness, wall-clock dependence, environment-only assets, and network fetches when
91
- claiming reproducibility. A live-data design is valid; label it live rather than deterministic.
91
+ claiming reproducibility. For ecosystem-driven art, prefer same-chain EVM reads through a renderer
92
+ or augment hook, with resilient fallback output. Do not recommend HTTP-dependent NFT live views by
93
+ default; even an on-chain script can depend on a service forever. Apply the
94
+ [durability guidance](ecosystem/durability.md) before proposing an essential external service.
92
95
 
93
96
  ## Plan JavaScript projects
94
97
 
@@ -202,9 +205,13 @@ RPC read reach. State this before deployment and use schema validation/hooks to
202
205
 
203
206
  SeriesCode and EditionCode expose three configurable hook addresses:
204
207
 
205
- - configure hook: validates/vetoes governed writes before they persist;
206
- - transfer hook: observes every mint, transfer, and burn and may veto the operation;
207
- - augment hook: computes additional/overriding token data during reads.
208
+ - configure hook: runs custom state-changing logic before a governed write persists and may veto it;
209
+ - transfer hook: runs custom state-changing logic on mint, transfer, and burn and may veto the operation;
210
+ - augment hook: computes additional/overriding token data during reads; cannot change state.
211
+
212
+ Configure/transfer hooks can call other contracts to swap, create assets, or settle obligations;
213
+ they need explicit funding and permissions, not just permission to edit the NFT. These synchronous
214
+ on-chain callbacks are distinct from the off-chain effects runner.
208
215
 
209
216
  Hooks are extension seams, not ordinary CLI flags. Build and deploy them outside ABX, wire them with
210
217
  `abx set-param-hooks`, test against a real clone, and read [capabilities.md](capabilities.md). A
@@ -0,0 +1,11 @@
1
+ # Arbitrum Sepolia ecosystem context
2
+
3
+ Chain ID: `421614`. No additional testnet-specific entries are populated yet.
4
+ Use [multichain integrations](../multichain.md) and [ERC-20s and token creation](../tokens.md) for
5
+ candidate routes, and [Arbitrum context](arbitrum.md) for production context when relevant.
6
+
7
+ Verify this exact testnet's contract addresses, official tool/API support, and available assets.
8
+ Production ownership, balances, pools, and indexed datasets do not carry over. Label fixtures and
9
+ test tokens explicitly; they demonstrate the integration shape, not production data or liquidity.
10
+ Same-chain testnet state is on-chain; an API response remains an off-chain input.
11
+ Check `abx capabilities --json` for current ABX eligibility.
@@ -0,0 +1,55 @@
1
+ # Arbitrum One ecosystem context
2
+
3
+ Chain ID: `42161`. Start with [multichain integrations](../multichain.md) or
4
+ [ERC-20s and token creation](../tokens.md), then read local entries relevant to the idea.
5
+ Official documentation reviewed 2026-10-30. Entries describe discovery paths, not qualified ABX
6
+ adapters. Verify Arbitrum Sepolia (`421614`) separately; no testnet liquidity or feature parity is
7
+ implied. Providers may serve other chains outside this ABX-focused scope.
8
+
9
+ ## Camelot — local liquidity context
10
+
11
+ Consider an artwork responding to a selected pool or liquidity community. Start with Camelot's
12
+ [official documentation](https://docs.camelot.exchange/) and separate
13
+ [One](https://docs.camelot.exchange/contracts/arbitrum/one-mainnet/) and
14
+ [Sepolia](https://docs.camelot.exchange/contracts/arbitrum/sepolia-testnet/) contract lists.
15
+ Select the actual AMM generation and pool before choosing interfaces.
16
+
17
+ **Data:** **on-chain** pool state read through the selected generation's official contract interfaces
18
+ can drive same-chain ABX augment/rendering with bounded reads and self-contained fallback output.
19
+ **Off-chain** analytics and indexed history suit research or a companion app, rather than HTTP
20
+ requests inside the NFT's live view. Apply [durability guidance](../durability.md).
21
+
22
+ Reading public documentation needs no account. Browser/build-time contract reads need RPC access;
23
+ same-chain EVM-to-EVM reads need no application API account. Reuse suitable RPC tooling for authoring,
24
+ with provider-specific account/limit requirements. Do not invent a Camelot MCP or require an
25
+ analytics signup just to compare ideas. A project-specific read can supply visual
26
+ input without rebuilding Camelot's exchange, indexer, or routing.
27
+
28
+ ## GMX — contract-state candidates and companion analytics
29
+
30
+ For a permanent NFT, first verify whether the desired position/state field has a bounded same-chain
31
+ read through GMX's official contract interfaces. This reference does not qualify such a read; omit
32
+ the idea if its essential input cannot meet the durability guidance. Inspect oracle provenance,
33
+ updates, upgrade powers, and read failures rather than treating all market data as native chain state.
34
+
35
+ For research or an optional companion dashboard, use the [official SDK overview](https://docs.gmx.io/docs/sdk/overview/)
36
+ and [API-backed SDK v2](https://docs.gmx.io/docs/sdk/v2/). **Data:** that route is **off-chain** HTTP,
37
+ even when a value originates on-chain. Its documented data setup needs no wallet or key, but the
38
+ hosted service must keep running. It is not a default recommendation for NFT live-view data.
39
+ Confirm access, limits, chain support, and timestamps; do not rebuild GMX's client.
40
+ Trading or account-management flows add separate signatures, permissions, costs, and lifecycle
41
+ requirements. Do not introduce those flows for a read-only artwork.
42
+
43
+ ## Chain details that change the plan
44
+
45
+ - Check live ABX capabilities and provider eligibility. Arbitrum ecosystem coverage says nothing
46
+ about ABX's current support label, sponsored networks, or account permissions.
47
+ - ABX has no canonical dependency registry on Arbitrum in the current
48
+ [deployment manifest](https://docs.abx.io/docs/reference/deployments). Choose dependencies
49
+ explicitly using [code.md](../../code.md); do not silently resolve through another chain.
50
+ - Arbitrum's [gas estimate](https://docs.arbitrum.io/build-decentralized-apps/troubleshooting-building)
51
+ includes L1 data cost; avoid adding that component twice.
52
+ - Review [Solidity differences](https://docs.arbitrum.io/arbitrum-essentials/arbitrum-vs-ethereum/solidity-support)
53
+ for custom contracts: block-number semantics differ, and `block.prevrandao` is not a useful
54
+ randomness source here. Financial/oracle rules need their own review; artistic read-only data is
55
+ not a proof of suitability for pricing, lending, or liquidation.
@@ -0,0 +1,11 @@
1
+ # Base Sepolia ecosystem context
2
+
3
+ Chain ID: `84532`. No additional testnet-specific entries are populated yet.
4
+ Use [multichain integrations](../multichain.md) and [ERC-20s and token creation](../tokens.md) for
5
+ candidate routes, and [Base context](base.md) for production context when relevant.
6
+
7
+ Verify this exact testnet's contract addresses, official tool/API support, and available assets.
8
+ Production ownership, balances, pools, and indexed datasets do not carry over. Label fixtures and
9
+ test tokens explicitly; they demonstrate the integration shape, not production data or liquidity.
10
+ Same-chain testnet state is on-chain; an API response remains an off-chain input.
11
+ Check `abx capabilities --json` for current ABX eligibility.
@@ -0,0 +1,10 @@
1
+ # Base ecosystem context
2
+
3
+ Chain ID: `8453`. No additional chain-specific entries are populated yet.
4
+ Use [multichain integrations](../multichain.md) for official marketplace, liquidity, and Art Blocks
5
+ tools, or [ERC-20s and token creation](../tokens.md) for token-informed ideas and external launch tools.
6
+ Each provider entry distinguishes on-chain state from off-chain access paths and setup requirements.
7
+
8
+ Verify the exact Base deployment, protocol version, and official tool support before integration.
9
+ For testing, read [Base Sepolia context](base-sepolia.md); production assets and liquidity do not carry over.
10
+ Check `abx capabilities --json` for ABX eligibility independently of third-party coverage.
@@ -0,0 +1,10 @@
1
+ # Ethereum ecosystem context
2
+
3
+ Chain ID: `1`. No additional chain-specific entries are populated yet.
4
+ Use [multichain integrations](../multichain.md) for official marketplace, liquidity, and Art Blocks
5
+ tools, or [ERC-20s and token creation](../tokens.md) for token-informed ideas and external launch tools.
6
+ Each provider entry distinguishes on-chain state from off-chain access paths and setup requirements.
7
+
8
+ Verify the exact Ethereum deployment, protocol version, and official tool support before integration.
9
+ For testing, read [Sepolia context](sepolia.md); production assets and liquidity do not carry over.
10
+ Check `abx capabilities --json` for ABX eligibility independently of third-party coverage.
@@ -0,0 +1,11 @@
1
+ # Robinhood Chain Testnet ecosystem context
2
+
3
+ Chain ID: `46630`. No additional testnet-specific entries are populated yet.
4
+ Use [multichain integrations](../multichain.md) and [ERC-20s and token creation](../tokens.md) for
5
+ candidate routes, and [Robinhood context](robinhood.md) for production context when relevant.
6
+
7
+ Verify this exact testnet's contract addresses, official tool/API support, and available assets.
8
+ Production ownership, balances, pools, and indexed datasets do not carry over. Label fixtures and
9
+ test tokens explicitly; they demonstrate the integration shape, not production data or liquidity.
10
+ Same-chain testnet state is on-chain; an API response remains an off-chain input.
11
+ Check `abx capabilities --json` for current ABX eligibility.
@@ -0,0 +1,11 @@
1
+ # Robinhood Chain ecosystem context
2
+
3
+ Chain ID: `4663`. No additional chain-specific entries are populated yet.
4
+ Use [multichain integrations](../multichain.md) and [ERC-20s and token creation](../tokens.md) for
5
+ candidate tools and ideas; these references do not establish their availability on this chain.
6
+ Verify the exact deployment and selected official tool's support before proposing an integration.
7
+ EVM compatibility alone establishes neither deployed contracts nor hosted API coverage.
8
+
9
+ For testing, read [Robinhood testnet context](robinhood-testnet.md). Keep on-chain data availability
10
+ separate from off-chain indexing, metadata, and media. Check `abx capabilities --json` for current
11
+ ABX eligibility independently of third-party coverage.
@@ -0,0 +1,11 @@
1
+ # Sepolia ecosystem context
2
+
3
+ Chain ID: `11155111`. No additional testnet-specific entries are populated yet.
4
+ Use [multichain integrations](../multichain.md) and [ERC-20s and token creation](../tokens.md) for
5
+ candidate routes, and [Ethereum context](ethereum.md) for production context when relevant.
6
+
7
+ Verify this exact testnet's contract addresses, official tool/API support, and available assets.
8
+ Production ownership, balances, pools, and indexed datasets do not carry over. Label fixtures and
9
+ test tokens explicitly; they demonstrate the integration shape, not production data or liquidity.
10
+ Same-chain testnet state is on-chain; an API response remains an off-chain input.
11
+ Check `abx capabilities --json` for current ABX eligibility.
@@ -0,0 +1,70 @@
1
+ # Durable ecosystem integrations
2
+
3
+ Use when selecting dependencies for an object's behavior or output. On-chain, off-chain, and hybrid
4
+ designs are valid; match their guarantees to the intended lifespan and trust model. For long-lived,
5
+ self-contained output, prefer designs that survive loss of the creator, website, SDK, or hosted API.
6
+ Official tooling is valuable for authoring; being official, free, or account-free does not make a
7
+ runtime service permanent. See the public [ecosystem guide](https://docs.abx.io/docs/using-abx/guides/ecosystem-integrations).
8
+
9
+ ## Prefer durable paths for long-lived output
10
+
11
+ 1. **Same-chain EVM reads and self-contained output.** Compute state through the appropriate
12
+ Solidity renderer or augment hook using official contract interfaces. Keep required program,
13
+ media, and input bytes on-chain where feasible. Reading state in the EVM avoids a per-view
14
+ application API/RPC request; callers still need ordinary access to the chain.
15
+ 2. **Captured on-chain input.** If discovery requires an API or another chain, consider storing the
16
+ actual bounded input and relevant provenance on-chain, then render from it. State the source,
17
+ capture time/block, trust assumptions, and loss of live updates. A hash, media URL, IPFS CID, or
18
+ Merkle root alone does not preserve the bytes/proofs needed to render or exercise the mechanic.
19
+ 3. **Optional companion experience.** Put discovery, trading links, hosted artwork embeds, and
20
+ analytics in a separate site/app when useful. Its disappearance must not break the NFT's core
21
+ output or lifecycle. Keep companion-app capability separate from NFT permanence claims.
22
+ 4. **Essential live service only by explicit creator choice.** Do not recommend HTTP calls or
23
+ third-party iframes inside an NFT's live view as a default integration. If the intended work
24
+ actually requires them, explain the lifetime commitment and satisfy the exception design below.
25
+
26
+ An on-chain JavaScript program or `--onchain-uri` does not make its network fetches permanent.
27
+ Replacing an HTTP API with a hardcoded browser RPC endpoint retains a service dependency; prefer
28
+ passing state computed in the EVM into the artwork. An oracle/attestation is also a dependency:
29
+ identify its publishers, update funding, stale-data policy, and trust model before recommending it.
30
+
31
+ ## Make on-chain reads resilient
32
+
33
+ - Verify chain, contract/version, official interface, and the selected field's semantics. Inspect
34
+ upgrade/admin/pause powers and replaceability; a fixed address does not imply immutable behavior.
35
+ Do not substitute a pool spot price for an NFT floor or current state for indexed historical volume.
36
+ - Bound external calls, gas, returndata, loops, and output. For display reads, catch expected failures
37
+ and return useful, self-contained output; do not let a reverting dependency blank the NFT.
38
+ A view cannot persist a new last-good value: that requires a separately authorized state update.
39
+ - Choose reads or state-changing interactions to serve the object's purpose. Configure/transfer
40
+ hooks need deliberate failure semantics that preserve the intended rule; silently failing open
41
+ can defeat eligibility. Test mint, transfer, burn, and parameter writes.
42
+ - Exercise absent code, reverts, malformed/large responses, zero balances/liquidity, and changed
43
+ dependencies. Test stale oracle data if applicable. Never assume ABX catches a custom hook's revert.
44
+ - Distinguish permanence from frozen output: a robust live on-chain read can still change as the
45
+ chain changes. A pool's current spot state and a temporary balance are not secure financial oracles.
46
+
47
+ ## Required external API: lifetime commitment and recovery
48
+
49
+ Before implementation, clearly tell the creator: **this service must remain available for as long
50
+ as the NFT promises this live behavior**. Show the EVM/snapshot alternative and get an explicit
51
+ choice of the service-dependent design. API-key rotation and owner configurability reduce some
52
+ failure modes; neither guarantees that a replacement service or its data will exist forever.
53
+
54
+ Record a concrete design, rather than merely saying "configurable" or "has a fallback":
55
+
56
+ | Requirement | Decision to make and verify |
57
+ |---|---|
58
+ | Lifetime operation | Endpoint, data/schema, media, proxy, key/OAuth renewal, fees, limits, and who operates/pays for each dependency |
59
+ | Owner-controlled replacement | Which owner/admin role can change provider/endpoint and compatible response handling; distinguish collection owner from token holder, and test ownership handover |
60
+ | Recovery after locking | Identify the actual parameter/configuration or custom extension that provides updates. Verify it remains usable after planned URI/script/hook/parameter locks; do not imply ABX has a universal endpoint setter |
61
+ | Complete failure | Bounded timeouts/retries and meaningful self-contained fallback output when service, credentials, media, or network disappear; art-data service failures must not block mint/transfer |
62
+ | Data integrity | Missing, stale, or incompatible responses cannot corrupt canonical state; label captured/stale values honestly and disclose who can change them |
63
+
64
+ Keep secrets out of NFT code and public on-chain parameters. A server-side credential proxy creates
65
+ another lifetime operator dependency. Decentralized/content-addressed storage still needs a stated
66
+ availability plan for externally stored bytes; an address alone is not a permanence guarantee.
67
+
68
+ Verify by disabling the service and credentials, changing the provider through the named owner role,
69
+ and exercising the fallback after planned locks. If those requirements cannot be met, recommend the
70
+ EVM/snapshot design or keep the feature in an optional companion app.
@@ -0,0 +1,73 @@
1
+ # Multichain integrations
2
+
3
+ Read only the provider relevant to the idea. Coverage below is the intersection reviewed for ABX:
4
+ Ethereum (`1`), Base (`8453`), Arbitrum One (`42161`), not each provider's full network list.
5
+ Official documentation reviewed 2026-10-30; recheck the chosen tool and network before use.
6
+ This starter catalog is not exhaustive; research other protocols when they fit the project's concept.
7
+ Apply [durability guidance](durability.md): official discovery/build tooling does not need to become
8
+ a dependency of the finished NFT. Prefer same-chain EVM reads with self-contained fallback output.
9
+
10
+ ## OpenSea — discovery and marketplace context
11
+
12
+ - **Ideas:** research related collections, plan collector-facing metadata and traits, or link to
13
+ the marketplace from a companion site. Keep the NFT usable without OpenSea; do not recommend live
14
+ floor-price/indexed-trait API calls in its artwork or core eligibility logic.
15
+ - **Official route:** [agent tools](https://docs.opensea.io/docs/build-with-ai-agents) link its skill,
16
+ CLI, SDK, and [MCP](https://docs.opensea.io/reference/mcp). Use an existing connection when suitable;
17
+ adding all surfaces supplies no extra capability by itself.
18
+ - **Data:** **off-chain** discovery, indexed traits, and marketplace API/MCP results. NFT ownership
19
+ and settlement are **on-chain**, but consuming an indexed response does not give a Solidity hook
20
+ a contract read. For that route use the NFT/protocol's official contract interfaces directly.
21
+ - **Footprint:** MCP data tools and REST need an API key; MCP handshake/tool discovery does not.
22
+ [Instant keys](https://docs.opensea.io/reference/api-keys) need no signup but expire; a full key
23
+ involves the developer account flow. The same key serves MCP and REST. Wallet-scoped tools need
24
+ additional wallet authentication. Check current limits and renewal rather than creating keys to
25
+ evade quotas.
26
+ - **Before integrating:** verify the [current chains](https://docs.opensea.io/reference/get_chains)
27
+ and exact feature. Keep keys server-side. Use ABX metadata commands for canonical state; use
28
+ OpenSea tools for its projection/orders. Its SeaDrop deployment tools are not an ABX deploy lane.
29
+
30
+ ## Uniswap — swaps, liquidity, and pool-informed art
31
+
32
+ - **Ideas:** use a selected pool's same-chain state as a visual input computed in the EVM, with
33
+ bounded reads and fallback art. Offer swap links in a companion sales app; the NFT's essential
34
+ rendering should not require a trading API, embedded swap app, or active liquidity position.
35
+ - **Official route:** start with the relevant [Uniswap skill](https://developers.uniswap.org/docs/uniswap-ai/skills)
36
+ and [integration choices](https://developers.uniswap.org/docs/get-started/quickstart). Reuse its
37
+ routing, SDKs, and interfaces rather than implementing a swap router.
38
+ - **Data:** **on-chain** pool state can live-augment an ABX renderer or inform hook logic on the
39
+ same chain. Use the version's official read interfaces (including
40
+ [v4 StateView](https://github.com/Uniswap/v4-periphery/blob/main/src/lens/StateView.sol) where appropriate).
41
+ **Off-chain** quotes and indexed volume/history suit discovery or a companion app. Do not use
42
+ them as default live-view inputs; consider an actual bounded on-chain snapshot if relevant.
43
+ A pool's instantaneous price is not a manipulation-resistant price oracle.
44
+ - **Footprint:** [interface links](https://developers.uniswap.org/docs/trading/custom-interface-links)
45
+ avoid provisioning a developer API key; execution still needs the collector's wallet. The Trading
46
+ API needs a developer key. Browser/build-time contract/SDK reads need RPC access; EVM-to-EVM
47
+ reads do not add an application RPC service. The [iframe embed](https://developers.uniswap.org/docs/trading/embed-app)
48
+ requires origin allowlisting; reserve it for companion apps, with their own availability expectations.
49
+ - **Before integrating:** select protocol version, chain, pool, and token addresses from the
50
+ [deployment sources](https://developers.uniswap.org/deployments). Check the exact tool's chain
51
+ support separately. Read-only pool data, swap execution, liquidity positions, and Uniswap v4 hooks
52
+ are distinct integrations; a Uniswap hook is not an ABX parameter hook.
53
+
54
+ ## Art Blocks — existing projects and collector communities
55
+
56
+ - **Ideas:** discover related artists/projects or design a same-chain collector interaction using
57
+ verified contract state. Link to another work from a companion gallery; do not recommend a hosted
58
+ generator/media iframe as part of a permanent NFT's essential output. Discovery grants no reuse rights.
59
+ - **Official route:** use the [Art Blocks skills](https://docs.artblocks.io/developer/mcp-server/skills/)
60
+ and [MCP](https://docs.artblocks.io/developer/mcp-server/quick-start/) for project/token discovery
61
+ and query workflows. [Token, generator, and media APIs](https://docs.artblocks.io/developer/token-and-generator-apis/)
62
+ provide published read paths for research or optional companion displays.
63
+ - **Data:** **mixed**. Ownership and some token/script state are **on-chain**, varying by core;
64
+ inspect the [official core interfaces](https://docs.artblocks.io/developer/core-contract/).
65
+ API/MCP discovery, generated media, and computed traits are **off-chain** access paths. A published
66
+ live-view URL is an external service dependency, not preserved artwork or an EVM-readable input.
67
+ - **Footprint:** MCP uses OAuth/browser sign-in; do not assume an ABX Services login authorizes it.
68
+ Published token/view URLs can suit a companion display without adding an MCP connection. Verify
69
+ authentication and rate policy for the exact query/API route; do not promise unlimited access.
70
+ - **Before integrating:** carry chain, core address, project, and token identity. On a shared Art
71
+ Blocks core, collection-wide `balanceOf` is not a project-specific ownership check. Use the
72
+ official Art Blocks tooling for its contracts; ABX parameter/minter commands target ABX projects.
73
+ A holder gate on a different chain needs a separate proof design.
@@ -0,0 +1,63 @@
1
+ # ERC-20s and token creation
2
+
3
+ Use for token-informed ABX ideas, an existing token community, or a companion fungible token.
4
+ Official sources reviewed 2026-10-30. Recheck the selected chain, token identity, and tool/version.
5
+ These are discovery routes, not executed ABX integrations. Read only the relevant section.
6
+
7
+ ## Existing tokens as creative inputs
8
+
9
+ The [ERC-20 standard](https://eips.ethereum.org/EIPS/eip-20) exposes **on-chain** balances, supply,
10
+ and allowances. Prefer a same-chain ABX augment hook or renderer turning a chosen wallet's balance
11
+ into visual variation, with bounded reads and self-contained fallback art. Use external-state
12
+ configure/transfer gates only for an intentional mechanic with lifecycle tests and failure semantics.
13
+ Specify whose balance matters: current NFT owner, configuring wallet, or a fixed community treasury.
14
+ For extension choices use [capabilities.md](../capabilities.md) and [code.md](../code.md).
15
+
16
+ | Token / chain scope | Official identity and tooling | Example on-chain input / boundary |
17
+ |---|---|---|
18
+ | USDC — Ethereum, Base, Arbitrum One; check each testnet separately | [Circle's contract directory](https://developers.circle.com/stablecoins/usdc-contract-addresses), then the token's verified ERC-20 interface | Treasury balance informs an artwork's density. Distinguish native USDC from bridged variants; reserve reports and redemption access are separate issuer/off-chain concerns. |
19
+ | ARB — Arbitrum One; verify other deployments separately | [Arbitrum Foundation deployment directory](https://docs.arbitrum.foundation/deployment-addresses), then the verified token interface | A holder's balance selects a palette. ERC-20 balance alone does not establish delegated voting power or governance participation. |
20
+ | AERO — Base | [Aerodrome's official contracts and ABIs](https://github.com/aerodrome-finance/contracts) | Treasury or owner balance drives visual variation. AERO and veAERO positions are different assets/interfaces; do not infer locked voting power from an ERC-20 balance. |
21
+
22
+ Use official deployment directories and interfaces rather than symbols, token search rankings, or
23
+ copied addresses. Direct reads need RPC for a browser/build tool; same-chain contract-to-contract
24
+ reads need no API account. An **off-chain** token search, price feed, portfolio API, or holder index
25
+ is a different route, even when its source is contract state. Keep it in discovery or a companion
26
+ app by default. Do not fetch a token's hosted logo/price/portfolio API from a permanent NFT's live
27
+ view; prefer verified numeric contract reads or actual captured on-chain bytes. An essential service
28
+ requires the explicit lifetime commitment and recovery design in [durability.md](durability.md).
29
+
30
+ `name`, `symbol`, and `decimals` are optional in ERC-20. Normalize units from the actual token and
31
+ avoid unbounded holder enumeration. A current balance is temporary, not proof of sustained ownership;
32
+ pool prices, valuations, and eligibility rules need their own trust/manipulation assessment.
33
+ Inspect token upgrade/admin/pause powers; an on-chain token is not necessarily immutable. Rendering
34
+ fallbacks should keep the NFT usable if reads fail. A gate's fallback must preserve its intended rule.
35
+
36
+ ## Companion token creation — Clanker as one starting reference
37
+
38
+ ABX creates its NFT collections; fungible token launch and management belong to a separate protocol.
39
+ [Clanker's official SDK](https://github.com/clanker-devco/clanker-sdk) and
40
+ [official agent skill](https://github.com/clanker-devco/clanker-sdk/blob/main/.cursor/skills/use-clanker-sdk/SKILL.md)
41
+ provide one reusable route for creation, liquidity, and post-launch operations. Prefer these over
42
+ building a token launcher, pool deployer, or reward client. This is a starting option, not a required
43
+ provider: a creator/agent may choose another protocol using the same verification criteria.
44
+
45
+ - **Coverage:** the official skill lists Ethereum, Base, Arbitrum One, and Base Sepolia among its
46
+ networks. Verify the installed SDK version and actual protocol deployments for the chosen chain;
47
+ this does not establish availability on every ABX chain or paired testnet.
48
+ - **Data and ideas:** the resulting ERC-20 and pool state are **on-chain** inputs for same-chain
49
+ ABX art or intentional eligibility. Hosted discovery/media are **off-chain**; keep the NFT's
50
+ output independent of the launch website, SDK, and token image host. A companion token balance can
51
+ affect art without giving the NFT permission to trade or claim rewards.
52
+ - **Setup:** the direct SDK flow uses RPC and a wallet client, with gas/funding and transaction
53
+ authority. It does not document a separate Clanker account/API key for that route. Hosted APIs,
54
+ social login, and optional services have separate requirements; consult the
55
+ [current official docs](https://docs.clanker.world). Reuse existing suitable connections and signer;
56
+ never export an ABX-managed key to satisfy a third-party example.
57
+ - **Before launch:** verify admin/recipient roles, allocations, liquidity/fees, costs, and required
58
+ metadata or distribution hosting. Use the chosen official tool's simulation/preview and explicit
59
+ transaction review. No companion-token deployment, approval, or funding is implied by ideation.
60
+
61
+ For a proposal, record the token's chain and official identity, input field and provenance, ABX seam,
62
+ live versus captured behavior, resilience, new accounts/credentials, and runtime dependencies. Keep
63
+ token launch and ABX NFT deployment as separately reviewed operations, using each protocol's official tools.
@@ -0,0 +1,98 @@
1
+ # Ecosystem discovery and integration planning
2
+
3
+ Use this reference when a creator wants ideas involving existing protocols, communities, or tools.
4
+ For public context, see [Ecosystem integrations](https://docs.abx.io/docs/using-abx/guides/ecosystem-integrations).
5
+ These are discovery routes, not tested ABX adapters or a promise of third-party compatibility.
6
+
7
+ ## Load by chain set and intent
8
+
9
+ Read the selected chain's context, then only the topic/provider relevant to the idea. Shared
10
+ providers are described once; chain notes add local context rather than copying their instructions.
11
+
12
+ | Requested network | References |
13
+ |---|---|
14
+ | Ethereum (`1`) | [Ethereum context](ecosystem/chains/ethereum.md) |
15
+ | Sepolia (`11155111`) | [Sepolia context](ecosystem/chains/sepolia.md) |
16
+ | Base (`8453`) | [Base context](ecosystem/chains/base.md) |
17
+ | Base Sepolia (`84532`) | [Base Sepolia context](ecosystem/chains/base-sepolia.md) |
18
+ | Arbitrum One (`42161`) | [Arbitrum context](ecosystem/chains/arbitrum.md) |
19
+ | Arbitrum Sepolia (`421614`) | [Arbitrum Sepolia context](ecosystem/chains/arbitrum-sepolia.md) |
20
+ | Robinhood Chain (`4663`) | [Robinhood context](ecosystem/chains/robinhood.md) |
21
+ | Robinhood Chain Testnet (`46630`) | [Robinhood testnet context](ecosystem/chains/robinhood-testnet.md) |
22
+
23
+ Topic routes: [multichain integrations](ecosystem/multichain.md) cover marketplaces, liquidity, and
24
+ existing generative art; [ERC-20s and token creation](ecosystem/tokens.md) cover specific tokens and
25
+ an external launch protocol. These examples are non-exhaustive starting points, not an allowlist or
26
+ provider ranking. Explore protocols beyond this catalog that fit the creator's theme, community, or
27
+ distinctive mechanics. Evaluate their actual on-chain data, semantics, reliability, official tools,
28
+ and setup/runtime costs; explain why each input belongs in this particular project. An unlisted
29
+ provider is unresearched here, not unsupported. Verify new candidates against official sources and
30
+ the same durability criteria. Read `abx capabilities --json` for current ABX network eligibility;
31
+ third-party coverage does not enable an ABX network or sponsorship lane.
32
+
33
+ ## Turn an idea into a bounded plan
34
+
35
+ 1. Apply the [durability guidance](ecosystem/durability.md) to the object's intended behavior and
36
+ lifespan. Keep discovery/build tools separate from the finished NFT's dependencies.
37
+ Start from the project's theme, audience, and distinctive mechanic. Explain how each proposed
38
+ input supports that concept; do not force a familiar token, provider, or financial theme into an
39
+ unrelated work. Keep ideation separate from account creation or transaction execution.
40
+ 2. Check available connections and project dependencies through their supported discovery/status
41
+ surfaces. Reuse suitable existing tooling and accounts. Do not inspect credential files to make
42
+ this inventory.
43
+ 3. Prefer the provider's official skill, MCP, CLI, SDK, API, or contract interfaces for its part of the
44
+ workflow. Link to current installation/authentication instructions instead of copying them here.
45
+ Add only the project-specific glue; do not rebuild an existing client, router, indexer, or signer.
46
+ 4. Before implementation, check the ABX part using [capabilities.md](capabilities.md). An external
47
+ API read or marketplace order is not an ABX command. Keep ABX operations in its CLI and provider
48
+ operations in official tools; do not let a third-party deploy flow replace the chosen ABX collection.
49
+ 5. Before implementation, verify the specific chain, contract/version, token or project identity,
50
+ current tool support, and the read/write authority. Testnet availability, liquidity, and datasets
51
+ need separate evidence. A documentation review is not an executed integration test.
52
+
53
+ ## Input provenance and ABX execution
54
+
55
+ Label each proposed input **on-chain**, **off-chain**, or **mixed**, including the actual access path.
56
+
57
+ | Input route | Where it can drive ABX behavior |
58
+ |---|---|
59
+ | On-chain, same-chain contract read | Can inform contract actions, state rules, eligibility, or renderer/augment output. Configure/transfer hooks need deliberate failure semantics and lifecycle tests; a display input should not block transfers |
60
+ | Off-chain API/indexer, even if sourced from contracts | Discovery/build tooling or an optional companion app. Prefer capturing the actual bounded input on-chain over putting HTTP calls in the NFT's live view |
61
+ | Mixed: on-chain state plus hosted metadata/media | Separate the durable NFT output from hosted enrichment. Any essential service is a lifetime dependency requiring explicit creator choice and the recovery design below |
62
+
63
+ Specify the contract and field, or API and timestamp, plus whether the input is live or captured.
64
+ For contract integrations use official interfaces, bounded reads, and purpose-appropriate failure handling.
65
+ Do not assume a renderer's `msg.sender` is the NFT owner. A mutable external read can affect hook
66
+ liveness as well as output; inspect upgrade/pause powers. A browser's hardcoded RPC fetch is still a
67
+ network dependency; prefer computing the input in the EVM. A pool spot value alone is not a
68
+ manipulation-resistant price oracle.
69
+
70
+ ## Account and dependency footprint
71
+
72
+ For each proposed route, include a short row in the creator's plan:
73
+
74
+ | Route | Setup delta | Authority and cost | Runtime dependency / exit |
75
+ |---|---|---|---|
76
+ | Provider + official tool + exact chain | Reuse existing connection, no signup, new account, API key, OAuth, RPC, or unknown | Reads versus signatures/approvals; fees, limits, expiry, and renewal to verify | Build-time, optional companion, or lifetime NFT dependency; responsible owner, replacement controls, and behavior if it disappears |
77
+
78
+ Count accounts, credentials, and hosted dependencies separately. A signup-free key still needs
79
+ storage and renewal; an account-free HTTP endpoint is still an availability dependency. Distinguish
80
+ creator setup from what every collector must do. Prefer the least setup that meets the actual goal,
81
+ not an account-free route that recreates the provider's service or hides extra maintenance.
82
+
83
+ Use public docs, interfaces, or a local fixture for early comparison. Introduce a new connection,
84
+ credential, paid plan, or wallet permission only when the chosen workflow needs it and the creator's
85
+ authorization covers it. Record credential references and expiry, never secret values, in handoffs.
86
+
87
+ ## Integration boundaries to resolve
88
+
89
+ - **Live or captured:** do not recommend HTTP-dependent NFT live views by default. Prefer EVM reads
90
+ or actual input bytes captured on-chain; a URL/hash alone does not preserve them. Required external
91
+ APIs need explicit lifetime-dependency disclosure and owner-controlled replacement plus a tested
92
+ fallback, as described in [durability.md](ecosystem/durability.md). Read [code.md](code.md) for lanes.
93
+ - **Source chain:** a contract cannot directly read another chain's NFT ownership. Multichain
94
+ APIs can assist discovery but do not supply a trustless cross-chain proof or shared state.
95
+ - **Compatibility:** marketplace indexing, royalties, signed listings, transfer validators, and
96
+ lending eligibility are separate checks. Read [creator-token.md](creator-token.md) when relevant.
97
+ - **Writes:** a quote, unsigned transaction, or tool connection is not approval to trade, approve a
98
+ spender, lend, bridge, or deploy. Keep the existing ABX confirmation and reconciliation rules.
@@ -0,0 +1,29 @@
1
+ # Project ideation
2
+
3
+ Start with what the object means and does, who participates, and why they would care. Explore its
4
+ data, changing state, participant roles, rules, and relationships with other systems before choosing
5
+ its appearance or deployment family. Artwork is one possibility; follow the creator's intent.
6
+
7
+ For example, consider a shared resource with contribution rules, a record of provenance or claims,
8
+ a liquidity position with community-defined interactions, or a charter connected to an externally
9
+ launched ERC-20. An object can represent rights or a financial instrument, but real-world rights,
10
+ custody, and enforcement need their own design. These are starting points, not a checklist or
11
+ promises of ready-made ABX features. Explore beyond them and beyond the documented protocols.
12
+
13
+ Think in actions as well as data: a governed parameter edit or token transfer can trigger custom
14
+ on-chain logic to swap through an AMM, create another asset, or settle an obligation. Configure and
15
+ transfer hooks can make contract calls using explicitly arranged funding and authority; augment
16
+ hooks only derive data during reads. These actions need not serve a visual outcome.
17
+
18
+ Discuss the core interaction and value in plain language. Consider what changes, who may change it,
19
+ and what happens when a participant or dependency disappears. On-chain, off-chain, and hybrid
20
+ designs are all possible; choose deliberately for the intended lifespan, trust, and behavior.
21
+ Durability need not mean frozen state. Use [ecosystem.md](ecosystem.md) for relevant integrations,
22
+ favoring official third-party tools rather than rebuilding them.
23
+
24
+ Keep exploration separate from implementation. Research and compare concepts until the creator
25
+ chooses a direction and asks to implement it; do not start code, create repositories or cloud
26
+ resources, or deploy during ideation. Future launch intent or available accounts and wallets do
27
+ not select an idea. An explicit request to implement a chosen concept already establishes that
28
+ direction; do not ask for it again. Resolve technical feasibility through
29
+ [capabilities.md](capabilities.md) before making implementation promises.