Skip to content

Look check: ask about the look when a build starts from a brief (ECO-602) - #206

Merged
lucaslyl merged 17 commits into
mainfrom
eco-602-look-check-ask-about-the-look-when-a-build-starts-from-a
Oct 13, 2026
Merged

lucaslyl merged 17 commits into
mainfrom
eco-602-look-check-ask-about-the-look-when-a-build-starts-from-a

Conversation

@lucaslyl

@lucaslyl lucaslyl commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Closes ECO-602. Split out of #151 so this one piece can be tested and reviewed alone.

Problem

domain-interview makes no design decisions on purpose. On main only the "Just build it" route asks how it should feel, so a build that starts from a brief ("Plan it with me" or "I already have a brief") or from an attached design is never asked about the look.

Change

boxel-design gets a Look check that runs at build entry from a brief or an attached design:

  • asks the feel and real-details questions once, only when unanswered; an attached design answers the feel (Look: from the attached design) and never the real details
  • Facts that count: only what the user typed and the answers in the brief's Interview record are a source. Domain primer, Schema, Sample data and Assumptions never count, nor does an assistant-proposed "(Recommended)" option taken by a skip. A later Scope or Content-contract section that corrects a record value wins
  • real-details options follow from that: with user facts, Use what's in the brief (recommended) / leave the other sections out / concept or pitch; without, leave marked slots (recommended) / leave sections out / concept or pitch
  • a feel word settles the feel question only if it names one of the three options or a colour; a word like "quiet and refined" only leans, so the question is still asked with the closest option first (index.md "Just build it" says the same)
  • a governing BrandGuide or Theme answers the feel question only when the user named it or their work already links it (or it is the built-in Boxel Brand Guide for built-in work); a Theme the assistant derived or that merely exists in the realm answers nothing. It is recorded as Look: from the <BrandGuide or Theme> (<name>)
  • records Look: and Real details: in the brief's designDirection, in the user's words, never expanded into a palette or fonts; typed details are prefixed facts:. Each line is its own paragraph (blank line between, and before the first when text is already there)
  • write path: patch-fields in the Boxel AI assistant; in a terminal agent, a script that sets the field and JSON.stringifys the brief, then boxel file write --file, with a re-read before and after. run-realm-code is not used
  • the skip is worded for a build: Skip the rest, "I'll decide this and go on to build", in both boxel-design and index.md
  • design-playbook.md Stage 1 and critical-rules.md → Never invent proof read the Look: and Real details: lines, so a resumed build follows them
  • index.md, the domain-interview hand-off and the glossary point at it

Left out: the page-colour table (needs style-families.md, not on main yet).

Where to start

Read the Look check section in skills/boxel-design/SKILL.md; the other files only point at it or read its two lines.

Testing

Simulated builder runs (agents reading the skill text), three scenarios of three runs each on the current head, all 9 passing:

Scenario Result
Skipped-interview dental brief whose only prices are sample rows (terminal agent) 3 of 3: "Use what's in the brief" not offered, sample prices not stated as the business's own, lines written as separate paragraphs via boxel file write
"Keep it quiet and refined", and a brief with an unrelated realm Theme (assistant) 3 of 3: feel question asked with Light & calm first and recommended, the unrelated Theme does not answer it, written with patch-fields
Attached design plus a brief where the user corrected the opening hours (terminal agent) 3 of 3: feel not asked, from the attached design recorded, corrected hours used, existing note kept

These are simulations, so a signal rather than proof. Not tested: a real build in the Boxel app, and real-model runs of the final head. The eval cases are not part of this PR.

🤖 Generated with Claude Code

lucaslyl and others added 4 commits October 12, 2026 12:40
domain-interview makes no design decisions on purpose, so a build that
starts from a brief (Plan it with me, or I already have a brief) was never
asked how it should feel; only Just build it asked. boxel-design now runs
a Look check at build entry: the feel and real-details questions, asked
once and only when unanswered, recorded as Look: and Real details: lines
in the brief's designDirection in the user's words. domain-interview's
hand-off, the index route and the glossary say the same.

Split out of #151 so it can be tested on its own.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Facts in spec do not answer the real-details question; offer the
concept-or-pitch option like the Just build it call; give every skip a
recorded form; say how the field is written and that the build reads it;
point at the first-call paragraph instead of a step that does not exist.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…skip takes the recommended option

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ource

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

Staging Workspace Sync Successful

Successfully synced changes to staging workspace
Workspace: https://realms-staging.stack.cards/skills/
Commit: 46ccf2a
Synced at: 2026-10-13 03:58:34 UTC

Sync Details

