Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
6bd12ca
feat(shield-swap): lifecycle error taxonomy + central HTTP status map…
iamalwaysuncomfortable Jul 15, 2026
b4ccc20
feat(shield-swap): typed access/redeem/airdrop/api-token lifecycle en…
iamalwaysuncomfortable Jul 15, 2026
cb4b7ae
fix(shield-swap): review fixes — HTTP errors subclass DexApiError, la…
iamalwaysuncomfortable Jul 15, 2026
908d340
feat(shield-swap): on-disk participant profile store
iamalwaysuncomfortable Jul 15, 2026
e00daa4
feat(shield-swap): append-only journal with locked counter reservation
iamalwaysuncomfortable Jul 15, 2026
5495456
feat(shield-swap): stage-list onboarding, from_profile, onboard verb
iamalwaysuncomfortable Jul 15, 2026
32d6b1d
feat(shield-swap): status() and get_positions() discovery verbs
iamalwaysuncomfortable Jul 15, 2026
871f465
feat(shield-swap): identity override + counter-safe swap_many
iamalwaysuncomfortable Jul 15, 2026
47dcdef
feat(shield-swap): collect_all — claims + owed-exact fee collection o…
iamalwaysuncomfortable Jul 15, 2026
d7febbf
fix(shield-swap): review fixes — live credential refresh, locked jour…
iamalwaysuncomfortable Jul 15, 2026
208c19a
feat(shield-swap): curated 11-tool agent surface, MCP binds the local…
iamalwaysuncomfortable Jul 15, 2026
257c990
feat(shield-swap): generated AGENTS.md context, skill pointer, CI sta…
iamalwaysuncomfortable Jul 15, 2026
891ecc6
feat(shield-swap): lifecycle exports, README agents section, live lif…
iamalwaysuncomfortable Jul 15, 2026
f2a4209
test(shield-swap): live lifecycle proof (fresh profile) + rehearsal s…
iamalwaysuncomfortable Jul 15, 2026
80b6d00
chore(shield-swap): pyright covers gen_context.py
iamalwaysuncomfortable Jul 16, 2026
2f6689c
feat(shield-swap): self-provision both credential systems in the cred…
iamalwaysuncomfortable Jul 16, 2026
927835a
fix(shield-swap): dogfooding fixes — DPS payload shape, scanner re-re…
iamalwaysuncomfortable Jul 16, 2026
8a1f491
fix(shield-swap): route quotes use canonical decimal units; DPS-toler…
iamalwaysuncomfortable Jul 16, 2026
e459558
feat(shield-swap): delegate harvests outputs from DPS payload, swap_m…
iamalwaysuncomfortable Jul 16, 2026
5b81ab2
feat(shield-swap): batch record partitioning + claim registers token …
iamalwaysuncomfortable Jul 16, 2026
15a879f
feat(shield-swap): Veil-style conversation flow — ask-first menu, key…
iamalwaysuncomfortable Jul 16, 2026
c89e320
test(shield-swap): live gate self-provisions credentials, scale-align…
iamalwaysuncomfortable Jul 16, 2026
8def282
fix(shield-swap): register token program with explicit records, fixed…
iamalwaysuncomfortable Jul 16, 2026
a70b2a5
feat(shield-swap): ship the agent guide and skill in the wheel
iamalwaysuncomfortable Jul 16, 2026
cca7c5d
docs: agent-skill instructions in the main README
iamalwaysuncomfortable Jul 16, 2026
b394c25
docs: concrete AGENTS.md drop-in instruction instead of 'point the ag…
iamalwaysuncomfortable Jul 16, 2026
1ce0c17
feat(shield-swap): liquidity flows live-proven and in the exit gate
iamalwaysuncomfortable Jul 16, 2026
3bac507
feat(shield-swap): developer path in the intro menu + Tier 2 client-c…
iamalwaysuncomfortable Jul 16, 2026
2385dbb
chore: bump SDK versions to 0.2.2
iamalwaysuncomfortable Jul 16, 2026
bd17482
test(shield-swap): gate retries a dropped mint after scanner refresh
iamalwaysuncomfortable Jul 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .claude/skills/shield-swap/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
name: shield-swap
description: Use when the user wants to trade, LP, or build on the shield_swap AMM — setting up an account, redeeming an invite, getting the airdrop, swapping privately, managing liquidity positions, or collecting winnings via the aleo_shield_swap Python SDK.
---

