Comenzar
CLI
CLI
Paquete de CLI: clawhub, binario: clawhub.
Instálelo globalmente con npm o pnpm:
npm i -g clawhub# opnpm add -g clawhubA continuación, verifíquelo:
clawhub --helpclawhub loginclawhub whoamiOpciones globales
--workdir <dir>: directorio de trabajo (predeterminado: cwd; recurre al espacio de trabajo de Clawdbot si está configurado)--dir <dir>: directorio de instalación dentro del directorio de trabajo (predeterminado:skills)--site <url>: URL base para iniciar sesión en el navegador (predeterminada:https://clawhub.ai)--registry <url>: URL base de la API (predeterminada: detectada; en caso contrario,https://clawhub.ai)--no-input: desactiva las solicitudes interactivas
Equivalentes de entorno:
CLAWHUB_SITE(heredado:CLAWDHUB_SITE)CLAWHUB_REGISTRY(heredado:CLAWDHUB_REGISTRY)CLAWHUB_WORKDIR(heredado:CLAWDHUB_WORKDIR)
Proxy HTTP
La CLI respeta las variables de entorno estándar de proxy HTTP en sistemas situados detrás de proxies corporativos o redes restringidas:
HTTPS_PROXY/https_proxyHTTP_PROXY/http_proxyNO_PROXY/no_proxy
Cuando se establece cualquiera de estas variables, la CLI dirige las solicitudes salientes a través
del proxy especificado. HTTPS_PROXY se utiliza para las solicitudes HTTPS y HTTP_PROXY
para HTTP sin cifrar. Se respeta NO_PROXY / no_proxy para omitir el proxy en
hosts o dominios específicos.
Esto es necesario en sistemas donde las conexiones salientes directas están bloqueadas (p. ej., contenedores Docker, VPS de Hetzner con acceso a Internet exclusivamente mediante proxy o cortafuegos corporativos).
Ejemplo:
export HTTPS_PROXY=http://proxy.example.com:3128export NO_PROXY=localhost,127.0.0.1clawhub search "mi consulta"Cuando no se establece ninguna variable de proxy, el comportamiento no cambia (conexiones directas).
Archivo de configuración
Almacena el token de API y la URL del registro en caché.
- macOS:
~/Library/Application Support/clawhub/config.json - Linux/XDG:
$XDG_CONFIG_HOME/clawhub/config.jsono~/.config/clawhub/config.json - Windows:
%APPDATA%\\clawhub\\config.json - Alternativa heredada: si
clawhub/config.jsontodavía no existe, peroclawdhub/config.jsonsí, la CLI reutiliza la ruta heredada - anulación:
CLAWHUB_CONFIG_PATH(heredado:CLAWDHUB_CONFIG_PATH)
Comandos
login / auth login
- Predeterminado: abre el navegador en
<site>/cli/authy completa el proceso mediante una devolución de llamada de bucle invertido. - Sin interfaz gráfica:
clawhub login --token clh_... - Interactivo remoto/sin interfaz gráfica:
clawhub login --devicemuestra un código y espera mientras se autoriza en<site>/cli/device.
whoami
- Verifica el token almacenado mediante
/api/v1/whoami.
token
- Imprime el token de API almacenado en stdout.
- Resulta útil para canalizar un token de inicio de sesión local a comandos de configuración de secretos de CI.
star <skill> / unstar <skill>
- Añade o elimina una skill de los marcadores. Los nombres de los comandos siguen siendo
staryunstarpor compatibilidad. - Llama a
POST /api/v1/stars/<slug>yDELETE /api/v1/stars/<slug>. --yesomite la confirmación.
search <query...>
- Llama a
/api/v1/search?q=.... - La salida incluye el slug de la skill, el identificador del propietario, el nombre para mostrar y la puntuación de relevancia.
- La búsqueda favorece las coincidencias exactas de tokens del slug o nombre frente a la popularidad de descargas. Un token de slug independiente como
mapcoincide conpersonal-mapcon mayor fuerza que con la subcadena dentro deamap. - La popularidad es un factor previo de clasificación de poca importancia, no una garantía de ocupar las primeras posiciones.
- Si una skill debería aparecer, pero no lo hace, ejecute
clawhub inspect @owner/slugmientras mantiene la sesión iniciada para comprobar los diagnósticos de moderación visibles para el propietario antes de cambiar el nombre de los metadatos.
explore
- Enumera las skills más recientes mediante
/api/v1/skills?limit=...&sort=createdAt(ordenadas porcreatedAtde forma descendente). - Opciones:
--limit <n>(1-200, predeterminado: 25)--sort newest|updated|rating|downloads|trending(predeterminado: más recientes). Los alias heredados de ordenación de instalaciones siguen funcionando por compatibilidad.--json(salida legible por máquina)
- Salida:
<slug> v<version> <age> <summary>(resumen truncado a 50 caracteres).
inspect @owner/slug
- Obtiene los metadatos y los archivos de versión de una skill sin instalarla.
--version <version>: inspecciona una versión específica (predeterminada: la más reciente).--tag <tag>: inspecciona una versión etiquetada (p. ej.,latest).--versions: enumera el historial de versiones (primera página).--limit <n>: número máximo de versiones que se enumerarán (1-200).--files: enumera los archivos de la versión seleccionada.--file <path>: obtiene los bytes sin procesar del archivo (límite de 10MB).--json: salida legible por máquina;--fileincluye los bytes exactos como base64 y texto UTF-8 cuando está disponible.
install @owner/slug
- Resuelve la versión más reciente para el propietario y la skill indicados.
- Descarga el archivo ZIP mediante
/api/v1/download. - Lo extrae en
<workdir>/<dir>/<slug>. - Se niega a sobrescribir las skills fijadas; ejecute primero
clawhub unpin <skill>. - Escribe:
<workdir>/.clawhub/lock.json(heredado:.clawdhub)<skill>/.clawhub/origin.json(heredado:.clawdhub)
uninstall <skill>
- Elimina
<workdir>/<dir>/<slug>y borra la entrada del archivo de bloqueo. - Envía telemetría según el mejor esfuerzo mientras la sesión está iniciada para que los recuentos actuales de instalaciones puedan desactivarse.
- Interactivo: solicita confirmación.
- No interactivo (
--no-input): requiere--yes.
list
- Lee
<workdir>/.clawhub/lock.json(heredado:.clawdhub). - Muestra
pinnedjunto a las skills inmovilizadas conclawhub pin, incluido el motivo opcional.
pin <skill>
- Marca una skill instalada como fijada en el archivo de bloqueo.
--reason <text>registra por qué está inmovilizada la skill.- Las skills fijadas se omiten en
update --ally las rechaza directamenteupdate <skill>. - Las skills fijadas también rechazan
install --forcepara impedir que los bytes locales se sustituyan accidentalmente.
unpin <skill>
- Elimina del archivo de bloqueo la fijación de una skill instalada para que las actualizaciones futuras puedan modificarla.
update [@owner/slug] / update --all
- Calcula la huella digital a partir de los archivos locales.
- Si la huella digital coincide con una versión conocida: no se solicita confirmación.
- Si la huella digital no coincide:
- se niega de forma predeterminada
- sobrescribe con
--force(o solicita confirmación si es interactivo)
- Las skills fijadas nunca se actualizan mediante
--force. update <skill>falla de inmediato para las skills fijadas e indica que se ejecute primeroclawhub unpin <skill>.update --allomite los slugs fijados y muestra un resumen de lo que permaneció inmovilizado.
skill publish <path>
- Compara la huella digital del paquete local con ClawHub y finaliza correctamente cuando el contenido ya está publicado.
- Las skills nuevas usan de forma predeterminada
1.0.0; las skills modificadas usan de forma predeterminada la siguiente versión de parche. --version <version>selecciona explícitamente una versión y la publica incluso cuando el contenido coincide con una versión existente.--dry-runresuelve la publicación sin cargar contenido;--jsonmuestra un resultado legible por máquina.--owner <handle>publica con el identificador de editor de una organización o usuario cuando el actor dispone de acceso de editor.--migrate-ownertraslada una skill existente a--ownermientras publica una versión nueva. Requiere acceso de administrador o propietario en ambos editores.- El comportamiento de los propietarios y las revisiones se explica en
docs/publishing.md. - Publicar una skill significa que se distribuye en ClawHub bajo
MIT-0. - Las skills publicadas pueden utilizarse, modificarse y redistribuirse libremente sin atribución.
- ClawHub no admite skills de pago ni precios por skill.
- Alias heredado:
publish <path>.
clawhub skill publish ./my-skill --dry-runclawhub skill publish ./my-skillclawhub skill publish ./my-skill --version 2.0.0GitHub Actions
El flujo de trabajo reutilizable
skill-publish.yml
de ClawHub llama a skill publish para una skill_path, o para cada carpeta de skill
inmediata dentro de root (predeterminado: skills). Omite las skills sin cambios y utiliza el
mismo comportamiento automático de versión de parche.
Establezca dry_run: true para obtener una vista previa sin token. Las publicaciones reales requieren el
secreto clawhub_token.
sync
- Analiza el directorio de trabajo actual, el directorio de skills configurado y cualquier
carpeta
--root <dir>para buscar carpetas locales de skills que contenganSKILL.mdoskill.md. - Compara la huella digital de cada skill local con ClawHub y publica solo las skills nuevas o modificadas.
- Las skills nuevas se publican como
1.0.0; las skills modificadas publican de forma predeterminada la siguiente versión de parche. Utilice--bump minor|majorpara lotes de actualización que deban avanzar mediante un incremento mayor de semver. --dry-runmuestra el plan de publicación sin cargar contenido;--jsonmuestra un plan legible por máquina.--allpublica todas las skills nuevas o modificadas sin solicitar confirmación. Sin--all, los terminales interactivos permiten seleccionar las skills que se publicarán.--owner <handle>publica con el identificador de editor de una organización o usuario cuando el actor dispone de acceso de editor.syncsolo publica en una dirección. No instala, actualiza ni descarga, ni informa de telemetría de instalaciones o descargas.
clawhub sync --all --dry-runclawhub sync --allclawhub sync --root ./skills --owner openclaw --bump minorscan --slug <slug>
- Requiere
clawhub login. - Ejecuta ClawScan de ClawHub mediante
POST /api/v1/skills/-/scany después consulta periódicamente hasta que el análisis llega a un estado terminal. - Los análisis son asíncronos y pueden tardar en completarse. Mientras están en cola, el indicador giratorio del terminal muestra la posición actual del análisis en la cola priorizada y cuántos análisis hay por delante.
- Los análisis publicados requieren acceso de propietario o de administración del editor. Los moderadores y administradores pueden utilizar el mismo backend mediante
clawhub-admin. --updatesolo es válido con--slug; escribe los resultados correctos del análisis publicado en la versión seleccionada.--output <file.zip>descarga el archivo completo del informe conmanifest.json,clawscan.json,skillspector.json,static-analysis.json,virustotal.jsonyREADME.md.--jsonmuestra la respuesta completa de la consulta periódica para su automatización.- Ya no se admiten los análisis de rutas locales. Cargue una versión nueva y después utilice
scan downloadpara recuperar los resultados de análisis almacenados de esa versión enviada.
clawhub scan --slug gifgrepclawhub scan --slug gifgrep --version 1.2.3clawhub scan --slug gifgrep --update --output report.zipscan download <name>
- Requiere
clawhub login. - Descarga el archivo ZIP del informe de análisis almacenado para una versión enviada de una Skill o un Plugin, incluidas las versiones bloqueadas u ocultadas por las comprobaciones de seguridad de ClawHub.
- Las descargas de Skills usan el slug de la Skill y, de forma predeterminada,
--kind skill. - Las descargas de Plugins usan el nombre del paquete y requieren
--kind plugin. --versiones obligatorio para que los autores inspeccionen la versión exacta enviada que ClawHub bloqueó.--output <file.zip>elige la ruta de destino.
clawhub scan download gifgrep --version 1.2.3clawhub scan download @scope/demo --version 2.0.0 --kind plugin --output report.zipGitHub Actions
ClawHub incluye un flujo de trabajo reutilizable oficial en
/.github/workflows/skill-publish.yml
para repositorios de Skills y repositorios de catálogos.
Configuración típica de un catálogo:
name: Skill Publish on: pull_request: workflow_dispatch: jobs: dry-run: if: github.event_name == 'pull_request' uses: openclaw/clawhub/.github/workflows/skill-publish.yml@v1 with: owner: nvidia dry_run: true publish: if: github.event_name == 'workflow_dispatch' uses: openclaw/clawhub/.github/workflows/skill-publish.yml@v1 with: owner: nvidia dry_run: false secrets: clawhub_token: ${{ secrets.CLAWHUB_TOKEN }}Notas:
rootusaskillsde forma predeterminada para los repositorios de catálogos.- Pase
skill_path: skills/review-helperpara procesar una carpeta de Skill. ownercorresponde a la opción--ownerde la CLI; omítala para publicar como el usuario autenticado.- La publicación de Skills V1 usa
clawhub_token; por ahora, la publicación de confianza mediante OIDC de GitHub solo está disponible para paquetes.
delete <skill>
- Sin
--version, elimina de forma lógica una Skill (propietario, moderador o administrador). - Llama a
DELETE /api/v1/skills/{slug}. - Las eliminaciones lógicas iniciadas por el propietario reservan el slug durante 30 días; el comando muestra la hora de vencimiento.
--version <version>retira una versión propia que no sea la más reciente mediante una ruta de cierre seguro específica de la versión. El número de versión permanece reservado y no puede volver a publicarse con contenido diferente. Publique una versión de reemplazo antes de eliminar la versión más reciente actual. El personal de la plataforma no puede eludir la propiedad en este flujo exclusivo para versiones.--reason <text>registra una nota de moderación en la eliminación lógica de toda la Skill y en el registro de auditoría.--note <text>es un alias de--reason.--yesomite la confirmación.
undelete <skill>
- Restaura una Skill oculta (propietario, moderador o administrador).
- Llama a
POST /api/v1/skills/{slug}/undelete. --version <version>restaura únicamente el artefacto exacto conservado que retiró previamente el mismo propietario. No convierte la versión restaurada en la más reciente ni vuelve a crear las etiquetas eliminadas.- La restauración de una versión llama a
POST /api/v1/skills/{slug}/versions/{version}/restore. --reason <text>registra una nota de moderación en la Skill y en el registro de auditoría.--note <text>es un alias de--reason.--yesomite la confirmación.
hide <skill>
- Oculta una Skill (propietario, moderador o administrador).
- Alias de
delete.
unhide <skill>
- Deja de ocultar una Skill (propietario, moderador o administrador).
- Alias de
undelete.
skill rename <skill> <new-name>
- Cambia el nombre de una Skill propia y conserva el slug anterior como alias de redirección.
- Llama a
POST /api/v1/skills/{slug}/rename. --yesomite la confirmación.
skill merge <source> <target>
- Fusiona una Skill propia con otra Skill propia.
- El slug de origen deja de aparecer públicamente y se convierte en un alias de redirección al destino.
- Llama a
POST /api/v1/skills/{sourceSlug}/merge. --yesomite la confirmación.
transfer
- Flujo de trabajo de transferencia de propiedad.
- Las transferencias a identificadores de usuario crean una solicitud pendiente que acepta el destinatario.
- Las transferencias a identificadores de organizaciones o publicadores se aplican inmediatamente solo cuando el actor tiene acceso de administrador tanto al propietario actual como al publicador de destino.
- Subcomandos:
transfer request <skill> <handle> [--message "..."] [--yes]transfer list [--outgoing]transfer accept <skill> [--yes]transfer reject <skill> [--yes]transfer cancel <skill> [--yes]
- Endpoints:
POST /api/v1/skills/{slug}/transferPOST /api/v1/skills/{slug}/transfer/acceptPOST /api/v1/skills/{slug}/transfer/rejectPOST /api/v1/skills/{slug}/transfer/cancelGET /api/v1/transfers/incomingGET /api/v1/transfers/outgoing
package explore [query...]
- Explora o busca en el catálogo unificado de paquetes mediante
GET /api/v1/packagesyGET /api/v1/packages/search. - Use esta opción para Plugins y otras entradas de familias de paquetes;
searchen el nivel superior sigue siendo la interfaz de búsqueda de Skills. - Opciones:
--family skill|code-plugin|bundle-plugin--official--executes-code--target <target>,--os <os>,--arch <arch>,--libc <libc>--requires-browser,--requires-desktop,--requires-native-deps--requires-external-service,--external-service <name>--binary <name>,--os-permission <name>--artifact-kind legacy-zip|npm-pack--npm-mirror--limit <n>(1-100, valor predeterminado: 25)--json
Ejemplos:
clawhub package explore --family code-pluginclawhub package explore --family code-plugin --os darwin --requires-desktopclawhub package explore --family code-plugin --artifact-kind npm-packclawhub package explore --npm-mirrorclawhub package explore episodic-claw --family code-pluginpackage inspect <name>
- Obtiene los metadatos del paquete sin instalarlo.
- Use esta opción para inspeccionar los metadatos, la compatibilidad, la verificación, el origen y las versiones o archivos de un Plugin.
--version <version>: inspecciona una versión específica (valor predeterminado: la más reciente).--tag <tag>: inspecciona una versión etiquetada (p. ej.,latest).--versions: enumera el historial de versiones (primera página).--limit <n>: número máximo de versiones que se enumerarán (1-100).--files: enumera los archivos de la versión seleccionada.--file <path>: obtiene una vista previa limitada de texto UTF-8 (límite de 200KB).--json: salida legible por máquinas.
package download <name>
- Resuelve una versión de paquete mediante
GET /api/v1/packages/{name}/versions/{version}/artifact. - Descarga el artefacto desde
downloadUrldel resolutor. - Verifica el SHA-256 de ClawHub para todos los artefactos.
- Para los artefactos npm-pack de ClawPack, también verifica la integridad
sha512de npm, el shasum de npm y el nombre o la versiónpackage.jsondel archivo tar. - Las versiones ZIP heredadas se descargan mediante la ruta ZIP heredada.
- Opciones:
--version <version>: descarga una versión específica.--tag <tag>: descarga una versión etiquetada (valor predeterminado:latest).-o, --output <path>: archivo o directorio de salida.--force: sobrescribe un archivo de salida existente.--json: salida legible por máquinas.
Ejemplos:
clawhub package download @openclaw/example-plugin --tag latestclawhub package download @openclaw/example-plugin --version 1.2.3 -o artifacts/package verify <file>
- Calcula el SHA-256 de ClawHub, la integridad
sha512de npm y el shasum de npm para un artefacto local. - Con
--package, resuelve los metadatos esperados desde ClawHub y compara el archivo local con los metadatos del artefacto publicado. - Con opciones de resumen directas, verifica sin realizar una consulta de red.
- Opciones:
--package <name>: nombre del paquete para resolver los metadatos esperados del artefacto.--version <version>o--tag <tag>: versión esperada del paquete.--sha256 <hex>: SHA-256 esperado de ClawHub.--npm-integrity <sri>: integridad esperada de npm.--npm-shasum <sha1>: shasum esperado de npm.--json: salida legible por máquinas.
Ejemplos:
clawhub package verify ./example-plugin-1.2.3.tgz --package @openclaw/example-plugin --version 1.2.3clawhub package verify ./example-plugin-1.2.3.tgz --sha256 <hex>package validate <source>
- Ejecuta el Inspector de Plugins incluido en la CLI de ClawHub sobre una carpeta local de paquetes de Plugins.
- De forma predeterminada, realiza una validación estática sin conexión, sin localizar ni importar un checkout local de OpenClaw.
- Los errores graves de compatibilidad producen una salida distinta de cero. Los hallazgos que solo son advertencias se muestran, pero producen una salida de cero.
- Opciones:
--out <dir>: escribe los informes del Inspector de Plugins en este directorio.--openclaw <path>: inspecciona con respecto a un checkout local explícito de OpenClaw.--runtime: habilita la captura en tiempo de ejecución; importa el código del Plugin.--allow-execute: permite la captura en tiempo de ejecución en un espacio de trabajo aislado.--no-mock-sdk: deshabilita el SDK simulado de OpenClaw durante la captura en tiempo de ejecución.--json: salida legible por máquinas.
Ejemplo:
clawhub package validate ./example-pluginSi la validación informa de un hallazgo relacionado con el paquete, el manifiesto, la importación del SDK o el artefacto, consulte Correcciones de validación de Plugins y vuelva a ejecutar el comando.
package delete <name>
- Sin
--version, elimina de forma lógica un paquete y todas sus versiones. --version <version>retira una versión propia que no sea la más reciente mediante una ruta de cierre seguro específica de la versión. El número de versión permanece reservado y no puede volver a publicarse con contenido diferente. Publique una versión de reemplazo antes de eliminar la versión más reciente actual. Este flujo exclusivo para versiones requiere ser propietario del paquete o administrador de un publicador de la organización; el personal de la plataforma no puede eludir la propiedad del paquete.- La eliminación lógica del paquete completo requiere ser propietario del paquete, propietario o administrador de un publicador de la organización, moderador de la plataforma o administrador de la plataforma.
- Opciones:
--version <version>: retira una versión que no sea la más reciente.--yes: omite la confirmación.--json: salida legible por máquinas.
Ejemplo:
clawhub package delete @openclaw/example-plugin --yesclawhub package delete @openclaw/example-plugin --version 1.2.3 --yespackage undelete <name>
- Restaura un paquete eliminado de forma lógica y sus versiones.
- Requiere ser propietario del paquete, propietario o administrador de un publicador de la organización, moderador de la plataforma o administrador de la plataforma.
- Llama a
POST /api/v1/packages/{name}/undelete. --version <version>restaura únicamente la versión exacta conservada que retiró previamente el mismo propietario. No convierte la versión restaurada en la más reciente ni vuelve a crear las etiquetas o dist-tags eliminadas del paquete.- La restauración de una versión llama a
POST /api/v1/packages/{name}/versions/{version}/restore. - Opciones:
--version <version>: restaura una versión retirada por el propietario.--yes: omite la confirmación.--json: salida legible por máquinas.
Ejemplo:
clawhub package undelete @openclaw/example-plugin --yespackage transfer <name>
- Transfiere un paquete a otro publicador.
- Requiere acceso de administrador tanto al propietario actual del paquete como al publicador de destino, salvo que lo realice un administrador de la plataforma.
- Los nombres de paquetes con ámbito deben transferirse al propietario del ámbito correspondiente.
- Llama a
POST /api/v1/packages/{name}/transfer. - Opciones:
--to <owner>: identificador del publicador de destino.--reason <text>: motivo de auditoría opcional.--json: salida legible por máquina.
Ejemplo:
clawhub package transfer @openclaw/example-plugin --to openclawpackage report
- Comando autenticado para denunciar un paquete a los moderadores.
- Llama a
POST /api/v1/packages/{name}/report. - Las denuncias se aplican al paquete, pueden vincularse opcionalmente a una versión y pasan a ser visibles para que los moderadores las revisen.
- Las denuncias no ocultan automáticamente los paquetes ni bloquean por sí solas las descargas.
- Opciones:
--version <version>: versión opcional del paquete que se adjuntará a la denuncia.--reason <text>: motivo obligatorio de la denuncia.--json: salida legible por máquina.
Ejemplo:
clawhub package report @openclaw/example-plugin --version 1.2.3 --reason "carga nativa sospechosa"package moderation-status
- Comando del propietario para comprobar la visibilidad de moderación del paquete.
- Llama a
GET /api/v1/packages/{name}/moderation. - Muestra el estado actual del análisis del paquete, el número de denuncias abiertas, el estado de moderación manual de la versión más reciente, el estado de bloqueo de descargas y los motivos de moderación.
- Opciones:
--json: salida legible por máquina.
Ejemplo:
clawhub package moderation-status @openclaw/example-pluginpackage readiness <name>
- Comprueba si un paquete está preparado para su uso futuro por parte de OpenClaw.
- Llama a
GET /api/v1/packages/{name}/readiness. - Informa de los impedimentos relacionados con el estado oficial, la disponibilidad de ClawPack, el resumen del artefacto, la procedencia del código fuente, la compatibilidad con OpenClaw, los destinos de host, los metadatos del entorno y el estado del análisis.
- Opciones:
--json: salida legible por máquina.
Ejemplo:
clawhub package readiness @openclaw/example-pluginpackage migration-status <name>
- Muestra el estado de migración orientado a operadores de un paquete que puede sustituir a un plugin incluido con OpenClaw.
- Llama al mismo endpoint de preparación calculada que
package readiness, pero muestra el estado centrado en la migración, la versión más reciente, el estado de paquete oficial, las comprobaciones y los impedimentos. - Opciones:
--json: salida legible por máquina.
Ejemplo:
clawhub package migration-status @openclaw/example-pluginpublisher create <handle>
- Crea un publicador de organización propiedad del usuario autenticado.
- El identificador se normaliza a minúsculas y puede proporcionarse con o sin
@. - Los publicadores de organización recién creados no son de confianza ni oficiales de forma predeterminada.
- Falla si el identificador ya lo utiliza un publicador o usuario existente, o una ruta reservada.
clawhub publisher create opik --display-name "Opik"package publish <source>
- Publica un plugin de código o un plugin de paquete mediante
POST /api/v1/packages. <source>acepta:- Ruta de carpeta local:
./my-plugin - Tarball local de ClawPack generado por npm-pack:
./my-plugin-1.2.3.tgz - Repositorio de GitHub:
owner/repooowner/repo@ref - URL de GitHub:
https://github.com/owner/repo
- Ruta de carpeta local:
- Los metadatos se detectan automáticamente a partir de
package.json,openclaw.plugin.jsony marcadores reales de paquetes de OpenClaw, como.codex-plugin/plugin.json,.claude-plugin/plugin.jsony.cursor-plugin/plugin.json. - Las fuentes
.tgzse tratan como ClawPack. La CLI carga los bytes exactos de npm-pack y utiliza el contenido extraído depackage/únicamente para la validación y el rellenado previo de metadatos. - Las carpetas de plugins de código se empaquetan en un tarball npm de ClawPack antes de cargarlas para que las instalaciones de OpenClaw puedan verificar el artefacto exacto. Las carpetas de plugins de paquete siguen utilizando la ruta de publicación de archivos extraídos.
- Para las fuentes de GitHub, la atribución del código fuente se rellena automáticamente a partir del repositorio, el commit resuelto, la referencia y la subruta.
- Para las carpetas locales, la atribución del código fuente se detecta automáticamente mediante el repositorio Git local cuando el remoto de origen apunta a GitHub.
- Los plugins de código externos deben declarar explícitamente
openclaw.compat.pluginApiyopenclaw.build.openclawVersion. El campopackage.json.versionde nivel superior no se utiliza como alternativa para la validación de publicación. --dry-runofrece una vista previa de la carga útil de publicación resuelta sin cargarla.--jsonemite una salida legible por máquina para la CI.--owner <handle>publica bajo el identificador de un publicador de usuario u organización cuando el actor tiene acceso al publicador.- Los nombres de paquetes con ámbito deben coincidir con el propietario seleccionado. Consulte
docs/publishing.md. - Las opciones existentes (
--family,--name,--version,--source-repo,--source-commit,--source-ref,--source-path) siguen funcionando como anulaciones. - Los repositorios privados de GitHub requieren
GITHUB_TOKEN.
clawhub package publish ./plugin.tgz --owner openclawFlujo local recomendado
Utilice primero --dry-run para confirmar los metadatos resueltos del paquete y
la atribución del código fuente antes de crear una versión activa:
npm packclawhub package publish ./my-plugin-1.2.3.tgz --family code-plugin --dry-runclawhub package publish ./my-plugin-1.2.3.tgz --family code-pluginFlujo de carpeta local
Para los plugins de código, la publicación de carpetas crea y carga un artefacto ClawPack desde la carpeta del paquete:
clawhub package publish ./my-plugin --family code-plugin --dry-runclawhub package publish ./my-plugin --family code-pluginpackage.json mínimo para --family code-plugin
Los plugins de código externos necesitan una pequeña cantidad de metadatos de OpenClaw en
package.json. Este manifiesto mínimo basta para publicar correctamente:
{ "name": "@myorg/openclaw-my-plugin", "version": "1.0.0", "type": "module", "openclaw": { "extensions": ["./index.ts"], "compat": { "pluginApi": ">=2026.3.24-beta.2" }, "build": { "openclawVersion": "2026.3.24-beta.2" } }}Campos obligatorios:
openclaw.compat.pluginApiopenclaw.build.openclawVersion
Notas:
package.json.versiones la versión de publicación del paquete, pero no se utiliza como alternativa para la validación de compatibilidad o compilación de OpenClaw.openclaw.hostTargetsyopenclaw.environmentson metadatos opcionales. ClawHub puede mostrarlos cuando estén presentes, pero no son obligatorios para publicar.openclaw.compat.minGatewayVersionyopenclaw.build.pluginSdkVersionson elementos adicionales opcionales si se quieren publicar metadatos de compatibilidad más detallados.- Si se utiliza una versión anterior de la CLI
clawhub, debe actualizarse antes de publicar para que las comprobaciones preliminares locales se ejecuten antes de la carga. - Si la validación informa de un código de corrección, consulte Correcciones de validación de plugins.
GitHub Actions
ClawHub también proporciona un flujo de trabajo reutilizable oficial en
/.github/workflows/package-publish.yml
para repositorios de plugins.
Configuración habitual del invocador:
name: Package Publish on: pull_request: workflow_dispatch: push: tags: - "v*" jobs: dry-run: if: github.event_name == 'pull_request' uses: openclaw/clawhub/.github/workflows/package-publish.yml@v0.12.0 with: dry_run: true publish: if: github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/tags/') permissions: contents: read id-token: write uses: openclaw/clawhub/.github/workflows/package-publish.yml@v0.12.0 with: dry_run: false secrets: clawhub_token: ${{ secrets.CLAWHUB_TOKEN }}Notas:
- El flujo de trabajo reutilizable establece de forma predeterminada
sourceen el repositorio invocador. - En monorepos, proporcione
source_pathpara que el flujo de trabajo publique la carpeta del paquete del plugin, por ejemplo,source_path: extensions/codex. - Fije el flujo de trabajo reutilizable a una etiqueta estable o a un SHA de commit completo. No ejecute la publicación de versiones desde
@main. pull_requestdebe utilizardry_run: truepara que la CI no genere efectos secundarios.- Las publicaciones reales deben limitarse a eventos de confianza, como
workflow_dispatch, o a envíos de etiquetas. - La publicación de confianza sin secreto solo funciona en
workflow_dispatch; los envíos de etiquetas siguen necesitandoclawhub_token. - Mantenga
clawhub_tokendisponible para la primera publicación, los paquetes que no sean de confianza o las publicaciones de emergencia. - El flujo de trabajo carga el resultado JSON como artefacto y lo expone como salidas del flujo de trabajo.
package trusted-publisher get <name>
- Muestra la configuración del publicador de confianza de GitHub Actions para un paquete.
- Utilícelo después de establecer la configuración para confirmar el repositorio, el nombre de archivo del flujo de trabajo y la fijación opcional del entorno.
- Opciones:
--json: salida legible por máquina.
Ejemplo:
clawhub package trusted-publisher get @openclaw/example-pluginpackage trusted-publisher set <name>
- Adjunta o sustituye la configuración del publicador de confianza de GitHub Actions para un paquete existente.
- El paquete debe crearse primero mediante la publicación normal manual o autenticada con token
clawhub package publish. - Una vez establecida la configuración, las publicaciones futuras compatibles desde GitHub Actions pueden utilizar OIDC o la publicación de confianza sin un token de ClawHub de larga duración.
--repository <repo>debe serowner/repo.--workflow-filename <file>debe coincidir con el nombre del archivo del flujo de trabajo en.github/workflows/.--environment <name>es opcional. Cuando se configura, el entorno de GitHub Actions en la declaración OIDC debe coincidir exactamente.- ClawHub verifica el repositorio de GitHub configurado al ejecutar este comando. Los repositorios públicos pueden verificarse mediante los metadatos públicos de GitHub. Los repositorios privados requieren que ClawHub tenga acceso de GitHub a ese repositorio, por ejemplo, mediante una futura instalación de la aplicación de GitHub de ClawHub u otra integración autorizada de GitHub.
- Opciones:
--repository <repo>: repositorio de GitHub, por ejemplo,openclaw/example-plugin.--workflow-filename <file>: nombre del archivo del flujo de trabajo, por ejemplo,package-publish.yml.--environment <name>: entorno opcional de GitHub Actions con coincidencia exacta.--json: salida legible por máquina.
Ejemplo:
clawhub package trusted-publisher set @openclaw/example-plugin \ --repository openclaw/example-plugin \ --workflow-filename package-publish.yml \ --environment releasepackage trusted-publisher delete <name>
- Elimina la configuración del publicador de confianza de un paquete.
- Utilícelo como reversión si es necesario desactivar o volver a crear el flujo de trabajo, el repositorio o la fijación del entorno.
- Las publicaciones reales posteriores deben utilizar la publicación autenticada normal hasta que se vuelva a establecer la configuración.
- Opciones:
--json: salida legible por máquina.
Ejemplo:
clawhub package trusted-publisher delete @openclaw/example-pluginTelemetría de instalación
- Se envía después de
clawhub install <slug>cuando se ha iniciado sesión, salvo que se haya establecidoCLAWHUB_DISABLE_TELEMETRY=1. - Los informes se realizan en la medida de lo posible. Los comandos de instalación no fallan si la telemetría no está disponible.
- Detalles:
docs/telemetry.md.