claude-skills/engineering-team/skills/senior-fullstack/profiles/saas-startup.json
Claude 2c5a793128
feat(engineering): apply karpathy-coder + Matt Pocock to fullstack/frontend/backend
Audit findings:
- senior-fullstack / senior-frontend / senior-backend SKILL.md files were
  generic role catalogs with no opinionated workflow, no customization
  surface, and no cross-agent invocation contract.
- A 4-person SaaS startup and a 200-engineer enterprise read identical
  recommendations.
- Other agents/skills had no typed surface to orchestrate fullstack /
  frontend / backend lenses.

Per-skill additions (21 new files: 7 x 3 skills):
- scripts/<role>_decision_engine.py - stdlib-only deterministic profile
  picker. Refuses to recommend without Karpathy-#1 core assumptions.
  Surfaces kill criteria. Names human approver chain (never auto-approves).
- profiles/*.json x 4 per skill (12 total) - JSON customization surface.
  Users copy one to <your-org>.json to override defaults.
- references/forcing_questions.md - 7 Matt Pocock forcing questions per
  skill (21 total) with recommended answer + canon citation + kill criterion.
- references/composition_map.md - explicit routing into POWERFUL-tier
  specialists (api-design-reviewer, database-designer, slo-architect,
  performance-profiler, a11y-audit, epic-design, apple-hig-expert, etc.).

Three orchestrator agents (context: fork):
- agents/engineering/cs-fullstack-engineer.md
- agents/engineering/cs-frontend-engineer.md
- agents/engineering/cs-backend-engineer.md
Invokable by other agents via Agent(subagent_type="cs-<role>-engineer", ...).

Four slash commands:
- /cs:fullstack-review, /cs:frontend-review, /cs:backend-review
- /cs:engineer-grill - cross-role 21-question forcing-question runner

Augmented SKILL.md files (additive only - Karpathy #3 surgical):
Each gained 5 new sections: Assumptions & Verifiable Success Criteria
(Karpathy #1+#4), Customization profiles, Composition map, Forcing-question
library, Invocation from other agents and skills.

Verification:
- 12/12 profile JSON files parse cleanly
- 3/3 decision engines pass --help and --sample, exit 0
- 3/3 cs-* agents have valid YAML + context: fork
- 3/3 agent paths resolve from agents/engineering/
- 3/3 commands reference the correct cs-* agent
- 69/69 plugin.json files pass check_plugin_json.py
- Existing SKILL.md content unchanged (additive edits only)

Versions: engineering-team plugin 2.2.3 -> 2.8.1; marketplace entry 2.8.1.

https://claude.ai/code/session_01UyWs4rKccdxUWFcWi6Y8Ly
2026-05-20 07:24:21 +00:00

71 lines
2.7 KiB
JSON

{
"$schema": "https://json-schema.org/draft-07/schema#",
"profile_name": "saas-startup",
"description": "Customer-facing SaaS product, < 10 engineers, < $10M ARR. Pre-product-market-fit or just past it. Cadence: daily+. Cloud ceiling: $3-8K/mo. Hiring against the stack via standard recruiter pipeline.",
"version": "1.0.0",
"constraints": {
"team_size_max": 10,
"team_size_year_one_max": 25,
"deployment_cadence": "daily-or-per-pr",
"cloud_budget_monthly_usd_ceiling": 8000,
"user_facing": true,
"data_sensitivity_tier": "pii-only"
},
"stack_recommendations": {
"primary": "next-app-router-postgres",
"frontend": {
"framework": "next.js-14+",
"rendering": "rsc-default",
"styling": "tailwind",
"state": "server-state-via-rsc-plus-zustand-for-client"
},
"backend": {
"pattern": "modular-monolith",
"language": "typescript-or-python",
"framework_options": ["next-api-routes", "fastapi", "express"],
"database": "postgresql",
"cache": "redis-optional",
"queue": "defer-until-needed"
},
"infrastructure": {
"hosting": ["vercel", "fly.io", "render", "railway"],
"database_hosting": ["neon", "supabase", "rds-postgres-small"],
"observability": "single-tool-only-sentry-or-axiom",
"feature_flags": "growthbook-self-host-or-defer"
}
},
"anti_recommendations": {
"microservices": "kill — wrong team-size shape",
"kubernetes": "kill — Vercel/Fly already manages the runtime",
"event-sourcing": "kill — pre-PMF YAGNI",
"graphql-federation": "kill — no second team to federate with",
"kafka": "kill — Postgres LISTEN/NOTIFY or PgQ handles the load at this scale",
"service-mesh": "kill — no services to mesh"
},
"success_thresholds": {
"p50_api_latency_ms": 100,
"p95_api_latency_ms": 300,
"p99_api_latency_ms": 800,
"frontend_lcp_ms_mobile_4g": 2500,
"frontend_inp_ms": 200,
"uptime_target": 0.995,
"deployment_time_minutes_max": 15,
"test_coverage_min": 0.6
},
"ci_cd": {
"platform": "github-actions",
"stages": ["lint", "typecheck", "test", "build", "deploy-preview", "deploy-prod"],
"gates": ["test-pass", "no-critical-deps-vulns"]
},
"named_approver_chain": {
"stack_change": "tech-lead",
"production-data-migration": "tech-lead + on-call",
"external-service-add": "tech-lead + cfo (cost-aware)"
},
"canon_references": [
"Will Larson, An Elegant Puzzle (2019) — team-size-to-architecture mapping",
"Sam Newman, Building Microservices 2e (2021), ch. 1 — MonolithFirst",
"Tomasz Tunguz, Cloud Cost Discipline essays (2020-2024)",
"DORA State of DevOps 2023 — Elite cadence on monolith outperforms Medium cadence on microservices"
]
}