Skip to content
Back to skills

Check

ASecurity

Run the full code quality pipeline (TypeScript + Biome + Knip), fix all issues, and clean up comments in changed code.

  • 30 stars
  • 0 votes
  • 1 copy
  • 3 views
  • Added June 8, 2026
developmenttypescriptgobashgitapici/cd

Works with

  • cli
  • api

Security analysis

A100/100

Scanned June 8, 2026

npx -y skills add uxname/liteend --skill check --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Check?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Check
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/uxname-check/badge)](https://www.skillsdirectory.com/skills/uxname-check)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: check
description: Run the full code quality pipeline (TypeScript + Biome + Knip), fix all issues, and clean up comments in changed code.
---

This skill is the central entry point for fixing any CI/CD or pre-commit hook failures. Invoke this skill whenever a build or validation step fails.

The user wants to verify and fix all code quality issues in the project.

## What the pipeline checks

`npm run check` runs three tools in parallel via `run-p`:

1. **`tsc --noEmit`** — TypeScript type checking
2. **`biome check --write`** — Linting + formatting with auto-fix
3. **`knip --production`** — Unused exports, files, and dependencies

Pre-commit hook (lefthook) runs the same pipeline automatically on every commit.

## Running the check

```bash
npm run check
```

To run tools individually for targeted diagnosis:
```bash
npm run ts:check      # TypeScript only
npm run lint:fix      # Biome with auto-fix
npm run knip          # Knip unused code analysis
```

## Fixing common errors

### TypeScript errors

**Missing type on Prisma-generated code:**
- If errors reference `src/@generated/prisma`, run `npm run db:gen` first — the client may be stale

**`declare` keyword on GraphQL InputType fields:**
The project uses `declare` to re-declare Zod DTO fields with GraphQL decorators (see `profile-update.input.ts`):
```typescript
@InputType()
export class MyInput extends MyZodDto {
  @Field(() => String, { nullable: true })
  declare myField?: string;
}
```
See the `/add-graphql-type` skill for full details on integrating Zod with GraphQL InputTypes.

**Import path errors:**
- Always use `@/` alias for internal imports (maps to `src/`)
- Never use relative `../../` paths that cross module boundaries

### Biome errors

Biome auto-fixes most issues with `--write`. Common remaining issues:
- **Unused variables**: prefix with `_` (e.g. `_unusedParam`) or remove them
- **Explicit `any`**: use `unknown` and narrow the type, or add `// biome-ignore lint/suspicious/noExplicitAny: <reason>`
- **Missing return types**: add explicit return type to exported functions

### Knip errors

Knip flags exports that are not imported anywhere in production code (`--production` excludes test files).

**Common false positives to investigate:**
- NestJS module classes exported from `*.module.ts` — these ARE used via `app.module.ts` imports array
- GraphQL types decorated with `@ObjectType()` / `@InputType()` — used by NestJS reflection at runtime
- Enum types used only in GraphQL schema

**When Knip flags something legitimately unused:**
- Remove the export if it's truly dead code
- If it's a public API for external consumers, verify the import chain
- **DEFENSIVE DELETION RULE:** NEVER delete classes decorated with `@Injectable`, `@Resolver`, `@Controller`, `@ObjectType`, `@InputType`, or `@Module` just because Knip flagged them. If one of these is flagged, it usually means you forgot to register it in its parent `*.module.ts` or `app.module.ts`. Fix the DI wiring instead of deleting the code. Delete code ONLY if it is a truly obsolete helper function or dead logic.

## Comment cleanup

After fixing tool errors, review all changed/created code for comment quality:

1. **Remove unnecessary comments** — commented-out dead code, obvious statements (e.g. `// call the function`), outdated TODOs
2. **Ensure remaining comments are in English** — translate or rewrite any non-English comment; if it adds no real value, remove it instead

## Workflow

1. Run `npm run check` and capture the full output
2. Report what was found (errors by tool + comment issues)
3. Fix TypeScript errors first (they often cascade)
4. Biome fixes are mostly automatic — review the diff
5. For Knip warnings, investigate each flagged export before removing
6. Clean up comments in changed/created files
7. Re-run `npm run check` until clean

## Fallback Strategy (Circuit Breaker)

**CRITICAL:** Do not enter an infinite loop of fixing. If you attempt to fix a `check` error and the EXACT SAME error persists after **3 attempts**, STOP.
1. Undo the specific change that caused the unresolvable error.
2. Stop the workflow.
3. Explain the underlying issue to the user and ask for human guidance.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.