@c0x12c/spartan-ai-toolkit 1.0.1

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 (166) hide show
  1. package/.claude-plugin/marketplace.json +16 -0
  2. package/.claude-plugin/plugin.json +12 -0
  3. package/README.md +300 -0
  4. package/VERSION +1 -0
  5. package/agents/idea-killer.md +72 -0
  6. package/agents/micronaut-backend-expert.md +45 -0
  7. package/agents/research-planner.md +70 -0
  8. package/agents/solution-architect-cto.md +49 -0
  9. package/bin/cli.js +589 -0
  10. package/claude-md/00-header.md +39 -0
  11. package/claude-md/01-core.md +94 -0
  12. package/claude-md/05-database.md +20 -0
  13. package/claude-md/11-backend-micronaut.md +36 -0
  14. package/claude-md/20-frontend-react.md +23 -0
  15. package/claude-md/30-project-mgmt.md +91 -0
  16. package/claude-md/40-product.md +36 -0
  17. package/claude-md/50-ops.md +34 -0
  18. package/claude-md/60-research.md +75 -0
  19. package/claude-md/90-footer.md +21 -0
  20. package/commands/spartan/brainstorm.md +134 -0
  21. package/commands/spartan/brownfield.md +157 -0
  22. package/commands/spartan/careful.md +94 -0
  23. package/commands/spartan/content.md +17 -0
  24. package/commands/spartan/context-save.md +161 -0
  25. package/commands/spartan/daily.md +42 -0
  26. package/commands/spartan/debug.md +156 -0
  27. package/commands/spartan/deep-dive.md +55 -0
  28. package/commands/spartan/deploy.md +207 -0
  29. package/commands/spartan/e2e.md +264 -0
  30. package/commands/spartan/env-setup.md +166 -0
  31. package/commands/spartan/fe-review.md +134 -0
  32. package/commands/spartan/figma-to-code.md +244 -0
  33. package/commands/spartan/forensics.md +46 -0
  34. package/commands/spartan/freeze.md +84 -0
  35. package/commands/spartan/full-run.md +78 -0
  36. package/commands/spartan/fundraise.md +53 -0
  37. package/commands/spartan/gsd-upgrade.md +376 -0
  38. package/commands/spartan/guard.md +42 -0
  39. package/commands/spartan/init-project.md +178 -0
  40. package/commands/spartan/interview.md +154 -0
  41. package/commands/spartan/kickoff.md +52 -0
  42. package/commands/spartan/kotlin-service.md +109 -0
  43. package/commands/spartan/lean-canvas.md +222 -0
  44. package/commands/spartan/map-codebase.md +72 -0
  45. package/commands/spartan/migration.md +82 -0
  46. package/commands/spartan/next-app.md +317 -0
  47. package/commands/spartan/next-feature.md +197 -0
  48. package/commands/spartan/outreach.md +16 -0
  49. package/commands/spartan/phase.md +119 -0
  50. package/commands/spartan/pitch.md +18 -0
  51. package/commands/spartan/pr-ready.md +200 -0
  52. package/commands/spartan/project.md +106 -0
  53. package/commands/spartan/quickplan.md +122 -0
  54. package/commands/spartan/research.md +19 -0
  55. package/commands/spartan/review.md +102 -0
  56. package/commands/spartan/teardown.md +161 -0
  57. package/commands/spartan/testcontainer.md +97 -0
  58. package/commands/spartan/think.md +221 -0
  59. package/commands/spartan/unfreeze.md +13 -0
  60. package/commands/spartan/update.md +81 -0
  61. package/commands/spartan/validate.md +193 -0
  62. package/commands/spartan/workstreams.md +109 -0
  63. package/commands/spartan/write.md +16 -0
  64. package/commands/spartan.md +222 -0
  65. package/frameworks/00-framework-comparison-guide.md +317 -0
  66. package/frameworks/01-lean-canvas.md +196 -0
  67. package/frameworks/02-design-sprint.md +304 -0
  68. package/frameworks/03-foundation-sprint.md +337 -0
  69. package/frameworks/04-business-model-canvas.md +391 -0
  70. package/frameworks/05-customer-development.md +426 -0
  71. package/frameworks/06-jobs-to-be-done.md +358 -0
  72. package/frameworks/07-mom-test.md +392 -0
  73. package/frameworks/08-value-proposition-canvas.md +488 -0
  74. package/frameworks/09-javelin-board.md +428 -0
  75. package/frameworks/10-build-measure-learn.md +467 -0
  76. package/frameworks/11-mvp-approaches.md +533 -0
  77. package/frameworks/think-before-build.md +593 -0
  78. package/lib/assembler.js +52 -0
  79. package/lib/packs.js +16 -0
  80. package/lib/resolver.js +144 -0
  81. package/lib/resolver.test.js +140 -0
  82. package/package.json +48 -0
  83. package/packs/backend-micronaut.yaml +34 -0
  84. package/packs/backend-nodejs.yaml +15 -0
  85. package/packs/backend-python.yaml +15 -0
  86. package/packs/core.yaml +25 -0
  87. package/packs/database.yaml +21 -0
  88. package/packs/frontend-react.yaml +23 -0
  89. package/packs/ops.yaml +16 -0
  90. package/packs/packs.compiled.json +281 -0
  91. package/packs/product.yaml +20 -0
  92. package/packs/project-mgmt.yaml +21 -0
  93. package/packs/research.yaml +39 -0
  94. package/packs/shared-backend.yaml +14 -0
  95. package/rules/backend-micronaut/API_DESIGN.md +250 -0
  96. package/rules/backend-micronaut/CONTROLLERS.md +755 -0
  97. package/rules/backend-micronaut/KOTLIN.md +483 -0
  98. package/rules/backend-micronaut/RETROFIT_PLACEMENT.md +258 -0
  99. package/rules/backend-micronaut/SERVICES_AND_BEANS.md +673 -0
  100. package/rules/core/NAMING_CONVENTIONS.md +208 -0
  101. package/rules/database/ORM_AND_REPO.md +393 -0
  102. package/rules/database/SCHEMA.md +146 -0
  103. package/rules/database/TRANSACTIONS.md +311 -0
  104. package/rules/frontend-react/FRONTEND.md +344 -0
  105. package/rules/shared-backend/ARCHITECTURE.md +46 -0
  106. package/skills/api-endpoint-creator/SKILL.md +560 -0
  107. package/skills/api-endpoint-creator/error-handling-guide.md +244 -0
  108. package/skills/api-endpoint-creator/examples.md +522 -0
  109. package/skills/api-endpoint-creator/testing-patterns.md +302 -0
  110. package/skills/article-writing/SKILL.md +95 -0
  111. package/skills/backend-api-design/SKILL.md +187 -0
  112. package/skills/brainstorm/SKILL.md +85 -0
  113. package/skills/competitive-teardown/SKILL.md +105 -0
  114. package/skills/content-engine/SKILL.md +101 -0
  115. package/skills/database-patterns/SKILL.md +145 -0
  116. package/skills/database-table-creator/SKILL.md +588 -0
  117. package/skills/database-table-creator/examples.md +552 -0
  118. package/skills/database-table-creator/migration-template.sql +68 -0
  119. package/skills/database-table-creator/validation-checklist.md +337 -0
  120. package/skills/deep-research/SKILL.md +94 -0
  121. package/skills/idea-validation/SKILL.md +115 -0
  122. package/skills/investor-materials/SKILL.md +115 -0
  123. package/skills/investor-outreach/SKILL.md +98 -0
  124. package/skills/kotlin-best-practices/SKILL.md +145 -0
  125. package/skills/market-research/SKILL.md +113 -0
  126. package/skills/security-checklist/SKILL.md +150 -0
  127. package/skills/startup-pipeline/SKILL.md +125 -0
  128. package/skills/testing-strategies/SKILL.md +156 -0
  129. package/skills/ui-ux-pro-max/SKILL.md +377 -0
  130. package/skills/ui-ux-pro-max/data/charts.csv +26 -0
  131. package/skills/ui-ux-pro-max/data/colors.csv +97 -0
  132. package/skills/ui-ux-pro-max/data/icons.csv +101 -0
  133. package/skills/ui-ux-pro-max/data/landing.csv +31 -0
  134. package/skills/ui-ux-pro-max/data/products.csv +97 -0
  135. package/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  136. package/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  137. package/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  138. package/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  139. package/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  140. package/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  141. package/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  142. package/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  143. package/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  144. package/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  145. package/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  146. package/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  147. package/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  148. package/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  149. package/skills/ui-ux-pro-max/data/styles.csv +68 -0
  150. package/skills/ui-ux-pro-max/data/typography.csv +58 -0
  151. package/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  152. package/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  153. package/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  154. package/skills/ui-ux-pro-max/scripts/core.py +253 -0
  155. package/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
  156. package/skills/ui-ux-pro-max/scripts/search.py +114 -0
  157. package/templates/competitor-analysis.md +60 -0
  158. package/templates/content/AGENT_TEMPLATE.md +47 -0
  159. package/templates/content/COMMAND_TEMPLATE.md +27 -0
  160. package/templates/content/RULE_TEMPLATE.md +40 -0
  161. package/templates/content/SKILL_TEMPLATE.md +41 -0
  162. package/templates/idea-canvas.md +47 -0
  163. package/templates/prd-template.md +84 -0
  164. package/templates/project-readme.md +35 -0
  165. package/templates/user-interview.md +69 -0
  166. package/templates/validation-checklist.md +108 -0
