eae-skill-router

Router skill for EAE (EcoStruxure Automation Expert) development.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "eae-skill-router" with this command: npx skills add sapiencezk/eae-skills/sapiencezk-eae-skills-eae-skill-router

EAE Skills Router

Router skill for EAE (EcoStruxure Automation Expert) development.

CRITICAL RULE - NEVER BYPASS SKILLS:

  • ALWAYS use an EAE skill for ANY operation on EAE files (.fbt , .adp , .dt , .cfg , .dfbproj , etc.)

  • This applies to BOTH creating AND modifying existing blocks

  • NEVER directly read, edit, or write EAE files outside of a skill context

  • When modifying an existing block, invoke the appropriate skill with the modification request

  • The skill will handle reading, validating, and updating all related files correctly

What Are You Doing?

Action Use This Skill

Create OR modify a CAT block /eae-cat

Create OR modify a Basic FB /eae-basic-fb

Create OR modify a Composite FB /eae-composite-fb

Create OR modify a DataType /eae-datatype

Create OR modify an Adapter /eae-adapter

Fork block from SE library to custom library /eae-fork

Find/use Runtime.Base standard blocks /eae-runtime-base

Find/use SE process blocks (motors, valves, PID) /eae-se-process

Analyze project overview, quality, protocols /eae-sln-overview

Validate naming conventions /eae-naming-validator

Analyze performance/event storms /eae-performance-analyzer

What Are You Creating?

Need Block Type Use This Skill

Full-featured block with HMI + OPC-UA + persistence CAT Block /eae-cat

State machine with algorithms (ST code) Basic FB /eae-basic-fb

Network of existing FBs wired together Composite FB /eae-composite-fb

Custom data structure (struct/enum/array) DataType /eae-datatype

Reusable bidirectional interface Adapter /eae-adapter

Quick Decision Tree

What are you doing? │ ├── Forking/copying block from SE library to custom library? │ └── YES → /eae-fork (handles namespace migration) │ ├── Creating a NEW block from scratch? │ │ │ ├── Full block with HMI visualization, OPC-UA, or persistence? │ │ └── YES → /eae-cat (most common) │ │ │ ├── Need algorithms or state logic? │ │ └── YES → /eae-basic-fb │ │ │ ├── Composing existing FBs together (no HMI)? │ │ └── YES → /eae-composite-fb │ │ │ ├── Custom data type (enum, struct, array)? │ │ └── YES → /eae-datatype │ │ │ └── Reusable interface pattern (socket/plug)? │ └── YES → /eae-adapter │ └── Looking up existing blocks? ├── Runtime.Base library → /eae-runtime-base └── SE process blocks → /eae-se-process

Triggers

Block Creation/Modification

  • /eae-cat

  • Create CAT block with HMI (most common)

  • /eae-basic-fb

  • Create Basic FB

  • /eae-composite-fb

  • Create Composite FB

  • /eae-datatype

  • Create DataType

  • /eae-adapter

  • Create Adapter

  • /eae-fork

  • Fork block from SE library to custom library with namespace migration

Library Reference

  • /eae-runtime-base

  • Find/reference Runtime.Base standard library blocks

  • /eae-se-process

  • Find/reference SE.App2Base and SE.App2CommonProcess blocks

Analysis & Validation

  • /eae-sln-overview

  • Project overview, quality score, protocols, libraries

  • /eae-naming-validator

  • Validate SE naming conventions

  • /eae-performance-analyzer

  • Detect event storms, analyze performance

Router

  • /eae-skill-router
  • This router (shows decision tree)

Quick Reference

Type Extension Location IEC61499Type Features

CAT .cfg

IEC61499/{Name}/

CAT

HMI + OPC-UA + Persistence

Basic FB .fbt

IEC61499/

Basic

ECC + Algorithms

Composite FB .fbt

IEC61499/

Composite

FBNetwork

DataType .dt

IEC61499/DataType/

DataType

Struct/Enum/Array

