Build a custom skill
Turns a precise business need into a brand-new tailored Claude skill, ready to use on the Spendesk MCP.
CFOControllerAP ManagerFinance AnalystProcurement๐ Ad hocIntermediateRead-only
Ask it like this
Help me build a skill that compares my card spend by department over the last 3 months.
When to use it
When you have a specific need that no skill in the library covers as is.
What it produces
A new skill file tested on real data, ready to install and reuse.
How it works
- 1Frames your need: goal, frequency, expected format
- 2Identifies the tools able to answer it
- 3Flags what is not feasible before going further
- 4Writes the skill and tests it on your data
- 5Hands you the file, ready to install
What protects you
- This skill only reads: it changes nothing in Spendesk
- It acts with your permissions and your role, never beyond
- The assistant cannot approve or pay
โธTechnical detail89/100 ยท 0 tools
Settings
# Skill Builder
## Objective
The library has 65 skills, but it will never cover every client's specific need โ their target ERP, their currency, their entities, the exact output format they expect. This skill has one job: turn a business need expressed in plain language into a **brand-new tailored skill**, tested live on the client's real data, ready to be saved and reused.
Never generate a skill without testing it on real data at least once. An untested skill is only a hypothesis.
## Phase 0 โ Frame the need
Ask structured questions, without skipping any even if the client is in a hurry โ a poorly-framed skill produces a disappointing result:
1. **The precise business need**: what question should this answer, and how often? ("a monthly PO accrual report" is precise; "help me with my purchases" is not yet)
2. **Context and constraints**: which target ERP (NetSuite, SAP, other)? which functional currency? one entity or several? any specific thresholds or exclusions (e.g. exclude test POs, exclude one entity)?
3. **The expected output format**: a conversational answer, a table in the chat, an Excel/CSV export with a precise structure (how many tabs, which columns), or a message to post elsewhere (the Spendesk MCP sends no alerts: a Slack message needs a separate Slack connector)?
4. **Who uses it and how often**: one-off, daily, weekly, monthly โ this answer determines whether the skill should later become a routine (see Phase 4).
If the client isn't sure how to answer, offer a concrete example rather than staying abstract: "for instance, for a monthly export ready for NetSuite, are we talking about a multi-tab file, or a simple table in the conversation?"
## Phase 1 โ Identify the right MCP tools
The Spendesk MCP exposes 36 read tools today (invoices, suppliers, purchase orders, cards, treasury, cost centers, transactions...) and 26 write tools in Beta (for example `archive_supplier`, `create_suppliers`, `mark_payable_as_ready`, `update_payable` โ their permissions are off by default: an Admin or Account Owner enables them on the connection, then the user reconnects and ticks them. See the [tool reference](https://developer.spendesk.com/reference/mcp-tool-reference)).
For the need framed in Phase 0, identify:
- The tools that directly answer the need (e.g. `get_purchase_orders` for a purchase-order need, `get_payables` to check attached invoices)
- The order to call them in (e.g. list first, then drill into the highest-stakes cases rather than detailing everything)
- The known limitations to respect (e.g. amounts in cents on some tools, filters that must be combined to avoid oversized responses โ see `scenarios/mcp-gap-analysis.md` for known MCP bugs)
Never guess a tool name or a filter โ if there's any doubt about a tool's exact behavior, call it once as a test before writing it into the generated skill.
## Phase 2 โ Generate the skill
Write the skill file in the library's standard format, with:
- A complete frontmatter (`name`, `description`, `tags`, `when_to_use`, `personas`, `use_cases`, `frequency`, `complexity`, `tools_used`) โ consistent with the need framed in Phase 0
- A clear objective in one or two sentences
- Numbered steps, each naming the MCP tool called and the expected result
- A "Things to watch out for" section listing known limitations and pitfalls (currencies, caching, required filters)
- 2-3 example prompts the client can reuse as-is
Always present the generated skill as a concrete artifact (a block of text the client can copy), not just describe it.
## Phase 3 โ Test live
Run the generated skill right away, on the client's real data, before considering it "ready":
- Announce what's about to happen ("running the skill we just created on your real data...")
- Compare the result to what the client described in Phase 0 โ does the format match? were the right filters applied?
- If the result doesn't match, adjust the generated skill and retest, rather than shipping an unvalidated skill
## Phase 4 โ Save, and schedule if recurring
Explain how to save the generated skill:
- **Claude Code**: drop the `.md` file into the project's `.claude/` folder
- **Dust**: paste the skill's content as an agent's instructions
If the need framed in Phase 0 is recurring (daily, weekly, monthly), explicitly offer to turn it into a scheduled routine rather than leaving it as a manual action to repeat every time โ point to the guide [Automating a report with routines](/guide/routines-for-periodic-reporting) for the exact setup.
## Things to watch out for
- The generated skill is only as good as the need framed in Phase 0 โ being precise about the output format changes the final result a lot.
- Always test before treating a generated skill as reliable for recurring use โ never skip Phase 3 even under time pressure.
- Generating a skill is a text read/write operation only: no irreversible action is taken on Spendesk during generation itself โ the only real MCP calls are the Phase 3 test.
- A skill generated this way stays a plain text file, just like every other skill in the library โ nothing magic, just clear instructions.
## Example prompts
- "Help me create a skill for a monthly PO accrual export, in Excel format with multiple tabs ready for NetSuite."
- "I want a skill that lists invoices waiting for approval every week, grouped by approver."
- "Create a skill that compares my card spend by department over the last 3 months, with a table as output."
How to install this skill
/
- 1Download the file
skill-builder.mdusing the button above. - 2Place the file in the
.claude/directory of your project (or~/.claude/for a global install).cp skill-builder.md .claude/skill-builder.md - 3Use in Claude Code โ the skill is automatically discovered. Describe your need in natural language and Claude will apply the skill instructions.
๐ก Make sure the Spendesk MCP is configured in your
.claude/settings.json with the tools .Similar skills
โ
Top