{"_id":"a-alpine-chough","_rev":"2-c6d7c6d7c512511bd139dae8d2b556e7","name":"a-alpine-chough","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"a-alpine-chough","version":"0.1.0","keywords":["cursor","architecture","governance","rules","aac"],"author":"","license":"MIT","_id":"a-alpine-chough@0.1.0","maintainers":[{"name":"13x00","email":"andreas.mitchley@gmail.com"}],"bin":{"aac":"bin/cli.js","a-alpine-chough":"bin/cli.js"},"dist":{"shasum":"3e024c4d7edf5e55d321efd491429416d3bb1d5f","tarball":"https://registry.npmjs.org/a-alpine-chough/-/a-alpine-chough-0.1.0.tgz","fileCount":17,"integrity":"sha512-RS3pYYLm6EXgObWEi96i8vpX6B5ds1QNfwTaXAju5i+Lg/cTOPkMIc39Pj1Ap8OfKS3+gJGAmbXsbcxpAiMpNg==","signatures":[{"sig":"MEUCIFXGzJJB73n/E3lFYkSZssmg5bgJ5kydXnYHp7AQgj11AiEAkBiOPofEyOkp5B8TySyxNvL5zQ0kYjrx76bIOvdcMrE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59595},"main":"index.js","engines":{"node":">=14"},"gitHead":"094f42d8c2c156a4e0c3f807bc60044a28970af7","scripts":{"test":"node -e \"require('./index.js'); console.log('OK')\""},"_npmUser":{"name":"13x00","email":"andreas.mitchley@gmail.com"},"_npmVersion":"11.11.0","description":"Architecture governance for Cursor projects — rules, config, and CLI","directories":{},"_nodeVersion":"24.9.0","dependencies":{"js-yaml":"^4.1.0","commander":"^12.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/a-alpine-chough_0.1.0_1772668299798_0.2653206122755134","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"a-alpine-chough","version":"0.1.2","description":"Architecture governance for Cursor projects — rules, config, and CLI","main":"index.js","bin":{"aac":"bin/cli.js","a-alpine-chough":"bin/cli.js"},"scripts":{"test":"node -e \"require('./index.js'); console.log('OK')\""},"keywords":["cursor","architecture","governance","rules","aac"],"author":"","license":"MIT","dependencies":{"commander":"^12.0.0","js-yaml":"^4.1.0"},"engines":{"node":">=14"},"gitHead":"b6d31454ea9b856360c273462ca8fd9627e92a61","_id":"a-alpine-chough@0.1.2","_nodeVersion":"24.9.0","_npmVersion":"11.11.0","dist":{"integrity":"sha512-YqW/c6vj8CXftuyQeBCr0SH2YeG4K7bK0gJklPtyllVJzz/S7Kn0CXOZFm8yb5oNUkFmufKl+iTwmzHNV5tp9Q==","shasum":"807245b841b4d60a15c4c8ce60e2217ac3a6b418","tarball":"https://registry.npmjs.org/a-alpine-chough/-/a-alpine-chough-0.1.2.tgz","fileCount":17,"unpackedSize":59591,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDYgoe7w6oSt962bDd1gUOosk4V+HGDN449ogPjB4gwewIhAN7etIN+JfSUqSpGHrRYClwRAOx8Ar+y5AWm6il93D7Q"}]},"_npmUser":{"name":"13x00","email":"andreas.mitchley@gmail.com"},"directories":{},"maintainers":[{"name":"13x00","email":"andreas.mitchley@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/a-alpine-chough_0.1.2_1772668996102_0.8583170249579675"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-04T23:51:39.797Z","modified":"2026-03-05T00:03:16.397Z","0.1.0":"2026-03-04T23:51:39.981Z","0.1.2":"2026-03-05T00:03:16.273Z"},"license":"MIT","keywords":["cursor","architecture","governance","rules","aac"],"description":"Architecture governance for Cursor projects — rules, config, and CLI","maintainers":[{"name":"13x00","email":"andreas.mitchley@gmail.com"}],"readme":"# a-alpine-chough\n\n> Architecture governance for Cursor projects. Keep your codebase structured, clean, and free of drift — from day one.\n\n---\n\n## The Problem\n\nWhen building with AI-assisted tools like Cursor, it's easy to iterate fast. Too fast. You refactor your component structure, try a new routing pattern, migrate your data layer. The problem? The old systems don't disappear. They linger — unused files, ghost components, redundant layers — and before long you're not sure what's actually running your app and what's left over from three iterations ago.\n\nCursor is great at building. It's not great at remembering what you decided last week.\n\n**a-alpine-chough** fixes that by giving Cursor a persistent understanding of your architecture — and the tools to enforce it.\n\n---\n\n## What It Does\n\na-alpine-chough is an architecture governance package for Cursor projects. It installs a set of rule files into `.cursor/rules/` that teach Cursor your intended structure, naming conventions, import boundaries, and refactor protocols — so every AI-assisted change stays aligned with your architecture, not just the last thing you typed.\n\nIt also ships prompt commands you can run directly in Cursor chat to audit, clean, map, and migrate your codebase on demand.\n\n---\n\n## How It Works\n\n```bash\nnpm install -g a-alpine-chough\naac init\n```\n\nThis drops a set of `.mdc` rule files into `.cursor/rules/` and scaffolds an `aac.config.yml` in your project root. From that point on, Cursor loads your architecture rules automatically and understands commands like `/audit`, `/cleanup`, `/overview`, and `/migrate`.\n\nNo separate process. No background daemon. Just rules and a config file.\n\n---\n\n## Prompt Commands\n\nOnce initialized, these commands are available directly in Cursor chat:\n\n| Command | What it does |\n|---|---|\n| `/audit` | Scans the codebase for architectural violations — wrong imports, raw colors, layout bugs, dead code — grouped by severity with file, line, and fix |\n| `/cleanup` | Finds unused components, props, imports, and state variables |\n| `/overview` | Maps your actual folder structure against your defined layers and reports coverage |\n| `/migrate` | Generates a step-by-step migration plan when moving between systems, and saves it as a Cursor-readable plan file |\n\nCommands trigger both when typed explicitly and when Cursor detects relevant context — e.g. suggesting `/audit` before a large refactor, or `/cleanup` when unused props are spotted.\n\n---\n\n## Rule Files\n\naac installs 5 rule files into `.cursor/rules/`:\n\n| File | What it enforces |\n|---|---|\n| `architecture.mdc` | Layer model, folder structure, source-of-truth for styling decisions — always active |\n| `imports.mdc` | Import direction boundaries, `@/` vs `./` usage, forbidden cross-layer imports |\n| `styling.mdc` | No raw colors, token discipline, Figma → code mapping, inline style rules |\n| `layout.mdc` | Viewport height, overflow ownership, flex shrink chain, scroll region rules |\n| `migrations.mdc` | Refactor playbook, feature-flag protocol, verification checklist, dead code policy |\n\n---\n\n## Installation\n\n```bash\nnpm install -g a-alpine-chough\n```\n\nThis registers the `aac` command globally on your machine. Then in any project:\n\n```bash\naac init\n```\n\nThat's it. You'll use `aac` for everything from here on.\n\n> **No global install?** You can also run it once with `npx a-alpine-chough init` — but installing globally gives you the short `aac` alias permanently.\n\n`aac init` will:\n- Ask for your project name and stack\n- Copy rule files into `.cursor/rules/`\n- Scaffold `aac.config.yml` as your architecture source of truth\n\n---\n\n## CLI Commands\n\naac also ships a CLI for use outside Cursor — in your terminal or CI pipeline:\n\n| Command | Description |\n|---|---|\n| `aac init` | Initialize config and install rule files |\n| `aac audit` | Run a full architecture audit |\n| `aac cleanup` | Scan and flag redundant or unused code |\n| `aac overview` | Generate a structure report |\n| `aac migrate` | Start a guided migration between systems |\n\n```bash\n# short alias\naac audit\n\n# CI-friendly — exits with code 1 on errors\naac audit --json\n```\n\n---\n\n## `aac.config.yml`\n\nThe config file is the single source of truth for your intended architecture. The rule files and CLI both read from it.\n\n```yaml\nproject: \"my-app\"\nstack: \"Next.js App Router\"\n\nlayers:\n  - components/ui\n  - components/content\n  - components/layout\n  - hooks\n  - lib\n  - types\n\nrules:\n  no_cross_layer_imports: true\n  enforce_naming_conventions: true\n  no_raw_colors: true\n  no_magic_numbers: true\n  max_file_lines: 300\n```\n\n---\n\n## Why \"Alpine Chough\"?\n\nThe alpine chough is a bird that thrives at altitude — in environments that are harsh, fast-changing, and unforgiving. It's agile, efficient, and doesn't carry dead weight.\n\nThat's what your codebase should be.\n\n---\n\n## Status\n\n🚧 Early development. Feedback, ideas, and contributions very welcome.\n\n---\n\n## License\n\nMIT","readmeFilename":"README.md"}