Skip to content

State every limit of a realm policy in the skills - #179

Merged
habdelra merged 23 commits into
mainfrom
cs-13109-policy-skills-cover-every-limit
Oct 7, 2026
Merged

habdelra merged 23 commits into
mainfrom
cs-13109-policy-skills-cover-every-limit

Conversation

@habdelra

@habdelra habdelra commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Important

Merge order (each must merge before the next):

  1. Compile a policy grant's opt-in to callers who aren't signed in boxel#6534: compile a grant's anonymous opt-in (merged)
  2. Policy: admit anonymous reads through a grant that opts in, rate-limited per realm and address boxel#6568 (CS-13536): anonymous reads (merged)
  3. Policy: admit anonymous searches through a query grant that opts in boxel#6575 (CS-13578): anonymous search, stacked on #6568
  4. Policy: admit anonymous writes as a user the realm's config names boxel#6577 (CS-13579): anonymous writes, stacked on #6575
    4a. Policy: let a grant on a declared operation admit a caller who isn't signed in boxel#6579 (CS-13605): anonymous named operations, stacked on #6577. boxel-skills#174's §12 describes it
    4b. Policy: explain how a realm treats a caller who isn't signed in boxel#6581 (CS-13609): explaining a visitor's refusal, stacked on #6579, with its panel in Show in the explain panel how a realm treats callers who aren't signed in boxel-catalog#809. boxel-skills#174's §10/§12 describe it
  5. Add the judgment calls to the realm-policy-authoring skill #175 (CS-13108): merged, and merged into Teach the realm-policy-authoring skill anonymous grants and a realm's anonymous traffic controls #174 and this PR. The anonymous section is §12, Refusals §13, "Choosing what to grant" §14 and the checklist §15.
    5a. Say that no policy grant reaches a path the realm ignores #178 (CS-13336): merged, and merged into Teach the realm-policy-authoring skill anonymous grants and a realm's anonymous traffic controls #174 and this PR
  6. Teach the realm-policy-authoring skill anonymous grants and a realm's anonymous traffic controls #174 (CS-13571): anonymous grants in the skill (merged)
  7. This PR (CS-13109): targets main now that Teach the realm-policy-authoring skill anonymous grants and a realm's anonymous traffic controls #174 has merged; merges next
    7a. Say that a policy's rules are not secret from the writers of other realms #181 (CS-13398): a policy's rules leak through a realm's behavior, so keep nothing secret in predicates; stacked on this PR, merges right after it
  8. CS-13572 (CS-13571): once every open skills PR has merged, one boxel-skills release covering Add the judgment calls to the realm-policy-authoring skill #175, boxel-skills#177, Say that no policy grant reaches a path the realm ignores #178, Teach the realm-policy-authoring skill anonymous grants and a realm's anonymous traffic controls #174, this PR and Say that a policy's rules are not secret from the writers of other realms #181, then one plain-title boxel PR moving the pin to it

Every PR in this order carries this callout. Whoever opens one of the PRs above tells the owners of the others, and each owner updates its own callout.

In service of operation-permission policies, which let a realm's policy admit callers the realm's own permissions decline. The skills are the documentation of how a policy works, so every deliberate limit of the system has to be stated in them, prominently, before a reader relies on a policy. This PR audits realm-policy-authoring and card-operations-authoring against those limits and fills the gaps.

realm-policy-authoring gains a section ahead of §1, What a policy does not do, with one line per limit and a pointer to where each is covered. The sections it points at gain what was missing:

  • §3, "only widens": the two exceptions, explain running predicates for the actor it names and validate compiling the policy, and that an owner route such as _permissions answers on the permissions alone.
  • §3, revocation: taking away someone's realm permission doesn't revoke them if a grant still admits them. To revoke urgently, change what the predicate reads, or the policy.
  • §3, card+json writes: a granted POST or PATCH answers with the whole indexed card, unprojected by read, even for a PATCH that changes nothing.
  • §5: a card's raw .json is not a superset of a read, since a default read carries included.
  • §7: which subtype redeclarations keep a card out of a query grant's search, the snapshot and .id exceptions, that a direct read may still admit such a card, and where an explain shows the exclusion.
  • §8: the policy-snapshot-read log line, and when it isn't written.
  • §9:
    • a card with no rules grants nothing rather than failing closed
    • invalid-grant's second cause
    • computed values derived from linked cards are never warned about
  • §11: a nonGrantable flag on a subtype under a supertype's grant.
  • §13:
    • the "Policy unavailable" code on each route
    • timing: the response bytes conceal whether a card exists, but how long a refusal takes does not
    • who meets an archived realm's seal: a caller the realm's permissions allow, a caller only the policy admits, and a signed-in caller on the stored-bytes routes

