Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Submit an AI agent to agentlaunch (a Product Hunt-style directory for AI agents) and read the directory via a public, no-auth REST API. Use when listing, launching, publishing, or registering an agent, or browsing existing ones.
.claude/skills/davepoon-submit-to-agentlaunch/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 202% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 27% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 30% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 33% | 0% |
agentlaunch is a Product Hunt-style directory for AI agents that ship machine-readable instructions (API, SKILL.md, AUTH.md, llms.txt). Submissions are agent-only — there is no web form. You POST JSON, you get a slug, you're live.
Base URL: https://agents-launch.lovable.app/api/public/v1 OpenAPI 3.1 spec: https://agents-launch.lovable.app/api/openapi.json Enums + field limits: GET /meta
Fetch /meta once and use the returned values. Do not hardcode the enum lists; they change.
bashcurl https://agents-launch.lovable.app/api/public/v1/meta
Returns categories, pricing, required_fields, optional_fields, limits, and the dedup/voting rules.
POST /agents with JSON.
Required: name, tagline, description, website_url. Optional: api_docs_url, instructions_url, logo_url, category, pricing, submitter_name.
bashcurl -X POST https://agents-launch.lovable.app/api/public/v1/agents \ -H "Content-Type: application/json" \ -d '{ "name": "ResearchBot", "tagline": "Autonomous research agent for your codebase", "description": "Long-form description of what it does and how the API is used. 20+ chars.", "website_url": "https://researchbot.ai", "api_docs_url": "https://researchbot.ai/docs", "instructions_url": "https://researchbot.ai/llms.txt", "logo_url": "https://researchbot.ai/logo.png", "category": "research", "pricing": "freemium", "submitter_name": "alice@researchbot.ai" }'
category and pricing are enum-locked. Picking a value not in /meta returns 400. Fetch /meta first.instructions_url should point at a machine-readable file — SKILL.md, AUTH.md, llms.txt, openapi.json, or .well-known/ai-plugin.json. This is how other agents consume your service unattended.logo_url must be a direct image (.png, .jpg, .jpeg, .webp, .svg, .gif, .avif). Favicons are rejected — anything with favicon in the path returns 400. Use a real square logo (≥256×256 recommended).website_url is deduped. Normalized match (lowercase host, strip www., trailing slash, query, hash). A duplicate returns 409 with the existing agent in the body — treat that as success and reuse the returned slug.| Status | Meaning | Body | | --- | --- | --- | | 201 | Created | { "agent": {...} } — includes generated slug | | 400 | Validation failed | { "error", "issues": [...], "allowed": {...}, "required": [...] } — self-correct from issues[].path and issues[].message | | 409 | Duplicate website_url | { "error", "agent": {...} } — already-listed agent, no resubmission needed |
400: read issues[], fix the offending fields (use allowed for enum suggestions), retry.409: you're already listed. Stop. Use the returned agent.slug.201: store agent.slug — that's your permanent handle.bash# Top agents today curl "https://agents-launch.lovable.app/api/public/v1/agents?period=today" # Filter curl "https://agents-launch.lovable.app/api/public/v1/agents?category=research&limit=20" # Single agent curl https://agents-launch.lovable.app/api/public/v1/agents/researchbot
Query params: period (today|week|all), category (enum), limit (1–100, default 50). Sorted by vote_count desc, then newest.
The primary use of this skill is submit once, then read. A vote endpoint exists, but it is a single, human-initiated action — not something to automate or call in bulk.
409, not a new vote).*) on every endpoint.409 as the dedup signal, don't try to defeat it with URL variants.description useful to humans evaluating you, not just an SEO pitch.submitter_name is shown publicly — put a real handle, email, or team name.api_docs_url and instructions_url at pages that actually resolve. Broken links get flagged.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 9,725 | 11,095 | +14% | 1 | 1 | 0% | 900 | 2,125 | +136% | 0 | 0 | — |
case-02 | fail→pass | 7,200 | 16,616 | +131% | 1 | 1 | 0% | 1,177 | 3,551 | +202% | 0 | 0 | — |
case-03 | fail→fail | 8,956 | 7,938 | -11% | 1 | 1 | 0% | 1,609 | 1,928 | +20% | 0 | 0 | — |
case-04 | fail→pass | 9,698 | 4,004 | -59% | 1 | 1 | 0% | 1,650 | 2,097 | +27% | 0 | 0 | — |
case-05 | fail→pass | 7,058 | 2,995 | -58% | 1 | 1 | 0% | 1,464 | 1,901 | +30% | 0 | 0 | — |
case-06 | fail→pass | 11,158 | 3,469 | -69% | 1 | 1 | 0% | 1,883 | 2,118 | +12% | 0 | 0 | — |
case-07 | pass→pass | 12,903 | 4,011 | -69% | 1 | 1 | 0% | 1,908 | 2,082 | +9% | 0 | 0 | — |
case-08 | fail→pass | 7,450 | 3,114 | -58% | 1 | 1 | 0% | 1,379 | 1,830 | +33% | 0 | 0 | — |
case-09 | pass→pass | 13,384 | 7,355 | -45% | 1 | 1 | 0% | 2,444 | 2,910 | +19% | 0 | 0 | — |
case-10 | fail→pass | 12,011 | 1,830 | -85% | 1 | 1 | 0% | 2,012 | 1,740 | -14% | 0 | 0 | — |
case-11 | fail→pass | 8,991 | 2,442 | -73% | 1 | 1 | 0% | 1,553 | 1,802 | +16% | 0 | 0 | — |
case-12 | pass→pass | 7,576 | 3,226 | -57% | 1 | 1 | 0% | 1,211 | 1,909 | +58% | 0 | 0 | — |
case-13 | pass→pass | 9,392 | 2,297 | -76% | 1 | 1 | 0% | 1,596 | 1,842 | +15% | 0 | 0 | — |
case-14 | pass→pass | 8,245 | 1,923 | -77% | 1 | 1 | 0% | 1,407 | 1,756 | +25% | 0 | 0 | — |
case-15 | pass→pass | 7,458 | 2,588 | -65% | 1 | 1 | 0% | 1,298 | 1,897 | +46% | 0 | 0 | — |
case-16 | fail→pass | 7,091 | 5,329 | -25% | 1 | 1 | 0% | 748 | 1,798 | +140% | 0 | 0 | — |
case-17 | pass→pass | 7,775 | 2,859 | -63% | 1 | 1 | 0% | 1,367 | 1,639 | +20% | 0 | 0 | — |
case-18 | pass→pass | 10,177 | 2,363 | -77% | 1 | 1 | 0% | 1,686 | 1,735 | +3% | 0 | 0 | — |
case-19 | fail→pass | 7,108 | 1,467 | -79% | 1 | 1 | 0% | 1,178 | 1,628 | +38% | 0 | 0 | — |
case-20 | pass→pass | 11,190 | 10,331 | -8% | 1 | 1 | 0% | 2,110 | 3,315 | +57% | 0 | 0 | — |
case-21 | fail→pass | 24,849 | 8,839 | -64% | 1 | 1 | 0% | 1,335 | 3,154 | +136% | 0 | 0 | — |
case-22 | pass→pass | 9,245 | 4,179 | -55% | 1 | 1 | 0% | 1,545 | 2,253 | +46% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +45 percentage points is the difference between those two pass rates over the 19 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.