From fyso-agents-creator
Create a Fyso agent team from natural language requirements. Diseña y despliega equipos de agentes IA en Fyso. Keywords: crear equipo, create team, nuevo equipo, agentes fyso, deploy agents, equipo de agentes, team setup.
npx claudepluginhub etendosoftware/etendo_claude_marketplace --plugin fyso-agents-creatorThis skill uses the workspace's default tool permissions.
Follow these steps exactly to design and deploy a new agent team to Fyso from a natural language requirement.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Analyzes BMad project state from catalog CSV, configs, artifacts, and query to recommend next skills or answer questions. Useful for help requests, 'what next', or starting BMad.
Follow these steps exactly to design and deploy a new agent team to Fyso from a natural language requirement.
Before starting, internalize these principles — they guide ALL design decisions in Steps 4–6.
| Pattern | When to use | Structure |
|---|---|---|
| Coordinator/Delegator | Most teams. One agent routes work to specialists. | 1 coordinator + N specialists |
| Sequential Pipeline | Tasks with strict ordering (A → B → C). | Each agent hands off to the next |
| Parallel | Independent subtasks that can run simultaneously. | Coordinator fans out, collects results |
| Evaluator-Optimizer | Quality loops (generate → review → improve). | Generator + Evaluator + optional Refiner |
soul gives the agent a voice, values, and working style.system_prompt has sections: Context, Responsibilities, Rules, Output Format.role: coordinator to route work.You are [NAME], [ONE-LINE IDENTITY].
Your core values: [2-3 values that shape every decision].
Your working style: [How you approach problems — methodical, creative, direct, etc.].
You [DO/DON'T] [KEY BEHAVIOR]. You always [POSITIVE HABIT].
## Context
[What team this agent belongs to and its purpose in the team.]
## Responsibilities
- [Primary responsibility]
- [Secondary responsibility]
- [...]
## Rules
- Always [rule 1]
- Never [rule 2]
- When in doubt, [rule 3]
## Output Format
[How this agent structures its responses: headings, lists, JSON, prose, etc.]
coordinator agent.lowercase-with-hyphens.name field = slug (e.g. content-writer), display_name = human label (e.g. Content Writer).coordinator, developer, writer, reviewer, qa, analyst, designer, security, researcher, specialist.Check if credentials exist at ~/.fyso/config.json. If they do, read the file and use the stored token and tenant_id.
Tell the user:
Encontré credenciales guardadas en
~/.fyso/config.json. Las usaré para esta sesión.
If no saved config exists, ask the user for their Token (Bearer token for API access).
Tell the user:
Para obtener tu token, andá a https://agent-ui-sites.fyso.dev/ , ingresá con tu email y contraseña, y copiá el token que aparece en pantalla.
The tenant ID is always fyso-world-fcecd. The API URL is always https://api.fyso.dev. Do NOT ask the user for either.
Once you have a token, save it to ~/.fyso/config.json:
mkdir -p ~/.fyso
{
"token": "{TOKEN}",
"tenant_id": "fyso-world-fcecd",
"api_url": "https://api.fyso.dev",
"saved_at": "{ISO_TIMESTAMP}"
}
Validate the token with a quick check:
curl -s -o /dev/null -w "%{http_code}" "https://api.fyso.dev/api/entities/teams/records" \
-H "Authorization: Bearer {TOKEN}" \
-H "X-Tenant-ID: fyso-world-fcecd"
If the response is 401 or 403, tell the user the token is invalid and ask for a new one. Repeat once. If it fails again, stop and ask them to verify their credentials at https://agent-ui-sites.fyso.dev/.
Ask the user:
¿Qué tipo de equipo necesitás crear? Describilo en lenguaje natural (ej: "un equipo de marketing para crear contenido en redes sociales", "un equipo de desarrollo para revisar PRs", etc.)
Wait for their response. If the description is vague (e.g. "un equipo bueno"), ask up to 3 clarifying questions — one at a time:
After 3 questions, proceed with the best understanding you have.
Fetch existing teams and agents:
curl -s "https://api.fyso.dev/api/entities/teams/records" \
-H "Authorization: Bearer {TOKEN}" \
-H "X-Tenant-ID: fyso-world-fcecd"
curl -s "https://api.fyso.dev/api/entities/agents/records" \
-H "Authorization: Bearer {TOKEN}" \
-H "X-Tenant-ID: fyso-world-fcecd"
Parse the data.items arrays from each response. Note all existing team names/slugs and agent names/slugs.
If any proposed name would collide with an existing one, you have two options:
marketing-writer-v2).Do NOT alert the user about collisions at this step — just note them internally for Step 4.
Based on the requirements and your knowledge of best practices, design the team structure. Then present it to the user in this format:
Propuesta de equipo: {team-slug}
{One-sentence description of what this team does}
Patrón de orquestación: {pattern name and brief explanation}
Agentes:
| # | Nombre | Rol | Responsabilidad principal |
|---|---|---|---|
| 1 | {display_name} ({name}) | coordinator | {what it does} |
| 2 | {display_name} ({name}) | {role} | {what it does} |
| ... |
Team prompt: {Brief description of what the team-level prompt will say}
¿Esta estructura te parece bien? Podés pedirme que agregue, quite o modifique agentes antes de continuar.
Wait for user feedback. Apply any changes they request:
After each change, show the updated table. Repeat until the user explicitly approves (e.g. "sí", "ok", "adelante", "perfecto", "aprobado", "listo").
For each agent in the approved structure, generate a complete soul and system_prompt following the templates in the Reference section above. Make them specific, detailed, and high-quality.
Present a preview to the user:
Preview de prompts generados:
{display_name} ({role})
Soul:
{first 2 sentences of soul}...
System prompt:
Context
{first line}...
(y {N-1} agentes más)
¿Querés revisar los prompts completos antes de crear los recursos? (sí/no)
If the user says yes, show each agent's full soul and system_prompt. Wait for approval or adjustments.
If the user says no or approves, proceed to Step 7.
POST the team to Fyso:
curl -s -X POST "https://api.fyso.dev/api/entities/teams/records" \
-H "Authorization: Bearer {TOKEN}" \
-H "X-Tenant-ID: fyso-world-fcecd" \
-H "Content-Type: application/json" \
-d '{
"name": "{team display name}",
"slug": "{team-slug}",
"description": "{team description}",
"prompt": "{team-level orchestration prompt}"
}'
The prompt field should describe how agents in the team collaborate — which agent handles what, how work flows between them.
Save the team id from the response — you need it in Step 9.
If the request fails with 4xx (not 409), retry once. If it fails again, show the error to the user and ask how to proceed.
If it fails with 409 (conflict/duplicate slug), append -new to the slug and retry once.
For each agent (in order, coordinator first), POST to Fyso:
curl -s -X POST "https://api.fyso.dev/api/entities/agents/records" \
-H "Authorization: Bearer {TOKEN}" \
-H "X-Tenant-ID: fyso-world-fcecd" \
-H "Content-Type: application/json" \
-d '{
"name": "{agent-slug}",
"display_name": "{Agent Display Name}",
"role": "{role}",
"soul": "{full soul text}",
"system_prompt": "{full system prompt text}",
"status": "active"
}'
Save each agent's id from the response — you need it in Step 9.
If an agent slug already exists (409), append -new to the slug and retry once.
If the user flagged a reusable existing agent in Step 3, skip creating it and use the existing UUID directly.
For each agent (using the IDs from Steps 7 and 8), POST the team-agent association:
curl -s -X POST "https://api.fyso.dev/api/entities/team_agents/records" \
-H "Authorization: Bearer {TOKEN}" \
-H "X-Tenant-ID: fyso-world-fcecd" \
-H "Content-Type: application/json" \
-d '{
"team": "{TEAM_UUID}",
"agent": "{AGENT_UUID}"
}'
Repeat for every agent in the team.
Print a final summary:
Equipo creado exitosamente
{team-slug} (ID: {team-uuid})| Agente | Rol | ID |
|---|---|---|
| {display_name} | {role} | {uuid} |
| ... |
Los agentes ya están disponibles en Fyso en https://agent-ui-sites.fyso.dev/
¿Querés sincronizar este equipo al directorio local .claude/agents/ para usarlo como subagentes en Claude Code? Podés ejecutar /sync-team ahora para hacerlo.
If anything failed during creation (non-retried errors), list what was created successfully and what was skipped, so the user can manually complete or retry.