Adapter .adp

IEC61499/

Adapter

Socket/Plug Interface

Common Rules

These rules apply to ALL block types. See common-rules.md for full details.

ID Generation

All Events and VarDeclarations need 16-character hex IDs:

Generate GUID for FBType

Generate hex ID for elements (16 chars)

dfbproj Registration

Every block must be registered in the library's .dfbproj file:

<ItemGroup> <Compile Include="BlockName.fbt"> <IEC61499Type>Basic</IEC61499Type> </Compile> </ItemGroup>

Critical XML Rules

Rule Applies To

NO xmlns on root element FBType, AdapterType, DataType

DOCTYPE must reference correct DTD All blocks

Format="2.0" required Composite FB, CAT FB only

GUID required All except DataType

Troubleshooting

Issue Solution

<FBType xmlns=...> was not expected

Remove xmlns attribute from FBType

Block not in Solution Explorer Register in .dfbproj file

DataType not found Must be in DataType/ subfolder with .dt extension

Adapter won't load Use .adp extension, not .fbt

CAT block broken Ensure all files in {Name}/ subfolder

Scripts

Helper scripts for agentic operation are in scripts/ . These are shared infrastructure used by all child skills.

Register Block in dfbproj (Universal)

Register any block type in the library's dfbproj file. All child skills should use this script.

Register with explicit type

python scripts/register_dfbproj.py MyBlock MyLib --type cat python scripts/register_dfbproj.py MyBlock MyLib --type composite python scripts/register_dfbproj.py MyBlock MyLib --type basic python scripts/register_dfbproj.py MyBlock MyLib --type adapter python scripts/register_dfbproj.py MyBlock MyLib --type datatype

Auto-detect type from existing files

python scripts/register_dfbproj.py MyBlock MyLib

Verify registration

python scripts/register_dfbproj.py MyBlock MyLib --verify

Dry run (show what would happen)

python scripts/register_dfbproj.py MyBlock MyLib --dry-run

Output as JSON

python scripts/register_dfbproj.py MyBlock MyLib --json

Supported types:

Type IEC61499Type Extension Subfolder

cat

CAT .fbt

  • .cfg

{Name}/

composite

Composite .fbt

{Name}/

basic

Basic .fbt

{Name}/

adapter

Adapter .adp

{Name}/

datatype

DataType .dt

DataType/

Exit codes:

  • 0

  • Registration successful

  • 1

  • General error

  • 11

  • Registration issue

Generate IDs

Generate GUIDs and hex IDs for blocks:

Generate 1 GUID + 1 hex ID (default)

python scripts/generate_ids.py

Generate 5 hex IDs for Events/VarDeclarations

python scripts/generate_ids.py --hex 5

Generate 2 GUIDs for multiple blocks

python scripts/generate_ids.py --guid 2

Output as JSON for automation

python scripts/generate_ids.py --hex 4 --guid 1 --json

Validate Block

Validate .fbt, .adp, .dt files against EAE rules:

Auto-detect block type and validate

python scripts/validate_block.py MyBlock.fbt

Validate a CAT folder

python scripts/validate_block.py IEC61499/MyCAT/

Specify block type explicitly

python scripts/validate_block.py --type basic MyBasicFB.fbt

Output as JSON

python scripts/validate_block.py --json MyBlock.fbt

Exit codes:

  • 0

  • Validation passed

  • 1

  • Error running validation

  • 10

  • Validation failed (errors found)

Cross-Validate Consistency

Verify consistency between files on disk and dfbproj registration:

Validate a single block

python scripts/validate_consistency.py MyBlock SE.ScadapackWWW

Validate all blocks in a library

python scripts/validate_consistency.py --all SE.ScadapackWWW

Show fix commands for issues

python scripts/validate_consistency.py --fix --all SE.ScadapackWWW

Output as JSON

python scripts/validate_consistency.py --json --all SE.ScadapackWWW

Specify expected block type

