eae-skill-router

📁 sapiencezk/eae-skills 📅 Jan 22, 2026
9
总安装量
8
周安装量
#31463
全站排名
安装命令
npx skills add https://github.com/sapiencezk/eae-skills --skill eae-skill-router

Agent 安装分布

claude-code 7
opencode 3
windsurf 2
trae 2
cursor 2
codex 2

Skill 文档

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
[guid]::NewGuid()

# Generate hex ID for elements (16 chars)
[guid]::NewGuid().ToString("N").Substring(0,16).ToUpper()

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