Repository navigation
feat(engineering): add Electrical Engineer agent - #1177
Conversation
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
left a comment
There was a problem hiding this comment.
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 gap2. 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>

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:
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 agentREADME.md— roster row in the Engineering tablescripts/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 updateCloses #1144
🤖 Generated with Claude Code