agentleFS
siemenssiemens/ix/AGENTS.md

ix

AGENTS.md390 starsChanged 35 days agoMITView on GitHub

SPDX-License-Identifier: MIT --> This guide is for humans and AI agents developing inside the Siemens IX monorepo. Use these resources together (in this order when conflicts appear): Targeted commands:

  • Installs packages
  • Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.

    Of the AGENTS.md files we read, the 31,700 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.

  • In this repository7 other files it gives its agents.

The file

Show its rules and text

We split this AGENTS.md into the rules it gives an agent

43 rules. About 1 is common, 27 are distinctive, and 15 are very specific to this project.

  • ≈1

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈27

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 15

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  • could be automatic: a setting could enforce it
  1. Distinctive:

    Use the smallest targeted validation that proves the change, then escalate only when needed.

    line 16
  2. Distinctive:

    Prefer explicit, type-safe fixes over broad fallbacks, silent returns, or catch-all error handling.

    line 17
  3. Distinctive:

    Update tests, documentation, examples, and changesets whenever the user-facing behavior, API, styling, accessibility, or package output …

    line 18
  4. Distinctive:

    Use these resources together (in this order when conflicts appear):

    line 22
  5. Distinctive:

    Do not hand-edit generated proxy files (look for auto-generated comments).

    line 33
  6. Very specific:

    Use the package manager declared in package.json.

    line 38
  7. Very specific:

    Use the Node.js version declared in engines.node of package.json.

    line 39
  8. Distinctive:

    Do not introduce new package managers, lockfiles, formatters, linters, or test runners.

    line 41
  9. Very specific:

    Add dependencies only when they are required for the implementation, and keep workspace dependencies as workspace:* where applicable.

    line 42
  10. Very specific:

    Prefer changing packages/core first for component behavior, API, styling, accessibility, and docs metadata.

    line 46
  11. Very specific:

    Keep component structure consistent: <component>.tsx, <component>.scss, tests in test/.

    line 47
  12. Distinctive:

    Use SPDX headers for new source files.

    line 48
  13. Distinctive:

    Use design tokens/CSS custom properties instead of hard-coded theme values.

    line 49
  14. Distinctive:

    Keep accessibility parity across frameworks.

    line 50
  15. Distinctive:

    Avoid arbitrary waits, global side effects, and behavior changes that are not explicitly required.

    line 52
  16. Very specific:

    Run visual regression (after build): pnpm visual-regression

    line 79
  17. Distinctive:

    Use core component tests for component behavior, interaction, keyboard handling, accessibility, slots, events, and state changes.

    line 89
  18. Distinctive:

    Add or update unit tests for pure logic changes, component tests for interaction/accessibility changes, and visual tests only for …

    line 91
  19. Very specific:

    Prefer Playwright accessibility locators (getByRole, getByLabel, getByText, accessible name/description assertions) for user-facing …

    line 92
  20. Distinctive:

    Prefer deterministic waits over implementation-detail selectors and timeouts.

    line 93
  21. Very specific:

    Use component tests in packages/core for exhaustive behavior coverage, and visual regression only to protect layout, theme, density, color, …

    line 101
  22. Very specific:

    If a change requires user-facing documentation updates, call out the needed siemens/ix-docs follow-up in the PR.

    line 108
  23. Distinctive:

    Keep docs and examples aligned across Web Components, Angular, React, and Vue when the behavior is framework-visible.

    line 109
  24. Distinctive:

    Do not document generated implementation details as public API.

    line 110
  25. Distinctive:

    Ensure examples use supported imports, current component names, and realistic consumer code.

    line 111
  26. Distinctive:

    If a change is internal-only, state that clearly in PR description/review context.

    line 117
  27. Very specific:

    Use patch for bug fixes and compatible styling/accessibility fixes, minor for new backwards-compatible APIs/features, and major for …

    line 120
  28. Distinctive:

    Keep changeset summaries consumer-focused: describe what changed and why it matters, not internal implementation details.

    line 121
  29. Distinctive:

    Call out generated files, migration notes, and release impact when relevant.

    line 129
  30. Very specific:

    Use regressionTest from @utils/test (not plain Playwright test).

    line 133
  31. Very specific:

    Prefer accessibility locators (getByRole, getByLabel, getByText) when elements expose roles/names.

    line 134
  32. Distinctive:

    Use Playwright locators (including for Shadow DOM assertions).

    line 135
  33. Very specific:

    Avoid arbitrary timeouts (waitForTimeout).

    line 136
  34. Very specific:

    Do not report security issues publicly in GitHub issues.

    line 141
  35. Distinctive:

    Keep changes scoped and package-aware.

    line 142
  36. Distinctive:

    Do not edit unrelated files while implementing a focused change.

    line 143
  37. Common:

    Never commit secrets, credentials, private tokens, local environment files, or machine-specific paths.

    line 144
  38. Distinctive:

    Treat public APIs, accessibility behavior, theming tokens, and generated package output as consumer contracts.

    line 145
  39. Distinctive:

    Do not add telemetry, network calls, or dependency downloads without a clear project-approved reason.

    line 146
  40. Distinctive:

    Update tests, examples, docs, and generated inputs as needed.

    line 153
  41. Very specific:

    Run the smallest meaningful build/test/lint commands.

    line 154
  42. Distinctive:

    Add/update a changeset if the change is user-facing.

    line 155
  43. Distinctive:

    Ensure PR summary includes impact, linked requirement, validation, affected packages, and migration notes if breaking.

    line 156

≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
AGENTS.md
<!-- SPDX-FileCopyrightText: 2026 Siemens AG SPDX-License-Identifier: MIT -->

AGENTS.md

This guide is for humans and AI agents developing inside the Siemens IX monorepo.

Agent operating principles

  • Act as a senior maintainer: inspect existing patterns before changing code, keep changes scoped, and prefer correctness over speed.
  • Change source files, not generated artifacts. If generated output is affected, update the source and run the appropriate build/generation step.
  • Preserve unrelated user or maintainer changes in the working tree. Do not revert, reformat, or rewrite files outside the requested scope.
  • Use the smallest targeted validation that proves the change, then escalate only when needed.
  • Prefer explicit, type-safe fixes over broad fallbacks, silent returns, or catch-all error handling.
  • Update tests, documentation, examples, and changesets whenever the user-facing behavior, API, styling, accessibility, or package output changes.

Source of truth and precedence

Use these resources together (in this order when conflicts appear):

  1. CONTRIBUTING.md
  2. ARCHITECTURE.md
  3. .github/copilot-instructions.md
  4. .github/instructions/*.instructions.md

Repository architecture (must-know)

  • packages/core is the source of truth (Stencil Web Components).
  • packages/react, packages/angular, packages/vue are wrapper packages generated from Stencil output targets.
  • Do not hand-edit generated proxy files (look for auto-generated comments).
  • Theme integrations for third-party libraries live in packages/aggrid and packages/echarts.

Environment and package manager

  • Use the package manager declared in package.json.
  • Use the Node.js version declared in engines.node of package.json.
  • Install dependencies from the repository root with pnpm install.
  • Do not introduce new package managers, lockfiles, formatters, linters, or test runners.
  • Add dependencies only when they are required for the implementation, and keep workspace dependencies as workspace:* where applicable.

Development rules

  • Prefer changing packages/core first for component behavior, API, styling, accessibility, and docs metadata.
  • Keep component structure consistent: <component>.tsx, <component>.scss, tests in test/.
  • Use SPDX headers for new source files.
  • Use design tokens/CSS custom properties instead of hard-coded theme values.
  • Keep accessibility parity across frameworks.
  • Reuse existing helpers, utilities, tokens, test fixtures, and component patterns before adding new abstractions.
  • Avoid arbitrary waits, global side effects, and behavior changes that are not explicitly required.
  • For breaking changes, provide migration guidance and update BREAKING_CHANGES.md.

Package-specific guidance

Package areaEdit guidance
packages/coreSource of truth for Web Components, styles, accessibility, docs metadata, and generated wrapper input.
packages/react, packages/angular, packages/vueDo not edit generated proxy files. Only edit deliberate hand-written helpers, examples, or package-specific integration code.
packages/aggrid, packages/echartsKeep integrations aligned with IX design tokens and theme classes. Validate visual/theming impact.
packages/documentationUpdate docs generation logic only when documentation output or example extraction changes.
*-test-app packagesUse for framework examples, previews, and documentation snippets. Keep examples consumer-realistic.

Local workflow

pnpm install
pnpm storybook
pnpm build
pnpm lint
pnpm test

Targeted commands:

  • Build single package: pnpm build --filter @siemens/ix
  • Core component tests (watch): pnpm --filter @siemens/ix test.ct --watch
  • Run visual regression (after build): pnpm visual-regression
  • Core unit tests: pnpm --filter @siemens/ix test.spec
  • Core component tests: pnpm --filter @siemens/ix test.ct
  • Package lint: pnpm lint --filter <package-name>
  • Package tests: pnpm test --filter <package-name>

Testing expectations

  • Build before tests when compiled artifacts, generated wrappers, styles, or visual/component tests depend on build output.
  • packages/core is the main place for component tests. Core component tests live at packages/core/src/components/<component>/test/<component>.ct.ts.
  • Use core component tests for component behavior, interaction, keyboard handling, accessibility, slots, events, and state changes.
  • Include accessibility coverage (makeAxeBuilder) and a basic hydration/render test in component test files.
  • Add or update unit tests for pure logic changes, component tests for interaction/accessibility changes, and visual tests only for meaningful UI or theme changes.
  • Prefer Playwright accessibility locators (getByRole, getByLabel, getByText, accessible name/description assertions) for user-facing contracts. Fall back to tag/CSS selectors for custom elements without roles and for decorative chrome outside the a11y tree.
  • Prefer deterministic waits over implementation-detail selectors and timeouts.

Visual regression testing

  • Visual regression tests live in testing/visual-testing.
  • Visual regression tests run inside a Docker container so screenshots are operating-system agnostic and less affected by local fonts, browsers, or rendering differences.
  • Visual regression tests are slow. Keep them focused on visual contracts, not every behavior or edge case.
  • For a new feature, prefer one representative screenshot that covers the intended visual state instead of creating a separate screenshot for every feature branch, state, or testcase.
  • Use component tests in packages/core for exhaustive behavior coverage, and visual regression only to protect layout, theme, density, color, spacing, and screenshot-visible regressions.
  • For UI/theming changes, run relevant visual regression tests after pnpm build --filter !documentation; Docker must be available.

Documentation and examples

  • Component documentation is maintained in the separate siemens/ix-docs repository.
  • In this repository, update component JSDoc, metadata inputs, Storybook stories, or test-app examples when public usage changes.
  • If a change requires user-facing documentation updates, call out the needed siemens/ix-docs follow-up in the PR.
  • Keep docs and examples aligned across Web Components, Angular, React, and Vue when the behavior is framework-visible.
  • Do not document generated implementation details as public API.
  • Ensure examples use supported imports, current component names, and realistic consumer code.

Changesets and release impact

  • Any user-facing change needs a changeset in .changeset/.
  • This includes API changes, behavior changes, styling/theming updates, accessibility changes, and meaningful bug fixes.
  • If a change is internal-only, state that clearly in PR description/review context.
  • For breaking changes, update BREAKING_CHANGES.md and provide migration notes.
  • Choose affected packages based on what consumers install or observe, not only where source files changed.
  • Use patch for bug fixes and compatible styling/accessibility fixes, minor for new backwards-compatible APIs/features, and major for breaking API or behavior changes.
  • Keep changeset summaries consumer-focused: describe what changed and why it matters, not internal implementation details.

PR and commit expectations

  • PR title format: <type>[optional <scope>]: <description> (for example: fix(core): correct button color).
  • Link requirement context in PR description/commit message (GitHub issue or IX-<number>).
  • Explain user-facing impact and implementation details clearly.
  • Mention validation performed and any intentionally skipped validation with a reason.
  • Call out generated files, migration notes, and release impact when relevant.

Component-test conventions (core)

  • Use regressionTest from @utils/test (not plain Playwright test).
  • Prefer accessibility locators (getByRole, getByLabel, getByText) when elements expose roles/names; use tag/CSS selectors for host state and decorative/aria-hidden chrome. See .github/instructions/component-tests.instructions.md.
  • Use Playwright locators (including for Shadow DOM assertions).
  • Avoid arbitrary timeouts (waitForTimeout).
  • Register icons via mount config; do not fetch static SVG files directly in tests.

Security and contribution hygiene

  • Do not report security issues publicly in GitHub issues; follow SECURITY.md / CONTRIBUTING.md private reporting path.
  • Keep changes scoped and package-aware.
  • Do not edit unrelated files while implementing a focused change.
  • Never commit secrets, credentials, private tokens, local environment files, or machine-specific paths.
  • Treat public APIs, accessibility behavior, theming tokens, and generated package output as consumer contracts.
  • Do not add telemetry, network calls, or dependency downloads without a clear project-approved reason.

Quick execution checklist

  1. Confirm target package(s) and whether core is the correct edit point.
  2. Inspect nearby existing patterns, tests, docs, and package scripts.
  3. Implement changes in source (not generated output).
  4. Update tests, examples, docs, and generated inputs as needed.
  5. Run the smallest meaningful build/test/lint commands; run visual regression for relevant UI/theme changes.
  6. Add/update a changeset if the change is user-facing.
  7. Ensure PR summary includes impact, linked requirement, validation, affected packages, and migration notes if breaking.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.