A stack-agnostic, self-improving AI development framework as a Claude Code plugin.
A starter cadence.yaml for a Flutter app (also works for pure Dart).
commands:
format: ["dart format --set-exit-if-changed --output none lib/ test/"]
lint: ["flutter analyze --no-fatal-infos"]
test: ["flutter test"]
boundaries:
- where: "lib/features/**"
forbidden:
- "lib/data/sources/**"
- "lib/data/repositories/**"
reason: "Features must read via narrow providers in lib/app/providers.dart"
- where: "lib/data/sources/**"
forbidden:
- "lib/features/**"
- "lib/app/**"
reason: "Data sources are leaf-level"
- where: "lib/app/**"
forbidden:
- "lib/features/**"
reason: "app/ may not import features/ (cycle avoidance per ADR-0007)"
- where: "**/*"
forbidden:
- "lib/data/models/**"
reason: "Models live in lib/domain/models/ per ADR-0002"
flutter analyze / flutter test
with dart analyze / dart testanalysis_options.yaml complements
Cadence’s boundary checks — see the Flutter sandbox case study
for an example with unawaited_futures, discarded_futures,
avoid_print, etc.These were the actual ADRs that emerged from the Flutter sandbox:
lib/domain/models/ is canonicalAsyncError for whole-screen, state-field for
per-action, map for per-rowunawaited()lib/app/state/, not in
feature folders