The user's actual tech stack: init commands, conventions, and database-first patterns.
<!-- ═══════════════════════════════════════════════════ --> <!-- USER OVERVIEW --> <!-- ═══════════════════════════════════════════════════ -->🤖 You don't need to do any of this manually. The agent handles setup and usage automatically. If it ever needs you to do something, it will tell you exactly what and when.
Your tech stack is the set of tools and frameworks you build with - like a builder choosing specific brands of hammer, saw, and nails. This skill defines exactly which tools the agent should use, so every project starts the right way.
Every developer has preferred tools. Without this, the agent might suggest Next.js when you use Vite, or npm when you use bun. This skill eliminates that friction - the agent knows your choices and follows them.
When you start a new project, the agent scaffolds it with the exact tools, folder structure, and conventions defined here. No more correcting tool choices mid-build.
A web application has layers, and each layer uses a specific tool:
brand-identity)When you "start a new project," the agent sets up all these layers in the right order with compatible versions. The tables below show the exact tools for each layer.
Users - especially beginners - often describe features without knowing the technical terms. The agent must listen for natural language signals that imply backend needs and proactively suggest the right tools.
This applies at any point in a project, not just during init. If someone says "how do my users log in?" three weeks into building, the agent should recognize this as an auth need and propose Clerk + Convex setup if not already configured.
| Signal phrases | What it means | Suggest |
|---|---|---|
| "log in," "sign up," "user accounts," "members," "who's using it" | Auth needed | Clerk |
| "save," "store," "remember," "database," "user data," "profiles" | Database needed | Convex |
| "pay," "charge," "subscribe," "pricing," "checkout," "buy" | Payments needed | Stripe (manual setup, guide user) |
| "deploy," "go live," "share the link," "put it online" | Hosting needed | Cloudflare (see cloudflare-mcp extension) |
How to suggest (beginner-friendly):
| Layer | Tool | Why |
|---|---|---|
| Frontend | React + Vite | Fast dev server, modern tooling, huge ecosystem |
| Styling | Vanilla CSS with custom properties | Full control, design system via tokens (see brand-identity) |
| Backend | Convex | Reactive, real-time, type-safe, serverless |
| Auth | Clerk | Drop-in authentication with social logins, MFA |
| Hosting | Cloudflare Pages | Edge deployment, preview URLs per branch |
| Package Manager | bun (preferred) / pnpm (fallback) / npm (last resort) | Fast installs, no npm by default |
| Layer | Tool | Why | |---|---|---| | Framework | Astro | Zero-JS by default, fast static sites | | Styling | Vanilla CSS with custom properties | Same token system as dynamic apps | | Hosting | Cloudflare Pages | Same deployment pipeline |
# Scaffold the app
bunx --bun create-vite@latest ./ -- --template react-ts
# Install dependencies
bun install
# Add Convex
bun add convex
bunx convex init
# Add Clerk
bun add @clerk/clerk-react
# Scaffold the site
bunx --bun create-astro@latest ./ -- --template minimal --no-install --no-git
# Install dependencies
bun install
Always define the data model before writing UI:
convex/schema.ts with all tables and relationshipsconvex/// convex/schema.ts - always start here
import { defineSchema, defineTable } from "convex/server";
import { v } from "convex/values";
export default defineSchema({
posts: defineTable({
title: v.string(),
content: v.string(),
authorId: v.string(),
published: v.boolean(),
}).index("by_author", ["authorId"]),
});
src/features/auth/, src/features/posts/)UserProfile.tsx)UserProfile.css) or single index.css for small projects.env.local, never committedtsconfig.json paths (@/features/auth)bunx) and dependency installs (bun install) whenever available.npm when:
npm/npx, orWhen a README suggests npm install ..., prefer to translate this into the bun/pnpm equivalent for projects created with this stack, and mention that translation to the user.
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer