Skip to content
CAI
Software that uses CAICheck a score

invertase/melos

51.0

Adequate · 19 September 2026

16k

lines of production code

Dart

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

Melos is a Dart monorepo management tool that orchestrates package discovery, dependency bootstrapping, and versioning within Dart Pub workspaces. It provides a CLI for executing workspace-wide commands such as testing, linting, and changelog generation, while supporting configurable lifecycle hooks and script execution. The system also includes utilities for parsing conventional commit messages and generating IDE project templates to streamline developer workflows.

How it got here

2020 — Dart workspace migration and API expansion

9 changes.

The project migrated its monorepo configuration from Melos-specific files to native Dart Pub workspaces, raising the minimum SDK version and streamlining build processes. This period also introduced a public Dart API for programmatic usage, added structured changelog generation with multi-platform support, and extracted a new library for parsing Conventional Commits.

2021–2024 — Pub workspace migration and CLI restructuring

8 changes.

This period focused on rewriting core Melos commands to support Dart Pub workspaces, replacing the legacy melos.yaml configuration with the root pubspec.yaml workspace field. The work included restructuring the CLI with dedicated command runners, adding configurable options and lifecycle hooks, and significantly expanding test coverage across commands and utilities.

Features

Configurable command options and lifecycle hooks

Melos now allows you to configure command-line options and run scripts before or after commands via the workspace configuration. You can set specific arguments for \melos analyze\, \exec\, \format\, \list\, \run\, \test\, and \bootstrap\ (including \pubGetArgs\), and define \pre\ and \post\ lifecycle hooks for \bootstrap\, \clean\, \publish\, and \version\ commands to automate pre- and post-processing tasks.

_packages/melos/lib/src/command\configs · high confidence

Introduce dedicated command runners for Melos CLI commands

The \packages/melos/lib/src/command\_runner\ directory now contains explicit command runner classes (e.g., \AnalyzeCommand\, \BootstrapCommand\, \ExecCommand\, \FormatCommand\, \InitCommand\, \ListCommand\, \PublishCommand\, \RunCommand\, \ScriptCommand\, \TestCommand\, \VersionCommand\) that define the CLI interface for each Melos command. These files establish the available flags, options, and argument parsing logic for commands such as \melos analyze\ (with \--fatal-infos\ and \--no-pub\), \melos exec\ (with \--group-logs\ and \--order-dependents\), \melos format\ (with \--line-length\), \melos list\ (with \--cycles\ and various output formats), and \melos version\ (with \--manual-version\ and \--dependent-preid\), among others. This structure centralizes the command-line argument definitions and invocation handling for the workspace tool.

_packages/melos/lib/src/command\runner · high confidence

Introduce structured changelog generation and repository support

This change introduces the core logic for generating structured changelogs for Melos workspaces. It adds \AggregateChangelog\ and \Changelog\ classes to produce Markdown output that categorizes package updates into breaking changes, other changes, dependency-only updates, lockstep bumps, and pre-release graduations. It also adds support for GitLab and Azure DevOps repository hosts alongside GitHub, enabling proper linking to commits and issues in the generated changelogs. Additionally, it implements retry logic with backoff for HTTP requests to improve resilience against transient network errors.

packages/melos/lib/src/common · high confidence

Melos 8.8.0 release with public Dart API

This release publishes Melos version 8.8.0 and introduces a public Dart API via the main \melos.dart\ library file. The new exports expose core configuration classes (such as \CommandConfigs\ and \GlobalOptions\), command runner exceptions, changelog utilities, package and workspace models, and script execution options, enabling programmatic usage of Melos features directly from Dart code.

packages/melos/lib · high confidence

New conventional\_commit package for parsing commit messages

A new \conventional\_commit\ library has been introduced to parse Conventional Commits 1.0.0 messages. It provides a \ConventionalCommit\ class that extracts the type, scopes, description, body, footers, and breaking change details from commit strings. The parser supports standard headers, merge commits, and breaking change indicators (both \!\ suffix and \BREAKING CHANGE:\ footers). An example file demonstrates usage, showing how to access parsed components like \type\, \scopes\, \body\, and \isBreakingChange\.

_packages/conventional\commit/lib · high confidence

Behavioural changes

Automated version generation replaces manual init script

The repository now includes a new \scripts/generate\_version.dart\ utility that automatically reads the Melos package version from \pubspec.yaml\ and writes it to \packages/melos/lib/version.g.dart\, ensuring the internal version constant stays in sync. This change accompanies the removal of the legacy \scripts/init.dart\ script, which previously handled plugin detection and dependency injection for the FlutterFire sidecar setup, streamlining the build process by removing that manual initialization step.

scripts · high confidence

Development wrapper displays local environment warning

A new \bin/melos\_dev.dart\ entry point has been added to support local development workflows. When invoked with the \-h\ or \--help\ flag, this wrapper prints a specific warning message indicating that the user is running a local development version of Melos, before delegating to the main application logic.

bin · high confidence

Melos 8.0: Configuration migration to pubspec.yaml and breaking script changes

Melos has migrated its configuration source from a dedicated \melos.yaml\ file to the root \pubspec.yaml\, requiring users to move their workspace settings into the new location. This release also introduces breaking changes to the \scripts\ configuration: the \run\ and \exec\ keys are now mutually exclusive within a single script definition, and the \exec\ block now requires an explicit \command\ key to specify the command to run. Additionally, the tool now supports \x-\ prefixed extension fields in YAML to allow reusable anchors without validation errors, and provides improved error messages for common configuration mistakes such as unquoted colons in script steps.

packages/melos/lib/src · high confidence

Melos CLI entry point now uses cli\_launcher

The main entry point for the Melos CLI (packages/melos/bin/melos.dart) has been updated to use the cli\_launcher package. This change replaces the previous direct invocation of the command runner with a structured launch configuration, which may affect how the executable is launched and managed by the Dart runtime.

packages/melos/bin · high confidence

Rewrite of core Melos commands to support Pub workspaces

The command implementations in \packages/melos/lib/src/commands\ have been rewritten to leverage the Dart Pub workspaces feature. This change replaces the legacy \melos.yaml\ configuration with the root \pubspec.yaml\'s \workspace\ field for package discovery and dependency management. The rewrite introduces new built-in commands (\melos analyze\, \melos format\, \melos test\, \melos init\) and significantly enhances existing ones: \bootstrap\ now supports \pubspec\_overrides.yaml\ with rollback on failure, \exec\ adds topological ordering and grouped logging, and \run\ supports script grouping and JSON output. Lifecycle hooks are now scoped to specific command sections, and the \list\ command gains multiple output formats including JSON, Mermaid, and Graphviz.

packages/melos/lib/src/commands · high confidence

Updated IntelliJ project templates for better IDE integration

The IntelliJ project templates have been refactored to provide more granular and accurate module definitions for Flutter and Dart projects. This includes new templates for Android Java modules, pure Dart packages, and workspace roots, ensuring correct SDK and library references. Additionally, run configuration templates now support additional arguments for Flutter runs, shell script execution in the terminal, and specific Dart/Flutter test configurations, improving the developer experience when running and debugging code within IntelliJ.

packages/melos/templates · high confidence

Fixes

Fix dependency serialization to match pubspec.yaml format

The dependency serialization logic in \melos\ has been corrected to properly format Git, Hosted, Path, and SDK dependencies when writing to \pubspec.yaml\. Specifically, simple hosted dependencies (those without a custom URL) are now inlined as a version string rather than a map, and Git dependencies with no \ref\ or \path\ have their URL inlined. This change also renames the internal \toJson\ extension to \toYaml\ to avoid conflicts with \pubspec\_parse\ 1.6.0, ensuring that the generated pubspec files are valid and concise.

packages/melos/lib/src/common/extensions · high confidence

Test coverage

Added test coverage for Melos commands; Added tests for Melos common utilities; Added tests for conventional commit parsing logic; Expanded test coverage for Melos core features.

Dependencies

Migrate to Dart Pub workspaces and update minimum SDK to 3.9.0

The monorepo has migrated from a legacy \melos.yaml\ configuration to the native Dart Pub workspaces feature, moving dependency and environment constraints into the root \pubspec.yaml\ and individual package manifests. This change raises the minimum supported Dart SDK version to 3.9.0 across all packages, including the newly extracted \conventional\_commit\ package and the main \melos\ CLI tool. The root workspace now explicitly lists \packages/conventional\_commit\ and \packages/melos\, replacing the previous \flutterfire\_monorepo\ structure and \settings.gradle\ file, while \melos\ itself is configured to bootstrap dependencies and manage versioning using the new workspace-native conventions.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 51.

Lenses

  • Code Health 86
  • Architecture 97
  • Maturity 53
  • Readiness 36
  • Security 56
  • Domain Modelling 100

Changes since last survey

  • 300 commits — 218 feature/other, 82 fixes

By area

  • packages/melos — 225 commits
  • docs/index.mdx — 21 commits
  • (root) — 19 commits
  • .github/workflows — 10 commits
  • docs/commands — 8 commits
  • docs/getting-started.mdx — 6 commits
  • docs/guides — 3 commits
  • .github/ISSUE_TEMPLATE — 2 commits
  • docs/assets — 2 commits
  • docs/configuration — 2 commits
  • (repo) — 1 commit
  • bin/melos_dev.dart — 1 commit

Notable commits

  • fix: chore: Fix linting (#849)
  • fix: ci: Fix workflow
  • fix: fix!: Make melos analyze always use dart analyze (#695)
  • fix: fix!: retain and increment build numbers when versioning (#1018)
  • fix: fix(analyze): restore melos analyze command (#1037)
  • fix: fix(bootstrap): apply dependencyOverridePaths to workspace pubspec_overrides.yaml (#1008)
  • fix: fix(deps): Support cli_util 0.6 and pub_updater 0.6 (#1075)
  • fix: fix(deps): allow xml 7 via widened constraint (#1016)
  • fix: fix(deps): require cli_launcher ^0.3.3+2 for Flutter workspace relaunch fix (#1047)
  • fix: fix(intellij): honor PUB_CACHE when generating IDE files (#1059)
  • fix: fix(publish): only report success when dart pub exits 0 (#1061)
  • fix: fix(scripts): expand env variables regardless of the platform shell (#1050)
  • fix: fix(scripts): expand env variables inherited from a parent melos process on Windows (#1054)
  • fix: fix(scripts): run nested melos commands without a global installation (#1031)
  • fix: fix(version): handle quoted range constraints in dependent rewrites (#1041)
  • fix: fix(version): honour --yes for manual versioning prompts (#1058)
  • fix: fix(windows): strip leading blank lines from first CMD output chunk (#1012)
  • fix: fix: Align path dependency constraints to ^1.9.0 (#997)
  • fix: fix: Allow underscore as packagename (#936)
  • fix: fix: Avoid duplicated "Change Log" file header on Windows due to CRLF (closes #710) (#915)
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

invertase/melos was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 8f939ee2b0f67a5131c2bdc90503393fc65c57ec — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.