engineering-drawings
Mechanical details and full DDC packages — schematics, I/O wiring, panel layouts, points lists, sequences — with a readability audit that refuses to render a sheet you cannot read.
FaberAG Engineering← Home
Four skills that carry a job from the first takeoff to the final O&M manual — and catch the change orders that used to disappear into a text thread.
About 20 minutes to read | installs on your machine | works job by jobOne plugin, four skills. They are packaged together because a job needs all of them, and an engineer who can draw a package but not produce the submittal for it is stuck halfway.
Mechanical details and full DDC packages — schematics, I/O wiring, panel layouts, points lists, sequences — with a readability audit that refuses to render a sheet you cannot read.
Estimating, submittal markup and assembly, division-of-responsibility matrices, scope letters, RFIs, change orders, scheduling.
Where a job stands across nine stages, what carried forward from the last one, and every field report a tech makes.
Builds a routing index for a job folder so picking the job up cold is reading rather than guessing.
AG loses change orders because a technician mentions a condition once, verbally, between two other tasks — and it never becomes paper.
That is not carelessness. A tech who says “there are more boxes up here than the print shows” has told the truth and moved on. The failure is that the sentence had nowhere to land. By the time anyone notices, it is unbilled work.
Every job now has an AG-JOB.md file that gives it somewhere to land: the tech's own words, who said them, when, and whether money is on the table. Even if nobody acts that day, the record exists — and a change order you can prove is a change order you can bill.
Two commands, then restart Claude Code. You need access to the shared job folder before you start; the office has the exact path.
claude plugin marketplace add "<the 0-Engineering folder on the shared drive>"
claude plugin install ag-engineering@ag-engineering1. Python dependencies. Two skills declare their own; the other two need nothing.
pip install -r skills/engineering-drawings/scripts/requirements.txt
pip install -r skills/ag-mep-controls/scripts/requirements.txt2. Your name on submittal covers. A submittal cover is a signed statement of who prepared the package, so it has to be you. Until you set these, covers print a visible placeholder rather than a silent blank.
setx AG_SUBMITTED_BY "Your Name"
setx AG_SUBMITTER_EMAIL "you@aberdeengroups.com"3. The job book. The plugin looks for the shared Drive at its usual letter. If yours mounts somewhere else, say so once:
setx AG_JOBS_ROOT "<your path to the QUOTES folder>"setx. The values do not reach a shell that was already running.Do not skip this. If the Drive letter is wrong, everything else fails later and further from the cause.
python skills/ag-project-flow/scripts/job_manifest.py find "<part of the building name>"You want a single job folder printed back. Jobs root not found means step 3 above. A list of candidates with ask which one means the name was ambiguous, which is the tool working correctly, not failing.
Then see the whole book at once:
python skills/ag-project-flow/scripts/job_manifest.py sweepThat prints every job with something waiting on a human, and counts the open change orders across all of them.
Every job moves through the same nine stages. The plugin knows which stage a job is in, what that stage produces, and which skill does the work.
Stage 4 is the pivot the whole job turns on. Before award, a scope movement is a re-bid. After it, the same movement is a change order you can bill. That is why the award date has to come off a contract, a PO or an LOI rather than being guessed — a date three weeks wrong misdates entitlement on every change that follows, and nobody catches it.
The plugin tells you what is incomplete and what normally comes next, then does what you asked. AG works ahead legitimately — early drawings to win a job, a fast-track NTP — and a tool that refuses gets worked around. Two things it will always say out loud, because both have cost real money: production drawings before award, and releasing to order before the submittal is approved.
One file per job, sitting in the job folder next to the work it describes. Plain markdown — open it and read it.
Job name and number, the PM, scope mode and contracting posture, the stage, the award date, and the counts carried forward — points, controllers, panels.
What technicians reported, in their own words, with who said it and when. Append-only. Nobody edits or deletes.
Anything needing a human answer. COR means money may be on the table, REVISION means an issued document has to change, RFI means a question for the design team.
Discrepancies recorded rather than resolved. If two sources disagree, both go here with their sources — silently picking one is how a wrong number survives.
Three commands cover most of what you need. Ask Claude in plain English and it will use them, but they are worth knowing.
python skills/ag-project-flow/scripts/job_manifest.py status "<job folder>"Stage, PM, what carried forward, what is incomplete for this stage, what comes next, and every open decision.
python skills/ag-project-flow/scripts/job_manifest.py find "<what the tech called it>"The job book is hundreds of folders named by hand over many years, where two spellings of one address are the same building and two others on the same street are not. Search by AG job number when you have it — it is the most precise thing you can give it.
python skills/ag-project-flow/scripts/job_manifest.py sweepEvery job with an untriaged report or an open decision, and the total open change orders. This is the one to run on a Monday.
Technicians do not touch any of this. They message EVA on Telegram the way they always have, and EVA writes what they said into the job file.
EVA records the tech's exact words, never a tidied-up summary. “More boxes up here than the print shows” is evidence. “Point count discrepancy noted” is not, and six months from now in an argument with a GC only the first one is worth anything.
She does not decide whether something is a change order — that needs the drawings, the estimate and the contract, none of which she has. She captures, flags the urgent ones, and notifies the PM named on the job.
Most reports can wait for review. These cannot, because a clock starts the moment the tech hears them — most subcontracts require written notice within 7 to 10 days of the event, not of when someone got round to filing it.
Read any manifest, run find, status and sweep, record what you learn, raise decisions, update counts as the drawn package establishes them.
Captures field reports verbatim, escalates the urgent ones, records the PM's answer, backfills a job number from Workflo. She does not create jobs.
Onboards a job. Stage, posture, scope mode and award date are judgment calls made against contract paperwork, and a job set up wrong is worse than one not set up yet.
Edits AG-JOB.md by hand. It looks like it works and silently breaks the change-order counting. Use the commands.
If find reports a job as (no AG-JOB.md yet), ask the office to onboard it rather than creating one yourself.
Ask for a detail or a DDC package in plain English. The skill activates on its own — you do not invoke it by hand.
Output is a native editable drawing model per sheet, with PDFs rendered when you ask for a print. Every sheet passes a deterministic readability audit before it renders: struck-through text, labels running off their boxes, balloons landing on other text, and symbols with pipes that connect to nothing all fail the gate. A sheet that cannot be read does not ship.
To watch it work end to end, render the bundled sample:
python skills/engineering-drawings/examples/example_package.pyThe ag-mep-controls skill covers the commercial side: point-count estimating, submittal markup and package assembly with real PDF annotations, division-of-responsibility matrices, scope letters, RFIs, change orders and scheduling.
Submittal assembly resolves cut sheets out of the shared cut-sheet library, which is why Drive access matters beyond the job book.
A CONTEXT_MAP.md is a routing index for a job folder: where the drawings live, which specs matter, what the phasing plan is, where the correspondence sits. It does a different job from AG-JOB.md and both belong in a job folder.
The manifest says where the job stands. The map says where everything is. The difference shows on a live job: the ones that already had a context map were the ones we could onboard by reading rather than guessing.
A restart does not refresh a marketplace. This is the one that costs an afternoon:
claude plugin marketplace update ag-engineering
claude plugin update ag-engineeringThe Drive is not where the plugin expected it. Set AG_JOBS_ROOT to your own path and open a new terminal.
Working as intended — two real jobs matched. Give it the AG job number instead, or a longer name. It refuses to guess because a report filed against the wrong job is worse than one filed late.
A dependency is missing. Run both requirements.txt installs from the install section; the error names the file to use.
The type was guessed from the wording because the entry was written by hand instead of through the tools. The money is still counted, but the guess can be wrong — tell the office so the entry can be raised properly.