Rules are organized into a common layer plus language-specific directories:
rules/ ├── common/ # Language-agnostic principles (always install) │ ├── coding-style.md │ ├── git-workflow.md │ ├── testing.md │ ├── performance.md │ ├── patterns.md │ ├── hooks.md │ ├── agents.md │ └── security.md ├── typescript/ # TypeScript/JavaScript specific ├── python/ # Python specific ├── golang/ # Go specific ├── swift/ # Swift specific └── php/ # PHP specific
# Install common + one or more language-specific rule sets
./install.sh typescript
./install.sh python
./install.sh golang
./install.sh swift
./install.sh php
# Install multiple languages at once
./install.sh typescript python
Important: Copy entire directories — do NOT flatten with
/*. Common and language-specific directories contain files with the same names. Flattening them into one directory causes language-specific files to overwrite common rules, and breaks the relative../common/references used by language-specific files.
# Install common rules (required for all projects)
cp -r rules/common ~/.claude/rules/common
# Install language-specific rules based on your project's tech stack
cp -r rules/typescript ~/.claude/rules/typescript
cp -r rules/python ~/.claude/rules/python
cp -r rules/golang ~/.claude/rules/golang
cp -r rules/swift ~/.claude/rules/swift
cp -r rules/php ~/.claude/rules/php
# Attention ! ! ! Configure according to your actual project requirements; the configuration here is for reference only.
skills/ directory) provide deep, actionable reference material for specific tasks (e.g., python-patterns, golang-testing).Language-specific rule files reference relevant skills where appropriate. Rules tell you what to do; skills tell you how to do it.
To add support for a new language (e.g., rust/):
rules/rust/ directorycoding-style.md — formatting tools, idioms, error handling patternstesting.md — test framework, coverage tools, test organizationpatterns.md — language-specific design patternshooks.md — PostToolUse hooks for formatters, linters, type checkerssecurity.md — secret management, security scanning tools> This file extends [common/xxx.md](../common/xxx.md) with <Language> specific content.
skills/.When language-specific rules and common rules conflict, language-specific rules take precedence (specific overrides general). This follows the standard layered configuration pattern (similar to CSS specificity or .gitignore precedence).
rules/common/ defines universal defaults applicable to all projects.rules/golang/, rules/python/, rules/swift/, rules/php/, rules/typescript/, etc. override those defaults where language idioms differ.common/coding-style.md recommends immutability as a default principle. A language-specific golang/coding-style.md can override this:
Idiomatic Go uses pointer receivers for struct mutation — see common/coding-style.md for the general principle, but Go-idiomatic mutation is preferred here.
Rules in rules/common/ that may be overridden by language-specific files are marked with:
Language note: This rule may be overridden by language-specific rules for languages where this pattern is not idiomatic.