A standard for agent-ready design systems Text and diagrams CC BY 4.0
← The Index
System 6 of 10
Siemens AG, Germany · Stencil web components
Pinned 2026-09-09

Siemens iX.

Siemens iX documents itself thoroughly, and ships context files and skills for an agent to read before touching the code. That documentation does not reach the code that consumes the system: across the framework test apps, a raw HTML element replaces a system component every time a substitute exists, and dozens of local names collide with ones iX already ships. Measured at packages/core.

1Scores

What the instrument measured.

5Single source · substantial332 distinct token(s) across 35 sources; 19% of colour/size references in system source resolve to a token; dark-mode handling is generated.
10Legibility · systematic197 of the 200 components found in system source carry documentation in some form (a head comment, a colocated doc artifact, or a docs/ entry). Scored from what is in the repository. Documentation held outside it (e.g. Confluence, Notion, Figma) cannot be detected and is neither credited nor penalised.
3Adherence · partial1083 of 1920 application file(s) gated against the design system's own contract; 0.9% of style declarations resolve to a token.
6Mean of 3of measured
Constraintnot computed by this instrument: scoring it requires parsing component APIs per framework, which is done in the deep audit of a single system rather than across a field
Fidelitynot computed by this instrument: scoring it requires parsing component APIs per framework, which is done in the deep audit of a single system rather than across a field
Completenessrequires a live agent run: a gap only exists relative to something someone tried to build
Trial · informed / cold7 / 7 completeness
5 / 2 legibility
5 / 3 constraint
8 / 5 interaction
2What the instrument read

Measured against a pinned commit.

Repository
siemens/ix
Revision
71992eee52e7, committed 2026-09-08
System directory
packages/core (@siemens/ix)
Components found
200, of which 197 carry documentation and 1 have a colocated doc artifact
Agent context
2 context files, 4 skills
Tokens
332 distinct, across 35 sources (35 authored); dark mode generated
Adherence surface
1,920 files outside the system, graded own-docs-site: packages/documentation and the framework test apps.
3Findings

What the counts point at.

Each finding carries its count, its severity and up to three file references. A finding on a property that was not banded is still a finding; it is reported without a score.

Single source5
47 hardcoded colour and size values in component sourcemajor

The design system's own component source hardcodes colour and size values instead of referencing its own tokens. This happens in 47 of 58 total colour/size references in system source (81%), so an agent copying that file as a pattern copies the hardcoding along with it.

  • packages/core/src/components/pane/pane.tsx:81 240px
  • packages/core/src/components/progress-indicator/circular.tsx:75 3px
  • packages/core/src/components/menu/menu.tsx:673 1rem
35 separate places tokens are declaredmajor

Design tokens are declared in more than one place in this repository's own authored source, so a value changed in one must be kept in agreement with the others by hand.

  • packages/core/scss/tokens/_system.scss sass, 210 token(s)
  • packages/ionic-test-app/src/theme/variables.css css, 48 token(s)
  • packages/core/scss/tokens/_legacy.scss sass, 34 token(s)
Legibility10
3 undocumented componentsmajor

Some components carry no documentation an agent could find. That is 3 of the 200 components found in system source, with no head comment on their own source, no colocated doc artifact matching their name, and no docs/ entry, so an agent must reverse-engineer their contract from implementation alone.

  • packages/core/src/components/utils/animation.ts
  • packages/core/READMEOSS.html
  • packages/core/src/index.html
Adherence3
278 hardcoded colour valuesmajor

The application hardcodes colour values instead of using the design system's own tokens, so an agent editing nearby code has no signal that a token exists and will likely repeat the pattern.

  • packages/echarts/src/themes/classic-light.ts:11 #000000
  • packages/echarts/src/themes/classic-dark.ts:11 #ffffff
  • packages/echarts/src/themes/brand-dark.ts:11 #ffffff
60 components that duplicate one the system already shipscritical

The application defines its own component under the same name as one the design system already ships. This happens for 60 of the 178 component names the design system exports, so an agent importing that name by convention can silently get the wrong implementation.

  • packages/angular-standalone-test-app/src/preview-examples/avatar.ts:18 Avatar
  • packages/angular-standalone-test-app/src/preview-examples/badge.ts:21 Badge
  • packages/angular-standalone-test-app/src/preview-examples/blind-header-actions.ts:47 Blind
30 raw HTML elements used where a system component existsmajor

Some screens render a raw HTML element in place of the system component built for it. This happens in 30 of 30 total uses of a replaceable element (100%), so its styling and behaviour can drift independently of the system.

  • packages/react-test-app/src/preview-examples/custom-field-validation.tsx:25 <input>
  • packages/react-test-app/src/preview-examples/input.tsx:63 <input>
  • packages/react-test-app/src/preview-examples/key-value-list-with-custom-value.tsx:16 <input>
4The trial

Built twice: cold, then informed.

Set up from its own documentation, in full, with every step that could not be followed recorded. Draw 1 of 3, judged; draws 2 and 3 pending.

