Skip to content
Automation
Skill

/submittal-log-generator

Extract all submittal requirements from specification sections and generate a comprehensive submittal register in Excel. Triggers: 'submittal log', 'extract submittals', 'submittal register'. Requires /spec-splitter output.

From plugin
claude-code-construction
4113 skills
Install
$ npx -y skills add dleerdefi/claude-code-construction --skill submittal-log-generator --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/submittal-log-generator

Context preview

The summary Claude sees to decide when to auto-load this skill.

Extract all submittal requirements from specification sections and generate a comprehensive submittal register in Excel. Triggers: 'submittal log', 'extract submittals', 'submittal register'. Requires /spec-splitter output.

SKILL.md

submittal-log-generator.SKILL.md
name: submittal-log-generator
description: >
  Extract all submittal requirements from specification sections and generate
  a comprehensive submittal register in Excel. Triggers: 'submittal log',
  'extract submittals', 'submittal register'. Requires /spec-splitter output.
argument-hint: "[spec_range: all|div_08|div_09]"
disable-model-invocation: true

Submittal Log Generator

Long-running skill that processes every specification section to extract submittal requirements and produces a professional submittal register in Excel. Designed to handle full project manuals (200+ spec sections) with state persistence.

**Prerequisite:** This skill depends on `/spec-splitter` to provision clean, per-section `.txt` files at `.construction/spec_text/`. The spec-splitter owns all text quality — extraction, repair, and quality assessment. This skill reads those `.txt` files and focuses on identifying submittal items.

Design Philosophy: Scripts for Structure, Claude for Judgment

This skill uses a three-tier approach:

  • **RIGID** (scripted, deterministic): File I/O, Excel output schema, directory structure, naming conventions. Follow these exactly. Do not improvise.
  • **GUIDED** (decision tree, Claude picks the branch): Confidence scoring, output location discovery. Follow the decision logic; adapt thresholds to what you observe.
  • **FLEXIBLE** (domain knowledge, Claude thinks): Identifying what is actually a submittal item, distinguishing submittals from boilerplate, resolving ambiguity, handling non-standard spec formats. Use your understanding of construction documents and the domain knowledge below.

**Allowed scripts — exhaustive list.** Only execute these scripts during this skill:

  • `export_submittal_log.py` — Excel output from assembled JSON (Step 4)
  • `write_finding.py` — graph entry (Step 5)

Do not create, generate, or write any `.py`, `.sh`, or other script files. All data assembly is Claude writing JSON directly.

Current Submittal State

!`cat .construction/submittal_extraction_state.yaml 2>/dev/null || echo "No prior extraction — starting fresh"`

---

Output Schema — RIGID

The Excel submittal log MUST contain these columns in this order. Do not rename, reorder, or omit columns.

| Column | Description | Example | |---|---|---| | Spec Section | CSI section number | 03 30 00 | | Spec Title | Section title | Cast-in-Place Concrete | | Submittal No. | Sequential ID: `[Section]-[###]` | 03 30 00-001 | | Submittal Type | Categorized type (see taxonomy below) | Product Data | | Submittal Description | The actual submittal requirement, cleaned | Submit product data for each concrete mix design including compressive strength, admixtures, and mix proportions | | Article Reference | Where found in the spec | 1.3.A.1 | | Action/Informational | Action or Informational | Action | | Confidence | HIGH / MEDIUM / LOW / FLAGGED | HIGH | | Flag Reason | Empty if HIGH; explanation otherwise | Possible boilerplate — verify intent | | Extraction Method | pdfplumber / vision / hybrid | pdfplumber | | Notes | Any context Claude thinks the PE should know | Referenced mix designs in 03 31 00 |

Formatting

Use the rigid export script for all Excel output. The script handles:

  • Header row: Bold, dark background (RGB 44,62,80), white text, freeze panes
  • Alternating row shading for readability
  • Auto-filter on all columns
  • Column widths sized to content (Submittal Description gets the widest)
  • Conditional formatting on Confidence column: HIGH=green, MEDIUM=yellow, LOW=orange, FLAGGED=red
  • Summary sheet with counts by section, type, and confidence level
  • Extraction QA sheet with per-section quality metrics

---

Workflow — RIGID Structure, GUIDED Decisions

Submittal Log Progress:
- [ ] Step 0: Ensure spec text is available (invoke /spec-splitter if needed)
- [ ] Step 1: Submittal identification (per section, Claude intelligence)
- [ ] Step 2: Confidence scoring & flagging
- [ ] Step 3: Assembly & deduplication
- [ ] Step 4: Excel output (rigid script)
- [ ] Step 5: Write graph entry

Step 0: Ensure Spec Text Is Available — RIGID

This skill reads from `.construction/spec_text/*.txt` files provisioned by `/spec-splitter`. Check whether they exist and invoke spec-splitter if needed.

**Branch A — Text already extracted:** 1. Check `.construction/spec_text/manifest.json` 2. If present with corresponding `.txt` files → inventory them, build the processing queue, proceed to Step 1 3. Note any sections with `quality_rating: "POOR"` in the manifest — items extracted from these sections will receive a minimum confidence of MEDIUM

**Branch B — No text extracted:** 1. Invoke `/spec-splitter` — it will handle everything: locating or splitting spec PDFs, extracting text, and repairing quality issues 2. After `/spec-splitter` completes, read `.construction/spec_text/manifest.json` and proceed to Step 1

**Important:** Always invoke `/spec-splitter` as a skill — do not call `extract_spec_text.py` or `split_spec_manual.py` directly. The spec-splitter skill manages directory discovery, naming conventions, text extraction, and text repair.

**Build processing queue from manifest:** 1. Read all section keys from `manifest.json` 2. For each section, verify the corresponding `.txt` file exists 3. Sort by CSI section number 4. Build the queue

Initialize state file:

# .construction/submittal_extraction_state.yaml
run_id: "uuid"
started: "ISO-8601"
status: "in_progress"
total_sections: 48
processed: 0
current_section: null
queue_remaining: ["03 30 00", "04 20 00", ...]
submittals_found: 0
errors: []

Step 1: Submittal Identification — FLEXIBLE (Claude Intelligence)

For each section in the queue, read the `.txt` file from `.construction/spec_text/` and identify submittal items.

This is where your understanding of construction specifications matters most. Do not follow a rigid script here — use the domain knowledge below to identify every legitimate submittal requirement whi

Read more
Ships withclaude-code-construction

Open-source skills that give Claude Code the working knowledge of a Project Engineer. Split drawings, parse specs, tabulate bids, generate subcontracts, and more — directly from your terminal or IDE.

Get the whole plugin
Stats
41
Stars
12
Forks
Maintained
Maintenance
Python
Language
MIT
License
5mo ago
Last commit
5mo ago
Created

Repo: dleerdefi/claude-code-construction

Other skills on claude-code-construction.