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.
npx skills add https://github.com/davepoon/buildwithclaude --skill submit-to-agentlaunch
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.
curl 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.
curl -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": "[email protected]"
}'
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.# 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.This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.
Build agentic applications with GitHub Copilot SDK. Use when embedding AI agents in apps, creating custom tools, implementing streaming responses, managing sessions, connecting to MCP servers, or creating custom agents. Triggers on Copilot SDK, GitHub SDK, agentic app, embed Copilot, programmable agent, MCP server, custom agent.
Coding Agent Session Search - unified CLI/TUI to index and search local coding agent history from Claude Code, Codex, Gemini, Cursor, Aider, ChatGPT, Pi-Agent, Factory, and more. Purpose-built for AI agent consumption with robot mode.
Destructive Command Guard - High-performance Rust hook for Claude Code that blocks dangerous commands before execution. SIMD-accelerated, modular pack system, whitelist-first architecture. Essential safety layer for agent workflows.
Makepad UI development skills for Rust apps: setup, patterns, shaders, packaging, and troubleshooting.
Secure environment variable management ensuring secrets are never exposed in Claude sessions, terminals, logs, or git commits
Prompt for generating an AGENTS.md file for a repository
Take davepoon/submit-to-agentlaunch from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.