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…
Resolves the ESLint errors and warnings this project's lint config reports, including autofix conflicts. Use when fixing lint failures, ESLint-reported issues, or an autofix that fights another rule.
Claude Code
$ npx -y skills add gaia-harness/gaia --skill eslint-fixes --agent claude-code
Codex
$ npx skills add gaia-harness/gaia --skill eslint-fixes -a codex -y
Cursor
$ npx skills add gaia-harness/gaia --skill eslint-fixes -a cursor -y
Gemini CLI
$ npx skills add gaia-harness/gaia --skill eslint-fixes -a gemini-cli -y
GitHub Copilot
$ npx skills add gaia-harness/gaia --skill eslint-fixes -a github-copilot -y
OpenCode
$ npx skills add gaia-harness/gaia --skill eslint-fixes -a opencode -y
Windsurf
$ npx skills add gaia-harness/gaia --skill eslint-fixes -a windsurf -y
name: eslint-fixes description: Resolves the ESLint errors and warnings this project's lint config reports, including autofix conflicts. Use when fixing lint failures, ESLint-reported issues, or an autofix that fights another rule. model: haiku
How to resolve specific ESLint errors in this project.
`no-void` reports `void` in expression position (an arrow body such as `() => void navigate(...)`); a `void expr;` statement is allowed. In an event handler, prefer an `async` handler that awaits the promise. Any other fire-and-forget statement (an effect body, a module-level call) uses `void`, never `.catch(() => {})`.
// BAD
const handleClickNavigate = () => void navigate('/path');
// GOOD
const handleClickNavigate = async () => {
await navigate('/path');
};Use inline `export const` declarations instead of a grouped `export { ... }` statement to avoid circular fix warnings between these two rules.
// BAD, causes circular fix between prettier and canonical
export {DAYS, DURATIONS, FITNESS_GOALS};
// GOOD, declare with export directly
export const DAYS = ['mon', 'tue'] as const;
export const DURATIONS = [15, 30, 45] as const;
export const FITNESS_GOALS = ['weight_loss'] as const;`no-shadow` has no autofix: rename the inner binding to a descriptive name, not a trailing `_`.
Never suppress with `eslint-disable`. Always fix the underlying deprecation: a deprecated API is not a false positive or a library typing gap.
Common case: Zod v4 deprecated `z.string().email()` in favor of `z.email()`.
// BAD, suppressing the warning // eslint-disable-next-line sonarjs/deprecation email: z.string().email(), // GOOD, use the non-deprecated API email: z.email(),
Use native JavaScript instead of lodash/underscore equivalents.
// BAD import _ from 'lodash'; const first = _.find(items, (item) => item.active); const names = _.map(items, (item) => item.name); // GOOD const first = items.find((item) => item.active); const names = items.map((item) => item.name);
`userEvent` from `storybook/test` is async in a play function or a `.test()`, always `await` it.
// BAD userEvent.click(button); // GOOD await userEvent.click(button);
Use the jest-dom matchers `storybook/test` re-exports instead of raw DOM property checks.
// BAD
expect(input.value).toBe('hello');
expect(checkbox.checked).toBe(true);
expect(el.textContent).toBe('Hello');
// GOOD
expect(input).toHaveValue('hello');
expect(checkbox).toBeChecked();
expect(el).toHaveTextContent('Hello');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.