You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Change ONLY what was requested. No opportunistic refactors, no unrelated cleanup.
286
+
- NEVER modify anything under `.github/` (workflows, actions, CI config) — the workflow refuses to commit such changes. If the request requires a CI change, treat it as insufficient and say so in "question".
275
287
- Follow AGENTS.md strictly: use `fvm`; respect the layer/facade/failure/naming rules; NEVER log or expose secrets (mnemonic/seed/xpriv/PIN); no hardcoded user-facing strings (use `context.loc.*`); no raw colors.
276
288
- After editing, format your new/changed Dart files so the CI format gate can't fail on untracked files:
277
289
run `fvm dart format` on the files you touched, then `git add -A` for the changed source (do NOT add `.bullock/`).
@@ -319,7 +331,10 @@ jobs:
319
331
320
332
if [ "$sufficient" != "true" ]; then
321
333
body="🐂 Bullock needs more info before implementing:"
322
-
body="${body}"$'\n\n'"> ${question:-Please clarify what you'd like changed.}"
334
+
# NB: no apostrophes inside ${var:-word} — bash treats a single
335
+
# quote there as a quoting char even inside double quotes, which
336
+
# made this whole script unparseable (exit 2 at EOF).
337
+
body="${body}"$'\n\n'"> ${question:-Please clarify what you would like changed.}"
323
338
comment "$body"
324
339
echo "Insufficient info — asked for clarification, no PR opened."
Copy file name to clipboardExpand all lines: AGENTS.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -171,7 +171,7 @@ Workflow when you need a widget:
171
171
3.**If genuinely new and reused by ≥ 2 features**, put it in `lib/core/widgets/<category>/` from the start — that *is* growing the UI Kit.
172
172
4.**If used by exactly one feature**, it lives in `<feature>/ui/widgets/` — but write it composable enough to be promoted later (no hardcoded colors, no hardcoded text, take callbacks not bloc refs).
173
173
5.**Widgets never live under `adapters/`, `frameworks/`, `domain/`, or `application/`.** UI goes in `ui/` or `lib/core/widgets/`. Full stop.
174
-
6.**No hardcoded user-facing strings.** Always `context.loc.<key>` — the `BuildContext` extension (`build_context_x.dart`) that wraps `AppLocalizations.of(context)`; it is the dominant convention (≈2564 uses vs 3 raw `AppLocalizations.of`). Add the key to [`localization/`](localization/)and run `make translations`. A duplicated literal across screens means a missing l10n key.
174
+
6.**No hardcoded user-facing strings.** Always `context.loc.<key>` — the `BuildContext` extension (`build_context_x.dart`) that wraps `AppLocalizations.of(context)`; it is the dominant convention (≈2564 uses vs 3 raw `AppLocalizations.of`). Manage keys in [`localization/`](localization/)with [`tools/arb.dart`](tools/README.md) (`fvm dart run tools/arb.dart help`) — don't hand-edit the `.arb` files — then run `make translations`. A duplicated literal across screens means a missing l10n key.
175
175
7.**Theme tokens only** — colors, spacing, typography pulled from the theme. See rule #10 above.
176
176
177
177
When you spot a duplicate of an existing core widget in feature code, flag it in the PR description as a follow-up cleanup. Don't silently leave it. Don't fix unrelated duplicates in the same PR either — that breaks atomic commits.
0 commit comments