Cold arm, draw 123 min · 14 files read · completed
siemens-ix-cold-r1 at 1280px
1280px
siemens-ix-cold-r1 at 390px
390px
3Constraint
2Legibility
7Completeness
5Interaction
Informed arm, draw 122 min · 11 files read · completed
siemens-ix-informed-r1 at 1280px
1280px
siemens-ix-informed-r1 at 390px
390px
5Constraint
5Legibility
7Completeness
8Interaction

What setting it up found

material

The published package's README is four lines long and contains no setup instructions at all: it states the library is part of a mono repository and links to the repository root README. No install command, no registration call, no stylesheet path, no theme guidance.

Handling: Wiring was derived from the package's own exports map (./loader, ./dist/siemens-ix/siemens-ix.css, ./dist/siemens-ix/theme/*.css) plus Stencil's standard defineCustomElements registration. No documented step was skipped, because the package documents no steps.

informational

Both a light and a dark theme stylesheet are published (classic-light.css, classic-dark.css) with no documentation of which is default or how to switch.

Handling: Chose classic-dark and set the matching theme-classic-dark class on <html>. Recorded because the choice was ours, not the system's, and because three other systems in this field document light-only setups.

Screens generated

ArmDrawDateDurationFiles readOutcome
cold12026-08-1423 min14completed
informed12026-08-1422 min11completed

Model: claude-opus-4-8. Generated under GitHub Actions isolation, the agent's own environment, with the frozen task text and no interaction. Files read is the number of repository files the agent opened, from its own transcript.

Cold arm, draw 1 · the working

1Constraint in practiceSet by the volume reading. Kinds: 3, violations of two kinds (4 hardcoded colours, 68 hardcoded dimensions). Volume: 1, 72 in total. The worse of the two is the score.
2Legibility in practiceRead the component type definitions (ix-toggle, ix-radio-group, ix-select, ix-time-input, ix-message-bar) and the theme variables; never the README (four lines) or docs.
7CompletenessTime range and timezone: 10. ix-time-input and ix-select; the system anticipated the gap. Usage meter: 4. A custom role=progressbar bar with the system's colour variables and an ix-message-bar; composed, silent.
5Interaction5 of 10 checklist items observed.
Counted
4 hardcoded colours, 68 hardcoded dimensions, 0 raw elements where a component exists, 18 uses of the system's components, 0 foreign UI imports, 0 invented names.
Read
0 documentation reads, 34 reads of the package's source or types; went looking for documentation unprompted: no.
Checklist
I1 yes · I2 no · I3 yes · I4 yes · I5 no · I6 yes · I7 no · I8 no · I9 yes · I10 noI2: bundling choice is exclusive, not observed (probe: no exclusive control found). I5: unsaved changes indicated, not observed (probe: changed a control; unsaved wording did not appear). I7: success and failure each communicated, not observed (probe: success wording seen; failure wording not seen (demo control "Fail next save")). I8: loading and load failure render, not observed (probe: loading state seen at first paint; load-failure state not rendered under the query spellings tried). I10: every control keyboard reachable, not observed (probe tab walk: 13 toggles, 0 time inputs, 1 selects reached, save not reached, focus visible on 100%)
Composition
Six no's: conforms. Dark theme, groups on the system's surface, a three-up grid of category fieldsets leaving one orphan below (a grid rule of thumb, not a contract rule). Descriptions render in a serif fallback. Demo controls with ground around them.

Informed arm, draw 1 · the working

3Constraint in practiceSet by the volume reading. Kinds: 5, violations of one kind (11 hardcoded dimensions). Volume: 3, eleven to twenty in total. The worse of the two is the score.
5Legibility in practiceOpened the README, which is four lines and documents nothing, then built from the type definitions and the theme's variables. Partly follows what documentation there is; reservation: the documentation could not be followed further than it goes.
7CompletenessTime range and timezone: 10. ix-time-input and ix-select. Anticipated. Usage meter: 4. A custom role=progressbar with the system's variables and an ix-message-bar warning; composed, silent.
8Interaction8 of 10 checklist items observed.
Counted
0 hardcoded colours, 11 hardcoded dimensions, 0 raw elements where a component exists, 20 uses of the system's components, 0 foreign UI imports, 0 invented names.
Read
0 documentation reads, 40 reads of the package's source or types.
Checklist
I1 yes · I2 no · I3 yes · I4 yes · I5 yes · I6 yes · I7 yes · I8 yes · I9 yes · I10 noI2: bundling choice is exclusive, not observed (probe: no exclusive control found). I10: every control keyboard reachable, not observed (probe tab walk: 13 toggles, 0 time inputs, 1 selects reached, save not reached, focus visible on 100%)
Composition
Six no's: conforms. Dark theme, four cards, a table matrix, inset, a sticky save bar. Clean.

Judged 2026-09-09 by an agent under authorisation; a second read is pending. Constraint from the counts, banded twice, on how many kinds of the system's rules the output broke and on how many times it broke them, with the worse of the two published (deviation of 2026-09-10). Legibility and completeness from the transcript and the source, interaction from the ten-item checklist, composition from the six contract questions. Hover a checklist item for its observation.

5Reproduce it

Clone the repository at the revision above, point the instrument at the system directory, and the same numbers come out. The field manifest, the run script and the full payload this page was built from are committed beside it. Methods.