chameleon-controls-library — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited chameleon-controls-library (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.
Build UIs with Chameleon web components. This skill covers component selection, structure, wiring, usage, and styling of individual components. For Design System-level patterns (tokens, class naming, theme architecture), use the design-system-builder skill
The workflow is a sequence of phases. Depending on the task, you can enter at any phase, skip phases that don't apply, and jump back to earlier phases to fix issues. Phases A and B always run in parallel at the start
┌─────────────────────────────────────────────────────────────┐
│ [Entry Point] │
│ │ │
│ ┌─────────────┼─────────────┐ │
│ ▼ ▼ │
│ A: Gain Context B: Installation │
│ └─────────────┬─────────────┘ │
│ ▼ │
│ C: Understand the UI │
│ ┌──────┬───────┬───────┬──────┐ │
│ C1 C2 C3 C4 C5 │
│ Figma Image Text Migration Audit─────┐ │
│ └──────┴───────┴───────┘ │ │
│ │ │ │
│ ▼ │ │
│ D: Component Selection │ │
│ │ │ │
│ ▼ │ │
│ E: Understand Component APIs │ │
│ │ │ │
│ ▼ │ │
│ F: Styling Strategy │ │
│ │ │ │
│ ▼ │ │
│ G: Code Implementation │ │
│ │ │ │
│ ▼ │ │
│ H: Audit ◄──────────────────────┘ │
│ │ ▲ │
│ │ │ fix issues │
│ │ └──────┘ │
│ ▼ │
│ [Done] │
└─────────────────────────────────────────────────────────────┘Detect before writing any code:
ch-theme, getBundles, DS CSS filesThis is observational — no reference files needed
Read Installation guide. Verify Chameleon is installed and configured for the detected framework. If not installed, follow the guide
Do not proceed to Phase C until installation is confirmed
Choose the sub-entry that matches the task. All sub-entries converge on the same output: a semantic understanding of each UI element — what it is, how it's used, how keyboard users reach it, and how elements interact
#### C1: From Figma
Analyze Figma frames. Identify visual elements and their semantic roles (navigation, data entry, data display, action triggers, feedback, etc.)
#### C2: From an image
Analyze the visual. Map each visible element to its semantic purpose. Identify layout structure, component boundaries, and interactive elements
#### C3: From text, audio, or description
Parse the user's description. Identify the UI elements described, their relationships, and the interactions expected
#### C4: Migration from existing UI
Analyze the current implementation. Map existing HTML elements and third-party components to Chameleon equivalents. Identify what can be replaced 1:1 and what requires restructuring
#### C5: Audit only
Skip directly to Phase H
Read Components index. For every UI element identified in Phase C, look up the matching component:
<select>, <input>, etc.) is chosen instead of a Chameleon component, state the explicit reason before proceedingWhen a component does not exist in Chameleon:
<button> or <a> — use native HTML elements for buttons and links. When a Design System is active, apply its CSS classesIcons and images:
<img> with alt) vs decorative (CSS, ch-image), mask-image for themeable icons, startImgSrc/endImgSrc for component item modelsgetImagePathCallback once instead of per-instanceFor each selected component, Read its documentation in order:
references/components/{component}/README.md — Properties, events, methods, slots, dependenciesreferences/components/{component}/usage.md — Usage examples, patterns, do's and don'tsFor TypeScript types used in properties and events, consult the Types index
Follow this decision tree to determine how to style each component:
Has a Design System built on Chameleon?
├─ YES → Check the DS component guide for this component
│ ├─ Guide exists → Use it (DS handles classes, tokens, ::part())
│ └─ Guide missing → Is design-system-builder skill available?
│ ├─ YES → Use it to create the component's DS styles
│ └─ NO → Read the component's styling.md (see below)
│
└─ NO → Is design-system-builder skill available?
├─ YES → Use it to scaffold a Design System
└─ NO → Read the component's styling.md (see below)When using component styling directly:
references/components/{component}/styling.md — Shadow parts, CSS custom properties, shadow DOM layout, styling recipes, anti-patterns::part() rules, state parts pattern, exportparts, limitationsBuild the UI with Chameleon components (ch-*), applying the properties, events, styles, icons, and patterns determined in prior phases
<button> and <a> for buttons and links — Chameleon does not wrap theseVerify the implementation against this checklist. This phase is also the direct entry point from C5 (audit-only mode)
ch-* tag used exists in the library (cross-reference Components index)README.md. No guessed or assumed API names::part() selectors reference parts that exist in the component's styling.md. All CSS custom properties used are documented. If a DS is active, verify classes match the DS documentationusage.md and styling.mdChameleon provides 58 components across 11 categories. It intentionally does not wrap every HTML element — buttons (<button>) and links (<a>) use native HTML with Design System CSS classes
For the complete catalog with descriptions, use cases, and anti-patterns for every component, consult the Components index
Categories at a glance:
| Category | Count | Key components |
|---|---|---|
| Layout | 4 | ch-theme, ch-flexible-layout-render, ch-layout-splitter, ch-sidebar |
| Forms | 9 | ch-edit, ch-checkbox, ch-combo-box-render, ch-radio-group-render, ch-slider, ch-switch, ch-color-picker, ch-color-field, ch-rating |
| Data Display | 8 | ch-accordion-render, ch-action-list-render, ch-action-menu-render, ch-tree-view-render, ch-tab-render, ch-segmented-control-render, ch-navigation-list-render, ch-action-group-render |
| Overlays | 3 | ch-dialog, ch-tooltip, ch-popover |
| Content | 5 | ch-markdown-viewer, ch-code, ch-math-viewer, ch-image, ch-textblock |
| Grid / Tabular | 18 | ch-tabular-grid + 14 subcomponents, ch-smart-grid, ch-virtual-scroller, ch-tabular-grid-render |
| Editors | 2 | ch-code-editor, ch-code-diff-editor |
| Feedback & Loading | 2 | ch-progress, ch-status |
| Chat & Real-time | 2 | ch-chat, ch-live-kit-room |
| Pagination | 1 | ch-paginator-render |
| Utilities | 4 | ch-qr, ch-barcode-scanner, ch-intersection-observer, ch-shortcuts |
<label> elements linked via for/id over the accessible-name property — labels are visible and provide better UX. Chameleon form components support ElementInternals, so a <label for="X"> with a matching id="X" on the component works natively. Use accessible-name only when a visible label is not possible (e.g., icon-only controls). Use close-button-accessible-name on dialogs. See Accessibilitych-virtual-scroller, ch-tabular-grid-virtual-scroller). Lazy-load heavy components (ch-code-editor, ch-code-diff-editor, ch-math-viewer, ch-chat). See Performance<select>, <input>, or another native element is chosen instead of a Chameleon component, explain why before proceedingFramework-specific setup:
| Topic | Reference |
|---|---|
| Components catalog | references/components-index.md |
| Icons & Images | references/icons-and-images.md |
| Registry Property System | references/registry.md |
| Types index | references/types-index.md |
| CSS Shadow Parts Guide | references/css-shadow-parts-guide.md |
| Shadow DOM Layout Syntax | references/layout-syntax.md |
| Accessibility | references/best-practices/accessibility.md |
| Performance | references/best-practices/performance.md |
| SEO | references/best-practices/seo.md |
| Examples | references/examples.md |
| Installation | references/installation/README.md |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.