file-tech-debt
Files a new tech-debt GitHub issue for an out-of-scope code-review finding. Builds the dedup key, skips an open or…
Scaffolds a new API service with request functions, Zod schemas, URL constants, optional TanStack Query options, and optional MSW mock handlers. Use this skill whenever the user asks to "add a service", "create the projects API", "wire up CRUD for users", or anything implying a
Claude Code
$ npx -y skills add gaia-harness/gaia --skill new-service --agent claude-code
Codex
$ npx skills add gaia-harness/gaia --skill new-service -a codex -y
Cursor
$ npx skills add gaia-harness/gaia --skill new-service -a cursor -y
Gemini CLI
$ npx skills add gaia-harness/gaia --skill new-service -a gemini-cli -y
GitHub Copilot
$ npx skills add gaia-harness/gaia --skill new-service -a github-copilot -y
OpenCode
$ npx skills add gaia-harness/gaia --skill new-service -a opencode -y
Windsurf
$ npx skills add gaia-harness/gaia --skill new-service -a windsurf -y
name: new-service
description: Scaffolds a new API service with request functions, Zod schemas, URL constants, optional TanStack Query options, and optional MSW mock handlers. Use this skill whenever the user asks to "add a service", "create the projects API", "wire up CRUD for users", or anything implying a new service folder under `app/services/` (`app/services/<layer>/{name}/`) with parsers/types/requests + matching `test/mocks/{name}/` collections.
model: haiku1. Confirm: name (kebab), endpoints and schema (`name:type` pairs) as free text, then mocks as an `AskUserQuestion`: `With mocks` (Recommended) or `Without mocks`. 2. Run from the repo root: `./.gaia/cli/gaia scaffold service <name> --endpoints "..." --schema "..." [--mocks]`. It writes into the domain-layer folder under `app/services/`, found as the one folder there besides `api/`. If it refuses because several folders qualify, ask which one with `AskUserQuestion`, one option per qualifying folder, and rerun with `--layer <folder>`. Flags and schema types: `./.gaia/cli/gaia scaffold service --help`. 3. Verify: `pnpm typecheck` clean; if `--mocks`, run a single MSW round-trip in a vitest test. 4. Wire the service into the consuming route and page. Which data-loading variant applies is the rule in `apps/web/.claude/skills/react-code/SKILL.md`; the `new-route` skill scaffolds a route bound to the service. Before wiring by hand, read how an existing service is wired and follow that pattern.
When `@tanstack/react-query` is installed and the service has `get`, the scaffold also writes `queries.ts` (query keys and `queryOptions` factories over the request functions). To add it to an existing service, run `./.gaia/cli/gaia scaffold service <name> --queries-only [--layer <folder>]`; it writes only `queries.ts` and refuses when Query is not installed. Turn Query on with `./.gaia/cli/gaia init configure-data-layer --query true`.
A backend with its own base URL or casing needs its own `create()` instance. Ask the backend's casing first with `AskUserQuestion`: `camelCase` (Recommended) or `snake_case`. Then create `app/services/<new-layer>/api.ts` modelled on the shipped layer's `api.ts`, passing `create({isSnakeCaseEnabled: true})` for a snake_case backend, and scaffold with `--layer <new-layer>`; the scaffolder reads that flag to pick the mock data's key casing.
For an SDK-client backend (Supabase, Firebase), the Ky layer stays in place for any REST domain. An SDK-backed domain's request functions wrap the SDK's calls instead of `api`, and the data-loading rule applies unchanged.
The `clientLoader` and Query variants suit unauthenticated or cookie-authenticated APIs; a token or secret never goes into the root-loader `ENV`.
Claude is raw power. GAIA is order and focus. A serious harness for Claude Code. It keeps Claude-shipped code production-grade as your team scales. The React frontend is handled. You build the rest of your app on top.
Files a new tech-debt GitHub issue for an out-of-scope code-review finding. Builds the dedup key, skips an open or…
Runs GAIA wiki maintenance (sync, consolidate, lint with fixes) in one command and lands it as one commit and PR. Trigger on…
Applies descriptive, self-documenting naming in any language (TypeScript, bash, workflow YAML, Dockerfiles). Use this skill…
Maintainer-only. Rewrites a version's GAIA CHANGELOG entries as plain-language public release notes for the marketing site…
Runs test-driven development with a red-green-refactor loop, an opt-in tool for logic where test-first helps. Use when the user…
Remediates dependencies in place of Dependabot version and security updates. Discovers outdated packages and open security…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.