How it works

Contractor Toolkit

Open-source Claude Code plugins. Free Claude Code plugins for contractors. Tell Claude about your company once, and it drafts estimates, bid packages, RFIs and daily logs in your brand.

Live · open sourceVisit the site ↗

Fig.Free Claude Code plugins for contractors: tell Claude about your company once, and it writes the paperwork in your brand.

Architecture

  1. AInstall· 3Your fork · Claude Code · claude.ai · Cowork
    • Your forkgit repoEXTERNAL

      EXTERNAL · git repo

      Fork the repo, configure it once, and push it to a private repo. Teammates clone it and get the company’s skills with no setup.

      Talks to

      • → Claude Code (marketplace add)
    • Claude Codeplugin marketplaceEXTERNAL

      EXTERNAL · plugin marketplace

      The marketplace file registers six plugins; each installs on its own.

      Talks to

      • ← Your fork (marketplace add)
      • → /initialize (installs)
    • claude.ai · Coworkskill zipsEXTERNAL

      EXTERNAL · skill zips

      The same skills as standalone packages, for the web app.

      Talks to

      • ← Skill packages (upload)
  2. BSetup· 3/initialize · Company config · contractor-brand
    • /initializeten sectionsUI

      UI · ten sections

      A conversational interview, one section at a time. Each answer is written into the template tokens of every skill that uses it; re-run one section and only its tokens change.

      Talks to

      • ← Claude Code (installs)
      • → Company config (writes)
    • Company configlocal MarkdownSTORE

      STORE · local Markdown

      The company’s answers, kept in local config. Capabilities are read at run time rather than substituted.

      Talks to

      • ← /initialize (writes)
      • → contractor-brand (tokens)
      • → contractor-estimating (defaults)
    • contractor-brandcolors · fonts · voiceSERVICE

      SERVICE · colors · fonts · voice

      Keeps every document on-brand: colors, type, logos and how the company sounds.

      Talks to

      • ← Company config (tokens)
      • → contractor-docs (brand)
  3. CSkills· 8contractor-estimating · contractor-extras · contractor-subs · contractor-docs · estimate-reviewer · scope-writer · sub-packager · Token guard
    • contractor-estimating13 skillsSERVICE

      SERVICE · 13 skills

      The preconstruction pipeline: ROM, plan takeoff, conceptual budget, scope check, sub bid packages, bid leveling, formal bid, contract and subcontract.

      Talks to

      • ← Company config (defaults)
      • → estimate-reviewer (review)
      • → scope-writer (scope)
      • → sub-packager (packages)
      • → contractor-docs (render)
    • contractor-extras13 skillsSERVICE

      SERVICE · 13 skills

      Everyday paperwork: proposals, RFIs and RFI logs, submittals, daily logs, look-aheads, change orders, punch lists, incident reports.

      Talks to

      • → contractor-docs
    • contractor-subs4 skillsSERVICE

      SERVICE · 4 skills

      For subcontractors: quotes, change order requests, T&M tickets and pay applications.

    • contractor-docsdocument engineSERVICE

      SERVICE · document engine

      Renders everything as HTML or DOCX in the company’s brand.

      Talks to

      • ← contractor-brand (brand)
      • ← contractor-estimating (render)
      • ← contractor-extras
      • → Documents (Write)
    • estimate-revieweragentAI

      AI · agent

      Checks an estimate before documents are generated.

      Talks to

      • ← contractor-estimating (review)
    • scope-writeragentAI

      AI · agent

      Writes project-specific scope by CSI division.

      Talks to

      • ← contractor-estimating (scope)
    • sub-packageragentAI

      AI · agent

      Builds one self-contained bid invitation per trade.

      Talks to

      • ← contractor-estimating (packages)
    • Token guardPostToolUse hookJOB

      JOB · PostToolUse hook

      Runs after every file Claude writes. A finished HTML document that still has an unfilled {{TOKEN}} is blocked.

      Talks to

      • → Documents (guards)
  4. DOutput· 3Documents · Release validation · Skill packages
    • DocumentsHTML · DOCXEXTERNAL

      EXTERNAL · HTML · DOCX

      Estimates, bids, contracts, logs and the rest, ready to send.

      Talks to

      • ← contractor-docs (Write)
      • ← Token guard (guards)
    • Release validationPython checksJOB

      JOB · Python checks

      Checks manifests, inventory, resource paths and template tokens. Unconfigured templates fail; there is no switch to skip it.

      Talks to

      • → Skill packages (gate)
    • Skill packagesdist buildJOB

      JOB · dist build

      Builds the standalone zips, after validation passes and a person reviews them.

      Talks to

      • ← Release validation (gate)
      • → claude.ai · Cowork (upload)
Connections · 15

