Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 08:30:57 +08:00
commit 0d567cfdda
7 changed files with 643 additions and 0 deletions

View File

@@ -0,0 +1,168 @@
---
name: setup-code-quality
description: Detect project tools and generate a /check command for linting and typechecking
---
You are setting up a project for automated code quality checks. Follow these steps carefully:
## Step 1: Detect Project Type
Check for these files in the current directory to determine the project type:
- `package.json` → JavaScript/TypeScript (Node.js)
- `pyproject.toml` or `requirements.txt` or `setup.py` → Python
- `go.mod` → Go
- `Cargo.toml` → Rust
- `composer.json` → PHP
- `build.gradle` or `pom.xml` → Java
Read the relevant config file to understand the project structure.
## Step 2: Check Existing Tools
Based on the project type, check if these tools are already configured:
### JavaScript/TypeScript:
- Check `package.json` for: `eslint`, `prettier`, `typescript`, `@typescript-eslint/*`
- Check for config files: `.eslintrc.*`, `.prettierrc.*`, `tsconfig.json`
- Check `package.json` scripts for: `lint`, `typecheck`, `type-check`, or `tsc`
### Python:
- Check for: `mypy`, `pylint`, `black`, `ruff`, `flake8` in dependencies
- Check for config files: `mypy.ini`, `.pylintrc`, `pyproject.toml`
- Look for linting/type checking configurations
### Go:
- Check for: `golint`, `gofmt`, `staticcheck`
- Go has built-in tools, check if project uses them
### Rust:
- Check for: `clippy`, `rustfmt` (built-in to Rust toolchain)
- Check `Cargo.toml` for workspace configuration
## Step 3: Install Missing Tools (if needed)
If tools are missing, install them based on the project type:
### JavaScript/TypeScript:
```bash
# Detect package manager (npm, yarn, pnpm, bun)
# Install missing tools, e.g.:
npm install --save-dev eslint prettier typescript @typescript-eslint/parser @typescript-eslint/eslint-plugin
# Add scripts to package.json if missing:
# "lint": "eslint ."
# "typecheck": "tsc --noEmit"
```
### Python:
```bash
pip install mypy pylint black ruff
# or add to requirements-dev.txt / pyproject.toml
```
### Go:
```bash
go install golang.org/x/lint/golint@latest
go install honnef.co/go/tools/cmd/staticcheck@latest
```
### Rust:
```bash
rustup component add clippy rustfmt
```
**IMPORTANT**: Always check if tools exist first. Only install if missing.
## Step 4: Generate /fix Command
Create a file at `.claude/commands/fix.md` with the following structure:
```markdown
---
name: fix
description: Run typechecking and linting, then spawn parallel agents to fix all issues
---
# Project Code Quality Check
This command runs all linting and typechecking tools for this project, collects errors, groups them by domain, and spawns parallel agents to fix them.
## Step 1: Run Linting and Typechecking
Run the appropriate commands for this project:
[INSERT PROJECT-SPECIFIC COMMANDS HERE]
## Step 2: Collect and Parse Errors
Parse the output from the linting and typechecking commands. Group errors by domain:
- **Type errors**: Issues from TypeScript, mypy, etc.
- **Lint errors**: Issues from eslint, pylint, ruff, clippy, etc.
- **Format errors**: Issues from prettier, black, rustfmt, gofmt
Create a list of all files with issues and the specific problems in each file.
## Step 3: Spawn Parallel Agents
For each domain that has issues, spawn an agent in parallel using the Task tool:
**IMPORTANT**: Use a SINGLE response with MULTIPLE Task tool calls to run agents in parallel.
Example:
- Spawn a "type-fixer" agent for type errors
- Spawn a "lint-fixer" agent for lint errors
- Spawn a "format-fixer" agent for formatting errors
Each agent should:
1. Receive the list of files and specific errors in their domain
2. Fix all errors in their domain
3. Run the relevant check command to verify fixes
4. Report completion
## Step 4: Verify All Fixes
After all agents complete, run the full check again to ensure all issues are resolved.
```
**Replace `[INSERT PROJECT-SPECIFIC COMMANDS HERE]` with the actual commands for the detected project type.**
### JavaScript/TypeScript Example:
```bash
npm run lint
npm run typecheck
```
### Python Example:
```bash
mypy .
pylint src/
black --check .
```
### Go Example:
```bash
go vet ./...
staticcheck ./...
gofmt -l .
```
### Rust Example:
```bash
cargo clippy -- -D warnings
cargo fmt -- --check
```
## Step 5: Confirm Completion
After generating the `/fix` command, inform the user:
1. What project type was detected
2. Which tools were already present
3. Which tools were installed (if any)
4. That the `/fix` command has been created at `.claude/commands/fix.md`
5. How to use it: "Run `/fix` to lint, typecheck, and auto-fix all issues"
**Important Notes**:
- Always create the `.claude/commands/` directory if it doesn't exist
- Ensure the YAML frontmatter includes both `name` and `description`
- The generated `/fix` command must spawn agents in parallel (single response, multiple Task tool calls)
- Tailor the commands to what's actually available in the project