Flutter Widget Architect — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Flutter Widget Architect (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Structure Flutter widget trees and state so rebuilds start and stop where you intend and build() is a pure, cheap function of state.
StatelessWidget/StatefulWidget subclasses. Never extract subtrees into _buildX() helper methods — a helper always re-runs with its enclosing build(), while a separate const widget is skipped when its inputs are unchanged. Mark const everywhere the analyzer allows.AnimationController, TextEditingController, StreamSubscription, etc. in initState or a provider, and dispose every one in dispose.autoDispose for screen-scoped data; use Bloc for explicit event-to-state transitions over an auditable stream. Do not mix both in one feature. For purely local ephemeral UI state (a toggle, a single text field), use StatefulWidget + setState — do not reach for a global store.ref.watch(provider.select(...)) or a Bloc buildWhen, never the whole model. Use ref.read for one-shot actions inside callbacks, never to react to changes.Consumer/BlocBuilder/ValueListenableBuilder and leave the static shell (AppBar, background) outside it. Pass child through builders to reuse subtrees the rebuild does not touch.ListView.builder/SliverList so off-screen items are not built. Give items a ValueKey on the model id so element and state survive reorder.Expanded/Flexible inside Column/Row to prevent unbounded-height constraints, overflow, and layout thrash.debugPrintRebuildDirtyWidgets or DevTools rebuild tracking).AnimationController created is disposed; flutter analyze reports no dispose or prefer_const_constructors warnings.Column/ListView(children: [...]).StatefulWidget; shared/async/tested state lives in a provider or Bloc._buildX() helper methods that return Widget.ref.watch a whole model when you depend on one field; use .select/buildWhen.setState on a large State to update one value; isolate it with ValueListenableBuilder or a scoped provider.ListView/Column building every item or with unbounded height.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.