Skip to content
Automation
Skill

/rfi-drafter

Draft RFIs and manage the ambient issue registry. Reviews issues surfaced by other skills, escalates to formal RFIs. Triggers: 'draft RFI', 'write RFI', 'drawing conflict', 'review issues', 'issue queue'.

From plugin
construction
5514 skills

Claude Code

$ npx -y skills add dleerdefi/claude-code-construction --skill rfi-drafter --agent claude-code

SKILL.md

rfi-drafter.SKILL.md
name: rfi-drafter
description: >
  Draft RFIs and manage the ambient issue registry. Reviews issues surfaced
  by other skills, escalates to formal RFIs. Triggers: 'draft RFI', 'write
  RFI', 'drawing conflict', 'review issues', 'issue queue'.
argument-hint: "[issue id or description of the conflict]"
disable-model-invocation: true

RFI Drafter

Purpose

Two responsibilities: (1) draft formal RFIs from identified issues, and (2) manage the issue detection registry where potential problems surface during other skill workflows. Detection is ambient. Drafting is user- triggered. No RFI is ever created without explicit user instruction.

**Design**: RIGID output format and quality checks. GUIDED research sequence before drafting. FLEXIBLE across any trade, CSI division, or document conflict type.

Does NOT: autonomously discover issues and write RFIs, send RFIs without user review, or determine whether an issue is actually an error vs. intentional design.

Permitted Scripts

| Script | Location | Purpose | |--------|----------|---------| | `rfi_export.py` | `${CLAUDE_SKILL_DIR}/scripts/rfi_export.py` | Populate firm's .docx template or generate generic RFI | | `issue_manager.py` | `${CLAUDE_PLUGIN_ROOT}/scripts/issue_manager.py` | CRUD for issue registry (.construction/skills/issues/) | | `generate_rfi_pdf.py` | `${CLAUDE_PLUGIN_ROOT}/scripts/rfi/generate_rfi_pdf.py` | Generate PDF RFI (alternative format) | | `rasterize_page.py` | `${CLAUDE_PLUGIN_ROOT}/scripts/pdf/rasterize_page.py` | Rasterize drawing pages for vision reading | | `crop_region.py` | `${CLAUDE_PLUGIN_ROOT}/scripts/pdf/crop_region.py` | Crop regions for targeted reading |

Run every script through `${CLAUDE_PLUGIN_ROOT}/bin/construction-python`, which selects the toolkit's Python on Windows, macOS and Linux. Never call bare `python`.

Do NOT create custom scripts during execution. All output goes through the scripts above.

---

Mode 1: User-Initiated RFI Drafting

The user identifies an issue and instructs Claude to draft an RFI. This is the primary workflow — a 30-minute task compressed to minutes.

Step 0: Gather RFI Template (first RFI per project)

Before the first RFI, ask the user for their firm's RFI form template. Construction teams have a branded template they use for all official RFIs — the output MUST match their format exactly.

**If .docx template provided:** 1. Read with python-docx to identify field locations (table cells, placeholders like `[PROJECT NAME]`, content controls) 2. Build a field mapping JSON linking each RFI data field to its location in the template 3. Store mapping at `.construction/skills/rfi-drafter/rfi_template_map.json` 4. Store a SHA-256 hash of the template for change detection

**If PDF template provided:** 1. Rasterize each page at 200 DPI 2. Read with vision to understand field layout and structure 3. Build the mapping JSON from visual analysis 4. Store at `.construction/skills/rfi-drafter/rfi_template_map.json`

**If no template available:** Fall back to the generic format built into `rfi_export.py`. Inform the user that providing their template is recommended for production RFIs.

On subsequent RFIs, reuse the stored mapping. If the template file hash differs from the stored hash, re-map.

Step 1: Understand the Issue

Gather from the user (or from an issue registry record if escalating):

  • **What**: the conflict, ambiguity, or missing information
  • **Where**: sheet number(s), grid location, room/area, detail ref
  • **Between what**: which documents disagree (plan vs detail, arch vs

structural, drawing vs spec, etc.)

