What you will build
Your first custom Claude Skill: a small folder that teaches Claude one repeated business job, here quoting, so it follows your rules every time the job comes up. The folder holds a SKILL.md file with a name, a description and your instructions, plus two reference files: your price list and a few worked examples. You will write three tests before you upload, package the folder as a ZIP, upload it to Claude, test it in fresh chats, and save a known-good version.
The same method works for enquiry replies. Swap the price list for your business notes and the examples for good replies.
Before you start
- A Claude account. Claude's help centre says Skills need code execution turned on, and lists Settings > Capabilities as the place to enable it on individual plans. Plan support for uploading custom Skills is described slightly differently across Anthropic's pages, so check your own Skills menu. See Use Skills in Claude.
- A job you already do the same way each time. If you have not written it down yet, do Turn a customer message into a draft quote first. A Skill packages a routine; it does not invent one.
- Your price list in plain text. See Put your price list in a shape AI can read correctly.
- Three past requests with the quotes you actually sent, anonymised.
- A plain text editor and a way to make a ZIP file (both Mac and Windows can do this from the file manager).
- About 60 minutes.
How it works
Anthropic's help centre describes Skills as folders of instructions, scripts and resources that Claude loads dynamically to do specialised tasks well. The key idea is what the docs call progressive disclosure. Claude always sees each Skill's name and description, which are short. When your request matches a description, Claude reads the SKILL.md instructions. Only when the instructions point to a reference file, such as your price list, does Claude open that file. See the Agent Skills overview.
So the description is the most important line you write: it is what Claude matches your request against. A Project is a workspace with files for one area of work; a Skill is a procedure Claude can pick up in any chat when the task fits. Both follow the Desk pattern: written rules, stop rules, a human who approves before anything is sent, and a known-good copy.
- Pick one stable, repeated job.
- Collect the rules, reference data and examples.
- Write the name and description.
- Write the
SKILL.mdinstructions. - Add reference files, one level deep.
- Write three tests before you upload.
- Package the folder and upload it.
- Test in fresh chats and refine.
- Save the known-good version and look after it.
Step 1: Pick one stable, repeated job
Good first Skills are narrow, repeated and already done the same way each time. Anthropic's tutorial on teaching Claude your way of working suggests Skills fit best when you have refined an approach by explaining it again and again.
Good candidates:
- Drafting quotes from your price list
- Drafting replies to common enquiries
- Turning job notes into a job summary
- Sorting receipts into your accountant's categories
Poor first candidates: anything that changes every time, anything that needs judgment you have not written down, and anything that acts on the world, such as sending or paying.
Check
- The job happens at least weekly.
- You can describe the steps in plain words.
- The job ends in a draft that a person approves.
Step 2: Collect the rules, reference data and examples
Gather three things in one folder on your computer:
- Rules: your quote rules, stop rules and the human-owned actions.
- Reference data: your price list, in plain text.
- Examples: two or three past requests with the output you would want, anonymised.
Anthropic's Skill authoring best practices stress being concise. Claude already knows how to write politely and do arithmetic. Your Skill only needs what Claude cannot know: your prices, your limits, your format and your stop rules.
Check
- Rules, prices and examples are all in plain text.
- Nothing general that Claude already knows is included.
- Examples are anonymised.
Step 3: Write the name and description
Every SKILL.md starts with a short header in YAML format with two required fields.
---
name: quoting-print-jobs
description: Drafts quotes for print jobs (banners, bunting, stickers, name cards) from PRICES.md. Use when a customer asks for a price, harga or quotation for a print job.
---Rules for the name, from Anthropic's docs: maximum 64 characters, only lowercase letters, numbers and hyphens, and it cannot contain the words "anthropic" or "claude". The docs suggest the verb-plus-ing form, such as quoting-print-jobs.
Rules for the description: say what the Skill does and when to use it, in the third person ("Drafts quotes", not "I draft quotes"). The developer docs allow up to 1,024 characters, but Claude's help article on creating custom Skills gives a 200-character limit for the description. Keep yours under 200 to be safe.
Include the words your customers actually use. If they write "berapa harga", put "harga" in the description. Anthropic's best practices list vague descriptions such as "Helps with documents" as ones to avoid, because Claude cannot tell when to use them.
Check
- The name follows the character rules and matches the folder name.
- The description says what and when, in the third person.
- The description is under 200 characters and includes customer words.
Step 4: Write the SKILL.md instructions
Below the header, write the instructions. Keep them short and ordered. The best practices guide suggests keeping the SKILL.md body under 500 lines and using a checklist for multi-step work.
# Quoting print jobs
## Workflow
Copy this checklist and tick it off:
- [ ] 1. Read the request. List size, quantity, material, finishing, area, deadline.
- [ ] 2. Match each item to a line in PRICES.md. Quote the line.
- [ ] 3. Anything not in PRICES.md goes under NEEDS OWNER PRICE. Never estimate.
- [ ] 4. List every assumption.
- [ ] 5. Write at most three questions for the customer.
- [ ] 6. Check the output against the rules below before showing it.
## Rules
- Use only prices in PRICES.md. Copy them exactly.
- Show line items as CSV: item, unit, quantity, unit_price_RM, source_line.
- Do not give a grand total. The owner totals it in the spreadsheet.
- Reply in the customer's language (BM or English).
- Never promise a completion date. Say the owner will confirm.
## Stop rules
Write OWNER REVIEW and the reason, and do not draft a quote, if the request:
- asks for a discount or a rush job,
- is a complaint or a reprint dispute,
- includes content that may need permission (logos, photos of people).
## Output format
LINE ITEMS (CSV), NEEDS OWNER PRICE, ASSUMPTIONS, QUESTIONS, COVER MESSAGE,
then: STATUS: draft, waiting for owner approval.
## Reference files
- Prices: see PRICES.md
- Worked examples: see EXAMPLES.mdUse one word for one thing throughout. If you call it a "price list" in one place, do not call it "rate card" somewhere else. The best practices guide says consistent terms help Claude follow instructions.
Check
- The workflow is a short numbered checklist.
- Stop rules and the approval status are written in.
- Reference files are named in the instructions.
Step 5: Add reference files, one level deep
Put your price list and examples in separate files next to SKILL.md. Claude reads them only when the instructions point to them. The best practices guide advises keeping references one level deep, meaning SKILL.md links directly to each file, and adding a short contents list at the top of any file longer than about 100 lines.
quoting-print-jobs/
SKILL.md
PRICES.md one block per item: unit, price, includes, minimum, needs owner price when
EXAMPLES.md two or three request and output pairs, anonymisedFor EXAMPLES.md, follow the input and output pattern from the docs:
Example 1
Request: "Banner 6x3 kaki, bunting 2 pcs, untuk kedai makan."
Output: LINE ITEMS (CSV) with source lines, NEEDS OWNER PRICE: none, ASSUMPTIONS: standard material, no eyelets requested, QUESTIONS: bila perlu siap? ada design atau perlu kami buat?Check
- Every reference file is linked from
SKILL.md. - No reference file links to another reference file.
- Examples use your real format, with no personal data.
Step 6: Write three tests before you upload
Anthropic's best practices recommend building evaluations before writing extensive instructions, and having at least three. For a business Skill, write three test prompts with the behaviour you expect.
TEST 1: normal job
Prompt: [a typical request, anonymised]
Expected: Skill triggers; every price has a source line; no total; questions asked; status draft
TEST 2: item not on the price list
Prompt: [request for something you do not list]
Expected: NEEDS OWNER PRICE, no invented price
TEST 3: should not trigger
Prompt: [an unrelated request, e.g. "write a Hari Raya greeting for our customers"]
Expected: Skill does not triggerBefore uploading, run Test 1 without the Skill in a fresh chat and save the answer. That is your baseline. After uploading, you can see exactly what the Skill changed.
Check
- Three tests written, including one that should not trigger.
- Each test has a clear expected behaviour.
- A baseline answer without the Skill is saved.
Step 7: Package the folder and upload it
Claude's help centre gives the packaging rules: the folder name should match the Skill name, and the ZIP should contain the folder itself at the top, not loose files.
quoting-print-jobs.zip
quoting-print-jobs/
SKILL.md
PRICES.md
EXAMPLES.mdTo upload, the help centre describes going to Customize > Skills, choosing "+", then "+ Create skill", then "Upload a skill", and selecting your ZIP. An older Anthropic tutorial places Skills under Settings > Capabilities. Menus may move; check your app. After uploading, make sure the Skill's toggle is on.
A few facts worth knowing from Anthropic's docs: custom Skills uploaded in the Claude app are individual to your account, and they do not sync to other surfaces such as Claude Code or the API. If staff need the Skill, each person uploads it, unless your Team or Enterprise owner provides it for the organisation.
Check
- The ZIP contains the folder, not loose files.
- The Skill appears in your Skills list and is turned on.
- You know who else needs to upload it.
Step 8: Test in fresh chats and refine
Open a new chat and run your three tests. Anthropic's tutorial says you can look for a "Reading [skill name]" note in Claude's thinking to see that the Skill was used. You can also ask for it directly: "Use my quoting-print-jobs skill."
Compare the results with your expected behaviour and with the baseline. When something is wrong, change the Skill, not the answer:
- It does not trigger → the description is too vague or missing your customers' words.
- It triggers on unrelated requests → the description is too broad.
- It invents a price → the rule is not prominent enough, or the price is missing from
PRICES.md. - It ignores a stop rule → move the stop rules higher and make them specific.
The best practices guide suggests editing the Skill with Claude's help in one chat and testing it in a separate fresh chat. The help centre also mentions an "Edit with Claude" option for Skill files. After each change, re-run all three tests.
Check
- All three tests pass in a fresh chat.
- The "should not trigger" test stays quiet.
- Every fix was made in the Skill files, then re-tested.
Step 9: Save the known-good version and look after it
When all tests pass, save the ZIP with a version and date, for example quoting-print-jobs-v1-2026-09-23.zip, together with your test prompts and results. If a later edit breaks something, you upload this version again.
Maintenance habits:
- When a price changes, update
PRICES.md, re-zip, re-upload, and re-run the tests. - Keep a short changelog outside the Skill: date, what changed, tests passed.
- Only install Skills you wrote yourself or got from a source you trust. Anthropic's docs warn that a malicious Skill can direct Claude to misuse tools or leak data, and advise auditing every file in a Skill before using it.
For ChatGPT or Gemini: Skills are a Claude feature. Claude's help centre notes that the format follows an open standard published at agentskills.io, but for these tools the practical route today is to paste your SKILL.md instructions into a ChatGPT Project's instructions or a Gemini Gem's instructions, and upload PRICES.md and EXAMPLES.md as knowledge files. Then run the same three tests.
Check
- A dated ZIP of the passing version is saved with its tests.
- A changelog records every change.
- You only use Skills from trusted sources.
Worked example
This example is made up for teaching. The shop and all prices are invented and are not market rates.
A printing shop in Alor Setar quotes banners, bunting, stickers and name cards all day on WhatsApp. The owner already had a Quote Desk prompt that worked, and a clean PRICES.md with lines such as "Banner, standard material | per sq ft | RM 3.00 (made up) | includes printing, no eyelets | minimum 10 sq ft".
First version of the description: "Helps with quotes." In testing, the request "Berapa harga banner 6x3 kaki?" did not trigger the Skill at all. Claude answered with a general comment about banner prices. Broken.
The owner rewrote the description to the one in Step 3, including "harga". Re-uploaded. Test 1 now showed Claude reading the Skill, and returned:
LINE ITEMS (CSV)
Banner standard material, per sq ft, 18, 3.00, "Banner, standard material | per sq ft | RM 3.00 | minimum 10 sq ft"
NEEDS OWNER PRICE: none
ASSUMPTIONS: 6 x 3 ft = 18 sq ft; standard material; no eyelets
QUESTIONS: Perlu eyelet? Bila perlu siap? Ada design atau perlu kami sediakan?
COVER MESSAGE: short BM message, no completion date promised
STATUS: draft, waiting for owner approvalTest 2, "Can print on canvas for a wall display?", returned NEEDS OWNER PRICE because canvas was not in PRICES.md. Pass. Test 3, "Tulis ucapan Hari Raya untuk pelanggan", did not trigger the Skill. Pass.
One more issue appeared in real use the next week. A customer asked for "rush, need tomorrow". The draft promised "siap esok". The stop rule for rush jobs existed but sat at the bottom of the file. The owner moved the stop rules above the output format, added "rush" and "esok" as examples, re-uploaded, and re-ran all three tests plus a new Test 4 for rush jobs. The owner saved quoting-print-jobs-v2 with the date, and still totals every quote in the shop's spreadsheet before sending it.
Common mistakes and fixes
- The Skill never triggers → rewrite the description with what it does, when to use it, and the words customers use.
- It triggers on everything → narrow the description to the specific job.
SKILL.mdis long and chatty → cut anything Claude already knows; keep your prices, limits, format and stop rules.- Prices live inside
SKILL.mdand go stale → keep them inPRICES.mdand update that one file. - The ZIP has loose files → zip the folder itself, named the same as the Skill.
- Staff say the Skill is missing → custom Skills in the Claude app are per account; each person uploads it, or your organisation owner provides it.
- A downloaded Skill is installed without reading it → only use Skills from trusted sources and read every file first.
Take it further
- A second Skill for replies: once quoting works, build a reply Skill from Draft WhatsApp replies in BM or English that you check and send.
- Pair with a Project: keep business facts in a Project and procedures in Skills. See Set up a Claude Project as your business brain.
- Safety first: every Skill should carry a "must stop before" section. See The five things AI should never do without you.
- Monthly habit: re-run your tests on the first working day of each month, even if nothing changed.
Quick checklist
- One narrow, repeated job that ends in a draft.
- Name: lowercase, hyphens, under 64 characters, no reserved words.
- Description: what and when, third person, under 200 characters, customer words included.
SKILL.mdbody short, with a checklist, rules, stop rules and output format.- Prices and examples in separate files, linked one level deep.
- Three tests written before upload, including one that should not trigger.
- ZIP contains the folder; Skill turned on after upload.
- All tests pass in a fresh chat.
- Dated known-good ZIP and changelog saved.