Read `shield-swap-sdk/AGENTS.md` (generated from the SDK — always current)
and follow its Tier 1 lifecycle and conversation pattern. Write Python
against the SDK; don't re-implement flows the verbs already provide, and
don't read SDK source unless AGENTS.md genuinely lacks the answer.
Preconditions are enforced in code — on error, read the exception message;
it names the verb that fixes it.
3 changes: 3 additions & 0 deletions .github/workflows/sdk-wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -254,11 +254,14 @@ jobs:
pip install --find-links sdk-dist aleo-sdk
pip install --find-links shield-swap-sdk/dist "shield-swap-sdk[async,mcp]" pytest pytest-asyncio
cd shield-swap-sdk && python -m pytest
- name: AGENTS.md up to date
run: python shield-swap-sdk/codegen/gen_context.py --check
# Prove the installed wheel imports on its own, away from the source tree.
- name: Smoke test wheel
run: |
cd "$RUNNER_TEMP"
python -c "import aleo_shield_swap; print('shield-swap-sdk', aleo_shield_swap.__version__)"
python -m aleo_shield_swap | head -1 # packaged agent guide
- name: Upload wheel
uses: actions/upload-artifact@v4
with:
Expand Down
39 changes: 39 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,45 @@ The SDK ships two layers:

Built with snarkvm 4.8.1 (MainnetV0). For build instructions, see [sdk/Readme.md](./sdk/Readme.md).

## Agent skills (trade on Shield Swap by chatting)

The [`shield-swap-sdk`](./shield-swap-sdk) package ships everything an AI
agent needs to drive the shield_swap AMM — set up an account, redeem an
invite code, get the airdrop, make private swaps, manage liquidity, and
collect earnings — from a single generated guide.

**Any agent (Claude Code, Codex, Cursor, custom):**

```bash
pip install shield-swap-sdk
python -m aleo_shield_swap > AGENTS.md # drop the agent guide into your project
```

Most coding agents (Codex, Cursor, Claude Code, …) automatically read a
repo-root `AGENTS.md`, so after that one command just chat: *"set up a
shield-swap account and get tokens"*, *"find pools and start swapping"*.
(Equivalently, open with "run `python -m aleo_shield_swap` and follow that
guide", or paste the output into the agent's instructions.) The one thing
the agent will ask you for is an invite code; everything else — key
material, API credentials, airdrop — is handled by the SDK. Bring an existing account by exporting
`SHIELD_SWAP_PRIVATE_KEY` (or `SHIELD_SWAP_PRIVATE_KEY_FILE`) before the
first run — never paste a private key into the chat.

**Claude Code:** working in this repo, the skill is already installed
(`.claude/skills/shield-swap/`) — just ask. In your own project, copy the
packaged skill in:

```bash
cp -r "$(python -c 'import aleo_shield_swap, pathlib; print(pathlib.Path(aleo_shield_swap.__file__).parent / "skills")')" .claude/skills/shield-swap
```

**MCP clients (Claude Desktop, etc.):**

```bash
pip install "shield-swap-sdk[mcp]"
python -m aleo_shield_swap.mcp # stdio server with the lifecycle tools
```

## Quick Start (facade)

```python
Expand Down
2 changes: 1 addition & 1 deletion sdk-abi/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion sdk-abi/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

[package]
name = "aleo-abi"
version = "0.2.1"
version = "0.2.2"
edition = "2024"
license = "GPL-3.0-or-later"
description = "Python bindings for ABI generation from Aleo bytecode (via Leo's leo-abi crate)"
Expand Down
2 changes: 1 addition & 1 deletion sdk-abi/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "maturin"

[project]
name = "aleo-contract-abi-generator"
version = "0.2.1"
version = "0.2.2"
description = "Python bindings for ABI generation from Aleo bytecode"
readme = "README.md"
license = {text = "GPL-3.0-or-later"}
Expand Down
2 changes: 1 addition & 1 deletion sdk/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion sdk/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "aleo"
authors = ["Konstantin Pandl", "Mike Turner", "Roman Proskuryakov"]
version = "0.2.1"
version = "0.2.2"
description = "A Python sdk for zero-knowledge cryptography based on Aleo"
edition = "2021"
license = "GPL-3.0-or-later"
Expand Down
2 changes: 1 addition & 1 deletion sdk/docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
copyright = '2019-2026, Provable Inc.'
author = 'kpp'

version = '0.2.1'
version = '0.2.2'

# -- General configuration

Expand Down
2 changes: 1 addition & 1 deletion sdk/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[project]
name = "aleo-sdk"
description = "Python SDK for building zero-knowledge apps and DeFi on the Aleo network"
version = "0.2.1"
version = "0.2.2"
readme = "Readme.md"
license = {file = "LICENSE.md"}
authors = [
Expand Down
Loading
Loading