python scripts/validate_consistency.py --type cat MyCAT SE.ScadapackWWW

What it checks:

Check Description

Files exist Required files present for block type

Registration Block registered in dfbproj

Type match File type matches registration type

Orphans Blocks in one location but not other

Exit codes:

  • 0

  • Validation passed (all consistent)

  • 1

  • Error running validation

  • 10

  • Validation failed (inconsistencies found)

  • 11

  • Registration issues (missing or wrong entries)

Track Blocks (State Management)

Track blocks created/forked during a session for rollback and audit:

Add a block to tracking

python scripts/track_block.py add MyBlock SE.ScadapackWWW --type cat --operation fork --source SE.App2CommonProcess

Add a created block

python scripts/track_block.py add MyBlock SE.ScadapackWWW --type basic --operation create

Check block status

python scripts/track_block.py status MyBlock SE.ScadapackWWW

Update status (e.g., mark as failed)

python scripts/track_block.py update MyBlock SE.ScadapackWWW --status failed --error "Build failed"

Remove from tracking

python scripts/track_block.py remove MyBlock SE.ScadapackWWW

List Tracked Blocks

View all tracked blocks with filtering:

List all tracked blocks

python scripts/list_tracked_blocks.py SE.ScadapackWWW

Filter by status

python scripts/list_tracked_blocks.py SE.ScadapackWWW --status failed

Filter by type

python scripts/list_tracked_blocks.py SE.ScadapackWWW --type cat

Filter by operation

python scripts/list_tracked_blocks.py SE.ScadapackWWW --operation fork

Show summary only

python scripts/list_tracked_blocks.py SE.ScadapackWWW --summary

Clear tracking (start fresh)

python scripts/list_tracked_blocks.py SE.ScadapackWWW --clear

JSON output

python scripts/list_tracked_blocks.py SE.ScadapackWWW --json

Tracking manifest location: {Library}/IEC61499/.eae-tracking/manifest.json

Rollback Operations

Undo failed or unwanted fork/create operations:

Rollback a single block

python scripts/rollback_operation.py MyBlock SE.ScadapackWWW

Rollback all failed blocks

python scripts/rollback_operation.py --all-failed SE.ScadapackWWW

Preview without making changes

python scripts/rollback_operation.py --dry-run MyBlock SE.ScadapackWWW

Skip confirmation prompt

python scripts/rollback_operation.py --force MyBlock SE.ScadapackWWW

Specify block type if not tracked

python scripts/rollback_operation.py --type cat MyBlock SE.ScadapackWWW

JSON output

python scripts/rollback_operation.py --json MyBlock SE.ScadapackWWW

What rollback does:

Action Description

Delete folders IEC61499/{Block}/ and HMI/{Block}/

Delete files For DataTypes: .dt and .doc.xml files

Remove dfbproj Removes ItemGroup entries

Remove csproj For CAT blocks: removes HMI entries

Update tracking Marks block as "rolled_back"

Exit codes:

  • 0

  • Rollback successful

  • 1

  • Error

  • 10

  • Block not found in tracking

  • 11

  • Rollback partially failed

Related Skills

Skill Description

eae-cat CAT blocks with HMI, OPC-UA, persistence

eae-basic-fb Basic FB with ECC and algorithms

eae-composite-fb Composite FB with FBNetwork

eae-datatype DataTypes (struct, enum, array, subrange)

eae-adapter Adapter interfaces

eae-fork Fork blocks from SE libraries with namespace migration

eae-runtime-base Runtime.Base standard library reference

eae-se-process SE.App2Base and SE.App2CommonProcess reference

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

eae-basic-fb

No summary provided by upstream source.

Repository SourceNeeds Review
General

eae-se-process

No summary provided by upstream source.

Repository SourceNeeds Review
General

eae-composite-fb

No summary provided by upstream source.

Repository SourceNeeds Review
General

eae-naming-validator

No summary provided by upstream source.

Repository SourceNeeds Review