Starting push from . to https://realms-staging.stack.cards/skills/
Testing realm access...
Realm access verified
Found 314 files in local directory
No sync manifest found, will upload all files
Uploading 314 file(s) via /_atomic...
  Uploaded: skills/boxel/scripts/instance-correctness-scan.py
  Uploaded: index.json
  Uploaded: index.md
  Uploaded: realm.json
  Uploaded: skills/boxel/SKILL.md
  Uploaded: skills/boxel/references/base-field-catalog.md
  Uploaded: skills/boxel/references/card-references.md
  Uploaded: skills/boxel/references/command-development.md
  Uploaded: skills/boxel/references/command-invocation-modes.md
  Uploaded: skills/boxel/references/common-imports.md
  Uploaded: skills/boxel/references/container-query-fitted-layout.md
  Uploaded: skills/boxel/references/core-concept.md
  Uploaded: skills/boxel/references/core-patterns.md
  Uploaded: skills/boxel/references/data-management.md
  Uploaded: skills/boxel/references/date-math.md
  Uploaded: skills/boxel/references/default-index-card.md
  Uploaded: skills/boxel/references/defensive-link-traversal.md
  Uploaded: skills/boxel/references/defensive-programming.md
  Uploaded: skills/boxel/references/delegated-rendering.md
  Uploaded: skills/boxel/references/design-playbook.md
  Uploaded: skills/boxel/references/enumerations.md
  Uploaded: skills/boxel/references/external-libraries.md
  Uploaded: skills/boxel/references/file-editing.md
  Uploaded: skills/boxel/references/fitted-formats.md
  Uploaded: skills/boxel/references/formatters.md
  Uploaded: skills/boxel/references/icons.md
  Uploaded: skills/boxel/references/imagedef.md
  Uploaded: skills/boxel/references/lint-workflow.md
  Uploaded: skills/boxel/references/prefers-wide-format.md
  Uploaded: skills/boxel/references/query-systems.md
  Uploaded: skills/boxel/references/quick-reference.md
  Uploaded: skills/boxel/references/qunit-testing.md
  Uploaded: skills/boxel/references/relationship-loading-state.md
  Uploaded: skills/boxel/references/searchable-fields.md
  Uploaded: skills/boxel/references/spec-usage.md
  Uploaded: skills/boxel/references/styling-design.md
  Uploaded: skills/boxel/references/template-syntax.md
  Uploaded: skills/boxel/references/theme-design-system.md
  Uploaded: skills/boxel-create-edit-cards/SKILL.md
  Uploaded: skills/boxel-design/SKILL.md
  Uploaded: skills/boxel-design/references/asset-selection-guidelines.md
  Uploaded: skills/boxel-design/references/critical-rules.md
  Uploaded: skills/boxel-design/references/layout-gravity.md
  Uploaded: skills/boxel-design/references/layout-vocabulary.md
  Uploaded: skills/boxel-environment/SKILL.md
  Uploaded: skills/boxel-environment/references/assistant-persona.md
  Uploaded: skills/boxel-environment/references/calling-commands.md
  Uploaded: skills/boxel-environment/references/card-tool-selection.md
  Uploaded: skills/boxel-environment/references/common-errors.md
  Uploaded: skills/boxel-environment/references/diagnosing-broken-links.md
  Uploaded: skills/boxel-environment/references/fresh-realm-push-integrity.md
  Uploaded: skills/boxel-environment/references/host-commands-reference.md
  Uploaded: skills/boxel-environment/references/indexing-operations.md
  Uploaded: skills/boxel-environment/references/markdown-edit.md
  Uploaded: skills/boxel-environment/references/searching-and-querying.md
  Uploaded: skills/boxel-environment/references/shared-mirror-safety.md
  Uploaded: skills/boxel-environment/references/source-code-editing.md
  Uploaded: skills/boxel-environment/references/user-environment-awareness.md
  Uploaded: skills/boxel-environment/references/workflows-and-orchestration.md
  Uploaded: skills/boxel-file-def/SKILL.md
  Uploaded: skills/boxel-file-def/references/available-fields.md
  Uploaded: skills/boxel-file-def/references/filedef-first-class-file-support.md
  Uploaded: skills/boxel-file-def/references/filedef-vs-base64imagefield.md
  Uploaded: skills/boxel-file-def/references/import-paths.md
  Uploaded: skills/boxel-file-def/references/markdowndef-vs-markdownfield.md
  Uploaded: skills/boxel-file-def/references/no-inline-binary.md
  Uploaded: skills/boxel-file-def/references/rendering-file-fields-in-templates.md
  Uploaded: skills/boxel-file-def/references/sample-images.md
  Uploaded: skills/boxel-file-def/references/type-hierarchy.md
  Uploaded: skills/boxel-file-def/references/using-filedef-in-cards.md
  Uploaded: skills/boxel-flavored-markdown/SKILL.md
  Uploaded: skills/boxel-flavored-markdown/references/authoring-notes.md
  Uploaded: skills/boxel-flavored-markdown/references/base-syntax.md
  Uploaded: skills/boxel-flavored-markdown/references/bfm-extensions-beyond-commonmarkgfm.md
  Uploaded: skills/boxel-flavored-markdown/references/card-directives-the-boxel-extension.md
  Uploaded: skills/boxel-flavored-markdown/references/quick-reference.md
  Uploaded: skills/boxel-flavored-markdown/references/where-bfm-is-used.md
  Uploaded: skills/boxel-markdown-format/SKILL.md
  Uploaded: skills/boxel-markdown-format/references/delegation-composes.md
  Uploaded: skills/boxel-markdown-format/references/essential-helper-markdownescape.md
  Uploaded: skills/boxel-markdown-format/references/pitfalls.md
  Uploaded: skills/boxel-markdown-format/references/rendering-markdown-html-at-runtime.md
  Uploaded: skills/boxel-markdown-format/references/shape-of-a-static-markdown-template.md
  Uploaded: skills/boxel-markdown-format/references/the-default-usually-good-enough.md
  Uploaded: skills/boxel-markdown-format/references/the-markdown-helpers-toolkit.md
  Uploaded: skills/boxel-markdown-format/references/when-youre-done.md
  Uploaded: skills/boxel-markdown-format/references/worked-example-note-card-with-custom-markdown.md
  Uploaded: skills/boxel-patterns/SKILL.md
  Uploaded: skills/boxel-patterns/patterns/app-card-home-with-search/README.md
  Uploaded: skills/boxel-patterns/patterns/attach-remote-image/README.md
  Uploaded: skills/boxel-patterns/patterns/automate-declared-captures/README.md
  Uploaded: skills/boxel-patterns/patterns/automate-declared-captures/example.gts
  Uploaded: skills/boxel-patterns/patterns/automate-image-steering/README.md
  Uploaded: skills/boxel-patterns/patterns/automate-image-steering/example.gts
  Uploaded: skills/boxel-patterns/patterns/automate-linked-to-me-lookup/README.md
  Uploaded: skills/boxel-patterns/patterns/automate-linked-to-me-lookup/example.gts
  Uploaded: skills/boxel-patterns/patterns/automate-run-command-cli/README.md
  Uploaded: skills/boxel-patterns/patterns/automate-run-command-cli/example.gts
  Uploaded: skills/boxel-patterns/patterns/build-planning-cards-trio/README.md
  Uploaded: skills/boxel-patterns/patterns/build-site-config-with-theme/README.md
  Uploaded: skills/boxel-patterns/patterns/build-site-config-with-theme/example.gts
  Uploaded: skills/boxel-patterns/patterns/cardinfo-override-title/README.md
  Uploaded: skills/boxel-patterns/patterns/cardinfo-override-title/example.gts
  Uploaded: skills/boxel-patterns/patterns/collab-yjs-shared-document/README.md
  Uploaded: skills/boxel-patterns/patterns/command-atomic-install/README.md
  Uploaded: skills/boxel-patterns/patterns/command-atomic-install/example.gts
  Uploaded: skills/boxel-patterns/patterns/command-data-resource/README.md
  Uploaded: skills/boxel-patterns/patterns/command-data-resource/example.gts
  Uploaded: skills/boxel-patterns/patterns/command-optimistic-pipeline/README.md
  Uploaded: skills/boxel-patterns/patterns/command-optimistic-pipeline/example.gts
  Uploaded: skills/boxel-patterns/patterns/command-typed-with-progress/README.md
  Uploaded: skills/boxel-patterns/patterns/command-typed-with-progress/example.gts
  Uploaded: skills/boxel-patterns/patterns/command-with-skill-card-ref/README.md
  Uploaded: skills/boxel-patterns/patterns/command-with-skill-card-ref/example.gts
  Uploaded: skills/boxel-patterns/patterns/containsmany-sorted-render/README.md
  Uploaded: skills/boxel-patterns/patterns/containsmany-sorted-render/example.gts
  Uploaded: skills/boxel-patterns/patterns/format-morph-shared-component/README.md
  Uploaded: skills/boxel-patterns/patterns/integrate-capture-card-format/README.md
  Uploaded: skills/boxel-patterns/patterns/integrate-capture-card-format/example.gts
  Uploaded: skills/boxel-patterns/patterns/integrate-chess-js-via-cdn/README.md
  Uploaded: skills/boxel-patterns/patterns/integrate-chess-js-via-cdn/example.gts
  Uploaded: skills/boxel-patterns/patterns/integrate-filedef-generated-image/README.md
  Uploaded: skills/boxel-patterns/patterns/integrate-filedef-generated-image/example.gts
  Uploaded: skills/boxel-patterns/patterns/integrate-leaflet-via-cdn/README.md
  Uploaded: skills/boxel-patterns/patterns/integrate-leaflet-via-cdn/example.gts
  Uploaded: skills/boxel-patterns/patterns/integrate-one-shot-llm/README.md
  Uploaded: skills/boxel-patterns/patterns/integrate-one-shot-llm/example.gts
  Uploaded: skills/boxel-patterns/patterns/integrate-openrouter-image-generation/README.md
  Uploaded: skills/boxel-patterns/patterns/integrate-openrouter-image-generation/example.gts
  Uploaded: skills/boxel-patterns/patterns/integrate-send-request-via-proxy/README.md
  Uploaded: skills/boxel-patterns/patterns/integrate-send-request-via-proxy/example.gts
  Uploaded: skills/boxel-patterns/patterns/integrate-three-js-3mf-fabrication/README.md
  Uploaded: skills/boxel-patterns/patterns/integrate-three-js-3mf-fabrication/example.gts
  Uploaded: skills/boxel-patterns/patterns/integrate-three-js-via-cdn/README.md
  Uploaded: skills/boxel-patterns/patterns/integrate-three-js-via-cdn/example.gts
  Uploaded: skills/boxel-patterns/patterns/integrate-thumbnail-card-ai/README.md
  Uploaded: skills/boxel-patterns/patterns/integrate-thumbnail-card-ai/example.gts
  Uploaded: skills/boxel-patterns/patterns/integrate-tone-js-via-cdn/README.md
  Uploaded: skills/boxel-patterns/patterns/integrate-tone-js-via-cdn/example.gts
  Uploaded: skills/boxel-patterns/patterns/integrate-web-audio-synthesis/README.md
  Uploaded: skills/boxel-patterns/patterns/integrate-web-audio-synthesis/example.gts
  Uploaded: skills/boxel-patterns/patterns/layout-3d-card-carousel/README.md
  Uploaded: skills/boxel-patterns/patterns/layout-3d-card-carousel/example.gts
  Uploaded: skills/boxel-patterns/patterns/layout-design-board/README.md
  Uploaded: skills/boxel-patterns/patterns/layout-design-board/example.gts
  Uploaded: skills/boxel-patterns/patterns/layout-kanban-drag-drop/README.md
  Uploaded: skills/boxel-patterns/patterns/layout-kanban-drag-drop/example.gts
  Uploaded: skills/boxel-patterns/patterns/layout-sectioned-record-with-nav/README.md
  Uploaded: skills/boxel-patterns/patterns/layout-sectioned-record-with-nav/example.gts
  Uploaded: skills/boxel-patterns/patterns/link-command-menu-item/README.md
  Uploaded: skills/boxel-patterns/patterns/link-command-menu-item/example.gts
  Uploaded: skills/boxel-patterns/patterns/link-discriminated-action-resolver/README.md
  Uploaded: skills/boxel-patterns/patterns/link-discriminated-action-resolver/example.gts
  Uploaded: skills/boxel-patterns/patterns/link-element-tag-helper/README.md
  Uploaded: skills/boxel-patterns/patterns/link-element-tag-helper/example.gts
  Uploaded: skills/boxel-patterns/patterns/link-flip-card/README.md
  Uploaded: skills/boxel-patterns/patterns/link-flip-card/example.gts
  Uploaded: skills/boxel-patterns/patterns/link-host-mode-paths/README.md
  Uploaded: skills/boxel-patterns/patterns/link-host-mode-paths/example.gts
  Uploaded: skills/boxel-patterns/patterns/link-onclick-outside/README.md
  Uploaded: skills/boxel-patterns/patterns/link-onclick-outside/example.gts
  Uploaded: skills/boxel-patterns/patterns/link-view-transition/README.md
  Uploaded: skills/boxel-patterns/patterns/link-view-transition/example.gts
  Uploaded: skills/boxel-patterns/patterns/organize-atomic-field-factory/README.md
  Uploaded: skills/boxel-patterns/patterns/organize-atomic-field-factory/example.gts
  Uploaded: skills/boxel-patterns/patterns/organize-base-class-taxonomy/README.md
  Uploaded: skills/boxel-patterns/patterns/organize-base-class-taxonomy/example.gts
  Uploaded: skills/boxel-patterns/patterns/organize-lru-cached-parser/README.md
  Uploaded: skills/boxel-patterns/patterns/organize-lru-cached-parser/example.gts
  Uploaded: skills/boxel-patterns/patterns/organize-recursive-fielddef/README.md
  Uploaded: skills/boxel-patterns/patterns/organize-recursive-fielddef/example.gts
  Uploaded: skills/boxel-patterns/patterns/organize-resource-class-data-loader/README.md
  Uploaded: skills/boxel-patterns/patterns/organize-resource-class-data-loader/example.gts
  Uploaded: skills/boxel-patterns/patterns/organize-sensitive-stub-pair/README.md
  Uploaded: skills/boxel-patterns/patterns/organize-sensitive-stub-pair/example.gts
  Uploaded: skills/boxel-patterns/patterns/organize-typed-activity-feed/README.md
  Uploaded: skills/boxel-patterns/patterns/organize-typed-activity-feed/example.gts
  Uploaded: skills/boxel-patterns/patterns/organize-variant-field-dispatcher/README.md
  Uploaded: skills/boxel-patterns/patterns/organize-variant-field-dispatcher/example.gts
  Uploaded: skills/boxel-patterns/patterns/pick-rating/README.md
  Uploaded: skills/boxel-patterns/patterns/pick-rating/example.gts
  Uploaded: skills/boxel-patterns/patterns/pick-typed-sort/README.md
  Uploaded: skills/boxel-patterns/patterns/pick-typed-sort/example.gts
  Uploaded: skills/boxel-patterns/patterns/polymorphic-field-subclass/README.md
  Uploaded: skills/boxel-patterns/patterns/resource-consume-from-context/README.md
  Uploaded: skills/boxel-patterns/patterns/resource-consume-from-context/example.gts
  Uploaded: skills/boxel-patterns/patterns/resource-for-state/README.md
  Uploaded: skills/boxel-patterns/patterns/show-card-list-with-views/README.md
  Uploaded: skills/boxel-patterns/patterns/show-card-list-with-views/example.gts
  Uploaded: skills/boxel-patterns/patterns/show-count-tiles-from-query/README.md
  Uploaded: skills/boxel-patterns/patterns/show-count-tiles-from-query/example.gts
  Uploaded: skills/boxel-patterns/patterns/show-filedef-audio-player/README.md
  Uploaded: skills/boxel-patterns/patterns/show-filedef-audio-player/example.gts
  Uploaded: skills/boxel-patterns/patterns/show-list-prefer-prerendered/README.md
  Uploaded: skills/boxel-patterns/patterns/show-list-prefer-prerendered/example.gts
  Uploaded: skills/boxel-patterns/patterns/show-pdf-annotations-filedef/README.md
  Uploaded: skills/boxel-patterns/patterns/show-pdf-annotations-filedef/example.gts
  Uploaded: skills/boxel-patterns/patterns/show-runtime-markdown-html/README.md
  Uploaded: skills/boxel-patterns/patterns/show-runtime-markdown-html/example.gts
  Uploaded: skills/boxel-patterns/patterns/show-table-from-query/README.md
  Uploaded: skills/boxel-patterns/patterns/show-table-from-query/example.gts
  Uploaded: skills/boxel-patterns/patterns/show-wiki-links/README.md
  Uploaded: skills/boxel-patterns/patterns/show-wiki-links/example.gts
  Uploaded: skills/boxel-patterns/patterns/theme-first-workflow/README.md
  Uploaded: skills/boxel-patterns/patterns/theme-first-workflow/example.gts
  Uploaded: skills/boxel-patterns/references/ai-image-models.md
  Uploaded: skills/boxel-patterns/references/integration-surfaces.md
  Uploaded: skills/boxel-patterns/references/libraries.md
  Uploaded: skills/boxel-patterns/references/pattern-authoring.md
  Uploaded: skills/boxel-patterns/references/pattern-backlog.md
  Uploaded: skills/boxel-patterns/scripts/audit-host-command-refs.mjs
  Uploaded: skills/boxel-skill-authoring/SKILL.md
  Uploaded: skills/boxel-theme-development/SKILL.md
  Uploaded: skills/boxel-theme-development/references/design-md-adapter.md
  Uploaded: skills/boxel-theme-development/references/shadcn-boxel-token-mapping.md
  Uploaded: skills/boxel-ui-component-discovery/SKILL.md
  Uploaded: skills/boxel-ui-guidelines/SKILL.md
  Uploaded: skills/boxel-ui-guidelines/references/checklist.md
  Uploaded: skills/boxel-ui-guidelines/references/delegated-render-control.md
  Uploaded: skills/boxel-ui-guidelines/references/field-rendering-fields-vs-model.md
  Uploaded: skills/boxel-ui-guidelines/references/font-loading-theme-card-owns-imports.md
  Uploaded: skills/boxel-ui-guidelines/references/prefer-component-apis-write-new-components-when-needed.md
  Uploaded: skills/boxel-ui-guidelines/references/prevent-content-overflow.md
  Uploaded: skills/boxel-ui-guidelines/references/print-and-published-output.md
  Uploaded: skills/boxel-ui-guidelines/references/style-budget.md
  Uploaded: skills/boxel-ui-guidelines/references/template-patterns.md
  Uploaded: skills/boxel-ui-guidelines/references/theme-token-contract.md
  Uploaded: skills/boxel-ui-guidelines/references/ui-review-procedure.md
  Uploaded: skills/boxel-ui-guidelines/references/use-boxel-design-tokens-for-theming.md
  Uploaded: skills/boxel-ui-guidelines/references/use-boxel-ui-components.md
  Uploaded: skills/boxel-ui-guidelines/references/use-container-queries-not-viewport-units.md
  Uploaded: skills/boxel-workspace-cardinal-rules/SKILL.md
  Uploaded: skills/bxl-authoring/SKILL.md
  Uploaded: skills/card-motion/SKILL.md
  Uploaded: skills/card-motion/references/choreo.md
  Uploaded: skills/card-motion/references/drag-and-reorder.md
  Uploaded: skills/card-motion/references/element.md
  Uploaded: skills/card-motion/references/layout.md
  Uploaded: skills/card-motion/references/presence.md
  Uploaded: skills/card-motion/references/scroll.md
  Uploaded: skills/card-motion/references/testing.md
  Uploaded: skills/card-motion/references/view-transitions.md
  Uploaded: skills/card-operations-authoring/SKILL.md
  Uploaded: skills/catalog-listing/SKILL.md
  Uploaded: skills/catalog-listing/references/submission-workflow.md
  Uploaded: skills/catalog-reuse/SKILL.md
  Uploaded: skills/domain-interview/SKILL.md
  Uploaded: skills/domain-interview/references/brief-template.md
  Uploaded: skills/ember-best-practices/README.md
  Uploaded: skills/ember-best-practices/SKILL.md
  Uploaded: skills/ember-best-practices/rules/a11y-automated-testing.md
  Uploaded: skills/ember-best-practices/rules/a11y-form-labels.md
  Uploaded: skills/ember-best-practices/rules/a11y-keyboard-navigation.md
  Uploaded: skills/ember-best-practices/rules/a11y-route-announcements.md
  Uploaded: skills/ember-best-practices/rules/a11y-semantic-html.md
  Uploaded: skills/ember-best-practices/rules/advanced-concurrency.md
  Uploaded: skills/ember-best-practices/rules/advanced-data-loading-with-ember-concurrency.md
  Uploaded: skills/ember-best-practices/rules/advanced-helpers.md
  Uploaded: skills/ember-best-practices/rules/advanced-modifiers.md
  Uploaded: skills/ember-best-practices/rules/advanced-tracked-built-ins.md
  Uploaded: skills/ember-best-practices/rules/bundle-direct-imports.md
  Uploaded: skills/ember-best-practices/rules/bundle-embroider-static.md
  Uploaded: skills/ember-best-practices/rules/bundle-lazy-dependencies.md
  Uploaded: skills/ember-best-practices/rules/component-args-validation.md
  Uploaded: skills/ember-best-practices/rules/component-avoid-classes-in-examples.md
  Uploaded: skills/ember-best-practices/rules/component-avoid-constructors.md
  Uploaded: skills/ember-best-practices/rules/component-avoid-lifecycle-hooks.md
  Uploaded: skills/ember-best-practices/rules/component-cached-getters.md
  Uploaded: skills/ember-best-practices/rules/component-class-fields.md
  Uploaded: skills/ember-best-practices/rules/component-composition-patterns.md
  Uploaded: skills/ember-best-practices/rules/component-controlled-forms.md
  Uploaded: skills/ember-best-practices/rules/component-file-conventions.md
  Uploaded: skills/ember-best-practices/rules/component-memory-leaks.md
  Uploaded: skills/ember-best-practices/rules/component-minimal-tracking.md
  Uploaded: skills/ember-best-practices/rules/component-on-modifier.md
  Uploaded: skills/ember-best-practices/rules/component-reactive-chains.md
  Uploaded: skills/ember-best-practices/rules/component-strict-mode.md
  Uploaded: skills/ember-best-practices/rules/component-tracked-toolbox.md
  Uploaded: skills/ember-best-practices/rules/component-use-glimmer.md
  Uploaded: skills/ember-best-practices/rules/exports-named-with-default-fallback.md
  Uploaded: skills/ember-best-practices/rules/helper-builtin-functions.md
  Uploaded: skills/ember-best-practices/rules/helper-composition.md
  Uploaded: skills/ember-best-practices/rules/helper-plain-functions.md
  Uploaded: skills/ember-best-practices/rules/performance-on-modifier-vs-handlers.md
  Uploaded: skills/ember-best-practices/rules/route-lazy-routes.md
  Uploaded: skills/ember-best-practices/rules/route-loading-substates.md
  Uploaded: skills/ember-best-practices/rules/route-model-caching.md
  Uploaded: skills/ember-best-practices/rules/route-parallel-model.md
  Uploaded: skills/ember-best-practices/rules/route-templates.md
  Uploaded: skills/ember-best-practices/rules/service-cache-responses.md
  Uploaded: skills/ember-best-practices/rules/service-data-requesting.md
  Uploaded: skills/ember-best-practices/rules/service-ember-data-optimization.md
  Uploaded: skills/ember-best-practices/rules/service-owner-linkage.md
  Uploaded: skills/ember-best-practices/rules/service-shared-state.md
  Uploaded: skills/ember-best-practices/rules/template-avoid-computation.md
  Uploaded: skills/ember-best-practices/rules/template-conditional-rendering.md
  Uploaded: skills/ember-best-practices/rules/template-each-key.md
  Uploaded: skills/ember-best-practices/rules/template-fn-helper.md
  Uploaded: skills/ember-best-practices/rules/template-helper-imports.md
  Uploaded: skills/ember-best-practices/rules/template-let-helper.md
  Uploaded: skills/ember-best-practices/rules/template-only-component-functions.md
  Uploaded: skills/ember-best-practices/rules/testing-library-dom-abstraction.md
  Uploaded: skills/ember-best-practices/rules/testing-modern-patterns.md
  Uploaded: skills/ember-best-practices/rules/testing-msw-setup.md
  Uploaded: skills/ember-best-practices/rules/testing-no-raf-for-state.md
  Uploaded: skills/ember-best-practices/rules/testing-qunit-dom-assertions.md
  Uploaded: skills/ember-best-practices/rules/testing-render-patterns.md
  Uploaded: skills/ember-best-practices/rules/testing-test-waiters.md
  Uploaded: skills/ember-best-practices/rules/vscode-setup-recommended.md
  Uploaded: skills/glossary.md
  Uploaded: skills/query-backed-relationships/SKILL.md
  Uploaded: skills/realm-policy-authoring/SKILL.md
  Uploaded: skills/rich-markdown-reports/SKILL.md
  Uploaded: skills/source-code-editing/SKILL.md
Skipping 2 realm-managed remote artifact(s): index.json, realm.json

Checkpoint created: 546b960 [MAJOR] Push: 314 files (~314)
Push completed
Push completed successfully

lucaslyl and others added 4 commits October 12, 2026 13:08
…n every label

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…reason in the description

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…g places pick one, notes without a look answer nothing

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…uted accents, record the hue a mode word took

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

@lucaslyl lucaslyl left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Claude Code 🤖] Lens: whether the Look check agrees with the briefs domain-interview actually writes, with index.md, and with the neighbouring boxel-design sections, checked by reading plus simulated runs on this head (three runs each for two scenarios, not a live Boxel build).

One blocking issue: the "Use what's in the brief" option and the "spec facts count as a source" claim treat invented sample data as user-supplied, and the simulated builder then published invented prices as the business's own. Two non-blocking decisions follow.

  1. (blocking) Key the option and the source claim to what the user supplied, not to anything in spec; see the comment on the "concrete facts" sentence.
  2. Decide what a feel word with no hue records, and how "quiet" differs from "earthy"; see the comment on "A cue that settles the feel".
  3. State whether a governing BrandGuide answers the feel question; see the comment on "The colour words in the label are binding".

Comment thread skills/boxel-design/SKILL.md Outdated
Comment thread skills/boxel-design/SKILL.md Outdated
Comment thread skills/boxel-design/SKILL.md Outdated
@lucaslyl lucaslyl closed this Oct 12, 2026
@lucaslyl
lucaslyl deleted the eco-602-look-check-ask-about-the-look-when-a-build-starts-from-a branch October 12, 2026 08:50
Reverts the place-fitted looks (kept on branch eco-602-dynamic-looks-backup).
The feel question is Light & calm / Dark & dramatic / Bold colour / You decide,
as in the design pipeline PR, so this PR stays a small split of it.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@lucaslyl lucaslyl reopened this Oct 12, 2026
lucaslyl and others added 5 commits October 12, 2026 18:09
…er nothing, designs answer the feel, typed details are prefixed

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…f's, design text is not a stated fact, hand-off names both questions

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…th a real model

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ing brand guide answers the feel

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…Guide

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@lucaslyl
lucaslyl marked this pull request as ready for review October 12, 2026 11:46
@lucaslyl lucaslyl self-assigned this Oct 12, 2026
@lucaslyl
lucaslyl requested a review from a team October 12, 2026 11:46
Comment thread skills/boxel-design/SKILL.md Outdated