If the user's description is vague, ask clarifying questions. Never draft from ambiguous input — an RFI that doesn't clearly state the problem wastes everyone's time.

Step 2: Research Context

Before drafting, systematically gather evidence. Read `references/research-checklist.md` for the full checklist.

**Minimum research before any RFI:** 1. Read the specific area on the source sheet(s) 2. Check related details/sections for the same condition 3. Check the relevant spec section for requirements 4. Check if general notes address the condition 5. Check addenda and ASIs for superseding changes 6. Check existing RFI log for duplicates (if available)

Read the sheet by rasterizing it and cropping to the conflict zone (the `${CLAUDE_PLUGIN_ROOT}` paths below are substituted only here in SKILL.md, not in the reference files):

mkdir -p ".construction/skills/rfi-drafter/pages"
"${CLAUDE_PLUGIN_ROOT}/bin/construction-python" "${CLAUDE_PLUGIN_ROOT}/scripts/pdf/rasterize_page.py" "{pdf}" {page} --dpi 200 --output ".construction/skills/rfi-drafter/pages/page.png"
"${CLAUDE_PLUGIN_ROOT}/bin/construction-python" "${CLAUDE_PLUGIN_ROOT}/scripts/pdf/crop_region.py" ".construction/skills/rfi-drafter/pages/page.png" --box x1,y1,x2,y2 --normalized --output ".construction/skills/rfi-drafter/pages/conflict_area.png"

Page images are working data: run these from the project folder and keep them under `.construction/skills/rfi-drafter/pages/`, never in the project root, never in `/tmp` or any other folder outside the project.

`{page}` is 1-based: `1` for a split sheet PDF, `page_index + 1` for a page in a bound set (sheet_index.yaml counts `page_index` from 0). The box is 0–1 fractions of the page.

First read `.construction/project.yaml`: present and readable means AgentCM manages the folder. A listing that shows the file does not decide it: read it. In AgentCM mode, read its files for cross-references to the affected area. See `references/research-checklist.md` for which files, and follow `${CLAUDE_PLUGIN_ROOT}/reference/agentcm-mode.md` (which source wins, missing files, drawings through `crop.sh`, corrections of AgentCM's data).

If research reveals the issue is already resolved (by addendum, ASI, or existing RFI response), inform the user — no RFI needed.

Step 3: Draft the RFI

Use the format in `references/rfi-format.md`. Every RF

Read more
@dleerdefi
Ships withconstruction

Open-source skills that give Claude Code the working knowledge of a Project Engineer.

Stars on GitHub

Momentum

stars in total
55
Star history of dleerdefi/claude-code-construction on GitHub, a chart by star-history.com

Other skills on construction.

bid-evaluator

bid-evaluator

Evaluate tabulated subcontractor bids against specs and drawings — scope gap analysis, exclusion risk scoring, award…

bid-tabulator

bid-tabulator

Extract data from subcontractor bid PDFs and produce a comparison spreadsheet. Feeds into /bid-evaluator. Triggers: 'tabulate…

code-researcher

code-researcher

Researches which building codes, accessibility standards and authority requirements (health department, fire marshal, state…

construction-guide

construction-guide

Operating guide for construction project documents — load before reading drawings, specs, schedules, RFIs, submittals or bids.…

pe-review

pe-review

Checks construction drawings and specs for what's missing, cross-trade coordination conflicts and scope gaps, with PE judgment.…

project-setup

project-setup

Set up a construction project — inventories files, classifies drawings/specs/schedules/registers and appends construction context…

More skills from other plugins.

agent-builder

agent-builder

Load immediately after an Agent intent, before the first agent_builder_* call. Governs how you create, configure, test, and…

n8n11d209k
@n8n-io@n8n-ioInstall Skill
browser-use

browser-use

Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…

@browser-use@browser-useInstall Skill
agent-browser

agent-browser

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…

@vercel-labs-2@vercel-labs-2Install Skill
add-anydoc

add-anydoc

Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when…

@nanocoai@nanocoaiInstall Skill

Questions about rfi-drafter.

Which coding agents can use rfi-drafter?
rfi-drafter installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.