@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.
- package/.claude-plugin/marketplace.json +16 -0
- package/.claude-plugin/plugin.json +12 -0
- package/README.md +300 -0
- package/VERSION +1 -0
- package/agents/idea-killer.md +72 -0
- package/agents/micronaut-backend-expert.md +45 -0
- package/agents/research-planner.md +70 -0
- package/agents/solution-architect-cto.md +49 -0
- package/bin/cli.js +589 -0
- package/claude-md/00-header.md +39 -0
- package/claude-md/01-core.md +94 -0
- package/claude-md/05-database.md +20 -0
- package/claude-md/11-backend-micronaut.md +36 -0
- package/claude-md/20-frontend-react.md +23 -0
- package/claude-md/30-project-mgmt.md +91 -0
- package/claude-md/40-product.md +36 -0
- package/claude-md/50-ops.md +34 -0
- package/claude-md/60-research.md +75 -0
- package/claude-md/90-footer.md +21 -0
- package/commands/spartan/brainstorm.md +134 -0
- package/commands/spartan/brownfield.md +157 -0
- package/commands/spartan/careful.md +94 -0
- package/commands/spartan/content.md +17 -0
- package/commands/spartan/context-save.md +161 -0
- package/commands/spartan/daily.md +42 -0
- package/commands/spartan/debug.md +156 -0
- package/commands/spartan/deep-dive.md +55 -0
- package/commands/spartan/deploy.md +207 -0
- package/commands/spartan/e2e.md +264 -0
- package/commands/spartan/env-setup.md +166 -0
- package/commands/spartan/fe-review.md +134 -0
- package/commands/spartan/figma-to-code.md +244 -0
- package/commands/spartan/forensics.md +46 -0
- package/commands/spartan/freeze.md +84 -0
- package/commands/spartan/full-run.md +78 -0
- package/commands/spartan/fundraise.md +53 -0
- package/commands/spartan/gsd-upgrade.md +376 -0
- package/commands/spartan/guard.md +42 -0
- package/commands/spartan/init-project.md +178 -0
- package/commands/spartan/interview.md +154 -0
- package/commands/spartan/kickoff.md +52 -0
- package/commands/spartan/kotlin-service.md +109 -0
- package/commands/spartan/lean-canvas.md +222 -0
- package/commands/spartan/map-codebase.md +72 -0
- package/commands/spartan/migration.md +82 -0
- package/commands/spartan/next-app.md +317 -0
- package/commands/spartan/next-feature.md +197 -0
- package/commands/spartan/outreach.md +16 -0
- package/commands/spartan/phase.md +119 -0
- package/commands/spartan/pitch.md +18 -0
- package/commands/spartan/pr-ready.md +200 -0
- package/commands/spartan/project.md +106 -0
- package/commands/spartan/quickplan.md +122 -0
- package/commands/spartan/research.md +19 -0
- package/commands/spartan/review.md +102 -0
- package/commands/spartan/teardown.md +161 -0
- package/commands/spartan/testcontainer.md +97 -0
- package/commands/spartan/think.md +221 -0
- package/commands/spartan/unfreeze.md +13 -0
- package/commands/spartan/update.md +81 -0
- package/commands/spartan/validate.md +193 -0
- package/commands/spartan/workstreams.md +109 -0
- package/commands/spartan/write.md +16 -0
- package/commands/spartan.md +222 -0
- package/frameworks/00-framework-comparison-guide.md +317 -0
- package/frameworks/01-lean-canvas.md +196 -0
- package/frameworks/02-design-sprint.md +304 -0
- package/frameworks/03-foundation-sprint.md +337 -0
- package/frameworks/04-business-model-canvas.md +391 -0
- package/frameworks/05-customer-development.md +426 -0
- package/frameworks/06-jobs-to-be-done.md +358 -0
- package/frameworks/07-mom-test.md +392 -0
- package/frameworks/08-value-proposition-canvas.md +488 -0
- package/frameworks/09-javelin-board.md +428 -0
- package/frameworks/10-build-measure-learn.md +467 -0
- package/frameworks/11-mvp-approaches.md +533 -0
- package/frameworks/think-before-build.md +593 -0
- package/lib/assembler.js +52 -0
- package/lib/packs.js +16 -0
- package/lib/resolver.js +144 -0
- package/lib/resolver.test.js +140 -0
- package/package.json +48 -0
- package/packs/backend-micronaut.yaml +34 -0
- package/packs/backend-nodejs.yaml +15 -0
- package/packs/backend-python.yaml +15 -0
- package/packs/core.yaml +25 -0
- package/packs/database.yaml +21 -0
- package/packs/frontend-react.yaml +23 -0
- package/packs/ops.yaml +16 -0
- package/packs/packs.compiled.json +281 -0
- package/packs/product.yaml +20 -0
- package/packs/project-mgmt.yaml +21 -0
- package/packs/research.yaml +39 -0
- package/packs/shared-backend.yaml +14 -0
- package/rules/backend-micronaut/API_DESIGN.md +250 -0
- package/rules/backend-micronaut/CONTROLLERS.md +755 -0
- package/rules/backend-micronaut/KOTLIN.md +483 -0
- package/rules/backend-micronaut/RETROFIT_PLACEMENT.md +258 -0
- package/rules/backend-micronaut/SERVICES_AND_BEANS.md +673 -0
- package/rules/core/NAMING_CONVENTIONS.md +208 -0
- package/rules/database/ORM_AND_REPO.md +393 -0
- package/rules/database/SCHEMA.md +146 -0
- package/rules/database/TRANSACTIONS.md +311 -0
- package/rules/frontend-react/FRONTEND.md +344 -0
- package/rules/shared-backend/ARCHITECTURE.md +46 -0
- package/skills/api-endpoint-creator/SKILL.md +560 -0
- package/skills/api-endpoint-creator/error-handling-guide.md +244 -0
- package/skills/api-endpoint-creator/examples.md +522 -0
- package/skills/api-endpoint-creator/testing-patterns.md +302 -0
- package/skills/article-writing/SKILL.md +95 -0
- package/skills/backend-api-design/SKILL.md +187 -0
- package/skills/brainstorm/SKILL.md +85 -0
- package/skills/competitive-teardown/SKILL.md +105 -0
- package/skills/content-engine/SKILL.md +101 -0
- package/skills/database-patterns/SKILL.md +145 -0
- package/skills/database-table-creator/SKILL.md +588 -0
- package/skills/database-table-creator/examples.md +552 -0
- package/skills/database-table-creator/migration-template.sql +68 -0
- package/skills/database-table-creator/validation-checklist.md +337 -0
- package/skills/deep-research/SKILL.md +94 -0
- package/skills/idea-validation/SKILL.md +115 -0
- package/skills/investor-materials/SKILL.md +115 -0
- package/skills/investor-outreach/SKILL.md +98 -0
- package/skills/kotlin-best-practices/SKILL.md +145 -0
- package/skills/market-research/SKILL.md +113 -0
- package/skills/security-checklist/SKILL.md +150 -0
- package/skills/startup-pipeline/SKILL.md +125 -0
- package/skills/testing-strategies/SKILL.md +156 -0
- package/skills/ui-ux-pro-max/SKILL.md +377 -0
- package/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/skills/ui-ux-pro-max/data/colors.csv +97 -0
- package/skills/ui-ux-pro-max/data/icons.csv +101 -0
- package/skills/ui-ux-pro-max/data/landing.csv +31 -0
- package/skills/ui-ux-pro-max/data/products.csv +97 -0
- package/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills/ui-ux-pro-max/data/styles.csv +68 -0
- package/skills/ui-ux-pro-max/data/typography.csv +58 -0
- package/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/skills/ui-ux-pro-max/scripts/core.py +253 -0
- package/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/skills/ui-ux-pro-max/scripts/search.py +114 -0
- package/templates/competitor-analysis.md +60 -0
- package/templates/content/AGENT_TEMPLATE.md +47 -0
- package/templates/content/COMMAND_TEMPLATE.md +27 -0
- package/templates/content/RULE_TEMPLATE.md +40 -0
- package/templates/content/SKILL_TEMPLATE.md +41 -0
- package/templates/idea-canvas.md +47 -0
- package/templates/prd-template.md +84 -0
- package/templates/project-readme.md +35 -0
- package/templates/user-interview.md +69 -0
- 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
|
+
```
|