**Record it on the brief**, when there is one, straight after the answer, including what the user's
prompt already said. Write the `Look:` and `Real details:` lines it does not already have into its `designDirection` field (this skill's field;
`domain-interview` owns `spec`) with `run-realm-code`, changing only that field: add the two lines after any text already there, never deleting it; if the

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Look check tells the builder to edit designDirection with run-realm-code, but domain-interview (Output) says multi-line markdown must never be hand-escaped into the JSON string and must go through patch-fields (assistant) or a JSON.stringify script + boxel file write (terminal agents, where run-realm-code does not exist). A realm.fs.replace on Brief/.json with a raw newline or quote produces invalid JSON / a broken card, and Claude Code / Codex builds get no usable write path at all.


Generated by Claude Code

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Claude Code 🤖] Fixed in 667de6b. The Look check no longer names run-realm-code. The assistant reads the card and uses patch-fields on designDirection; terminal agents follow domain-interview → Writing it from a terminal agent (parse the brief JSON, set the field in a script, JSON.stringify, boxel file write --file, re-read before and after).

Comment thread skills/boxel-design/SKILL.md Outdated
Real details: use what's in the brief | facts: <the user's words> | leave marked slots | leave sections out | concept (demo mode)
```

On `Look:` a skipped question records `You decide`, and a feel answered by a governing `BrandGuide` or

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A feel answered by a governing Theme is told to record Look: from the BrandGuide (<its name>). When the governing source is a StructuredTheme/StyleReference (no BrandGuide), the brief permanently records a BrandGuide that does not exist, and a later build reading the line will look for one.


Generated by Claude Code

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Claude Code 🤖] Fixed in 667de6b. The recorded line is from the <BrandGuide or Theme> (<its name>), naming the kind the governing source actually is.

Comment thread skills/boxel-design/SKILL.md Outdated
**Already answered** means any of: the user's prompt or attachments state it (named colours, a
brand, a logo or a reference site, or a feel word that names one of the three options or a colour
("dark", "bold", "light and calm"), for question 1; facts for question 2); a governing `BrandGuide`
or Theme for this work (see *Brand and Style Source* below) answers question 1 too; it was answered

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"A governing BrandGuide or Theme ... answers question 1" — but Brand and Style Source (user/custom realm work) has the assistant "derive or choose the Theme ... from the user's domain". A Theme the assistant picked or an unrelated realm Theme therefore counts as answered, so the feel question is skipped and the user never decides the look, which is what this check exists to prevent. Limit it to a BrandGuide/Theme the user named or that their work already links.


Generated by Claude Code

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Claude Code 🤖] Fixed in 667de6b. Only a BrandGuide/Theme the user named or their work already links answers question 1. A Theme the assistant derived or chose under Brand and Style Source, or one that merely exists in the realm, answers nothing.

Comment thread skills/boxel-design/SKILL.md Outdated
user typed always start with `facts:`, so typed text can never be read as one of the other four, and
they add to the facts the user stated in the brief, never replace them. A
skip records the one it took. The build reads both lines as given: the look steers the mockup, and the
real-details line decides what the build may write about the user's business. Only what the user stated counts as a source under

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only the Interview record is treated as a source, but domain-interview says "where the record and a section differ, the section is what the build follows", and the record stores picked option labels including assistant-proposed "(Recommended)" ones. A user who corrected a fact later in Scope/Content contracts (or whose answer was an assistant suggestion) gets either the stale record value or an assistant-written fact published as the business's own.


Generated by Claude Code

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Claude Code 🤖] Fixed in 667de6b. Facts that count now says a later Scope or Content-contract section that corrects a record value is what the build follows, and that an assistant-proposed "(Recommended)" option taken by a skip (Skipped) is not a source.

design decisions on purpose.

Ask only the questions that are still unanswered, together in one choice-UI call, each with its skip
option (rules: [`domain-interview`](../domain-interview/SKILL.md) → *Skipping*):

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Skip rules point to domain-interview → Skipping, whose "Skip the rest" description is "I'll decide this and everything after, and write the brief". At build time the option will tell the user it writes a brief, and a builder following that rule may stop and rewrite the brief instead of building. Give the build-time description here (the PR notes the mismatch but this section newly depends on it).


Generated by Claude Code

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Claude Code 🤖] Fixed in 667de6b and 0ad9840. The Look check words the skip for a build: Skip the rest with "I'll decide this and go on to build", never "write the brief". index.md uses the same wording.

Comment thread skills/boxel-design/SKILL.md Outdated
2. **Real details:** "Anything true about this place a competitor couldn't say?" When the brief's
`spec` already holds concrete facts the user stated (names, places, prices, house rules, as in its
Interview record), the real options are
**Use what's in the brief** (recommended) / *No details — leave marked slots for them* / *It's a

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When the brief has user-stated facts, the option list drops No details — leave those sections out, though leave sections out is one of the five stored values. A user with a few facts in the brief who wants the remaining unsourced sections omitted has no option for it and is pushed to marked slots or demo mode.


Generated by Claude Code

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Claude Code 🤖] Fixed in 667de6b. With user facts in the brief the options are Use what's in the brief (recommended) / No details beyond the brief — leave the other sections out / the concept-or-pitch option, so leave sections out is reachable.


```
Look: Dark & dramatic
Real details: use what's in the brief | facts: <the user's words> | leave marked slots | leave sections out | concept (demo mode)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

