with one click
Reference routed skill. Do NOT load directly unless user says so.
npx skills add https://github.com/Czarnak/totally-integrated-claude --skill tia-pythonCopy and paste this command into Claude Code to install the skill
Reference routed skill. Do NOT load directly unless user says so.
npx skills add https://github.com/Czarnak/totally-integrated-claude --skill tia-pythonCopy and paste this command into Claude Code to install the skill
Internal reference skill — do NOT load directly from user queries.
Manual prerequisite probe for TIA Portal, Openness, Python TIA Scripting, TIA MCP, and Siemens LSP.
Entry point for ALL TIA Portal engineering automation tasks. Always load this skill FIRST when the user mentions TIA Portal, TIA Openness, TIA Scripting, Siemens PLC, Siemens HMI, TIA Portal Add-In, or any automation/engineering task targeting TIA Portal. This skill routes to the correct domain skill and selects MCP, Python, or C# implementation.
TIA Portal Add-In development in Visual Studio Code: creating Add-In C# projects, adding Add-In templates, compiling and debugging Add-Ins, converting Add-Ins from older TIA Portal versions and configuring Add-In project parameters.
Use when the TIA Portal MCP server is available and the task involves reading or modifying a TIA Portal project interactively: browsing the project tree, reading or writing PLC block logic (SIMATIC SD YAML), listing tag tables, inspecting hardware config, running cross-reference diagnostics, searching the equipment catalog, adding/configuring network devices, or running compile checks. Prefer MCP tools over TIA Openness scripts for single read/write operations; use TIA Openness (tia-python or C# skills) for complex multi-step automation.
Standalone skill for multi-perspective PLC code security and quality analysis. Triggers on: "review", "audit", "analyze", "security check", "vulnerability scan", "code review", "check this code", "is this safe", "find issues" when combined with PLC, SCL, ST, LAD, FBD, Structured Text, or block context. Also triggers when the user pastes PLC code and asks for feedback, or uploads exported SimaticML XML files. This skill is independent of tia-openness-roadmap — it does not perform engineering automation. It analyzes code that has already been exported, pasted, or is accessible via the TIA Portal MCP server.
| name | tia-python |
| description | Reference routed skill. Do NOT load directly unless user says so. |
Library: siemens_tia_scripting (v1.1.0)
Requires: Python 3.12.x, TIA Portal V15.1+, TIA Portal Openness V15.1+
Do not use pip install siemens_tia_scripting or pip install siemens-tia-scripting
from PyPI. Download TIA Scripting Python from Siemens Industry Online Support,
unzip it, then choose one Siemens-supported setup path:
TIA_SCRIPTING environment variable to the extracted
binaries directory and append it to sys.path.binaries directory and install
the matching wheel file, for example:cd C:\Path\To\Your\TIA_Scripting_Python\binaries
py -3.12 -m pip install .\siemens_tia_scripting-x.x.x-cp312-cp312-win_amd64.whl
Replace x.x.x with the version in the downloaded wheel filename.
import os
import sys
# Option A – environment variable (file import method)
sys.path.append(os.getenv('TIA_SCRIPTING'))
import siemens_tia_scripting as ts
# Option B – installed as pip package
import siemens_tia_scripting as ts
siemens_tia_scripting (Global functions)
└── Portal
└── Project
├── Plc
│ ├── ProgramBlock / SystemBlock
│ ├── PlcTagTable → PlcTag / UserConstant
│ ├── UserDataType
│ ├── ExternalSource
│ ├── ForceTable / WatchTable
│ ├── TechnologyObject
│ ├── SoftwareUnit (contains same sub-objects as Plc)
│ └── SafetyAdministration
├── Hmi
│ ├── HmiTagTable → HmiTag
│ ├── HmiScreen / HmiScript / HmiCycle
│ ├── HmiAlarm / HmiAlarmClass
│ ├── HmiConnection
│ ├── HmiGraphicList / HmiTextList
└── ProjectLibrary
└── LibraryType → LibraryTypeVersion
Portal
└── GlobalLibrary
└── LibraryTypeFolder → LibraryType → LibraryTypeVersion
Accessing any object requires: Portal open → Project open → device retrieved.
These methods behave identically across all classes that have them. Do NOT repeat their full docs in reference files — refer here instead.
Returns the name of the object.
Returns a single property value as string. Non-string values are auto-converted.
val = obj.get_property(name="CreationDate")
Returns all property names of the object.
Sets a property. Value must be passed as string regardless of underlying type:
"True" / "False""42""3.14""0" or name string "OptionA"obj.set_property(name="Name", value="MyNewName")
Returns a unique identifier string for the object.
Exports the object. Shared signature across PLC/HMI data objects.
export_options: Enums.ExportOptions (WithDefaults=0, Nan=1, WithReadOnly=2)export_format: Enums.ExportFormats (SimaticML=0, ExternalSource=1, SimaticSD=2)keep_folder_structure: bool — if True, folder hierarchy is preservedobj.export(target_directory_path="C:\\ws\\export",
export_options=ts.Enums.ExportOptions.WithDefaults)
Deletes the object from TIA Portal.
get_path() → path up to the parent system folderget_path_full() → full path up to project rootReturns fingerprint data for the object.
Returns a list of export format strings supported by the object.
Opens the object in the TIA Portal editor UI.
Returns True if the object is consistent (compiled, no errors).
ts.Enums.PortalMode # WithGraphicalUserInterface=0, WithoutGraphicalUserInterface=1, AnyUserInterface=2
ts.Enums.UmacUserMode # Project=0, Global=1
ts.Enums.ExportFormats # SimaticML=0, ExternalSource=1, SimaticSD=2
ts.Enums.ExportOptions # WithDefaults=0, Nan=1, WithReadOnly=2
ts.Enums.CleanUpMode # PreserveDefaultVersionOfUnusedTypes=0, DeleteUnusedTypes=1
ts.Enums.LibraryExportOptions # Nan=0, WithLibraryVersionInfoFile=1, OnlyLibraryVersionInfoFile=2
ts.Enums.HarmonizeOptions # HarmonizePathsAndNames=0, HarmonizePaths=1, HarmonizeNames=2
ts.Enums.DependenciesMode # DoNotAutomaticallyCreateOrReleaseDependencies=0, AutomaticallyCreateOrReleaseDependenciesIfRequired=1
ts.set_logging(path="C:\\ws\\tiascripting.log", console=True)
Call early in the script, before opening a portal.
Load only the file(s) relevant to the task at hand:
| File | When to load |
|---|---|
skills/tia-python/references/global_portal.md | Opening/attaching portal, project management, UMAC, credentials |
skills/tia-python/references/plc.md | Working with PLC devices, blocks, tags, UDTs, technology objects, software units |
skills/tia-python/references/hmi.md | Working with HMI devices, screens, tags, scripts, alarms, connections |
skills/tia-python/references/library.md | Working with GlobalLibrary, ProjectLibrary, LibraryTypes and versions |
skills/tia-python/references/project.md | Project-level operations, ProjectServer, transactions, TestSuite |
For pipelines that span multiple domains, load all relevant files before generating code.
compile_hardware() and compile_software() return True if there are errors.folder_path parameters — most get_* methods accept an optional folder_path: str using "group1/group2" syntax to scope retrieval.import_* methods take a directory path, not a file path — point to the folder containing exported XML files.project.start_transaction() / project.end_transaction() for bulk changes that should be undoable.set_property values are always strings — even for booleans and numbers.These rules are mandatory for generated Python TIA Scripting code:
delete() and any bulk overwrite/import operation as destructive.delete() as a bare one-line mutation. Wrap destructive changes in
project.start_transaction() / project.end_transaction() when the API supports
that operation inside a transaction.compile_check through MCP after generated block, tag,
hardware, or HMI changes. Do not present generated project changes as deployable
until that check passes.