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

  1. 1Frames your need: goal, frequency, expected format
  2. 2Identifies the tools able to answer it
  3. 3Flags what is not feasible before going further
  4. 4Writes the skill and tests it on your data
  5. 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

/
  1. 1
    Download the file skill-builder.md using the button above.
  2. 2
    Place the file in the .claude/ directory of your project (or ~/.claude/ for a global install).
    cp skill-builder.md .claude/skill-builder.md
  3. 3
    Use 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
95/100ยท๐Ÿ” Ad hocยทExpert

Audit what the MCP covers

Probes all available MCP tools, re-evaluates coverage of 50 persona use cases, detects new fields or tools, and regenerates the gap analysis report.

CFOControllerAP Manager
90/100ยท๐Ÿ“… WeeklyยทBeginner

Card requests via get_requests

Explains how to use get_requests for card requests and why expense reimbursements don't appear there. Avoids a frequent source of confusion between two distinct workflows.

ControllerFinance Analyst
90/100ยท๐Ÿ” Ad hocยทIntermediate

Active vs archived cost centers

Distinguishes active cost centers from archived ones with correct use of get_cost_centers. Avoids the counter-intuitive isArchived vs isActive naming convention pitfall.

ControllerFinance Analyst

Interested in AI Agent services or Custom Integrations?