---
name: lint-instructions
description: Detect and fix violations of project instructions defined in .claude/rules/. Use when checking code compliance, reviewing changes, or when the user asks about instruction violations.
---

# Instruction Linter

Validates code against project-specific rules defined in `.claude/rules/`.

## When to Use

- Before committing changes
- After implementing a new feature
- When reviewing code for compliance
- When user asks to check instruction compliance

## Instructions

### 1. Load All Rules

Read all instruction files:

```
.claude/rules/code-style.md
.claude/rules/cross-framework.md
.claude/rules/packages/core.md
.claude/rules/packages/react.md
.claude/rules/packages/vue.md
.claude/rules/packages/svelte.md
.claude/rules/demo.md
```

### 2. Check Categories

For each category, verify compliance:

#### Code Style (code-style.md)
- [ ] Function declarations: exports use `function`, callbacks use arrows
- [ ] Type safety: `satisfies` over type annotations, type guards over `as` casts
- [ ] Documentation: JSDoc on public APIs

#### Cross-Framework (cross-framework.md)
- [ ] Component parity: all components exist in React/Vue/Svelte
- [ ] Props equivalence: same props interface across frameworks
- [ ] Hook/Composable/Rune equivalence: same options, similar return types
- [ ] Core centralization: shared types/constants/utils in @vizel/core

#### Core Package (packages/core.md)
- [ ] No framework dependencies (React, Vue, Svelte)
- [ ] All shared types defined here
- [ ] All constants defined here

#### Framework Packages (packages/react.md, vue.md, svelte.md)
- [ ] Only framework-specific wrappers
- [ ] Correct idioms (hooks vs composables vs runes)
- [ ] Proper context usage

### 3. Report Format

```markdown
## Instruction Compliance Report

### ✅ Passing
- [rule]: [description]

### ❌ Violations
- [rule]: [file:line] - [issue description]
  - **Fix**: [suggested fix]

### ⚠️ Warnings
- [rule]: [potential issue]
```

### 4. Auto-Fix When Possible

For fixable violations:
1. Show the violation
2. Propose the fix
3. Apply if user approves

## Example Usage

User: "Check if my changes follow the project rules"

1. Read recent git changes: `git diff --name-only HEAD~1`
2. Load relevant rule files based on changed paths
3. Check each changed file against applicable rules
4. Report violations with fixes

## Checklist Commands

Quick checks to run:

```bash
# Biome handles: formatting, imports, exports, naming
pnpm check

# Type safety
pnpm typecheck

# Build verification
pnpm build
```

## Common Violations

| Violation | Rule | Fix |
|-----------|------|-----|
| `export const fn = () => {}` | code-style | Use `export function fn() {}` |
| `data as Type` | code-style | Use type guard function |
| Type in framework package | cross-framework | Move to @vizel/core |
| Missing component in one framework | cross-framework | Add equivalent component |
| `default export` | Biome | Use named export |
