π‘ Summary
This skill enables the creation and modification of IEC 61499 function blocks using natural language prompts in EcoStruxure Automation Expert.
π― Target Audience
π€ AI Roast: βPowerful, but the setup might scare off the impatient.β
Risk: Medium. Review: shell/CLI command execution; outbound network access (SSRF, data egress); filesystem read/write scope and path traversal. Run with least privilege and audit before enabling in production.
EAE Claude Skills
Claude Code skills for EcoStruxure Automation Expert (EAE) development.
These skills help you create and modify IEC 61499 function blocks using natural language prompts with Claude Code.
Quick Start
Installation
Install using the skills.sh CLI:
npx skills add eae-acc/eae-claude-skills
This installs all EAE skills to your Claude Code environment.
Verify Installation
In Claude Code, type /eae-skill-router - if the skill loads, installation was successful.
Usage
Invoke skills using slash commands or natural language:
/eae-skill-router # Router - shows what skill to use
/eae-cat # Create CAT block with HMI
/eae-basic-fb # Create Basic FB with algorithms
/eae-composite-fb # Create Composite FB
/eae-datatype # Create DataType (struct/enum/array)
/eae-adapter # Create Adapter interface
/eae-fork # Fork block from SE library to custom library
Or just describe what you need:
User: Create a Basic FB called MotorController that controls speed
Claude: [Invokes eae-basic-fb, generates .fbt with ECC + algorithms]
User: Create an enumeration for machine states
Claude: [Invokes eae-datatype, generates .dt in DataType/ folder]
Available Skills
Creation Skills
| Skill | Command | Description |
|-------|---------|-------------|
| eae-skill-router | /eae-skill-router | Router - guides you to the right skill |
| eae-cat | /eae-cat | CAT blocks with HMI, OPC-UA, persistence |
| eae-basic-fb | /eae-basic-fb | Basic FB with ECC state machine + ST algorithms |
| eae-composite-fb | /eae-composite-fb | Composite FB with FBNetwork layout |
| eae-datatype | /eae-datatype | DataTypes: structures, enums, arrays, subranges |
| eae-adapter | /eae-adapter | Adapter types for socket/plug interfaces |
| eae-fork | /eae-fork | Fork blocks from SE libraries with namespace migration |
Validation Skills
| Skill | Command | Description |
|-------|---------|-------------|
| eae-naming-validator | /eae-naming-validator | Enforce SE ADG naming conventions (14+ rules) |
| eae-performance-analyzer | /eae-performance-analyzer | Prevent event storms before deployment (4D analysis) |
Reference Skills
| Skill | Command | Description |
|-------|---------|-------------|
| eae-runtime-base | /eae-runtime-base | Find standard Runtime.Base blocks (~100 blocks) |
| eae-se-process | /eae-se-process | Find SE process blocks (motors, valves, PID, etc.) |
Decision Tree
What are you doing?
β
βββ Forking block from SE library? β /eae-fork
β
βββ Creating a NEW block from scratch?
β βββ Full block with HMI visualization? β /eae-cat (most common)
β βββ State machine with algorithms? β /eae-basic-fb
β βββ Network of existing FBs? β /eae-composite-fb
β βββ Custom data type (enum, struct)? β /eae-datatype
β βββ Reusable interface pattern? β /eae-adapter
β
βββ Looking up existing blocks? β /eae-runtime-base, /eae-se-process
Features
- Correct XML structure - Generates valid EAE XML with proper DOCTYPE, IDs, and attributes
- dfbproj registration - Automatically registers blocks in the library project file
- FBNetwork layout - Smart positioning guidelines for clean, readable composite blocks
- All block types - CAT, Basic, Composite, DataType, Adapter
- Templates included - XML templates for all block types
Project Structure
.claude/skills/
βββ eae-skill-router/ # Router + shared resources
β βββ SKILL.md
β βββ references/
β β βββ common-rules.md # Shared rules (IDs, registration)
β βββ assets/templates/ # XML templates for all block types
β
βββ eae-cat/ # CAT blocks
βββ eae-basic-fb/ # Basic function blocks
βββ eae-composite-fb/ # Composite function blocks
βββ eae-datatype/ # Data types
βββ eae-adapter/ # Adapter interfaces
βββ eae-fork/ # Fork blocks from SE libraries
β βββ SKILL.md
β βββ scripts/ # Python automation scripts
β βββ references/ # Namespace migration rules
βββ eae-runtime-base/ # Runtime.Base library reference
βββ eae-se-process/ # SE process blocks reference
Requirements
- Claude Code CLI or VS Code extension
- EcoStruxure Automation Expert (for testing generated blocks)
Examples
Create a Basic FB
User: Create a Basic FB called Calculator in MyLib namespace that adds two REAL values
Claude: I'll create a Basic FB with:
- Inputs: Value1 (REAL), Value2 (REAL)
- Output: Result (REAL)
- Algorithm: Result := Value1 + Value2
[Generates Calculator.fbt, Calculator.doc.xml, Calculator.meta.xml]
[Registers in MyLib.dfbproj]
Create a Composite FB
User: Create a Composite FB that chains two Calculator blocks
Claude: I'll create a Composite FB with:
- Two Calculator instances wired together
- First result feeds into second input
- Proper FBNetwork layout
[Generates ChainedCalc.fbt with FBNetwork]
Create an Enumeration
User: Create an enum for MachineState with Idle, Running, Error
Claude: I'll create a DataType enumeration:
[Generates IEC61499/DataType/MachineState.dt]
Validate Naming Conventions
User: Validate my EAE application naming
Claude: [Invokes eae-naming-validator]
python scripts/validate_names.py --app-dir IEC61499/MyLibrary
β
AnalogInput (CAT) - PascalCase compliant
β motorController (CAT) - Should be PascalCase: MotorController
β
scaleLogic (Basic FB) - camelCase compliant
β MotorInterface (Adapter) - Missing 'I' prefix: Should be IMotorInterface
Analyze Performance
User: Check my application for event storms
Claude: [Invokes eae-performance-analyzer]
python scripts/analyze_event_flow.py --app-dir IEC61499/MyApp
β οΈ Event multiplication detected: 15.2x (threshold: 10x)
β CRITICAL: Tight event loop detected in ControllerBlock
FB1 β FB2 β FB1 (2-hop cycle)
Recommendation: Add state guard (RS flip-flop)
SE ADG Compliance
All skills enforce compliance with Schneider Electric Application Design Guidelines EIO0000004686.06.
Naming Conventions (Section 1.5)
| Artifact | Convention | Example | Validated By |
|----------|------------|---------|--------------|
| CAT | PascalCase | MotorController | eae-naming-validator |
| Basic FB | camelCase | scaleLogic | eae-naming-validator |
| Composite FB | camelCase | dataProcessor | eae-naming-validator |
| Adapter | IPascalCase | IMotorControl | eae-naming-validator |
| Interface Variables | PascalCase | PermitOn, Value | eae-naming-validator |
| Internal Variables | camelCase | error, timerActive | eae-naming-validator |
| Events | SNAKE_CASE | START_MOTOR, INIT | eae-naming-validator |
| Structures | strPascalCase | strMotorData | eae-naming-validator |
| Enumerations | ePascalCase | eProductType | eae-naming-validator |
Enforcement: Run eae-naming-validator before committing code.
Performance Thresholds
| Metric | Safe | Moderate | Critical | Validated By | |--------|------|----------|----------|--------------| | Event Multiplication | <10x | 10-20x | >20x | eae-performance-analyzer | | CPU Load | <70% | 70-90% | >90% | eae-performance-analyzer | | Queue Depth | <100 | 100-500 | >500 | eae-performance-analyzer | | Timer Frequency (HMI) | β₯500ms | 100-500ms | <100ms | eae-performance-analyzer |
Best Practice: Run eae-performance-analyzer during design reviews.
Integration Patterns
Pattern 1: Creation β Validation Pipeline
Recommended workflow for creating and validating artifacts:
# 1. Create artifact /eae-cat MotorController # 2. Validate naming python .claude/skills/eae-naming-validator/scripts/validate_names.py \ --app-dir IEC61499/MyLibrary # 3. Validate performance (if has FBNetwork) python .claude/skills/eae-performance-analyzer/scripts/analyze_event_flow.py \ --app-dir IEC61499/MyLibrary # 4. Run artifact-specific validation python .claude/skills/eae-cat/scripts/validate_cat.py IEC61499/MotorController
Pattern 2: CAT with Process Blocks
Build a CAT block using SE process library blocks:
1. /eae-cat β Create CAT block
2. /eae-se-process β Find Motor block from SE.App2CommonProcess
3. Add Motor instance to CAT FBNetwork
4. /eae-runtime-base β Find E_CYCLE for periodic HMI updates (500ms)
5. /eae-performance-analyzer β Validate no event storms
Pattern 3: Composite with Timing
Create a composite FB with periodic execution:
1. /eae-composite-fb β Create composite
2. /eae-runtime-base β Find E_CYCLE for 100ms periodic trigger
3. Add E_CYCLE to FBNetwork
4. Validate layout: python scripts/validate_layout.py
5. Check event multiplication: /eae-performance-analyzer
CI/CD Integration
Pre-Commit Hook
Create .git/hooks/pre-commit:
#!/bin/bash # Validate naming conventions python .claude/skills/eae-naming-validator/scripts/validate_names.py \ --app-dir IEC61499/MyLibrary \ --json if [ $? -ne 0 ]; then echo "β Naming validation failed" exit 1 fi # Detect critical event storm patterns python .claude/skills/eae-performance-analyzer/scripts/detect_storm_patterns.py \ --app-dir IEC61499/MyLibrary \ --json if [ $? -eq 11 ]; then echo "β Critical anti-patterns detected" exit 1 fi echo "β All validations pas
Pros
- Facilitates rapid development with natural language
- Enforces compliance with naming conventions
- Generates valid XML structures automatically
- Includes validation tools for performance and naming
Cons
- Requires familiarity with EcoStruxure Automation Expert
- Dependent on Claude Code environment
- May have a learning curve for new users
- Limited to IEC 61499 function blocks
Related Skills
connect
AβIt's the ultimate 'I'll do it for you' skill, turning Claude from a thoughtful advisor into an over-eager intern with access to all your accounts.β
figma-use
AβPowerful, but the setup might scare off the impatient.β
Disclaimer: This content is sourced from GitHub open source projects for display and rating purposes only.
Copyright belongs to the original author sapiencezk.
