Out-of-scope by-product of the skills optimization flight on #14315 (audit id I18N-A-03). That card's ruling deferred it and routed it to the flight's PR body as a follow-up, because the edit lands in skills/README.md — outside the flight's file surface (skills/objectstack-i18n/SKILL.md only, plus generator output). It is recorded in that PR body as ruled; this card exists so the follow-up has a tracked home rather than living only in prose that merges and disappears. Filed unassigned. No edit was made.
Measured (audit ref a59f78d; re-checked on origin/main 53d3689)
The load-failure mode is on the package's number-one real task. Measured usage of translated object/field labels: 3 example apps, 40 fields: blocks, 37 pluralLabel: entries, 23 select-option label maps.
grep -rn "objectstack-i18n|translat" skills/*/SKILL.md, excluding the package itself:
skills/objectstack-ui/SKILL.md — zero occurrences of translat.
skills/objectstack-data/SKILL.md — one passing mention.
skills/README.md "Cross-skill routing" lists 4 decision points; none is about labels vs bundles.
So an agent authoring a *.view.ts or *.object.ts and writing a label never learns this package exists. It writes the English label inline and stops — which is not an error any gate reports, because an untranslated label is a perfectly valid object.
Note on direction
The flight on #14315 changed the objectstack-i18n frontmatter description so it triggers on the tasks its body actually teaches (the translation metadata item, and a package shipping its own generated bundle). That helps an agent that has already decided it is doing i18n work. It does not help the agent that does not know the domain applies — which is what a routing bullet in the catalog README is for. The two are complements, not substitutes.
Suggested shape, for triage rather than as a decision: one bullet in the cross-skill routing list, sending "authoring a label / plural label / option label you want translated" from the data and ui packages to objectstack-i18n.
⚠️ Budget: the maintainer's 2026-08-21 ruling on published skills applies — 「对外发布的 skills 是整个平台的最大价值,尤其要整体考虑和评估。」「……不能为了一个小功能扩写很多。」 The audit costed this at roughly +25 tokens in a sibling file. It should stay that size.
Out-of-scope by-product of the skills optimization flight on #14315 (audit id I18N-A-03). That card's ruling deferred it and routed it to the flight's PR body as a follow-up, because the edit lands in
skills/README.md— outside the flight's file surface (skills/objectstack-i18n/SKILL.mdonly, plus generator output). It is recorded in that PR body as ruled; this card exists so the follow-up has a tracked home rather than living only in prose that merges and disappears. Filed unassigned. No edit was made.Measured (audit ref
a59f78d; re-checked onorigin/main53d3689)The load-failure mode is on the package's number-one real task. Measured usage of translated object/field labels: 3 example apps, 40
fields:blocks, 37pluralLabel:entries, 23 select-option label maps.grep -rn "objectstack-i18n|translat" skills/*/SKILL.md, excluding the package itself:skills/objectstack-ui/SKILL.md— zero occurrences oftranslat.skills/objectstack-data/SKILL.md— one passing mention.skills/README.md"Cross-skill routing" lists 4 decision points; none is about labels vs bundles.So an agent authoring a
*.view.tsor*.object.tsand writing alabelnever learns this package exists. It writes the English label inline and stops — which is not an error any gate reports, because an untranslated label is a perfectly valid object.Note on direction
The flight on #14315 changed the
objectstack-i18nfrontmatter description so it triggers on the tasks its body actually teaches (thetranslationmetadata item, and a package shipping its own generated bundle). That helps an agent that has already decided it is doing i18n work. It does not help the agent that does not know the domain applies — which is what a routing bullet in the catalog README is for. The two are complements, not substitutes.Suggested shape, for triage rather than as a decision: one bullet in the cross-skill routing list, sending "authoring a label / plural label / option label you want translated" from the data and ui packages to
objectstack-i18n.