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 koalyptus/ls-apis --skill add-fetchergit clone --depth 1 https://github.com/koalyptus/ls-apisWrote 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/koalyptus/ls-apis/add-fetcher)<a href="https://agentmods.dev/skills/koalyptus/ls-apis/add-fetcher"><img src="https://agentmods.dev/badge/skills/koalyptus/ls-apis/add-fetcher/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/koalyptus/ls-apis/add-fetcher"><img src="https://agentmods.dev/badge/skills/koalyptus/ls-apis/add-fetcher.svg" alt="Reviewed on agentmods" width="80" 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.1 | $0.00020 | $0.00724 |
| Opus 5.5 | $0.00008 | $0.00290 |
| Sonnet 5.5 | $0.00004 | $0.00145 |
| Haiku 4.5 | $0.00002 | $0.00072 |
Grade A, and why
add-fetcher 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 1mo 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 — 55 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Add API Fetcher Skill
This skill guides you through adding a new API data source fetcher to the ls-apis aggregator.
When to Use
Use this skill when you want to add a new API data source (like APIs.guru, Public APIs, etc.) to the aggregator.
How to Invoke
Use the skill with /skill add-fetcher command
Process
-
Prompt for fetcher name. Validate that the name uses only lowercase letters, digits, and hyphens, starts with a letter, and is max 30 characters (example: newsource)
-
Create fetcher file from template at
packages/aggregator/src/sources/<fetcher-name>.fetcher.tswhere<fetcher-name>is exactly the validated name from step 1. If a file with this name exists, abort and prompt to choose a different name. -
Create test file from template at
packages/aggregator/src/sources/tests/<fetcher-name>.test.ts -
Implement the fetcher to export a default object that conforms to the SourceFetcher interface:
name: string (should match the fetcher name from step 1)sourceUrl: string (the base URL of the API source)fetchApis(): async function that returns Promise<ApiEntry[]>
The
fetchApis()function must:- Make HTTP requests to the source's API
- Transform response data into the ApiEntry shape defined in ../types.ts
- Throw errors on non-2xx HTTP responses (after 3 retry attempts with exponential backoff)
- Validate fetched records against the ApiEntry schema; log warnings and skip invalid records
- Return an array of ApiEntry objects where each entry has:
name: string (API title/name)description: string | null (API description)link: string (API homepage/link)auth: string | null (authentication type: 'apiKey', 'OAuth', 'no', etc.)cors: string | null ('yes', 'no', 'unknown')categories: string[] (array of category strings)openapiSpec: string | null (URL to OpenAPI/Spec document)sources: string[] (should include the fetcher name)
-
Update the test file with:
- Unit tests for success and error responses (must include mock network responses)
- Integration test that runs the fetcher and asserts at least one aggregated item is produced
- Assertions for the expected ApiEntry structure
- Tests that validate error handling and retry logic
- If mocks are missing, fail the test with a message: 'Missing required mock for '
-
After successful test creation, run
npm run test:aggregatorto verify the new fetcher test passes (failing tests should cause this command to exit non-zero) -
Run
npm run aggregateand verify:- Command exits with code 0
- Aggregated output includes entries from the new source
- Check that
packages/cli/data/apis.jsoncontains at least one record withsourcescontaining the fetcher name
-
Run
npm run lintandnpm run formatbefore considering the task complete (CI will reject commits that fail linting)
What ships with it
2 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.
- 1mo ago First seen · 55 lines · 20 tokens per session scan A 687f2f67774c
add-fetcher is a skill published in the GitHub repository koalyptus/ls-apis (1 stars, last pushed 4d ago), licensed MIT. It adds 20 tokens to every session and 724 once invoked, about $0.0001 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-31.
Other skills, from other repositories
okx-cex-bot
A tool for managing Grid and DCA Martingale trading bots on OKX. Grid bots place trades across a price range, while DCA Martingale bots adjust investments as prices move; the bots run on OKX's servers.
fluent-development
This skill should be used when the user asks to "build a fluent app", "create a servicenow app in typescript", or mentions "servicenow sdk", "now-sdk", "fluent", "scoped app as code", or "pro-code development" — or when the working directory contains a now.config.json or .now.ts files.
manage-bx24-template-mcp
Skill "manage-bx24-template-mcp" from bitrix24/templates-mcp, covering bx24-template-mcp — agent skill, project context, ground rules, code review — persona walk and feedback mechanism.
fleet-supervisor
How to start/smoke-test the supervisor process itself, and start, check, and kill fleet-sprints via its HTTP API only (POST /api/sprints on localhost:8787). Never call the fleet-sprint CLI directly. Trigger whenever asked to start/launch/check/stop/kill the supervisor or a sprint.
api-errors
McpError constructor, JsonRpcErrorCode reference, and error handling patterns for @cyanheads/mcp-ts-core. Use when looking up error codes, understanding where errors should be thrown vs. caught, or using ErrorHandler.tryCatch in services.
api-errors
McpError constructor, JsonRpcErrorCode reference, and error handling patterns for @cyanheads/mcp-ts-core. Use when looking up error codes, understanding where errors should be thrown vs. caught, or using ErrorHandler.tryCatch in services.