docs(freeticket-cli): settlements/api-keys + skill freeticket-mcp + el repo como plugin instalable - #13
Conversation
…n tokens Cierra el drift entre la skill y el CLI 0.8.0/0.9.0. Lo que faltaba: - ft settlements list y ft reports financials — la respuesta correcta a "cuánto se le liquida al organizador" es leer los números que FreeTicket ya calculó, no hacer aritmética sobre sales list. Queda dicho explícitamente porque es el error que un agente comete solo. - ft api-keys create|list|revoke — credencial headless, el plano sale una vez. - ft admin tokens — reemplaza pasear la cookie de sesión para CI. - ft events list --q. - Confirmación y exit codes: un abort sale 1 y sin TTY falla de una, así que `ft … delete && next-step` no ejecuta next-step. - El PDF de comprobante de liquidación no se baja por API (solo panel). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… vieja Cierra agent-skills#9 del lado de la skill: la copia instalada puede quedar detrás del repo y el agente da instrucciones obsoletas sin saberlo. Ahora la skill dice su revisión, la versión mínima de `ft`, y la regla cuando no coinciden: le cree al CLI, no al archivo, reinstale con `npx skills add` y avise para que el drift se arregle arriba y no se repita en silencio. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
PR Summary by QodoUpdate FreeTicket CLI docs for settlements, financial reports, and tokens
AI Description
Diagram
High-Level Assessment
Files changed (2)
|
Code Review by Qodo
1. Admin token docs inconsistent
|
| | `ft admin tokens list` | — (no pagination) | SUPER_ADMIN | | ||
| | `ft admin tokens create` | `--data` (`{"name","expiresAt?"}`) — plaintext shown once | SUPER_ADMIN | | ||
| | `ft admin tokens revoke <id>` | `--yes` to skip confirm | SUPER_ADMIN | |
There was a problem hiding this comment.
1. Admin token docs inconsistent 🐞 Bug ≡ Correctness
skills/freeticket-cli/references/commands.md still says a revocable admin service token is “coming”, but this PR also adds the ft admin tokens list|create|revoke commands, which contradicts the earlier guidance and can mislead CI/auth setup. The docs also don’t state (based on the actual CLI interface) how to provide the newly minted plaintext token to later ft admin … commands.
Agent Prompt
### Issue description
The admin authentication section still frames service tokens as future work, but the same reference now documents `ft admin tokens …`. This creates contradictory guidance and also leaves out the critical “how to use the created token” step for headless `ft admin`.
### Issue Context
- The reference currently says tokens are “coming”, while listing the token commands.
- `SKILL.md` advises using `ft admin tokens create` for CI, but neither doc shows (per the real CLI contract/help) how the minted token is supplied to future admin commands.
### Fix Focus Areas
- skills/freeticket-cli/references/commands.md[126-138]
- skills/freeticket-cli/references/commands.md[159-165]
- skills/freeticket-cli/SKILL.md[123-129]
- skills/freeticket-cli/SKILL.md[137-138]
### What to change
1. Remove or rewrite the stale “MVP — a revocable service token replaces this …” wording so it matches the now-documented `ft admin tokens …` feature.
2. Add a short, **verified** snippet showing how the minted admin token is used for subsequent `ft admin` calls (confirm the exact env var / flag from the CLI’s actual behavior/help, then document that mechanism explicitly).
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
…oto, 3 capas de credenciales, 87 tools) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ce de Claude Code) El repo ya tenía el layout que pide el estándar (skills/<name>/SKILL.md en la raíz), así que se vuelve plugin con manifests, sin mover archivos ni crear un repo aparte: - plugin.json / mcp.json — Agent Plugins 1.0.0 (agent-plugins.org), portable a cualquier cliente compatible. El server MCP va por stdio con npx, pinneado a @freeticket/mcp@0.13.0 y autenticado con la config de `ft login`. - .claude-plugin/plugin.json — Claude Code, que aún no lee el layout del estándar. Delega en el mcp.json de arriba vía `mcpServers` en vez de duplicar la definición del server. - .claude-plugin/marketplace.json — el canal de instalación de Claude Code vive en este mismo repo; un repo de marketplace aparte solo para listar un plugin no se paga. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@freeticket/mcp no está publicado en npm — el registro del plugin funcionaba
pero el server no arrancaba ("Connection closed"). El remoto ya está desplegado
y hace OAuth con el host, así que el plugin funciona sin publicar nada.
El manifest del estándar y el de Claude Code declaran el MISMO server con
nombres de transporte distintos ('streamable-http' vs 'http'): la duplicación
existe por esa divergencia de formatos, no por dos configuraciones.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…cp no está en npm npx -y @freeticket/mcp falla con "Connection closed" porque el paquete nunca se publicó. El skill lo daba por hecho. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
La skill se quedó atrás del CLI. Faltaban comandos que ya existen (
ft api-keysdesde 0.8.0) y los que llegan con freeticket-cli#33.ft settlements listyft reports financials. Van con una nota explícita: la respuesta correcta a "cuánto se le liquida al organizador" es leer los números que FreeTicket ya calculó, no hacer aritmética sobresales list. Es el error que un agente comete solo si nadie se lo dice.ft api-keys create|list|revoke— credencial headless para CI/cron; el plano sale una sola vez.ft admin tokens list|create|revoke— reemplaza pasear la cookiebetter-auth.session_tokenpor los scripts.ft events list --q.ft … delete && next-stepno ejecutanext-step. Documentado para que--yesse pase a propósito y no por costumbre.Versión mínima documentada:
ft≥ 0.9.0.Además: skill
freeticket-mcpy el repo como plugin instalableSkill
freeticket-mcp— setup local (stdio) y remoto (connector en claude.ai vía el AS OAuth 2.1 embebido), las tres capas de credenciales (anónimo B2C → workspace B2B → superadmin), los 87 tools y qué queda deliberadamente afuera. El README ya la listaba en esta branch; ahora existe.El repo es un plugin. Ya tenía el layout que pide Agent Plugins 1.0.0 (
skills/<name>/SKILL.mden la raíz), así que solo faltaban manifests — sin mover archivos y sin el repofreeticket-pluginaparte que preveía el roadmap:plugin.json+mcp.json.claude-plugin/plugin.json./mcp.jsonconmcpServersen vez de duplicar la definición del server..claude-plugin/marketplace.jsonEl plugin declara el server remoto
mcp.appfreeticket.com/mcp, que autoriza por OAuth en el browser al primer uso. Primero se había puesto el stdionpx -y @freeticket/mcpy no funciona: el paquete nunca se publicó en npm — el plugin registraba el server y moría con "Connection closed". Queda anotado como hito 11 del roadmap, y el skillfreeticket-mcplo avisa hasta que se publique.Instalación (probada de punta a punta contra esta branch, no solo
validate):→ las 3 skills en el cache y
plugin:freeticket:freeticketenclaude mcp list.claude plugin validatepasa en los dos manifests. Contexto enAppFreeticket/ai-native→ ROADMAP-AI-FIRST.md, hito 6.🤖 Generated with Claude Code