How to Build a Claude Skill That Writes Client Proposals (Step-by-Step SKILL.md Tutorial)

How to build a Claude Skill that writes client proposals

Every freelancer and small agency has the same Monday problem: three discovery calls last week, three proposals to write, and each one starts from a blank page or a half-remembered Google Doc. In this tutorial you'll build a Claude Skill that turns your call notes into a client proposal in your own structure, with your own pricing rules, every single time.

Quick answer: A Claude Skill is a folder with a SKILL.md file (YAML frontmatter with a name and description, then plain instructions) plus optional template and reference files. Zip the folder itself, upload it under Customize > Skills, switch it on, and Claude loads it whenever your request matches the description.

What You'll Build

By the end you'll have a skill called client-proposal that:

  • ✓ Reads rough notes from a discovery call (pasted text or an uploaded file)
  • ✓ Fills a fixed proposal template: problem, scope, timeline, pricing, next steps
  • ✓ Applies your pricing and payment rules from a reference file instead of guessing
  • ✓ Flags anything the notes don't cover, so Claude asks rather than invents

When I set this up for my own consulting work, the biggest win wasn't speed. It was consistency. Every proposal now has the same sections in the same order, and Claude stopped making up prices.

Prerequisites

  • A Claude account. Anthropic's help center says skills are available on Free, Pro, Max, Team and Enterprise plans.
  • Code execution switched on. Skills need it. On individual plans it's under Settings > Capabilities, labelled "Code execution and file creation" (shown as "Create and edit files" in the newer layout). On Team and Enterprise, an owner enables it in organization settings.
  • A plain text editor (VS Code, Notepad++, TextEdit in plain-text mode).
  • One past proposal you were happy with. You'll turn it into the template.
  • A way to make a ZIP file (built into Windows and macOS).

Step 1: Write the Skill's Job in One Sentence

Anthropic's own guidance is to write the task down in one sentence first, because that sentence becomes the description. Claude reads the description, and only the description, to decide whether to load the skill. So it has to contain the words you'd actually type.

Mine reads: "Write a client proposal from discovery call notes using the standard template and pricing rules. Use when the user asks for a proposal, quote, SOW or pitch for a client."

Notice the trigger words at the end: proposal, quote, SOW, pitch. If you leave those out, the skill will sit there unused.

Step 2: Create the Folder Structure

A skill is a folder named after the skill. Only SKILL.md is required. The other folders hold material that SKILL.md points Claude to. Create this:

client-proposal/
├── SKILL.md
├── assets/
│   └── proposal-template.md
└── references/
    └── pricing-and-terms.md

The folder name has to match the name field you'll write in the next step, character for character. This is the single most common reason an upload fails.

Step 3: Write the SKILL.md Frontmatter

Open SKILL.md and start it with YAML frontmatter. Two fields are required:

  • name: lowercase letters, numbers and hyphens only, up to 64 characters, matching the folder name.
  • description: what the skill does and when to use it, up to 1,024 characters.
---
name: client-proposal
description: Write a client proposal from discovery call notes using the standard template and pricing rules. Use when the user asks for a proposal, quote, SOW or pitch for a client.
---

Step 4: Write the Instructions

