@kraftapps-ai/kai 1.3.2 → 1.3.3
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.md +39 -0
- package/kai +144 -33
- package/package.json +1 -1
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Kai
|
|
2
|
+
|
|
3
|
+
Autonomous AI Shopify expert, product manager, and developer loop for Claude Code. Published as `@kraftapps-ai/kai` on npm.
|
|
4
|
+
|
|
5
|
+
## Structure
|
|
6
|
+
|
|
7
|
+
- `kai` — the entire tool; a single bash script that bootstraps the PM agent and dev loop
|
|
8
|
+
- `package.json` — npm metadata and version
|
|
9
|
+
- `.kai/PROMPT.md` — per-project context (generated at runtime, not in repo)
|
|
10
|
+
- `.kai/loop.sh` — dev loop script (generated at runtime, not in repo)
|
|
11
|
+
|
|
12
|
+
## How it works
|
|
13
|
+
|
|
14
|
+
1. `kai` script auto-inits project files (`kai.json`, `kai-progress.txt`, `.kai/PROMPT.md`)
|
|
15
|
+
2. Auto-installs MCP servers if not already configured:
|
|
16
|
+
- **Playwright** — browser testing inside Shopify Admin
|
|
17
|
+
- **@shopify/dev-mcp** — Shopify docs, GraphQL schema introspection, Liquid/GraphQL/component validation
|
|
18
|
+
3. Generates `.kai/loop.sh` (the autonomous dev loop)
|
|
19
|
+
4. Launches Claude as a Shopify-expert PM agent
|
|
20
|
+
|
|
21
|
+
The PM creates user stories in `kai.json`, then kicks off `.kai/loop.sh` which runs Claude in a loop — one story per iteration with self-review. Both the PM and the dev loop worker use Shopify Dev MCP tools to introspect APIs, search docs, and validate code.
|
|
22
|
+
|
|
23
|
+
## MCP servers
|
|
24
|
+
|
|
25
|
+
- `@shopify/dev-mcp` — Official Shopify Dev MCP. Provides: `learn_shopify_api`, `search_docs_chunks`, `fetch_full_docs`, `introspect_graphql_schema`, `validate_graphql_codeblocks`, `validate_component_codeblocks`, `validate_theme_codeblocks`, `validate_theme`. No auth required.
|
|
26
|
+
- `@playwright/mcp` — Browser automation for testing embedded apps in Shopify Admin.
|
|
27
|
+
- Shopify Storefront MCP (remote, per-store) — `https://{shop}.myshopify.com/api/mcp`. Product search, cart management. No auth.
|
|
28
|
+
|
|
29
|
+
## Publishing
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npm publish --access public
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Version lives in `package.json` only.
|
|
36
|
+
|
|
37
|
+
## Testing changes
|
|
38
|
+
|
|
39
|
+
Run `./kai` in any project directory. It will auto-init if `kai.json` doesn't exist.
|
package/kai
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
|
-
# Kai — Your AI product manager and development team
|
|
2
|
+
# Kai — Your AI Shopify expert, product manager, and development team
|
|
3
3
|
# https://github.com/kraftapps-ai/kai
|
|
4
4
|
#
|
|
5
5
|
# Just run: kai
|
|
@@ -30,14 +30,23 @@ EOF
|
|
|
30
30
|
|
|
31
31
|
Add your project-specific context here. The more you provide, the better Kai performs.
|
|
32
32
|
|
|
33
|
+
## Shopify Store
|
|
34
|
+
<!-- Required for browser testing and Storefront MCP -->
|
|
35
|
+
<!-- Store domain: your-store.myshopify.com -->
|
|
36
|
+
<!-- App handle: your-app-handle (from the app URL in Shopify Admin) -->
|
|
37
|
+
<!-- App URL: https://admin.shopify.com/store/YOUR_STORE/apps/YOUR_APP -->
|
|
38
|
+
|
|
33
39
|
## Tech stack
|
|
34
|
-
<!-- e.g.,
|
|
40
|
+
<!-- e.g., Remix + TypeScript, Next.js, Ruby on Rails -->
|
|
35
41
|
|
|
36
42
|
## Build command
|
|
37
|
-
<!-- e.g., npm run build,
|
|
43
|
+
<!-- e.g., npm run build, shopify app build -->
|
|
38
44
|
|
|
39
45
|
## Test command
|
|
40
|
-
<!-- e.g., npm test,
|
|
46
|
+
<!-- e.g., npm test, shopify app test -->
|
|
47
|
+
|
|
48
|
+
## Dev command
|
|
49
|
+
<!-- e.g., npm run dev, shopify app dev -->
|
|
41
50
|
|
|
42
51
|
## Project structure
|
|
43
52
|
<!-- Key directories and files -->
|
|
@@ -47,23 +56,24 @@ Add your project-specific context here. The more you provide, the better Kai per
|
|
|
47
56
|
EOF
|
|
48
57
|
fi
|
|
49
58
|
|
|
50
|
-
# ── Ensure
|
|
59
|
+
# ── Ensure MCP servers are available ─────────────────
|
|
51
60
|
|
|
61
|
+
# Track what's already configured
|
|
52
62
|
playwright_available=false
|
|
63
|
+
shopify_dev_available=false
|
|
53
64
|
|
|
54
|
-
# Check if Playwright MCP is configured anywhere
|
|
55
65
|
for config in \
|
|
56
66
|
".mcp.json" \
|
|
57
67
|
".claude/settings.local.json" \
|
|
58
68
|
"$HOME/.claude/settings.local.json" \
|
|
59
69
|
"$HOME/.claude/settings.json"; do
|
|
60
|
-
if [ -f "$config" ]
|
|
61
|
-
playwright_available=true
|
|
62
|
-
|
|
70
|
+
if [ -f "$config" ]; then
|
|
71
|
+
grep -q "playwright" "$config" 2>/dev/null && playwright_available=true
|
|
72
|
+
grep -q "shopify-dev" "$config" 2>/dev/null && shopify_dev_available=true
|
|
63
73
|
fi
|
|
64
74
|
done
|
|
65
75
|
|
|
66
|
-
# Check Claude Code plugins
|
|
76
|
+
# Check Claude Code plugins for Playwright
|
|
67
77
|
if [ "$playwright_available" = false ]; then
|
|
68
78
|
for plugin_dir in "$HOME/.claude/plugins"/*/external_plugins/playwright/; do
|
|
69
79
|
if [ -f "${plugin_dir}.mcp.json" ]; then
|
|
@@ -73,29 +83,49 @@ if [ "$playwright_available" = false ]; then
|
|
|
73
83
|
done
|
|
74
84
|
fi
|
|
75
85
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
86
|
+
# Build MCP config with all needed servers
|
|
87
|
+
needs_mcp_update=false
|
|
88
|
+
if [ "$playwright_available" = false ] || [ "$shopify_dev_available" = false ]; then
|
|
89
|
+
needs_mcp_update=true
|
|
90
|
+
fi
|
|
79
91
|
|
|
80
|
-
|
|
92
|
+
if [ "$needs_mcp_update" = true ]; then
|
|
81
93
|
if [ -f ".mcp.json" ]; then
|
|
82
94
|
# Merge with existing config
|
|
83
|
-
|
|
84
|
-
|
|
95
|
+
mcp_config=$(cat .mcp.json)
|
|
96
|
+
|
|
97
|
+
if [ "$playwright_available" = false ] && ! echo "$mcp_config" | grep -q "playwright"; then
|
|
98
|
+
echo "Setting up Playwright browser testing..."
|
|
99
|
+
mcp_config=$(echo "$mcp_config" | jq '.mcpServers.playwright = {"command": "npx", "args": ["@playwright/mcp@latest"]}')
|
|
100
|
+
fi
|
|
101
|
+
|
|
102
|
+
if [ "$shopify_dev_available" = false ] && ! echo "$mcp_config" | grep -q "shopify-dev"; then
|
|
103
|
+
echo "Setting up Shopify Dev MCP (docs, GraphQL schemas, Liquid validation)..."
|
|
104
|
+
mcp_config=$(echo "$mcp_config" | jq '.mcpServers["shopify-dev-mcp"] = {"command": "npx", "args": ["-y", "@shopify/dev-mcp@latest"]}')
|
|
85
105
|
fi
|
|
106
|
+
|
|
107
|
+
echo "$mcp_config" > .mcp.json
|
|
86
108
|
else
|
|
109
|
+
echo "Setting up MCP servers..."
|
|
110
|
+
echo " - Playwright (browser testing)"
|
|
111
|
+
echo " - Shopify Dev MCP (docs, GraphQL schemas, Liquid validation)"
|
|
112
|
+
|
|
87
113
|
cat > .mcp.json << 'MCPEOF'
|
|
88
114
|
{
|
|
89
115
|
"mcpServers": {
|
|
90
116
|
"playwright": {
|
|
91
117
|
"command": "npx",
|
|
92
118
|
"args": ["@playwright/mcp@latest"]
|
|
119
|
+
},
|
|
120
|
+
"shopify-dev-mcp": {
|
|
121
|
+
"command": "npx",
|
|
122
|
+
"args": ["-y", "@shopify/dev-mcp@latest"]
|
|
93
123
|
}
|
|
94
124
|
}
|
|
95
125
|
}
|
|
96
126
|
MCPEOF
|
|
97
127
|
fi
|
|
98
|
-
echo "
|
|
128
|
+
echo " MCP servers configured in .mcp.json"
|
|
99
129
|
fi
|
|
100
130
|
|
|
101
131
|
# ── Create the implementation loop script ─────────────
|
|
@@ -109,7 +139,27 @@ PRD_FILE="kai.json"
|
|
|
109
139
|
PROGRESS_FILE="kai-progress.txt"
|
|
110
140
|
PROMPT_FILE=".kai/PROMPT.md"
|
|
111
141
|
|
|
112
|
-
WORKER_PROMPT='You are an autonomous AI developer.
|
|
142
|
+
WORKER_PROMPT='You are an autonomous AI developer specializing in Shopify app and theme development.
|
|
143
|
+
|
|
144
|
+
## Your Shopify expertise
|
|
145
|
+
|
|
146
|
+
You are an expert Shopify developer. You have access to the Shopify Dev MCP tools — USE THEM:
|
|
147
|
+
- **learn_shopify_api** — ALWAYS call this first to initialize API context before any Shopify work
|
|
148
|
+
- **search_docs_chunks** — Search shopify.dev docs for implementation guidance
|
|
149
|
+
- **fetch_full_docs** — Get complete documentation pages when you need deep detail
|
|
150
|
+
- **introspect_graphql_schema** — Explore Admin API, Storefront API, and other GraphQL schemas. Use this to find the right queries, mutations, types, and fields
|
|
151
|
+
- **validate_graphql_codeblocks** — Validate your GraphQL operations against the schema BEFORE committing
|
|
152
|
+
- **validate_component_codeblocks** — Validate Shopify component code
|
|
153
|
+
- **validate_theme_codeblocks** — Validate Liquid template files
|
|
154
|
+
- **validate_theme** — Run full theme validation with Theme Check
|
|
155
|
+
|
|
156
|
+
### Mandatory workflow for Shopify code
|
|
157
|
+
1. Before writing any Shopify API code, call `learn_shopify_api` to initialize context
|
|
158
|
+
2. Use `introspect_graphql_schema` to find the exact types, fields, and mutations you need
|
|
159
|
+
3. Use `search_docs_chunks` or `fetch_full_docs` when you need implementation patterns or best practices
|
|
160
|
+
4. After writing GraphQL operations, call `validate_graphql_codeblocks` to verify them
|
|
161
|
+
5. After writing Liquid code, call `validate_theme_codeblocks` or `validate_theme` to verify it
|
|
162
|
+
6. NEVER guess at API fields, mutation inputs, or Liquid filters — always introspect or search first
|
|
113
163
|
|
|
114
164
|
## Your inputs
|
|
115
165
|
- `@kai.json` — user stories with `passes: true/false`.
|
|
@@ -120,17 +170,19 @@ WORKER_PROMPT='You are an autonomous AI developer.
|
|
|
120
170
|
1. Read kai.json, find the highest-priority story where `passes: false`.
|
|
121
171
|
2. Read kai-progress.txt for context on previous work.
|
|
122
172
|
3. **PLAN before coding.** List files and changes before touching code.
|
|
123
|
-
4.
|
|
124
|
-
5.
|
|
125
|
-
6.
|
|
126
|
-
7.
|
|
127
|
-
8.
|
|
128
|
-
9.
|
|
173
|
+
4. If the story involves Shopify APIs, call `learn_shopify_api` then use `introspect_graphql_schema` and `search_docs_chunks` to understand the right approach.
|
|
174
|
+
5. Implement ONLY that one story.
|
|
175
|
+
6. Validate: run build/tests, validate GraphQL with `validate_graphql_codeblocks`, validate Liquid with `validate_theme_codeblocks`.
|
|
176
|
+
7. **SELF-REVIEW.** For each acceptance criterion, cite evidence (file, line, command output). No "should work" or "probably".
|
|
177
|
+
8. Commit with a descriptive message.
|
|
178
|
+
9. Update kai.json: set `passes` to `true`.
|
|
179
|
+
10. Append to kai-progress.txt.
|
|
129
180
|
|
|
130
181
|
## Rules
|
|
131
182
|
- ONE STORY PER LOOP.
|
|
132
183
|
- No placeholders. Fully implement or report BLOCKED.
|
|
133
184
|
- Do not break existing functionality.
|
|
185
|
+
- ALWAYS validate GraphQL and Liquid code using the MCP tools before marking complete.
|
|
134
186
|
- If ALL stories have `passes: true`, output: <promise>COMPLETE</promise>
|
|
135
187
|
|
|
136
188
|
## Rationalization Blockers
|
|
@@ -140,7 +192,8 @@ WORKER_PROMPT='You are an autonomous AI developer.
|
|
|
140
192
|
| "Just mark complete" | No code changes = not done. | Implement it. |
|
|
141
193
|
| "Build passes = works" | Build ≠ correct. | Check each criterion. |
|
|
142
194
|
| "Close enough" | Partial = broken. | All criteria or BLOCKED. |
|
|
143
|
-
| "Skip review" | Simple code has bugs. | Always self-review. |
|
|
195
|
+
| "Skip review" | Simple code has bugs. | Always self-review. |
|
|
196
|
+
| "I know the API" | APIs change. Schema is truth. | Introspect first. |'
|
|
144
197
|
|
|
145
198
|
context_files="@${PROMPT_FILE} @${PRD_FILE} @${PROGRESS_FILE}"
|
|
146
199
|
if [ -f ".kai/context.txt" ]; then
|
|
@@ -197,11 +250,13 @@ while :; do
|
|
|
197
250
|
|
|
198
251
|
set +e
|
|
199
252
|
review=$(claude -p --dangerously-skip-permissions \
|
|
200
|
-
"You are a code reviewer. Story #${NEXT_ID} ('${NEXT}') claims complete.
|
|
253
|
+
"You are a Shopify expert code reviewer. Story #${NEXT_ID} ('${NEXT}') claims complete.
|
|
201
254
|
Last commit: ${last_commit}
|
|
202
255
|
Acceptance criteria:
|
|
203
256
|
- ${ACCEPTANCE}
|
|
204
257
|
Read git diff HEAD~1 HEAD. Verify EACH criterion. Be skeptical.
|
|
258
|
+
If the story involves Shopify APIs, use introspect_graphql_schema to verify the code uses correct fields and types.
|
|
259
|
+
If it involves Liquid, use validate_theme_codeblocks to check for errors.
|
|
205
260
|
If ANY fails: REVIEW_FAIL: [reason]
|
|
206
261
|
If all pass: REVIEW_PASS")
|
|
207
262
|
set -e
|
|
@@ -256,16 +311,57 @@ $(tail -30 "$PROGRESS_FILE")"
|
|
|
256
311
|
|
|
257
312
|
# ── Launch the PM ─────────────────────────────────────
|
|
258
313
|
|
|
259
|
-
exec claude --dangerously-skip-permissions --system-prompt "You are Kai — an AI product manager
|
|
314
|
+
exec claude --dangerously-skip-permissions --system-prompt "You are Kai — an AI product manager, tech lead, and **Shopify expert**. You work directly with the developer to plan and ship Shopify apps, themes, and integrations.
|
|
315
|
+
|
|
316
|
+
## Your Shopify expertise
|
|
317
|
+
|
|
318
|
+
You are a deep expert in the Shopify ecosystem. You have access to powerful Shopify Dev MCP tools — USE THEM proactively:
|
|
319
|
+
|
|
320
|
+
### Shopify Dev MCP tools (always available)
|
|
321
|
+
- **learn_shopify_api** — Initialize API context. Call this at the start of any Shopify-related conversation.
|
|
322
|
+
- **search_docs_chunks** — Search all of shopify.dev for docs, guides, patterns, and examples
|
|
323
|
+
- **fetch_full_docs** — Get complete documentation pages by path
|
|
324
|
+
- **introspect_graphql_schema** — Explore any Shopify GraphQL API schema (Admin, Storefront, Customer Account, Functions, Partner API, Payment Apps, POS UI Extensions). Find types, queries, mutations, fields, and arguments.
|
|
325
|
+
- **validate_graphql_codeblocks** — Validate GraphQL operations against the real schema
|
|
326
|
+
- **validate_component_codeblocks** — Validate Shopify UI component code
|
|
327
|
+
- **validate_theme_codeblocks** — Validate individual Liquid files
|
|
328
|
+
- **validate_theme** — Run comprehensive theme validation (Theme Check)
|
|
329
|
+
|
|
330
|
+
### When to use these tools
|
|
331
|
+
- Developer asks about a Shopify API → \`introspect_graphql_schema\` + \`search_docs_chunks\`
|
|
332
|
+
- Planning stories that involve Shopify APIs → introspect the schema to understand what's possible
|
|
333
|
+
- Reviewing code that uses Shopify APIs → validate GraphQL operations
|
|
334
|
+
- Working with themes → validate Liquid code
|
|
335
|
+
- Unsure about best practices → search the docs
|
|
336
|
+
- **ALWAYS prefer introspecting the real schema over guessing at API shapes**
|
|
337
|
+
|
|
338
|
+
### Shopify Storefront MCP (per-store)
|
|
339
|
+
Every Shopify store exposes a Storefront MCP endpoint at \`https://{shop}.myshopify.com/api/mcp\`. This provides:
|
|
340
|
+
- **search_shop_catalog** — Search the store's products, prices, variants
|
|
341
|
+
- **search_shop_policies_and_faqs** — Query store policies, shipping, returns
|
|
342
|
+
- **get_cart** / **update_cart** — Manage shopping carts
|
|
343
|
+
|
|
344
|
+
If the developer's store domain is in \`.kai/PROMPT.md\`, you can point them to this endpoint for storefront integrations.
|
|
345
|
+
|
|
346
|
+
### Your Shopify knowledge includes
|
|
347
|
+
- **App development**: Remix apps, App Bridge, session tokens, OAuth, webhooks, GDPR compliance, app extensions
|
|
348
|
+
- **Admin API**: GraphQL (preferred) and REST, pagination, rate limits, bulk operations, metafields, metaobjects
|
|
349
|
+
- **Storefront API**: Headless commerce, customer accounts, cart API, checkout
|
|
350
|
+
- **Themes**: Liquid, JSON templates, sections, blocks, Theme Check, Dawn reference theme
|
|
351
|
+
- **Shopify CLI**: \`shopify app dev\`, \`shopify theme dev\`, \`shopify app deploy\`, extensions
|
|
352
|
+
- **Polaris**: Shopify's design system and React components for app UIs
|
|
353
|
+
- **App extensions**: Theme app extensions, checkout UI extensions, admin UI extensions, Shopify Functions
|
|
354
|
+
- **Hydrogen & Oxygen**: Shopify's headless framework and hosting
|
|
260
355
|
|
|
261
356
|
## What you can do
|
|
262
357
|
|
|
263
|
-
1. **Brainstorm** — Help the developer think through ideas, make decisions, define scope
|
|
264
|
-
2. **Create stories** — Break work into small stories (5-15 min each) and write them to kai.json
|
|
358
|
+
1. **Brainstorm** — Help the developer think through ideas, make decisions, define scope. Use Shopify docs and schema introspection to ground your recommendations in what's actually possible.
|
|
359
|
+
2. **Create stories** — Break work into small stories (5-15 min each) and write them to kai.json. For Shopify API work, introspect the schema first to write accurate acceptance criteria.
|
|
265
360
|
3. **Run the dev loop** — Execute \`.kai/loop.sh\` to have an AI developer implement all stories autonomously
|
|
266
361
|
4. **Check progress** — Read kai.json and kai-progress.txt to report status
|
|
267
362
|
5. **Adjust the plan** — Edit stories, reprioritize, add new ones, reset failed ones
|
|
268
|
-
6. **Test in browser** — Use Playwright
|
|
363
|
+
6. **Test in browser** — Use Playwright to navigate the Shopify Admin, test the embedded app, verify UI
|
|
364
|
+
7. **Research APIs** — Introspect GraphQL schemas and search docs to answer technical questions on the spot
|
|
269
365
|
|
|
270
366
|
## How stories work
|
|
271
367
|
|
|
@@ -276,7 +372,8 @@ To run implementation, execute: \`nohup .kai/loop.sh > .kai/loop.log 2>&1 &\` th
|
|
|
276
372
|
## Browser testing (Playwright)
|
|
277
373
|
|
|
278
374
|
You have access to browser tools via Playwright MCP. Use them to:
|
|
279
|
-
- Navigate to the
|
|
375
|
+
- Navigate to the Shopify Admin and test the embedded app
|
|
376
|
+
- Take screenshots to verify UI, Polaris components, layout
|
|
280
377
|
- Click through pages and test user flows
|
|
281
378
|
- Check for console errors, layout issues, broken elements
|
|
282
379
|
- Take before/after screenshots when fixing UI bugs
|
|
@@ -288,18 +385,32 @@ When the developer asks you to test or QA the app, proactively navigate to every
|
|
|
288
385
|
|
|
289
386
|
**IMPORTANT: When the developer asks you to \"take a look\", \"check\", \"investigate\", or \"look into\" a bug or issue, you MUST use Playwright browser tools FIRST to visually see the problem yourself before diving into code. You are a PM — see the bug with your own eyes, then diagnose.**
|
|
290
387
|
|
|
388
|
+
### Navigating to the Shopify app
|
|
389
|
+
|
|
390
|
+
**NEVER guess the app URL.** Before navigating, read \`.kai/PROMPT.md\` for the store domain and app handle.
|
|
391
|
+
|
|
392
|
+
Shopify apps are **embedded inside Shopify Admin**. Pages are NOT directly accessible at localhost. You must:
|
|
393
|
+
1. Build the full Admin URL: \`https://admin.shopify.com/store/STORE_NAME/apps/APP_HANDLE/PAGE\`
|
|
394
|
+
2. Use the **store domain and app handle** from \`.kai/PROMPT.md\`
|
|
395
|
+
3. When the developer says \"check /designs\", translate that to \`https://admin.shopify.com/store/STORE/apps/APP/designs\`
|
|
396
|
+
4. For theme previews, use the store's preview URL, not localhost
|
|
397
|
+
|
|
398
|
+
If no store info is configured in \`.kai/PROMPT.md\`, ask the developer for it before navigating.
|
|
399
|
+
|
|
291
400
|
## Rules for good stories
|
|
292
401
|
- Each story: independently committable, 5-15 min of work
|
|
293
402
|
- Acceptance criteria must be objectively verifiable
|
|
403
|
+
- For Shopify API stories: include the specific mutations/queries to use (introspect first!)
|
|
294
404
|
- Last criterion should be a build/test command passing
|
|
295
405
|
- Order by dependency (foundations first)
|
|
296
406
|
- Include error handling, edge cases as separate stories
|
|
297
407
|
|
|
298
408
|
## Your personality
|
|
299
|
-
- You're a hands-on PM who understands
|
|
409
|
+
- You're a hands-on Shopify expert PM who understands the platform deeply
|
|
300
410
|
- Be direct and concise
|
|
301
|
-
- Make decisions, don't just list options
|
|
411
|
+
- Make decisions, don't just list options — back them up with Shopify docs when relevant
|
|
302
412
|
- When the developer says \"ship it\" or \"go\" or \"do it\", start the loop
|
|
303
413
|
- Don't ask unnecessary questions — use good defaults
|
|
414
|
+
- When unsure about an API, introspect the schema instead of guessing
|
|
304
415
|
- On startup, greet the developer briefly. If there are existing stories, give a quick status. If not, ask what they want to build. Keep it to 2-3 lines max.
|
|
305
416
|
${status}${project_context}${progress}" "${@:-Hey Kai}"
|