Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add lubusIN/frappe-skills --skill api-developmentgit clone --depth 1 https://github.com/lubusIN/frappe-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/lubusin/frappe-skills/api-development)<a href="https://agentmods.dev/skills/lubusin/frappe-skills/api-development"><img src="https://agentmods.dev/badge/skills/lubusin/frappe-skills/api-development/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/lubusin/frappe-skills/api-development"><img src="https://agentmods.dev/badge/skills/lubusin/frappe-skills/api-development.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 1 finding, up to high
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- high Tool Misuse · line 53 Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).Fix: Validate all tool parameters against an allowlist. Reject dangerous parameter values (shell=True, --force, -rf /) and use safe defaults.
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00041 | $0.01576 |
| Opus 5.5 | $0.00016 | $0.00630 |
| Sonnet 5.5 | $0.00008 | $0.00315 |
| Haiku 4.5 | $0.00004 | $0.00158 |
Grade A, and why
api-development scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 239 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Frappe API Development
Build secure, well-designed APIs using Frappe's REST and RPC patterns.
When to use
- Creating custom RPC endpoints (
@frappe.whitelist) - Building REST API integrations
- Implementing webhooks for external systems
- Setting up API authentication (token, OAuth)
- Exposing business logic to frontends
Inputs required
- API purpose (CRUD, action, integration)
- Authentication requirements (public, user, API key)
- Permission requirements per endpoint
- Request/response format expectations
Procedure
0) Choose API pattern
| Need | Pattern |
|---|---|
| DocType CRUD | Use built-in REST API |
| Custom action | RPC with @frappe.whitelist |
| External callback | Webhook DocType |
| Batch operations | Background job + status endpoint |
1) Built-in REST API (DocType CRUD)
Frappe provides automatic REST endpoints for all DocTypes:
# Create
POST /api/resource/Customer
{"customer_name": "Acme Corp"}
# Read
GET /api/resource/Customer/CUST-001
# Update
PUT /api/resource/Customer/CUST-001
{"customer_name": "Acme Corporation"}
# Delete
DELETE /api/resource/Customer/CUST-001
# List with filters
GET /api/resource/Customer?filters=[["status","=","Active"]]
2) Custom RPC endpoints
Create whitelisted methods in your app:
# my_app/api.py
import frappe
@frappe.whitelist()
def process_order(order_id, action):
"""Process an order with the given action."""
# Always verify permissions
doc = frappe.get_doc("Sales Order", order_id)
if not frappe.has_permission("Sales Order", "write", doc):
frappe.throw("Not permitted", frappe.PermissionError)
# Business logic
if action == "approve":
doc.status = "Approved"
doc.save()
return {"status": "success", "order": doc.name}
@frappe.whitelist(allow_guest=True)
def public_endpoint():
"""Public endpoint - no auth required."""
return {"message": "Hello, World!"}
Call via:
POST /api/method/my_app.api.process_order
{"order_id": "SO-001", "action": "approve"}
What ships with it
8 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2mo ago First seen · 239 lines · 41 tokens per session scan A 6cb3c9433767
api-development is a skill published in the GitHub repository lubusIN/frappe-skills (68 stars, last pushed 2d ago), licensed MIT. It adds 41 tokens to every session and 1,576 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
api-development compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| api-developmentlubusIN/frappe-skills | Skill | 68 | 2d ago | MIT | A | 41 | Claude Code, Codex |
| build-mcp-serveranthropics/claude-plugins-official | Skill | 46k | yesterday | Apache-2.0 | A | 111 | Claude Code |
| data-manager-api-setupgoogle/skills | Skill | 22k | yesterday | Apache-2.0 | A | 86 | Claude Code, Codex |
| vss-manage-video-io-storageNVIDIA-AI-Blueprints/video-search-and-summarization | Skill | 2.0k | yesterday | Apache-2.0 | A | 143 | Claude Code, Codex |
| workers-best-practicescloudflare/skills | Skill | 3.3k | yesterday | Apache-2.0 | A | 25 | Claude Code |
| vss-search-archiveNVIDIA-AI-Blueprints/video-search-and-summarization | Skill | 2.0k | yesterday | Apache-2.0 | A | 67 | Claude Code, Codex |
| newclacky-ai/openclacky | Skill | 1.2k | yesterday | MIT | A | 10 | Claude Code |