stellar-agent 0.1.0 → 0.3.0

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.
Files changed (27) hide show
  1. package/README.md +68 -1
  2. package/package.json +12 -3
  3. package/src/core-skills/module-help.csv +2 -0
  4. package/src/core-skills/stellar-help/SKILL.md +5 -0
  5. package/src/core-skills/stellar-lean/SKILL.md +70 -0
  6. package/src/core-skills/stellar-party-mode/SKILL.md +2 -1
  7. package/src/core-skills/stellar-project-context/SKILL.md +152 -0
  8. package/src/stellar-skills/1-analysis/stellar-agent-analyst/customize.toml +5 -0
  9. package/src/stellar-skills/1-analysis/stellar-known-assets/SKILL.md +125 -0
  10. package/src/stellar-skills/4-implementation/stellar-agent-devops/customize.toml +5 -0
  11. package/src/stellar-skills/4-implementation/stellar-doctor/SKILL.md +207 -0
  12. package/src/stellar-skills/5-mentorship/stellar-agent-mentor/SKILL.md +60 -0
  13. package/src/stellar-skills/5-mentorship/stellar-agent-mentor/customize.toml +56 -0
  14. package/src/stellar-skills/5-mentorship/stellar-demo-prep/SKILL.md +139 -0
  15. package/src/stellar-skills/5-mentorship/stellar-idea-scoping/SKILL.md +125 -0
  16. package/src/stellar-skills/5-mentorship/stellar-judging-criteria/SKILL.md +119 -0
  17. package/src/stellar-skills/5-mentorship/stellar-mvp-definition/SKILL.md +124 -0
  18. package/src/stellar-skills/5-mentorship/stellar-pitch-coaching/SKILL.md +150 -0
  19. package/src/stellar-skills/5-mentorship/stellar-submission-prep/SKILL.md +234 -0
  20. package/src/stellar-skills/5-mentorship/stellar-track-recommendation/SKILL.md +97 -0
  21. package/src/stellar-skills/module-help.csv +9 -0
  22. package/src/stellar-skills/module.yaml +7 -0
  23. package/tools/installer/commands/init.js +31 -2
  24. package/tools/installer/commands/mcp.js +38 -0
  25. package/tools/installer/commands/version.js +42 -0
  26. package/tools/installer/stellar-cli.js +1 -1
  27. package/tools/mcp-server/server.js +281 -0
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Stellar Agent
2
2
 
3
- An AI agent team for Stellar blockchain developers. Run one command to add a team of specialized AI agents to any project.
3
+ An AI agent team for Stellar blockchain developers. Run one command to add a team of eight specialized AI agents to any project.
4
4
 
5
5
  ## Install
6
6
 
@@ -10,6 +10,22 @@ npx stellar-agent init
10
10
 
11
11
  This scaffolds a `_stellar/` directory in your project. From that point, invoke agents directly from your AI assistant (Claude Code, Cursor, Windsurf, etc.).
12
12
 
13
+ ### Pinning a version
14
+
15
+ The CLI and the skill catalog ship as one versioned package. To pin a project to a specific version of the agent team:
16
+
17
+ ```bash
18
+ npx stellar-agent@0.2.0 init # always installs v0.2.0 skills
19
+ ```
20
+
21
+ The chosen version is recorded in `_stellar/_config/manifest.yaml`. Check it any time with:
22
+
23
+ ```bash
24
+ stellar-agent version
25
+ ```
26
+
27
+ If the CLI you're running differs from the skills version recorded in your project, the command warns you and tells you how to re-pin.
28
+
13
29
  ---
14
30
 
15
31
  ## Agent Team
@@ -111,6 +127,23 @@ Local Stellar environment setup, Horizon instance management, and testnet → ma
111
127
 
112
128
  ---
113
129
 
130
+ ### 🧭 Pera — Hackathon Mentor
131
+ > `@stellar-agent-mentor`
132
+
133
+ Hackathon-arc mentor for Stellar/Soroban submissions. Scopes ideas to the timebox, picks the right track, aligns the build to judging criteria, and coaches demo and pitch. Invoked at the start of a hackathon to shape scope and at the end to ship the demo. On activation, asks for the hackathon link (Devpost / SCF / SDF URL), hours remaining, and target track — all skippable.
134
+
135
+ | Command | What it does |
136
+ |---|---|
137
+ | `IS` | Idea scoping — one-pager and cut list against the build window |
138
+ | `TR` | Track recommendation — DeFi / Payments / Identity / Gaming / RWA fit |
139
+ | `MV` | MVP definition — must-have / nice-to-have / skip split |
140
+ | `JC` | Judging criteria — map the build to the rubric |
141
+ | `DM` | Demo prep — storyboard, 2–3 min script, recording checklist |
142
+ | `PC` | Pitch coaching — deck outline and judge Q&A prep |
143
+ | `SP` | Submission prep — repo, README, demo video, contract IDs checklist |
144
+
145
+ ---
146
+
114
147
  ## Core Commands
115
148
 
116
149
  These work from any project with `_stellar/` initialized:
@@ -120,6 +153,7 @@ These work from any project with `_stellar/` initialized:
120
153
  | `stellar-help` | Browse the full skill catalog with next-step recommendations |
121
154
  | `stellar-brainstorming` | Facilitated brainstorming for project ideas, architecture, and tokenomics |
122
155
  | `stellar-party-mode` | Multi-agent roundtable — all agents in one discussion |
156
+ | `stellar-lean` | Switch the active agent into terse, result-only output mode |
123
157
 
124
158
  ---
125
159
 
@@ -136,6 +170,18 @@ These work from any project with `_stellar/` initialized:
136
170
  8. @stellar-agent-frontend → NS Next.js setup → WL wallet → SC Soroban
137
171
  ```
138
172
 
173
+ ## Hackathon Workflow
174
+
175
+ When you're building against a submission deadline, swap in Pera at the bookends:
176
+
177
+ ```
178
+ 1. @stellar-agent-mentor → IS idea scoping → TR track → MV MVP cut
179
+ 2. @stellar-agent-architect → AD architecture (lean — only what demo needs)
180
+ 3. @stellar-agent-developer → IC → WC → DC
181
+ 4. @stellar-agent-frontend → NS → WL → SC
182
+ 5. @stellar-agent-mentor → JC judging → DM demo → PC pitch → SP submit
183
+ ```
184
+
139
185
  ---
140
186
 
141
187
  ## Local Development
@@ -150,12 +196,33 @@ npm run validate:skills
150
196
  # Test CLI
151
197
  node tools/installer/stellar-cli.js --help
152
198
 
199
+ # Run the MCP server locally
200
+ npm run mcp
201
+
153
202
  # Link globally for testing in other projects
154
203
  npm link
155
204
  # then in another project:
156
205
  stellar-agent init
157
206
  ```
158
207
 
208
+ ## Releasing
209
+
210
+ CI/CD is wired up via GitHub Actions:
211
+
212
+ - **[`.github/workflows/validate.yml`](.github/workflows/validate.yml)** — runs on every push and PR to `main`: validates all skills, runs the test suite on Node 20.x and 22.x, builds the docs site, and smoke-tests the MCP server.
213
+ - **[`.github/workflows/publish.yml`](.github/workflows/publish.yml)** — runs on tags matching `v*`: re-validates, verifies the tag matches `package.json` version, publishes to npm with provenance, and creates a GitHub release.
214
+
215
+ **One-time setup**: add an `NPM_TOKEN` secret to the repo (Settings → Secrets and variables → Actions). Use a granular access token scoped to publish only the `stellar-agent` package.
216
+
217
+ **Releasing a new version**:
218
+
219
+ ```bash
220
+ npm version minor # 0.2.0 → 0.3.0 (creates commit + git tag v0.3.0)
221
+ git push --follow-tags # triggers publish.yml
222
+ ```
223
+
224
+ `prepublishOnly` runs `validate:skills && test` automatically on any `npm publish` — local or CI.
225
+
159
226
  ## Requirements
160
227
 
161
228
  - Node.js >= 20.12.0
package/package.json CHANGED
@@ -1,8 +1,14 @@
1
1
  {
2
2
  "name": "stellar-agent",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "AI agent team for Stellar blockchain developers",
5
- "keywords": ["stellar", "soroban", "blockchain", "ai", "agents"],
5
+ "keywords": [
6
+ "stellar",
7
+ "soroban",
8
+ "blockchain",
9
+ "ai",
10
+ "agents"
11
+ ],
6
12
  "license": "MIT",
7
13
  "main": "tools/installer/stellar-cli.js",
8
14
  "bin": {
@@ -10,13 +16,16 @@
10
16
  },
11
17
  "files": [
12
18
  "tools/installer/",
19
+ "tools/mcp-server/",
13
20
  "src/",
14
21
  "package.json",
15
22
  "README.md"
16
23
  ],
17
24
  "scripts": {
18
25
  "validate:skills": "node tools/validate-skills.js --strict",
19
- "test": "node test/test-installation.js"
26
+ "test": "node test/test-installation.js",
27
+ "prepublishOnly": "npm run validate:skills && npm test",
28
+ "mcp": "node tools/mcp-server/server.js"
20
29
  },
21
30
  "dependencies": {
22
31
  "@clack/core": "1.3.1",
@@ -3,3 +3,5 @@ Core,_meta,,,,,,,,,false,https://github.com/tolgazorlu/stellar-agent#readme,
3
3
  Core,stellar-brainstorming,Brainstorming,BSP,Facilitate interactive brainstorming for Stellar project ideas architecture and tokenomics design.,,,anytime,,,false,{output_folder}/brainstorming,brainstorming session
4
4
  Core,stellar-party-mode,Party Mode,PM,Orchestrate multi-agent roundtable discussions with the full Stellar Agent team.,,,anytime,,,false,,
5
5
  Core,stellar-help,Stellar Help,SH,Navigate the Stellar Agent skill catalog and get next-step recommendations.,,,anytime,,,false,,
6
+ Core,stellar-lean,Lean Mode,LN,Switch the active agent into terse result-only output — no preamble no summary no fluff.,,,anytime,,,false,,
7
+ Core,stellar-project-context,Project Context,PX,Interview the user once and produce project-context.md that every agent loads as persistent facts.,,,anytime,,,false,{project-root},project-context.md
@@ -38,6 +38,7 @@ module,skill,display-name,menu-code,description,action,args,phase,preceded-by,fo
38
38
  **Phases** determine the high-level flow:
39
39
  - `anytime` — available regardless of workflow state
40
40
  - `1-analysis` → `2-planning` → `3-architecture` → `4-implementation`
41
+ - `5-mentorship` — hackathon-arc guidance (idea scoping → submission), wraps the build phases
41
42
 
42
43
  **Required gates**: `required=true` items must complete before the user can meaningfully proceed.
43
44
 
@@ -50,10 +51,14 @@ Always tell the user which agent to invoke for a skill:
50
51
  - Phase 2 skills → `@stellar-pm` (Kai)
51
52
  - Phase 3 skills → `@stellar-architect` (Nova)
52
53
  - Phase 4 contract skills → `@stellar-developer` (Sol)
54
+ - Phase 4 frontend skills → `@stellar-frontend` (Lyra)
53
55
  - Phase 4 test skills → `@stellar-qa` (Vera)
54
56
  - Phase 4 devops/env skills → `@stellar-devops` (Orion)
57
+ - Phase 5 mentorship skills → `@stellar-mentor` (Pera)
55
58
  - Brainstorming/party → any agent or direct invocation
56
59
 
60
+ If the user mentions a hackathon, deadline, demo, pitch, or submission, recommend Pera first regardless of phase.
61
+
57
62
  ## Response Format
58
63
 
59
64
  For each recommended item, present:
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: stellar-lean
3
+ description: 'Switch the active agent into terse, result-only output mode. Suppresses preamble, summary, hedging, and conversational fluff — only the artifact. Use when the user types stellar-lean, /lean, --lean, "be terse", "less talk", "just the code", "result only", or asks for Karpathy-style minimal output.'
4
+ ---
5
+
6
+ # Lean Mode
7
+
8
+ Output the artifact. Skip everything else.
9
+
10
+ ## On Activation
11
+
12
+ Acknowledge with one line: `Lean mode on.`
13
+
14
+ Then, for the rest of the session, follow the rules below.
15
+
16
+ ## Output rules
17
+
18
+ | Ask | Output |
19
+ |---|---|
20
+ | "Write X" | The code. No preamble. |
21
+ | "Fix the bug" | The diff. No "I found that…". |
22
+ | "Explain X" | ≤ 3 sentences. No headers. |
23
+ | Yes/no | "Yes" or "No" + one clause. |
24
+ | Command-style ask | The command. Copy-pasteable. One line. |
25
+ | "Compare A vs B" | One table. No prose intro. |
26
+
27
+ ## Forbidden phrases
28
+
29
+ - `Let me…` · `I'll start by…` · `Now let me…` · `First I'll…`
30
+ - `Here's what I did:` · `I've completed…` · `To summarize…`
31
+ - `Let me know if…` · `Hope this helps!` · `Happy to…`
32
+ - `Great question!` · `Of course!` · `Certainly!`
33
+ - Bullet-point recap of code you just wrote
34
+ - Emojis (unless the user used them first)
35
+ - Headers for ≤ 1-paragraph answers
36
+
37
+ ## Forbidden patterns
38
+
39
+ - **Narrating tool calls.** Don't say "Now I'll read the file." Just read it.
40
+ - **Trailing summaries.** Don't end with "Done. The function now does X." The diff is the summary.
41
+ - **Hedge clauses.** No "It might be worth considering…" → say "Do X." or don't say it.
42
+ - **Pre-emptive caveats.** Add caveats only when they change the answer.
43
+
44
+ ## Code output
45
+
46
+ ```
47
+ <the code>
48
+ ```
49
+
50
+ That's it. No paragraph above. No paragraph below.
51
+
52
+ If the user wants explanation, they'll ask.
53
+
54
+ ## File edits
55
+
56
+ Show the diff. Don't restate what changed in prose.
57
+
58
+ ## When the user is wrong
59
+
60
+ Say so in one sentence. Then give the right answer. Don't apologize for correcting.
61
+
62
+ ## Exit
63
+
64
+ Stay lean until the user says `stellar-verbose`, `verbose mode`, `explain more`, or `back to normal`. Then drop the constraints.
65
+
66
+ ## Why
67
+
68
+ LLM output bloats by default. Every "Let me…", every recap, every "Happy to help!" costs tokens the user paid for and attention they can't reclaim. Lean mode trades politeness for signal. Use it when the user is in flow and wants the next artifact, not a conversation.
69
+
70
+ Modeled on Karpathy's framing: skills should be opinionated execution, not narrated process.
@@ -46,7 +46,8 @@ Choose 2-4 agents whose expertise is most relevant. Guidelines:
46
46
  - **Smart contract question** → Sol (developer) + Nova (architect) always, add Vera (QA) if testing is in scope
47
47
  - **Product/user question** → Kai (PM) + Aria (analyst), add Nova for technical feasibility
48
48
  - **Deployment/ops question** → Orion (devops) + Sol (developer)
49
- - **Strategic question** → All six for a full roundtable
49
+ - **Hackathon / demo / pitch / submission question** → Pera (mentor) + Kai (PM), add Sol or Nova if technical scope matters
50
+ - **Strategic question** → All seven for a full roundtable
50
51
  - **User names specific agents** → Include those plus 1-2 complementary voices
51
52
 
52
53
  ### 2. Build Context and Spawn
@@ -0,0 +1,152 @@
1
+ ---
2
+ name: stellar-project-context
3
+ description: 'Interview the user once and produce a project-context.md that every Stellar Agent loads as persistent_facts. Captures product intent, users, on-chain primitives, deployment targets, and constraints. Use when the user starts a new project, asks "what is project-context.md", any agent detects project-context.md is missing, or the user wants to refresh project context.'
4
+ ---
5
+
6
+ # Project Context Generator
7
+
8
+ ## Purpose
9
+
10
+ Every Stellar Agent loads `**/project-context.md` as a persistent fact on activation. When that file doesn't exist, agents respond with generic priors instead of project-specific knowledge. This skill produces the file once — durable across sessions, readable by all agents.
11
+
12
+ ## On Activation
13
+
14
+ Resolve config from `{project-root}/_stellar/stellar/config.yaml` and `{project-root}/_stellar/core/config.yaml`. Capture: `{user_name}`, `{project_name}`, `{network_preference}`, `{primary_language}`.
15
+
16
+ Check if `{project-root}/project-context.md` already exists.
17
+
18
+ - If yes → ask: *"Project context exists. Refresh it, or just review what's there?"*
19
+ - If no → start the interview.
20
+
21
+ ## Workflow
22
+
23
+ ### Step 1: The 7-Question Interview
24
+
25
+ Ask the user 7 questions. Each one has a default — they can say `skip` to accept the default. Conduct as a single block, not one at a time.
26
+
27
+ ```
28
+ 1. **One-sentence elevator pitch.** What does this project do?
29
+ (Default: pulled from {project_name} if descriptive enough.)
30
+
31
+ 2. **Primary user.** Who uses this? Name a persona, not "everyone".
32
+ (Default: "Stellar developers" if it's a dev tool, else "skip".)
33
+
34
+ 3. **Primary on-chain action.** What's the one transaction the user signs that delivers the core value?
35
+ (Default: "skip" — but flag that downstream skills work better with this filled in.)
36
+
37
+ 4. **Stellar primitives used.** Pick all that apply: Soroban contracts · Classic payments · Custom assets · Trustlines · Anchors (SEP-24/SEP-31) · SEP-10 auth · AMM pools · Path payments.
38
+ (Default: infer from {primary_language} — Rust → Soroban; TS → Classic + Soroban via SDK.)
39
+
40
+ 5. **Deployment target(s).** Testnet · Mainnet · Both · Futurenet.
41
+ (Default: {network_preference}.)
42
+
43
+ 6. **Hard constraints.** Anything the build *cannot* do (regulatory, technical, time, team size)?
44
+ (Default: "skip" — but useful for agents to know.)
45
+
46
+ 7. **Success in 30 days.** What's the one metric or milestone you'd celebrate?
47
+ (Default: "skip" — but useful for prioritization.)
48
+ ```
49
+
50
+ Record raw answers. Don't paraphrase yet.
51
+
52
+ ### Step 2: Write the File
53
+
54
+ Render the answers to `{project-root}/project-context.md`:
55
+
56
+ ```markdown
57
+ # Project Context — {project_name}
58
+
59
+ > This file is read by every Stellar Agent on activation. Keep it ≤ 200 lines.
60
+ > Last updated: <YYYY-MM-DD>
61
+
62
+ ## Elevator pitch
63
+
64
+ <one sentence from Q1>
65
+
66
+ ## Primary user
67
+
68
+ <from Q2>
69
+
70
+ ## Primary on-chain action
71
+
72
+ <from Q3>
73
+
74
+ ## Stellar stack
75
+
76
+ - **Primitives:** <comma-separated list from Q4>
77
+ - **Network:** <from Q5>
78
+ - **Primary language:** {primary_language}
79
+
80
+ ## Constraints
81
+
82
+ <from Q6 — bullets if multiple>
83
+
84
+ ## Success criteria (30-day horizon)
85
+
86
+ <from Q7>
87
+
88
+ ## Project state
89
+
90
+ - Phase: <inferred — analysis | planning | architecture | implementation | mentorship>
91
+ - Started: <YYYY-MM-DD>
92
+ - Lead: {user_name}
93
+
94
+ ## Glossary
95
+
96
+ <Optional. Domain-specific terms that recur in the codebase. Add as the project grows.>
97
+ ```
98
+
99
+ ### Step 3: Suggest Where It Goes
100
+
101
+ By default, save at `{project-root}/project-context.md`. This is the path that matches the glob `**/project-context.md` every agent loads.
102
+
103
+ If the user has multiple sub-projects in a monorepo, save under each: `{sub-project}/project-context.md`. The glob picks up all of them; agents load whichever is nearest.
104
+
105
+ ### Step 4: Confirm and Wire
106
+
107
+ Show the rendered file to the user. Ask: *"Save this?"*
108
+
109
+ If yes:
110
+ - Write the file
111
+ - Confirm path
112
+ - Suggest the user `git add` and commit it (this is durable project state, should be in version control)
113
+
114
+ ### Step 5: Refresh Trigger
115
+
116
+ `project-context.md` decays. When any of these happens, agents should suggest re-running this skill:
117
+
118
+ - The hackathon brief locks in a different track or scope
119
+ - The primary on-chain action changes
120
+ - A contract gets deployed to mainnet (state change)
121
+ - A new team member joins
122
+ - The user explicitly says "we pivoted"
123
+
124
+ Re-running this skill regenerates the file with a new `Last updated` date. Old content can be preserved in a `## History` section if the user wants.
125
+
126
+ ## Anti-patterns to flag
127
+
128
+ - **Long, prose-heavy context files.** Keep it ≤ 200 lines. Agents read this every time — verbose = expensive.
129
+ - **Capturing implementation details.** That's what `{implementation_artifacts}` is for. This file is intent, not implementation.
130
+ - **Skipping Q3 (primary on-chain action).** This is the single most useful field for Sol, Nova, and Pera. Push back on `skip` here.
131
+ - **Filling in defaults blindly.** If the user says `skip` to all 7, write a file with `[unknown]` placeholders and tell them to refresh later.
132
+
133
+ ## Why this matters
134
+
135
+ Every agent's `persistent_facts` includes:
136
+ ```toml
137
+ persistent_facts = [
138
+ "file:{project-root}/**/project-context.md",
139
+ ]
140
+ ```
141
+
142
+ Without this file, agents fall back to generic Stellar priors — they don't know your network, your users, your scope. A 100-line context file shifts every subsequent agent response from generic to project-specific. Cheap to write once, compounds across every interaction.
143
+
144
+ ## Output
145
+
146
+ `{project-root}/project-context.md` — single file, version-controlled, loaded by every agent.
147
+
148
+ ## Next Steps
149
+
150
+ - `@stellar-agent-pm` (Kai) — turn the elevator pitch into a project brief (PB)
151
+ - `@stellar-agent-architect` (Nova) — architecture from the primary on-chain action
152
+ - `@stellar-agent-mentor` (Pera) — if there's a deadline, hackathon arc starts here
@@ -39,3 +39,8 @@ skill = "stellar-analytics"
39
39
  code = "DR"
40
40
  description = "Research Stellar domain — protocol specifics, regulatory landscape, use cases"
41
41
  skill = "stellar-domain-research"
42
+
43
+ [[agent.menu]]
44
+ code = "KA"
45
+ description = "Known Assets Registry — canonical issuer addresses for USDC, EURC, AQUA, yXLM with verification commands"
46
+ skill = "stellar-known-assets"
@@ -0,0 +1,125 @@
1
+ ---
2
+ name: stellar-known-assets
3
+ description: 'Look up canonical Stellar asset issuer addresses (USDC, EURC, AQUA, yXLM, etc.) with provenance and verification commands. Prevents LLM hallucination of issuer addresses. Use when the user references a Stellar asset by code (USDC, EURC, AQUA), needs to create a trustline, builds a path payment, or any task that requires a verified issuer address.'
4
+ ---
5
+
6
+ # Known Assets Registry
7
+
8
+ ## Purpose
9
+
10
+ Stop the LLM from inventing Stellar asset issuer addresses. Every well-known Stellar asset (USDC, EURC, AQUA, yXLM, etc.) has a specific 56-character issuer address — using the wrong one silently breaks trustlines and burns user funds.
11
+
12
+ ## Hard rule
13
+
14
+ **Never write a Stellar issuer address from memory.** Always either:
15
+ 1. Look it up in the registry below.
16
+ 2. Verify with one of the verification commands.
17
+ 3. Refuse to fill it in and ask the user to provide it.
18
+
19
+ If a value is not in this file and not provided by the user, output a placeholder like `<USDC_ISSUER>` and tell the user to fill it in — do not guess.
20
+
21
+ ## Mainnet (public network)
22
+
23
+ > Last verified: 2025-06-01. Always verify against [stellar.expert/explorer/public/assets](https://stellar.expert/explorer/public/assets) before mainnet deployment.
24
+
25
+ | Code | Issuer | Custodian | Notes |
26
+ |---|---|---|---|
27
+ | `USDC` | `GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN` | Circle | Native USDC on Stellar. Source: [circle.com/multi-chain-usdc/stellar](https://www.circle.com/multi-chain-usdc/stellar) |
28
+ | `EURC` | `GDHU6WRG4IEQXM5NZ4BMPKOXHW76MZM4Y2IEMFDVXBSDP6SJY4ITNPP2` | Circle | Native EURC. Source: [circle.com/multi-chain-eurc/stellar](https://www.circle.com/multi-chain-eurc/stellar) |
29
+ | `AQUA` | `GBNZILSTVQZ4R7IKQDGHYGY2QXL5QOFJYQMXPKWRRM5PAV7Y4M67AQUA` | Aquarius | Governance token for Aquarius DEX. **Verify before use.** |
30
+ | `yXLM` | `GARDNV3Q7YGT4AKSDF25LT32YSCCW4EV22Y2TV3I2PU2MMXJTEDL5T55` | Ultra Stellar | Yield-bearing XLM. **Verify before use.** |
31
+ | `XLM` | *(native)* | Stellar protocol | Native asset — no issuer. Use `Asset.native()` in the SDK. |
32
+
33
+ **For any asset not listed above**: tell the user "I don't have a verified issuer for `<CODE>`. Look it up at https://stellar.expert/explorer/public/assets and paste the issuer."
34
+
35
+ ## Testnet
36
+
37
+ > Testnet issuers are different from mainnet. Never copy a mainnet issuer to testnet.
38
+
39
+ | Code | Issuer | Notes |
40
+ |---|---|---|
41
+ | `USDC` | `GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH37Y2QJU2` | Circle testnet USDC. Source: [circle.com/multi-chain-usdc/stellar](https://www.circle.com/multi-chain-usdc/stellar) (toggle to testnet) |
42
+ | `XLM` | *(native)* | Same on every network. Use `Asset.native()`. |
43
+
44
+ For testnet custom assets, the user typically creates their own issuer with `stellar keys generate`. Look in `{implementation_artifacts}/asset-config.md` for project-specific issuers.
45
+
46
+ ## Futurenet
47
+
48
+ Futurenet is reset periodically — there are no stable canonical issuers. Always create a fresh issuer or ask the user.
49
+
50
+ ## Verification commands
51
+
52
+ Before using any address from this file in a transaction that moves real funds, run one of these:
53
+
54
+ ### Verify against stellar.expert
55
+
56
+ ```bash
57
+ # Replace ISSUER with the address from the table
58
+ curl -s "https://api.stellar.expert/explorer/public/asset/USDC-ISSUER" | jq '.code, .issuer, .domain'
59
+
60
+ # Expected output for USDC mainnet:
61
+ # "USDC"
62
+ # "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN"
63
+ # "centre.io"
64
+ ```
65
+
66
+ ### Verify via SEP-1 (`stellar.toml`)
67
+
68
+ For any asset, the issuer's `stellar.toml` is the canonical source. Find the domain via `home_domain` on the issuer account:
69
+
70
+ ```bash
71
+ stellar account inspect <ISSUER_ADDRESS> --network public | grep home_domain
72
+
73
+ # Then fetch the toml:
74
+ curl -s "https://${HOME_DOMAIN}/.well-known/stellar.toml" | grep -A 3 "CURRENCIES"
75
+ ```
76
+
77
+ ### Verify via Horizon
78
+
79
+ ```bash
80
+ # Check the issuer account exists and is configured as an issuer
81
+ curl -s "https://horizon.stellar.org/accounts/<ISSUER>" | jq '.flags, .home_domain'
82
+
83
+ # auth_required = true means it's an issuer that gates trustlines
84
+ # home_domain links to the stellar.toml
85
+ ```
86
+
87
+ ## When to refuse to answer
88
+
89
+ If the user asks you to write code that includes a custom-asset issuer and:
90
+
91
+ 1. The asset is **not in this file**, AND
92
+ 2. The user has **not provided** the issuer in conversation or in `{implementation_artifacts}/asset-config.md`
93
+
94
+ → Refuse to fill in the issuer. Output a placeholder and request the address explicitly:
95
+
96
+ ```
97
+ const USDC = new Asset(
98
+ 'USDC',
99
+ '<FILL_IN_USDC_ISSUER>' // Verify at https://stellar.expert/explorer/public/assets
100
+ );
101
+ ```
102
+
103
+ Tell the user: *"I don't have a verified issuer for `<CODE>` on this network. Paste the issuer address from stellar.expert and I'll wire it in."*
104
+
105
+ ## How to extend this file
106
+
107
+ When a maintainer wants to add a new asset:
108
+
109
+ 1. Verify the issuer via `stellar.expert` AND `stellar.toml` AND Horizon.
110
+ 2. Add a row to the table with the **source link** (not just the address).
111
+ 3. Bump the "Last verified" date at the top of the section.
112
+ 4. If the asset is well-known (top 20 by holders), no further review needed. If niche, also note who uses it.
113
+
114
+ ## Output
115
+
116
+ This skill is reference-only — no artifacts written. It exists to be loaded into context when other skills need an issuer address.
117
+
118
+ ## Used by
119
+
120
+ - `stellar-create-transaction` (Sol `TX`) — path payments, asset transfers
121
+ - `stellar-create-asset` (Sol `CA`) — when comparing to existing issuers
122
+ - `stellar-setup-trustline` (Sol `TL`) — never create a trustline to an unverified issuer
123
+ - `stellar-liquidity-pool` (Sol `LP`) — both pool tokens must be verified
124
+ - `stellar-market-research` (Aria `MR`) — market caps by asset
125
+ - `stellar-tokenomics-analysis` (Aria `TA`) — comparable asset designs
@@ -20,6 +20,11 @@ principles = [
20
20
  "stellar doctor before asking the community.",
21
21
  ]
22
22
 
23
+ [[agent.menu]]
24
+ code = "SD"
25
+ description = "Stellar Doctor — diagnose toolchain, network, wallet, contract state, and project context"
26
+ skill = "stellar-doctor"
27
+
23
28
  [[agent.menu]]
24
29
  code = "SE"
25
30
  description = "Set up local Stellar development environment with Docker quickstart bundle"