/spec-writer — CSI Outline Specification Writer
Takes a materials list, product schedule, or project description and produces outline specifications organized by CSI MasterFormat 2020 divisions. Output is a structured .md file ready for review by a senior specifier.
Project Dossier
If PROJECT.md exists in the working directory, read it before fetching — the Decisions index and decisions/ records hold material and product choices already made — specs must reflect them, not re-litigate them. After completing, note the produced spec sections in the dossier if a Program or Code entry references them. Update values in place (the dossier holds current state, not history), every entry with a source and date. No PROJECT.md? Skip silently — or mention /project-dossier init if the user is clearly starting a project.
Input
The user provides materials/products in one of these ways:
- Pasted text — a materials list, product schedule, or finish legend copied into the conversation
- File path — path to a CSV, Excel export, schedule PDF, or markdown file containing materials/products
- Verbal description — project type and general materials ("ground-up office with curtain wall, porcelain tile, ACT ceilings, painted gypsum board")
If the user invokes the skill without input, ask:
- What is the project type? (e.g., commercial office, multifamily residential, retail, healthcare, education)
- What materials or products should be specified? (paste a list, provide a file path, or describe them)
CSI MasterFormat Divisions Covered
Map every material/product to the correct division and section number using MasterFormat 2020:
| Division |
Title |
Common Sections |
| 03 |
Concrete |
03 30 00 Cast-in-Place Concrete, 03 45 00 Precast Architectural Concrete |
| 04 |
Masonry |
04 20 00 Unit Masonry, 04 40 00 Stone Assemblies |
| 05 |
Metals |
05 12 00 Structural Steel Framing, 05 50 00 Metal Fabrications, 05 51 00 Metal Stairs |
| 06 |
Wood, Plastics, and Composites |
06 10 00 Rough Carpentry, 06 20 00 Finish Carpentry, 06 40 00 Architectural Woodwork |
| 07 |
Thermal and Moisture Protection |
07 21 00 Thermal Insulation, 07 27 00 Air Barriers, 07 46 00 Siding, 07 54 00 Thermoplastic Membrane Roofing, 07 84 00 Firestopping, 07 92 00 Joint Sealants |
| 08 |
Openings |
08 11 00 Metal Doors and Frames, 08 14 00 Wood Doors, 08 44 00 Curtain Wall, 08 80 00 Glazing |
| 09 |
Finishes |
09 21 00 Plaster and Gypsum Board, 09 30 00 Tiling, 09 51 00 Acoustical Ceilings, 09 65 00 Resilient Flooring, 09 68 00 Carpeting, 09 91 00 Painting |
| 10 |
Specialties |
10 14 00 Signage, 10 21 00 Compartments and Cubicles, 10 28 00 Toilet Accessories |
| 12 |
Furnishings |
12 24 00 Window Shading, 12 36 00 Countertops, 12 48 00 Rugs and Mats |
| 22 |
Plumbing (fixtures only) |
22 40 00 Plumbing Fixtures |
| 26 |
Electrical (fixtures only) |
26 50 00 Lighting |
If a material does not fit these divisions, assign the closest match and note the limitation.
Spec Generation Workflow
Step 1: Parse and classify materials
Read the user's input and build an inventory:
- Material/product name — as provided
- CSI division and section number — mapped from the material type
- Section title — per MasterFormat conventions
Sort by division number, then section number. Group related items under the same section where appropriate (e.g., two paint types both go under 09 91 00).
Report the mapping to the user:
Identified X materials across Y divisions:
- 07 92 00 Joint Sealants: silicone sealant, urethane sealant
- 09 30 00 Tiling: porcelain floor tile, ceramic wall tile
- 09 91 00 Painting: latex paint, epoxy coating
Ask: "Does this mapping look correct? Any items to add or reassign?"
Step 2: Generate outline specifications
For each section, write a three-part outline spec following CSI SectionFormat. A complete worked example is in sample.md — a commercial office tenant improvement covering Division 09 finish sections and a Division 12 countertop section, with the full three-part structure, [REVIEW REQUIRED] flags, and the writing style below. Match its level of detail and formatting.
Part 1 — General
- 1.01 Section Includes: Scope of work covered by this section.
- 1.02 Related Sections: Cross-references to other specification sections (e.g., "Section 07 92 00 — Joint Sealants" from a tiling section).
- 1.03 References: Applicable standards — ASTM, ANSI, ADA, NFPA, UL, or other testing/certification standards relevant to the product. Cite specific standard numbers where known (e.g., ASTM C150 for portland cement, ASTM E84 for surface burning characteristics).
- 1.04 Submittals: Product data sheets, samples, shop drawings, certifications, LEED/sustainability documentation as applicable.
- 1.05 Quality Assurance: Installer qualifications, mock-up requirements (where relevant — typically for exposed finishes, masonry, curtain wall, architectural woodwork).
- 1.06 Delivery, Storage, and Handling: Standard requirements for the product type.
- 1.07 Warranty: Manufacturer warranty period. Use industry-standard minimums if not specified.
Part 2 — Products
- 2.01 Manufacturers: List a minimum of three acceptable manufacturers with "or approved equal" language. Select manufacturers appropriate to the project type and product category. Use well-known, nationally available manufacturers.
- 2.02 Materials/Products: Material composition, grade, class, or type. Reference applicable ASTM or industry standards.
- 2.03 Performance Criteria: Fire rating, slip resistance (DCOF for tile), sound transmission (STC/NRC for acoustical products), thermal resistance (R-value for insulation), load capacity, or other measurable criteria relevant to the product.
- 2.04 Finishes: Color, texture, pattern, sheen level, or surface treatment. Use "as selected by Architect from manufacturer's full range" for color selections unless the user specifies.
- 2.05 Accessories: Ancillary items required for a complete installation (trim, adhesives, grout, fasteners, sealants).
Part 3 — Execution
- 3.01 Examination: Substrate conditions to verify before installation. Moisture testing, levelness tolerances, etc.
- 3.02 Preparation: Surface preparation, priming, layout requirements.
- 3.03 Installation: Method of installation per manufacturer's written instructions and referenced standards. Include key installation requirements specific to the product.
- 3.04 Quality Assurance: Field quality control — inspection, testing, tolerances.
- 3.05 Cleaning and Protection: Post-installation cleaning, temporary protection during construction.
Step 3: Add spec notes
Include these where relevant:
Substitution Procedures: "Substitution requests shall be submitted in writing to the Architect a minimum of 10 days prior to bid date. Include product data, samples, and a point-by-point comparison with the specified product."
Mock-Up Requirements: For exposed finishes (masonry, architectural woodwork, tile, curtain wall), require a mock-up panel of specified size for Architect approval before proceeding with production work.
Generic Spec Flags: If a section is generic and lacks project-specific detail, append a note:
[REVIEW REQUIRED] This section contains generic outline specifications. A senior specifier shall review and supplement with project-specific requirements, local code references, and coordination with the design intent.
Apply the [REVIEW REQUIRED] flag when:
- No specific product or manufacturer was provided by the user
- The material is in a life-safety-related section (firestopping, fire-rated assemblies, glazing)
- Performance criteria are assumed rather than confirmed
Step 4: Write output
Compile all sections into a single .md file organized by division number.
Default output path: ./outline-specs-[project-slug].md
- Derive
[project-slug] from the project name or type provided by the user (lowercase, hyphenated — e.g., outline-specs-brannan-office.md)
- If no project name is given, use
outline-specs-draft.md
- Ask the user if they want a different path
File structure:
# Outline Specifications — [Project Name]
Generated: [date]
Project Type: [type]
Divisions: [count]
Sections: [count]
---
## Division 07 — Thermal and Moisture Protection
### Section 07 92 00 — Joint Sealants
#### Part 1 — General
**1.01 Section Includes**
...
#### Part 2 — Products
**2.01 Manufacturers**
...
#### Part 3 — Execution
**3.01 Examination**
...
---
## Division 09 — Finishes
### Section 09 30 00 — Tiling
...
Step 5: Summary
After writing the file, report:
Specifications written: X sections across Y divisions
Output: [file path]
Sections flagged for review: [count]
- [list flagged sections]
Writing Style
- Use specification language throughout: "shall", "provide", "verify", "submit", "conform to"
- Write in imperative mood, third person
- Do not use contractions
- Do not use first person ("we", "our")
- Capitalize "Architect", "Owner", "Contractor", "Installer" when referring to project roles
- Reference standards by full designation on first use (e.g., "ASTM C150/C150M, Standard Specification for Portland Cement"), abbreviated thereafter
- Use "approved equal" rather than "or equal"
- Measurements in imperial units unless the user specifies metric
Edge Cases
- Single material input: Generate one section. Still include the full three-part structure.
- Ambiguous materials: Ask the user to clarify. Example: "tile" could be ceramic wall tile (09 30 00), quarry tile (09 30 00), or ceiling tile (09 51 00).
- Materials outside covered divisions: Note the limitation and provide the best-fit section. Example: "Elevator cab finishes are typically specified under Division 14 — Conveying Equipment, which is outside the scope of this skill. Consider coordinating with the elevator vendor."
- Duplicate materials: Consolidate under one section. Do not create separate sections for "latex paint — walls" and "latex paint — ceilings" — combine under 09 91 00 with both applications noted.
- Very long lists (20+ materials): Process all of them. Give a progress update after every 5 sections written.
1---2name: spec-writer-43description: CSI outline specification writer — takes a materials or products list and generates structured specs with MasterFormat divisions, performance criteria, and acceptable manufacturers. Use when the user asks to "write a spec", produce outline specifications, or format a materials list into CSI sections.4---5
6# /spec-writer — CSI Outline Specification Writer
7
8Takes a materials list, product schedule, or project description and produces outline specifications organized by CSI MasterFormat 2020 divisions. Output is a structured `.md` file ready for review by a senior specifier.
9
10## Project Dossier
11
12If `PROJECT.md` exists in the working directory, read it before fetching — the **Decisions** index and `decisions/` records hold material and product choices already made — specs must reflect them, not re-litigate them. After completing, note the produced spec sections in the dossier if a **Program** or **Code** entry references them. Update values in place (the dossier holds current state, not history), every entry with a source and date. No `PROJECT.md`? Skip silently — or mention `/project-dossier init` if the user is clearly starting a project.
13
14## Input
15
16The user provides materials/products in one of these ways:
17
181. **Pasted text** — a materials list, product schedule, or finish legend copied into the conversation
192. **File path** — path to a CSV, Excel export, schedule PDF, or markdown file containing materials/products
203. **Verbal description** — project type and general materials ("ground-up office with curtain wall, porcelain tile, ACT ceilings, painted gypsum board")
21
22If the user invokes the skill without input, ask:
23
241. **What is the project type?** (e.g., commercial office, multifamily residential, retail, healthcare, education)
252. **What materials or products should be specified?** (paste a list, provide a file path, or describe them)
26
27## CSI MasterFormat Divisions Covered
28
29Map every material/product to the correct division and section number using MasterFormat 2020:
30
31| Division | Title | Common Sections |
32|----------|-------|-----------------|
33| 03 | Concrete | 03 30 00 Cast-in-Place Concrete, 03 45 00 Precast Architectural Concrete |
34| 04 | Masonry | 04 20 00 Unit Masonry, 04 40 00 Stone Assemblies |
35| 05 | Metals | 05 12 00 Structural Steel Framing, 05 50 00 Metal Fabrications, 05 51 00 Metal Stairs |
36| 06 | Wood, Plastics, and Composites | 06 10 00 Rough Carpentry, 06 20 00 Finish Carpentry, 06 40 00 Architectural Woodwork |
37| 07 | Thermal and Moisture Protection | 07 21 00 Thermal Insulation, 07 27 00 Air Barriers, 07 46 00 Siding, 07 54 00 Thermoplastic Membrane Roofing, 07 84 00 Firestopping, 07 92 00 Joint Sealants |
38| 08 | Openings | 08 11 00 Metal Doors and Frames, 08 14 00 Wood Doors, 08 44 00 Curtain Wall, 08 80 00 Glazing |
39| 09 | Finishes | 09 21 00 Plaster and Gypsum Board, 09 30 00 Tiling, 09 51 00 Acoustical Ceilings, 09 65 00 Resilient Flooring, 09 68 00 Carpeting, 09 91 00 Painting |
40| 10 | Specialties | 10 14 00 Signage, 10 21 00 Compartments and Cubicles, 10 28 00 Toilet Accessories |
41| 12 | Furnishings | 12 24 00 Window Shading, 12 36 00 Countertops, 12 48 00 Rugs and Mats |
42| 22 | Plumbing (fixtures only) | 22 40 00 Plumbing Fixtures |
43| 26 | Electrical (fixtures only) | 26 50 00 Lighting |
44
45If a material does not fit these divisions, assign the closest match and note the limitation.
46
47## Spec Generation Workflow
48
49### Step 1: Parse and classify materials
50
51Read the user's input and build an inventory:
52
53- **Material/product name** — as provided
54- **CSI division and section number** — mapped from the material type
55- **Section title** — per MasterFormat conventions
56
57Sort by division number, then section number. Group related items under the same section where appropriate (e.g., two paint types both go under 09 91 00).
58
59Report the mapping to the user:
60
61```
62Identified X materials across Y divisions:
63- 07 92 00 Joint Sealants: silicone sealant, urethane sealant
64- 09 30 00 Tiling: porcelain floor tile, ceramic wall tile
65- 09 91 00 Painting: latex paint, epoxy coating
66```
67
68Ask: **"Does this mapping look correct? Any items to add or reassign?"**
69
70### Step 2: Generate outline specifications
71
72For each section, write a three-part outline spec following CSI SectionFormat. A complete worked example is in [sample.md](sample.md) — a commercial office tenant improvement covering Division 09 finish sections and a Division 12 countertop section, with the full three-part structure, `[REVIEW REQUIRED]` flags, and the writing style below. Match its level of detail and formatting.
73
74#### Part 1 — General
75
76- **1.01 Section Includes**: Scope of work covered by this section.
77- **1.02 Related Sections**: Cross-references to other specification sections (e.g., "Section 07 92 00 — Joint Sealants" from a tiling section).
78- **1.03 References**: Applicable standards — ASTM, ANSI, ADA, NFPA, UL, or other testing/certification standards relevant to the product. Cite specific standard numbers where known (e.g., ASTM C150 for portland cement, ASTM E84 for surface burning characteristics).
79- **1.04 Submittals**: Product data sheets, samples, shop drawings, certifications, LEED/sustainability documentation as applicable.
80- **1.05 Quality Assurance**: Installer qualifications, mock-up requirements (where relevant — typically for exposed finishes, masonry, curtain wall, architectural woodwork).
81- **1.06 Delivery, Storage, and Handling**: Standard requirements for the product type.
82- **1.07 Warranty**: Manufacturer warranty period. Use industry-standard minimums if not specified.
83
84#### Part 2 — Products
85
86- **2.01 Manufacturers**: List a minimum of three acceptable manufacturers with "or approved equal" language. Select manufacturers appropriate to the project type and product category. Use well-known, nationally available manufacturers.
87- **2.02 Materials/Products**: Material composition, grade, class, or type. Reference applicable ASTM or industry standards.
88- **2.03 Performance Criteria**: Fire rating, slip resistance (DCOF for tile), sound transmission (STC/NRC for acoustical products), thermal resistance (R-value for insulation), load capacity, or other measurable criteria relevant to the product.
89- **2.04 Finishes**: Color, texture, pattern, sheen level, or surface treatment. Use "as selected by Architect from manufacturer's full range" for color selections unless the user specifies.
90- **2.05 Accessories**: Ancillary items required for a complete installation (trim, adhesives, grout, fasteners, sealants).
91
92#### Part 3 — Execution
93
94- **3.01 Examination**: Substrate conditions to verify before installation. Moisture testing, levelness tolerances, etc.
95- **3.02 Preparation**: Surface preparation, priming, layout requirements.
96- **3.03 Installation**: Method of installation per manufacturer's written instructions and referenced standards. Include key installation requirements specific to the product.
97- **3.04 Quality Assurance**: Field quality control — inspection, testing, tolerances.
98- **3.05 Cleaning and Protection**: Post-installation cleaning, temporary protection during construction.
99
100### Step 3: Add spec notes
101
102Include these where relevant:
103
104- **Substitution Procedures**: "Substitution requests shall be submitted in writing to the Architect a minimum of 10 days prior to bid date. Include product data, samples, and a point-by-point comparison with the specified product."
105- **Mock-Up Requirements**: For exposed finishes (masonry, architectural woodwork, tile, curtain wall), require a mock-up panel of specified size for Architect approval before proceeding with production work.
106- **Generic Spec Flags**: If a section is generic and lacks project-specific detail, append a note:
107
108 > **[REVIEW REQUIRED]** This section contains generic outline specifications. A senior specifier shall review and supplement with project-specific requirements, local code references, and coordination with the design intent.
109
110Apply the `[REVIEW REQUIRED]` flag when:
111- No specific product or manufacturer was provided by the user
112- The material is in a life-safety-related section (firestopping, fire-rated assemblies, glazing)
113- Performance criteria are assumed rather than confirmed
114
115### Step 4: Write output
116
117Compile all sections into a single `.md` file organized by division number.
118
119**Default output path**: `./outline-specs-[project-slug].md`
120
121- Derive `[project-slug]` from the project name or type provided by the user (lowercase, hyphenated — e.g., `outline-specs-brannan-office.md`)
122- If no project name is given, use `outline-specs-draft.md`
123- Ask the user if they want a different path
124
125**File structure:**
126
127```markdown
128# Outline Specifications — [Project Name]
129
130Generated: [date]
131Project Type: [type]
132Divisions: [count]
133Sections: [count]
134
135---
136
137## Division 07 — Thermal and Moisture Protection
138
139### Section 07 92 00 — Joint Sealants
140
141#### Part 1 — General
142
143**1.01 Section Includes**
144...
145
146#### Part 2 — Products
147
148**2.01 Manufacturers**
149...
150
151#### Part 3 — Execution
152
153**3.01 Examination**
154...
155
156---
157
158## Division 09 — Finishes
159
160### Section 09 30 00 — Tiling
161...
162```
163
164### Step 5: Summary
165
166After writing the file, report:
167
168```
169Specifications written: X sections across Y divisions
170Output: [file path]
171Sections flagged for review: [count]
172- [list flagged sections]
173```
174
175## Writing Style
176
177- Use specification language throughout: "shall", "provide", "verify", "submit", "conform to"
178- Write in imperative mood, third person
179- Do not use contractions
180- Do not use first person ("we", "our")
181- Capitalize "Architect", "Owner", "Contractor", "Installer" when referring to project roles
182- Reference standards by full designation on first use (e.g., "ASTM C150/C150M, Standard Specification for Portland Cement"), abbreviated thereafter
183- Use "approved equal" rather than "or equal"
184- Measurements in imperial units unless the user specifies metric
185
186## Edge Cases
187
188- **Single material input**: Generate one section. Still include the full three-part structure.
189- **Ambiguous materials**: Ask the user to clarify. Example: "tile" could be ceramic wall tile (09 30 00), quarry tile (09 30 00), or ceiling tile (09 51 00).
190- **Materials outside covered divisions**: Note the limitation and provide the best-fit section. Example: "Elevator cab finishes are typically specified under Division 14 — Conveying Equipment, which is outside the scope of this skill. Consider coordinating with the elevator vendor."
191- **Duplicate materials**: Consolidate under one section. Do not create separate sections for "latex paint — walls" and "latex paint — ceilings" — combine under 09 91 00 with both applications noted.
192- **Very long lists (20+ materials)**: Process all of them. Give a progress update after every 5 sections written.