Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add dleerdefi/claude-code-construction --skill rfi-draftergit clone --depth 1 https://github.com/dleerdefi/claude-code-constructionWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/dleerdefi/claude-code-construction/rfi-drafter)<a href="https://agentmods.dev/skills/dleerdefi/claude-code-construction/rfi-drafter"><img src="https://agentmods.dev/badge/skills/dleerdefi/claude-code-construction/rfi-drafter/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/dleerdefi/claude-code-construction/rfi-drafter"><img src="https://agentmods.dev/badge/skills/dleerdefi/claude-code-construction/rfi-drafter.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00055 | $0.02452 |
| Opus 5 | $0.00028 | $0.01226 |
| Sonnet 5 | $0.00011 | $0.00490 |
| Haiku 4.5 | $0.00006 | $0.00245 |
Grade A, and why
rfi-drafter scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 268 lines — stays where its author put it; the contents beside it link to each section on GitHub.
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_SKILL_DIR}/../../scripts/issue_manager.py |
CRUD for issue registry (.construction/issues/) |
generate_rfi_pdf.py |
${CLAUDE_SKILL_DIR}/../../scripts/rfi/generate_rfi_pdf.py |
Generate PDF RFI (alternative format) |
rasterize_page.py |
${CLAUDE_SKILL_DIR}/../../scripts/pdf/rasterize_page.py |
Rasterize drawing pages for vision reading |
crop_region.py |
${CLAUDE_SKILL_DIR}/../../scripts/pdf/crop_region.py |
Crop regions for targeted reading |
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:
- Read with python-docx to identify field locations (table cells,
placeholders like
[PROJECT NAME], content controls) - Build a field mapping JSON linking each RFI data field to its location in the template
- Store mapping at
.construction/rfi_template_map.json - Store a SHA-256 hash of the template for change detection
What ships with it
9 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- agents/openai.yaml 260 B
- references/common-issue-types.md 43 B
- references/issue-record.schema.json 3.5 KB
- references/issue-schema.md 3.9 KB
- references/quality-checks.md 3.3 KB
- references/research-checklist.md 5.4 KB
- references/rfi-format.md 5.1 KB
- scripts/rfi_export.py 13 KB runs code
- scripts/shared.py 554 B runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 8d ago First seen · 268 lines · 55 tokens per session scan A 8542d32030a5
rfi-drafter is a skill published in the GitHub repository dleerdefi/claude-code-construction (37 stars, last pushed 4mo ago), licensed MIT. It adds 55 tokens to every session and 2,452 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
baoyu-youtube-transcript
A tool for downloading the written captions, subtitles, chapter information, speaker labels, and cover image from a YouTube video using its URL or ID.
baoyu-url-to-markdown
Fetch any URL and convert to markdown using baoyu-fetch CLI (Chrome CDP with site-specific adapters). Built-in adapters for X/Twitter, YouTube transcripts, Hacker News threads, and generic pages via Defuddle. Handles login/CAPTCHA via interaction wait modes. Use when user wants to save a webpage as markdown.
agent-wiki
Incremental LLM-friendly wiki generator for Obsidian note vaults. Use when: (1) Building wiki from notes, (2) Ingesting notes to wiki, (3) Obsidian LLM wiki, (4) Incremental knowledge base management. Triggers: 'build wiki from notes', 'ingest notes to wiki', 'Obsidian LLM wiki', 'incremental knowledge base'.
download-fulltext-pdf
A skill for downloading a research paper's complete PDF using an identifier such as a DOI, title, or BibTeX entry.
latex-empirical-tables
Set up, format, fix, and clean up LaTeX regression and estimation tables in empirical economics or finance papers. Use when (a) creating a .tex, results.tex, main.tex, or preamble to display regression or estimation output from Python (pyfixest), Stata, or R — including any mention of estout, esttab, estauto, estwide…
content-portability
Use when the user says 'export my site', 'backup my pages before editing', 'download my content locally', or 'migrate content to my other site'. Exports pages, posts, and custom posts to portable local packages with builder data, media, and markdown, then imports elsewhere with ID remapping.