feat(engineering): add Electrical Engineer agent by ayobamiseun · Pull Request #1177 · msitarzewski/agency-agents · GitHub
Skip to content

feat(engineering): add Electrical Engineer agent - #1177

Merged
msitarzewski merged 2 commits into
msitarzewski:mainfrom
ayobamiseun:feat/electrical-engineer-agent
Oct 25, 2026
Merged

msitarzewski merged 2 commits into
msitarzewski:mainfrom
ayobamiseun:feat/electrical-engineer-agent

Conversation

@ayobamiseun

Copy link
Copy Markdown
Contributor

Summary

Adds Electrical Engineer (engineering/engineering-electrical-engineer.md), the power-systems agent requested in #1144 for platforms managing telecom sites, buildings and infrastructure projects. One agent, one PR, per the maintainer note on that issue.

The agent covers:

  • Load assessment, LV distribution, cable sizing (ampacity and voltage drop), protection coordination
  • Telecom -48 V DC plants: rectifier N+1 sizing, battery autonomy per IEEE 485 (ageing, temperature, end-of-discharge current), LVD settings
  • Standby generators (ISO 8528 derating, motor starting, minimum loading), UPS, solar and hybrid systems
  • Earthing and lightning protection (IEC 62305, IEEE 80, ITU-T K.27/K.56)
  • Review of single-line diagrams, equipment specs, BOQs, survey records, inspection checklists and commissioning records
  • Translating electrical requirements into software calculation rules, validation checks and approval workflows, with a worked Python rule module and a rule table
  • An explicit professional-review boundary: the agent analyses, it never certifies

Deliverables include six worked examples (DC power assessment, DC feeder sizing where voltage drop governs, generator sizing, a validation-rules module, an inspection checklist, and a draft BOQ), all with named standards and editions.

Changes

  • engineering/engineering-electrical-engineer.md — new agent
  • README.md — roster row in the Engineering table
  • scripts/convert-outputs.sha256 — regenerated with --update (one new agent line, no tool or contract lines moved)

Checks

  • ./scripts/lint-agents.sh — 0 errors
  • ./scripts/check-agent-originality.sh — 0.0 % similarity to closest existing agent
  • ./scripts/check-divisions.sh — PASSED
  • ./scripts/test-convert-outputs.sh — 32 passed, 0 failed after the manifest update

Closes #1144

🤖 Generated with Claude Code

Adds a power-systems specialist for telecom sites, buildings and
infrastructure projects, as requested in msitarzewski#1144. The agent sizes loads,
cables, batteries, rectifiers, generators and solar; designs earthing
and lightning protection; reviews drawings, BOQs, survey records and
commissioning reports; and translates electrical requirements into
software calculation rules and validation checks with explicit
professional-review boundaries.

Also adds the README roster row and regenerates the convert-outputs
manifest for the new agent.

Closes msitarzewski#1144

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

@msitarzewski msitarzewski left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this, @ayobamiseun. It's a careful agent. The standards list is accurate, the worked examples flag their assumptions and missing inputs, and every deliverable ends with the licensed-engineer sign-off.

I recomputed the worked examples and ran the Deliverable 4 code. Most of it holds up: the battery chain (612 → 934 Ah), the rectifier count, both voltage-drop results (2.62 V and 0.97 V), the generator loading at 72 %, and the BOQ quantities. Five things need fixing before it lands.

1. rule_pwr_004 crashes when the battery has no rate. A battery record with capacity_ah set and rate_hours=None gets past the early return, and line 381 then formats None with :g:

TypeError: unsupported format string passed to NoneType.__format__

That's the exact gap PWR-003 is there to report, so validate() should return PWR-003's BLOCK instead of crashing. Widening the guard fixes it:

if (b is None or b.capacity_ah is None or b.rate_hours is None
        or b.end_volts_per_cell is None or a.autonomy_required_h is None):
    return []  # PWR-003 already reports the gap

2. The motor-starting step in Deliverable 3 comes out low. With LRA at 6 × FLA, a start adds 5 × the running kVA. A 2.5 kW compressor at PF 0.85 runs at 2.94 kVA, so the start adds 14.7 kVA, not 12.5. The 12.5 looks like 5 × 2.5 kW, kW where kVA belongs, which is the mix PWR-002 is meant to block. The peak becomes 20.7 + 14.7 = 35.4 kVA, which is 123 % of the derated 28.8 kVA rather than 115 %, so the G2 transient check at the end of the section needs redoing at that figure.

3. "plant AC demand 14.2 kVA (4 running)" in Deliverable 1. At 2.85 kVA per module, four running is 11.4 kVA. 14.2 kVA is all five modules at full output. Deliverable 3 carries 14.2 kVA into the generator schedule, which is the conservative choice, so changing the label to "(5 modules at full output)" is probably the right fix.

4. PWR-001 cites IEC 60364-5-52 §525. Clause 525 is voltage drop. PWR-001 checks that each load has a unit and, for AC, a power factor. "basic", as PWR-002 uses, or a data-quality reference would fit better. The citation appears in both the table and the code.

5. Please double-check "Table B.52.4, column 4" for method C. I couldn't reach a published copy of the table, so treat this one as a question. From memory, column 4 of B.52.4 is method B1, and the method C ratings are higher than 119 A (35 mm²) and 233 A (95 mm²). Either way the conclusion stands: voltage drop governs, and 95 mm² is right.

Once these are fixed, I'll take another look.

…guard

- rule_pwr_004: widen the early-return guard so a battery record with a
  capacity but no rate or end voltage falls through to PWR-003's BLOCK
  instead of formatting None with :g
- Deliverable 3: compute the compressor start from its running kVA
  (2.94 kVA at PF 0.85), so the transient is 14.7 kVA and the peak is
  35.4 kVA (123 % of the derated rating); restate the G2 check at that
  figure with a soft-starter fallback
- Deliverable 1: label the 14.2 kVA plant AC demand as all five modules
  at full output
- PWR-001: cite "data quality" instead of IEC 60364-5-52 §525, in both
  the table and the code
- Deliverable 2: cite Table B.52.2 (PVC, two loaded conductors) instead
  of B.52.4, and use the method C values from column 6: 138 A for
  35 mm² and 258 A for 95 mm²; derated results become 130 A and 243 A
- Regenerate the convert-outputs manifest line for the agent

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@ayobamiseun

Copy link
Copy Markdown
Contributor Author

@msitarzewski

Copy link
Copy Markdown
Owner

@msitarzewski
msitarzewski merged commit b37b5bb into msitarzewski:main Oct 25, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Electrical Engineer Agent for Telecom and Infrastructure Projects

2 participants