# Construction Skills for Claude Code
Open-source skills that give Claude Code the working knowledge of a Project Engineer. Split drawings, parse specs, extract schedules, tabulate and evaluate bids, review submittals, draft RFIs, generate subcontracts, and more — directly from your terminal or IDE.
The skills ship as a Claude Code plugin named `construction` and work on Windows, macOS and Linux.
## Prerequisites
| | Windows | macOS | Linux |
|---|---|---|---|
| [Claude Code](https://claude.ai/code) | ✓ | ✓ | ✓ |
| Shell for the skills' commands | [Git for Windows](https://git-scm.com/download/win) (Git Bash) | built in | built in |
| Python 3.10 or newer | [python.org](https://www.python.org/downloads/) installer (the `py` launcher is fine) | [python.org](https://www.python.org/downloads/) or Homebrew — Apple's built-in `python3` is 3.9, too old | your distribution's `python3` (3.10+) with `venv` |
| `git` | included in Git for Windows | `xcode-select --install` or Homebrew | your package manager |
You also need your construction project documents (drawings, specs, bids, etc.).
## Setup
Install the plugin one of two ways. Both work the same on every OS; on Windows, run the commands in **Git Bash**.
### Option A — clone into your skills directory (recommended)
```bash
# Available in every project
git clone https://github.com/dleerdefi/claude-code-construction ~/.claude/skills/construction
cd ~/.claude/skills/construction && ./setup
# Or for one project only: run from your project folder
git clone https://github.com/dleerdefi/claude-code-construction .claude/skills/construction
.claude/skills/construction/setup
```
Claude Code loads the clone as the `construction` plugin in new sessions (or run `/reload-plugins` in an open one). `./setup` creates the Python environment and removes skill links left by older versions. Update later with `git pull` in the clone.
### Option B — install from the marketplace
Inside Claude Code:
```
/plugin marketplace add dleerdefi/claude-code-construction
/plugin install construction@construction-skills
```
No separate marketplace is needed: this repository is the marketplace. The Python environment is created automatically the first time a skill runs a script (about a minute). Updates arrive when a new version is released; turn on auto-update under `/plugin` → Marketplaces.
### Start using skills
Open Claude Code in your project folder and run:
```
/construction:project-setup
```
This inventories your project files, classifies document types, and adds construction context to your project's `CLAUDE.md` (run `/init` first if you don't have one).
> **Upgrading from an earlier version?** Pull the update and re-run `./setup` once to clean up the old per-skill links. Remove the `@~/.claude/skills/construction/.claude/skills/CLAUDE.md` line from your project's `CLAUDE.md`: that guide now ships as the `construction-guide` skill.
To check that everything works on your machine, follow [Validating your install](docs/VALIDATING.md).
## Skills
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/images/skills-by-phase-dark.svg">
<img alt="The fourteen skills on a project schedule: setup splits the drawing set and project manual, document review extracts schedules, counts tags, researches codes and checks coordination, buyout builds the submittal register, tabulates and evaluates bids and writes the subcontract, and contract administration reviews submittals and drafts RFIs, with the operating guide under every phase." src="docs/images/skills-by-phase-light.svg" width="900">
</picture>
Each bar marks where in the project a skill does most of its work, and the tag beside its name is the kind of file it leaves in your project folder.
| Command | What it does |
|---------|-------------|
| `/construction:project-setup` | Inventory project files, classify documents, establish context |
| `/construction:sheet-splitter` | Split a bound drawing set PDF into individual sheet PDFs |
| `/construction:spec-splitter` | Split a bound project manual into individual spec section PDFs + text |
| `/construction:schedule-extractor` | Extract door, finish, window, or panel schedules to Excel |
| `/construction:submittal-log-generator` | Parse every spec section and generate a submittal register in Excel |
| `/construction:bid-tabulator` | Tabulate multiple subcontractor bids into a comparison spreadsheet |
| `/construction:bid-evaluator` | Evaluate tabulated bids — scope gaps, risk scoring, award recommendation |
| `/construction:code-researcher` | Research applicable building codes, standards, and jurisdiction requirements |
| `/construction:subcontract-writer` | Generate a scope-specific subcontract from your firm's template |
| `/construction:rfi-drafter` | Draft RFIs and review the issues other skills have flagged |
| `/construction:submittal-review` | Review a submittal against specs, drawings, code questions and trade coordination, with trade routing, a completeness gate and a draft GC review |
| `/construction:pe-review` | Review drawings, specs, submittals or RFIs with Project Engineer judgment |
| `/construction:tag-audit-and-takeoff` | Count tagged elements across sheets and audit tag completeness |
| `/construction:construction-guide` | Operating guide Claude loads before working with your documents (data-access rules, conventions, document precedence) |
Type `/construction:` in Claude Code to list every skill. Claude also runs them on its own when your request matches.
## How the skills work together
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/images/skill-handoffs-dark.svg">
<img alt="Three chains of skills. The project manual becomes the submittal log through spec-splitter and submittal-log-generator. Bids become a subcontract through bid-tabulator and bid-evaluator, a hold point where you choose the award, and subcontract-writer. Issues that six skills log while they work become RFIs after a hold point where you pick them, through rfi-drafter. Every file is a draft; nothing is sent, signed or approved for you." src="docs/images/skill-handoffs-light.svg" width="900">
</picture>
One skill's output is the next one's input, so a bid tab feeds the evaluation and an issue logged during a review becomes an RFI later. Where the work needs your decision, such as an award or which issues to send, the skill stops and waits for you.
### Inside a submittal review
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/images/submittal-review-steps-dark.svg">
<img alt="The nine steps of a submittal review: intake, tracing every requirement from the contract documents before the submittal is opened, inventory of the submittal, a checkpoint with you on facility type, jurisdiction and code research, review of each element, package questions, code questions and trade routing, a completeness gate that re-runs until nothing is unaccounted for, and a draft GC review with a marked-up PDF. You decide the disposition and send it." src="docs/images/submittal-review-steps-light.svg" width="900">
</picture>
The review lists what the contract documents require before it looks at the submittal, so a missing item shows up as a finding instead of going unnoticed. Its completeness gate must pass before it writes the draft GC review.
## Tested with
Tested in Claude Code with **Claude Opus 5.5** and **Claude Sonnet 5.5** on Windows and macOS.
Every skill has an eval case that passed on Windows with Sonnet through the eval harness (one run each, 2026-10-02 to 2026-10-04); see the [eval suite README](evals/plugin/README.md) for what each case checks and the suite's known issues.
### Test documents
The evals run on the plans and specifications of Sanibel Fire and Rescue Station 172 (Sanibel, Florida; 100% Construction Documents, January 2024), which are publicly available. To run the real-document cases yourself, download the two folders and place the PDFs under `evals/test_docs/SANIBEL FIRE AND RESCUE STATION 172/`:
- Plans (four drawing sets): https://drive.google.com/drive/folders/1daHRgQ7AZW71MWdTbeO5TPXpVR47Ux9t
- Specifications (two project manual volumes): https://drive.google.com/drive/folders/1rAUukoAtcYixLcrwOtbMtAKQ0Jx3RKHj
[Running Evals](docs/RUNNING_EVALS.md) has the file list, where each goes, and the commands. Without the downloads the real-document cases are skipped, not failed.
Found a problem? [Open an issue](https://github.com/dleerdefi/claude-code-construction/issues) with your OS, model, and the skill's output.
## Output
Deliverables — Excel workbooks, Word documents, split sheet and spec PDFs, reports — are saved in your project folder where you can open them, and each skill tells you where. Skills keep their working data (extraction progress, extracted spec text, the issue registry) in a hidden `.construction/skills/` folder that you don't need to open. In AgentCM projects, `.construction/` also holds AgentCM's data, which skills read but never write.
## Documentation
- [Quickstart Guide](docs/QUICKSTART.md) — try your first skill in 5 minutes
- [Validating your install](docs/VALIDATING.md) — check the plugin works on your machine
- [Troubleshooting](docs/TROUBLESHOOTING.md) — common issues and fixes
- [CM Skills SOP](docs/CM_SKILLS_SOP.md) — skill architecture and design standard
- [Running Evals](docs/RUNNING_EVALS.md) and the [plugin eval suite](evals/plugin/README.md) — the scored evals for contributors
- For contributors: the [contributor guide](.claude/CLAUDE.md), the [skill roadmap](docs/SKILL_ROADMAP.md), and the [submittal-review design record](docs/SUBMITTAL_REVIEW_DECISIONS.md)
## Requirements
Python dependencies are installed into an isolated venv at `~/.construction-skills/venv/`, by `./setup` or automatically on first use, and re-synced whenever `requirements.txt` changes. No manual activation needed — all scripts run through `bin/construction-python`.
Packages: `pdfplumber`, `pymupdf`, `openpyxl`, `Pillow`, `PyYAML`, `python-docx`, `fpdf2`, and `claude-agent-sdk` (used only by the eval harness)
## License
MIT
---
Made with 👷 by [dleerdefi](https://github.com/dleerdefi)