card-operations-authoring changes:

  • It lists explain and validate among the base operations.
  • It qualifies "any caller who can read it can invoke any read": an operation that failed to lower refuses everyone, and an explain or validate also needs read on the other realms it consults.
  • It adds the timing caveat and the no-op PATCH answer.

The index and the glossary follow.

Each claim was checked against the platform code. The behavior a visitor sees in an archived realm depends on the anonymous-reads change, so #174 states it once that change ships.

🤖 Generated with Claude Code

realm-policy-authoring opens with "What a policy does not do", one line per
deliberate limit with a pointer to where it is covered, and the sections gain
what was missing: urgent revocation and why removing a realm permission
doesn't revoke, the explain/validate and owner-route exceptions to "only
widens", the whole-card answer of a card+json write, raw .json not being a
superset of a read, the subtype guard on query grants, the snapshot-read log,
unwarned computed values, the subtype-flagged nonGrantable case, timing, and
who meets an archived realm's seal.

card-operations-authoring lists explain and validate among the base
operations, qualifies "any caller who can read it can invoke any read", and
states the timing caveat and the no-op PATCH answer.

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

@habdelra habdelra 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 🤖] This review checked every factual claim the diff adds to the two skills, the glossary and the index against the platform code (gate, policy, policy-query, policy-filter, explain, validate, telemetry, dispatch, realm.ts). It also checked that the up-front list's section pointers land on sections that cover each item, and looked for overlap with the in-flight edits to the same skill. It didn't cover the parts of the skills this diff doesn't touch.

No blocking issues. Most of the added claims match the code. Two summary bullets in "What a policy does not do" say less than, or the opposite of, the sections they point at, and those two are worth fixing before merge.

  1. The revocation bullet implies a policy edit is prompt on the direct lane, which contradicts §3, and "use the direct lane" isn't something the revoker can do. See the inline comment there.
  2. The archived-realm bullet leaves out that a stored-bytes GET shows the seal to every signed-in caller. The §13 bullet also groups the scoped-CSS serve with routes it doesn't behave like. See the inline comment.
  3. A question on the §11 subtype nonGrantable sentence: a named query run on the supertype may still return the subtype's cards. See the inline comment.
  4. card-operations-authoring: the failed-to-lower exception should cover the writer clause too.
  5. Two nits: the nonGrantable pointer should include §11, and "redeclares a field" is broader than what §7 and the code exclude.

Section numbering: nothing is renumbered, and the up-front list's §13 pointers still land on "Refusals a caller sees" if the "Choosing what to grant" section from the paired skill edit goes in after it, as that branch places it. The index.md edit changes the line next to the realm-policy-authoring line that edit also rewrites, so expect a trivial merge conflict there.

Comment thread skills/realm-policy-authoring/SKILL.md Outdated
Comment on lines +69 to +72
- **Search is not a prompt revocation boundary.** A direct read judges the card
as stored and refuses on the next request. A search answers from the index and
keeps listing the card until it is reindexed. To revoke urgently, change the
card or the policy, and use the direct lane until the reindex lands (§3, §7).

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 🤖] This bullet's remedy disagrees with the §3 paragraph it points at. "Change the card or the policy, and use the direct lane until the reindex lands" implies a policy edit takes effect on the direct lane at once. §3 says "Both lanes see a policy-card edit once the policy card is reindexed", which matches the code: the gate reads the compiled policy, and that is revalidated off the policy card's index row. Only a card edit is prompt on the direct lane, because the gate judges the predicate against storedSubject, the card's stored source.

"Use the direct lane" also gives the revoker nothing to do. The caller being revoked chooses which lane they use, and their search keeps returning the row whole until the reindex.

Suggested wording: "To revoke urgently, edit the card the predicate reads. The direct lane refuses on the next request, and a search stops listing the card once it is reindexed. A policy-card edit reaches both lanes only once the policy card is reindexed (§3, §7)."

Regression (new text). Non-blocking, but it's the advice a reader acts on during an incident, so worth fixing here.

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 f7ebbad. The bullet now says to change what the grant reads on the card: a direct read refuses at once, and a search once the card is reindexed. A policy-card edit reaches both lanes only once the policy card is reindexed, which matches §3.

