v1

Skills API

Programmatic access to GAP MINING's 300+ production-grade AI skills. List, search, retrieve, and invoke any skill via REST.

Overview

The Skills API gives developers direct access to the GAP MINING skill database. Use it to build AI-powered applications, integrate skills into your own products, or monitor skill usage across your team.

Authentication

None required. The skills catalogue is a public, documented API — every endpoint below, including POST /invoke, is callable without a key or an account. No sign-up, no token, no Authorization header.

curl https://hqghfkllopnboyaxxuje.supabase.co/functions/v1/skills-api/skills

Sending Supabase Authorization/apikey headers is harmless and they are simply ignored — the endpoint does not read them.

Rate limits

Access is bounded per client IP rather than per account:

Exceeding either returns 429 with a Retry-After header:

HTTP 429
Retry-After: 60
{ "error": "Rate limit exceeded. Try again shortly." }

Limits are enforced per edge instance, so the effective ceiling can be higher under load. Treat the figures above as the guaranteed floor, not a quota to plan against.

Base URL

https://hqghfkllopnboyaxxuje.supabase.co/functions/v1/skills-api

All endpoints below are relative to this base URL. CORS is enabled for vib-pulse.com, and localhost.

List skills

Returns skills ordered by invocation count (most-used first). Supports pagination via limit and offset.

GET /skills List all 380+ skills

Query parameters

ParameterTypeDescription
categoryoptionalstringFilter by category (e.g. sales, compliance)
limitoptionalintegerMax results per page. Default: 50. Max: 200.
offsetoptionalintegerNumber of results to skip (for pagination). Default: 0.

Pagination example

# Page 1 — first 50 skills
curl "https://hqghfkllopnboyaxxuje.supabase.co/functions/v1/skills-api/skills?limit=50&offset=0" \
  -H "Authorization: Bearer YOUR_KEY" -H "apikey: YOUR_KEY"

# Page 2 — next 50 skills
curl "https://hqghfkllopnboyaxxuje.supabase.co/functions/v1/skills-api/skills?limit=50&offset=50" \
  -H "Authorization: Bearer YOUR_KEY" -H "apikey: YOUR_KEY"

Example request

curl https://hqghfkllopnboyaxxuje.supabase.co/functions/v1/skills-api/skills \
  -H "Authorization: Bearer YOUR_API_KEY"

Example response

200 OK
{
  "skills": [
    {
      "name": "hermes",
      "category": "System",
      "description": "APEX Master Orchestrator — full control over all skills, agents, MCP plugins",
      "line_count": 892,
      "invocation_count": 47,
      "last_invoked": "2026-06-09T10:00:00Z",
      "created_at": "2026-06-04T00:00:00Z"
    },
    ...
  ],
  "total": 380,
  "timestamp": "2026-06-09T11:00:00Z"
}

Get skill

Retrieve full metadata for a single skill by name.

GET /skills/:name Get one skill by name

Path parameters

ParameterTypeDescription
namerequiredstringSkill name slug (e.g. competitive-intelligence)

Example request

curl https://hqghfkllopnboyaxxuje.supabase.co/functions/v1/skills-api/skills/competitive-intelligence \
  -H "Authorization: Bearer YOUR_API_KEY"

Example response

200 OK
{
  "id": 42,
  "name": "competitive-intelligence",
  "category": "Sales & Account",
  "description": "Deep competitor analysis — positioning, pricing, moats, SWOT",
  "line_count": 487,
  "invocation_count": 12,
  "last_invoked": "2026-06-08T14:30:00Z",
  "created_at": "2026-05-15T00:00:00Z",
  "updated_at": "2026-06-08T14:30:00Z"
}
404 Not Found
{ "error": "Skill not found", "skill": "competitive-intelligence" }

Search skills

Full-text search across skill names and descriptions.

GET /search?q=:query Search skills by keyword

Query parameters

ParameterTypeDescription
qrequiredstringSearch query (min 2 characters)
limitoptionalintegerMax results. Default: 20

Example request

curl "https://hqghfkllopnboyaxxuje.supabase.co/functions/v1/skills-api/search?q=compliance" \
  -H "Authorization: Bearer YOUR_API_KEY"

Stats

Platform-wide analytics: invocation rates, top skills, category distribution.

GET /stats Platform analytics summary

Example response

200 OK
{
  "total_skills": 380,
  "invoked_skills": 4,
  "invocation_rate_pct": 1,
  "total_invocations": 63,
  "avg_skill_depth_lines": 447,
  "top_10_skills": [
    { "name": "hermes", "invocations": 47 },
    { "name": "competitive-intelligence", "invocations": 12 },
    ...
  ],
  "category_distribution": {
    "Sales & Account": 11,
    "System": 8,
    "Compliance": 7,
    ...
  },
  "timestamp": "2026-06-09T11:00:00Z"
}

Invoke skill

Log a skill invocation and increment its usage counter. Call this whenever your application uses a skill so analytics stay accurate.

POST /skills/:name/invoke Log a skill invocation

Path parameters

ParameterTypeDescription
namerequiredstringSkill name slug

Request body

FieldTypeDescription
session_idoptionalstringYour session or user identifier
contextoptionalstringWhat the skill was used for (logged for analytics)

Example request

curl -X POST https://hqghfkllopnboyaxxuje.supabase.co/functions/v1/skills-api/skills/hermes/invoke \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "session_id": "usr_123", "context": "System orchestration run" }'

Example response

200 OK
{ "success": true, "skill": "hermes", "invocation_count": 48 }

Skill object

FieldTypeDescription
idintegerUnique skill ID
namestringURL-safe slug (e.g. competitive-intelligence)
categorystringDomain category
descriptionstringOne-line description
line_countintegerSkill depth in lines (min 200)
invocation_countintegerTotal times invoked
last_invokedstring (ISO 8601)Timestamp of most recent invocation
created_atstring (ISO 8601)When skill was added
updated_atstring (ISO 8601)Last modification

Errors

StatusCodeDescription
400bad_requestMissing or invalid parameter
404not_foundSkill does not exist
429rate_limitedToo many requests — retry after the interval in Retry-After
500server_errorInternal error — contact support

All error responses follow the format: { "error": "description" }

Rate limits

Limits are applied per client IP. They are not tied to a plan or an account — there is no metering, no monthly quota, and no per-plan tier on this API today.

OperationLimitOn exceeding
Reads (all GET)60 / minute / IP429 + Retry-After: 60
Writes (POST /invoke)10 / minute / IP429 + Retry-After: 60

Retry-After is the only rate-limit header returned. There are no X-RateLimit-* headers — read the 429 status rather than polling counters that aren't sent.

Questions? Email vibpulse@gmail.com or get started →