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 agentmods add skills/furkangonel/cowrangler/api-designnpx skills add furkangonel/cowrangler --skill api-designgit clone --depth 1 https://github.com/furkangonel/cowranglerWrote 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/furkangonel/cowrangler/api-design)<a href="https://agentmods.dev/skills/furkangonel/cowrangler/api-design"><img src="https://agentmods.dev/badge/skills/furkangonel/cowrangler/api-design.svg" alt="Measured on agentmods" height="20"></a>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 | $0.00019 | $0.00986 |
| Opus 5 | $0.00010 | $0.00493 |
| Sonnet 5 | $0.00004 | $0.00197 |
| Haiku 4.5 | $0.00002 | $0.00099 |
Grade A, and why
api-design 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 5d 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 — 141 lines — stays where its author put it; the contents beside it link to each section on GitHub.
API Design SOP
REST Resource Naming
# Use nouns (not verbs) for resources
GET /users → list users
POST /users → create user
GET /users/:id → get specific user
PUT /users/:id → replace user (full update)
PATCH /users/:id → partial update
DELETE /users/:id → delete user
# Nested resources (when relationship is strong)
GET /users/:id/orders → orders belonging to user
POST /users/:id/orders → create order for user
# Actions that don't fit REST (use verb noun)
POST /users/:id/activate
POST /payments/:id/refund
POST /reports/generate
HTTP Status Codes — Use Them Correctly
200 OK → Successful GET, PUT, PATCH
201 Created → Successful POST (include Location header)
204 No Content → Successful DELETE
400 Bad Request → Invalid input, missing required field
401 Unauthorized → Not authenticated (no token)
403 Forbidden → Authenticated but not authorized
404 Not Found → Resource doesn't exist
409 Conflict → Duplicate, optimistic lock conflict
422 Unprocessable → Validation errors (structured errors below)
429 Too Many Req. → Rate limited (include Retry-After header)
500 Internal Error → Server fault (never expose stack trace)
503 Unavailable → Maintenance, overloaded
Request & Response Conventions
Success Response
{
"data": { ... },
"meta": {
"page": 1,
"per_page": 20,
"total": 150
}
}
Error Response (RFC 7807 Problem Details)
{
"type": "https://api.example.com/errors/validation",
"title": "Validation Failed",
"status": 422,
"detail": "The request body contains invalid data.",
"errors": [
{ "field": "email", "message": "Invalid email format" },
{ "field": "age", "message": "Must be at least 18" }
],
"trace_id": "abc-123"
}
Versioning Strategy
# URL versioning (most visible, easiest for clients)
/api/v1/users
/api/v2/users
# Header versioning (cleaner URLs)
Accept: application/vnd.api+json; version=2
# Always:
# - Keep v1 alive for at least 6 months after v2 launch
# - Document breaking changes in CHANGELOG
# - Communicate deprecation schedule
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.
- 5d ago First seen · 141 lines · 19 tokens per session scan A a21fc63ea323
api-design is a skill published in the GitHub repository furkangonel/cowrangler (2 stars, last pushed 4d ago), licensed MIT. It adds 19 tokens to every session and 986 once invoked, about $0.0001 per session on Opus 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-31.
Other skills, from other repositories
eastmoney-stock-valuation
查询东财个股日估值。当用户需要查询全部 A 股个股的每日估值数据,包括市盈率(TTM/LYR)、市净率、市现率、市销率、PEG、总市值、流通市值、收盘价等;支持单票单日、单票历史区间及全市场查询,或了解东财个股日估值时使用。.
stock-holder-nums
查询 A 股股东人数。当用户需要获取 A 股股东人数信息(按 stockcode 查全部历史,或以 islast=true 查全市场最新一期),含人均流通股、筹码集中度、十大股东持股比例等衍生指标时使用。.
stock-quotes-list
查询 A 股行情列表(分页)。当用户需要获取 A 股(沪深京)股票行情列表,支持按板块筛选、多字段排序与分页,用于行情中心「个股行情」等列表展示,或了解A 股行情列表(分页)时使用。.
convertible-bond-candlesticks-batch
批量获取多只可转债 K 线 POST 接口(market.ft.tech,convertible-bond-candlesticks/batch)。用户问多只可转债的 K 线、批量可转债日 K/周 K/月 K/年 K 时使用。必填 --symbols、--interval-unit、--until-ts-millis;可选 --interval-value、--adjust-kind、--since-ts-millis、--limit。.
convertible-bond-candlesticks
单只可转债历史 K 线 GET 接口(market.ft.tech,convertible-bond-candlesticks)。用户问某只可转债的分/日/周/月/年 K 线、开高低收、前/后复权、分钟级 K 线时使用。必填 --symbol、--interval-unit、--until-ts-millis;可选 --interval-value、--adjust-kind、--since-ts-millis、--limit。.
eastmoney-all-board-daily-ohlc
分页查询东方财富全部板块历史日线 OHLC(板块代码/名称/市场/日期/开高低收/成交量/成交额/振幅/涨跌幅/涨跌额/换手率)。用户提到「东财全板块日线」「全部板块 OHLC」「eastmoney all board daily ohlc」时使用。结果按板块代码、日期排序,分页返回;起止日期同时给定时跨度不得超过 3 个自然日,pagesize 最大 200,支持 --all 翻页。.