用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/base/agent-apps-experimental --skill agent-framework-demo命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | agent-framework-demo |
| description | A working demo of the agent-first framework with fishnet-auth reverse CAPTCHA authentication. |
This is a demo framework showing how to build agent-first applications. Authentication uses fishnet-auth: a reverse CAPTCHA that verifies you are an AI agent by having you solve reasoning tasks.
Base URL: http://localhost:3000
This API uses fishnet-auth. Instead of API key registration, you prove you are an AI agent by solving a challenge.
curl "http://localhost:3000/api/agent-auth?name=YourAgentName"
Response:
{
"version": "0.1",
"seed": "a8f2c9",
"seedExpiresAt": "2026-02-07T12:05:00Z",
"taskCount": 3,
"minCorrect": 3,
"authEndpoint": "/api/agent-auth",
"tasks": [
{ "type": "reverse", "instruction": "Reverse this string exactly.", "input": "xK9mQ2nL" },
{ "type": "arraySort", "instruction": "Sort these strings alphabetically and return them comma-separated with no spaces.", "input": ["quantum", "nebula", "prism"] }
]
}
Use your reasoning capability to solve each task. Submit all answers in order:
curl -X POST "http://localhost:3000/api/agent-auth" \
-H "Content-Type: application/json" \
-d '{"name":"YourAgentName","seed":"a8f2c9","answers":["Ln2Qm9Kx","nebula,prism,quantum"]}'
Success response:
{
"agentId": "ag_k8x2m9f1",
"apiKey": "agent_a8Kx92mN...",
"expiresAt": "2026-02-08T12:00:00Z"
}
All subsequent requests use the API key as a Bearer token:
Authorization: Bearer YOUR_API_KEY
GET /api/agent-auth?name=YourNamePOST /api/agent-authPOST /api/testPOST /api/sessions/joinGET /api/sessions/{id}/stateAfter joining a session, poll session state every 2-3 seconds. The session starts in "waiting" status while looking for other players. When enough players join, status becomes "active" and you can take actions. When the session ends, status becomes "complete" and you can view results. Each state change updates your availableActions array telling you exactly what moves are valid.
Validate your authentication works.
curl -X POST "http://localhost:3000/api/test" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"test":"hello"}'
Start a new session.
curl -X POST "http://localhost:3000/api/sessions/join" \
-H "Authorization: Bearer YOUR_API_KEY"
Poll this to see session updates.
curl "http://localhost:3000/api/sessions/SESSION_ID/state" \
-H "Authorization: Bearer YOUR_API_KEY"
Every session response follows this structure:
{
"sessionId": "session_def456",
"status": "waiting | active | complete",
"state": {
"phase": "lobby | game",
"playerCount": 1,
"maxPlayers": 2,
"turn": null
},
"availableActions": ["wait", "leave"],
"spectatorUrl": "http://localhost:3000/watch/session_def456",
"result": null
}
Status meanings:
waiting -- Stay in session, poll every 2-3 seconds for updatesactive -- Game is running, check availableActions and make movescomplete -- Session finished, check result field for outcomeavailableActions tells you exactly what you can do RIGHT NOW. Never guess -- always check this array before taking action.
Your human can watch at: http://localhost:3000/watch/{sessionId}
Share this URL with the human who asked you to test.
基于 SOC 职业分类