diff --git a/CHANGELOG.md b/CHANGELOG.md index 70cff84..d302aba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,42 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.4.0] - 2026-02-16 + +Rules consolidation — 47 rules reduced to 17 focused rules, GitHub Copilot agent added, new governance and maintenance categories. + +### Added +- [AGENT]: GitHub Copilot CLI — agent config, `.github/copilot-instructions.md`, 2 rules (COPILOT:S:0001, COPILOT:C:0001) +- [CORE]: Governance category — cross-agent-compatibility (CORE:G:0001, moved from structure) +- [CORE]: Maintenance category — valid-internal-references (CORE:M:0001), valid-glob-patterns-in-frontmatter (CORE:M:0002) +- [RUNTIME]: Agent exclude patterns — `excludes` list in agent config.yml with wildcard support (`CLAUDE:*`) +- [RUNTIME]: Agent-scoped rule discovery — `--agent` flag filters to agent's own rules plus core +- [SOURCES]: 5 Copilot sources added to docs/sources.yml (copilot-cli-best-practices, copilot-coding-agent-best-practices, copilot-custom-instructions, awesome-copilot-meta-instructions, spec-writing-for-agents) + +### Changed +- **BREAKING — Rules consolidation**: 47 rules → 17. Most rules moved to [reporails/recommended](https://github.com/reporails/recommended) or consolidated into broader rules +- **BREAKING — Coordinate renumbering**: All coordinates reassigned from fresh sequence +- [CORE:S]: 12 → 3 rules — root-instruction-file-presence (S:0001), monorepo-nested-instruction-files (S:0002), structured-markdown-format (S:0003) +- [CORE:C]: 18 → 5 rules — include-project-context (C:0001), verification-build-commands (C:0002), project-architecture-documentation (C:0003), avoid-generic-placeholder-content (C:0004), boundary-constraints (C:0005) +- [CLAUDE]: 10 → 3 rules — rules-directory-for-modular-instructions (S:0001), path-scoped-rules (S:0002), import-syntax-for-modular-content (C:0001) +- [CODEX]: 7 → 1 rule — combined-instruction-size-limit (S:0001) +- [REGISTRY]: Coordinate map rewritten for new rule set; tombstones cleared (fresh coordinate space — backfill planned for 0.5.0) +- [DOCS]: CONTRIBUTING.md updated for multi-agent workflows (Claude Code, Codex, Copilot CLI) +- [DOCS]: rule-template.md — improved pass/fail example formatting with fenced code blocks +- [BACKBONE]: Added copilot agent entry (config, no skills directory) + +### Removed +- [CORE:S]: 9 rules consolidated or moved to recommended (S:0002–S:0009, S:0011, S:0012) +- [CORE:C]: 13 rules consolidated or moved to recommended (C:0004–C:0007, C:0009–C:0012, C:0015–C:0017, C:0019, C:0022–C:0025) +- [CLAUDE]: 7 rules consolidated or moved to recommended (S:0001, S:0002, S:0004, S:0005, S:0008–S:0012) +- [CODEX]: 6 rules consolidated or moved to recommended (S:0001–S:0007) + +### Metrics +- Rules: 17 (11 core + 3 Claude + 1 Codex + 2 Copilot) +- Schemas: 8 (rule, capability, levels, agent, package, project, sources, user) +- Sources: 15 weighted sources +- Agents: 3 (Claude, Codex, Copilot) + ## [0.3.0] - 2026-02-10 ### Added diff --git a/CLAUDE.md b/CLAUDE.md index 7ccfe8c..3d74d2f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -59,8 +59,8 @@ docker compose -f runtime/docker-compose.yml run test --verbose Key paths: - @registry/ — Capabilities, levels, coordinate map, tombstones -- @core/ — Core rules (12 structure, 18 content) -- @agents/ — Agent-specific config and rules (10 Claude, 7 Codex) +- @core/ — Core rules (3 structure, 5 content, 1 governance, 2 maintenance) +- @agents/ — Agent-specific config and rules (3 Claude, 1 Codex, 2 Copilot) - @schemas/ — Machine-readable contracts (8 schemas) - @docs/ — Contributor guides and source registry diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 17f26e1..afb6e0f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -14,7 +14,7 @@ Currently supported: **Claude Code**, **Codex**, **GitHub Copilot CLI** Each rule lives in its own directory with three parts: ``` -core/structure/instruction-file-size-limit/ +core/structure/root-instruction-file-presence/ rule.md # Definition: frontmatter (id, type, level, checks) + prose rule.yml # OpenGrep patterns (or empty `rules: []` for mechanical) tests/ @@ -24,12 +24,12 @@ core/structure/instruction-file-size-limit/ ## Coordinates -Every rule has a coordinate like `CORE:S:0005` — three parts: +Every rule has a coordinate like `CORE:S:0001` — three parts: | Part | Meaning | Values | |------|---------|--------| -| Namespace | Who owns it | `CORE`, `CLAUDE`, `CODEX` | -| Category | What it checks | `S` (structure), `C` (content) | +| Namespace | Who owns it | `CORE`, `CLAUDE`, `CODEX`, `COPILOT` | +| Category | What it checks | `S` (structure), `C` (content), `G` (governance), `M` (maintenance) | | Slot | Sequence number | `0001`–`9999` | Check `registry/coordinate-map.yml` to see which slots are taken before picking a new one. @@ -38,9 +38,9 @@ Check `registry/coordinate-map.yml` to see which slots are taken before picking | Type | How it detects | Example | |------|---------------|---------| -| **mechanical** | Python structural checks (file exists, line count, byte size) | CORE:S:0001 — instruction file exists | -| **deterministic** | OpenGrep pattern matching on file content | CORE:C:0006 — specificity over vagueness | -| **semantic** | OpenGrep pre-filter + LLM evaluation | CORE:C:0017 — repo-specific content | +| **mechanical** | Python structural checks (file exists, line count, byte size) | CORE:S:0001 — root instruction file presence | +| **deterministic** | OpenGrep pattern matching on file content | CORE:C:0004 — avoid generic placeholder content | +| **semantic** | OpenGrep pre-filter + LLM evaluation | CORE:C:0001 — include project context | Mechanical rules have `rules: []` in their rule.yml. Deterministic and semantic rules have OpenGrep patterns. @@ -103,13 +103,15 @@ All tests must pass before submitting. ``` core/ - structure/ # 12 rules — file existence, size, format - content/ # 18 rules — what instruction files should contain + structure/ # 3 rules — file presence, nesting, format + content/ # 5 rules — context, commands, architecture, constraints + governance/ # 1 rule — cross-agent compatibility + maintenance/ # 2 rules — reference integrity, glob validation agents/ - claude/rules/ # 10 rules — CLAUDE.md-specific patterns - codex/rules/ # 7 rules — AGENTS.md-specific patterns - copilot/rules/ # 25 rules — copilot-instructions.md patterns + claude/rules/ # 3 rules — CLAUDE.md-specific patterns + codex/rules/ # 1 rule — AGENTS.md-specific patterns + copilot/rules/ # 2 rules — copilot-instructions.md patterns ``` Opinionated rules (governance, style) live in [reporails/recommended](https://github.com/reporails/recommended) with the `RRAILS_` namespace. diff --git a/README.md b/README.md index 0fa7e16..2fc0362 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Validation rules for AI agent instruction files (CLAUDE.md, .cursorrules, copilot-instructions.md). Community-maintained. -**Version:** 0.3.1 +**Version:** 0.4.0 ### Pre-1.0 — moving fast, API still evolving, feedback welcome. @@ -26,20 +26,24 @@ npx @reporails/cli check ## What's here ``` core/ - structure/ # 12 rules: File organization, size limits, modularity - content/ # 18 rules: Clarity, completeness, specificity + structure/ # 3 rules: File presence, nesting, format + content/ # 5 rules: Context, commands, architecture, constraints + governance/ # 1 rule: Cross-agent compatibility + maintenance/ # 2 rules: Reference integrity, glob validation agents/ - claude/ # 10 rules: Claude Code specific - codex/ # 7 rules: OpenAI Codex specific - copilot/ # 25 rules: GitHub Copilot CLI specific + claude/ # 3 rules: Claude Code specific + codex/ # 1 rule: OpenAI Codex specific + copilot/ # 2 rules: GitHub Copilot CLI specific schemas/ # Rule, agent, and config schemas registry/ # Capabilities, levels, coordinate map docs/ # Capability levels, sources ``` -47 core rules. For additional recommended rules, see [reporails/recommended](https://github.com/reporails/recommended). +17 rules. For additional recommended rules, see [reporails/recommended](https://github.com/reporails/recommended). + +> **Tombstones**: Old coordinate slots from pre-0.4.0 rules will be backfilled in `registry/tombstones.yml` after 0.5.0. ## Contributing diff --git a/VERSION b/VERSION index a2268e2..1d0ba9e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.3.1 \ No newline at end of file +0.4.0 diff --git a/docs/capability-levels.md b/docs/capability-levels.md index bcd8e1e..6e5cfe7 100644 --- a/docs/capability-levels.md +++ b/docs/capability-levels.md @@ -116,13 +116,13 @@ Rules and capabilities are **separate systems** connected only by the level iden This means an L3 project is checked against all rules at L1, L2, and L3 — not just L3 rules. -**47 rules** across 3 types: +**17 rules** across 3 types: | Type | Count | Detection Method | LLM Cost | |------|-------|------------------|----------| -| Mechanical | 22 | Python structural checks | None | -| Deterministic | 18 | OpenGrep pattern match | None | -| Semantic | 7 | OpenGrep gate + LLM evaluation | Per check | +| Mechanical | 6 | Python structural checks | None | +| Deterministic | 10 | OpenGrep pattern match | None | +| Semantic | 1 | OpenGrep gate + LLM evaluation | Per check | ---