Cómo crear un plugin de Claude Code: plugin.json, la primera skill y validate
Hola, bienvenido. En esta lección vamos a crear el plugin team, que a partir de ahora va a ser el sitio de todo lo que define cómo trabaja el equipo con Claude Code. Le vamos a dar su primera pieza, la skill conventional-commits que ahora vive en el .claude/ de helpdesk, lo validaremos con claude plugin validate y lo probaremos en una sesión sin instalarlo.
Al mover la skill a un plugin, deja de ser un archivo que se copia y pasa a ser una pieza con nombre propio, versionada y que se cambia en un único sitio. Es la primera pieza que sale del repo, y el camino que vamos a seguir con ella es el mismo que seguirá cada pieza que pase al plugin: copiarla, validar el plugin, probarlo en una sesión y quitarla del repo. De momento el plugin va a existir solo en el disco de Marta. Cómo llega a los demás lo veremos con el marketplace.
La estructura mínima de un plugin
Un plugin de Claude Code es una carpeta con un manifiesto y sus piezas. Las piezas pueden ser skills, hooks, subagentes, servidores MCP y mods, que son código JavaScript o TypeScript que se ejecuta en el propio proceso de Claude Code. En este curso el plugin va a llevar los 3 primeros, y empezamos por una skill. El manifiesto es .claude-plugin/plugin.json, y cada skill va en skills/<nombre>/SKILL.md, en la raíz del plugin, al mismo nivel que .claude-plugin/. Si una skill acaba en .claude-plugin/, el plugin carga sin errores, pero sin la skill: en esa carpeta solo va el manifiesto.
Los plugins del equipo van a vivir en un repo propio, claude-plugins, en la carpeta team/, junto a helpdesk. Lo vamos a organizar como un monorepo, con cada plugin en su carpeta de plugins/. Podríamos tener un repo por plugin, pero la raíz de este mismo repo va a ser también el marketplace, el catálogo que lista los plugins, y acabará teniendo un segundo plugin. Con todo en un repo, el catálogo y los plugins se revisan y se publican juntos. Así va a quedar al terminar la lección:
Es un repo nuevo, así que le vamos a abrir su pestaña. Como la carpeta claude-plugins todavía no existe, la abrimos en ~/code/team. Desde cualquier pestaña de la sesión:
En la pestaña nueva, reescribimos el layout con las 2 pestañas, la de claude-plugins ya con la carpeta del repo, que vamos a crear enseguida y en la que se va a quedar:
Y en la misma pestaña, vamos a crear las carpetas:
- 02El manifiesto: plugin.json
- 03Mover la skill conventional-commits al plugin
- 04Validar el plugin con claude plugin validate
- 05Probar el plugin sin instalarlo con --plugin-dir
- 06El primer commit de claude-plugins
- 07Quitar la skill del repo