Skip to content

/tia-sivarc

C# TIA Portal Openness V21 automation for SIMATIC Visualization Architect (SiVArc): rule tables, rules and groups, library instances, tag/text definitions, tag member settings, expression resolution, layout exchange, definition upgrade, and generation.

From plugin
totally-integrated-claude
4318 skills1 hook1 MCP
Install
$ npx -y skills add Czarnak/totally-integrated-claude --skill tia-sivarc --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/tia-sivarc

Context preview

The summary Claude sees to decide when to auto-load this skill.

C# TIA Portal Openness V21 automation for SIMATIC Visualization Architect (SiVArc): rule tables, rules and groups, library instances, tag/text definitions, tag member settings, expression resolution, layout exchange, definition upgrade, and generation.

SKILL.md

tia-sivarc.SKILL.md
name: tia-sivarc
description: >
  C# TIA Portal Openness V21 automation for SIMATIC Visualization Architect (SiVArc):
  rule tables, rules and groups, library instances, tag/text definitions, tag member
  settings, expression resolution, layout exchange, definition upgrade, and generation.
license: MIT

tia-sivarc

Scope

Use this skill for SiVArc engineering through the V21 C# Openness API.

  • Assembly: `Siemens.Engineering.Sivarc.dll`
  • Namespace: `Siemens.Engineering.SiVArc` (the namespace capitalization differs from the assembly filename)
  • Entry point: `Sivarc sivarc = project.GetService<Sivarc>()`
  • Prerequisite: load `tia-csharp-common` first

Do not substitute WinCC/HMI APIs for SiVArc rule or generation APIs. SiVArc generation creates, updates, renames, and may remove generated HMI objects; it is a live project mutation, not a read-only build step.

Reference files

Load only the reference required by the task.

| Reference | Use for | | --- | --- | | `references/generation.md` | SiVArc license and generation preflight; exact `GenerationOptions`; result and recursive message handling | | `references/rules-and-libraries.md` | All six rule families; tables, folders, groups, rules; library copies, type instances, and dynamic device columns | | `references/definitions-expression-layout.md` | Tag/text definitions, tag member settings, definition upgrade, expression resolution, and screen layout YML import/export | | `references/api-catalogue.md` | Complete inventory of all 92 installed V21 public SiVArc types |

V21 service acquisition

using Siemens.Engineering;
using Siemens.Engineering.SiVArc;

Sivarc sivarc = project.GetService<Sivarc>();
if (sivarc == null)
    throw new InvalidOperationException("SiVArc is unavailable for the selected project or installation.");

Any modification of SiVArc data, including generation, requires a valid SiVArc license. V21 reports a missing license as a recoverable `LicenseNotFound` exception; do not convert that into a successful no-op.

Safety boundary

  • Require explicit authorization for the exact project, HMI runtime/device names, PLC device names, rule objects, generation options, and mutation type.
  • Resolve every table, folder, group, rule, block, screen, and library item by an exact selector. Fail on zero or ambiguous matches; never use `.First()`, index zero, or a silent fallback to a default table.
  • Before generation, inventory the HMI-to-PLC connections, source PLC compile status, previous/frozen generation selection, rules included by the selected flags, and generated objects that may be replaced or removed.
  • `GenerationOptions.None` means “use project settings”; it is not a preview or dry run. `CreateOptions.Replace` can overwrite an existing object.
  • Imports, rule expressions, dynamic attribute names, library objects, and YML files are untrusted engineering input. Validate path, provenance, identity, and destination.
  • Inspect returned result objects and recursive feedback. Exceptions and error counts fail the operation. Never infer success from a non-null return value.
  • Do not claim generation rollback from a transaction without live V21 evidence. Use `ExclusiveAccess` for mutations and only use a transaction for calls proven compatible with it.
  • Do not save the project unless persistence was explicitly requested. If validation fails, leave the project unsaved and report that live recovery/rollback was not proven.

Execution pattern

1. Load `tia-csharp-common` and this skill. 2. Open or attach to the exact project and acquire `Sivarc`. 3. Perform a read-only inventory and resolve exact identities. 4. State the effective rule/generation scope and destructive consequences. 5. Obtain explicit authorization for the mutation. 6. Acquire `ExclusiveAccess`, perform the smallest operation, and capture all results/exceptions. 7. Compile or validate affected PLC/HMI artifacts where the API supports it. 8. Save only when explicitly requested and verification passed.

Evidence boundary

Static inspection against `Siemens.Engineering.Sivarc.xml` and reflection proves names and signatures only. License availability, project compatibility, generation behavior, retained manual edits, station-selection state, and produced HMI objects require an authorized live TIA Portal V21 run.

Read more
Ships withtotally-integrated-claude

A Claude Code plugin for Siemens TIA Portal engineering automation. Provides a routed skill framework covering the full TIA Portal Openness API surface — Python TIA Scripting for everyday tasks and C# Openness for advanced object-model work.

Get the whole plugin, auto-invoked
Stats
43
Stars
1
Views
9
Forks
Active
Maintenance
PowerShell
Language
MIT
License
1d ago
Last commit
4mo ago
Created

Repo: Czarnak/totally-integrated-claude