Skip to content
CAI
Software that uses CAICheck a score

flutter/agent-plugins

64.3

Adequate · 23 September 2026

1.8k

lines of production code

Dart

primary language

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a Dart-based tooling framework designed to automate the creation, synchronization, and management of AI agent skills. It provides a command-line interface and generator services that leverage the Gemini API to produce structured skill modules for code review, documentation, and Flutter development workflows. The system also includes utilities for maintaining skill consistency across repositories and ensuring plugin manifest versions remain synchronized with skill updates.

Features

Add skills command-line tool entry point

A new entry point for the 'skills' CLI tool has been added at tool/generator/bin/skills.dart. This executable registers four subcommands (generate, update, validate, and update-readme), supports a --version flag to display version 0.1.0, and includes a --verbose flag for detailed logging. The tool initializes an HTTP client for network operations and handles argument parsing errors gracefully.

tool/generator/bin · high confidence

Added proactive Flutter hot reload rule

A new rule has been added to automatically trigger hot reload or hot restart when editing \.dart\ files under the \lib/\ directory. The rule instructs the system to discover running Flutter app instances via the Dart MCP server and execute the appropriate tool (\hot\_reload\ for UI/widget changes, \hot\_restart\ for fundamental logic or state changes), while skipping files outside \lib/\ and changes limited to comments or whitespace.

rules · high confidence

Automated Dart skills synchronization tool with version bumping

A new Dart script (tool/sync\_skills.dart) and a git hash tracking file (.dart\_skills\_githash) have been added to automate the synchronization of skills from the main Dart repository. The tool compares the current source repository hash against a previously stored hash to detect changes; if differences are found, it updates the local skills directory by copying, modifying, or deleting files as needed. Additionally, when changes are detected, the tool automatically increments the patch version in the plugin configuration files for Claude Code, Cursor, and Codex, ensuring that plugin manifests stay in sync with the latest skill updates.

tool · high confidence

Introduce generator tool services for AI-driven skill creation

Added a new set of services in the generator tool to automate the creation and validation of 'Skill' modules. The GeminiService integrates with the Google Gemini API (using the gemini-3.1-pro-preview model) to generate and update skill content based on raw markdown input, while the ResourceFetcherService handles fetching and converting external resources (HTTPS URLs or local files) into a unified format. The MarkdownConverter provides HTML-to-Markdown conversion logic, and the Prompts and SkillInstructions classes define the system prompts and authoring guidelines used to ensure generated skills follow specific formatting and structural rules.

tool/generator/lib/src/services · high confidence

New Dart and Flutter development skills added

Added a suite of new skills to the \skills\ directory to guide developers in Dart and Flutter workflows. These include \dart-add-unit-test\ for writing and organizing unit tests with \package:test\ and \mockito\, \dart-build-cli-app\ for architecting command-line interfaces with proper exit codes and subprocess handling, \dart-collect-coverage\ for generating LCOV reports, \dart-fix-runtime-errors\ for resolving static analysis and null-safety issues, \dart-generate-test-mocks\ for creating mock objects, \dart-migrate-to-checks-package\ for modernizing test assertions from \package:matcher\ to \package:checks\, and \dart-resolve-package-conflicts\ for managing dependency version conflicts. Additionally, Flutter-specific skills were added for setup localization, declarative routing, widget previews, HTTP package usage, responsive layouts, and widget testing.

skills · high confidence

New generator tool for creating and managing AI skills

The generator tool has been moved to \tool/generator\ and now provides a suite of commands for managing AI-driven skills. Users can generate new skills from YAML configuration using \generate-skill\, update existing skills with \update-skill\, and validate configurations with \validate-skill\. The tool also includes \update-readme\ to automatically maintain a skills table in documentation. These commands support filtering by specific skills, targeting different output directories, and simulating operations via a \--dry-run\ flag.

tool/generator/lib/src/commands · high confidence

New specialized agent skills for API review, code documentation, and code review

The Reidbaker agent now includes three new specialized skills: an API review skill that checks code against canonical API design guidelines (contract-first, KISS, explicit configuration, etc.); a code documentation skill providing language-specific guidelines for Dart, Python, and TypeScript docstrings and comments; and a comprehensive code review skill that implements a multi-step iterative workflow (gather, enrich, generate, critique, synthesize) with reference documents for criteria, critique rules, test review, and diff splitting. These skills enable the agent to provide structured, high-quality feedback on API design, documentation quality, and code changes.

.agents/agents/reidbaker-agent/skills · high confidence

Test coverage

Added comprehensive test coverage for the skills generator tool

Added a new suite of unit and integration tests in the \tool/generator/test\ directory to verify the behavior of the skills generation and validation commands. These tests cover edge cases for the \BaseSkillCommand\ (such as missing configuration files and API key validation), input validation for the \validate-skill\ command (including YAML structure, required fields, and naming conventions), retry logic for LLM calls in \generate-skill\, and the \MarkdownConverter\ service (handling HTML-to-Markdown conversion for tables, lists, and media). The test suite also includes coverage for the \GeminiService\ content cleaning logic, \ResourceFetcherService\ network and local file handling, and the \UpdateSkillCommand\ dry-run and content preservation features.