Comment thread skills/realm-policy-authoring/SKILL.md Outdated
Comment on lines +90 to +91
- **An archived realm tells callers it is archived where the policy would
admit them** (§13).

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 🤖] The summary understates what §13 says further down. Per §13 (and the code), every signed-in caller of an archived private realm that has a policy meets the seal on a stored-bytes GET, whether or not a grant reaches the file. The cause is that GRANTABLE_BYTES routes are only CONSUMES_COARSE_OUTCOME, and #policyJudges admits any authenticated user once the realm names a policy. So on those routes the seal tells a caller no grant admits that the realm is archived. That is exactly the limit this list exists to state.

Suggested wording: "An archived realm tells callers it is archived where the policy would admit them, and tells every signed-in caller on the routes that serve stored bytes (§13)."

A smaller point on the §13 bullet: the hashed scoped-CSS serve doesn't behave like the byte routes. It is APPLIES_ARCHIVED_SEAL and seals only where it would serve a stylesheet, so a hash the realm holds no stylesheet for is a not-found whether or not the realm is archived (see the comment above isHashedScopedCSSRequest in realm.ts). "Every signed-in caller … meets the seal on a GET" doesn't quite hold for that serve.

Regression (new text), non-blocking.

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 f7ebbad. The summary now says a caller only the policy admits is told where a grant would admit them, and every signed-in caller is told on the stored-bytes routes. §13 no longer groups the scoped-CSS serve with those routes: it shows the seal only where it would serve a stylesheet, so a hash it doesn't hold is not found, archived or not.

Comment thread skills/realm-policy-authoring/SKILL.md Outdated
Comment on lines +1139 to +1141
the flag doesn't make it grantable. A flag on a *subtype* is different: a
grant on the supertype records nothing, and the realm refuses it at runtime
for the subtype's cards alone. `explain` and `validate` are always

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 🤖] Does "the realm refuses it at runtime for the subtype's cards alone" hold for a named query? At the gate it holds: gateOperation checks definition.nonGrantable on the target card's own type. A named query (base query) never reaches the gate, though. It is scoped by typeScope in policy-query.ts, which checks ownDeclaration on the queried type and nonGrantableInChain from that type upward. Run the supertype's named query, and the compiled filter matches the subtype's rows too. I can't find anything that drops the rows of a subtype that flagged the query.

If that's right, the sentence needs "except a named query run on the supertype, whose search still returns the subtype's cards". If something does drop those rows, which code is it?

Question, non-blocking.

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 🤖] Confirmed, it doesn't hold for a search. typeScope checks nonGrantableInChain from the queried type up, so a search through the supertype can still return the subtype's cards. Fixed in f7ebbad: §11 now says the realm refuses the operation invoked on one of the subtype's cards, while a search through the supertype is judged by the supertype and its ancestors, so those cards can still come back.

Comment on lines +1110 to +1115
**The realm's own read/write permissions come first.** Any caller who can write
the realm can invoke any mutating operation on it, a `nonGrantable` one
included; any caller who can read it can invoke any read. A realm that names a
policy is consulted only for what those permissions declined: everything, for
a caller with no permission on the realm; writes, for one who may read it.
included; any caller who can read it can invoke any read the card carries,
except an operation that failed to lower, which refuses everyone, and an
`explain` or `validate`, which also need read on every other realm they
consult. A realm that names a policy is consulted only for what those

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 🤖] The "failed to lower, which refuses everyone" exception is attached only to the read clause, so the writer clause just before it still says a realm writer "can invoke any mutating operation". That's false for an invalid mutating declaration too. dispatch.ts throws the 422 invalid-operation on declared.invalid for every caller, before any permission or gate check. Suggest moving the exception so it covers both clauses, e.g. "…can invoke any read the card carries. An operation that failed to lower refuses everyone, writers included, and an explain or validate also needs read on every other realm it consults."

Regression (new text), non-blocking.

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 f7ebbad. The failed-lowering case is now its own sentence: it refuses every caller, realm writers included, with 422 invalid-operation.

Comment on lines +86 to +88
A def carries `explain` and `validate` only where a card declares an
operation on them, and each must be `nonGrantable` (`realm-policy-authoring`
§9, §10).

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 🤖] Nit: the claim here is that each must be nonGrantable, which realm-policy-authoring covers in §11 ("explain and validate are always nonGrantable"). §9 and §10 cover what the two operations answer. Suggest §9, §10, §11, or only §11 if the pointer is meant for the flag.

Non-blocking.

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 f7ebbad. The pointer now includes §11.

