Skip to content

Add a BXL card-authoring skill - #116

Merged
habdelra merged 2 commits into
mainfrom
cs-12508-bxl-authoring-skill
Aug 20, 2026
Merged

Add a BXL card-authoring skill#116
habdelra merged 2 commits into
mainfrom
cs-12508-bxl-authoring-skill

Conversation

@habdelra

@habdelra habdelra commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Card authors — human and agent — get no guard rails from the BXL engine. It tolerates missing values, catches spreadsheet error values rather than throwing, and compiles a readable spreadsheet dialect down to jq, so several of the ways to get an expression wrong land a plausible value in the field instead of an error. This adds the authoring skill for that surface.

skills/bxl-authoring/SKILL.md is the decision-and-trap layer, not a syntax reference — the syntax surface stays in the engine's own docs and on bxl.boxel.site. It covers which of the three call-site forms to reach for; what the derive profile refuses when the field is defined, and the diagnostic it throws; aggregation over linked and query-backed collections; blank-input propagation; error values; cyclic graphs; dates; memoization; { as: FieldDef } materialization; and a review checklist.

Four of the traps produce a wrong value with nothing to signal it:

  • A single-argument aggregate handed an iterating path runs per element. jq function arguments are streams, so SUM(Claims[].Paid) calls SUM once per claim and the field receives [10, 5] rather than 15. The rule stops at the argument that iterates: a comma list is collected by the compiler, an array-valued field is already one value, and wrapping a scalar parameter is its own bug — ROUND([1.234], 2) and NPV([0.1], CashFlows) both blank the field.
  • \(…) in a plain string is inert. JS eats the backslash, the field renders (.bpSystolic)/(.bpDiastolic), and no lint pass in a realm flags it. Either tag preserves it, and inside the interpolation you are in jq, where a PascalCase label compiles as a function call and throws on first read.
  • & renders a blank operand as the text null. Name & " (" & Tier & ")" on a card with no tier yields Acme (null). CONCAT and TEXTJOIN drop blanks; the skill teaches the // "" guard.
  • An error value blanks the whole expression; anything else breaks the card. ROUND absorbs a null operand, but a spreadsheet error value propagates out through it — ROUND(NA()) + 5 is null, not 5. And only those values are caught: a misspelled function name compiles happily and throws 'SUMM/1' is not defined on first read, so a formula typo indexes as an error rather than a blank field.

Dates get their own section because a computed is evaluated server-side for the index and in the viewer's zone in the browser. Every date function answers identically across host zones, and TODAY / NOW are refused in a computed outright — so the guidance is to compute the fact (a serial, a span) and let the component phrase it.

Verified, and pinned against drift

Every behavioral claim was checked against the engine rather than read off its docs. Two examples in the engine's own syntax-modes.md handed an iterating path straight to SUM, and are corrected in the companion monorepo PR.

Because a skill ships to authors who cannot run the engine to check it, the monorepo carries a suite that pins each claim twice — the snippet still appears in this file, and the behavior it describes still holds — plus a check that every repo path the skill cites resolves. It reads the copy that pnpm build:skills brings in from a pinned tag here, so a version bump fails there if this file and the engine ever disagree. It was mutation-tested: moving an entry between the refused and allowed lists, swapping the WRONG/RIGHT aggregate examples, renaming a cited doc, falsifying a reason cell, or listing an error value the engine never raises each fail a case.

One case is anchored to the engine rather than to the suite: it walks the profile's own denied-call table and requires every ban to be either named on this page or waived in the suite under the category this page describes it by. Comparing the page against the suite's cases alone is a closed loop — which is how isAfter / isBefore initially stayed missing from a refusal list that blessed the validator helpers they sit among. A ban the engine gains now fails until someone decides which it is.

Both harnesses, one file

