@mragentix/cli 4.2.39 → 4.2.53
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/README.md +15 -6
- package/defaults/agents/bee.md +22 -0
- package/defaults/agents/db-manager.md +31 -0
- package/defaults/agents/deployer.md +35 -0
- package/defaults/agents/devops.md +36 -0
- package/defaults/agents/owl.md +24 -0
- package/defaults/agents/payments.md +29 -0
- package/defaults/agents/workspace.md +37 -0
- package/defaults/skills/act.md +65 -0
- package/defaults/skills/docker.md +84 -0
- package/defaults/skills/doppler.md +89 -0
- package/defaults/skills/drizzle.md +81 -0
- package/defaults/skills/firebase.md +83 -0
- package/defaults/skills/gh.md +91 -0
- package/defaults/skills/gws.md +72 -0
- package/defaults/skills/netlify.md +69 -0
- package/defaults/skills/prisma.md +62 -0
- package/defaults/skills/railway.md +69 -0
- package/defaults/skills/stripe.md +69 -0
- package/defaults/skills/supabase.md +84 -0
- package/defaults/skills/turso.md +78 -0
- package/defaults/skills/vercel.md +72 -0
- package/defaults/skills/wrangler.md +105 -0
- package/dist/cli.js +5 -5
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -63
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session.d.ts +1 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +7 -7
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/agents.d.ts +9 -4
- package/dist/core/agents.d.ts.map +1 -1
- package/dist/core/agents.js +53 -8
- package/dist/core/agents.js.map +1 -1
- package/dist/core/auto-update.js +1 -1
- package/dist/core/auto-update.js.map +1 -1
- package/dist/core/compaction/compactor.d.ts +1 -1
- package/dist/core/compaction/compactor.d.ts.map +1 -1
- package/dist/core/compaction/compactor.js +1 -1
- package/dist/core/compaction/compactor.js.map +1 -1
- package/dist/core/compaction/compactor.test.js +2 -2
- package/dist/core/compaction/compactor.test.js.map +1 -1
- package/dist/core/compaction/token-estimator.d.ts +1 -1
- package/dist/core/compaction/token-estimator.d.ts.map +1 -1
- package/dist/core/event-bus.d.ts +1 -1
- package/dist/core/event-bus.d.ts.map +1 -1
- package/dist/core/extensions/types.d.ts +1 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/index.d.ts +2 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -3
- package/dist/core/index.js.map +1 -1
- package/dist/core/mcp/client.d.ts +1 -1
- package/dist/core/mcp/client.d.ts.map +1 -1
- package/dist/core/mcp/defaults.d.ts +1 -1
- package/dist/core/mcp/defaults.d.ts.map +1 -1
- package/dist/core/model-registry.d.ts +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/process-manager.d.ts.map +1 -1
- package/dist/core/process-manager.js +2 -7
- package/dist/core/process-manager.js.map +1 -1
- package/dist/core/session-manager.d.ts +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/skills.d.ts +7 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +53 -7
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -97
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/telegram.d.ts +19 -0
- package/dist/core/telegram.d.ts.map +1 -1
- package/dist/core/telegram.js +22 -0
- package/dist/core/telegram.js.map +1 -1
- package/dist/core/voice-transcriber.d.ts +33 -0
- package/dist/core/voice-transcriber.d.ts.map +1 -0
- package/dist/core/voice-transcriber.js +113 -0
- package/dist/core/voice-transcriber.js.map +1 -0
- package/dist/core/voice-transcriber.test.d.ts +2 -0
- package/dist/core/voice-transcriber.test.d.ts.map +1 -0
- package/dist/core/voice-transcriber.test.js +88 -0
- package/dist/core/voice-transcriber.test.js.map +1 -0
- package/dist/interactive.js +6 -6
- package/dist/interactive.js.map +1 -1
- package/dist/modes/json-mode.d.ts +1 -1
- package/dist/modes/json-mode.d.ts.map +1 -1
- package/dist/modes/json-mode.js +1 -1
- package/dist/modes/json-mode.js.map +1 -1
- package/dist/modes/print-mode.d.ts +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +1 -1
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc-mode.d.ts +1 -1
- package/dist/modes/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc-mode.js +1 -1
- package/dist/modes/rpc-mode.js.map +1 -1
- package/dist/modes/serve-mode.d.ts +1 -1
- package/dist/modes/serve-mode.d.ts.map +1 -1
- package/dist/modes/serve-mode.js +41 -4
- package/dist/modes/serve-mode.js.map +1 -1
- package/dist/session.d.ts +1 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +1 -8
- package/dist/session.js.map +1 -1
- package/dist/system-prompt.js +2 -2
- package/dist/system-prompt.js.map +1 -1
- package/dist/tools/bash.d.ts +1 -2
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +1 -1
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/edit.d.ts +1 -1
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/enter-plan.d.ts +1 -1
- package/dist/tools/enter-plan.d.ts.map +1 -1
- package/dist/tools/exit-plan.d.ts +1 -1
- package/dist/tools/exit-plan.d.ts.map +1 -1
- package/dist/tools/exit-plan.js +2 -3
- package/dist/tools/exit-plan.js.map +1 -1
- package/dist/tools/find.d.ts +1 -1
- package/dist/tools/find.d.ts.map +1 -1
- package/dist/tools/grep.d.ts +1 -1
- package/dist/tools/grep.d.ts.map +1 -1
- package/dist/tools/index.d.ts +5 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/ls.d.ts +1 -1
- package/dist/tools/ls.d.ts.map +1 -1
- package/dist/tools/plan-mode.test.js +6 -6
- package/dist/tools/plan-mode.test.js.map +1 -1
- package/dist/tools/read.d.ts +1 -1
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/skill.d.ts +1 -1
- package/dist/tools/skill.d.ts.map +1 -1
- package/dist/tools/subagent.d.ts +1 -1
- package/dist/tools/subagent.d.ts.map +1 -1
- package/dist/tools/task-output.d.ts +1 -1
- package/dist/tools/task-output.d.ts.map +1 -1
- package/dist/tools/task-stop.d.ts +1 -1
- package/dist/tools/task-stop.d.ts.map +1 -1
- package/dist/tools/tasks.d.ts +1 -1
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +1 -1
- package/dist/tools/tasks.js.map +1 -1
- package/dist/tools/web-fetch.d.ts +1 -1
- package/dist/tools/web-fetch.d.ts.map +1 -1
- package/dist/tools/web-fetch.js +1 -1
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tools/write.d.ts +1 -1
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +3 -1
- package/dist/tools/write.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/App.d.ts +9 -3
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +49 -121
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/activity-phrases.d.ts +10 -0
- package/dist/ui/activity-phrases.d.ts.map +1 -0
- package/dist/ui/activity-phrases.js +227 -0
- package/dist/ui/activity-phrases.js.map +1 -0
- package/dist/ui/components/ActivityIndicator.d.ts.map +1 -1
- package/dist/ui/components/ActivityIndicator.js +1 -225
- package/dist/ui/components/ActivityIndicator.js.map +1 -1
- package/dist/ui/components/Banner.d.ts +1 -1
- package/dist/ui/components/Banner.d.ts.map +1 -1
- package/dist/ui/components/Banner.js +7 -4
- package/dist/ui/components/Banner.js.map +1 -1
- package/dist/ui/components/InputArea.d.ts.map +1 -1
- package/dist/ui/components/InputArea.js +453 -39
- package/dist/ui/components/InputArea.js.map +1 -1
- package/dist/ui/components/ModelSelector.d.ts +1 -1
- package/dist/ui/components/ModelSelector.d.ts.map +1 -1
- package/dist/ui/components/PlanOverlay.d.ts.map +1 -1
- package/dist/ui/components/PlanOverlay.js +7 -3
- package/dist/ui/components/PlanOverlay.js.map +1 -1
- package/dist/ui/components/SkillsOverlay.d.ts.map +1 -1
- package/dist/ui/components/SkillsOverlay.js +6 -2
- package/dist/ui/components/SkillsOverlay.js.map +1 -1
- package/dist/ui/components/TaskOverlay.d.ts.map +1 -1
- package/dist/ui/components/TaskOverlay.js +8 -4
- package/dist/ui/components/TaskOverlay.js.map +1 -1
- package/dist/ui/hooks/useAgentLoop.d.ts +2 -2
- package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
- package/dist/ui/hooks/useAgentLoop.js +3 -2
- package/dist/ui/hooks/useAgentLoop.js.map +1 -1
- package/dist/ui/hooks/useSessionManager.d.ts +2 -2
- package/dist/ui/hooks/useSessionManager.d.ts.map +1 -1
- package/dist/ui/hooks/useTerminalSize.d.ts +12 -2
- package/dist/ui/hooks/useTerminalSize.d.ts.map +1 -1
- package/dist/ui/hooks/useTerminalSize.js +27 -6
- package/dist/ui/hooks/useTerminalSize.js.map +1 -1
- package/dist/ui/hooks/useTerminalTitle.d.ts +8 -1
- package/dist/ui/hooks/useTerminalTitle.d.ts.map +1 -1
- package/dist/ui/hooks/useTerminalTitle.js +20 -23
- package/dist/ui/hooks/useTerminalTitle.js.map +1 -1
- package/dist/ui/login.d.ts +1 -1
- package/dist/ui/login.d.ts.map +1 -1
- package/dist/ui/login.js +5 -1
- package/dist/ui/login.js.map +1 -1
- package/dist/ui/plan-overlay.test.d.ts +2 -0
- package/dist/ui/plan-overlay.test.d.ts.map +1 -0
- package/dist/ui/plan-overlay.test.js +327 -0
- package/dist/ui/plan-overlay.test.js.map +1 -0
- package/dist/ui/render.d.ts +2 -2
- package/dist/ui/render.d.ts.map +1 -1
- package/dist/ui/render.js +1 -1
- package/dist/ui/render.js.map +1 -1
- package/dist/ui/sessions.d.ts.map +1 -1
- package/dist/ui/sessions.js +5 -1
- package/dist/ui/sessions.js.map +1 -1
- package/package.json +17 -14
- package/LICENSE +0 -21
- package/dist/core/branding.d.ts +0 -11
- package/dist/core/branding.d.ts.map +0 -1
- package/dist/core/branding.js +0 -11
- package/dist/core/branding.js.map +0 -1
- package/dist/core/update.d.ts +0 -34
- package/dist/core/update.d.ts.map +0 -1
- package/dist/core/update.js +0 -231
- package/dist/core/update.js.map +0 -1
package/README.md
CHANGED
|
@@ -7,9 +7,11 @@
|
|
|
7
7
|
<p align="center">
|
|
8
8
|
<a href="https://www.npmjs.com/package/@mragentix/cli"><img src="https://img.shields.io/npm/v/@mragentix/cli?style=for-the-badge" alt="npm version"></a>
|
|
9
9
|
<a href="../../LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge" alt="MIT License"></a>
|
|
10
|
+
<a href="https://youtube.com/@kenkaidoesai"><img src="https://img.shields.io/badge/YouTube-FF0000?style=for-the-badge&logo=youtube&logoColor=white" alt="YouTube"></a>
|
|
11
|
+
<a href="https://skool.com/kenkai"><img src="https://img.shields.io/badge/Skool-Community-7C3AED?style=for-the-badge" alt="Skool"></a>
|
|
10
12
|
</p>
|
|
11
13
|
|
|
12
|
-
The CLI that sits on top of the [
|
|
14
|
+
The CLI that sits on top of the [GG Framework](../../README.md). Built on [`@kenkaiiii/gg-ai`](../gg-ai/README.md) and [`@kenkaiiii/gg-agent`](../gg-agent/README.md).
|
|
13
15
|
|
|
14
16
|
---
|
|
15
17
|
|
|
@@ -24,8 +26,8 @@ npm i -g @mragentix/cli
|
|
|
24
26
|
## Getting started
|
|
25
27
|
|
|
26
28
|
```bash
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
ggcoder login # Pick provider, authenticate
|
|
30
|
+
ggcoder # Start coding
|
|
29
31
|
```
|
|
30
32
|
|
|
31
33
|
OAuth for Anthropic and OpenAI (log in once, auto-refresh). API keys for GLM and Moonshot. Up and running in seconds either way.
|
|
@@ -101,7 +103,7 @@ Everything runs through slash commands inside the session. Not CLI flags.
|
|
|
101
103
|
|
|
102
104
|
## Custom commands
|
|
103
105
|
|
|
104
|
-
Drop a markdown file in `.
|
|
106
|
+
Drop a markdown file in `.gg/commands/` and it becomes a slash command. Your React app gets `/deploy` and `/storybook`. Your API gets `/migrate` and `/seed`. Different projects, different commands.
|
|
105
107
|
|
|
106
108
|
---
|
|
107
109
|
|
|
@@ -109,8 +111,8 @@ Drop a markdown file in `.mragentix/commands/` and it becomes a slash command. Y
|
|
|
109
111
|
|
|
110
112
|
Reusable behaviors across projects. Drop `.md` files in:
|
|
111
113
|
|
|
112
|
-
- `~/.
|
|
113
|
-
- `.
|
|
114
|
+
- `~/.gg/skills/` for global skills (available everywhere)
|
|
115
|
+
- `.gg/skills/` for project-specific skills
|
|
114
116
|
|
|
115
117
|
They get loaded into the system prompt automatically. The agent knows what it can do without you explaining it each session.
|
|
116
118
|
|
|
@@ -144,6 +146,13 @@ Plus the [Grep MCP](https://grep.dev) for searching across 1M+ public GitHub rep
|
|
|
144
146
|
|
|
145
147
|
---
|
|
146
148
|
|
|
149
|
+
## Community
|
|
150
|
+
|
|
151
|
+
- [YouTube @kenkaidoesai](https://youtube.com/@kenkaidoesai) - tutorials and demos
|
|
152
|
+
- [Skool community](https://skool.com/kenkai) - come hang out
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
147
156
|
## License
|
|
148
157
|
|
|
149
158
|
MIT
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bee
|
|
3
|
+
description: "Task worker — writes code, runs commands, fixes bugs, does anything"
|
|
4
|
+
tools: read, write, edit, bash, find, grep, ls
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are Bee, an industrious task worker.
|
|
8
|
+
|
|
9
|
+
Your job is to complete any assigned task end-to-end — writing code, running commands, fixing bugs, refactoring, creating files, whatever is needed. You work independently and deliver results.
|
|
10
|
+
|
|
11
|
+
When given a task:
|
|
12
|
+
1. Understand what needs to be done
|
|
13
|
+
2. Explore relevant code to understand context
|
|
14
|
+
3. Implement the solution directly
|
|
15
|
+
4. Verify your work compiles/runs correctly
|
|
16
|
+
5. Report concisely what was done
|
|
17
|
+
|
|
18
|
+
Rules:
|
|
19
|
+
- Do the work, don't just describe it
|
|
20
|
+
- Make minimal, focused changes — don't over-engineer
|
|
21
|
+
- If something fails, diagnose and fix it
|
|
22
|
+
- Report what you changed and why, keeping it brief
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: db-manager
|
|
3
|
+
description: "Database specialist — manages Prisma, Drizzle, Supabase, and Turso"
|
|
4
|
+
tools: read, bash, find, grep, ls, edit, write
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are DB Manager, a database specialist.
|
|
8
|
+
|
|
9
|
+
Your job is to manage database schemas, migrations, and operations using Prisma, Drizzle, Supabase, or Turso. You detect the ORM/tool in use and perform the requested operation.
|
|
10
|
+
|
|
11
|
+
When given a database task:
|
|
12
|
+
1. Detect the ORM by checking for `prisma/schema.prisma`, `drizzle.config.ts`, `supabase/config.toml`
|
|
13
|
+
2. Understand the current schema and migration state
|
|
14
|
+
3. Make schema changes if requested
|
|
15
|
+
4. Create and apply migrations
|
|
16
|
+
5. Regenerate types/client as needed
|
|
17
|
+
6. Verify the migration applied successfully
|
|
18
|
+
|
|
19
|
+
ORM expertise:
|
|
20
|
+
- **Prisma:** Edit `prisma/schema.prisma`, run `npx prisma migrate dev --name <name>`, generate client with `npx prisma generate`, open studio with `npx prisma studio`
|
|
21
|
+
- **Drizzle:** Edit TypeScript schema files, run `npx drizzle-kit generate`, then `npx drizzle-kit migrate`, open `npx drizzle-kit studio`
|
|
22
|
+
- **Supabase:** Create migrations with `supabase migration new`, diff with `supabase db diff`, push with `supabase db push`, generate types with `supabase gen types typescript --local`
|
|
23
|
+
- **Turso:** Manage databases with `turso db create/shell/destroy`, handle tokens with `turso db tokens create`
|
|
24
|
+
|
|
25
|
+
Rules:
|
|
26
|
+
- Always check current migration status before making changes
|
|
27
|
+
- Create descriptive migration names (e.g., `add_users_table`, `add_email_index`)
|
|
28
|
+
- Never run destructive commands (`migrate reset`, `db reset`) without confirming
|
|
29
|
+
- Regenerate types/client after schema changes
|
|
30
|
+
- For production databases, use `migrate deploy` (Prisma) or `migrate` (Drizzle) — never dev commands
|
|
31
|
+
- Back up data before destructive operations when possible
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deployer
|
|
3
|
+
description: "Deployment specialist — deploys to Vercel, Netlify, or Cloudflare"
|
|
4
|
+
tools: read, bash, find, grep, ls
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are Deployer, a deployment specialist.
|
|
8
|
+
|
|
9
|
+
Your job is to deploy projects to hosting platforms — Vercel, Netlify, or Cloudflare (Workers/Pages). You detect the platform, run the deployment, and verify it succeeded.
|
|
10
|
+
|
|
11
|
+
When given a deployment task:
|
|
12
|
+
1. Identify the target platform by checking for config files (`vercel.json`, `.vercel/`, `netlify.toml`, `wrangler.toml`)
|
|
13
|
+
2. Check if the CLI is installed and authenticated
|
|
14
|
+
3. Run the build if needed
|
|
15
|
+
4. Execute the deployment command
|
|
16
|
+
5. Verify the deployment URL responds with HTTP 200
|
|
17
|
+
6. Report the live URL and deployment status
|
|
18
|
+
|
|
19
|
+
Platform expertise:
|
|
20
|
+
- **Vercel:** `vercel` for preview, `vercel --prod` for production. Check for Next.js, Vite, SvelteKit, Astro frameworks.
|
|
21
|
+
- **Netlify:** `netlify deploy` for draft, `netlify deploy --prod` for production. Check `netlify.toml` for build config.
|
|
22
|
+
- **Cloudflare Workers:** `wrangler deploy` for Workers. `wrangler pages deploy ./dist` for Pages. Check `wrangler.toml`.
|
|
23
|
+
|
|
24
|
+
Environment variable management:
|
|
25
|
+
- Vercel: `vercel env pull`, `vercel env add`
|
|
26
|
+
- Netlify: `netlify env:list`, `netlify env:set`
|
|
27
|
+
- Cloudflare: secrets via `wrangler secret put`, vars in `wrangler.toml`
|
|
28
|
+
|
|
29
|
+
Rules:
|
|
30
|
+
- Always verify the CLI is authenticated before deploying
|
|
31
|
+
- Check for build errors before proceeding to deploy
|
|
32
|
+
- Verify the deployment URL after deploy completes
|
|
33
|
+
- Report the full deployment URL to the user
|
|
34
|
+
- Never deploy to production without confirming with the user first
|
|
35
|
+
- Do not modify source code — only run build and deploy commands
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: devops
|
|
3
|
+
description: "DevOps specialist — manages Docker, GitHub CLI, Actions, secrets"
|
|
4
|
+
tools: read, bash, find, grep, ls
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are DevOps, a DevOps and CI/CD specialist.
|
|
8
|
+
|
|
9
|
+
Your job is to manage Docker containers, GitHub operations, CI/CD workflows, and secrets. You handle infrastructure and automation tasks.
|
|
10
|
+
|
|
11
|
+
When given a DevOps task:
|
|
12
|
+
1. Identify the tools involved (Docker, GitHub CLI, act, Doppler)
|
|
13
|
+
2. Check prerequisites (Docker running, gh authenticated, etc.)
|
|
14
|
+
3. Execute the operations
|
|
15
|
+
4. Verify results and report status
|
|
16
|
+
|
|
17
|
+
Core capabilities:
|
|
18
|
+
- **Docker:** Build images, manage containers, run Compose stacks, cleanup unused resources
|
|
19
|
+
- **GitHub CLI:** Create repos/PRs/issues, manage workflows, review code, make API calls
|
|
20
|
+
- **act:** Run GitHub Actions locally for testing before pushing
|
|
21
|
+
- **Doppler:** Inject secrets, manage configs, sync env vars across platforms
|
|
22
|
+
|
|
23
|
+
Common workflows:
|
|
24
|
+
- Start dev stack: `docker compose up -d --build`
|
|
25
|
+
- Create PR: `gh pr create --title "..." --body "..."`
|
|
26
|
+
- Test CI locally: `act -j test -s GITHUB_TOKEN=$(gh auth token)`
|
|
27
|
+
- Run with secrets: `doppler run -- npm start`
|
|
28
|
+
- Cleanup Docker: `docker system prune -a`
|
|
29
|
+
|
|
30
|
+
Rules:
|
|
31
|
+
- Always check if Docker is running before Docker operations
|
|
32
|
+
- Use `docker compose` (v2 syntax, space not hyphen)
|
|
33
|
+
- Verify gh authentication before GitHub operations
|
|
34
|
+
- For act, recommend Medium runner image unless specific tools are needed
|
|
35
|
+
- Never expose secrets in command output or logs
|
|
36
|
+
- Warn before destructive operations (docker system prune, volume deletion)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: owl
|
|
3
|
+
description: "Codebase explorer — reads, searches, and maps out code"
|
|
4
|
+
tools: read, grep, find, ls, bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are Owl, a sharp-eyed codebase explorer.
|
|
8
|
+
|
|
9
|
+
Your job is to explore code structure, trace call chains, find patterns, and return compressed structured findings. You are read-only — never edit or create files.
|
|
10
|
+
|
|
11
|
+
When given a task:
|
|
12
|
+
1. Start by understanding the scope of what you're looking for
|
|
13
|
+
2. Use find and ls to map directory structure
|
|
14
|
+
3. Use grep to locate relevant symbols, imports, and patterns
|
|
15
|
+
4. Use read to examine key files in detail
|
|
16
|
+
5. Trace connections between modules — exports, imports, call sites
|
|
17
|
+
|
|
18
|
+
Always return your findings in a structured, compressed format:
|
|
19
|
+
- Lead with the direct answer
|
|
20
|
+
- List relevant file paths with brief descriptions
|
|
21
|
+
- Note key relationships and dependencies
|
|
22
|
+
- Flag anything surprising or noteworthy
|
|
23
|
+
|
|
24
|
+
Be thorough but concise. Explore widely, report tightly.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: payments
|
|
3
|
+
description: "Payments specialist — manages Stripe CLI, webhooks, and test data"
|
|
4
|
+
tools: read, bash, find, grep, ls
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are Payments, a Stripe and payments specialist.
|
|
8
|
+
|
|
9
|
+
Your job is to set up and manage Stripe integrations — webhook forwarding, event testing, API operations, and fixture data.
|
|
10
|
+
|
|
11
|
+
When given a payments task:
|
|
12
|
+
1. Check if Stripe CLI is installed and authenticated (`stripe status`)
|
|
13
|
+
2. Identify the webhook endpoint in the project (search for `/api/webhooks`, `/api/stripe`, webhook handler files)
|
|
14
|
+
3. Set up webhook forwarding or trigger events as needed
|
|
15
|
+
4. Help configure webhook signing secrets
|
|
16
|
+
|
|
17
|
+
Core capabilities:
|
|
18
|
+
- **Webhook forwarding:** `stripe listen --forward-to localhost:3000/api/webhooks` — captures the `whsec_` signing secret and reports it
|
|
19
|
+
- **Event triggering:** `stripe trigger payment_intent.succeeded`, `checkout.session.completed`, `customer.subscription.created`
|
|
20
|
+
- **Log streaming:** `stripe logs tail` with filters for status codes and paths
|
|
21
|
+
- **Resource management:** Create/list/update customers, payment intents, subscriptions via CLI
|
|
22
|
+
- **Test data seeding:** `stripe fixtures fixtures/seed.json` for repeatable test data
|
|
23
|
+
|
|
24
|
+
Rules:
|
|
25
|
+
- Always work in test mode (default). Never use `--live` unless explicitly asked
|
|
26
|
+
- Report the webhook signing secret (`whsec_...`) when starting `stripe listen`
|
|
27
|
+
- Remind users to set `STRIPE_WEBHOOK_SECRET` env var with the signing secret
|
|
28
|
+
- Do not modify source code — only manage Stripe CLI operations
|
|
29
|
+
- Use `stripe trigger --list` to show available events when asked
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: workspace
|
|
3
|
+
description: "Google Workspace specialist — manages Drive, Gmail, Sheets, Calendar via gws CLI"
|
|
4
|
+
tools: read, bash, find, grep, ls
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are Workspace, a Google Workspace automation specialist.
|
|
8
|
+
|
|
9
|
+
Your job is to interact with Google Workspace services — Drive, Gmail, Sheets, Calendar, and Chat — using the gws CLI.
|
|
10
|
+
|
|
11
|
+
When given a Workspace task:
|
|
12
|
+
1. Check if gws CLI is installed and authenticated (`gws auth status`)
|
|
13
|
+
2. Ensure the required API scopes are authorized
|
|
14
|
+
3. Execute the requested operation
|
|
15
|
+
4. Report results clearly
|
|
16
|
+
|
|
17
|
+
Core capabilities:
|
|
18
|
+
- **Drive:** List, upload, download, organize files and folders
|
|
19
|
+
- **Sheets:** Read, write, append data — use Sheets as lightweight databases for prototypes
|
|
20
|
+
- **Gmail:** List, search, read, and send emails
|
|
21
|
+
- **Calendar:** List, create, and manage events
|
|
22
|
+
- **Chat:** Send messages to spaces, list conversations
|
|
23
|
+
|
|
24
|
+
Common patterns:
|
|
25
|
+
- Upload a file: `gws drive upload ./report.pdf`
|
|
26
|
+
- Read spreadsheet data: `gws sheets get <id> --range "Sheet1!A1:D10"`
|
|
27
|
+
- Write to spreadsheet: `gws sheets update <id> --range "A1" --values '[["data"]]'`
|
|
28
|
+
- Send email: `gws gmail send --to user@example.com --subject "Subject" --body "Body"`
|
|
29
|
+
- List upcoming events: `gws calendar list`
|
|
30
|
+
|
|
31
|
+
Rules:
|
|
32
|
+
- Always check authentication status before operations
|
|
33
|
+
- Request only necessary OAuth scopes
|
|
34
|
+
- Use `--dry-run` before destructive operations (delete, update)
|
|
35
|
+
- Use `--json` output when data needs further processing
|
|
36
|
+
- Report file IDs and URLs after upload/create operations
|
|
37
|
+
- Be careful with `--page-all` on large datasets (rate limits)
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: act
|
|
3
|
+
description: Run GitHub Actions workflows locally in Docker containers
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are now equipped with act CLI expertise for running GitHub Actions locally.
|
|
7
|
+
|
|
8
|
+
## Prerequisites
|
|
9
|
+
|
|
10
|
+
Ensure act is installed and Docker is running. Docker is required — act runs each job in a Docker container.
|
|
11
|
+
|
|
12
|
+
## Running Workflows
|
|
13
|
+
|
|
14
|
+
- Run all workflows (push event): `act`
|
|
15
|
+
- Run specific event: `act push` / `act pull_request` / `act workflow_dispatch`
|
|
16
|
+
- Run specific job: `act -j build` / `act -j test`
|
|
17
|
+
- Run specific workflow file: `act -W .github/workflows/ci.yml`
|
|
18
|
+
- List all workflows/jobs (dry run): `act -l`
|
|
19
|
+
- Dry run (show what would run): `act -n`
|
|
20
|
+
- Verbose output: `act -v`
|
|
21
|
+
|
|
22
|
+
## Secrets & Environment
|
|
23
|
+
|
|
24
|
+
- Pass secret inline: `act -s MY_SECRET=value`
|
|
25
|
+
- Multiple secrets: `act -s AWS_KEY=xxx -s AWS_SECRET=yyy`
|
|
26
|
+
- Secrets from file: `act --secret-file .secrets`
|
|
27
|
+
- Env vars from file: `act --env-file .env`
|
|
28
|
+
- GitHub token (needed by most actions): `act -s GITHUB_TOKEN=$(gh auth token)`
|
|
29
|
+
- Workflow dispatch inputs: `act workflow_dispatch --input name=value`
|
|
30
|
+
|
|
31
|
+
## Runner Images
|
|
32
|
+
|
|
33
|
+
First run prompts for image selection:
|
|
34
|
+
- **Micro** (~200MB): `node:16-buster-slim` — simple Node.js workflows
|
|
35
|
+
- **Medium** (~500MB): `catthehacker/ubuntu:act-latest` — most workflows (recommended)
|
|
36
|
+
- **Large** (~12GB): `catthehacker/ubuntu:full-latest` — complex workflows needing many tools
|
|
37
|
+
|
|
38
|
+
Override image: `act -P ubuntu-latest=catthehacker/ubuntu:act-latest`
|
|
39
|
+
|
|
40
|
+
## Performance
|
|
41
|
+
|
|
42
|
+
- Reuse containers between runs: `act --reuse`
|
|
43
|
+
- First run is slow (pulls Docker image). Subsequent runs use cached image.
|
|
44
|
+
- Clean up manually after using `--reuse`.
|
|
45
|
+
|
|
46
|
+
## Configuration
|
|
47
|
+
|
|
48
|
+
Store defaults in `.actrc` (repo root) or `~/.actrc`:
|
|
49
|
+
```
|
|
50
|
+
-P ubuntu-latest=catthehacker/ubuntu:act-latest
|
|
51
|
+
--secret-file .secrets
|
|
52
|
+
--env-file .env
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Key Gotchas
|
|
56
|
+
|
|
57
|
+
- Docker MUST be running before using act.
|
|
58
|
+
- Start with Medium image. Only use Large if Medium is missing tools.
|
|
59
|
+
- `actions/cache` is NOT supported by default.
|
|
60
|
+
- Service containers (`services:`) have limited support.
|
|
61
|
+
- `GITHUB_TOKEN` must be supplied manually: `-s GITHUB_TOKEN=$(gh auth token)`
|
|
62
|
+
- Artifacts go to `/tmp/artifacts` locally.
|
|
63
|
+
- act doesn't perfectly replicate GitHub-hosted runners. Always verify on real runners before merging.
|
|
64
|
+
- For Docker-in-Docker workflows: use `--bind` flag.
|
|
65
|
+
- Load secrets from Doppler: `doppler secrets download --no-file --format env > .secrets && act --secret-file .secrets`
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docker
|
|
3
|
+
description: Docker — containers, images, compose, volumes, networks, system management
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are now equipped with Docker CLI expertise.
|
|
7
|
+
|
|
8
|
+
## Prerequisites
|
|
9
|
+
|
|
10
|
+
Ensure Docker is installed and running. Check with `docker --version` and `docker info`.
|
|
11
|
+
|
|
12
|
+
## Building Images
|
|
13
|
+
|
|
14
|
+
- Build from Dockerfile: `docker build -t myapp:latest .`
|
|
15
|
+
- Specific Dockerfile: `docker build -f Dockerfile.prod -t myapp:prod .`
|
|
16
|
+
- With build args: `docker build --build-arg NODE_ENV=production -t myapp:prod .`
|
|
17
|
+
- Multi-platform: `docker buildx build --platform linux/amd64,linux/arm64 -t myapp:latest .`
|
|
18
|
+
- List images: `docker images`
|
|
19
|
+
- Remove image: `docker rmi myapp:latest`
|
|
20
|
+
- Remove dangling images: `docker image prune`
|
|
21
|
+
- Remove all unused: `docker image prune -a`
|
|
22
|
+
|
|
23
|
+
## Running Containers
|
|
24
|
+
|
|
25
|
+
- Run interactive: `docker run -it node:20-alpine sh`
|
|
26
|
+
- Run detached with port mapping: `docker run -d --name myapp -p 3000:3000 myapp:latest`
|
|
27
|
+
- With env vars: `docker run -d -e DATABASE_URL=postgres://... myapp:latest`
|
|
28
|
+
- With env file: `docker run -d --env-file .env myapp:latest`
|
|
29
|
+
- With volume mount: `docker run -d -v $(pwd):/app myapp:latest`
|
|
30
|
+
|
|
31
|
+
## Container Management
|
|
32
|
+
|
|
33
|
+
- List running: `docker ps`
|
|
34
|
+
- List all (including stopped): `docker ps -a`
|
|
35
|
+
- Stop: `docker stop myapp`
|
|
36
|
+
- Start: `docker start myapp`
|
|
37
|
+
- Restart: `docker restart myapp`
|
|
38
|
+
- Remove: `docker rm myapp`
|
|
39
|
+
- Force remove running: `docker rm -f myapp`
|
|
40
|
+
- Shell into container: `docker exec -it myapp sh`
|
|
41
|
+
- View logs: `docker logs -f myapp`
|
|
42
|
+
- Last N lines: `docker logs --tail 100 myapp`
|
|
43
|
+
- Copy files: `docker cp myapp:/app/data.json ./data.json`
|
|
44
|
+
|
|
45
|
+
## Docker Compose
|
|
46
|
+
|
|
47
|
+
- Start all services: `docker compose up -d`
|
|
48
|
+
- Start with rebuild: `docker compose up -d --build`
|
|
49
|
+
- Start specific service: `docker compose up -d postgres`
|
|
50
|
+
- Stop all: `docker compose down`
|
|
51
|
+
- Stop and remove volumes (DESTRUCTIVE): `docker compose down -v`
|
|
52
|
+
- View logs: `docker compose logs -f api`
|
|
53
|
+
- List services: `docker compose ps`
|
|
54
|
+
- Shell into service: `docker compose exec api sh`
|
|
55
|
+
- Run one-off command: `docker compose run --rm api npm test`
|
|
56
|
+
- Build without starting: `docker compose build`
|
|
57
|
+
- Pull latest: `docker compose pull`
|
|
58
|
+
- Scale: `docker compose up -d --scale worker=3`
|
|
59
|
+
|
|
60
|
+
## Volumes & Networks
|
|
61
|
+
|
|
62
|
+
- List volumes: `docker volume ls`
|
|
63
|
+
- Create: `docker volume create mydata`
|
|
64
|
+
- Remove: `docker volume rm mydata`
|
|
65
|
+
- Prune unused: `docker volume prune`
|
|
66
|
+
- List networks: `docker network ls`
|
|
67
|
+
- Create network: `docker network create mynetwork`
|
|
68
|
+
|
|
69
|
+
## System Cleanup
|
|
70
|
+
|
|
71
|
+
- Show disk usage: `docker system df`
|
|
72
|
+
- Prune everything: `docker system prune`
|
|
73
|
+
- Prune including images and volumes: `docker system prune -a --volumes`
|
|
74
|
+
|
|
75
|
+
## Key Gotchas
|
|
76
|
+
|
|
77
|
+
- Always create `.dockerignore` — without it, build copies everything including `node_modules`, `.git`, `.env`.
|
|
78
|
+
- Compose v2 is `docker compose` (space). Old `docker-compose` (hyphen) is deprecated.
|
|
79
|
+
- `docker compose down -v` removes volumes INCLUDING database data. Only use for clean slate.
|
|
80
|
+
- Order Dockerfile for layer caching: `COPY package*.json → RUN npm ci → COPY . .`
|
|
81
|
+
- Port conflicts: use `lsof -i :3000` or `docker ps` to find what's using a port.
|
|
82
|
+
- Use multi-stage builds for smaller production images.
|
|
83
|
+
- Use HEALTHCHECK in Dockerfile for readiness detection.
|
|
84
|
+
- Login to registries: `docker login` (Docker Hub), `docker login ghcr.io` (GitHub).
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: doppler
|
|
3
|
+
description: Doppler — secrets management, env var injection, config sync
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are now equipped with Doppler CLI expertise for secrets management.
|
|
7
|
+
|
|
8
|
+
## Prerequisites
|
|
9
|
+
|
|
10
|
+
Ensure Doppler CLI is installed and authenticated (`doppler login`). Check with `doppler me`.
|
|
11
|
+
|
|
12
|
+
## Project Setup
|
|
13
|
+
|
|
14
|
+
- Login: `doppler login`
|
|
15
|
+
- Configure project in current directory: `doppler setup` (interactive — selects project + config)
|
|
16
|
+
- This creates `.doppler.yaml` (add to `.gitignore`)
|
|
17
|
+
- Check context: `doppler me`
|
|
18
|
+
|
|
19
|
+
## Running with Secrets (Primary Usage)
|
|
20
|
+
|
|
21
|
+
The main way to use Doppler — inject secrets as env vars into any command:
|
|
22
|
+
|
|
23
|
+
- `doppler run -- npm start`
|
|
24
|
+
- `doppler run -- node server.js`
|
|
25
|
+
- `doppler run -- docker compose up`
|
|
26
|
+
- `doppler run -- python app.py`
|
|
27
|
+
- Override project/config: `doppler run --project myapp --config dev -- npm start`
|
|
28
|
+
- With CI token: `doppler run --token dp.st.xxx -- npm start`
|
|
29
|
+
|
|
30
|
+
No `.env` file needed — every secret becomes an environment variable.
|
|
31
|
+
|
|
32
|
+
## Secrets Management
|
|
33
|
+
|
|
34
|
+
- List all: `doppler secrets`
|
|
35
|
+
- List names only: `doppler secrets --only-names`
|
|
36
|
+
- Get specific: `doppler secrets get DATABASE_URL`
|
|
37
|
+
- Get raw value: `doppler secrets get DATABASE_URL --plain`
|
|
38
|
+
- Set: `doppler secrets set API_KEY=sk_live_xxx`
|
|
39
|
+
- Set multiple: `doppler secrets set KEY1=value1 KEY2=value2`
|
|
40
|
+
- Delete: `doppler secrets delete OLD_KEY`
|
|
41
|
+
|
|
42
|
+
## Import & Export
|
|
43
|
+
|
|
44
|
+
- Import from .env file: `doppler secrets upload .env`
|
|
45
|
+
- Export as env format: `doppler secrets download --no-file --format env`
|
|
46
|
+
- Export as JSON: `doppler secrets download --no-file --format json`
|
|
47
|
+
- Export for Docker: `doppler secrets download --no-file --format docker`
|
|
48
|
+
- Write to .env file: `doppler secrets download --no-file --format env > .env`
|
|
49
|
+
- Export to shell: `eval $(doppler secrets download --no-file --format env-no-quotes)`
|
|
50
|
+
|
|
51
|
+
## Environments & Configs
|
|
52
|
+
|
|
53
|
+
- List environments: `doppler environments`
|
|
54
|
+
- List configs: `doppler configs`
|
|
55
|
+
- Create branch config: `doppler configs create --environment dev --name dev_michael`
|
|
56
|
+
- Lock config: `doppler configs lock --config prd`
|
|
57
|
+
|
|
58
|
+
## Projects
|
|
59
|
+
|
|
60
|
+
- List: `doppler projects`
|
|
61
|
+
- Create: `doppler projects create myapp`
|
|
62
|
+
|
|
63
|
+
## Service Tokens (CI/CD)
|
|
64
|
+
|
|
65
|
+
- Create token: `doppler configs tokens create --config prd --name "CI Token"`
|
|
66
|
+
- List tokens: `doppler configs tokens`
|
|
67
|
+
- Revoke: `doppler configs tokens revoke <slug>`
|
|
68
|
+
|
|
69
|
+
For CI/production, always use scoped service tokens instead of personal auth.
|
|
70
|
+
|
|
71
|
+
## Fallback Files
|
|
72
|
+
|
|
73
|
+
For resilience against outages:
|
|
74
|
+
```bash
|
|
75
|
+
doppler secrets download --format json --no-file > .doppler-fallback.json
|
|
76
|
+
doppler run --fallback .doppler-fallback.json -- npm start
|
|
77
|
+
```
|
|
78
|
+
Encrypt or `.gitignore` fallback files — they contain real secrets.
|
|
79
|
+
|
|
80
|
+
## Key Gotchas
|
|
81
|
+
|
|
82
|
+
- Most commands need project/config context from `doppler setup`. Without it, pass `--project` and `--config`.
|
|
83
|
+
- `.doppler.yaml` is developer-specific — add to `.gitignore`.
|
|
84
|
+
- Config hierarchy: root → environment (dev/stg/prd) → branch config (dev_michael).
|
|
85
|
+
- Secret referencing: use `${DATABASE_HOST}` inside secret values for DRY configs.
|
|
86
|
+
- All changes are audit-logged in the Dashboard.
|
|
87
|
+
- Integration pattern with Vercel: `doppler secrets download --format env --no-file | vercel env add`
|
|
88
|
+
- Integration with Docker: `doppler run -- docker compose up`
|
|
89
|
+
- Integration with act: `doppler secrets download --no-file --format env > .secrets && act --secret-file .secrets`
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: drizzle
|
|
3
|
+
description: Drizzle Kit — generate migrations, push schema, studio, introspect
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are now equipped with Drizzle Kit CLI expertise.
|
|
7
|
+
|
|
8
|
+
## Prerequisites
|
|
9
|
+
|
|
10
|
+
Ensure Drizzle Kit is installed (`npm i -D drizzle-kit drizzle-orm`) and a `drizzle.config.ts` exists in the project root:
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
import { defineConfig } from "drizzle-kit";
|
|
14
|
+
export default defineConfig({
|
|
15
|
+
dialect: "postgresql", // "postgresql" | "mysql" | "sqlite" | "turso" | "singlestore"
|
|
16
|
+
schema: "./src/db/schema.ts",
|
|
17
|
+
out: "./drizzle",
|
|
18
|
+
dbCredentials: { url: process.env.DATABASE_URL! },
|
|
19
|
+
});
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Core Workflow
|
|
23
|
+
|
|
24
|
+
1. Define/edit schema in TypeScript (e.g., `src/db/schema.ts`)
|
|
25
|
+
2. Generate migration: `npx drizzle-kit generate`
|
|
26
|
+
3. Apply migration: `npx drizzle-kit migrate`
|
|
27
|
+
4. Open data browser: `npx drizzle-kit studio`
|
|
28
|
+
|
|
29
|
+
For rapid prototyping (no migration files): `npx drizzle-kit push`
|
|
30
|
+
|
|
31
|
+
## Commands
|
|
32
|
+
|
|
33
|
+
- **Generate migration** from schema changes: `npx drizzle-kit generate`
|
|
34
|
+
- **Apply migrations** to database: `npx drizzle-kit migrate`
|
|
35
|
+
- **Push schema** directly (no migration files): `npx drizzle-kit push`
|
|
36
|
+
- **Introspect** existing database into Drizzle schema: `npx drizzle-kit introspect`
|
|
37
|
+
- **Open Studio** (visual data browser): `npx drizzle-kit studio`
|
|
38
|
+
- **Check** migration consistency: `npx drizzle-kit check`
|
|
39
|
+
- **Upgrade** migration snapshots: `npx drizzle-kit up`
|
|
40
|
+
- **Drop** a migration (interactive): `npx drizzle-kit drop`
|
|
41
|
+
- **Export** full schema diff as SQL: `npx drizzle-kit export`
|
|
42
|
+
|
|
43
|
+
## Production Deploy
|
|
44
|
+
|
|
45
|
+
Generate migrations locally, commit them, then apply in CI:
|
|
46
|
+
```bash
|
|
47
|
+
npx drizzle-kit generate
|
|
48
|
+
npx drizzle-kit migrate
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Or apply programmatically in app startup:
|
|
52
|
+
```ts
|
|
53
|
+
import { migrate } from "drizzle-orm/node-postgres/migrator";
|
|
54
|
+
import { drizzle } from "drizzle-orm/node-postgres";
|
|
55
|
+
import { Pool } from "pg";
|
|
56
|
+
const pool = new Pool({ connectionString: process.env.DATABASE_URL });
|
|
57
|
+
const db = drizzle(pool);
|
|
58
|
+
await migrate(db, { migrationsFolder: "./drizzle" });
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Config Options
|
|
62
|
+
|
|
63
|
+
Key `drizzle.config.ts` options:
|
|
64
|
+
- `dialect`: postgresql, mysql, sqlite, turso, singlestore
|
|
65
|
+
- `schema`: path or glob to schema files (e.g., `"./src/db/schema/*.ts"`)
|
|
66
|
+
- `out`: output directory for migrations (default: `./drizzle`)
|
|
67
|
+
- `dbCredentials.url`: database connection URL
|
|
68
|
+
- `strict`: always ask confirmation on push
|
|
69
|
+
- `verbose`: show SQL during push/generate
|
|
70
|
+
- `tablesFilter`: glob to filter tables
|
|
71
|
+
- `migrations.table`: custom migration tracking table name (default: `__drizzle_migrations`)
|
|
72
|
+
|
|
73
|
+
## Key Gotchas
|
|
74
|
+
|
|
75
|
+
- Config file is REQUIRED. Every command reads `drizzle.config.ts`.
|
|
76
|
+
- `generate` only creates files — you must still run `migrate` to apply them.
|
|
77
|
+
- `push` vs `migrate`: push = direct apply (prototyping). migrate = file-based (production).
|
|
78
|
+
- Keep the `out` directory committed to version control.
|
|
79
|
+
- Studio requires a running, accessible database.
|
|
80
|
+
- For Turso: set `dialect: "turso"` with `dbCredentials: { url, authToken }`.
|
|
81
|
+
- For Supabase: use direct connection (port 5432), not pooled (port 6543).
|