init-js-components — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited init-js-components (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Read @.ai/Component/Javascript/CONTEXT.md for the full component list and initialization pattern.
window.prestashop.component.initComponents([
'TranslatableInput',
'TinyMCEEditor',
]);window.prestashop.componentinitComponents creates instances and stores them in window.prestashop.instancedata-* attributesFor multilingual fields. The Symfony TranslatableType renders the DOM with proper data-* attributes; this component adds the language tab switching UI.
For rich text fields (FormattedTextareaType). Initializes the WYSIWYG editor on matching textareas.
For hierarchical selectors (categories, groups). Call .enableAutoCheckChildren() if parent selection should auto-select children.
new window.prestashop.component.ChoiceTree('#category-tree-selector').enableAutoCheckChildren();For tag inputs with autocomplete. Used with TaggableType form type.
For autocomplete search fields that reference other entities (e.g. search for a product by name).
For fields auto-generated from another (e.g. URL slug from name). Uses TextToLinkRewriteCopier pattern.
For multistore-scoped configuration fields. Shows per-shop override controls.
For conditional field visibility — shows/hides fields based on another field's value.
| Component | Purpose |
|---|---|
TranslatableField / TranslatableInput | Multilingual input with language tabs |
TinyMCEEditor | Rich text editor |
TaggableField | Tag input with autocomplete |
ChoiceTable / MultipleChoiceTable | Checkbox/radio table selection |
ChoiceTree | Hierarchical tree selector (categories, groups) |
EntitySearchInput | Autocomplete entity search |
GeneratableInput | Auto-generate from another field (e.g. slug from name) |
ColorPicker | Color selection input |
DateRange | Date range picker |
DeltaQuantityInput | Quantity change input (stock) |
DisablingSwitch | Toggle that disables related fields |
FormFieldToggler | Show/hide fields based on another field's value |
TextWithLengthCounter / TextWithRecommendedLengthCounter | Character count display |
CountryStateSelectionToggler / CountryDniRequiredToggler | Country-dependent field logic |
MultistoreConfigField | Multistore-scoped config field |
ModifyAllShopsCheckbox | "Apply to all shops" checkbox |
PreviewOpener | Preview popup |
Grid | Grid component (see grid extensions) |
Router | FOS JS router integration |
EventEmitter | Cross-component event communication |
IframeClient | Iframe communication |
Pass only the names the page actually needs to initComponents([...]) — don't load the whole catalogue.
Some components can be instantiated directly for more control:
const choiceTree = new window.prestashop.component.ChoiceTree(selector);
choiceTree.enableAutoCheckChildren();Modules can register custom components:
EventEmitter.on('PSComponentsInitiated', () => {
window.prestashop.component.MyCustomComponent = MyCustomComponent;
});Conventions (jQuery ready pattern, direct instantiation, EventEmitter module registration) are in Javascript/CONTEXT.md. Skill-specific reminders:
data-* attributes rendered by Symfony form types — they are not standaloneinitComponents is called once at page load — no need to call it again after DOM changes~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.