Skill/bxl-authoring.json points its instructionsSource at ../skills/bxl-authoring/SKILL.md rather than carrying a sibling .md, the way Skill/source-code-editing.json already does. One file serves the plugin and the in-app assistant, so the double-authoring invariant is satisfied without a second copy of the body. README.md records the option next to the invariant — and is explicit that it covers the body only: the chooser-facing metadata is still hand-authored in three places (the card's cardInfo, the SKILL.md frontmatter, and the index.md catalog line), which is where drift actually shows up. Those three are aligned here.

Glossary

The computeVia: expression(...) entry pointed at library-bxl and bxl-computevia-fields, and the bxl entry at library-bxl and extension-libs/bxl/. None of those exist as their own targets; both now point at bxl-authoring.

The bxl entry sits under Realm-bundled libraries, a section whose preamble is "libraries shipped inside a realm filesystem rather than via npm" — which the platform module no longer is. Rather than move someone else's section, the entry now says outright that @cardstack/bxl is the primary import and that it appears there only for the legacy relative-bundle case.

skills/glossary.md's own skill catalog (§22) gains a bxl-authoring line — the list the repo's maintenance rule names by function — and index.md lists the skill under Foundation.

Ordering across the two repos

Merging this reaches the in-app assistant — staging realm on merge, production on release — but not the boxel-cli / Claude Code harness, which reads a copy pinned by BOXEL_SKILLS_VERSION in the boxel monorepo (currently v0.1.0). Full sequence:

  1. This PR merges → staging realm carries the skill.
  2. A boxel-skills release tag is cut → production realm carries it, and the tag becomes eligible for the plugin pin.
  3. Pin the BXL authoring skill's claims against the engine boxel#5819 bumps BOXEL_SKILLS_VERSION to that tag and re-runs pnpm build:skills, committing the copied tree → the plugin ships it, and the drift guard in that PR gets a file to read.

Until step 3, packages/boxel-cli/plugin/skills/bxl-authoring/ does not exist in the monorepo, so that PR's guard fails deliberately rather than passing against a missing file.

Also in this PR

Two things the skill's own subject matter turned up in the surrounding tree:

  • skills/boxel-patterns/references/libraries.md had no @cardstack/bxl entry at all, and integration-surfaces.md filed bxl under realm-bundled libraries pointing at a library-<name> extension that does not exist here. Both corrected, so an author who looks up where expression comes from finds it.
  • skills/boxel-skill-authoring/SKILL.md's frontmatter did not parse: its unquoted description contains boxel.kind: skill, and a : inside a plain YAML scalar is invalid, so the file indexed without frontmatter and kind was never set. The skill that documents the boxel.kind: skill contract was the one skill in the tree that could not appear in the assistant's chooser — exactly the silent trap its own warning section describes. Quoting the description fixes it; all 17 skills now parse with the marker.

Card authors get no guard rails from the BXL engine: it tolerates
missing values, catches spreadsheet error values rather than throwing,
and compiles a readable spreadsheet dialect down to jq, so several ways
of getting an expression wrong land a plausible value in the field
instead of an error.

The skill is the decision-and-trap layer for that surface — tag choice,
what the derive profile refuses when the field is defined, aggregation
over linked and query-backed collections, cyclic graphs, dates,
memoization, and { as: FieldDef } materialization. Every claim in it was
verified against the engine, and the boxel monorepo carries a suite that
pins each one and fails when the copied skill and the engine disagree.

The glossary's bxl and computeVia: expression(...) entries named
library-bxl, extension-libs/bxl/ and bxl-computevia-fields, none of
which exist as their own targets; both now point here, and the bxl entry
records that card code imports the platform module.

Skill/bxl-authoring.json points its instructionsSource at the skills/
tree rather than duplicating the body, so one file serves the plugin and
the assistant.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

Copilot AI left a comment

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.

Pull request overview

Warning

Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.

Adds a new “BXL authoring” skill to provide guardrails and diagnostics guidance for writing expression()/fx/jq BXL in Boxel cards, and updates repository navigation/docs to reference it.

Changes:

  • Added skills/bxl-authoring/SKILL.md with decision guidance, common silent-failure traps, and a review checklist.
  • Added an in-app skill card (Skill/bxl-authoring.json) that reuses the same markdown via instructionsSource.
  • Updated index.md and skills/glossary.md references to point to the new skill.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
skills/glossary.md Updates glossary entries for computeVia: expression(...) and bxl to point at the new authoring skill and clarify import contexts.
skills/bxl-authoring/SKILL.md Introduces the new skill documentation covering BXL call-site choices, derive-profile constraints, traps, and checklist.
index.md Lists the new bxl-authoring skill under Foundation.
Skill/bxl-authoring.json Adds in-app assistant card that sources instructions from the markdown skill file.
README.md Documents the instructionsSource option to avoid duplicating skill markdown under Skill/.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread skills/bxl-authoring/SKILL.md
Comment thread skills/bxl-authoring/SKILL.md
Comment thread skills/glossary.md Outdated
The derive profile's volatile set is six calls, not four: isAfter and
isBefore default their second argument to the current time, so the
profile classes them with NOW. They sat among the validator helpers the
skill blesses, and the date section never mentioned them, so
isBefore(StartDate, EndDate) — the natural thing to reach for — threw at
module load with nothing on the page to warn about it. Both are now
named in the refusal list and in the dates section, with the operator
form that is deterministic.

The glossary's skill catalog gains bxl-authoring, which its own
maintenance rule requires. Its bxl entry now says outright that the
platform module is the primary import and that the entry sits under
realm-bundled libraries only for the legacy relative-bundle case, rather
than describing both models as equals under a header that contradicts
one of them. The same correction reaches the two boxel-patterns
references index.md names as the capability and import catalogues:
libraries.md gains an @cardstack/bxl entry and a lookup-index row, and
integration-surfaces.md stops filing bxl under realm-bundled libraries.

The README's claim that the pointer form cannot drift covered only the
body; the chooser-facing metadata is still hand-authored in three
places, and two of them already disagreed. Said so, and aligned them.

Also quotes the boxel-skill-authoring description, which contained a
`: ` inside an unquoted YAML scalar and therefore did not parse: the
skill documenting the boxel.kind contract was the one skill in the tree
that could not be indexed as a skill, which is exactly the silent trap
its own warning section describes. All 17 now parse with the marker.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Aug 19, 2026

Copy link
Copy Markdown

Staging Workspace Sync Successful

Successfully synced changes to staging workspace
Workspace: https://realms-staging.stack.cards/skills/
Commit: 1a94e1f
Synced at: 2026-08-20 18:06:14 UTC

Sync Details

Starting push from . to https://realms-staging.stack.cards/skills/
Testing realm access...
Realm access verified
Found 369 files in local directory
No sync manifest found, will upload all files
Uploading 369 file(s) via /_atomic...
  Uploaded: skills/boxel/scripts/instance-correctness-scan.py
  Uploaded: Skill/boxel-design.json
  Uploaded: Skill/boxel-design.md
  Uploaded: Skill/boxel-development.json
  Uploaded: Skill/boxel-environment.json
  Uploaded: Skill/boxel-ui-guidelines.json
  Uploaded: Skill/boxel-ui-guidelines.md
  Uploaded: Skill/bxl-authoring.json
  Uploaded: Skill/catalog-listing.json
  Uploaded: Skill/catalog-listing.md
  Uploaded: Skill/dev-bfm-syntax.json
  Uploaded: Skill/dev-bfm-syntax.md
  Uploaded: Skill/dev-command-development.json
  Uploaded: Skill/dev-command-development.md
  Uploaded: Skill/dev-core-concept.json
  Uploaded: Skill/dev-core-concept.md
  Uploaded: Skill/dev-core-patterns.json
  Uploaded: Skill/dev-core-patterns.md
  Uploaded: Skill/dev-data-management.json
  Uploaded: Skill/dev-data-management.md
  Uploaded: Skill/dev-defensive-link-traversal.json
  Uploaded: Skill/dev-defensive-link-traversal.md
  Uploaded: Skill/dev-defensive-programming.json
  Uploaded: Skill/dev-defensive-programming.md
  Uploaded: Skill/dev-delegated-rendering.json
  Uploaded: Skill/dev-delegated-rendering.md
  Uploaded: Skill/dev-enumerations.json
  Uploaded: Skill/dev-enumerations.md
  Uploaded: Skill/dev-external-libraries.json
  Uploaded: Skill/dev-external-libraries.md
  Uploaded: Skill/dev-file-def.json
  Uploaded: Skill/dev-file-def.md
  Uploaded: Skill/dev-file-editing.json
  Uploaded: Skill/dev-file-editing.md
  Uploaded: Skill/dev-fitted-formats.json
  Uploaded: Skill/dev-fitted-formats.md
  Uploaded: Skill/dev-markdown-format.json
  Uploaded: Skill/dev-markdown-format.md
  Uploaded: Skill/dev-query-systems.json
  Uploaded: Skill/dev-query-systems.md
  Uploaded: Skill/dev-quick-reference.json
  Uploaded: Skill/dev-quick-reference.md
  Uploaded: Skill/dev-relationship-loading-state.json
  Uploaded: Skill/dev-relationship-loading-state.md
  Uploaded: Skill/dev-replicate-ai.json
  Uploaded: Skill/dev-replicate-ai.md
  Uploaded: Skill/dev-searchable-fields.json
  Uploaded: Skill/dev-searchable-fields.md
  Uploaded: Skill/dev-spec-usage.json
  Uploaded: Skill/dev-spec-usage.md
  Uploaded: Skill/dev-styling-design.json
  Uploaded: Skill/dev-styling-design.md
  Uploaded: Skill/dev-technical-rules.json
  Uploaded: Skill/dev-technical-rules.md
  Uploaded: Skill/dev-template-patterns.json
  Uploaded: Skill/dev-template-patterns.md
  Uploaded: Skill/dev-theme-design-system.json
  Uploaded: Skill/dev-theme-design-system.md
  Uploaded: Skill/env-assistant-persona.json
  Uploaded: Skill/env-assistant-persona.md
  Uploaded: Skill/env-calling-commands.json
  Uploaded: Skill/env-calling-commands.md
  Uploaded: Skill/env-choosing-llm-models.json
  Uploaded: Skill/env-choosing-llm-models.md
  Uploaded: Skill/env-creating-and-editing-cards.json
  Uploaded: Skill/env-creating-and-editing-cards.md
  Uploaded: Skill/env-diagnosing-broken-links.json
  Uploaded: Skill/env-diagnosing-broken-links.md
  Uploaded: Skill/env-indexing-operations.json
  Uploaded: Skill/env-indexing-operations.md
  Uploaded: Skill/env-markdown-edit.json
  Uploaded: Skill/env-markdown-edit.md
  Uploaded: Skill/env-searching-and-querying.json
  Uploaded: Skill/env-searching-and-querying.md
  Uploaded: Skill/env-sim-boxel-environment-guide.json
  Uploaded: Skill/env-sim-boxel-environment-guide.md
  Uploaded: Skill/env-user-environment-awareness.json
  Uploaded: Skill/env-user-environment-awareness.md
  Uploaded: Skill/env-workflows-and-orchestration-patterns.json
  Uploaded: Skill/env-workflows-and-orchestration-patterns.md
  Uploaded: Skill/source-code-editing.json
  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-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/choosing-llm-models.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/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/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-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-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-screenshot-card-format/README.md
  Uploaded: skills/boxel-patterns/patterns/integrate-screenshot-card-format/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-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/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/catalog-listing/SKILL.md
  Uploaded: skills/catalog-listing/references/submission-workflow.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/source-code-editing/SKILL.md
Skipping 2 realm-managed remote artifact(s): index.json, realm.json

Checkpoint created: e39ecb6 [MAJOR] Push: 369 files (~369)
Push completed
Push completed successfully

@habdelra
habdelra merged commit 1a94e1f into main Aug 20, 2026
3 checks 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