@@ -0,0 +1,97 @@
1
+ ---
2
+ name: spartan:testcontainer
3
+ description: Set up integration testing infrastructure for a Kotlin Micronaut service using @MicronautTest and Testcontainers
4
+ argument-hint: "[postgres | kafka | redis | all]"
5
+ ---
6
+
7
+ Set up integration testing in this Kotlin Micronaut project.
8
+
9
+ **Reference:** `/testing-strategies` skill and `rules/project/API_RULES.md` (testing section)
10
+
11
+ ## Requested containers: {{ args[0] | default: "postgres" }}
12
+
13
+ ### 1. Add Dependencies (build.gradle.kts)
14
+
15
+ ```kotlin
16
+ testImplementation("org.testcontainers:testcontainers:1.19.3")
17
+ testImplementation("org.testcontainers:junit-jupiter:1.19.3")
18
+ testImplementation("org.testcontainers:postgresql:1.19.3")
19
+ testImplementation("io.micronaut.test:micronaut-test-junit5")
20
+ ```
21
+
22
+ ### 2. Create Base Test Configuration
23
+
24
+ Create `src/test/kotlin/.../AbstractControllerTest.kt`:
25
+
26
+ ```kotlin
27
+ @MicronautTest(environments = ["test"], transactional = false)
28
+ @TestInstance(TestInstance.Lifecycle.PER_CLASS)
29
+ abstract class AbstractControllerTest {
30
+
31
+ @Inject
32
+ lateinit var embeddedServer: EmbeddedServer
33
+
34
+ @BeforeAll
35
+ open fun beforeAll() {
36
+ // Setup test clients from embeddedServer.url
37
+ }
38
+
39
+ companion object {
40
+ @Container
41
+ @JvmStatic
42
+ val postgres = PostgreSQLContainer("postgres:16-alpine")
43
+ .withDatabaseName("testdb")
44
+ .withUsername("test")
45
+ .withPassword("test")
46
+
47
+ @DynamicPropertySource
48
+ @JvmStatic
49
+ fun overrideProperties(registry: DynamicPropertyRegistry) {
50
+ registry.add("datasources.default.url", postgres::getJdbcUrl)
51
+ registry.add("datasources.default.username", postgres::getUsername)
52
+ registry.add("datasources.default.password", postgres::getPassword)
53
+ }
54
+ }
55
+ }
56
+ ```
57
+
58
+ ### 3. Create Example Integration Test
59
+
60
+ ```kotlin
61
+ class EmployeeControllerTest : AbstractControllerTest() {
62
+
63
+ private lateinit var employeeClient: EmployeeClient
64
+
65
+ @BeforeAll
66
+ override fun beforeAll() {
67
+ super.beforeAll()
68
+ val url = embeddedServer.url.toString()
69
+ employeeClient = EmployeeClient(url)
70
+ }
71
+
72
+ @Test
73
+ fun `create employee returns success`() {
74
+ val request = CreateEmployeeRequest(name = "Test User", email = "test@example.com")
75
+ val response = employeeClient.create(request)
76
+ assertNotNull(response.id)
77
+ assertEquals("Test User", response.name)
78
+ }
79
+ }
80
+ ```
81
+
82
+ ### 4. Application config for test profile
83
+
84
+ Create `src/test/resources/application-test.yml`:
85
+ ```yaml
86
+ datasources:
87
+ default:
88
+ # Overridden by Testcontainers DynamicPropertySource
89
+ dialect: POSTGRES
90
+ flyway:
91
+ datasources:
92
+ default:
93
+ enabled: true
94
+ locations: classpath:db/migration
95
+ ```
96
+
97
+ After setup, verify all tests pass with: `./gradlew test`
@@ -0,0 +1,221 @@
1
+ ---
2
+ name: spartan:think
3
+ description: Guided thinking before coding — 6-phase structured process to prevent building the wrong thing
4
+ argument-hint: "[idea or feature description]"
5
+ ---
6
+
7
+ # Think Before Build: {{ args[0] | default: "new idea" }}
8
+
9
+ You are running a **structured thinking session**. The goal: think through everything BEFORE writing any code.
10
+
11
+ Most rework comes from skipping the thinking phase. This command prevents that.
12
+
13
+ ---
14
+
15
+ ## First Question
16
+
17
+ Ask the user:
18
+
19
+ > **"Is this a new project (starting from zero) or a new feature (adding to something that exists)?"**
20
+
21
+ - **New project** → Start at Phase 0, then continue through Phase 6
22
+ - **New feature** → Skip Phase 0, start at Phase 1
23
+
24
+ **Auto mode on?** → Still pause between phases. Thinking phases need human input — that's the whole point. Show each phase output, then ask "Ready for the next phase?" before moving on.
25
+
26
+ ---
27
+
28
+ ## Phase 0: PRODUCT + MVP MAP (new projects only, ~20 min)
29
+
30
+ Only run this phase for new projects. Skip to Phase 1 for features.
31
+
32
+ ### 0A — Find the Core Loop
33
+ Ask: "What's the one thing a user does repeatedly that makes this product valuable?"
34
+ Write it as: **[User] does [action] to get [result], which makes them [come back because...]**
35
+
36
+ ### 0B — Feature Dump
37
+ List every feature you can think of. Don't filter yet. Get it all out.
38
+
39
+ ### 0C — Kill Most of Them
40
+ Go through the list. For each feature ask: "Can the core loop work without this?"
41
+ If yes → cut it from v1. Be brutal. v1 should have 3-5 features max.
42
+
43
+ ### 0D — Dependency Map
44
+ For the surviving features, draw the build order:
45
+ - What needs to exist before something else can work?
46
+ - What's independent and can be built in parallel?
47
+
48
+ ### 0E — Build Order
49
+ Number the features 1-N based on dependencies. Feature 1 = the core loop itself.
50
+
51
+ ### 0F — Stack Pick
52
+ Based on what you're building, confirm or pick the tech stack.
53
+ Only discuss stack if the user hasn't decided yet.
54
+
55
+ **Output:** Core loop statement + v1 feature list (max 5) + build order + stack
56
+
57
+ Ask: **"Happy with this MVP scope? Phase 1 will dig into the first feature."**
58
+
59
+ ---
60
+
61
+ ## Phase 1: DUMP (~5 min)
62
+
63
+ Brain dump using Jobs-to-be-Done (JTBD) framework. Ask the user to fill in:
64
+
65
+ | Question | Answer |
66
+ |---|---|
67
+ | **The job:** When I [situation], I want to [motivation], so I can [outcome] | |
68
+ | **Trigger:** What event makes someone need this RIGHT NOW? | |
69
+ | **Current pain:** How do they solve it today? What sucks about that? | |
70
+ | **Dream state:** If this worked perfectly, what does the user's life look like? | |
71
+
72
+ Help the user write clear answers. Challenge vague ones. "Everyone" is not a user. "It's annoying" is not a pain.
73
+
74
+ **Output:** Filled JTBD table
75
+
76
+ Ask: **"Does this capture the real job? Phase 2 will stress-test it."**
77
+
78
+ ---
79
+
80
+ ## Phase 2: CHALLENGE (~10 min)
81
+
82
+ Three exercises to pressure-test the idea:
83
+
84
+ ### 2A — Pre-mortem
85
+ Pretend it's 6 months later and this feature FAILED. List the 5 most likely reasons it failed.
86
+ Be honest. Common ones: nobody wanted it, too complicated, built the wrong thing, took too long, tech didn't work.
87
+
88
+ ### 2B — MoSCoW Sort
89
+ Take everything from Phase 1 and sort into:
90
+
91
+ | Category | Items |
92
+ |---|---|
93
+ | **Must have** (won't work without it) | |
94
+ | **Should have** (important but can ship without) | |
95
+ | **Could have** (nice but won't miss it) | |
96
+ | **Won't have** (explicitly out of scope for v1) | |
97
+
98
+ ### 2C — Bar Test
99
+ Write one sentence that explains this feature to a stranger in a bar.
100
+ If you can't do it in one sentence, the scope is too big. Simplify until you can.
101
+
102
+ **Output:** Pre-mortem list + MoSCoW table + bar test sentence
103
+
104
+ Ask: **"Any surprises in the pre-mortem? Phase 3 is the big one — we'll walk through every screen."**
105
+
106
+ ---
107
+
108
+ ## Phase 3: WALK THROUGH (~15 min)
109
+
110
+ **This is the most important phase.** 80% of rework comes from skipping this.
111
+
112
+ ### 3A — Screen State Matrix
113
+
114
+ For every screen/view the user will see, fill out this table:
115
+
116
+ | Screen | State | What User Sees | Actions Available | Edge Cases |
117
+ |---|---|---|---|---|
118
+ | [name] | Empty (no data yet) | | | |
119
+ | [name] | Loading | | | |
120
+ | [name] | Success (happy path) | | | |
121
+ | [name] | Error (something broke) | | | |
122
+ | [name] | Partial (some data, some missing) | | | |
123
+
124
+ Go through EVERY screen. Don't skip any state. The empty state and error state are where most bugs hide.
125
+
126
+ ### 3B — Happy Path Narration
127
+ Tell the story of a user doing the main flow from start to finish. Step by step. Click by click.
128
+ "User opens the page. Sees X. Clicks Y. System does Z. User sees W."
129
+
130
+ ### 3C — Sad Path Narration
131
+ Now tell the story of everything going wrong:
132
+ - Network fails mid-action
133
+ - User enters garbage data
134
+ - User does things in unexpected order
135
+ - User has no data yet (first time)
136
+ - User has too much data (power user)
137
+
138
+ **Output:** Full screen state matrix + happy path + sad path narrations
139
+
140
+ Ask: **"Did we miss any screens or states? Phase 4 checks the tech side."**
141
+
142
+ ---
143
+
144
+ ## Phase 4: TECH CHECK (~10 min)
145
+
146
+ Impact map — what does this touch in the codebase?
147
+
148
+ ### 4A — New Stuff Needed
149
+
150
+ | Type | Details |
151
+ |---|---|
152
+ | New database tables | |
153
+ | New API endpoints | |
154
+ | New UI components | |
155
+ | New background jobs | |
156
+ | New integrations | |
157
+
158
+ ### 4B — Existing Code Impact
159
+
160
+ | Existing Code | What Changes | Risk Level |
161
+ |---|---|---|
162
+ | [file/module] | [what changes] | LOW/MEDIUM/HIGH |
163
+
164
+ ### 4C — Reuse Check
165
+ - What existing code can we reuse as-is?
166
+ - What existing code needs changes?
167
+ - Any conflicts with in-progress work?
168
+ - External dependencies or API limits?
169
+
170
+ ### 4D — T-shirt Size
171
+ Overall estimate: **S** (< 1 day) / **M** (1-3 days) / **L** (3-7 days) / **XL** (> 1 week)
172
+
173
+ **Output:** Impact tables + reuse list + size estimate
174
+
175
+ Ask: **"Any surprises on the tech side? Phase 5 is the final cut."**
176
+
177
+ ---
178
+
179
+ ## Phase 5: FINAL CUT (~5 min)
180
+
181
+ ### 5A — Confidence Check
182
+
183
+ For each must-have from Phase 2, rate your confidence:
184
+
185
+ | Must-Have | Confidence | Why |
186
+ |---|---|---|
187
+ | [item] | HIGH / MEDIUM / LOW | [reason] |
188
+
189
+ Anything rated LOW → discuss with user. Either find a way to de-risk it, or move it to v2.
190
+
191
+ ### 5B — v1 / v2 Split
192
+
193
+ | v1 (build now) | v2 (build later) |
194
+ |---|---|
195
+ | | |
196
+
197
+ ### 5C — Regret Test
198
+ Ask: "If we ship v1 without [each v2 item], will users complain loudly?"
199
+ If yes → move it back to v1. If no → it stays in v2.
200
+
201
+ **Output:** Confidence table + v1/v2 split + final scope
202
+
203
+ Ask: **"This is the final scope. Ready to build?"**
204
+
205
+ ---
206
+
207
+ ## Phase 6: BUILD
208
+
209
+ Based on the T-shirt size from Phase 4, route to the right build command:
210
+
211
+ - **S (< 1 day):** "Run `/spartan:quickplan` with this scope to start building."
212
+ - **M-L (1-7 days):** "Run `/spartan:project new` to set up the full project lifecycle."
213
+ - **XL (> 1 week):** "Run `/spartan:project new` — this needs milestones and wave planning."
214
+
215
+ Show the complete thinking output as a summary the user can copy into their planning tool:
216
+ - JTBD statement
217
+ - MoSCoW scope
218
+ - Screen state matrix (key screens only)
219
+ - Impact map
220
+ - v1/v2 split
221
+ - Size estimate + next command to run
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: spartan:unfreeze
3
+ description: Remove the directory edit lock set by /spartan:freeze. Claude can edit files anywhere again.
4
+ ---
5
+
6
+ # Unfreeze — Directory Lock Removed
7
+
8
+ Freeze mode is now **OFF**. Claude can edit files in any directory.
9
+
10
+ If guard mode was active (`/spartan:guard`), only the freeze portion is removed — careful mode remains active.
11
+
12
+ Claude should acknowledge:
13
+ "🧊 Freeze OFF — tôi có thể edit files ở bất kỳ đâu. Careful mode vẫn {{ 'ON' if careful_active else 'OFF' }}."
@@ -0,0 +1,81 @@
1
+ ---
2
+ name: spartan:update
3
+ description: Check for updates and upgrade Spartan AI Toolkit to the latest version. Pulls from GitHub and re-runs the setup script automatically.
4
+ ---
5
+
6
+ # Spartan Update
7
+
8
+ Check for new versions and upgrade the toolkit.
9
+
10
+ ---
11
+
12
+ ## Step 1: Read current version and repo path
13
+
14
+ ```bash
15
+ LOCAL_VER=$(cat ~/.claude/.spartan-version 2>/dev/null || echo "unknown")
16
+ REPO_PATH=$(cat ~/.claude/.spartan-repo 2>/dev/null || echo "")
17
+ echo "Current version: $LOCAL_VER"
18
+ echo "Repo path: $REPO_PATH"
19
+ ```
20
+
21
+ If `REPO_PATH` is empty or the directory doesn't exist, ask the user where they cloned `spartan-ai-toolkit`:
22
+ "I don't know where the Spartan repo is. Where did you clone it? (e.g., `~/spartan-ai-toolkit`)"
23
+
24
+ ---
25
+
26
+ ## Step 2: Check for updates
27
+
28
+ ```bash
29
+ cd "$REPO_PATH" && git fetch origin main --quiet 2>/dev/null
30
+ REMOTE_VER=$(git show origin/main:toolkit/VERSION 2>/dev/null || echo "unknown")
31
+ echo "Local: $LOCAL_VER"
32
+ echo "Remote: $REMOTE_VER"
33
+ ```
34
+
35
+ If versions match: "You're on the latest version (v$LOCAL_VER). No update needed."
36
+
37
+ If versions differ or either is "unknown": proceed to Step 3.
38
+
39
+ ---
40
+
41
+ ## Step 3: Read current pack selection
42
+
43
+ ```bash
44
+ SAVED_PACKS=$(cat ~/.claude/.spartan-packs 2>/dev/null | tr '\n' ',' | sed 's/,$//')
45
+ echo "Installed packs: $SAVED_PACKS"
46
+ ```
47
+
48
+ Show the user their current packs and ask:
49
+ "You have these packs: $SAVED_PACKS. Want to keep the same packs, or change them?"
50
+
51
+ - Keep same → use `--packs=$SAVED_PACKS` flag
52
+ - Change → run without `--packs` flag (interactive menu)
53
+
54
+ ---
55
+
56
+ ## Step 4: Pull and reinstall
57
+
58
+ ```bash
59
+ cd "$REPO_PATH" && git pull origin main
60
+ ```
61
+
62
+ Then run the setup script with saved packs:
63
+
64
+ ```bash
65
+ cd "$REPO_PATH/toolkit" && ./scripts/setup.sh --global --packs=$SAVED_PACKS
66
+ ```
67
+
68
+ Or if user wants to change packs:
69
+
70
+ ```bash
71
+ cd "$REPO_PATH/toolkit" && ./scripts/setup.sh --global
72
+ ```
73
+
74
+ ---
75
+
76
+ ## Step 5: Confirm
77
+
78
+ After setup completes, tell the user:
79
+ "Updated to Spartan v$REMOTE_VER. Restart Claude Code to pick up all changes."
80
+
81
+ **Never suggest `/gsd:*` commands to the user.** Always translate to `/spartan:*`.
@@ -0,0 +1,193 @@
1
+ ---
2
+ name: spartan:validate
3
+ description: Score a product idea with a quick canvas + 7-area validation checklist — get a GO / TEST MORE / KILL decision
4
+ argument-hint: "[idea or product name]"
5
+ ---
6
+
7
+ # Validate: {{ args[0] | default: "your idea" }}
8
+
9
+ You are running a two-part validation session. Part 1 is a quick idea canvas (5 min). Part 2 is a scoring checklist (10 min). At the end, you'll get a clear GO / TEST MORE / KILL decision.
10
+
11
+ Be honest. The point is to kill bad ideas early, not to make every idea sound good.
12
+
13
+ ---
14
+
15
+ ## Part 1: Quick Idea Canvas (~5 min)
16
+
17
+ Walk the user through each question. Challenge weak or vague answers. "Everyone" is not a target user. "It's better" is not a differentiator.
18
+
19
+ ### The Canvas
20
+
21
+ | # | Question | Answer |
22
+ |---|---|---|
23
+ | 1 | **The problem:** What specific pain does this solve? | |
24
+ | 2 | **Who has it:** Describe the person (not "everyone") | |
25
+ | 3 | **Current solution:** How do they solve it today? | |
26
+ | 4 | **Your solution:** 30-second pitch — what is it and what does it do? | |
27
+ | 5 | **Why you:** What do you know or have that gives you an edge? | |
28
+ | 6 | **Market size:** How many people have this problem? (rough is fine) | |
29
+ | 7 | **Top 3 risks:** What could kill this idea? | |
30
+ | 8 | **First experiment:** What's the cheapest way to test demand? | |
31
+
32
+ ### Gut Check (yes/no)
33
+
34
+ Ask these 5 questions. The user answers yes or no:
35
+
36
+ 1. Would you use this yourself?
37
+ 2. Do you know 3 real people who have this problem?
38
+ 3. Have you seen people complain about this online?
39
+ 4. Can you explain it in one sentence to a stranger?
40
+ 5. Would you still work on this if it took twice as long?
41
+
42
+ Count the "yes" answers:
43
+ - 5/5 = Strong founder conviction
44
+ - 3-4 = Good, but check what's missing
45
+ - 0-2 = Red flag — you might not care enough to push through the hard parts
46
+
47
+ **Output:** Filled canvas table + gut check score
48
+
49
+ Ask: **"Ready for the scoring checklist? This gets more specific."**
50
+
51
+ ---
52
+
53
+ ## Part 2: Validation Checklist (~10 min)
54
+
55
+ Score each area 1-5. Ask the user probing questions to arrive at the right score. Don't let them rate themselves high without evidence.
56
+
57
+ ### Area 1: Problem (is it real?)
58
+
59
+ | Score | Meaning |
60
+ |---|---|
61
+ | 1 | You think it's a problem but haven't talked to anyone |
62
+ | 2 | A few people mentioned it casually |
63
+ | 3 | Multiple people describe this pain unprompted |
64
+ | 4 | People are actively spending money/time to solve it |
65
+ | 5 | People are desperate — current solutions are awful and expensive |
66
+
67
+ Ask: How often does this problem happen? Daily? Weekly? Once a year?
68
+ Ask: How do they solve it now? How much time/money does that cost them?
69
+
70
+ ### Area 2: Solution (does it work?)
71
+
72
+ | Score | Meaning |
73
+ |---|---|
74
+ | 1 | Just an idea, no proof it works |
75
+ | 2 | Mockup or prototype exists |
76
+ | 3 | A few people have tried it and gave feedback |
77
+ | 4 | Users understand it in 30 seconds and want to use it |
78
+ | 5 | Users try it and don't want to go back to the old way |
79
+
80
+ Ask: Can a stranger understand what this does in 30 seconds?
81
+ Ask: Is this simpler than what they use now, or more complicated?
82
+
83
+ ### Area 3: Competition (can you win?)
84
+
85
+ | Score | Meaning |
86
+ |---|---|
87
+ | 1 | Strong incumbents, no clear angle |
88
+ | 2 | Competitors exist but are beatable on one dimension |
89
+ | 3 | Competitors are weak or serving a different segment |
90
+ | 4 | No direct competitors, only workarounds |
91
+ | 5 | You have a clear unfair advantage they can't copy |
92
+
93
+ Ask: Who are the top 3 alternatives? What do they charge?
94
+ Ask: Why would someone pick you over them?
95
+
96
+ ### Area 4: Market (big enough?)
97
+
98
+ | Score | Meaning |
99
+ |---|---|
100
+ | 1 | Tiny niche, hard to grow beyond 100 users |
101
+ | 2 | Small market, maybe a lifestyle business |
102
+ | 3 | Medium market, can build a real company |
103
+ | 4 | Large market with clear growth trends |
104
+ | 5 | Massive market, multiple entry points |
105
+
106
+ Ask: How many people/companies have this problem?
107
+ Ask: Is this market growing or shrinking?
108
+
109
+ ### Area 5: Build Ability (can you build it?)
110
+
111
+ | Score | Meaning |
112
+ |---|---|
113
+ | 1 | Needs tech that doesn't exist yet |
114
+ | 2 | Very hard — needs specialized skills you don't have |
115
+ | 3 | Doable but will take 2-3 months for MVP |
116
+ | 4 | Can build MVP in 2-4 weeks with your current skills |
117
+ | 5 | Can build MVP in under 2 weeks, mostly known tech |
118
+
119
+ Ask: What's the hardest part to build?
120
+ Ask: Any tech risk — things that might not work?
121
+
122
+ ### Area 6: Founder Fit (should YOU build it?)
123
+
124
+ | Score | Meaning |
125
+ |---|---|
126
+ | 1 | No connection to this space, just saw an opportunity |
127
+ | 2 | Some interest but no experience with these users |
128
+ | 3 | You understand the space, have used similar products |
129
+ | 4 | You've worked in this space or have the problem yourself |
130
+ | 5 | Deep expertise + network + personal obsession with the problem |
131
+
132
+ Ask: Do you know this type of user personally?
133
+ Ask: Would you still work on this in 2 years if growth is slow?
134
+
135
+ ### Area 7: Business Model (will it make money?)
136
+
137
+ | Score | Meaning |
138
+ |---|---|
139
+ | 1 | No idea how to make money from this |
140
+ | 2 | Could maybe add ads or freemium later |
141
+ | 3 | Users might pay, but unclear how much |
142
+ | 4 | Clear pricing model, comparable products charge similar amounts |
143
+ | 5 | Users already pay for worse alternatives — willingness to pay is proven |
144
+
145
+ Ask: How will you charge? Subscription? One-time? Usage-based?
146
+ Ask: What would users pay? What are they paying for alternatives now?
147
+
148
+ ---
149
+
150
+ ## Scoring
151
+
152
+ Add up all 7 scores.
153
+
154
+ | Total | Verdict | What to Do |
155
+ |---|---|---|
156
+ | 28-35 | **BUILD** | Strong idea. Start with `/spartan:think` to plan it out. |
157
+ | 21-27 | **TEST MORE** | Promising but gaps. Do more user research on the low-scoring areas. |
158
+ | 14-20 | **RETHINK** | Too many weak spots. Pivot the approach or park the idea. |
159
+ | Below 14 | **KILL** | Not ready. Save your time for a stronger idea. |
160
+
161
+ ---
162
+
163
+ ## Output: One-Page Scorecard
164
+
165
+ Show this at the end:
166
+
167
+ ```
168
+ ## Validation Scorecard: [idea name]
169
+
170
+ ### Scores
171
+ | Area | Score | Notes |
172
+ |---|---|---|
173
+ | Problem | X/5 | [one-liner] |
174
+ | Solution | X/5 | [one-liner] |
175
+ | Competition | X/5 | [one-liner] |
176
+ | Market | X/5 | [one-liner] |
177
+ | Build Ability | X/5 | [one-liner] |
178
+ | Founder Fit | X/5 | [one-liner] |
179
+ | Business Model | X/5 | [one-liner] |
180
+ | **TOTAL** | **XX/35** | |
181
+
182
+ ### Verdict: [BUILD / TEST MORE / RETHINK / KILL]
183
+
184
+ ### Weakest Areas (focus here):
185
+ 1. [lowest scoring area] — [what to do about it]
186
+ 2. [second lowest] — [what to do about it]
187
+
188
+ ### Recommended Next Step:
189
+ - BUILD → Run `/spartan:think` to start structured planning
190
+ - TEST MORE → Run `/spartan:interview` to talk to real users
191
+ - RETHINK → Run `/spartan:brainstorm` to explore other angles
192
+ - KILL → Move on. Run `/spartan:brainstorm` for new ideas.
193
+ ```