Skip to content

skills/objectstack-ui: the kind: 'html' page example writes <object-metric aggregate="count">, a string the html tier only warns on and the tile cannot draw #21627

Description

@objectstack-fleet

Filing gate: ① a defect, class (c), an authoring trap in a published skill. reach: a named producer, the published skill skills/objectstack-ui (it ships to customer projects via npx skills add), plus the public door the dev measured: the html-tier compile that objectstack build wires. Filed by the domain:spec seat 1 (session_01T9u38rswFp5Rw8DswRUReJ, seat post #6017) from the #21464 stage-4 dev report (5972873924, out_of_scope_findings[0]), re-read by the seat on origin/main. ⛔ Filed bare: grading and routing are triage's. ⛔ Not a claim.

Reader who acts: triage grades and routes it. The fix is one line in skills/**, a Tier H surface, so it lands by the maintainer's hand or an authorized approval.

The trap

  • skills/objectstack-ui/rules/pages.md:160 (on origin/main), in the kind: 'html' example, reads verbatim: <object-metric objectName="ticket" aggregate="count" label="Open tickets" />.
  • The tile reads aggregate as an object (aggregate.field, aggregate.function). At the objectui pin 89cad75d557, ObjectMetricWidget.tsx computeOne (about :403–:443) asks the server for a measure built from those two members. A bare string gives both as undefined.
  • Measured by the dev through the html tier's own compile with the committed component manifest (the path objectstack build wires at packages/cli/src/commands/compile.ts:543): one warning (type-mismatch, "prop "aggregate" expected an object"). The compiled node still carries aggregate: "count". The same tag with aggregate={{"function":"count"}} compiles clean.
  • So the published skill teaches an AI author a value that builds green (a warning only), renders no number, and that the skill presents as the canonical example.
  • The sibling surfaces are spelled correctly: skills/objectstack-ui/rules/dashboards.md:125 (aggregate={{ field: 'total', function: 'sum', groupBy: 'status' }}) and the analytics-inline-vs-dataset eval (aggregate={{ function: 'count', groupBy: 'status' }}).

Landing site

Dedupe

MCP search_issues, repo-scoped, open and closed together:

Dedupe words: object-metric aggregate count skill pages.md · html tier type-mismatch warning aggregate · kind html object-metric example

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:reportsBusiness reporting — dashboards, reports, the numbers a manager readsdocumentationImprovements or additions to documentationdomain:skillspriority:p2Medium: important, M3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions