Skip to main content

rule-creator

Create path-scoped .claude/rules/ for Claude Code projects. Use when adding coding conventions, framework patterns, or domain-specific rules that auto-inject when matching files are touched.

설치로 이동

소스 정보

저장소
anilcancakir/claude-code-plugin
최근 소스 활동
2026년 4월 17일 16:07
감지된 SKILL.md 언어
영어
스타
2
포크
1

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
rule-creator
description
Create path-scoped .claude/rules/ for Claude Code projects. Use when adding coding conventions, framework patterns, or domain-specific rules that auto-inject when matching files are touched.
when_to_use
TRIGGER when: 'create a rule', 'add a coding rule', 'add convention for', working with .claude/rules/. DO NOT TRIGGER: creating skills, agents, or commands. Note: /ac:init-rules auto-generates rules from analysis — this skill is for manual/custom rule creation.
effort
medium
Create path-scoped rules that auto-inject when Claude Code reads, writes, or edits matching files. Rules hold "how to code HERE" — CLAUDE.md holds "what this project IS". ## Context Layer Stack ``` ~/.claude/CLAUDE.md ← always (global) ./CLAUDE.md ← always (project) .claude/rules/<name>.md ← ON-DEMAND when matching file touched ``` CLAUDE.md and rules are visible simultaneously. Any overlap = wasted tokens. Rules are ADDITIVE — never duplicating CLAUDE.md, never re-stating what `my-coding` already covers. ## Two-Tier Rules | Tier | Scope | Lines | Example | |------|-------|-------|---------| | **Stack** | All files of a language | 10-20 | `flutter.md` → `lib/**/*.dart` | | **Domain** | Specific module | 15-40 | `database.md` → `lib/src/database/**/*.dart` | Stack and domain globs can overlap — both inject when a domain file is touched. This is intentional: stack provides general conventions, domain adds deep API knowledge. ## Core Process **1. Identify Scope** Determine which files need this rule. Define the narrowest glob that covers the affected area: - Language-wide: `lib/**/*.dart`, `src/**/*.ts` - Module-specific: `src/api/**/*.ts`, `app/Http/Controllers/**/*.php` - Test files: `test/**/*_test.dart`, `tests/**/*.test.ts` Avoid `**/*` — too broad. Rules must add value only when the matched files are being touched. **2. Classify Tier** - **Stack rule** (10-20 lines): applies to all files of a language/framework — import style, naming, general conventions - **Domain rule** (15-40 lines): applies to a specific module — API patterns, must-know method signatures, domain-specific gotchas **3. Dedup Check** Read these sources before writing any rule content: 1. `./CLAUDE.md` — project-wide conventions already stated 2. `~/.claude/CLAUDE.md` — global workflow rules 3. `~/.claude/skills/my-coding/SKILL.md` — general coding standards Apply this algorithm to each proposed convention: - **Exact match** found in any source → skip it - **Semantic overlap** (broader rule covers this case) → skip it - **Conflict** (proposed rule contradicts an existing rule) → flag for user decision, present both, ask which takes precedence - **Complement** (adds specificity to a broad rule) → keep it Also verify no proposed convention duplicates another rule in `.claude/rules/` if rules already exist. **4. Draft Rule** Flat bullet list, imperative mood. Optional H1 heading for domain rules (not for stack rules). Include: - Naming patterns specific to this path - Key API method signatures and usage patterns - Framework conventions that aren't obvious from the code - Gotchas — known footguns, deprecated APIs, things to avoid Exclude: - Generic advice ("write clean code", "use descriptive names", "handle errors") - Workflow instructions, TodoWrite mentions, TDD process - Setup or installation steps - Content discoverable via Glob or LS (directory structure, file lists) **5. Verify** - No convention duplicates CLAUDE.md or my-coding content - No rule-to-rule duplication with existing `.claude/rules/` files - Line count within tier limit (stack: 10-20, domain: 15-40) - Glob is specific enough to target the right files ## Rule Frontmatter ```yaml --- path: "<glob>" description: "<informational only — not used for triggering>" --- ``` `path` is the only meaningful field — it controls when the rule injects. `description` is informational only. Rules do NOT support: `model`, `tools`, `user-invocable`, `context`, or any other skill/agent frontmatter fields. The rule system is intentionally minimal. ## Anti-Slop Rules - NEVER include workflow instructions, TodoWrite, delegation patterns, 3-strike rule, TDD process — these live in CLAUDE.md - NEVER include generic advice: "write clean code", "use descriptive names", "handle errors appropriately" - NEVER include setup, installation, or configuration steps - NEVER include content discoverable via Glob or LS (file lists, directory trees) - NEVER duplicate anything already in `~/.claude/CLAUDE.md` or `./CLAUDE.md` - NEVER duplicate anything already in `~/.claude/skills/my-coding/SKILL.md` **Rules = project-specific, path-specific, verifiable conventions only.** ## Examples ### Stack Rule — Flutter ```markdown --- path: "lib/**/*.dart" description: "Flutter/Dart conventions for all app source files" --- - Use `freezed` for data classes — never write `copyWith` or `==` manually - Import with relative paths within `lib/`, package paths for external deps - Prefer `AsyncValue` from Riverpod over raw `Future` in UI state - Name providers `<feature>Provider` — never suffix with `Notifier` unless it IS a notifier - `context.mounted` check required after every `await` that uses `context` - Use `ref.invalidate()` to force refresh, not `ref.refresh()` (deprecated) - `AppException` for domain errors, `Failure` sealed class for result types ``` ### Domain Rule — API Layer ```markdown --- path: "src/api/**/*.ts" description: "API route handlers and middleware conventions" --- # API Layer - Export route handlers as named functions — never default exports - Validate all request bodies with Zod schemas before business logic - Return `ApiResponse<T>` wrapper — never raw objects from handlers - Use `withAuth(handler)` middleware HOC for authenticated routes - Error handling: `throw new ApiError(code, message)` — caught by global error middleware - Route files name pattern: `<resource>.routes.ts`, handler files: `<resource>.handlers.ts` - `req.user` is typed as `AuthenticatedUser` after `withAuth` — no null checks needed inside - Never call service layer from middleware — middleware is cross-cutting only - Pagination: `PaginatedQuery` schema from `@/schemas/common` — don't redefine per-route ```
GitHub에서 보기