_shared/scripts/ — Catálogo de scripts
_shared/scripts/ — Catálogo de scripts
Section titled “_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 bloquehooksen.claude/settings.json. Params:-Hook <nombre|all> -World <ruta>.attach-mcp.ps1— Fusiona un grupo MCP de_shared/mcp/<Group>en.mcp.json/opencode.jsonde un mundo (-Format), preservando entradas propias del mundo.
Symlinks curados por manifest
Section titled “Symlinks curados por manifest”link-world-skills.ps1— Symlinks de subset curado (skills.manifest.txt) haciaworlds/<World>/.claude/skills/. Poda symlinks fuera del manifest.generate-skills-manifest.ps1— Inversa de la anterior: vuelca skills YA instaladas en.claude/skills/haciaskills.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 deiniciar_claude_code.ps1einiciar_opencode.ps1(viven en_shared/token-stack/) hacia la raíz de un mundo.link-universe-agents.ps1— Symlinks de_shared/agents/<grupo>/*.mdhaciaai-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 amklinksiNew-Itemfalla por permisos.git-add-real-files.ps1—git addsolo de archivos reales (no symlinks) dentro de.claude/skillsy.claude/agentsde 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 quelink-universe-commands.ps1pero destinoai-os/.opencode/commands/.link-world-commands-opencode.ps1— Igual quelink-world-commands.ps1(manifest curado) pero destinoworlds/<World>/.opencode/commands/.link-universe-agents-opencode.ps1— Igual quelink-universe-agents.ps1pero destinoai-os/.opencode/agents/.link-world-agents-opencode.ps1— Igual quelink-world-agents.ps1(manifest curado) pero destinoworlds/<World>/.opencode/agents/.link-world-plugins-opencode.ps1— Symlinks de todos_shared/plugins/*.tshaciaworlds/<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 (iteraworlds/*), no uno solo. Cambiás un.tsen_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=truepara 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 (-Contentpara buscar en contenido,-Categorypara 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.
Gestión del universo (git/mundos)
Section titled “Gestión del universo (git/mundos)”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 cruzandoregistry.json(público) conregistry.private.json(gitignored, local). Nunca clona nada sin-All/-Worlds.
Docs, CI e integraciones externas
Section titled “Docs, CI e integraciones externas”update-docs.ps1/.sh— Regenerauniverse-docs/(npm run sync) y correnpm run buildpara validar. No commitea ni pushea.sync-mcps.py— Sincroniza_shared/mcp/mcp-registry.jsonhacia 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 deregistry.json. Uso:bash sync-world-actions.sh [mundo] [--force].sync-tasks-to-vikunja.mjs— ParseaTASKS.mdde un mundo y crea/actualiza tareas en Vikunja (dedup por[tag][NNN]). Requierevikunja-projects.json(mapping world→project_id) + envVIKUNJA_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.
Otros archivos (no scripts)
Section titled “Otros archivos (no scripts)”comando para hacer enlace simbolico de un archivo.txt— Nota de referencia con ejemplosNew-Item -ItemType SymbolicLink(relativo vs absoluto).vikunja-projects.json— Config de mapping world→project_id, consumido porsync-tasks-to-vikunja.mjs.