Everything after the frontmatter is ordinary Markdown that Claude follows once the skill loads. Keep it under 500 lines (Anthropic's recommendation) and mention each supporting file at the exact step where Claude should open it. Here's the full file I use as a starting point:

---
name: client-proposal
description: Write a client proposal from discovery call notes using the standard template and pricing rules. Use when the user asks for a proposal, quote, SOW or pitch for a client.
---

# Client proposal writer

Turn discovery call notes into a proposal the client can approve.

## Steps
1. Read the notes. List the client name, their problem in their
   words, the outcome they want, deadline and budget signals.
2. If client name, problem or desired outcome is missing, ask the
   user for it before writing anything.
3. Open assets/proposal-template.md and fill every section in order.
   Do not add or remove sections.
4. For pricing, read references/pricing-and-terms.md. Pick the
   package that fits the scope. Never invent a price that isn't
   in that file. If nothing fits, say so and suggest a custom quote.
5. Write in plain English, second person ("you"), short paragraphs.
   No jargon the client didn't use on the call.
6. End with a "Questions I still have" list for anything unclear.

## Output
A single Markdown document, ready to paste into a doc or email.

Step 2 matters more than it looks. Without it, Claude will fill gaps with plausible-sounding guesses, and a proposal is the worst place for that.

Step 5: Add the Proposal Template

Files in assets/ are things Claude copies or fills in rather than reads for guidance. Strip your best past proposal down to its headings and a one-line hint under each:

# Proposal for [Client name]

## Where you are today
[Their problem, in their words. 2-3 sentences.]

## What we'll build
[Scope as a bulleted list of deliverables.]

## What's not included
[Out-of-scope items, so nobody is surprised later.]

## Timeline
[Phases with week numbers.]

## Investment
[Package name, price, payment schedule from pricing file.]

## Next steps
[What the client does to start. One clear action.]

The "What's not included" section has saved me more arguments than any other line in a proposal. Keep it.

Step 6: Add Your Pricing Rules

Put pricing in references/pricing-and-terms.md. Reference files are read only when a step calls for them, which keeps the main file short. Use your real packages; this structure works well:

# Packages
- Starter automation: one workflow, up to 2 tools. Fixed price: [your price]
- Growth automation: up to 3 workflows, 1 custom integration.
  Fixed price: [your price]
- Retainer: monthly support and changes. [your monthly rate]

# Terms
- 50% upfront, 50% on delivery for fixed-price work.
- Quotes valid for 30 days.
- Prices exclude third-party subscriptions.

One warning from the docs that's worth repeating: don't put API keys, passwords or client data in a skill. Everyone you share it with gets every file inside it.

Step 7: Zip the Folder the Right Way

Claude looks for client-proposal/SKILL.md inside the archive. A SKILL.md sitting at the root of the ZIP isn't recognized. So you zip the folder, not its contents.

On macOS or Linux, run this from the folder that contains client-proposal:

zip -r client-proposal.zip client-proposal/
unzip -l client-proposal.zip

Every line in the listing should start with client-proposal/. On Windows, right-click the client-proposal folder itself and choose Compress to ZIP file (or Send to > Compressed (zipped) folder). Don't open the folder and select the files inside.

Step 8: Upload and Switch It On

  1. In claude.ai or the desktop app, go to Customize > Skills.
  2. Click the + button, then + Create skill.
  3. Choose Upload a skill and pick your ZIP.
  4. Find client-proposal in your skills list and make sure its toggle is on.

Step 9: Test It With Real Notes

Start a new chat and paste messy notes from a real call, then type something like "turn these notes into a proposal for Acme Bakery". Open Claude's thinking and check that it mentions loading the skill. Then try a prompt that's missing the budget or client name and confirm it asks instead of guessing.

If you use Claude Code, you can test before uploading: copy the folder to ~/.claude/skills/client-proposal/, start claude in any project, and either describe the task or type /client-proposal to run it directly.

Want a numbers check on whether the skill actually improves output? Anthropic ships a skill-creator skill that runs your skill on test prompts and compares the results. In Cowork and Claude Code it also runs a no-skill baseline side by side.

Troubleshooting

ProblemLikely cause and fix
Upload failsFolder name doesn't match name, SKILL.md is missing, invalid characters in name or description, or you zipped the contents instead of the folder.
Skill never loadsThe description doesn't contain the words you type. Add them ("quote", "SOW", "pitch") and re-upload.
Skill is on but never runs anythingSkills need code execution. Check Settings > Capabilities, or ask your org owner to enable it.
Claude ignores the templateName the file path in the exact step ("Open assets/proposal-template.md"), not in a general note at the bottom.
Prices are made upAdd an explicit "never invent a price" rule and tell Claude what to do when nothing fits.

Where to Go Next

Once this works, the same pattern covers follow-up emails, invoices and onboarding checklists. Keep each one as its own focused skill; Claude can use several in one conversation. If you're still deciding which assistant to build on, my ChatGPT vs Claude vs Gemini vs Grok comparison covers the trade-offs. For the bigger picture of where skills fit, read What Are AI Agents? A Beginner's Guide, and if proposals are only part of your writing load, see this roundup of AI writing tools.

Frequently Asked Questions

Do Claude Skills work on the free plan?

Yes. Anthropic's help center lists skills as available on Free, Pro, Max, Team and Enterprise plans. You do need code execution switched on in your settings first.

What's the difference between a Claude Skill and a Project?

Project instructions apply to every chat inside that project. A skill loads only when your request matches its description, and it can carry templates and scripts. Use a skill for a repeatable task you want done the same way anywhere.

Can a skill pull data from my CRM or Google Drive?

Not by itself. Live data comes from a connector (an MCP server). A skill can tell Claude how to use a connector you've already added, for example which folder to read client notes from.

How long can SKILL.md be?

Anthropic recommends keeping it under 500 lines. Move long material into references/ files and point to them from the step that needs them.

Can I share the skill with my team?

On Team and Enterprise plans you can open the skill from Customize > Skills and use Share or Publish to org. On other plans, send the ZIP and have each person upload it.

Want this built for your business?

I'm Basant, an AI automation consultant. Book a call: https://topmate.io/basant_narayan_singh

See more of my work at singhbasant.com.

NextGen Digital... Welcome to WhatsApp chat
Howdy! How can we help you today?
Type here...