→ request · ⇢ webhook, queue or schedule

  1. Your fork → Claude Code · marketplace add
  2. Claude Code → /initialize · installs
  3. /initialize → Company config · writes
  4. Company config → contractor-brand · tokens
  5. Company config → contractor-estimating · defaults
  6. contractor-estimating → estimate-reviewer · review
  7. contractor-estimating → scope-writer · scope
  8. contractor-estimating → sub-packager · packages
  9. contractor-brand → contractor-docs · brand
  10. contractor-estimating → contractor-docs · render
  11. contractor-extras → contractor-docs
  12. contractor-docs → Documents · Write
  13. Token guard ⇢ Documents · guards
  14. Release validation → Skill packages · gate
  15. Skill packages → claude.ai · Cowork · upload

Inside: the setup wizard and its safety gate

Setup rewrites a company’s own files, so it is run like a change to production: planned, shown as an exact diff, approved, backed up, applied, and checked byte for byte, with nothing ever reported as done that wasn’t.

  1. AInterview· 2Ten sections · Section re-run
    • Ten sectionsone at a timeUI

      UI · one at a time

      Company, services, brand colors, type, logos, voice, contact, ideal client, capabilities and estimating defaults, each with a default you can accept.

      Talks to

      • → Staged answers
    • Section re-runonly its tokensUI

      UI · only its tokens

      Re-run one section and only that section’s values change.

      Talks to

      • → Staged answers
  2. BPlan· 3Staged answers · Change plan · Diff + approval
    • Staged answersoutside live filesSERVICE

      SERVICE · outside live files

      Answers and full proposed files are staged away from the real ones and validated first.

      Talks to

      • ← Ten sections
      • ← Section re-run
      • → Change plan
    • Change planbefore hashes · contextsSTORE

      STORE · before hashes · contexts

      Every file, its hash before, the exact text and context of each replacement, and the fields that change. No global find-and-replace.

      Talks to

      • ← Staged answers
      • → Diff + approval
    • Diff + approvalbound to the planUI

      UI · bound to the plan

      The exact diff is shown, and approval is tied to that plan; change the plan and it needs approving again.

      Talks to

      • ← Change plan
      • → Snapshot (approved)
  3. CApply· 4Snapshot · Recheck · Exact edits · Readback
    • Snapshotbackups firstJOB

      JOB · backups first

      Backs up every target and verifies the backups before anything is touched.

      Talks to

      • ← Diff + approval (approved)
      • → Recheck
    • Recheckstale hash voids itSERVICE

      SERVICE · stale hash voids it

      Checks each file still matches its hash from the plan. If it changed since approval, the approval no longer counts.

      Talks to

      • ← Snapshot
      • → Exact edits
    • Exact editsper file, per contextSERVICE

      SERVICE · per file, per context

      Applies only the approved edits.

      Talks to

      • ← Recheck
      • → Readback
    • Readbackafter hashes · fieldsSERVICE

      SERVICE · after hashes · fields

      Reopens every changed file and compares it to the approved result, byte for byte and field by field.

      Talks to

      • ← Exact edits
      • → Receipt (pass)
      • → Needs a person (fail)
  4. DOutcome· 3Needs a person · Resume · Receipt
    • Needs a personnever a false successSERVICE

      SERVICE · never a false success

      Any failure, interruption or missing backup stops here, with the backups kept.

      Talks to

      • ← Readback (fail)
      • → Resume
    • Resumebefore · after · conflictSERVICE

      SERVICE · before · after · conflict

      On restart each file is classed from its actual bytes; finished edits are never repeated, and nothing is rolled back over someone else’s changes.

      Talks to

      • ← Needs a person
    • Receiptmeasured, not claimedSTORE

      STORE · measured, not claimed

      Reports only what was measured: sections, changed files, checkpoint and any tokens still unfilled.

      Talks to

      • ← Readback (pass)
Connections · 11

→ request · ⇢ webhook, queue or schedule

  1. Ten sections → Staged answers
  2. Section re-run → Staged answers
  3. Staged answers → Change plan
  4. Change plan → Diff + approval
  5. Diff + approval → Snapshot · approved
  6. Snapshot → Recheck
  7. Recheck → Exact edits
  8. Exact edits → Readback
  9. Readback → Receipt · pass
  10. Readback → Needs a person · fail
  11. Needs a person → Resume

Two flows

An idea becomes a formal bid

Walk through it and each step lights the parts it runs through in the drawings above.

By count

plugins
6
skills
38
agents
3
setup sections
10

Notes

  1. N.1Setup is a ten-minute interview: name, colors, logos, how you talk, who your clients are. Every document after that uses it.
  2. N.2Every skill is plain Markdown. You can open one and change how it works.
  3. N.3Push your configured copy to a private repo and your whole team gets your company’s skills with no setup.
  4. N.4A finished document can’t be saved with a blank {{TOKEN}} left in it.

Built by

I design, architect and build software products like this one.

naram@hey.com·See the rest of my work

More systems