Comment thread skills/realm-policy-authoring/SKILL.md Outdated
Comment on lines +86 to +87
- **A subtype that redeclares a field a `query` grant compares is left out of
that search**, though a direct read may still admit its cards (§7).

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 🤖] Nit: "redeclares a field" is broader than §7 and the code. readsPathAlike excludes only a redeclaration that reads the path differently: computed, query-backed, a different primitive type, or a list. Under snapshot: true a computed one doesn't count. A subtype that redeclares the field with the same declaration is judged as usual. Suggest "redeclares a field a query grant compares, in a way the index holds differently, …".

Non-blocking.

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 f7ebbad. The summary bullet names the differences that exclude a subtype (computed or query-backed field, another type, a list, or not declared), as §7 does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…policy-authoring-skill-anonymous' into cs-13109-policy-skills-cover-every-limit
…policy-authoring-skill-anonymous' into cs-13109-policy-skills-cover-every-limit
…policy-authoring-skill-anonymous' into cs-13109-policy-skills-cover-every-limit

@richardhjtan richardhjtan 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.

[Claude Code 🤖] One blocking finding, inline.

included; any caller who can read it can invoke any read the card carries,
except an `explain` or `validate`, which also need read on every other realm
they consult. An operation that failed to lower refuses every caller, realm
writers included, with 422 `invalid-operation`. A realm that names a policy is consulted only for what those

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.

[Claude Code 🤖] Blocking: 422 invalid-operation isn't what every caller gets. A caller who may not read the realm never sees it. In resolveAndGate (dispatch.ts), a resolution failure for a caller with coarseDeclined === 'all' is rethrown as notPermitted, so that caller gets the not-found answer, as the §5 table in this same file says ("a declaration with findings … 404 target-not-found" for a caller who may not read the realm). Suggest: "refuses every caller, realm writers included: 422 invalid-operation for a caller who may read the realm, and the not-found answer for one who may not."

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 644a002. The sentence now reads: an operation that failed to lower refuses every caller, realm writers included: 422 invalid-operation for a caller who may read the realm, and the not-found answer for one who may not (§5).

…eration that failed to lower

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
habdelra and others added 7 commits October 6, 2026 13:47
…policy-authoring-skill-anonymous' into cs-13109-policy-skills-cover-every-limit
…policy-authoring-skill-anonymous' into cs-13109-policy-skills-cover-every-limit
…policy-authoring-skill-anonymous' into cs-13109-policy-skills-cover-every-limit
…policy-authoring-skill-anonymous' into cs-13109-policy-skills-cover-every-limit
…policy-authoring-skill-anonymous' into cs-13109-policy-skills-cover-every-limit

# Conflicts:
#	index.md
… them

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…policy-authoring-skill-anonymous' into cs-13109-policy-skills-cover-every-limit
…policy-authoring-skill-anonymous' into cs-13109-policy-skills-cover-every-limit
…policy-authoring-skill-anonymous' into cs-13109-policy-skills-cover-every-limit
…policy-authoring-skill-anonymous' into cs-13109-policy-skills-cover-every-limit
@habdelra
habdelra requested a review from a team October 6, 2026 20:36
…policy-authoring-skill-anonymous' into cs-13109-policy-skills-cover-every-limit
…policy-authoring-skill-anonymous' into cs-13109-policy-skills-cover-every-limit
…policy-authoring-skill-anonymous' into cs-13109-policy-skills-cover-every-limit
…policy-authoring-skill-anonymous' into cs-13109-policy-skills-cover-every-limit
…policy-authoring-skill-anonymous' into cs-13109-policy-skills-cover-every-limit
…policy-authoring-skill-anonymous' into cs-13109-policy-skills-cover-every-limit
…policy-authoring-skill-anonymous' into cs-13109-policy-skills-cover-every-limit
@habdelra
habdelra changed the base branch from cs-13571-policy-teach-the-realm-policy-authoring-skill-anonymous to main October 7, 2026 07:55
@habdelra
habdelra merged commit 56a4bf4 into main Oct 7, 2026
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown

Staging Workspace Sync Successful

Successfully synced changes to staging workspace
Workspace: https://realms-staging.stack.cards/skills/
Commit: 56a4bf4
Synced at: 2026-10-07 07:58:12 UTC

Sync Details

Starting push from . to https://realms-staging.stack.cards/skills/
Testing realm access...
Realm access verified
Found 302 files in local directory
No sync manifest found, will upload all files
Uploading 302 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-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/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-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: 9c275f1 [MAJOR] Push: 302 files (~302)
Push completed
Push completed successfully

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