Agent skill

writing-rules

Use when creating project rules, adding .claude/rules/*.md files, or scoping rules to specific files with globs for token efficiency.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/cc-writing-rules

SKILL.md

Writing Project Rules

Overview

Project rules provide context-specific instructions to Claude. This skill covers creating file-scoped rules that minimize token usage by only loading when relevant files are touched.

When to Use

  • Creating new project rules
  • Adding .claude/rules/*.md files
  • Scoping rules to specific files with globs
  • Setting up doc-sync reminders (update X when Y changes)

Rule File Locations

Location Scope Loaded When
.claude/CLAUDE.md Project-wide Always
.claude/rules/*.md File-specific When globs match
~/.claude/CLAUDE.md User global Always (all projects)
~/.claude/rules/*.md User file-specific When globs match

Workflow

1. Choose Scope

  • Project-wide (commits, general info) → .claude/CLAUDE.md
  • File-specific (component rules, doc sync) → .claude/rules/*.md with globs

2. Create File-Scoped Rule

markdown
---
globs: src/api/**/*.ts
---

# API Rules

- Use Result types for errors
- Validate inputs at boundaries

3. Use Appropriate Glob Patterns

*.ts                    # All .ts files anywhere
src/**/*.ts             # All .ts in src tree
fish/config.fish        # Exact file match
{src,lib}/**/*.ts       # Multiple directories

Multiple globs:

markdown
---
globs:
  - src/api/**/*.ts
  - src/services/**/*.ts
---

Example: Doc Sync Rule

When modifying a file should trigger doc updates:

markdown
---
globs: fish/config.fish
---

# Git Dashboard

When modifying `_git_*` functions:

- Update `fish/GIT_DASHBOARD_DESIGN.md` after visible changes

Rules vs Skills

Consider a skill instead of a rule when:

  • Content applies to operations (git push, running tests) not file edits
  • Guidance is on-demand rather than always needed
  • The glob pattern doesn't match when the rule would actually help

Gotcha: A rule with globs: ".github/**" containing "never push to main" won't load during git push - it only loads when editing .github files. Use a skill or hook instead.

Key Principles

  1. Prefer globs over project-wide - reduces token usage
  2. Keep rules concise - they consume context tokens
  3. One concern per rule file - easier to maintain
  4. Multiple rules can match - all matching rules apply
  5. Match globs to trigger - ensure glob fires when rule is needed

Expand your agent's capabilities with these related and highly-rated skills.

Didn't find tool you were looking for?

Be as detailed as possible for better results