Rule Author
Canonical workflow, templates, and references for authoring AI coding assistant rules. Supports GitHub Copilot, Cursor, and Claude Code.
Internal skill. Users interact via the fusion-rules gateway, which routes to editor-specific agents that follow the workflow defined here.
Scope
This skill provides:
- Workflow (Steps 1–7 below) — the guided authoring process
- Templates (
assets/) — starter files for each editor format
- References (
references/) — tech-stack examples
It does not provide agents. Agents live in fusion-rules/agents/ and reference this skill's assets and workflow.
Required inputs
Mandatory
Gathered during interview
Instructions
Step 1 — Assess current state
Check the repository for existing rule files:
.github/copilot-instructions.md
.github/instructions/*.instructions.md
.cursor/rules/*.md
.cursor/rules/*.mdc
.cursor/rules/**/*.md
.cursor/rules/**/*.mdc
CLAUDE.md
.claude/CLAUDE.md
.claude/rules/*.md
.claude/rules/**/*.md
Report what exists, what is missing, and whether updates or new files are needed.
Step 2 — Scan repository
Before interviewing, scan for existing documentation and configuration that encodes conventions. Extract actionable directives from:
Documentation files:
README.md — project overview, setup, tech stack
CONTRIBUTING.md — code style, PR workflow, commit conventions
AGENTS.md, CLAUDE.md — existing AI instructions
docs/adr/**, adr/**, docs/decisions/** — Architecture Decision Records
docs/**/*.md — developer guides, onboarding docs, style guides
SECURITY.md — security policies
CODE_OF_CONDUCT.md — collaboration guidelines (rarely rule-relevant)
Configuration files:
package.json / pyproject.toml / *.csproj — tech stack, scripts, dependencies
tsconfig.json / jsconfig.json — language settings, strictness
biome.json / .eslintrc* / .prettierrc* / ruff.toml / .editorconfig — formatting and linting
.github/workflows/*.yml — CI checks, required validations, test commands
Dockerfile / docker-compose.yml — runtime environment
Makefile / Justfile / Taskfile.yml — build and task commands
Code patterns (sample, don't exhaustively read):
- Entry points (
src/index.*, src/main.*, app.*) — architecture patterns
- Test files — testing framework, naming conventions, file placement
- Directory structure — architectural boundaries, feature organization
For each source, extract:
- Concrete conventions that can become imperative directives
- Build/test/lint commands the AI should know
- Architecture boundaries or patterns to follow
- Explicit "do this / don't do that" rules
Skip:
- Implementation details that change frequently
- Content that restates language/framework defaults
- Aspirational rules not enforced by CI or team practice
Present summary of discovered conventions to the developer, organized by area, before proceeding to the interview.
Step 3 — Interview (fill gaps)
Use scan results to skip areas already well-documented. Ask focused questions only for gaps. Cover these areas one at a time:
- Tech stack — languages, frameworks, runtime, package manager
- Code style — naming conventions, formatting rules, import ordering
- Architecture — project structure, key patterns (MVC, hexagonal, etc.)
- Testing — framework, conventions, coverage expectations
- Documentation — inline comments style, doc generation, README standards
- Git workflow — branch naming, commit message format, PR expectations
- Security — sensitive data handling, auth patterns, compliance rules
- Path-specific concerns — directories or file types needing specialized guidance
For each area, present what the scan found and ask: "Is this accurate? Anything to add or correct?" Don't re-ask for information already captured.
For each convention needing deeper context, use follow-up questions in assets/creation-follow-up.md — purpose, exceptions, boundaries, voice.
Step 4 — Classify guidance
Separate the gathered conventions into buckets:
GitHub Copilot:
| Bucket |
Target file |
When it activates |
| Always-on conventions |
.github/copilot-instructions.md |
Every Copilot interaction |
| Scoped conventions |
.github/instructions/<name>.instructions.md |
Only when matching files are open/referenced |
Cursor:
| Bucket |
Target file |
When it activates |
| Always-on conventions |
.cursor/rules/<name>.mdc with alwaysApply: true |
Every Cursor Agent session |
| Auto-attached conventions |
.cursor/rules/<name>.mdc with globs |
When matching files are in context |
| Agent-selected conventions |
.cursor/rules/<name>.mdc with description only |
When the Agent decides it is relevant |
| Manual conventions |
.cursor/rules/<name>.mdc (no alwaysApply, no globs) |
Only when @-mentioned in chat |
Claude Code:
| Bucket |
Target file |
When it activates |
| Always-on conventions |
CLAUDE.md or .claude/CLAUDE.md |
Every Claude Code session |
| Scoped conventions |
.claude/rules/<name>.md with paths frontmatter |
When Claude reads matching files |
| Unconditional rule |
.claude/rules/<name>.md (no paths) |
Every session (like always-on) |
Decision rule: If a convention applies to all files in the repo, it belongs in root / always-on instructions. If it applies only to specific paths or file types, create a scoped rule.
When targeting multiple editors, generate parallel files with equivalent content — do not duplicate guidance within a single editor's files.
Step 5 — Draft rule files
Generate files using templates in assets/:
GitHub Copilot:
- Root instructions: use
assets/copilot-instructions-template.md
- Scoped instructions: use
assets/scoped-rule-template.md with correct applyTo glob
Cursor:
- Use
assets/cursor-rule-template.mdc and set frontmatter accordingly
Claude Code:
- Project instructions: use
assets/claude-rule-template.md
- Scoped rules: place in
.claude/rules/ with paths frontmatter
Quality rules (enforced during drafting):
- Keep instructions concise — actionable directives, not explanations
- Use imperative voice ("Use camelCase for variables", not "Variables should use camelCase")
- Avoid duplicating guidance between root and scoped files
- Validate
applyTo / globs / paths glob patterns match intended files
- Warn if total root instructions exceed ~80 lines (risk of context dilution)
- Warn if scoped instruction file exceeds ~50 lines (GitHub Copilot), ~500 lines (Cursor), ~200 lines (Claude Code CLAUDE.md)
- See
references/examples.md for concrete good/bad examples
- See
assets/quality-checklist.md for full checklist
Step 6 — Review and refine
Present drafted files to the developer. For each file:
- Show full content
- Highlight quality warnings (length, broad globs, duplication)
- Ask for approval or edits
Step 7 — Write files
After approval, write rule files to the repository. Create .github/instructions/, .cursor/rules/, and/or .claude/rules/ directories as needed.
Confirm final file list and paths before writing.
Expected output
.github/copilot-instructions.md — root instructions file (created or updated)
.github/instructions/*.instructions.md — zero or more scoped instruction files
.cursor/rules/*.mdc — zero or more Cursor rule files (when Cursor is targeted)
CLAUDE.md or .claude/CLAUDE.md — project instructions (when Claude Code is targeted)
.claude/rules/*.md — zero or more Claude Code scoped rule files
- Summary of what was created/updated and why
Instructions vs skills vs rules — when to use which
| Need |
GitHub Copilot |
Cursor |
Claude Code |
| Always-on coding conventions |
copilot-instructions.md |
.cursor/rules/*.mdc with alwaysApply: true |
CLAUDE.md |
| File/path-specific guidance |
.github/instructions/*.instructions.md |
.cursor/rules/*.mdc with globs |
.claude/rules/*.md with paths |
| Task-specific multi-step workflows |
A skill (SKILL.md) |
.cursor/rules/*.mdc (manual or agent-selected) |
Skills / subagents |
| Agent routing and orchestration |
Agent definitions (.agent.md) |
.cursor/rules/*.mdc with description |
Subagent configs |
| Simple project-wide instructions |
copilot-instructions.md |
AGENTS.md |
CLAUDE.md |
Instructions and rules shape how the AI writes code. Skills define what it can do as structured tasks.
Safety and constraints
Never:
- Embed secrets, tokens, or credentials in rule files
- Generate rules that contradict repository security policies
- Overwrite existing files without showing the diff and getting approval
- Invent conventions — only document what the developer confirms
Always:
- Show drafts before writing any files
- Validate glob patterns against actual repository paths
- Warn on overly broad globs (e.g.,
**/* captures everything)
- Keep instructions concise and actionable
- Preserve existing content when updating (append or merge, never replace silently)
References
references/examples.md — concrete examples for different tech stacks
assets/creation-follow-up.md — per-rule follow-up questions (purpose, exceptions, boundaries, voice)
assets/frontmatter-scenarios.md — scenario-based frontmatter guide for GitHub Copilot, Cursor, and Claude Code
assets/copilot-instructions-template.md — starter template for root instructions
assets/scoped-rule-template.md — starter template for scoped rules
assets/cursor-rule-template.mdc — starter template for Cursor rules
assets/claude-rule-template.md — starter template for Claude Code rules
assets/quality-checklist.md — quality review checklist
1---2name: fusion-rule-author3description: Support skill providing the workflow, templates, and references for AI coding assistant rule authoring. Invoked by fusion-rules gateway agents — not intended for direct use.4license: MIT5---67# Rule Author89Canonical workflow, templates, and references for authoring AI coding assistant rules. Supports **GitHub Copilot**, **Cursor**, and **Claude Code**.1011> **Internal skill.** Users interact via the `fusion-rules` gateway, which routes to editor-specific agents that follow the workflow defined here.1213## Scope1415This skill provides:1617- **Workflow** (Steps 1–7 below) — the guided authoring process18- **Templates** (`assets/`) — starter files for each editor format19- **References** (`references/`) — tech-stack examples2021It does **not** provide agents. Agents live in `fusion-rules/agents/` and reference this skill's assets and workflow.2223## Required inputs2425### Mandatory2627- [ ] Repository context (working directory or repo URL)2829### Gathered during interview3031- [ ] Tech stack (languages, frameworks, build tools)32- [ ] Code conventions (naming, formatting, patterns)33- [ ] Testing expectations (framework, coverage, style)34- [ ] Documentation preferences (comments, TSDoc/JSDoc, README standards)35- [ ] Commit and PR conventions36- [ ] Error handling patterns37- [ ] Security or compliance constraints38- [ ] File/path-specific conventions that need scoped rules3940## Instructions4142### Step 1 — Assess current state4344Check the repository for existing rule files:4546```47.github/copilot-instructions.md48.github/instructions/*.instructions.md49.cursor/rules/*.md50.cursor/rules/*.mdc51.cursor/rules/**/*.md52.cursor/rules/**/*.mdc53CLAUDE.md54.claude/CLAUDE.md55.claude/rules/*.md56.claude/rules/**/*.md57```5859Report what exists, what is missing, and whether updates or new files are needed.6061### Step 2 — Scan repository6263Before interviewing, scan for existing documentation and configuration that encodes conventions. Extract actionable directives from:6465**Documentation files:**66- `README.md` — project overview, setup, tech stack67- `CONTRIBUTING.md` — code style, PR workflow, commit conventions68- `AGENTS.md`, `CLAUDE.md` — existing AI instructions69- `docs/adr/**`, `adr/**`, `docs/decisions/**` — Architecture Decision Records70- `docs/**/*.md` — developer guides, onboarding docs, style guides71- `SECURITY.md` — security policies72- `CODE_OF_CONDUCT.md` — collaboration guidelines (rarely rule-relevant)7374**Configuration files:**75- `package.json` / `pyproject.toml` / `*.csproj` — tech stack, scripts, dependencies76- `tsconfig.json` / `jsconfig.json` — language settings, strictness77- `biome.json` / `.eslintrc*` / `.prettierrc*` / `ruff.toml` / `.editorconfig` — formatting and linting78- `.github/workflows/*.yml` — CI checks, required validations, test commands79- `Dockerfile` / `docker-compose.yml` — runtime environment80- `Makefile` / `Justfile` / `Taskfile.yml` — build and task commands8182**Code patterns (sample, don't exhaustively read):**83- Entry points (`src/index.*`, `src/main.*`, `app.*`) — architecture patterns84- Test files — testing framework, naming conventions, file placement85- Directory structure — architectural boundaries, feature organization8687**For each source, extract:**881. Concrete conventions that can become imperative directives892. Build/test/lint commands the AI should know903. Architecture boundaries or patterns to follow914. Explicit "do this / don't do that" rules9293**Skip:**94- Implementation details that change frequently95- Content that restates language/framework defaults96- Aspirational rules not enforced by CI or team practice9798Present summary of discovered conventions to the developer, organized by area, before proceeding to the interview.99100### Step 3 — Interview (fill gaps)101102Use scan results to skip areas already well-documented. Ask focused questions only for gaps. Cover these areas one at a time:1031041. **Tech stack** — languages, frameworks, runtime, package manager1052. **Code style** — naming conventions, formatting rules, import ordering1063. **Architecture** — project structure, key patterns (MVC, hexagonal, etc.)1074. **Testing** — framework, conventions, coverage expectations1085. **Documentation** — inline comments style, doc generation, README standards1096. **Git workflow** — branch naming, commit message format, PR expectations1107. **Security** — sensitive data handling, auth patterns, compliance rules1118. **Path-specific concerns** — directories or file types needing specialized guidance112113For each area, present what the scan found and ask: "Is this accurate? Anything to add or correct?" Don't re-ask for information already captured.114115For each convention needing deeper context, use follow-up questions in `assets/creation-follow-up.md` — purpose, exceptions, boundaries, voice.116117### Step 4 — Classify guidance118119Separate the gathered conventions into buckets:120121**GitHub Copilot:**122123| Bucket | Target file | When it activates |124|--------|-------------|-------------------|125| **Always-on** conventions | `.github/copilot-instructions.md` | Every Copilot interaction |126| **Scoped** conventions | `.github/instructions/<name>.instructions.md` | Only when matching files are open/referenced |127128**Cursor:**129130| Bucket | Target file | When it activates |131|--------|-------------|-------------------|132| **Always-on** conventions | `.cursor/rules/<name>.mdc` with `alwaysApply: true` | Every Cursor Agent session |133| **Auto-attached** conventions | `.cursor/rules/<name>.mdc` with `globs` | When matching files are in context |134| **Agent-selected** conventions | `.cursor/rules/<name>.mdc` with `description` only | When the Agent decides it is relevant |135| **Manual** conventions | `.cursor/rules/<name>.mdc` (no `alwaysApply`, no `globs`) | Only when @-mentioned in chat |136137**Claude Code:**138139| Bucket | Target file | When it activates |140|--------|-------------|-------------------|141| **Always-on** conventions | `CLAUDE.md` or `.claude/CLAUDE.md` | Every Claude Code session |142| **Scoped** conventions | `.claude/rules/<name>.md` with `paths` frontmatter | When Claude reads matching files |143| **Unconditional rule** | `.claude/rules/<name>.md` (no `paths`) | Every session (like always-on) |144145**Decision rule:** If a convention applies to all files in the repo, it belongs in root / always-on instructions. If it applies only to specific paths or file types, create a scoped rule.146147When targeting multiple editors, generate parallel files with equivalent content — do not duplicate guidance within a single editor's files.148149### Step 5 — Draft rule files150151Generate files using templates in `assets/`:152153**GitHub Copilot:**154- Root instructions: use `assets/copilot-instructions-template.md`155- Scoped instructions: use `assets/scoped-rule-template.md` with correct `applyTo` glob156157**Cursor:**158- Use `assets/cursor-rule-template.mdc` and set frontmatter accordingly159160**Claude Code:**161- Project instructions: use `assets/claude-rule-template.md`162- Scoped rules: place in `.claude/rules/` with `paths` frontmatter163164**Quality rules (enforced during drafting):**165166- Keep instructions concise — actionable directives, not explanations167- Use imperative voice ("Use camelCase for variables", not "Variables should use camelCase")168- Avoid duplicating guidance between root and scoped files169- Validate `applyTo` / `globs` / `paths` glob patterns match intended files170- Warn if total root instructions exceed ~80 lines (risk of context dilution)171- Warn if scoped instruction file exceeds ~50 lines (GitHub Copilot), ~500 lines (Cursor), ~200 lines (Claude Code CLAUDE.md)172- See `references/examples.md` for concrete good/bad examples173- See `assets/quality-checklist.md` for full checklist174175### Step 6 — Review and refine176177Present drafted files to the developer. For each file:1781791. Show full content1802. Highlight quality warnings (length, broad globs, duplication)1813. Ask for approval or edits182183### Step 7 — Write files184185After approval, write rule files to the repository. Create `.github/instructions/`, `.cursor/rules/`, and/or `.claude/rules/` directories as needed.186187Confirm final file list and paths before writing.188189## Expected output190191- `.github/copilot-instructions.md` — root instructions file (created or updated)192- `.github/instructions/*.instructions.md` — zero or more scoped instruction files193- `.cursor/rules/*.mdc` — zero or more Cursor rule files (when Cursor is targeted)194- `CLAUDE.md` or `.claude/CLAUDE.md` — project instructions (when Claude Code is targeted)195- `.claude/rules/*.md` — zero or more Claude Code scoped rule files196- Summary of what was created/updated and why197198## Instructions vs skills vs rules — when to use which199200| Need | GitHub Copilot | Cursor | Claude Code |201|------|---------------|--------|-------------|202| Always-on coding conventions | `copilot-instructions.md` | `.cursor/rules/*.mdc` with `alwaysApply: true` | `CLAUDE.md` |203| File/path-specific guidance | `.github/instructions/*.instructions.md` | `.cursor/rules/*.mdc` with `globs` | `.claude/rules/*.md` with `paths` |204| Task-specific multi-step workflows | A skill (`SKILL.md`) | `.cursor/rules/*.mdc` (manual or agent-selected) | Skills / subagents |205| Agent routing and orchestration | Agent definitions (`.agent.md`) | `.cursor/rules/*.mdc` with `description` | Subagent configs |206| Simple project-wide instructions | `copilot-instructions.md` | `AGENTS.md` | `CLAUDE.md` |207208Instructions and rules shape **how** the AI writes code. Skills define **what** it can do as structured tasks.209210## Safety and constraints211212Never:213214- Embed secrets, tokens, or credentials in rule files215- Generate rules that contradict repository security policies216- Overwrite existing files without showing the diff and getting approval217- Invent conventions — only document what the developer confirms218219Always:220221- Show drafts before writing any files222- Validate glob patterns against actual repository paths223- Warn on overly broad globs (e.g., `**/*` captures everything)224- Keep instructions concise and actionable225- Preserve existing content when updating (append or merge, never replace silently)226227## References228229- `references/examples.md` — concrete examples for different tech stacks230- `assets/creation-follow-up.md` — per-rule follow-up questions (purpose, exceptions, boundaries, voice)231- `assets/frontmatter-scenarios.md` — scenario-based frontmatter guide for GitHub Copilot, Cursor, and Claude Code232- `assets/copilot-instructions-template.md` — starter template for root instructions233- `assets/scoped-rule-template.md` — starter template for scoped rules234- `assets/cursor-rule-template.mdc` — starter template for Cursor rules235- `assets/claude-rule-template.md` — starter template for Claude Code rules236- `assets/quality-checklist.md` — quality review checklist