Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
日本語の概要は準備中です。原文の説明を表示しています。
Use when adding or reusing Flutter UI - organize widgets as atoms, molecules, and organisms in a shared library and never hand-roll a component that already exists
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
The same atomic-design discipline the web app follows applies to Flutter: build a shared component library organized by level and compose screens from it. This keeps the app visually consistent and makes screens small.
Core principle: Reuse before you build. Before writing any button/card/chip/input/list-row, search the component library — hand-rolling a duplicate is a review-blocking defect.
| Level | What | Flutter example |
|---|---|---|
| Atom | Smallest reusable UI, no app logic | AppButton, AppTextField, StatusChip, Avatar |
| Molecule | A few atoms forming a unit | TaskCard (title + chip + avatar), SearchBar |
| Organism | Section built from molecules/atoms | TaskList, BoardColumn, AppBarWithActions |
| Screen | Route wiring organisms to state | TaskBoardScreen |
Library lives under lib/ui/core/{atoms,molecules,organisms} — the official Flutter architecture layout — alongside lib/ui/features/<feature>/ for screen-specific composition; follow the app's existing layout if it differs (e.g. a flat lib/ui/atoms).
lib/ui/core/INVENTORY.md: header One line per component: level · name · purpose · variants, one bullet per component, added in the same commit that creates or meaningfully changes it. Check it before building anything — it's faster than grepping the tree and it's the thing the next task's agent will actually read. If the repo has no component library or theme yet, load mobile-design-system-foundation first.
AppButton({required this.label, required this.onPressed}). State/data flows from the screen down.Row/Column with spacing:, or explicit SizedBox/padding at the call site), so the same atom composes correctly in every context without fighting a built-in margin.Task: "add a priority badge to task cards." Wrong: add a Container with a colored label inline in TaskCard. Right:
INVENTORY.md / grep atoms → no PriorityBadge, but there is a StatusChip atom. Priority is distinct enough → add a PriorityBadge atom next to it, themed the same way.TaskCard molecule.PriorityBadge line to INVENTORY.md in the same commit.Now every screen showing a task card gets the badge for free, consistently.
Container/Text styling that reinvents an existing atom.INVENTORY.md line.Containers across screens.lib/ui/core/ (or the repo's component folder) with no INVENTORY.md.まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
日本語の概要は準備中です。原文の説明を表示しています。
Use when the diff adds or changes an endpoint, resolver, RPC, job or query that takes an object id, a role check, a request binding or a tenant filter - BOLA/IDOR, function-level authorization, mass assignment and tenant scoping
日本語の概要は準備中です。原文の説明を表示しています。
Use on every UI change - semantic HTML, labels for controls, keyboard-navigable dialogs/menus, visible focus, and never color as the only signal
日本語の概要は準備中です。原文の説明を表示しています。
Use when a task changes any screen, form, dialog, menu or control - Lighthouse/axe scan of the changed screens, a keyboard walk, and the thresholds that fail a task
日本語の概要は準備中です。原文の説明を表示しています。
How to work a task returned with review, QA or UAT findings. Use when a task is in need_revision or PR review comments are in your context.
日本語の概要は準備中です。原文の説明を表示しています。
Use when deciding whether a request needs an analiz task before implementation - the conditions that require the architect's analysis versus going straight to implementation
日本語の概要は準備中です。原文の説明を表示しています。