designDirection is a MarkdownField: the Look: and Real details: lines written on consecutive lines (and appended directly after existing text) render as one paragraph ("Look: Dark & dramatic Real details: ..."), and appending without a blank line merges them into the prior note's paragraph. Specify a blank line before them, or a list.


Generated by Claude Code

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Claude Code 🤖] Fixed in 667de6b. Each line is its own paragraph: a blank line between Look: and Real details:, and a blank line before the first when text is already in the field. The example block shows it.

Comment thread skills/boxel-design/SKILL.md Outdated
five, written exactly so (they are the stored form of the options, not their labels); details the
user typed always start with `facts:`, so typed text can never be read as one of the other four, and
they add to the facts the user stated in the brief, never replace them. A
skip records the one it took. The build reads both lines as given: the look steers the mockup, and the

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"The build reads both lines as given" — nothing in design-playbook.md (the actual build process) or critical-rules.md mentions designDirection, Look: or Real details:. A build resumed in a later session from the playbook has no step that reads them, so leave sections out / concept (demo mode) is silently ignored.


Generated by Claude Code

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Claude Code 🤖] Fixed in 667de6b. design-playbook.md Stage 1 now opens with reading the Look: and Real details: lines from designDirection, and critical-rules.md → Never invent proof points to the Real details: value.

