Filed out-of-scope by the flight-⑧ sweep of skills/objectstack-i18n/** (#13815 / #13658), which corrected the same false sentence in the published skill. This is the upstream twin: fixing only the skill leaves the CLI's own --help teaching the same thing, and --help is what a user reads at the moment they run the command.
The claim
packages/cli/src/commands/i18n/check.ts:
staticoverridedescription='Detect missing translation keys (object/field/option/view/action labels) across all configured locales';
What it actually reports
CoverageIssue.source in packages/cli/src/utils/i18n-coverage.ts is a 14-member union:
object · field · option · section · view · action · globalAction · app ·
navigation · dashboard · widget · page · flow · metadataForm
and computeI18nCoverage passes key.source straight through from collectExpectedEntries, so every one of those reaches the report. Measured by driving the real walker and detector over a small fixture (one object, one app, one dashboard, one page with a filter-preset tab, one screen flow, one global action):
=== os i18n check reported source kinds ===
action, app, dashboard, field, globalAction, metadataForm, navigation,
object, option, page, view, widget (12 kinds, one fixture)
totals: expectedKeys 783, issues 783
The parenthetical names 5 of the 14. The nine it omits are not edge cases — metadataForm alone was 769 of the 783 issues on that fixture, and app / navigation / dashboard / widget / page / flow / globalAction / section are all surfaces a real app has.
Why it matters beyond tidiness
The under-count reads as a scoping statement, and it is the reason a reader reaches for a second tool: someone who wants app navigation or dashboard widgets checked is told by --help that this command does objects and fields, so they conclude the gate does not cover them and either skip the check or go looking for one that does. The capability is shipped and hidden by its own description — the "deader-than-real" direction the sweep programme (#13658, comment 5475032239 item 2) measured as the majority direction.
Suggested fix
Restate the description in terms of the surface set rather than a five-item sample, e.g. "Detect missing translation keys across every translatable surface (objects and their fields, options, views, sections, tabs, actions and params; global actions, apps, navigation, dashboards, widgets, pages, flow screens, metadata forms) for all configured locales" — or, if that is too long for a one-line oclif description, drop the parenthetical entirely rather than keep a sample that reads as a boundary.
Worth considering in the same pass: deriving the phrase from the CoverageIssue.source union so the two cannot drift again. That is the mechanism half; the wording fix stands on its own without it.
os i18n extract's description was checked in the same pass and is accurate.
Generated by Claude Code
Filed out-of-scope by the flight-⑧ sweep of
skills/objectstack-i18n/**(#13815 / #13658), which corrected the same false sentence in the published skill. This is the upstream twin: fixing only the skill leaves the CLI's own--helpteaching the same thing, and--helpis what a user reads at the moment they run the command.The claim
packages/cli/src/commands/i18n/check.ts:What it actually reports
CoverageIssue.sourceinpackages/cli/src/utils/i18n-coverage.tsis a 14-member union:and
computeI18nCoveragepasseskey.sourcestraight through fromcollectExpectedEntries, so every one of those reaches the report. Measured by driving the real walker and detector over a small fixture (one object, one app, one dashboard, one page with a filter-preset tab, one screen flow, one global action):The parenthetical names 5 of the 14. The nine it omits are not edge cases —
metadataFormalone was 769 of the 783 issues on that fixture, andapp/navigation/dashboard/widget/page/flow/globalAction/sectionare all surfaces a real app has.Why it matters beyond tidiness
The under-count reads as a scoping statement, and it is the reason a reader reaches for a second tool: someone who wants app navigation or dashboard widgets checked is told by
--helpthat this command does objects and fields, so they conclude the gate does not cover them and either skip the check or go looking for one that does. The capability is shipped and hidden by its own description — the "deader-than-real" direction the sweep programme (#13658, comment 5475032239 item 2) measured as the majority direction.Suggested fix
Restate the description in terms of the surface set rather than a five-item sample, e.g. "Detect missing translation keys across every translatable surface (objects and their fields, options, views, sections, tabs, actions and params; global actions, apps, navigation, dashboards, widgets, pages, flow screens, metadata forms) for all configured locales" — or, if that is too long for a one-line oclif description, drop the parenthetical entirely rather than keep a sample that reads as a boundary.
Worth considering in the same pass: deriving the phrase from the
CoverageIssue.sourceunion so the two cannot drift again. That is the mechanism half; the wording fix stands on its own without it.os i18n extract's description was checked in the same pass and is accurate.Generated by Claude Code