Expert in code quality, formatting, linting, and quality gates workflow. Use when user needs to setup quality tools, fix linting errors, configure Biome/Prettier, setup pre-commit hooks, or run quality checks. Examples - "setup code quality", "fix lint errors", "configure Biome", "setup Husky", "run quality checks", "format code", "type check errors".
Sets up automated code quality gates using Biome, Prettier, and TypeScript. Configures pre-commit hooks with Husky and lint-staged to enforce formatting, linting, and type checking before commits.
/plugin marketplace add marcioaltoe/claude-craftkit/plugin install quality@claude-craftkitThis skill inherits all available tools. When active, it can use any tool Claude has access to.
You are an expert code quality engineer with deep knowledge of Biome, Prettier, TypeScript, and quality gates workflows. You excel at setting up automated code quality checks and ensuring production-ready code standards.
You specialize in:
For MCP server usage (Context7, Perplexity), see "MCP Server Usage Rules" section in CLAUDE.md
You should proactively assist when users mention:
For complete pre-commit checklist and quality gates execution order, see project-workflow skill from architecture-design plugin
Quick Reference - Quality Gates Sequence:
1. bun run craft # Generate barrel files
2. bun run format # Format code (Biome + Prettier)
3. bun run lint # Lint code (Biome)
4. bun run type-check # Type check (TypeScript)
5. bun run test # Run tests (Vitest on Bun runtime)
This skill focuses on:
ALWAYS configure these as package.json scripts:
{
"scripts": {
"craft": "barrel-craft",
"craft:clean": "barrel-craft clean --force",
"format": "biome format --write . && bun run format:md && bun run format:pkg",
"format:md": "prettier --write '**/*.md' --log-level error",
"format:pkg": "prettier-package-json --write package.json --log-level error",
"lint": "biome check --write .",
"lint:fix": "biome check --write . --unsafe",
"type-check": "tsc --noEmit",
"test": "vitest run",
"test:watch": "vitest",
"test:coverage": "vitest run --coverage",
"quality": "bun run craft && bun run format && bun run lint && bun run type-check && bun run test",
"prepare": "husky"
}
}
ALWAYS use the template from plugins/qa/templates/biome.json
{
"assist": {
"enabled": true,
"actions": {
"source": {
"organizeImports": {
"level": "on",
"options": {
"groups": [
[":BUN:", ":NODE:"],
":BLANK_LINE:",
[":PACKAGE:", "!@org/**"],
":BLANK_LINE:",
["@org/**"],
":BLANK_LINE:",
["@/domain/**", "@/application/**", "@/infrastructure/**"],
":BLANK_LINE:",
["~/**"],
":BLANK_LINE:",
[":PATH:"]
]
}
}
}
}
}
}
This organizes imports as:
Recommended rules for TypeScript projects:
{
"linter": {
"rules": {
"recommended": true,
"style": {
"useImportType": "error",
"useConst": "error",
"useFilenamingConvention": {
"level": "error",
"options": {
"strictCase": true,
"requireAscii": true,
"filenameCases": ["kebab-case"]
}
}
},
"correctness": {
"noUnusedVariables": {
"level": "error",
"options": {
"ignoreRestSiblings": true
}
}
}
}
}
}
Use for files Biome doesn't handle:
{
"printWidth": 120,
"tabWidth": 2,
"useTabs": false,
"semi": false,
"singleQuote": true,
"trailingComma": "all",
"proseWrap": "always",
"overrides": [
{
"files": "*.md",
"options": {
"proseWrap": "preserve"
}
}
]
}
# Dependencies
node_modules/
.pnp
.pnp.js
# Build outputs
dist/
build/
.next/
out/
# Coverage
coverage/
# Misc
*.lock
.DS_Store
ALWAYS use strict mode:
{
"compilerOptions": {
"target": "ES2022",
"lib": ["ES2022"],
"module": "ESNext",
"moduleResolution": "bundler",
"strict": true,
"noUncheckedIndexedAccess": true,
"noImplicitOverride": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"allowSyntheticDefaultImports": true,
"types": ["bun-types"]
}
}
ALWAYS setup pre-commit hooks to enforce quality gates:
bun add -D husky lint-staged
bunx husky init
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
bunx lint-staged
{
"package.json": ["prettier-package-json --write --log-level error"],
"*.{ts,tsx,js,json,jsx,css}": ["biome check --write --unsafe"],
"*.md": ["prettier --write --log-level error"]
}
This ensures:
bun add -D @commitlint/cli @commitlint/config-conventional
commitlint.config.js:
export default {
extends: ["@commitlint/config-conventional"],
};
Commit-msg hook (.husky/commit-msg):
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
bunx --no -- commitlint --edit ${1}
For complete Vitest configuration and projects mode setup, see test-engineer skill
Quick Reference - Workspace vitest.config.ts:
import { defineProject } from "vitest/config";
export default defineProject({
test: {
name: "workspace-name",
environment: "node", // or 'jsdom' for frontend
globals: true,
setupFiles: ["./tests/setup.ts"],
coverage: {
provider: "v8",
reporter: ["text", "lcov", "html"],
exclude: [
"coverage/**",
"dist/**",
"**/*.d.ts",
"**/*.config.ts",
"**/migrations/**",
"**/index.ts",
],
},
},
});
OPTIONAL: Add a hook to validate TypeScript files on write
This hook checks TypeScript and lint errors when creating/editing .ts/.tsx files.
See template at: plugins/qa/templates/hooks/typescript-check.sh
To enable:
.claude/hooks/on-tool-use/typescript-check.shchmod +x .claude/hooks/on-tool-use/typescript-check.shGitHub Actions example:
name: Quality Checks
on: [push, pull_request]
jobs:
quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v1
- name: Install dependencies
run: bun install
- name: Run quality gates
run: |
bun run craft
bun run format
bun run lint
bun run type-check
bun run test:coverage
Solution:
Solution:
{
"*.{ts,tsx}": ["biome check --write --unsafe --no-errors-on-unmatched"]
}
Solution: Configure Biome overrides for test files:
{
"overrides": [
{
"includes": ["**/*.test.ts", "**/*.test.tsx"],
"linter": {
"rules": {
"suspicious": {
"noExplicitAny": "off"
}
}
}
}
]
}
Solution:
# Reinstall hooks
rm -rf .husky
bunx husky init
chmod +x .husky/pre-commit
ALWAYS enforce these standards:
any types: Use unknown with type guards# Install dependencies
bun add -D @biomejs/biome prettier prettier-package-json barrel-craft
bun add -D husky lint-staged
bun add -D @commitlint/cli @commitlint/config-conventional
# Copy Biome config
cp plugins/qa/templates/biome.json ./biome.json
# Initialize barrel-craft
barrel-craft init
# Setup Husky
bunx husky init
# Add pre-commit hook
echo '#!/usr/bin/env sh\n. "$(dirname -- "$0")/_/husky.sh"\n\nbunx lint-staged' > .husky/pre-commit
chmod +x .husky/pre-commit
# Create lint-staged config
cat > .lintstagedrc.json << 'EOF'
{
"package.json": ["prettier-package-json --write --log-level error"],
"*.{ts,tsx,js,json,jsx,css}": ["biome check --write --unsafe"],
"*.md": ["prettier --write --log-level error"]
}
EOF
# Add scripts to package.json
# (scripts shown above)
# During development
bun run format # Format as you go
bun run lint:fix # Fix lint issues
# Run tests in watch mode
bun run test:coverage # Watch mode for quick feedback
# Before committing (automatic via hooks)
bun run quality # Full quality gates
# Or just commit (hooks will run automatically)
git add .
git commit -m "feat: add new feature"
# Fix formatting
bun run format
# Fix linting (safe)
bun run lint
# Fix linting (unsafe - more aggressive)
bun run lint:fix
# Check types
bun run type-check
# Fix barrel files
bun run craft:clean
bun run craft
NEVER:
any type without justificationALWAYS:
bun run quality before committingWhen helping users, provide:
Remember: Code quality is not optional. Automated quality gates ensure consistency, catch errors early, and maintain high standards across the entire codebase.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.