ASAP agent skills
Playbooks and client skills that teach AI agents to drive the
ASAP platform through its MCP server — French invoicing,
contacts and e-signature — correctly: grounding first, FR compliance
(operation_nature, amounts in cents), and NF203 sealing (a finalized document is
immutable).
These files do not contain the tools. They teach an agent HOW to combine the tools the ASAP MCP server already exposes. Connect that server first.
Layout
playbook/ # SINGLE SOURCE OF TRUTH — the workflow prose (edit here)
catalogue.json# pinned snapshot of the ASAP MCP surface (tools + prompts + resources)
claude/ # Claude Code / Desktop plugin (skills/asap-invoicing/SKILL.md) — GENERATED
chatgpt/ # custom GPT instructions — GENERATED
cursor/ # Cursor rule (asap.mdc) — GENERATED
windsurf/ # Windsurf rule (asap.md) — GENERATED
scripts/ # build (playbook → clients) + drift guard
Everything under claude/ chatgpt/ cursor/ windsurf/ is generated from playbook/.
Never hand-edit them — edit the playbook and run npm run build.
Install
First connect the ASAP MCP server (an ASAP API key with the contacts / invoice /
signature scopes). Then, per client:
-
Claude Code — this repo is a plugin marketplace. Install in one command:
/plugin marketplace add asap-cool/asap-agent-skills /plugin install asap-invoicing@asap-cool -
Claude Desktop / claude.ai — download
asap-invoicing-skill.zipfrom the latest release and upload it under Settings → Capabilities → Skills. -
ChatGPT — paste
chatgpt/instructions.mdinto a custom GPT's Instructions and addhttps://mcp.asap.coolas an Action/connector. -
Cursor — copy
cursor/asap.mdcinto your project's.cursor/rules/. -
Windsurf — copy
windsurf/asap.mdinto your Windsurf rules.
Single source & drift guard
The playbooks reference tools by name (create_quote, finalize_invoice, …). If the
ASAP MCP server renames or removes one, the skills would silently point at a dead
tool. scripts/check-drift.mjs prevents that:
- Every tool/prompt name referenced in
playbook/must exist incatalogue.json. - The committed client files must match what
build.mjsregenerates fromplaybook/.
npm run build # regenerate client files from playbook/
npm run check # fail if a referenced name is unknown, or a client file is stale
npm test # build + check (what CI runs)
When the ASAP MCP catalogue changes, refresh the pin:
cp ../asap-platform/apps/mcp/catalogue.json ./catalogue.json
npm run check
License
MIT — see LICENSE.
Built by Sycode — freelance SaaS developer.