bid-evaluator
Evaluate tabulated subcontractor bids against specs and drawings — scope gap analysis, exclusion risk scoring, award…
Count-based quantity takeoff and tag completeness auditing for construction drawings. Vision + OCR reconciliation, sheet markup, Excel QTO output. Triggers: 'tag audit', 'quantity takeoff', 'QTO', 'count fixtures'.
Claude Code
$ npx -y skills add dleerdefi/claude-code-construction --skill tag-audit-and-takeoff --agent claude-code
Codex
$ npx skills add dleerdefi/claude-code-construction --skill tag-audit-and-takeoff -a codex -y
Cursor
$ npx skills add dleerdefi/claude-code-construction --skill tag-audit-and-takeoff -a cursor -y
Gemini CLI
$ npx skills add dleerdefi/claude-code-construction --skill tag-audit-and-takeoff -a gemini-cli -y
GitHub Copilot
$ npx skills add dleerdefi/claude-code-construction --skill tag-audit-and-takeoff -a github-copilot -y
OpenCode
$ npx skills add dleerdefi/claude-code-construction --skill tag-audit-and-takeoff -a opencode -y
Windsurf
$ npx skills add dleerdefi/claude-code-construction --skill tag-audit-and-takeoff -a windsurf -y
name: tag-audit-and-takeoff description: > Count-based quantity takeoff and tag completeness auditing for construction drawings. Vision + OCR reconciliation, sheet markup, Excel QTO output. Triggers: 'tag audit', 'quantity takeoff', 'QTO', 'count fixtures'. disable-model-invocation: true
Count-based QTO for tagged construction elements — fixtures, devices, doors, equipment, and any element identified by a tag/symbol on drawings. Does NOT do area (sqft) or linear (lf) takeoffs — only discrete counts.
The QTO is a byproduct of the audit. The real value: the completeness engine that finds what's tagged, what's missing, and produces a defensible count with full provenance for every number.
Does NOT: do area/linear takeoffs, create outbound documents autonomously, override user-approved groupings, or assume quantities without provenance.
---
Read `.construction/project.yaml` at the project root: present and readable means AgentCM mode (note its `contract_version`), absent means flat-file mode. A listing that shows the file does not decide it: read it.
**AgentCM mode** (`.construction/project.yaml` exists):
except its database section: never run `query.sh` or `query.ps1`, whatever the guide offers
runs the same with AgentCM closed; only the ingest (Step 8) needs AgentCM
the `id` of the entry in `.construction/index/sheet_index.yaml` whose `sheet_number` is that sheet. Never guess it from the number. If that file is missing, or its entries have no `id` (an older sheet-splitter wrote a `pages:` list with `filename` and `page_index`), say so and stop.
`sh .construction/crop.sh <sheet> <x> <y> <w> <h>` (or `powershell -File .construction/crop.ps1 <sheet> <x> <y> <w> <h>`) renders that box of the sheet's PDF page as a PNG and prints its path. `<sheet>` is the sheet's number as `.construction/INDEX.md` names it; the box is 0 to 1 from the top left of the sheet. Never rasterize whole sheets, and never ask for `rasters/` or `graph/export`: they are not part of AgentCM's contract.
**Flat File mode** (no `.construction/project.yaml`):
PDFs with `"${CLAUDE_PLUGIN_ROOT}/bin/construction-python" "${CLAUDE_PLUGIN_ROOT}/scripts/pdf/rasterize_page.py" "<pdf>" <page> --dpi 200 --output ".construction/skills/tag-audit-and-takeoff/pages/<sheet>.png"` (working data: never `/tmp` or any other folder outside the project)
JSON goes to `.construction/skills/tag-audit-and-takeoff/qto/` (Step 8)
User provides: (1) tag type — e.g., "plumbing fixtures", "doors", "light fixtures" (see `references/tag-types.md` for full list), and (2) sheet scope — specific sheets, a discipline, or "all sheets". Confirm scope before proceeding.
**REQUIRED: Tag type resolution (AgentCM mode).** The `tag_type` sent to AgentCM is one of contract 1's canonical names, listed in `${CLAUDE_PLUGIN_ROOT}/reference/agentcm-mode.md` (Tag types), and nothing else. Never invent one, and never send the takeoff's grouping as a type:
elevations; `detail_callout`, `section_callout`, `callout_single_ref`) → `simple_callout`; multi-reference callouts (elevation markers with N/E/S/W spokes; `multi_callout`, `callout_multi_ref`) → `multi_detail_callout`
diffusers, any other element tag) → `element_tag`
Report to the user: "Resolved type: '{name}' (from '{user_input}')" and get confirmation. If the request fits none of these, or two, ask the user.
**The takeoff's grouping comes from the files (AgentCM mode).** Plumbing fixtures, light fixtures and equipment are groups of the report, never types: a tag's code (`WC-1`, `L2`) belongs to the schedule whose key column holds it, `.construction/schedules/<sheet>-<n>.tsv` (INDEX.md's Schedules and legends table names each), and `.construction/tags.tsv` gives its `kind` (the lines starting with the code and a tab). Each line item's `group` is that schedule, named as INDEX.md names it, with its sheet; a code found in no schedule is grouped as `not in any schedule` and listed (`references/qto-output-format.md`). A takeoff of an `element_tag` group counts the codes of its schedule.
**HARD GATE — you MUST complete this step before proceeding to Step 2.** Do not skip this step.
Before scanning sheets, read what's already tagged per sheet, from AgentCM's files (never its API; the same whether AgentCM is open or closed):
`type` is the resolved type (box `x y w h`, `text`), and the lines of `.construction/tags.tsv` for that sheet with `accepted` in `how` and the kind of that tag (`room` for room_tag, `door` for door_tag; for element_tag,
Open-source skills that give Claude Code the working knowledge of a Project Engineer.
Evaluate tabulated subcontractor bids against specs and drawings — scope gap analysis, exclusion risk scoring, award…
Extract data from subcontractor bid PDFs and produce a comparison spreadsheet. Feeds into /bid-evaluator. Triggers: 'tabulate…
Researches which building codes, accessibility standards and authority requirements (health department, fire marshal, state…
Operating guide for construction project documents — load before reading drawings, specs, schedules, RFIs, submittals or bids.…
Checks construction drawings and specs for what's missing, cross-trade coordination conflicts and scope gaps, with PE judgment.…
Set up a construction project — inventories files, classifies drawings/specs/schedules/registers and appends construction context…
Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…