tool/generator/test · high confidence

Dependencies

Introduce Dart workspace with generator tool and dependencies

The project now uses a Dart workspace structure defined in pubspec.yaml, including a new tool/generator sub-package. This generator tool depends on several libraries for command-line argument parsing, file and path handling, HTTP requests, HTML parsing, and Google Cloud AI integration, along with development dependencies for linting, testing, and coverage.

(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

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 68 → 64 (-3.4)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 86 (-13.7)
  • Architecture 98 → 91 (-6.6)
  • Maturity 68 → 49 (-18.6)
  • Readiness 59 → 63 (+4.0)
  • Security 65 → 92 (+26.8)
  • Domain Modelling 100 → 100 (+0.0)

Resolved (13)

  • Change coupling: generate_skill_command.dart ↔ validate_skill_command.dart (tool/generator/lib/src/commands/generate_skill_command.dart)
  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Further orphaned files (smaller)
  • High: security finding (details withheld)
  • No SBOM
  • No artifact signing
  • No build provenance
  • No exposed public API
  • Off-boarding risk: anonymized user #1
  • Test reliability not included
  • The Skills CLI section omits the validate-skill command, which updates an existing skill by combining its current content with fetched resources and new instructions. (tool/dart_skills_lint/README.md)
  • complexity unreadable for .dart — churn × complexity hotspots could not be measured

New (17)

  • Duplicated block (13 lines × 2) (tool/generator/lib/src/commands/base_yaml_command.dart)
  • Duplicated block (19 lines × 2) (tool/generator/lib/src/commands/generate_skill_command.dart)
  • Duplicated block (21–23 lines × 2) (tool/generator/lib/src/commands/generate_skill_command.dart)
  • Duplicated block (8 lines × 2) (tool/generator/lib/src/commands/generate_skill_command.dart)
  • Duplicated block (9 lines × 2) (tool/generator/lib/src/commands/update_skill_command.dart)
  • Duplicated block (9 lines × 2) (tool/generator/lib/src/services/markdown_converter.dart)
  • Low cohesion: ValidateSkillCommand (LCOM4 4) (tool/generator/lib/src/commands/validate_skill_command.dart)
  • MarkdownConverter._processTable (cognitive 25) (tool/generator/lib/src/services/markdown_converter.dart)
  • MarkdownConverter._processTable (cyclomatic 19) (tool/generator/lib/src/services/markdown_converter.dart)
  • MarkdownConverter._processTag (cyclomatic 41) (tool/generator/lib/src/services/markdown_converter.dart)
  • No ADRs found
  • Off-boarding risk: anonymized user #1
  • ResourceFetcherService.fetchAndConvertContent (cognitive 19) (tool/generator/lib/src/services/resource_fetcher_service.dart)
  • UpdateReadmeCommand.runWithSkills (cognitive 20) (tool/generator/lib/src/commands/update_readme_command.dart)
  • ValidateSkillCommand._validateYamlStructure (cognitive 58) (tool/generator/lib/src/commands/validate_skill_command.dart)
  • ValidateSkillCommand._validateYamlStructure (cyclomatic 25) (tool/generator/lib/src/commands/validate_skill_command.dart)
  • ValidateSkillCommand.runSkill (cognitive 18) (tool/generator/lib/src/commands/validate_skill_command.dart)

Changes since last survey

  • 11 commits — 10 feature/other, 1 fixes

By area

  • (root) — 3 commits
  • .claude-plugin/plugin.json — 2 commits
  • tool/dart_skills_lint — 2 commits
  • .codex-plugin/plugin.json — 1 commit
  • rules/flutter-hot-reload.md — 1 commit
  • skills/dart-build-cli-app — 1 commit
  • tool/generator — 1 commit

Notable commits

  • fix: Formatting Fix for the Codex Plugin Title (#217)
  • change: Add environment variable for plugin names to the mcp configuration (#238)
  • change: Add proactive Flutter hot reload rule (#228)
  • change: Migrate dart_skills_lint and .agents to Dart skills package and dart install (#222)
  • change: Update README install instructions (#223)
  • change: Update sync_skills to morev version numbers for all three plugin configs (#234)
  • change: [tool] Update skills_lint to published version ^0.5.1 (#229)
  • change: chore: auto-sync skills directory from dart-lang/skills (#224)
  • change: chore: auto-sync skills directory from dart-lang/skills (#227)
  • change: chore: auto-sync skills directory from dart-lang/skills (#236)
  • change: feat: migrate from dart_skills_lint to skills_lint package (#226)

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

Survey your own repository

flutter/agent-plugins 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 23 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 e89522a8b0c23d282e0acc9538dd0b2cd164358b — 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-955b9cee9818.