@varlabs/anchor

Anchor is a lightweight CLI tool to enforce and validate release checklists in development workflows. Inspired by changesets, Anchor ensures all non-code changesβ€”especially environment-specific configurationsβ€”are explicitly reviewed before release.

npm i @varlabs/anchor

πŸ“¦ Features

  • βœ… Checklist generation for pull requests/releases

  • 🧾 Markdown-based checklists with frontmatter metadata

  • πŸ“ All config and state stored in .anchor/

  • πŸ“Œ Enforces checklist presence and completion before release

  • 🧠 Human-readable checklist names

  • πŸ§ͺ Built-in validation of checklist structure

  • πŸ› οΈ Fully interactive CLI prompts

  • πŸ—οΈ Works seamlessly with Git Hooks and CI pipelines

βš™οΈ Setup

Run this command once in your project to initialize Anchor:

anchor setup

You will be prompted to enter a comma-separated list of environments (e.g., dev, staging, prod) and (optionally) a comma-separated list of project - for monorepos. This creates:

.anchor/
β”œβ”€β”€ config.json        # Contains 
└── checklists/        # Stores markdown

🧾 Checklist Format

Each checklist is a Markdown file with frontmatter like:

πŸ› οΈ Commands

anchor setup

Interactive setup to create .anchor/config.json.


anchor set [--environment <env>] [--projects <projects>]

Creates a new checklist. Prompts you to:

  • Name the checklist

  • Select environments (from config)

  • Select projects (from config)

  • Enter comma-separated checklist items

Optional Flags:

  • --environment <env>: Filter environments to preselect during prompt

  • --projects <projects>: Filter projects (comma seperated list) to preselect during prompt


anchor lift [--environment <env>] [--projects <projects>]

Marks checklist(s) as lifted (completed). Automatically:

  • Validates format

  • Checks if all [ ] boxes are checked

  • Deletes checklist if all complete

  • Errors if not

Optional Flags:

  • --environment <env>: Only lift checklists relevant to the environment

  • --projects <projects>: Filter projects (comma seperated list) to preselect during prompt


anchor status [--environment <env>]

Shows the current checklist status for all or specific environments.

Output example:

πŸ§ͺ Validation

Anchor uses strict validation rules for every checklist:

  • Valid frontmatter (environments: [...])

  • All checklist lines follow - [ ] ... or - [x] ...

πŸ€– CI / Git Hooks Integration

Use Anchor in your CI pipeline or Git hooks to enforce:

  • Checklist existence on PRs

  • No incomplete checklists before release

  • Fail builds if required environments have unlifted checklists

Example shell check:

OR

πŸ”§ Config File Example

.anchor/config.json

πŸ§‘β€πŸ’» License

MIT β€” Made with ❀️ by devs who hate broken production environments.

Last updated