API Audit
briiirussell/cybersecurity-skills
Audit REST, GraphQL, and RPC APIs against the OWASP API Security Top 10 (2023).
Diagnose and fix common Apollo.io API errors. An agent skill from jeremylongshore/tons-of-skills-marketplace.
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill apollo-common-errors -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace apollo-common-errors --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/.curated/apollo-common-errors .claude/skills/apollo-common-errors && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "apollo-common-errors" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/apollo-common-errors into .claude/skills/apollo-common-errors/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "apollo-common-errors", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/apollo-common-errorsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill apollo-common-errors -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace apollo-common-errors --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/.curated/apollo-common-errors .agents/skills/apollo-common-errors && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "apollo-common-errors" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/apollo-common-errors into .agents/skills/apollo-common-errors/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "apollo-common-errors", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill apollo-common-errors -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace apollo-common-errors --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/.curated/apollo-common-errors .cursor/skills/apollo-common-errors && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "apollo-common-errors" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/apollo-common-errors into .cursor/skills/apollo-common-errors/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "apollo-common-errors", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/jeremylongshore/tons-of-skills-marketplace.git --path skills/.curated/apollo-common-errors--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill apollo-common-errors -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace apollo-common-errors --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/.curated/apollo-common-errors .gemini/skills/apollo-common-errors && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "apollo-common-errors" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/apollo-common-errors into .gemini/skills/apollo-common-errors/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "apollo-common-errors", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install jeremylongshore/tons-of-skills-marketplace apollo-common-errorsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill apollo-common-errors -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/.curated/apollo-common-errors .github/skills/apollo-common-errors && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "apollo-common-errors" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/apollo-common-errors into .github/skills/apollo-common-errors/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "apollo-common-errors", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill apollo-common-errors -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace apollo-common-errors --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/.curated/apollo-common-errors .opencode/skills/apollo-common-errors && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "apollo-common-errors" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/apollo-common-errors into .opencode/skills/apollo-common-errors/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "apollo-common-errors", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
apollo-common-errorsDiagnose and fix common Apollo.io API errors. An agent skill from jeremylongshore/tons-of-skills-marketplace.
Apollo Common Errors is an agent skill from jeremylongshore/tons-of-skills-marketplace. Diagnose and fix common Apollo.io API errors. Use when encountering Apollo API errors, debugging integration issues, or troubleshooting failed requests. Trigger with phrases like "apollo error", "apollo api error", "debug apollo", "apollo 401", "apollo 429", "apollo troubleshoot".
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/implementation-guide.md` and `references/implementation.md`). Compatibility notes: Designed for Claude Code
It sits in Backend & APIs, covering GraphQL and Rate limiting. The repository describes itself as: Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 80f86df. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadGrepBash(curl:*)From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curlpython3From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.apollo.ioAlso links to:
docs.apollo.iostatus.apollo.ioFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
APOLLO_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Designed for Claude Code
From compatibility in the SKILL.md frontmatter.
Apollo Common Errors loads about 2.2k tokens when it runs, and up to ~5k if it reads all its reference files. Until then it costs about 76 tokens; SKILL.md has 401 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from jeremylongshore/tons-of-skills-marketplace at commit 80f86df, republished under its MIT licence (© jeremylongshore). 401 words, ~2,219 tokens.
.claude/skills/apollo-common-errors/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Comprehensive guide to diagnosing and fixing Apollo.io API errors. Apollo uses x-api-key header authentication and the base URL https://api.apollo.io/api/v1/. Apollo distinguishes between master and standard API keys — many endpoints require master keys.
// src/apollo/error-handler.ts
import { AxiosError } from 'axios';
type ErrorCategory = 'auth' | 'permission' | 'rate_limit' | 'validation' | 'server' | 'network';
function categorizeError(err: AxiosError): ErrorCategory {
if (!err.response) return 'network';
switch (err.response.status) {
case 401: return 'auth';
case 403: return 'permission';
case 429: return 'rate_limit';
case 400: case 422: return 'validation';
default: return err.response.status >= 500 ? 'server' : 'validation';
}
}// Most common cause: missing x-api-key header or wrong key format
async function diagnoseAuth() {
try {
const response = await fetch('https://api.apollo.io/api/v1/auth/health', {
headers: { 'x-api-key': process.env.APOLLO_API_KEY! },
});
const data = await response.json();
if (data.is_logged_in) {
console.log('API key is valid');
} else {
console.error('API key is invalid or expired');
console.error(' Generate a new one at: Apollo > Settings > Integrations > API Keys');
}
} catch (err: any) {
console.error('Cannot reach Apollo API:', err.message);
}
}Common 401 causes:
api_key query parameter instead of x-api-key headerecho -n "$APOLLO_API_KEY" | wc -c)Standard API key: search + enrichment only
Master API key: full access (contacts, sequences, deals, tasks)Endpoints that require a master key:
POST /contacts (create/update)POST /emailer_campaigns/search (sequences)POST /emailer_campaigns/{id}/add_contact_idsPOST /opportunities (deals)POST /tasks (tasks)DELETE /contacts/{id}// Diagnose: test a master-key-only endpoint
async function diagnoseMasterKey() {
try {
await client.post('/contacts/search', { per_page: 1 });
console.log('Master API key confirmed');
} catch (err: any) {
if (err.response?.status === 403) {
console.error('Your API key is a standard key. Master key required.');
console.error(' Go to Apollo > Settings > Integrations > API Keys');
console.error(' Generate a new key with "Master Key" type');
}
}
}Apollo uses fixed-window rate limiting per endpoint category:
Endpoint Category | Limit | Window | Burst
--------------------------+------------+---------+------
People Search | 100/min | 1 min | 10/sec
People Enrichment | 100/min | 1 min | 10/sec
Bulk People Enrichment | 10/min | 1 min | 2/sec
Organization Enrichment | 100/min | 1 min | 10/sec
Contacts (CRUD) | 100/min | 1 min | 10/sec
Sequences | 100/min | 1 min | 10/sec// Respect Retry-After header
async function handleRateLimit<T>(fn: () => Promise<T>): Promise<T> {
try {
return await fn();
} catch (err: any) {
if (err.response?.status === 429) {
const retryAfter = parseInt(err.response.headers['retry-after'] ?? '60', 10);
console.warn(`Rate limited. Waiting ${retryAfter}s...`);
await new Promise((r) => setTimeout(r, retryAfter * 1000));
return fn();
}
throw err;
}
}// Common 422 causes:
// - per_page > 100 on search endpoints
// - Missing required fields on /contacts POST (first_name, last_name)
// - Invalid email format on /people/match
// - page > 500 on /mixed_people/api_search (50,000 record limit)
function logValidationError(err: AxiosError) {
const body = err.response?.data as any;
console.error('Validation error:', {
status: err.response?.status,
message: body?.message ?? body?.error,
errors: body?.errors,
url: err.config?.url,
body: typeof err.config?.data === 'string' ? JSON.parse(err.config.data) : err.config?.data,
});
}// src/apollo/error-middleware.ts
import { AxiosError, AxiosInstance } from 'axios';
export function attachErrorHandler(client: AxiosInstance) {
client.interceptors.response.use(
(response) => response,
(err: AxiosError) => {
const status = err.response?.status;
const body = err.response?.data as any;
const endpoint = err.config?.url ?? 'unknown';
const info = {
status,
endpoint,
message: body?.message ?? err.message,
timestamp: new Date().toISOString(),
};
switch (categorizeError(err)) {
case 'auth':
console.error('[APOLLO AUTH] Invalid x-api-key header', info);
break;
case 'permission':
console.error('[APOLLO PERMISSION] Master key required for this endpoint', info);
break;
case 'rate_limit':
console.warn('[APOLLO RATE LIMIT]', info);
break;
case 'validation':
console.error('[APOLLO VALIDATION]', info);
break;
case 'server':
console.error('[APOLLO SERVER] Check status.apollo.io', info);
break;
case 'network':
console.error('[APOLLO NETWORK] Cannot reach api.apollo.io', info);
break;
}
return Promise.reject(err);
},
);
}| Code | Meaning | Fix |
|---|---|---|
| 401 | Invalid or missing x-api-key header | Verify key in dashboard, check header name |
| 403 | Standard key used for master-only endpoint | Generate master API key |
| 422 | Bad request body | Check field names, per_page <= 100, page <= 500 |
| 429 | Rate limit exceeded | Read Retry-After header, implement backoff |
| 500 | Apollo server error | Retry with backoff, check status.apollo.io |
| ECONNREFUSED | Network/firewall | Allow outbound HTTPS to api.apollo.io:443 |
# Test auth (should return is_logged_in: true)
curl -s -H "x-api-key: $APOLLO_API_KEY" \
https://api.apollo.io/api/v1/auth/health | python3 -m json.tool
# Test master key (returns contacts or 403)
curl -s -X POST -H "Content-Type: application/json" -H "x-api-key: $APOLLO_API_KEY" \
-d '{"per_page":1}' https://api.apollo.io/api/v1/contacts/search | python3 -m json.toolTreat a 401 as a credential configuration failure: redact the value, verify
the secret binding, and rotate only through the approved credential owner. A
403 means the workflow must stop until the correct authorized key type is
available; do not widen a standard key's permissions in a debug branch. For a
429, honor Retry-After, cap retries, and preserve the unfinished work for a
later run. For 5xx or network failures, record the redacted request context,
check the provider status page, and fail the batch rather than replaying writes
whose outcome is unknown.
Proceed to apollo-debug-bundle for collecting debug evidence.
© jeremylongshore, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (references) in skills/.curated/apollo-common-errors of jeremylongshore/tons-of-skills-marketplace.
Open the folder on GitHubat commit 80f86df
Apollo Common Errors next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Apollo Common Errors this skilljeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~2.2k | Automated safety check: Pass | MIT | |
| API Auditbriiirussell/cybersecurity-skills | 413 | — | ~2.8k | Automated safety check: Notes | MIT | |
| Domain Webfjrevoredo/mini-diarium | 308 | 1 repos | ~1k | Automated safety check: Pass | MIT | |
| Discover APIrand/cc-polymath | 181 | — | ~1.5k | Automated safety check: Pass | MIT | |
| API Connector Builderericrisco/rsc-harness | 174 | — | ~3.6k | Automated safety check: Pass | MIT | |
| Designing APIsancoleman/ai-design-components | 526 | — | ~2.6k | Automated safety check: Pass | MIT |
briiirussell/cybersecurity-skills
Audit REST, GraphQL, and RPC APIs against the OWASP API Security Top 10 (2023).
fjrevoredo/mini-diarium
A skill your agent uses when building web services. An agent skill from fjrevoredo/mini-diarium.
rand/cc-polymath
Automatically discover API design skills when working with REST APIs, GraphQL schemas, API authentication, OAuth, JWT, rate limiting, API versioning, error handling, or endpoint design.
ericrisco/rsc-harness
A skill your agent uses when writing a client for someone else's REST or GraphQL API: auth flow choice and token refresh, pagination to exhaustion, retry-with-jitter on transient failures only…
ancoleman/ai-design-components
Design APIs that are secure, scalable, and maintainable using RESTful, GraphQL, and event-driven patterns.
ancoleman/ai-design-components
API design and implementation across REST, GraphQL, gRPC, and tRPC patterns.
jeremylongshore/tons-of-skills-marketplace
Execute this skill enables AI assistant to conduct a security-focused code review using the security-agent plugin.
jeremylongshore/tons-of-skills-marketplace
Build this skill automates the adaptation of pre-trained machine learning models using transfer learning techniques.
jeremylongshore/tons-of-skills-marketplace
Execute proactive auto-loading: automatically detects and loads agents.md files.
jeremylongshore/tons-of-skills-marketplace
Aggregate and centralize performance metrics from applications, systems, databases, caches, and services.
jeremylongshore/tons-of-skills-marketplace
Execute this skill enables AI assistant to analyze capacity requirements and plan for future growth.
jeremylongshore/tons-of-skills-marketplace
Process use when you need to work with database indexing. An agent skill from jeremylongshore/tons-of-skills-marketplace.
Categories
Diagnose and fix common Apollo.io API errors. An agent skill from jeremylongshore/tons-of-skills-marketplace. Apollo Common Errors is an agent skill from jeremylongshore/tons-of-skills-marketplace.io API errors.
Apollo Common Errors fits situations like: encountering Apollo API errors; debugging integration issues; troubleshooting failed requests; with phrases like apollo error.
Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill apollo-common-errors -a claude-code`. Or copy the skill folder (skills/.curated/apollo-common-errors in jeremylongshore/tons-of-skills-marketplace) into .claude/skills/apollo-common-errors in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill apollo-common-errors -a codex`. Or copy the skill folder (skills/.curated/apollo-common-errors in jeremylongshore/tons-of-skills-marketplace) into .agents/skills/apollo-common-errors in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill apollo-common-errors -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/apollo-common-errors, .gemini/skills/apollo-common-errors, .github/skills/apollo-common-errors and .opencode/skills/apollo-common-errors in your project.
Going by SKILL.md and its folder, Apollo Common Errors needs the command-line tools its instructions call (curl and python3) and credentials named APOLLO_API_KEY. Our summary lists: Python 3; Node.js; A credential in APOLLO_API_KEY. Its frontmatter pre-approves these tools: Read, Grep, Bash(curl:*). Compatibility (from SKILL.md): Designed for Claude Code.
SKILL.md names 3 domains. In commands or code: api.apollo.io; the agent is likely to contact it when it follows the instructions. As links in the text: docs.apollo.io and status.apollo.io. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Apollo Common Errors is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.8k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Apollo Common Errors: API Audit (briiirussell/cybersecurity-skills, 413 stars), Domain Web (fjrevoredo/mini-diarium, 308 stars), Discover API (rand/cc-polymath, 181 stars) and API Connector Builder (ericrisco/rsc-harness, 174 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jeremylongshore (a GitHub user) maintains it in jeremylongshore/tons-of-skills-marketplace, which has 2,825 GitHub stars. The repository holds 3,342 skills in this directory. The repository was last updated on October 9, 2026.
Source: jeremylongshore/tons-of-skills-marketplace on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.