chore(skill): close create-core-component gaps surfaced by Date Input#1898
Merged
Conversation
Update the create-core-component skill so the defects found while building and reviewing the Date Input component (PR #1881) can't recur: - runtime-view-js.md (new): the FormFieldBase override contract — call super on update* handlers, updateEmptyStatus() in overridden updateValue, and the composite/split-widget rules (hidden combined input, name only on combined, don't repopulate a focused sub-input) - cypress-tests.md (new): required runtime + authoring specs, IT content, formsConstants entry and runtime-all embed, plus the hidden-input visibility and chained should('(not.)have.attr') gotchas - accessibility-checklist.md: rewrite the misleading "JS View Methods" table to require super; document the broken aria-labelledby (label template emits no id) - component-anatomy.md: add Cypress specs, _cq_styleConfig, runtime-all embed and formsConstants to the checklist; fix the IT path and .less -> .css; add the composite-widget base-class category - SKILL.md: HTL i18n / no-name-on-sub-inputs / BEM-modifier-needs-CSS notes, editor-JS textContent + format-string rules, a Cypress runtime-verification phase, and new Critical Rules - validate_component.py: new checks for the override contract, editor-JS innerHTML, BEM modifiers without CSS, empty design dialogs, and Cypress spec/wiring existence + gotcha lints Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
armaang1729
reviewed
Jun 9, 2026
armaang1729
left a comment
Collaborator
There was a problem hiding this comment.
LGTM, Thanks for updating these skills.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Closes gaps in the
create-core-componentskill that were surfaced while building and reviewing the Date Input component (PR #1881). Every defect found in that component traced back to a missing or actively-misleading instruction in the skill — this PR updates the skill (workflow, references, validator) so future components don't repeat them.Gaps identified & addressed
1. Runtime view-JS override contract was missing / wrong (root cause of most runtime bugs)
updateValidity/updateEnabled/updateReadOnlyto only set ARIA/disabled, with no mention of callingsuper— which silently drops the base behaviour (data-cmp-*attributes, error-message rendering,--filled/--empty).references/runtime-view-js.mddocumenting the fullFormFieldBaseoverride contract: callsuper.<handler>(value, state)first; an overriddenupdateValuemust callupdateEmptyStatus();setModelValueis not echoed back to the originating field.2. No guidance for composite / split widgets
2024→024) and stray submitted sub-field params came from having no pattern for multi-input widgets.name; never putnameon visible sub-inputs; never repopulate a sub-input the user is actively editing.3. Cypress tests were entirely absent from the skill
references/cypress-tests.md(required runtime + authoring specs, IT content,formsConstants.jsentry, runtime-all embed) plus the two Cypress gotchas: hidden inputs failbe.visible; chainedshould('(not.)have.attr')breaks because the first yields the attribute value.4. Broken
aria-labelledbypatternid, soaria-labelledby="...__label"references a non-existent element. Documented; grouped widgets must usearia-label.5. BEM modifier classes with no CSS
hideTitleDateshipped a--hiddenclass that had no styling (dead feature). Added the rule: every emitted modifier must have a matching CSS rule; never ship an empty design dialog.6. Editor-JS safety & i18n
textContentnotinnerHTML; don't wrap locale-neutral format strings inGranite.I18n.get; wrap hard-coded default UI text with@ i18n.7. Incomplete/incorrect file checklist (
component-anatomy.md)_cq_styleConfig, the runtime-all embed and theformsConstants.jsentry; had the wrong IT-content path and listed.lessinstead of.css. Corrected.8. Validator (
scripts/validate_component.py) extended with 4 new check categoriessuperonupdate*,updateEmptyStatusinupdateValue)innerHTMLusageformsConstantsentry / runtime-all embed existence + Cypress-gotcha lintsTypes of changes