agentsclimarketplace

Stack baseline

Skill avelikiy/great_cto/skills/stack-baseline

The pinned default technology stack for SMB Product-Builder products. One source of truth so the architect, app-scaffolder, auth-engineer, and senior-dev never re-decide the stack per build — they build ON it. Covers framework, ORM/DB, auth, UI, payments/email/SMS, files, jobs, testing, hosting, and observability, with the chosen default + the one sanctioned alternative for each. Applied whenever a new product is scaffolded or a stack choice would otherwise be improvised. Re-deciding the stack every build is the biggest silent time sink; this kills it.From its SKILL.md

Install
npx -y skills add avelikiy/great_cto --skill stack-baseline

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

4.2 KB, 867 tokens by cl100k_base, as published. Nobody here has run it

Stack baseline — decide once, build on it

Every SMB product builds on the SAME proven stack unless there's a concrete reason not to. Re-deciding framework/ORM/auth/host per build wastes the first hour of every project and fragments the codebase across products. This is the default; deviate only with a written reason in ARCH.

The pinned stack

LayerDefaultSanctioned alternativeNotes
FrameworkNext.js (App Router, TS)RemixServer actions + RSC; one repo front+back
UITailwind + shadcn/ui—matches the site; design-advisor tokens map to it
Charts (dashboard/analytics)ECharts (shipped)Rechartspolished specs generated at build time via Flint → compiled to native ECharts; Flint is dev-only, never a runtime dep. Contract: references/dashboard-viz.md
DBPostgres—the only DB; integer cents, tz-aware timestamps
ORM / migrationsDrizzlePrismatyped schema + SQL migrations; migration-ready-schema applies
AuthAuth.js (NextAuth v5)Clerk (fast path, per-MAU cost)owned by auth-engineer; session + RBAC + multi-tenant
PaymentsStripe (+ Connect)—owned by subscription-billing-engineer / integrations-engineer
EmailResendPostmarktransactional; SPF/DKIM/DMARC via lifecycle-messaging
SMSTwilio (Messaging Service)Telnyx10DLC; consent via lifecycle-messaging
File storageCloudflare R2 / S3—private buckets, presigned URLs
Background jobsInngesta Postgres-backed queuereminders, syncs, dunning
TestingVitest (unit) + Playwright (e2e)—senior-dev unit; e2e-test-engineer browser
HostingVercelCloudflare Pages/WorkersNext.js-native; preview per PR
DB hostNeon (serverless PG)Supabasebranchable; env-wired by infra-provisioner
ObservabilitySentry—errors + traces on the deployed product
Analyticsprivacy-light (Plausible)—no heavy 3rd-party trackers

Rules

  1. One framework, one DB, one ORM, one auth lib across all products. Consistency > per-product optimization.
  2. Pin it in .great_cto/PROJECT.md at scaffold time (stack: line) so every later agent reads it instead of guessing — and an existing PROJECT.md's stack always wins.
  3. Money in integer cents; timestamps tz-aware; IDs are stable (compose with migration-ready-schema).
  4. Auth, payments, email/SMS, jobs are owned by their specialist (auth-engineer, billing/integrations, lifecycle-messaging) — this skill only names the default library; the specialist owns the contract.
  5. Deviation needs a written reason in ARCH's Components section (e.g. "Clerk over Auth.js because the customer needs SSO/SCIM on day one").

Output

When applied, write the stack into ARCH's Components section and PROJECT.md:

## Stack (baseline)
framework: Next.js (App Router, TS) · UI: Tailwind + shadcn
db: Postgres (Neon) · orm: Drizzle · auth: Auth.js (→ auth-engineer)
payments: Stripe · email: Resend · sms: Twilio · files: R2 · jobs: Inngest
test: Vitest + Playwright · host: Vercel · obs: Sentry
deviations: <none | reason>

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.