Evaluate tabulated subcontractor bids against specs and drawings — scope gap analysis, exclusion risk scoring, award recommendation. Triggers: 'evaluate bids', 'bid evaluation', 'lowest responsible bidder'.
日本語の概要は準備中です。原文の説明を表示しています。
Split a bound project manual PDF into individual spec section PDFs and extract searchable text. Triggers: 'split specs', 'break up the project manual', 'separate spec sections', 'extract spec text'. Prerequisite for /submittal-log-generator.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Two functions for specification processing:
.txt files — enables downstream skills (submittal-log-generator, submittal-review, bid-evaluator) to work from text without re-extracting from PDFsRun after /project-setup identifies bound spec manuals. Produces split PDFs, spec_index.yaml, and extracted text consumed by /submittal-log-generator and /code-researcher.
Either function can run independently. For example, specs may already be split but text has not yet been extracted.
Spec Split Progress:
- [ ] Step 1: Check current state (split? text extracted?)
- [ ] Step 2: Discover Specifications directory
- [ ] Step 3: Find ALL spec PDFs (bound manuals)
- [ ] Step 4-5: Split PDF into individual section files
- [ ] Step 6: Write spec index
- [ ] Step 7: Extract text from all sections
- [ ] Step 8: Repair degraded/poor text quality
- [ ] Step 9: Write graph entry (AgentCM only)
Check what already exists:
Split PDFs present?
03 30 00 - Cast-in-Place Concrete.pdf)spec_index.yamlText already extracted?
.construction/skills/spec_text/manifest.json. Older versions wrote it to .construction/spec_text/: if only that exists, move the folder to .construction/skills/spec_text/ firstDetermine where split spec PDFs should go. Search for an existing Specifications directory (case-insensitive):
02 - Specifications/ (numbered project folder convention)Specifications/Output directory resolution:
{specs_dir}/Specification Sections/Specification Sections/ in project rootSearch the project directory for ALL PDFs that are specifications. Many projects have multiple spec PDFs:
Search in:
Process EACH PDF found. All split sections go to the same output directory.
If the user specifies a single file (/spec-splitter path/to/specific-volume.pdf), process only that file.
Run the split script with the resolved output directory:
"${CLAUDE_PLUGIN_ROOT}/bin/construction-python" "${CLAUDE_SKILL_DIR}/scripts/split_spec_manual.py" \
"{project_manual.pdf}" \
--output-dir "{resolved_spec_sections_dir}"
The script:
SECTION XX XX XX headers to find exact page boundaries — this is the primary method and does NOT depend on a Table of Contents{section_number} - {SECTION TITLE}.pdfspec_index.yaml with section metadataToC edge cases handled:
SECTION headers. Titles are extracted directly from each section's title page. The split still succeeds — titles may be slightly less polished than ToC-enriched versions.After splitting (or if specs are already split), extract searchable text from every section:
"${CLAUDE_PLUGIN_ROOT}/bin/construction-python" "${CLAUDE_SKILL_DIR}/scripts/extract_spec_text.py" \
--specs-dir "{resolved_spec_sections_dir}" \
--output-dir ".construction/skills/spec_text"
The script:
.txt file per section to .construction/skills/spec_text/manifest.json with quality metadata per section.txt files (use --force to re-extract all)After extraction, check manifest.json for sections rated DEGRADED or POOR. Spec-splitter owns text quality — downstream skills (submittal-log-generator, submittal-review, bid-evaluator) expect clean, repaired text.
For DEGRADED sections — attempt repair:
.txt file and identify failure modes from the manifesté → é, ligature breakage).txt file and update the manifest with "repair_attempted": true and the new quality rating.For POOR sections — vision extraction fallback:
"${CLAUDE_PLUGIN_ROOT}/bin/construction-python" "${CLAUDE_PLUGIN_ROOT}/scripts/pdf/rasterize_page.py" "{section.pdf}" {page} --dpi 200 --output spec_page.png
Extract all text from this construction specification page.
Preserve paragraph structure, numbering (A, B, C, 1, 2, 3),
and indentation hierarchy. This is CSI-formatted specification
section [SECTION NUMBER] - [SECTION TITLE].
.construction/skills/spec_text/, overwriting the POOR pdfplumber output"extraction_method": "vision", "repair_attempted": true, new quality ratingKnown abbreviation preservation list (do not merge these during repair):
{Specifications dir}/Specification Sections/
01 10 00 - SUMMARY.pdf
03 30 00 - CAST-IN-PLACE CONCRETE.pdf
08 71 00 - DOOR HARDWARE.pdf
...
spec_index.yaml
.construction/skills/spec_text/
01_10_00.txt
03_30_00.txt
08_71_00.txt
...
manifest.json
If AgentCM is present (.construction/project.yaml exists), write a graph entry:
"${CLAUDE_PLUGIN_ROOT}/bin/construction-python" "${CLAUDE_PLUGIN_ROOT}/scripts/graph/write_finding.py" \
--type "specs_split" \
--title "Spec sections split: {N} sections from {source_pdf}" \
--data '{"section_count": N, "source_pdf": "...", "output_dir": "...", "quality_summary": {"good": X, "degraded": Y, "poor": Z}}'
Without AgentCM, skip this step — the spec_index.yaml and manifest.json files serve as the local record.
Report to user: number of sections split, total pages, text extraction quality summary (GOOD/DEGRADED/POOR counts), and output locations.
Never overwrite existing split spec PDFs or extracted text. The split script skips existing sections. Text extraction overwrites only with --force. The spec_index.yaml merge is additive.
Allowed scripts — exhaustive list. Only execute these scripts during this skill:
scripts/split_spec_manual.py — split bound PDF into per-section PDFsscripts/extract_spec_text.py — extract searchable text from section PDFs${CLAUDE_PLUGIN_ROOT}/scripts/pdf/rasterize_page.py — rasterize PDF pages for vision fallback${CLAUDE_PLUGIN_ROOT}/scripts/graph/write_finding.py — graph entry (Step 9)${CLAUDE_PLUGIN_ROOT}/scripts/issue_manager.py — log a referenced spec section that does not exist to the Issue Registry (command and severity mapping in construction-guide)まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Evaluate tabulated subcontractor bids against specs and drawings — scope gap analysis, exclusion risk scoring, award recommendation. Triggers: 'evaluate bids', 'bid evaluation', 'lowest responsible bidder'.
日本語の概要は準備中です。原文の説明を表示しています。
Extract data from subcontractor bid PDFs and produce a comparison spreadsheet. Feeds into /bid-evaluator. Triggers: 'tabulate bids', 'bid comparison', 'compare bids', 'buyout analysis', 'bid tab'.
日本語の概要は準備中です。原文の説明を表示しています。
Scope-specific code gap analysis — extracts referenced codes from project docs, researches what should apply, surfaces the delta. Triggers: 'code research', 'what codes apply', 'code check', 'ADA requirements', 'egress'.
日本語の概要は準備中です。原文の説明を表示しています。
Operating guide for construction project documents — load before reading drawings, specs, schedules, RFIs, submittals or bids. Data-access rules (never read PDFs directly; rasterize first), AgentCM graph-guided vision, drawing and cross-reference conventions, document precedence. Triggers: 'construction project', 'drawings', 'specs', 'sheet', 'RFI', 'submittal'.
日本語の概要は準備中です。原文の説明を表示しています。
Construction document review with PE judgment — RFI research, submittal analysis, coordination checking, scope gap detection. Use when reviewing drawings, specs, submittals, or RFIs. Triggers: 'review', 'coordination', 'what's missing'.
日本語の概要は準備中です。原文の説明を表示しています。
Set 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'.
日本語の概要は準備中です。原文の説明を表示しています。