Skip to content

_shared/scripts/ — Catálogo de scripts

Scripts operativos del universo AI OS. Todos los .ps1 aceptan -Root (default $env:AI_OS_ROOT o resuelto relativo a _shared/scripts/).

Distribución a mundos (skills/agentes/hooks/MCP)

Section titled “Distribución a mundos (skills/agentes/hooks/MCP)”
  • attach-skills.ps1 / .sh — Symlinks de skills + agentes hacia un mundo según -Stack (react, nextjs, vanilla, backend, backend-prisma, devops, marketing, legal, full, astro). Por stack, no por manifest curado.
  • update-skills.ps1 — Borra y re-crea symlinks de skills/agentes de un mundo ya existente, mismo patrón -Stack. Útil si cambia el stack o quedan symlinks rotos.
  • enlace_one_skill.ps1 — Script ad-hoc de un solo uso: crea symlink de UNA skill puntual a UN mundo puntual. Valores hardcodeados, editar a mano antes de correr.
  • attach-hooks.ps1 / .sh — Instala hooks de _shared/hooks/ en un mundo: symlink del script (ej. secret-scanner.py) + merge no-destructivo del bloque hooks en .claude/settings.json. Params: -Hook <nombre|all> -World <ruta>.
  • attach-mcp.ps1 — Fusiona un grupo MCP de _shared/mcp/<Group> en .mcp.json/opencode.json de un mundo (-Format), preservando entradas propias del mundo.
  • link-world-skills.ps1 — Symlinks de subset curado (skills.manifest.txt) hacia worlds/<World>/.claude/skills/. Poda symlinks fuera del manifest.
  • generate-skills-manifest.ps1 — Inversa de la anterior: vuelca skills YA instaladas en .claude/skills/ hacia skills.manifest.txt.
  • link-world-agents.ps1 — Igual patrón para agentes (agents.manifest.txt → .claude/agents/).
  • link-world-commands.ps1 — Igual patrón para comandos (commands.manifest.txt → .claude/commands/).
  • link-world-launchers.ps1 — Symlinks de iniciar_claude_code.ps1 e iniciar_opencode.ps1 (viven en _shared/token-stack/) hacia la raíz de un mundo.
  • link-universe-agents.ps1 — Symlinks de _shared/agents/<grupo>/*.md hacia ai-os/.claude/agents/ (nivel universo, no mundo).
  • link-universe-commands.ps1 — Igual, para _shared/commands/*.md → ai-os/.claude/commands/.
  • materialize-symlinks.ps1 — Correr tras clonar/pull: si Git materializó symlinks trackeados como texto plano (core.symlinks=false), los convierte a symlinks reales. Fallback a mklink si New-Item falla por permisos.
  • git-add-real-files.ps1 — git add solo de archivos reales (no symlinks) dentro de .claude/skills y .claude/agents de un mundo.

OpenCode — espejo de comandos/agentes/plugins

Section titled “OpenCode — espejo de comandos/agentes/plugins”

OpenCode (>=1.17.13) lee comandos y agentes propios en .opencode/commands/ y .opencode/agents/ (no en .claude/). Misma fuente única que la sección anterior (_shared/commands/, _shared/agents/) — estos scripts solo cambian el directorio destino y, para comandos/agentes, reusan el mismo manifest (commands.manifest.txt / agents.manifest.txt) que ya cura la versión .claude. Correr el par (-opencode y sin sufijo) tras editar un manifest a mano para mantener ambas herramientas sincronizadas.

  • link-universe-commands-opencode.ps1 — Igual que link-universe-commands.ps1 pero destino ai-os/.opencode/commands/.
  • link-world-commands-opencode.ps1 — Igual que link-world-commands.ps1 (manifest curado) pero destino worlds/<World>/.opencode/commands/.
  • link-universe-agents-opencode.ps1 — Igual que link-universe-agents.ps1 pero destino ai-os/.opencode/agents/.
  • link-world-agents-opencode.ps1 — Igual que link-world-agents.ps1 (manifest curado) pero destino worlds/<World>/.opencode/agents/.
  • link-world-plugins-opencode.ps1 — Symlinks de todos _shared/plugins/*.ts hacia worlds/<World>/.opencode/plugins/. Plugins son el equivalente OpenCode de los hooks Claude (seguridad, notificaciones, tunnel) — a diferencia de comandos/agentes no usan manifest, aplican a todo mundo sin excepción. Si un mundo no quiere uno, borrar el symlink puntual después (rm worlds/<World>/.opencode/plugins/<plugin>.ts).
  • link-universe-plugins-opencode.ps1 / .sh — Igual, pero corre sobre todos los mundos de una (itera worlds/*), no uno solo. Cambiás un .ts en _shared/plugins/ → corré esto → se replica en todos + poda symlinks huérfanos (plugin borrado de la fuente).

Descubrimiento y búsqueda de skills/agentes

Section titled “Descubrimiento y búsqueda de skills/agentes”
  • download-skills.sh — Descarga skills de 6 fuentes remotas hacia ~/.ai-os/skills (default). UPDATE=true para refrescar.
  • download-agents.sh — Descarga 55 agentes desde 2 repos (davila7/claude-code-templates, AgriciDaniel/claude-seo) hacia ~/.ai-os/agents.
  • search-skills.ps1 — Busca en skills YA descargadas localmente (-Content para buscar en contenido, -Category para filtrar).
  • search-remote-skills.ps1 — Busca skills en repos fuente remotos (GitHub API) que aún no están en _shared/skills/.
  • search-remote-agents.ps1 — Igual, para agentes. Params -Query, -Deep, -IncludeOwned, -Token.
  • new-world.sh — Crea un mundo nuevo desde CLI (sin Claude Code). Uso: bash new-world.sh <nombre> "<descripción>" [stack] [root].
  • pull-universe.ps1 — Pull del root + git submodule update --init --recursive. Usa --ff-only, aborta si hay cambios sin commitear en root o submódulos con trabajo local sin pushear (salvo -Force).
  • clone-private-worlds.ps1 / .sh — Clona mundos personales no-submodule cruzando registry.json (público) con registry.private.json (gitignored, local). Nunca clona nada sin -All/-Worlds.
  • update-docs.ps1 / .sh — Regenera universe-docs/ (npm run sync) y corre npm run build para validar. No commitea ni pushea.
  • sync-mcps.py — Sincroniza _shared/mcp/mcp-registry.json hacia la config de usuario de Claude Code y OpenCode (cross-platform).
  • sync-world-actions.sh — Propaga templates de GitHub Actions (_shared/github-actions/templates) a mundos de registry.json. Uso: bash sync-world-actions.sh [mundo] [--force].
  • sync-tasks-to-vikunja.mjs — Parsea TASKS.md de un mundo y crea/actualiza tareas en Vikunja (dedup por [tag][NNN]). Requiere vikunja-projects.json (mapping world→project_id) + env VIKUNJA_URL, VIKUNJA_API_TOKEN.
  • check-contract-drift.sh — Detecta si el contrato de API de un producto (_shared/contracts/registry.json) cambió desde la última sesión (compara SHA256 vs .claude/.contract-hash).
  • check-mcp-env.sh — Verifica que las env vars referenciadas en .mcp.json (${VAR}) estén seteadas.
  • comando para hacer enlace simbolico de un archivo.txt — Nota de referencia con ejemplos New-Item -ItemType SymbolicLink (relativo vs absoluto).
  • vikunja-projects.json — Config de mapping world→project_id, consumido por sync-tasks-to-vikunja.mjs.