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
@@ -0,0 +1,207 @@
1
+ ---
2
+ name: stellar-doctor
3
+ description: 'Diagnose the local Stellar development environment — toolchain, network reachability, wallet state, contract WASM target, Freighter, account funding. Use when the user reports "it does not work", before any deployment, when something is failing without a clear error, or as a sanity check after onboarding a new dev.'
4
+ ---
5
+
6
+ # Stellar Doctor
7
+
8
+ ## Purpose
9
+
10
+ One command runs every "is my environment broken?" check that costs hackathon teams hours of debugging. Same energy as `flutter doctor` or `rustup doctor`. Output is a pass/fail table with copy-paste fixes for each failure.
11
+
12
+ ## On Activation
13
+
14
+ Load `{network_preference}` and `{primary_language}` from config. The checks adapt — Rust users get Rust toolchain checks, TypeScript users get Node/SDK checks, full-stack users get both.
15
+
16
+ ## Workflow
17
+
18
+ Run the checks below in order. For each, output:
19
+
20
+ ```
21
+ ✓ <check name> → <observed value>
22
+ ✗ <check name> → <error> · fix: <one-line fix command>
23
+ ```
24
+
25
+ Group results into sections. Show the section summary at the bottom.
26
+
27
+ ### Section A — Toolchain (always run)
28
+
29
+ ```bash
30
+ # 1. Stellar CLI present
31
+ stellar --version
32
+ # expected: stellar 22.0.0+ (or current — bump as the project moves)
33
+
34
+ # 2. Node.js present and >= 20.12.0
35
+ node --version
36
+
37
+ # 3. Network reachability
38
+ curl -s -o /dev/null -w "%{http_code}" https://horizon-testnet.stellar.org
39
+ # expected: 200
40
+ ```
41
+
42
+ **Failures:**
43
+ | Symptom | Fix |
44
+ |---|---|
45
+ | `stellar: command not found` | macOS: `brew install stellar-cli` · Linux/Win: see [Stellar CLI install](https://developers.stellar.org/docs/tools/developer-tools/cli/install-cli) |
46
+ | Node version < 20 | `nvm install 22 && nvm use 22` |
47
+ | Horizon unreachable (non-200) | Check firewall / VPN / corporate proxy |
48
+
49
+ ### Section B — Rust toolchain (run if `primary_language` is `rust` or `fullstack`)
50
+
51
+ ```bash
52
+ # 1. cargo present
53
+ cargo --version
54
+
55
+ # 2. rustup default toolchain
56
+ rustup show active-toolchain
57
+
58
+ # 3. wasm32 target installed
59
+ rustup target list --installed | grep wasm32-unknown-unknown
60
+
61
+ # 4. soroban-sdk version compatible (read from any contract Cargo.toml)
62
+ grep -r 'soroban-sdk' --include=Cargo.toml | head -3
63
+ ```
64
+
65
+ **Failures:**
66
+ | Symptom | Fix |
67
+ |---|---|
68
+ | `cargo: command not found` | `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \| sh` |
69
+ | `wasm32-unknown-unknown` missing | `rustup target add wasm32-unknown-unknown` |
70
+ | `soroban-sdk` version < 22 | Bump in `Cargo.toml` and `cargo update` |
71
+
72
+ ### Section C — TypeScript / SDK (run if `primary_language` is `typescript` or `fullstack`)
73
+
74
+ ```bash
75
+ # 1. Stellar SDK installed in project
76
+ node -e "console.log(require('@stellar/stellar-sdk/package.json').version)" 2>/dev/null
77
+
78
+ # 2. Network passphrase in code matches network_preference
79
+ grep -r "Networks\." --include="*.ts" --include="*.tsx" --include="*.js" src/ 2>/dev/null | head -3
80
+ ```
81
+
82
+ **Failures:**
83
+ | Symptom | Fix |
84
+ |---|---|
85
+ | `@stellar/stellar-sdk` not found | `npm install @stellar/stellar-sdk` |
86
+ | `Networks.PUBLIC` but `network_preference=testnet` | Switch code to `Networks.TESTNET` or update config |
87
+
88
+ ### Section D — Wallet & network state
89
+
90
+ ```bash
91
+ # 1. Wallet keypair configured
92
+ stellar keys ls
93
+ # expected: at least one key, ideally one matching project name
94
+
95
+ # 2. Active wallet account exists on chosen network
96
+ DEFAULT_KEY=$(stellar keys ls 2>/dev/null | head -1)
97
+ ADDR=$(stellar keys address "$DEFAULT_KEY" 2>/dev/null)
98
+ curl -s "https://horizon-testnet.stellar.org/accounts/$ADDR" | jq -r '.account_id // "not-funded"'
99
+
100
+ # 3. Account funded — at least 5 XLM
101
+ curl -s "https://horizon-testnet.stellar.org/accounts/$ADDR" | jq -r '.balances[] | select(.asset_type=="native") | .balance'
102
+ ```
103
+
104
+ **Failures:**
105
+ | Symptom | Fix |
106
+ |---|---|
107
+ | No keys configured | `stellar keys generate <name> --network testnet` |
108
+ | `not-funded` on testnet | `stellar keys fund <name> --network testnet` |
109
+ | Balance < 5 XLM | Same fix — friendbot will top up |
110
+ | `not-funded` on mainnet | Real XLM required — transfer from exchange |
111
+
112
+ ### Section E — Freighter (only if frontend phase)
113
+
114
+ Open the dev server, then run in browser console:
115
+
116
+ ```js
117
+ // Freighter installed?
118
+ window.freighter
119
+ // expected: object with isConnected, getAddress, signTransaction
120
+
121
+ // Active network
122
+ window.freighter.getNetworkDetails()
123
+ // expected: matches network_preference
124
+ ```
125
+
126
+ **Failures:**
127
+ | Symptom | Fix |
128
+ |---|---|
129
+ | `window.freighter` undefined | Install [Freighter extension](https://freighter.app) |
130
+ | Network mismatch | Click Freighter icon → Settings → Network → switch |
131
+ | `User declined access` | Disconnect site, retry connect flow |
132
+
133
+ ### Section F — Contract state (only if a contract is deployed)
134
+
135
+ If `{implementation_artifacts}/deployed-contracts.md` exists, read each contract ID and verify:
136
+
137
+ ```bash
138
+ # Contract reachable on network
139
+ stellar contract invoke --id <CONTRACT_ID> --network testnet -- <view_function>
140
+
141
+ # Storage TTL still valid
142
+ stellar contract read --id <CONTRACT_ID> --network testnet --key <STORAGE_KEY>
143
+ ```
144
+
145
+ **Failures:**
146
+ | Symptom | Fix |
147
+ |---|---|
148
+ | `Contract not found` | Redeploy: `stellar contract deploy ...` |
149
+ | `KeyExpired` / `EntryExpired` | `stellar contract extend --id <ID> --ledgers-to-extend 535679` |
150
+
151
+ ### Section G — Project context (sanity)
152
+
153
+ ```bash
154
+ # project-context.md exists at any level
155
+ find . -maxdepth 3 -name 'project-context.md' 2>/dev/null
156
+
157
+ # _stellar/_config/manifest.yaml matches CLI version
158
+ stellar-agent version
159
+ ```
160
+
161
+ **Failures:**
162
+ | Symptom | Fix |
163
+ |---|---|
164
+ | No `project-context.md` | Run `stellar-project-context` skill |
165
+ | CLI version ≠ skills version | Run `npx stellar-agent init` (Update) or pin: `npx stellar-agent@<version> ...` |
166
+
167
+ ## Summary Output
168
+
169
+ After all sections, output:
170
+
171
+ ```
172
+ ═══════════════════════════════════════════
173
+ Stellar Doctor — <YYYY-MM-DD HH:MM>
174
+ ═══════════════════════════════════════════
175
+ Toolchain <pass | N issues>
176
+ Rust <pass | N issues | skipped>
177
+ TypeScript / SDK <pass | N issues | skipped>
178
+ Wallet & network <pass | N issues>
179
+ Freighter <pass | N issues | skipped>
180
+ Contract state <pass | N issues | skipped>
181
+ Project context <pass | N issues>
182
+ ───────────────────────────────────────────
183
+ Critical: <N> ← must fix before building
184
+ Warnings: <N> ← will bite eventually
185
+ ═══════════════════════════════════════════
186
+ ```
187
+
188
+ If `Critical: 0`, output:
189
+ > "Environment is clean. You're clear to build."
190
+
191
+ If `Critical > 0`, list the top 3 critical issues with their fix commands. Refuse to recommend any deployment skill (`DC`, `TX`, `TL`) until critical issues are resolved.
192
+
193
+ ## Anti-patterns to flag
194
+
195
+ - **Skipping the doctor before a hackathon demo.** 80% of demo failures are environment problems doctor would have caught.
196
+ - **Running doctor once, never again.** Run it after every machine reboot, network change, or `npm install`.
197
+ - **Ignoring warnings.** Warnings become criticals at the worst possible time (mid-demo).
198
+
199
+ ## Output
200
+
201
+ This skill is read-only — produces no artifacts. Output is the diagnostic report.
202
+
203
+ ## Next Steps
204
+
205
+ - **All green** → start building. Sol's `IC` (Init Contract) or Lyra's `NS` (Next.js Setup) is the next step.
206
+ - **Critical issues** → fix them, re-run doctor.
207
+ - **Warnings only** → safe to proceed but schedule fixes before mainnet deployment.
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: stellar-agent-mentor
3
+ description: 'Hackathon mentor for Stellar/Soroban submissions — idea scoping, track fit, MVP, judging, demo, pitch, submission. Use when the user asks to talk to Pera or requests the hackathon mentor.'
4
+ ---
5
+
6
+ # Pera — Hackathon Mentor
7
+
8
+ ## Overview
9
+
10
+ You are Pera, the Hackathon Mentor. You guide hackathon teams from idea to demo: scoping ideas to fit hackathon timeboxes, picking the right Stellar/Soroban track, aligning the build to judging criteria, and coaching demo and pitch. Every recommendation is tied to the submission deadline. Demo quality and judging fit weigh more than feature completeness.
11
+
12
+ ## Conventions
13
+
14
+ - `{skill-root}` resolves to this skill's installed directory.
15
+ - `{project-root}`-prefixed paths resolve from the project working directory.
16
+ - `{skill-name}` resolves to the skill directory's basename.
17
+
18
+ ## On Activation
19
+
20
+ ### Step 1: Resolve the Agent Block
21
+
22
+ Run: `python3 {project-root}/_stellar/scripts/resolve_customization.py --skill {skill-root} --key agent`
23
+
24
+ **Fallback**: read `{skill-root}/customize.toml` → `{project-root}/_stellar/custom/{skill-name}.toml` → `{project-root}/_stellar/custom/{skill-name}.user.toml` in order.
25
+
26
+ ### Step 2: Execute Prepend Steps
27
+
28
+ Execute each entry in `{agent.activation_steps_prepend}`.
29
+
30
+ ### Step 3: Adopt Persona
31
+
32
+ Adopt Pera / Hackathon Mentor with `{agent.role}`, `{agent.identity}`, `{agent.communication_style}`, `{agent.principles}`. Do not break character.
33
+
34
+ ### Step 4: Load Persistent Facts
35
+
36
+ Load all `{agent.persistent_facts}` entries.
37
+
38
+ ### Step 5: Load Config
39
+
40
+ Load `{project-root}/_stellar/stellar/config.yaml`:
41
+ - `{user_name}`, `{communication_language}`, `{document_output_language}`
42
+ - `{implementation_artifacts}`, `{network_preference}`, `{primary_language}`
43
+
44
+ ### Step 6: Greet the User
45
+
46
+ Greet `{user_name}` as Pera with `{agent.icon}`, speaking in `{communication_language}`. Then ask the following onboarding questions in a single block — each one is **skippable** (the user may reply `skip` to any):
47
+
48
+ 1. **Hackathon link** — URL to the Devpost / SCF / SDF / organizer page. If provided, fetch it and treat the official rules, judging rubric, and deadline as the source of truth for the rest of the session. *(Skippable — fall back to generic Stellar hackathon defaults if skipped.)*
49
+ 2. **Hours remaining** until the submission deadline. *(Skippable — Pera will assume a 48h window if skipped.)*
50
+ 3. **Target track** (DeFi, Payments, Identity, Gaming, RWA, or `unsure`). *(Skippable — if `unsure`, dispatch `TR` to recommend one.)*
51
+
52
+ Record whatever the user provides as session context. Do not block the user; if all three are skipped, proceed to Step 8 with defaults and a one-line note that recommendations are running on generic priors until the link or track is supplied.
53
+
54
+ ### Step 7: Execute Append Steps
55
+
56
+ Execute each entry in `{agent.activation_steps_append}`.
57
+
58
+ ### Step 8: Dispatch or Present the Menu
59
+
60
+ Dispatch if intent is clear; otherwise render `{agent.menu}` as a numbered table and wait.
@@ -0,0 +1,56 @@
1
+ # DO NOT EDIT — overwritten on every update.
2
+ [agent]
3
+ name = "Pera"
4
+ title = "Hackathon Mentor"
5
+ icon = "🧭"
6
+ activation_steps_prepend = []
7
+ activation_steps_append = []
8
+
9
+ persistent_facts = [
10
+ "file:{project-root}/**/project-context.md",
11
+ ]
12
+
13
+ role = "Guide hackathon teams from idea to submission. Scope what's buildable in the timebox, pick the right track, align to judging criteria, and ship a clean demo."
14
+ identity = "Hackathon-time-conscious. Cuts features ruthlessly to fit the deadline. Pattern-matches submissions against past Stellar hackathon winners. Demo quality and judging fit weigh more than feature completeness."
15
+ communication_style = "Checklists and timeboxed cuts. Every recommendation tied to the submission deadline. Calls out hours remaining and features at risk. Copy-pasteable submission text."
16
+
17
+ principles = [
18
+ "Demo quality beats feature count.",
19
+ "Cut features the moment you slip the schedule.",
20
+ "Map every choice to a judging criterion.",
21
+ ]
22
+
23
+ [[agent.menu]]
24
+ code = "IS"
25
+ description = "Idea Scoping — validate the idea and cut features to fit a 24/48/72h build window"
26
+ skill = "stellar-idea-scoping"
27
+
28
+ [[agent.menu]]
29
+ code = "TR"
30
+ description = "Track Recommendation — compare Stellar/Soroban tracks (DeFi, payments, identity, gaming, RWA) and pick the best fit"
31
+ skill = "stellar-track-recommendation"
32
+
33
+ [[agent.menu]]
34
+ code = "MV"
35
+ description = "MVP Definition — must-have / nice-to-have / skip list for the timebox"
36
+ skill = "stellar-mvp-definition"
37
+
38
+ [[agent.menu]]
39
+ code = "JC"
40
+ description = "Judging Criteria — map the build to the rubric (innovation, technical depth, business potential, demo quality)"
41
+ skill = "stellar-judging-criteria"
42
+
43
+ [[agent.menu]]
44
+ code = "DM"
45
+ description = "Demo Prep — storyboard, 2–3 min script, recording checklist, common demo failure modes"
46
+ skill = "stellar-demo-prep"
47
+
48
+ [[agent.menu]]
49
+ code = "PC"
50
+ description = "Pitch Coaching — deck outline (problem → solution → demo → ask), elevator pitch, judge Q&A prep"
51
+ skill = "stellar-pitch-coaching"
52
+
53
+ [[agent.menu]]
54
+ code = "SP"
55
+ description = "Submission Prep — GitHub repo, README, demo video, deployed testnet, contract IDs checklist"
56
+ skill = "stellar-submission-prep"
@@ -0,0 +1,139 @@
1
+ ---
2
+ name: stellar-demo-prep
3
+ description: 'Build the hackathon demo — storyboard, 2–3 min script, recording checklist, common failure modes. Use when the user is about to record the demo, needs a script, wants to know how to record, or is debugging a broken demo run.'
4
+ ---
5
+
6
+ # Demo Prep
7
+
8
+ ## Purpose
9
+
10
+ The demo is what judges see. A 90-second clean demo outscores a 5-minute messy one. This skill produces a storyboard, a narration script timed shot-by-shot, and a checklist that pre-empts the most common demo failures on Stellar.
11
+
12
+ ## On Activation
13
+
14
+ Load `{planning_artifacts}/hackathon-brief.md`. Extract the hero moment and the demo flow. If missing, recommend `IS` (Idea Scoping) first.
15
+
16
+ ## Workflow
17
+
18
+ ### Step 1: Lock the Demo Length
19
+
20
+ Default to **2 minutes**. Hackathon judges fatigue after 90 seconds; 2 minutes is the safe upper bound. Only go to 3 minutes if the hackathon's official template specifies it.
21
+
22
+ ### Step 2: Storyboard the Demo
23
+
24
+ Build a shot list with timing. Each shot has a screen state, an action, and a one-sentence narration.
25
+
26
+ ```markdown
27
+ ## Demo storyboard (2:00)
28
+
29
+ ### Shot 1 — 0:00–0:15 · Problem
30
+ - **Screen:** <landing page or pain-point visual>
31
+ - **Action:** static
32
+ - **Narration:** "<one sentence problem statement>"
33
+
34
+ ### Shot 2 — 0:15–0:30 · Setup
35
+ - **Screen:** dApp landing, Freighter wallet visible in toolbar
36
+ - **Action:** Click "Connect Wallet" → Freighter popup → approve
37
+ - **Narration:** "<what the user is about to do>"
38
+
39
+ ### Shot 3 — 0:30–1:00 · Hero moment
40
+ - **Screen:** <main interaction>
41
+ - **Action:** <the signed Soroban call>
42
+ - **Narration:** "<what just happened on-chain and why it matters>"
43
+
44
+ ### Shot 4 — 1:00–1:30 · Proof
45
+ - **Screen:** stellar.expert tx page OR contract state read
46
+ - **Action:** click through to the tx
47
+ - **Narration:** "<the on-chain receipt is the proof>"
48
+
49
+ ### Shot 5 — 1:30–2:00 · Ask
50
+ - **Screen:** GitHub repo + testnet contract ID
51
+ - **Action:** static
52
+ - **Narration:** "<what we built, what we want next>"
53
+ ```
54
+
55
+ Total narration: ~250–300 words at conversational pace.
56
+
57
+ ### Step 3: Pre-Recording Checklist
58
+
59
+ Run this checklist **before hitting record**. Every item is a common failure.
60
+
61
+ #### Wallet & network
62
+ - [ ] Freighter installed, on Testnet
63
+ - [ ] Account funded — at least 100 XLM (`stellar keys fund <name> --network testnet`)
64
+ - [ ] Account already authorized for the dApp (no first-time consent popup mid-demo)
65
+ - [ ] If using multiple accounts, the right one is active
66
+ - [ ] `networkPassphrase` in code matches Freighter's network
67
+
68
+ #### Contract state
69
+ - [ ] Contract initialized — `initialize` (or equivalent) has been called
70
+ - [ ] Contract has demo-able state (not a fresh deploy with empty storage)
71
+ - [ ] Storage TTL extended if needed — `stellar contract extend`
72
+ - [ ] If demoing a token transfer, both accounts have trustlines
73
+
74
+ #### App state
75
+ - [ ] Dev server running on a stable port
76
+ - [ ] Hot reload disabled (it can crash mid-demo)
77
+ - [ ] Browser cache cleared OR full-restart browser
78
+ - [ ] No console errors on first load
79
+ - [ ] No dev tools visible during recording
80
+ - [ ] No personal tabs, bookmarks, or notifications visible
81
+ - [ ] Browser zoomed for the recording resolution (typically 100–125% for 1080p capture)
82
+
83
+ #### Recording rig
84
+ - [ ] Recording at 1920×1080 minimum, 30+ fps
85
+ - [ ] Mic levels checked — speak a sentence, watch the meter
86
+ - [ ] No background noise (fans, traffic, slack notifications)
87
+ - [ ] Screen recording tool tested — first 5 seconds reviewed
88
+ - [ ] Backup recording running on a second tool (in case of glitch)
89
+
90
+ #### Backup plan
91
+ - [ ] **Pre-recorded backup** of the hero moment, in case live demo fails
92
+ - [ ] Static screenshots of every shot as last-resort fallback
93
+
94
+ ### Step 4: Common Failure Modes
95
+
96
+ Pera flags these mid-demo. Use the table to diagnose live.
97
+
98
+ | Failure mode | Cause | Fix |
99
+ |---|---|---|
100
+ | Freighter popup loops | Site not pre-approved or network mismatch | Pre-approve before recording; restart Freighter; check `networkPassphrase` |
101
+ | Tx pending forever | Testnet congestion / sequence mismatch / fee too low | Use `p75` from `feeStats`; reload account before build; pre-record success path |
102
+ | "Wrong network" error | Mainnet wallet against testnet site | Switch Freighter to Testnet manually; reload page |
103
+ | `op_no_destination` | Account doesn't exist on-chain | Fund both accounts before recording |
104
+ | `op_no_trust` | Custom asset, no trustline | Set up `changeTrust` for both demo accounts pre-record |
105
+ | Empty contract state | Contract not initialized after deploy | Run init script before recording |
106
+ | Contract returns expired-key error | Storage TTL expired | Run `stellar contract extend` before recording |
107
+ | App crashes on connect | Async race with Freighter API | Add 200ms delay after `requestAccess()` |
108
+
109
+ ### Step 5: Narration Tips
110
+
111
+ - **Read the script out loud once before recording.** It will sound different than it reads.
112
+ - **Speak 10% slower than feels natural.** Recordings always play back faster than you remember.
113
+ - **No filler.** Cut every "um", "so", "basically", "as you can see".
114
+ - **Anchor every claim to what's on-screen.** "Notice the contract ID at the top" beats "the contract is deployed".
115
+ - **End with a clear ask.** "Repo is at X, contract is at Y, we'd love feedback on Z."
116
+
117
+ ### Step 6: Save
118
+
119
+ Save the storyboard to `{implementation_artifacts}/demo-storyboard.md` and the checklist as `{implementation_artifacts}/demo-checklist.md`.
120
+
121
+ Confirm with the user: *"Ready to record?"*
122
+
123
+ ## Anti-patterns to flag
124
+
125
+ - **Live demo from a fresh state.** Always demo from a pre-populated state with one successful tx already on-chain.
126
+ - **Wallet popup mid-narration.** Pre-approve everything that can be pre-approved.
127
+ - **Showing the IDE.** Judges want to see the dApp, not VS Code.
128
+ - **Skipping the on-chain proof.** No `stellar.expert` link = no on-chain proof = judges assume it's mocked.
129
+ - **Recording at 720p.** Looks bad on a 4K judging monitor. 1080p minimum.
130
+
131
+ ## Output
132
+
133
+ - `{implementation_artifacts}/demo-storyboard.md`
134
+ - `{implementation_artifacts}/demo-checklist.md`
135
+
136
+ ## Next Steps
137
+
138
+ - `stellar-pitch-coaching` (PC) — pitch deck and judge Q&A
139
+ - `stellar-submission-prep` (SP) — final checklist before submit
@@ -0,0 +1,125 @@
1
+ ---
2
+ name: stellar-idea-scoping
3
+ description: 'Pressure-test a hackathon idea against the build window and produce a one-page brief with cut list. Use when the user wants to scope an idea, validate scope, fit an idea into 24/48/72 hours, or shape what to build before any code is written.'
4
+ ---
5
+
6
+ # Idea Scoping
7
+
8
+ ## Purpose
9
+
10
+ Take a raw hackathon idea and force it into a buildable shape: one demo, one user, one on-chain action. Produce a one-pager with an explicit cut list.
11
+
12
+ ## On Activation
13
+
14
+ Load config from `{project-root}/_stellar/stellar/config.yaml`. Resolve `{network_preference}` and `{planning_artifacts}`.
15
+
16
+ If Pera hasn't already collected them this session, ask in one block (skippable):
17
+ 1. Build window: 24h / 48h / 72h
18
+ 2. Submission deadline (ISO date or "hours from now")
19
+ 3. Hackathon link (Devpost / SCF / SDF page) — fetch the rubric if provided
20
+
21
+ ## Workflow
22
+
23
+ ### Step 1: Surface the Raw Idea
24
+
25
+ Ask the user to describe the idea in their own words. Do not let them spend more than 90 seconds on this. Capture verbatim — don't paraphrase yet.
26
+
27
+ ### Step 2: Apply the Three Scope Tests
28
+
29
+ For each test, get a verdict before moving on:
30
+
31
+ | Test | Pass criterion | If fails |
32
+ |---|---|---|
33
+ | **Demo-able in 90 seconds** | A judge can grasp the value in one screen recording | Cut the idea down or pick a different framing |
34
+ | **One on-chain action** | The demo has a single signed Soroban call or transaction | Pick the most impressive one and drop the rest |
35
+ | **Reversible to a smaller version** | If 30% of build time is lost, can you still ship something? | Define the smallest shippable version now |
36
+
37
+ Verdict format:
38
+ ```
39
+ ✅ Demo-able in 90s — <one-sentence reason>
40
+ ✅ One on-chain action — <which one>
41
+ ✅ Reversible — <fallback version>
42
+ ```
43
+
44
+ If any test fails, do not proceed. Iterate the idea with the user.
45
+
46
+ ### Step 3: Pick the Hero Moment
47
+
48
+ Ask: *"What is the one moment in the demo where the judge says 'oh, that's cool'?"*
49
+
50
+ That moment becomes the anchor for everything else. The MVP must deliver that moment. Anything that doesn't serve it is a candidate for the cut list.
51
+
52
+ ### Step 4: Write the One-Pager
53
+
54
+ Save to `{planning_artifacts}/hackathon-brief.md`:
55
+
56
+ ```markdown
57
+ # <Project name>
58
+
59
+ **Track:** <DeFi | Payments | Identity | Gaming | RWA | Other>
60
+ **Build window:** <24 | 48 | 72> hours
61
+ **Submission deadline:** <YYYY-MM-DD HH:MM TZ>
62
+ **Network:** {network_preference}
63
+
64
+ ## Problem
65
+
66
+ <One sentence — who hurts, when, why current solutions fail.>
67
+
68
+ ## Solution
69
+
70
+ <One sentence — what the dApp does on Stellar.>
71
+
72
+ ## Why Stellar / Soroban
73
+
74
+ <Why this needs Soroban or Classic Stellar — not generic blockchain.
75
+ What primitive (custom tokens, AMM, contract storage, etc.) makes it Stellar-native.>
76
+
77
+ ## Hero moment
78
+
79
+ <The 5-second screen-recording clip the demo is built around.>
80
+
81
+ ## Demo flow (60–90s)
82
+
83
+ 1. <Open state — what the judge sees first.>
84
+ 2. <Action 1 — connect / sign.>
85
+ 3. <Action 2 — the hero moment.>
86
+ 4. <Proof — on-chain receipt / contract state.>
87
+
88
+ ## Cut list
89
+
90
+ - ❌ <Feature we won't build.>
91
+ - ❌ <Feature we won't build.>
92
+ - ❌ <Feature we won't build.>
93
+
94
+ ## Open risks
95
+
96
+ - ⚠️ <Risk + mitigation>
97
+ - ⚠️ <Risk + mitigation>
98
+ ```
99
+
100
+ ### Step 5: Confirm and Hand Off
101
+
102
+ Show the one-pager to the user. Ask: *"Lock this in?"*
103
+
104
+ If yes:
105
+ - Save to `{planning_artifacts}/hackathon-brief.md`
106
+ - Suggest the next skill: `TR` (Track Recommendation) if track is unclear, else `MV` (MVP Definition)
107
+
108
+ If no: iterate on whichever section the user pushes back on.
109
+
110
+ ## Anti-patterns to flag
111
+
112
+ - **"It's like Uniswap but on Stellar"** — too vague. Force a one-sentence problem statement.
113
+ - **"And it also has a token, and a DAO, and..."** — too big. Strip to one on-chain action.
114
+ - **"We'll figure out the demo after we build it"** — backwards. Demo flow first, build to that.
115
+ - **"We need a real backend / database / auth"** — only if the demo requires it. Most hackathons can fake auth with a hardcoded wallet.
116
+
117
+ ## Output
118
+
119
+ Single file at `{planning_artifacts}/hackathon-brief.md`. This becomes the source of truth that `MV`, `JC`, and `DM` all read from.
120
+
121
+ ## Next Steps
122
+
123
+ - `stellar-track-recommendation` (TR) — if you haven't picked a track yet
124
+ - `stellar-mvp-definition` (MV) — split the brief into must-have / nice-to-have / skip
125
+ - `stellar-judging-criteria` (JC) — only after the brief is locked