All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Symlinked skill directories — Skills in symlinked subdirectories under
.cursor/skills/are now discovered and loaded correctly - Large file size limits — Files exceeding 1MB are truncated with a notice; files over 10MB emit a memory pressure warning
- Watcher error handling —
chokidarerror events are now caught and logged to stderr, preventing silent crashes on permission errors or inaccessible paths - Error handling tests — Comprehensive tests for malformed YAML, missing fields, large files, permission errors, and graceful degradation
- Type coercion edge case tests — Tests for
parseGlobsandalwaysApplywith unexpected YAML value types - Watcher error event test — Confirms the watcher emits a warning on error rather than crashing
- Server integration tests — End-to-end tests for
createServerand reader integration
- YAML glob syntax in test fixtures — Glob patterns in test fixture frontmatter are now quoted to avoid YAML parsing errors (e.g.
**/*.mdwas being interpreted as a YAML anchor) alwaysApplytype coercion — Changed to strict boolean equality; non-boolean YAML values (e.g. strings) no longer accidentally enable always-apply mode- Windows path separator bug — Glob matching now normalizes backslashes to forward slashes before calling micromatch, fixing rule matching on Windows
matchBaseglob option removed — RemovingmatchBase: truefrom micromatch calls fixes incorrect pattern matching for glob patterns like**/*.md
- Parallel file parsing —
loadAllRules,loadAllAgents, andloadAllSkillsnow parse all files concurrently usingPromise.allSettled()instead of sequentialfor...of/awaitloops; significantly faster startup and reload with 20+ files per category - Path normalization hoisted — In
getApplicableRules, input paths are normalized once before the rule loop instead of once per rule, reducing work from O(R×F) to O(F)
- MCP Server — Bridge between Cursor and Claude Code via the Model Context Protocol
- Rule Discovery — Load rules from
.cursor/rules/*.mdcwith YAML frontmatter- Support for
alwaysApply, glob pattern matching, and rule modes (always/auto-attached/agent-requested) cursor_get_always_rules— retrieve rules that apply everywherecursor_get_applicable_rules(file_paths)— retrieve rules matching specific files
- Support for
- Skill Discovery — Load skills from
.cursor/skills/<name>/SKILL.mdcursor_list_skills— list all available skillscursor_get_skill(name)— fetch full skill content
- Agent Discovery — Load agents from
.cursor/agents/*.mdwith model bindingcursor_list_agents— list all available agentscursor_get_agent(name)— fetch full agent definition
- File Watching — Automatic hot-reload on file changes with 200ms debounce
- MCP Resources — Raw file access via
cursor://URIs (rules, skills, agents) - CLI — Command-line interface with
--project-rootargument support - TypeScript Strict Mode — Full type safety across the codebase
- Comprehensive Tests — 43+ tests with fixtures for all file types
- Documentation
AGENTS.md— Technical guide for AI agents and architectureHUMANS.md— User-friendly quick start and guideCONTRIBUTING.md— Development workflow and contribution guidelines
- GitHub Integration
- CI/CD workflow (GitHub Actions)
- Issue templates (bug reports, feature requests)
- Pull request template with checklist
- Packaging — MIT licensed, Node 22+, ESM-first
- Pure reader layer with no MCP dependencies (testable in isolation)
- Error resilience — parse failures log to stderr, never crash the server
- Glob matching with micromatch for rule file filtering
- YAML frontmatter parsing with gray-matter
- Debounced file watching with chokidar
- Proper stdout/stderr discipline for MCP protocol
- Node 22+ required (earlier versions may work but untested)
For documentation, see:
- Getting started: HUMANS.md
- Architecture & agents: AGENTS.md
- Contributing: CONTRIBUTING.md