---
name: init-rules
description: >
  Initialize or update CLAUDE.md coding standards for any project by auto-detecting tech stack
  and assembling rules from the claude-rules template library.
  Use when user says "init rules", "初始化规范", "生成 CLAUDE.md", or wants to set up coding standards.
---

# Init Claude Rules

IMPORTANT: You MUST read rule files from this skill's bundled files. Do NOT generate rules from your own knowledge.

Rule files are bundled in this skill's directory. Use `${CLAUDE_SKILL_DIR}` to reference them.

## Workflow

### Step 1: Detect Tech Stack

Scan the current working directory to identify languages and frameworks:

| Signal | Rule File |
|--------|-----------|
| `tsconfig.json` or `*.ts` files | `languages/typescript.md` |
| `package.json` with `"vue"` dependency | `frameworks/vue.md` |
| `package.json` with `"react"` dependency | `frameworks/react.md` |
| `src-tauri/` directory | `frameworks/tauri.md` |
| `*.js` files without `tsconfig.json` | `languages/javascript.md` |
| `*.java` files or `pom.xml` | `languages/java.md` |
| `build.gradle.kts` or `*.kt` files | `languages/kotlin.md` |
| `pom.xml`/`build.gradle` with `spring-boot` | `frameworks/springboot.md` |
| `Package.swift` or `*.swift` files | `languages/swift.md` |
| Swift files with `import SwiftUI` | `frameworks/swiftui.md` |
| `pyproject.toml` or `requirements.txt` | `languages/python.md` |
| `*.html` files | `languages/html.md` |
| `*.css`/`*.scss` files | `languages/css.md` |
| `go.mod` or `*.go` files | `languages/go.md` |
| `Cargo.toml` or `*.rs` files | `languages/rust.md` |

Present detection results and ask user to confirm or adjust before proceeding.

### Step 2: Read Rule Files

Read files from this skill's bundled directory using the Read tool.

Always read:
1. `${CLAUDE_SKILL_DIR}/base/core.md`
2. `${CLAUDE_SKILL_DIR}/base/git.md`

Then read each detected language and framework file, e.g.:
- `${CLAUDE_SKILL_DIR}/languages/typescript.md`
- `${CLAUDE_SKILL_DIR}/frameworks/vue.md`

### Step 3: Assemble & Write CLAUDE.md

Concatenate ALL fetched content in this exact order:

1. `<!-- Generated by init-claude-rules | https://github.com/lifedever/claude-rules -->`
2. Empty line
3. Content of `base/core.md`
4. Content of `base/git.md`
5. Each detected language file
6. Each detected framework file

Write to `CLAUDE.md` in the current working directory.

If CLAUDE.md already exists, warn user and ask before overwriting.

### Step 4: Report

- List included rule files
- Total line count
- Remind user to run `claude plugin marketplace update claude-rules` to get latest rules