Comment thread index.md Outdated
- **Just build it** → `boxel-design` and the design-playbook, after one call of questions (below), to a first version: the page, or for an app, its linked cards and Home card. **The default recommendation**, because most users want to see something first. List it first.
- **Plan it with me first** → `domain-interview`, which asks for the main input first and sizes the rest of the interview from how the user answers. Recommend this instead only when the domain has regulation, money, safety or specialist vocabulary a builder would not know.
- **I already have a brief or a design** → go straight to the build, reading the brief card when one exists.
- **I already have a brief or a design** → go straight to the build, reading the brief card when one exists; `boxel-design`'s *Look check* asks the feel and real-details questions once if the brief does not record them.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The route covers "a brief or a design", but the Look check sentence only conditions on the brief recording the answers, and boxel-design's Look check intro names only "I already have a brief". With an attached design and no brief it is unclear whether the real-details question is asked; an attached design answers the feel but not real details, so a build may proceed with no real-details decision.


Generated by Claude Code

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Claude Code 🤖] Fixed in 667de6b. The Look check applies to a brief or an attached design. An attached design answers the feel (recorded as from the attached design) and never the real details, so that question is still asked. index.md says the same.

Comment thread skills/glossary.md Outdated
→ `boxel/references/design-playbook.md`

- **Layout vocabulary** — eight layout moves (layered surface, bento, masonry, unequal split, edge overlap, editorial type, bleed, sticky scroll), each with what it is for, when not to use it, and its in-card CSS; sections come first, and zero moves is valid. → `boxel-design/references/layout-vocabulary.md`
- **Look check** — the feel and real-details questions asked once before the first design decision: in the "Just build it" first call, or at build entry from a brief; recorded as `Look:` and `Real details:` lines in the brief's `designDirection`. → `boxel-design/SKILL.md`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New "Look check" entry is inserted between "Layout vocabulary" and "Layout gravity wells", splitting the two layout entries; place it after them.


Generated by Claude Code

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Claude Code 🤖] Fixed in 667de6b. The Look check entry now follows the two layout entries.

Comment thread skills/boxel-design/SKILL.md Outdated
lucaslyl and others added 3 commits October 13, 2026 09:04
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ook read, ordering)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@lucaslyl
lucaslyl merged commit 46ccf2a into main Oct 13, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants