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.
- package/README.md +68 -1
- package/package.json +12 -3
- package/src/core-skills/module-help.csv +2 -0
- package/src/core-skills/stellar-help/SKILL.md +5 -0
- package/src/core-skills/stellar-lean/SKILL.md +70 -0
- package/src/core-skills/stellar-party-mode/SKILL.md +2 -1
- package/src/core-skills/stellar-project-context/SKILL.md +152 -0
- package/src/stellar-skills/1-analysis/stellar-agent-analyst/customize.toml +5 -0
- package/src/stellar-skills/1-analysis/stellar-known-assets/SKILL.md +125 -0
- package/src/stellar-skills/4-implementation/stellar-agent-devops/customize.toml +5 -0
- package/src/stellar-skills/4-implementation/stellar-doctor/SKILL.md +207 -0
- package/src/stellar-skills/5-mentorship/stellar-agent-mentor/SKILL.md +60 -0
- package/src/stellar-skills/5-mentorship/stellar-agent-mentor/customize.toml +56 -0
- package/src/stellar-skills/5-mentorship/stellar-demo-prep/SKILL.md +139 -0
- package/src/stellar-skills/5-mentorship/stellar-idea-scoping/SKILL.md +125 -0
- package/src/stellar-skills/5-mentorship/stellar-judging-criteria/SKILL.md +119 -0
- package/src/stellar-skills/5-mentorship/stellar-mvp-definition/SKILL.md +124 -0
- package/src/stellar-skills/5-mentorship/stellar-pitch-coaching/SKILL.md +150 -0
- package/src/stellar-skills/5-mentorship/stellar-submission-prep/SKILL.md +234 -0
- package/src/stellar-skills/5-mentorship/stellar-track-recommendation/SKILL.md +97 -0
- package/src/stellar-skills/module-help.csv +9 -0
- package/src/stellar-skills/module.yaml +7 -0
- package/tools/installer/commands/init.js +31 -2
- package/tools/installer/commands/mcp.js +38 -0
- package/tools/installer/commands/version.js +42 -0
- package/tools/installer/stellar-cli.js +1 -1
- 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.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "AI agent team for Stellar blockchain developers",
|
|
5
|
-
"keywords": [
|
|
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
|
-
- **
|
|
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"
|