$npx -y skills add dleerdefi/claude-code-construction --skill project-setupSet up a construction project — inventories files, classifies drawings/specs/schedules/registers, detects AgentCM mode, appends construction context to CLAUDE.md. Triggers: 'set up project', 'construction setup', 'classify documents'.
| 1 | # Project Setup |
| 2 | |
| 3 | Set up a construction project directory for use with Claude Code construction skills. This skill inventories all files, classifies construction document types, and appends construction-specific context to the project's CLAUDE.md. |
| 4 | |
| 5 | Run this **after** `/init` has created the base CLAUDE.md. |
| 6 | |
| 7 | ## Pipeline Position |
| 8 | ``` |
| 9 | /init (built-in) → THIS SKILL → /spec-splitter, /sheet-splitter → /submittal-log-generator |
| 10 | ``` |
| 11 | Runs once per project. Identifies which Builder skills should run next. |
| 12 | |
| 13 | ## Workflow |
| 14 | |
| 15 | ``` |
| 16 | Project Setup Progress: |
| 17 | - [ ] Step 1: Detect operational mode |
| 18 | - [ ] Step 2: Inventory and classify files |
| 19 | - [ ] Step 3: Present summary and recommend next actions |
| 20 | - [ ] Step 4: Amend project CLAUDE.md |
| 21 | ``` |
| 22 | |
| 23 | ### Step 1: Detect Operational Mode |
| 24 | |
| 25 | Check for `.construction/` directory at the project root. |
| 26 | |
| 27 | **If present (AgentCM mode):** |
| 28 | 1. Read `.construction/CLAUDE.md` for project navigation context |
| 29 | 2. Query database for entity counts (read `query_command` from `.construction/database.yaml`): |
| 30 | `{query_command} -c "SELECT (SELECT COUNT(*) FROM sheets WHERE project_id = '{id}') AS sheets, (SELECT COUNT(*) FROM rooms WHERE project_id = '{id}') AS rooms, (SELECT COUNT(*) FROM graph_elements ge JOIN sheets s ON s.id = ge.sheet_id WHERE s.project_id = '{id}') AS elements"` |
| 31 | Fallback: read `.construction/graph/graph_summary.yaml` if database unavailable |
| 32 | 3. Read `.construction/index/sheet_index.yaml` for drawing inventory |
| 33 | 4. Skip to Step 3 with instant summary — no file scanning needed |
| 34 | |
| 35 | **If absent (Flat File mode):** |
| 36 | Continue to Step 2. |
| 37 | |
| 38 | ### Step 2: Inventory and Classify Files |
| 39 | |
| 40 | Scan the project directory. No vision calls — use filename and folder pattern matching only. |
| 41 | |
| 42 | **Classification rules:** |
| 43 | |
| 44 | | Document Type | Detection Pattern | |
| 45 | |---|---| |
| 46 | | **Drawing sets** | PDFs in `drawings/`, `plans/`, or root with discipline prefixes (A-, S-, M-, E-, P-, C-, L-). PDFs > 2MB with keywords: "plan", "drawing", "bid set", "dwg". | |
| 47 | | **Specifications** | Folders named `Specifications/`, `specs/`, `02 - Specifications/`. PDFs with "project manual", "spec", "volume". CSI section number patterns in filenames. | |
| 48 | | **Schedules** | Excel/CSV files with "schedule", "CPM", "lookahead", "milestone" in name. | |
| 49 | | **Submittal log** | Excel files with "submittal" in name, typically in `Submittals/` or `06 - Submittals/`. | |
| 50 | | **RFI log** | Excel files with "RFI" in name, typically in `RFIs/` or logs folder. | |
| 51 | | **Change orders** | Excel/PDF files with "change order", "CO", "PCO" in name. | |
| 52 | | **Other** | Correspondence, photos, reports, geotechnical, environmental. | |
| 53 | |
| 54 | **Also check for existing indexes:** |
| 55 | - `sheet_index.yaml` → drawings already indexed |
| 56 | - `spec_index.yaml` → specs already split |
| 57 | - `.construction/spec_text/manifest.json` → spec text already extracted |
| 58 | |
| 59 | ### Step 3: Present Summary and Recommend Next Actions |
| 60 | |
| 61 | Report what was found: |
| 62 | |
| 63 | ``` |
| 64 | ## Project Summary |
| 65 | - Drawing sets: {count} PDFs ({disciplines found}) |
| 66 | - Specifications: {bound manual / split sections / not found} |
| 67 | - Schedules: {list} |
| 68 | - Registers: {RFI log, submittal log, CO log — found or not found} |
| 69 | - Other: {count} files |
| 70 | |
| 71 | ## Recommended Next Actions |
| 72 | ``` |
| 73 | |
| 74 | **Recommendations by mode:** |
| 75 | |
| 76 | | Condition | Recommendation | |
| 77 | |---|---| |
| 78 | | Bound spec manual found, not yet split | "Run `/spec-splitter` to split the project manual into individual sections and extract searchable text." | |
| 79 | | Bound drawing set found, flat file mode | "Run `/sheet-splitter` to split the drawing set into individual sheet PDFs and identify sheet numbers." | |
| 80 | | Bound drawing set found, AgentCM mode | "Split sheets via the AgentCM UI for zero-vision-cost splitting using labeled OCR data." | |
| 81 | | Specs already split but no text extracted | "Run `/spec-splitter` — specs are split but text extraction hasn't been done yet." | |
| 82 | | Submittal log needed | "Run `/submittal-log-generator` after spec text is available." | |
| 83 | | Specs split and text extracted | "Would you like to generate a submittal log from the specification sections? Run `/submittal-log-generator`." | |
| 84 | |
| 85 | ### Step 4: Amend Project CLAUDE.md |
| 86 | |
| 87 | Append construction-specific context to the **project root's CLAUDE.md** (the file created by `/init`). Do NOT modify the construction skills directory CLAUDE.md. |
| 88 | |
| 89 | **Append format:** |
| 90 | |
| 91 | ```markdown |
| 92 | ## Construction Project Context |
| 93 | |
| 94 | ### Document Locations |
| 95 | - Drawing set: {path} ({N} sheets, disciplines: {list}) |
| 96 | - Specifications: {path} ({N} sections or "bound manual, not yet split") |
| 97 | - Schedule: {path or "not found"} |
| 98 | - RFI log: {path or "not found"} |
| 99 | - Submittal log: {path or "not found"} |
| 100 | |
| 101 | ### Status |
| 102 | - Operational mode: {AgentCM / Flat File} |
| 103 | - Sheets indexed: {yes/no} |
| 104 | - Specs split: {yes |