Skip to content
This repository was archived by the owner on Sep 4, 2025. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .biomeignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
node_modules/
dist/
.turbo/
coverage/
*.lock
bun.lock
.changeset/
docs_archive/
2 changes: 1 addition & 1 deletion .changeset/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": []
}
}
23 changes: 0 additions & 23 deletions .eslintrc.js

This file was deleted.

33 changes: 19 additions & 14 deletions .github/actions/setup-bun-and-deps/action.yml
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
name: 'Setup Bun and Dependencies'
description: 'Setup Bun runtime, install dependencies, and optionally run lint/test/build'
name: "Setup Bun and Dependencies"
description: "Setup Bun runtime, install dependencies, and optionally run lint/test/build"

inputs:
bun-version:
description: 'Version of Bun to install'
description: "Version of Bun to install"
required: true
default: '1.2.21'
default: "1.2.21"
run-lint:
description: 'Whether to run lint'
description: "Whether to run lint"
required: false
default: 'true'
default: "true"
run-test:
description: 'Whether to run test'
description: "Whether to run test"
required: false
default: 'true'
default: "true"
run-build:
description: 'Whether to run build'
description: "Whether to run build"
required: false
default: 'true'
default: "true"

runs:
using: 'composite'
using: "composite"
steps:
- name: Setup Bun
uses: oven-sh/setup-bun@735343b667d3e6f658f44d0eca948eb6282f2b76 # v2
Expand All @@ -31,9 +31,14 @@ runs:
run: bun install --frozen-lockfile
shell: bash

- name: Lint
- name: Check Format
if: inputs.run-lint == 'true'
run: bun run lint
run: bun run check:ci
shell: bash

- name: Lint Markdown
if: inputs.run-lint == 'true'
run: bun run lint:md
shell: bash

- name: Test
Expand All @@ -44,4 +49,4 @@ runs:
- name: Build
if: inputs.run-build == 'true'
run: bun run build
shell: bash
shell: bash
23 changes: 23 additions & 0 deletions .markdownlint-cli2.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
config:
default: true
MD013: false # Line length
MD033: false # Allow inline HTML
MD041: false # First line in a file should be a top-level heading
MD024:
siblings_only: true # Allow duplicate headings if not siblings
MD025: false # Multiple top-level headings
line-length: false

ignores:
- node_modules/**
- "**/node_modules/**"
- dist/**
- "**/dist/**"
- .turbo/**
- "**/.turbo/**"
- coverage/**
- "**/coverage/**"
- "**/*.lock"
- "**/bun.lock"
- .changeset/**
- docs_archive/**
2 changes: 1 addition & 1 deletion .markdownlint.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
"MD013": false,
"MD033": false,
"MD041": false
}
}
19 changes: 19 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Prettier should only handle YAML and Markdown files
# TypeScript/JavaScript files are handled by Biome/Ultracite

*.ts
*.tsx
*.js
*.jsx
*.json
*.jsonc

# Standard ignores
node_modules/
dist/
build/
coverage/
.turbo/
*.lock
bun.lock
.changeset/
16 changes: 13 additions & 3 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -1,9 +1,19 @@
{
"semi": true,
"singleQuote": true,
"trailingComma": "all",
"printWidth": 100,
"tabWidth": 2,
"useTabs": false,
"endOfLine": "lf"
"trailingComma": "es5",
"bracketSpacing": true,
"arrowParens": "always",
"printWidth": 100,
"endOfLine": "lf",
"overrides": [
{
"files": ["*.yml", "*.yaml"],
"options": {
"singleQuote": false
}
}
]
}
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -160,4 +160,4 @@ AI agents must consult these documents regularly:
- `@docs/agentic/`: Agentic development coordination and agent-specific guides
- `@docs/agentic/jules/`: Google Jules integration guides and prompts

This structured approach ensures AI agents can efficiently navigate, understand, and contribute to the Mixdown codebase while maintaining consistency and quality.
This structured approach ensures AI agents can efficiently navigate, understand, and contribute to the Mixdown codebase while maintaining consistency and quality.
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
## [0.1.0] - 2025-09-01

### Added

- Added `.mix.md` file extension for source rules files to improve discoverability, search capabilities, and IDE support

### Changed

- Replaced ESLint with Biome/Ultracite for linting/formatting
- Added Lefthook-managed git hooks
- Configured markdownlint-cli2 for Markdown formatting
- Updated package.json scripts and CI workflow to new lint commands
- Converted parse/lint APIs from async to sync
- Introduced Frontmatter type and updated frontmatter.rulesets structure
- Updated tests to use runRulesetsV0 and new destinations model
- Updated terminology throughout the documentation:
- "Mix files" → "Source rules"
- "Target" → "Destination"
Expand Down
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 📏 Rulesets: A Compiler for AI Rules Files

> **🚀 v0 Release Now Available!** The initial implementation of Rulesets is ready for testing. See [Installation](#installation) to get started.
> **🚀 v0 Release Now Available!** The initial implementation of Rulesets is ready for testing. See [CLI Installation](#cli-installation) to get started.

Rulesets simplifies rules management for tools like Cursor, Claude Code, Codex, etc. With Rulesets, you author rules (called "source rules") in previewable Markdown and compile them into compiled rules for each destination (`.cursor/rules.mdc`, `./CLAUDE.md`, `.roo/rules.md`, and more). Think of it as **Terraform for AI rules**: write once, compile for many destinations, your agents, no matter the tool, on the (literal) same page.

Expand Down Expand Up @@ -151,7 +151,8 @@ async function main() {
main();
```

### 3. Find your compiled rules at:
### 3. Find your compiled rules at

- `.cursor/rules/standards.mdc` (for Cursor)
- `.windsurf/rules/standards.md` (for Windsurf)

Expand Down Expand Up @@ -231,4 +232,4 @@ Please see our general contributing guidelines for more details.
## References

- `docs/project/OVERVIEW.md` – Full Mixdown notation specification.
- `docs/architecture/DECISIONS.md` – Design rationale & deep-dive.
- `docs/architecture/DECISIONS.md` – Design rationale & deep-dive.
50 changes: 50 additions & 0 deletions biome.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{
"$schema": "https://biomejs.dev/schemas/2.2.2/schema.json",
"extends": ["ultracite"],
"javascript": {
"globals": ["Bun"]
},
"json": {
"parser": {
"allowComments": true,
"allowTrailingCommas": true
}
},
"files": {
"ignoreUnknown": true,
"includes": ["**/*.{js,ts,jsx,tsx,json,jsonc}"]
},
"vcs": {
"enabled": true,
"clientKind": "git",
"useIgnoreFile": true
},
"linter": {
"rules": {
"style": {
"noParameterAssign": "off",
"noNonNullAssertion": "off"
},
"complexity": {
"noBannedTypes": "off",
"noExcessiveCognitiveComplexity": "off"
},
"suspicious": {
"noExplicitAny": "off",
"noArrayIndexKey": "off",
"noEmptyBlockStatements": "off"
},
"performance": {
"noBarrelFile": "off"
},
"nursery": {
"noUnnecessaryConditions": "off"
}
}
},
"formatter": {
"indentStyle": "space",
"indentWidth": 2,
"lineWidth": 100
}
}
Loading
Loading