thrivekit 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/explain.md +114 -0
- package/.claude/commands/idea.md +370 -0
- package/.claude/commands/my-dna.md +122 -0
- package/.claude/commands/prd.md +286 -0
- package/.claude/commands/review.md +167 -0
- package/.claude/commands/sign.md +32 -0
- package/.claude/commands/styleguide.md +450 -0
- package/.claude/commands/tour.md +301 -0
- package/.claude/commands/vibe-check.md +116 -0
- package/.claude/commands/vibe-help.md +47 -0
- package/.claude/commands/vibe-list.md +203 -0
- package/.claude/settings.json +75 -0
- package/.claude/settings.local.json +12 -0
- package/.pre-commit-hooks.yaml +102 -0
- package/LICENSE +21 -0
- package/README.md +214 -0
- package/bin/postinstall.sh +29 -0
- package/bin/ralph.sh +171 -0
- package/bin/thrivekit.sh +24 -0
- package/bin/vibe-check.js +19 -0
- package/dist/checks/check-any-types.d.ts +6 -0
- package/dist/checks/check-any-types.d.ts.map +1 -0
- package/dist/checks/check-any-types.js +73 -0
- package/dist/checks/check-any-types.js.map +1 -0
- package/dist/checks/check-commented-code.d.ts +6 -0
- package/dist/checks/check-commented-code.d.ts.map +1 -0
- package/dist/checks/check-commented-code.js +81 -0
- package/dist/checks/check-commented-code.js.map +1 -0
- package/dist/checks/check-console-error.d.ts +6 -0
- package/dist/checks/check-console-error.d.ts.map +1 -0
- package/dist/checks/check-console-error.js +41 -0
- package/dist/checks/check-console-error.js.map +1 -0
- package/dist/checks/check-debug-statements.d.ts +6 -0
- package/dist/checks/check-debug-statements.d.ts.map +1 -0
- package/dist/checks/check-debug-statements.js +120 -0
- package/dist/checks/check-debug-statements.js.map +1 -0
- package/dist/checks/check-deep-nesting.d.ts +6 -0
- package/dist/checks/check-deep-nesting.d.ts.map +1 -0
- package/dist/checks/check-deep-nesting.js +116 -0
- package/dist/checks/check-deep-nesting.js.map +1 -0
- package/dist/checks/check-docker-platform.d.ts +6 -0
- package/dist/checks/check-docker-platform.d.ts.map +1 -0
- package/dist/checks/check-docker-platform.js +42 -0
- package/dist/checks/check-docker-platform.js.map +1 -0
- package/dist/checks/check-dry-violations.d.ts +6 -0
- package/dist/checks/check-dry-violations.d.ts.map +1 -0
- package/dist/checks/check-dry-violations.js +124 -0
- package/dist/checks/check-dry-violations.js.map +1 -0
- package/dist/checks/check-empty-catch.d.ts +6 -0
- package/dist/checks/check-empty-catch.d.ts.map +1 -0
- package/dist/checks/check-empty-catch.js +111 -0
- package/dist/checks/check-empty-catch.js.map +1 -0
- package/dist/checks/check-function-length.d.ts +6 -0
- package/dist/checks/check-function-length.d.ts.map +1 -0
- package/dist/checks/check-function-length.js +152 -0
- package/dist/checks/check-function-length.js.map +1 -0
- package/dist/checks/check-hardcoded-ai-models.d.ts +10 -0
- package/dist/checks/check-hardcoded-ai-models.d.ts.map +1 -0
- package/dist/checks/check-hardcoded-ai-models.js +102 -0
- package/dist/checks/check-hardcoded-ai-models.js.map +1 -0
- package/dist/checks/check-hardcoded-urls.d.ts +6 -0
- package/dist/checks/check-hardcoded-urls.d.ts.map +1 -0
- package/dist/checks/check-hardcoded-urls.js +124 -0
- package/dist/checks/check-hardcoded-urls.js.map +1 -0
- package/dist/checks/check-magic-numbers.d.ts +6 -0
- package/dist/checks/check-magic-numbers.d.ts.map +1 -0
- package/dist/checks/check-magic-numbers.js +116 -0
- package/dist/checks/check-magic-numbers.js.map +1 -0
- package/dist/checks/check-secrets.d.ts +6 -0
- package/dist/checks/check-secrets.d.ts.map +1 -0
- package/dist/checks/check-secrets.js +138 -0
- package/dist/checks/check-secrets.js.map +1 -0
- package/dist/checks/check-snake-case-ts.d.ts +6 -0
- package/dist/checks/check-snake-case-ts.d.ts.map +1 -0
- package/dist/checks/check-snake-case-ts.js +78 -0
- package/dist/checks/check-snake-case-ts.js.map +1 -0
- package/dist/checks/check-todo-fixme.d.ts +6 -0
- package/dist/checks/check-todo-fixme.d.ts.map +1 -0
- package/dist/checks/check-todo-fixme.js +41 -0
- package/dist/checks/check-todo-fixme.js.map +1 -0
- package/dist/checks/check-unsafe-html.d.ts +6 -0
- package/dist/checks/check-unsafe-html.d.ts.map +1 -0
- package/dist/checks/check-unsafe-html.js +101 -0
- package/dist/checks/check-unsafe-html.js.map +1 -0
- package/dist/checks/index.d.ts +30 -0
- package/dist/checks/index.d.ts.map +1 -0
- package/dist/checks/index.js +57 -0
- package/dist/checks/index.js.map +1 -0
- package/dist/cli.d.ts +13 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +206 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/file-reader.d.ts +24 -0
- package/dist/utils/file-reader.d.ts.map +1 -0
- package/dist/utils/file-reader.js +140 -0
- package/dist/utils/file-reader.js.map +1 -0
- package/dist/utils/patterns.d.ts +27 -0
- package/dist/utils/patterns.d.ts.map +1 -0
- package/dist/utils/patterns.js +84 -0
- package/dist/utils/patterns.js.map +1 -0
- package/dist/utils/reporters.d.ts +21 -0
- package/dist/utils/reporters.d.ts.map +1 -0
- package/dist/utils/reporters.js +115 -0
- package/dist/utils/reporters.js.map +1 -0
- package/dist/utils/types.d.ts +71 -0
- package/dist/utils/types.d.ts.map +1 -0
- package/dist/utils/types.js +5 -0
- package/dist/utils/types.js.map +1 -0
- package/package.json +82 -0
- package/ralph/api.sh +210 -0
- package/ralph/backup.sh +838 -0
- package/ralph/browser-verify/README.md +135 -0
- package/ralph/browser-verify/verify.ts +450 -0
- package/ralph/checks/check-fastapi-responses.py +155 -0
- package/ralph/hooks/hooks-config.json +72 -0
- package/ralph/hooks/inject-context.sh +44 -0
- package/ralph/hooks/install.sh +207 -0
- package/ralph/hooks/log-tools.sh +45 -0
- package/ralph/hooks/protect-prd.sh +27 -0
- package/ralph/hooks/save-learnings.sh +36 -0
- package/ralph/hooks/warn-debug.sh +54 -0
- package/ralph/hooks/warn-empty-catch.sh +63 -0
- package/ralph/hooks/warn-secrets.sh +89 -0
- package/ralph/hooks/warn-urls.sh +77 -0
- package/ralph/init.sh +388 -0
- package/ralph/loop.sh +570 -0
- package/ralph/playwright.sh +238 -0
- package/ralph/prd.sh +295 -0
- package/ralph/setup/feature-tour.sh +155 -0
- package/ralph/setup/quick-setup.sh +239 -0
- package/ralph/setup/tutorial.sh +159 -0
- package/ralph/setup/ui.sh +136 -0
- package/ralph/setup.sh +353 -0
- package/ralph/signs.sh +150 -0
- package/ralph/utils.sh +682 -0
- package/ralph/verify/browser.sh +324 -0
- package/ralph/verify/lint.sh +363 -0
- package/ralph/verify/review.sh +164 -0
- package/ralph/verify/tests.sh +81 -0
- package/ralph/verify.sh +224 -0
- package/templates/PROMPT.md +235 -0
- package/templates/config/fullstack.json +86 -0
- package/templates/config/go.json +81 -0
- package/templates/config/minimal.json +76 -0
- package/templates/config/node.json +81 -0
- package/templates/config/python.json +81 -0
- package/templates/config/rust.json +81 -0
- package/templates/examples/CLAUDE-django.md +174 -0
- package/templates/examples/CLAUDE-fastapi.md +270 -0
- package/templates/examples/CLAUDE-fastmcp.md +352 -0
- package/templates/examples/CLAUDE-fullstack.md +256 -0
- package/templates/examples/CLAUDE-node.md +246 -0
- package/templates/examples/CLAUDE-react.md +138 -0
- package/templates/optional/cursorrules.template +147 -0
- package/templates/optional/eslint.config.js +34 -0
- package/templates/optional/lint-staged.config.js +34 -0
- package/templates/optional/ruff.toml +125 -0
- package/templates/optional/vibe-check.yml +116 -0
- package/templates/optional/vscode-settings.json +127 -0
- package/templates/signs.json +46 -0
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Take an interactive tour of thrivekit - the system for going from idea to shipped code with AI.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Vibe & Thrive Tour
|
|
6
|
+
|
|
7
|
+
## Step 1: Check & Fix Setup
|
|
8
|
+
|
|
9
|
+
Print this exactly:
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
╦ ╦╦╔╗ ╔═╗ ┬ ╔╦╗╦ ╦╦═╗╦╦ ╦╔═╗
|
|
13
|
+
╚╗╔╝║╠╩╗║╣ ┌┼─ ║ ╠═╣╠╦╝║╚╗╔╝║╣
|
|
14
|
+
╚╝ ╩╚═╝╚═╝ └┘ ╩ ╩ ╩╩╚═╩ ╚╝ ╚═╝
|
|
15
|
+
|
|
16
|
+
Checking setup...
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**Check each item and FIX if missing:**
|
|
20
|
+
|
|
21
|
+
1. **Check jq installed:**
|
|
22
|
+
```bash
|
|
23
|
+
command -v jq
|
|
24
|
+
```
|
|
25
|
+
- If missing: Say "⚠️ jq not found. Install it: `brew install jq` (macOS) or `apt install jq` (Linux)"
|
|
26
|
+
- If found: ✓ jq installed
|
|
27
|
+
|
|
28
|
+
2. **Check slash commands:**
|
|
29
|
+
```bash
|
|
30
|
+
test -d .claude/commands && ls .claude/commands/*.md 2>/dev/null | wc -l
|
|
31
|
+
```
|
|
32
|
+
- If missing or count is 0: Copy from node_modules:
|
|
33
|
+
```bash
|
|
34
|
+
mkdir -p .claude/commands && cp -r node_modules/thrivekit/.claude/commands/* .claude/commands/
|
|
35
|
+
```
|
|
36
|
+
- Then: ✓ Slash commands installed
|
|
37
|
+
|
|
38
|
+
3. **Check Ralph initialized:**
|
|
39
|
+
```bash
|
|
40
|
+
test -f .ralph/config.json
|
|
41
|
+
```
|
|
42
|
+
- If missing: Run `npx ralph init`
|
|
43
|
+
- Then: ✓ Ralph initialized
|
|
44
|
+
|
|
45
|
+
4. **Check CLAUDE.md:**
|
|
46
|
+
```bash
|
|
47
|
+
test -f CLAUDE.md
|
|
48
|
+
```
|
|
49
|
+
- If missing: Create a basic one:
|
|
50
|
+
```bash
|
|
51
|
+
echo "# Project Guide for Claude" > CLAUDE.md
|
|
52
|
+
```
|
|
53
|
+
- Then: ✓ CLAUDE.md created
|
|
54
|
+
|
|
55
|
+
5. **Check Claude Code hooks:**
|
|
56
|
+
```bash
|
|
57
|
+
test -f .claude/settings.json && jq -e '.hooks' .claude/settings.json > /dev/null 2>&1
|
|
58
|
+
```
|
|
59
|
+
- If missing: Install hooks:
|
|
60
|
+
```bash
|
|
61
|
+
npx ralph hooks
|
|
62
|
+
```
|
|
63
|
+
- Then: ✓ Claude Code hooks installed
|
|
64
|
+
|
|
65
|
+
6. **Check Docker:**
|
|
66
|
+
```bash
|
|
67
|
+
test -f docker-compose.yml || test -f docker-compose.yaml || test -f compose.yml
|
|
68
|
+
```
|
|
69
|
+
- If found:
|
|
70
|
+
- Update config: `jq '.docker.enabled = true' .ralph/config.json > .ralph/config.tmp && mv .ralph/config.tmp .ralph/config.json`
|
|
71
|
+
- Say: "✓ Docker detected - Ralph will run commands inside containers"
|
|
72
|
+
- **Skip Playwright check** (browser verification uses curl in Docker mode)
|
|
73
|
+
|
|
74
|
+
7. **Check & Install Playwright (if not Docker):**
|
|
75
|
+
|
|
76
|
+
Check BOTH the npm package AND browser binaries:
|
|
77
|
+
```bash
|
|
78
|
+
# Check npm package
|
|
79
|
+
npm list playwright 2>/dev/null
|
|
80
|
+
|
|
81
|
+
# Check browser binaries exist (macOS or Linux path)
|
|
82
|
+
ls ~/Library/Caches/ms-playwright/chromium-* 2>/dev/null || ls ~/.cache/ms-playwright/chromium-* 2>/dev/null
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
- If BOTH exist: Say "✓ Playwright available"
|
|
86
|
+
- If either is missing:
|
|
87
|
+
Say: "Installing Playwright for browser verification (~150MB)..."
|
|
88
|
+
```bash
|
|
89
|
+
npm install playwright && npx playwright install chromium
|
|
90
|
+
```
|
|
91
|
+
- If successful: Say "✓ Playwright installed"
|
|
92
|
+
- If failed: Say "⚠️ Playwright installation failed. Browser verification will use basic HTTP checks. You can try manually: `npm install playwright && npx playwright install chromium`"
|
|
93
|
+
|
|
94
|
+
Say: "Setup verified! Let me configure Ralph for your project..."
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Step 2: Auto-Configure Ralph
|
|
99
|
+
|
|
100
|
+
**Auto-detect and configure project settings:**
|
|
101
|
+
|
|
102
|
+
### 2a. Detect Project Structure
|
|
103
|
+
|
|
104
|
+
Check these directories and set `paths` in config:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# Check what exists
|
|
108
|
+
test -d frontend && echo "frontend exists"
|
|
109
|
+
test -d client && echo "client exists"
|
|
110
|
+
test -d backend && echo "backend exists"
|
|
111
|
+
test -d core && echo "core exists"
|
|
112
|
+
test -d src && echo "src exists"
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Based on results, update config:
|
|
116
|
+
- `frontend/` exists → set `paths.frontend` to `"frontend"`
|
|
117
|
+
- `client/` exists → set `paths.frontend` to `"client"`
|
|
118
|
+
- `backend/` exists → set `paths.backend` to `"backend"`
|
|
119
|
+
- `core/` exists → set `paths.backend` to `"core"`
|
|
120
|
+
- Only `src/` exists → set `paths.frontend` to `"."`
|
|
121
|
+
|
|
122
|
+
### 2b. Detect URLs
|
|
123
|
+
|
|
124
|
+
Check `.env`, `.env.example`, or `docker-compose.yml` for port numbers:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
grep -h "PORT\|URL\|localhost" .env .env.example docker-compose.yml 2>/dev/null | head -5
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Also check `package.json` for port in dev script:
|
|
131
|
+
```bash
|
|
132
|
+
cat package.json 2>/dev/null | jq -r '.scripts.dev // empty'
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Set URLs based on findings (defaults: frontend=3000, backend=8000):
|
|
136
|
+
```bash
|
|
137
|
+
jq '.urls.frontend = "http://localhost:3000" | .urls.backend = "http://localhost:8000"' .ralph/config.json > .ralph/config.tmp && mv .ralph/config.tmp .ralph/config.json
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### 2c. Detect Commands
|
|
141
|
+
|
|
142
|
+
Read package.json scripts and update config:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
# Get scripts from package.json (check root and frontend/)
|
|
146
|
+
cat package.json 2>/dev/null | jq -r '.scripts | to_entries[] | "\(.key): \(.value)"' | head -10
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Update config with detected commands:
|
|
150
|
+
```bash
|
|
151
|
+
# Example: if package.json has "dev": "next dev"
|
|
152
|
+
jq '.commands.dev = "npm run dev"' .ralph/config.json > .ralph/config.tmp && mv .ralph/config.tmp .ralph/config.json
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
For fullstack projects with separate frontend:
|
|
156
|
+
```bash
|
|
157
|
+
jq '.commands.dev = "cd frontend && npm run dev"' .ralph/config.json > .ralph/config.tmp && mv .ralph/config.tmp .ralph/config.json
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### 2d. Detect Build & Test
|
|
161
|
+
|
|
162
|
+
Check for build script in package.json:
|
|
163
|
+
```bash
|
|
164
|
+
cat package.json 2>/dev/null | jq -r '.scripts.build // empty'
|
|
165
|
+
cat frontend/package.json 2>/dev/null | jq -r '.scripts.build // empty'
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Update config with build command:
|
|
169
|
+
```bash
|
|
170
|
+
# If build script exists in root
|
|
171
|
+
jq '.checks.build = "npm run build"' .ralph/config.json > .ralph/config.tmp && mv .ralph/config.tmp .ralph/config.json
|
|
172
|
+
|
|
173
|
+
# If build script exists in frontend/
|
|
174
|
+
jq '.checks.build = "cd frontend && npm run build"' .ralph/config.json > .ralph/config.tmp && mv .ralph/config.tmp .ralph/config.json
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Detect test framework:
|
|
178
|
+
```bash
|
|
179
|
+
test -f playwright.config.ts && echo "playwright"
|
|
180
|
+
test -f vitest.config.ts && echo "vitest"
|
|
181
|
+
test -f jest.config.js && echo "jest"
|
|
182
|
+
test -f manage.py && echo "django"
|
|
183
|
+
test -f pytest.ini && echo "pytest"
|
|
184
|
+
test -f pyproject.toml && grep -q "pytest" pyproject.toml && echo "pytest"
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
Update config:
|
|
188
|
+
```bash
|
|
189
|
+
# If playwright found
|
|
190
|
+
jq '.playwright.enabled = true' .ralph/config.json > .ralph/config.tmp && mv .ralph/config.tmp .ralph/config.json
|
|
191
|
+
|
|
192
|
+
# If Django found (NO --parallel - it hides errors)
|
|
193
|
+
jq '.checks.test = "python manage.py test --keepdb"' .ralph/config.json > .ralph/config.tmp && mv .ralph/config.tmp .ralph/config.json
|
|
194
|
+
|
|
195
|
+
# If Django + Docker
|
|
196
|
+
jq '.checks.test = "docker compose exec -T web python manage.py test --keepdb"' .ralph/config.json > .ralph/config.tmp && mv .ralph/config.tmp .ralph/config.json
|
|
197
|
+
|
|
198
|
+
# If pytest found
|
|
199
|
+
jq '.checks.test = "pytest"' .ralph/config.json > .ralph/config.tmp && mv .ralph/config.tmp .ralph/config.json
|
|
200
|
+
|
|
201
|
+
# If vitest/jest found
|
|
202
|
+
jq '.checks.test = "npm test"' .ralph/config.json > .ralph/config.tmp && mv .ralph/config.tmp .ralph/config.json
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### 2e. Show Results
|
|
206
|
+
|
|
207
|
+
After updating, read the config and show user:
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
cat .ralph/config.json | jq '{paths, urls, commands, checks}'
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
Say: "I've auto-configured Ralph:
|
|
214
|
+
|
|
215
|
+
[Show the detected settings in a nice format]
|
|
216
|
+
|
|
217
|
+
Edit `.ralph/config.json` if anything needs adjusting."
|
|
218
|
+
|
|
219
|
+
### 2f. Test Credentials (Optional)
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
cat .ralph/config.json | jq -r '.auth.testUser // empty'
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
**If empty**, use AskUserQuestion:
|
|
226
|
+
- **Question:** "Add test credentials? Ralph needs these for authenticated endpoints."
|
|
227
|
+
- **Header:** "Test auth"
|
|
228
|
+
- **Options:**
|
|
229
|
+
- **Yes** - "I'll ask for email and password"
|
|
230
|
+
- **Skip** - "Edit .ralph/config.json later"
|
|
231
|
+
|
|
232
|
+
If "Yes":
|
|
233
|
+
- Ask for email, then password
|
|
234
|
+
- Update config:
|
|
235
|
+
```bash
|
|
236
|
+
jq --arg u "$EMAIL" --arg p "$PASSWORD" '.auth.testUser = $u | .auth.testPassword = $p' .ralph/config.json > .ralph/config.tmp && mv .ralph/config.tmp .ralph/config.json
|
|
237
|
+
```
|
|
238
|
+
- Say: "✓ Test credentials saved"
|
|
239
|
+
|
|
240
|
+
If "Skip":
|
|
241
|
+
- Say: "No problem! Add credentials to `.ralph/config.json` when needed."
|
|
242
|
+
|
|
243
|
+
**If already set:**
|
|
244
|
+
- Say: "✓ Test credentials configured"
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## Step 3: Check for DNA
|
|
249
|
+
|
|
250
|
+
Check if `~/.claude/DNA.md` exists.
|
|
251
|
+
|
|
252
|
+
**If DNA.md does NOT exist:**
|
|
253
|
+
|
|
254
|
+
Use AskUserQuestion:
|
|
255
|
+
- **Question:** "Want to set up your personal preferences? This teaches me how you like to work."
|
|
256
|
+
- **Header:** "DNA setup"
|
|
257
|
+
- **Options:**
|
|
258
|
+
- **Yes, set up my DNA** - "Takes ~2 minutes, makes our collaboration better"
|
|
259
|
+
- **Skip for now** - "You can run /my-dna anytime"
|
|
260
|
+
|
|
261
|
+
If user selects "Yes, set up my DNA":
|
|
262
|
+
- Run the `/my-dna` command inline (execute its full flow)
|
|
263
|
+
- After completing, continue to Step 4
|
|
264
|
+
|
|
265
|
+
If user selects "Skip for now":
|
|
266
|
+
- Say: "No problem! Run `/my-dna` anytime."
|
|
267
|
+
- Continue to Step 4
|
|
268
|
+
|
|
269
|
+
**If DNA.md EXISTS:**
|
|
270
|
+
|
|
271
|
+
Skip this step entirely. Move to Step 4.
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## Step 4: Quick Reference
|
|
276
|
+
|
|
277
|
+
Print this:
|
|
278
|
+
|
|
279
|
+
```
|
|
280
|
+
Quick Reference
|
|
281
|
+
───────────────
|
|
282
|
+
|
|
283
|
+
Workflow:
|
|
284
|
+
/idea [feature] Brainstorm → PRD
|
|
285
|
+
npx ralph run Execute autonomously
|
|
286
|
+
npx ralph status Check progress
|
|
287
|
+
npx ralph stop Stop after current story
|
|
288
|
+
|
|
289
|
+
Quality:
|
|
290
|
+
/vibe-check Audit code quality
|
|
291
|
+
/review Review changes
|
|
292
|
+
npx ralph check Run verification
|
|
293
|
+
|
|
294
|
+
Other:
|
|
295
|
+
/my-dna Set preferences
|
|
296
|
+
/explain Understand code
|
|
297
|
+
/styleguide Generate design system
|
|
298
|
+
/vibe-help Full cheatsheet
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
Say: "You're all set! Run `/idea [your next feature]` to get started."
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run a comprehensive code quality check looking for common patterns that AI coding agents introduce.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Vibe Check
|
|
6
|
+
|
|
7
|
+
Run a comprehensive code quality check on the current codebase, looking for common patterns that AI coding agents introduce.
|
|
8
|
+
|
|
9
|
+
## Instructions
|
|
10
|
+
|
|
11
|
+
Analyze the codebase for the following issues. For each category, search the relevant file types and report what you find.
|
|
12
|
+
|
|
13
|
+
### 1. Debug Statements
|
|
14
|
+
Search for debug statements that shouldn't go to production:
|
|
15
|
+
- Python: `print()`, `breakpoint()`, `pdb.set_trace()`, `ipdb`
|
|
16
|
+
- JS/TS: `console.log()`, `console.debug()`, `console.info()`, `debugger`
|
|
17
|
+
|
|
18
|
+
Ignore: `console.error()`, `console.warn()`, `logger.*` calls, and lines with `// noqa: debug` or `# noqa: debug`
|
|
19
|
+
|
|
20
|
+
### 2. TODO/FIXME Comments
|
|
21
|
+
Search for unfinished work markers:
|
|
22
|
+
- `TODO`, `FIXME`, `XXX`, `HACK`, `BUG`
|
|
23
|
+
|
|
24
|
+
Skip markdown files and dedicated TODO files.
|
|
25
|
+
|
|
26
|
+
### 3. Empty Catch Blocks
|
|
27
|
+
Search for error handling that silently swallows errors:
|
|
28
|
+
- Python: `except: pass` or `except Exception: pass`
|
|
29
|
+
- JS/TS: `catch (e) {}` or `.catch(() => {})`
|
|
30
|
+
|
|
31
|
+
### 4. Hardcoded URLs
|
|
32
|
+
Search for localhost/development URLs:
|
|
33
|
+
- `http://localhost:`
|
|
34
|
+
- `http://127.0.0.1:`
|
|
35
|
+
|
|
36
|
+
Skip test files and config files.
|
|
37
|
+
|
|
38
|
+
### 5. snake_case in TypeScript
|
|
39
|
+
Search TypeScript interface/type definitions for snake_case property names that should be camelCase.
|
|
40
|
+
|
|
41
|
+
### 6. Magic Numbers
|
|
42
|
+
In Python files, look for hardcoded numbers > 10 that aren't in constants files.
|
|
43
|
+
|
|
44
|
+
### 7. Potential Secrets
|
|
45
|
+
Search for patterns that look like hardcoded secrets:
|
|
46
|
+
- `AKIA` (AWS keys)
|
|
47
|
+
- `sk-` followed by long strings (OpenAI/Stripe)
|
|
48
|
+
- `ghp_` (GitHub tokens)
|
|
49
|
+
- Connection strings with passwords
|
|
50
|
+
|
|
51
|
+
Skip `.env.example` files.
|
|
52
|
+
|
|
53
|
+
### 8. DRY Violations
|
|
54
|
+
Look for obvious code duplication:
|
|
55
|
+
- Very similar functions
|
|
56
|
+
- Repeated string literals (same long string 3+ times)
|
|
57
|
+
- Copy-pasted code blocks
|
|
58
|
+
|
|
59
|
+
## Output Format
|
|
60
|
+
|
|
61
|
+
Provide a summary report like this:
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
## Vibe Check Report
|
|
65
|
+
|
|
66
|
+
### Summary
|
|
67
|
+
- X issues found across Y files
|
|
68
|
+
- Z high priority (secrets, hardcoded URLs)
|
|
69
|
+
- W low priority (TODOs, debug statements)
|
|
70
|
+
|
|
71
|
+
### High Priority (fix before committing)
|
|
72
|
+
|
|
73
|
+
#### Potential Secrets
|
|
74
|
+
- file.py:42 - Looks like an API key
|
|
75
|
+
|
|
76
|
+
#### Hardcoded URLs
|
|
77
|
+
- api.ts:15 - localhost URL should use env var
|
|
78
|
+
|
|
79
|
+
### Medium Priority (fix soon)
|
|
80
|
+
|
|
81
|
+
#### Empty Catch Blocks
|
|
82
|
+
- service.py:88 - except: pass (silently swallows errors)
|
|
83
|
+
|
|
84
|
+
#### snake_case in TypeScript
|
|
85
|
+
- types.ts:12 - `user_id` should be `userId`
|
|
86
|
+
|
|
87
|
+
### Low Priority (nice to fix)
|
|
88
|
+
|
|
89
|
+
#### Debug Statements
|
|
90
|
+
- utils.py:23 - print() statement
|
|
91
|
+
- component.tsx:45 - console.log()
|
|
92
|
+
|
|
93
|
+
#### TODO/FIXME
|
|
94
|
+
- auth.py:67 - TODO: implement refresh token
|
|
95
|
+
|
|
96
|
+
### Clean Areas
|
|
97
|
+
- No magic numbers found
|
|
98
|
+
- No DRY violations detected
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
If everything looks good:
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
## Vibe Check Report
|
|
105
|
+
|
|
106
|
+
✨ Looking good! No issues found.
|
|
107
|
+
|
|
108
|
+
Your code is clean and ready to ship.
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Notes
|
|
112
|
+
|
|
113
|
+
- Focus on **actionable** findings, not nitpicks
|
|
114
|
+
- Group by severity to help prioritize
|
|
115
|
+
- If a file has many issues, summarize rather than listing every line
|
|
116
|
+
- Be encouraging - the goal is to help, not shame
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Quick reference cheatsheet for all thrivekit commands including Ralph.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Vibe & Thrive Cheatsheet
|
|
6
|
+
|
|
7
|
+
Print this cheatsheet for the user. Do not add any commentary or explanation.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## The Loop
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
/idea [feature] brainstorm & generate PRD
|
|
15
|
+
npx ralph run autonomous coding loop
|
|
16
|
+
npx ralph status check progress
|
|
17
|
+
npx ralph stop stop after current story
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
Run `/vibe-list` to see all commands.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Quality
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
/vibe-check audit code quality
|
|
30
|
+
/review security-focused review
|
|
31
|
+
npx ralph check run verification only
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Setup & Learning
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
/tour guided setup
|
|
40
|
+
/my-dna set preferences
|
|
41
|
+
/sign teach Ralph a pattern
|
|
42
|
+
npx ralph signs view learned patterns
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
*https://github.com/allthriveai/thrivekit*
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Show complete reference for all thrivekit commands (slash commands, Ralph CLI, vibe CLI).
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Vibe & Thrive - Complete Reference
|
|
6
|
+
|
|
7
|
+
Print this complete reference for the user. Do not add any commentary.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Slash Commands (in Claude Code)
|
|
12
|
+
|
|
13
|
+
| Command | Description |
|
|
14
|
+
|---------|-------------|
|
|
15
|
+
| `/idea [feature]` | Brainstorm in plan mode, generate PRD for Ralph |
|
|
16
|
+
| `/sign` | Add a learned pattern for Ralph to remember |
|
|
17
|
+
| `/my-dna` | Set up your personal style preferences |
|
|
18
|
+
| `/vibe-check` | Audit code quality before shipping |
|
|
19
|
+
| `/review` | Code review with OWASP security checks |
|
|
20
|
+
| `/explain` | Explain code line by line |
|
|
21
|
+
| `/styleguide` | Generate UI component design system |
|
|
22
|
+
| `/tour` | Interactive walkthrough of thrivekit |
|
|
23
|
+
| `/vibe-help` | Quick reference cheatsheet |
|
|
24
|
+
| `/vibe-list` | This complete reference |
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Ralph CLI (in terminal)
|
|
29
|
+
|
|
30
|
+
### Setup & Status
|
|
31
|
+
| Command | Description |
|
|
32
|
+
|---------|-------------|
|
|
33
|
+
| `npx ralph init` | Initialize `.ralph/` in current directory |
|
|
34
|
+
| `npx ralph status` | Show feature, stories, pass/fail counts |
|
|
35
|
+
| `npx ralph progress` | Show last 50 lines of progress log |
|
|
36
|
+
| `npx ralph version` | Show version info |
|
|
37
|
+
| `npx ralph help` | Show built-in help |
|
|
38
|
+
|
|
39
|
+
### PRD Generation
|
|
40
|
+
| Command | Description |
|
|
41
|
+
|---------|-------------|
|
|
42
|
+
| `npx ralph prd "notes"` | Generate PRD interactively from description |
|
|
43
|
+
| `npx ralph prd --file spec.md` | Generate PRD from a file |
|
|
44
|
+
| `npx ralph prd --accept` | Save generated PRD to `.ralph/prd.json` |
|
|
45
|
+
|
|
46
|
+
### Autonomous Loop
|
|
47
|
+
| Command | Description |
|
|
48
|
+
|---------|-------------|
|
|
49
|
+
| `npx ralph run` | Run loop until all stories pass |
|
|
50
|
+
| `npx ralph run --max 10` | Limit to N iterations (default: 20) |
|
|
51
|
+
| `npx ralph run --story TASK-001` | Run for specific task only |
|
|
52
|
+
| `npx ralph stop` | Stop after current story completes |
|
|
53
|
+
|
|
54
|
+
### Verification
|
|
55
|
+
| Command | Description |
|
|
56
|
+
|---------|-------------|
|
|
57
|
+
| `npx ralph check` | Run all configured checks |
|
|
58
|
+
| `npx ralph verify TASK-001` | Verify a specific task |
|
|
59
|
+
|
|
60
|
+
### Signs (Learned Patterns)
|
|
61
|
+
| Command | Description |
|
|
62
|
+
|---------|-------------|
|
|
63
|
+
| `npx ralph signs` | List all learned patterns |
|
|
64
|
+
| `npx ralph sign "pattern" [cat]` | Add pattern with optional category |
|
|
65
|
+
| `npx ralph unsign <id or text>` | Remove a sign by ID or text match |
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Vibe CLI (in terminal)
|
|
70
|
+
|
|
71
|
+
| Command | Description |
|
|
72
|
+
|---------|-------------|
|
|
73
|
+
| `vibe help` | Show terminal quick reference |
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## The Loop
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
/idea [feature] Brainstorm → PRD
|
|
81
|
+
npx ralph run Autonomous coding
|
|
82
|
+
npx ralph status Check progress
|
|
83
|
+
npx ralph stop Stop after current story
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Slash Command Details
|
|
89
|
+
|
|
90
|
+
### /idea [feature description]
|
|
91
|
+
Brainstorm in plan mode, explore codebase, ask clarifying questions.
|
|
92
|
+
- Writes idea to `docs/ideas/{feature}.md`
|
|
93
|
+
- On approval, splits into PRD stories
|
|
94
|
+
- Writes to `.ralph/prd.json`
|
|
95
|
+
|
|
96
|
+
### /review [file or selection]
|
|
97
|
+
Code review with security focus (OWASP Top 10):
|
|
98
|
+
- **Quick review** - Critical/high issues only
|
|
99
|
+
- **Full review** - Everything
|
|
100
|
+
- **Security review** - Deep dive on vulnerabilities
|
|
101
|
+
- **Performance review** - Focus on speed
|
|
102
|
+
|
|
103
|
+
### /explain [file or code]
|
|
104
|
+
Line-by-line explanation:
|
|
105
|
+
- High-level overview
|
|
106
|
+
- Walk through each section
|
|
107
|
+
- Highlight key concepts
|
|
108
|
+
- Summarize takeaways
|
|
109
|
+
|
|
110
|
+
### /styleguide
|
|
111
|
+
Generate design system page at `/styleguide`:
|
|
112
|
+
- Discovers your tech stack
|
|
113
|
+
- Asks about vibe (minimal, bold, dark, etc.)
|
|
114
|
+
- Asks about colors, border radius, components
|
|
115
|
+
- Generates tokens, buttons, forms, cards, feedback
|
|
116
|
+
|
|
117
|
+
### /vibe-check
|
|
118
|
+
Audit code for AI-introduced patterns:
|
|
119
|
+
- Debug statements
|
|
120
|
+
- TODO/FIXME comments
|
|
121
|
+
- Empty catch blocks
|
|
122
|
+
- Hardcoded URLs
|
|
123
|
+
- Potential secrets
|
|
124
|
+
- DRY violations
|
|
125
|
+
|
|
126
|
+
### /my-dna
|
|
127
|
+
Interactive wizard to set up your personal style:
|
|
128
|
+
- Core values (simplicity, speed, correctness, etc.)
|
|
129
|
+
- Communication preferences (brief vs detailed, tone)
|
|
130
|
+
- Working style (ask first vs try solutions)
|
|
131
|
+
- Learning preferences (show alternatives, explain why)
|
|
132
|
+
|
|
133
|
+
Creates `~/.claude/DNA.md` - applies to all your projects.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Signs Examples
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
# Add patterns Ralph should follow
|
|
141
|
+
npx ralph sign "Always use camelCase in WebSocket responses" frontend
|
|
142
|
+
npx ralph sign "Run migrations before seeding" backend
|
|
143
|
+
npx ralph sign "Check for null before accessing nested props" general
|
|
144
|
+
|
|
145
|
+
# List learned patterns
|
|
146
|
+
npx ralph signs
|
|
147
|
+
|
|
148
|
+
# Remove a sign
|
|
149
|
+
npx ralph unsign sign-001
|
|
150
|
+
npx ralph unsign "camelCase"
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Environment Variables
|
|
156
|
+
|
|
157
|
+
| Variable | Default | Description |
|
|
158
|
+
|----------|---------|-------------|
|
|
159
|
+
| `RALPH_DIR` | `.ralph` | Override ralph directory |
|
|
160
|
+
| `PROMPT_FILE` | `PROMPT.md` | Override prompt file |
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Config (.ralph/config.json)
|
|
165
|
+
|
|
166
|
+
```json
|
|
167
|
+
{
|
|
168
|
+
"checks": {
|
|
169
|
+
"lint": "npm run lint",
|
|
170
|
+
"test": "npm test",
|
|
171
|
+
"build": "npm run build"
|
|
172
|
+
},
|
|
173
|
+
"testUrlBase": "http://localhost:3000",
|
|
174
|
+
"maxSessionSeconds": 600
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## File Structure
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
# Project files
|
|
184
|
+
.ralph/
|
|
185
|
+
├── config.json # Verification checks, settings
|
|
186
|
+
├── prd.json # Current feature PRD
|
|
187
|
+
├── signs.json # Learned patterns
|
|
188
|
+
├── progress.txt # Activity log
|
|
189
|
+
├── archive/ # Completed PRDs
|
|
190
|
+
└── screenshots/ # Browser verification captures
|
|
191
|
+
|
|
192
|
+
CLAUDE.md # Project standards (shared with team)
|
|
193
|
+
PROMPT.md # Base prompt for Ralph sessions
|
|
194
|
+
docs/ideas/ # Brainstorm outputs from /idea
|
|
195
|
+
|
|
196
|
+
# Global files (your home directory)
|
|
197
|
+
~/.claude/
|
|
198
|
+
└── DNA.md # Your DNA - personal preferences (from /my-dna)
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
*https://github.com/allthriveai/thrivekit*
|