Rulereach banner
Topicspot Topicspot

Rulereach

Git community

Description

Finds the agent instruction files that will never be loaded: Cursor globs, CLAUDE.md imports, .github/instructions applyTo, nested AGENTS.md. Applies each tool's documented loading rules and reports what silently never reaches the agent

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

rulereach

**English** · [Русский](docs/README.ru.md) · [简体中文](docs/README.zh-CN.md) · [Español](docs/README.es.md) · [Português](docs/README.pt-BR.md)

[![PyPI](https://img.shields.io/pypi/v/rulereach?style=flat-square&label=pypi&color=3775A9)](https://pypi.org/project/rulereach/) [![Python](https://img.shields.io/pypi/pyversions/rulereach?style=flat-square&color=4B8BBE)](https://pypi.org/project/rulereach/) [![CI](https://github.com/Topicspot/rulereach/actions/workflows/ci.yml/badge.svg)](https://github.com/Topicspot/rulereach/actions/workflows/ci.yml) [![License](https://img.shields.io/badge/license-MIT-green?style=flat-square)](https://github.com/Topicspot/rulereach/blob/main/LICENSE)

Your agent instruction files can be perfectly written and still never reach the agent. A Cursor rule with `globs` as a YAML list never attaches. A `@import` in `CLAUDE.md` that points one directory too high is skipped without a word. A file in `.github/instructions/` without `applyTo` applies to nothing. A nested `AGENTS.md` quietly replaces the root one. None of that shows up as an error anywhere: the agent just works without your rules.

`rulereach` reads the instruction files in a repository, applies each tool's documented loading rules, and reports what will never be loaded.

![rulereach demo](https://raw.githubusercontent.com/Topicspot/rulereach/main/assets/demo.gif)

$ rulereach check
.claude/rules/api.md
  x RR204 [claude] paths pattern 'photos [2024/**' unreadable bracket expression, so it matches nothing
      fix: rewrite the pattern; escape a literal bracket as \[ and keep brace groups small
      docs: https://code.claude.com/docs/en/memory
.cursor/rules/style.mdc
  x RR102 [cursor] globs is a YAML list; Cursor expects one comma-separated string, so the rule never auto-attaches
      fix: write: globs: src/**/*.ts
      docs: https://forum.cursor.com/t/glob-pattern-rules-are-never-respected-by-agent/160133
AGENTS.md
  x RR201 [claude] the repository has AG