README ‐ ES - DarielEmil/aictl GitHub Wiki
Define tus agents y skills de IA una sola vez en tu vault de Obsidian y sincronízalos con las herramientas que uses: Claude Code, OpenCode, Codex, Antigravity, Kiro y Cursor.
./install.sh # instala/actualiza `aictl` en ~/.local/bin (pipx → uv → venv)
./install.sh --uninstall # desinstala (conserva ~/.config/aictl)Requiere Python ≥ 3.10.
aictl init # pide ruta del vault, carpetas de agents/skills y las AIs a configurar
aictl sync # copia agents/skills del vault a cada AI seleccionada
aictl update # cambia TU CONFIGURACIÓN: ruta del vault, carpetas, AIs
aictl upgrade # actualiza la herramienta aictl (git pull + reinstalar)
aictl status # configuración actual y último sync
aictl doctor # comprueba que el vault se puede leer y las AIs se pueden escribir
aictl mapping # muestra el YAML de mapeo en uso (--export para personalizarlo)Opciones útiles:
| Comando | Opciones |
|---|---|
init |
--vault, --agents-dir, --skills-dir, --targets claude,codex, --force, --sync/--no-sync
|
update |
--vault, --agents-dir, --skills-dir, --add, --remove, --clean/--no-clean
|
sync |
--dry-run, --target claude, --force, --verbose
|
upgrade |
--check (solo mira si hay cambios), --no-pull (reinstala el código local) |
Sin flags, init y update son interactivos.
aictl upgrade actualiza la propia herramienta sin que tengas que ir al repo:
- Hace
git pull --ff-onlyen el repo desde el que instalaste (nunca crea merges; si hay conflicto con cambios locales, se detiene sin tocar nada). - Vuelve a ejecutar
install.shcon el mismo método (pipx / uv / venv) y las mismas rutas.
No modifica tu configuración (~/.config/aictl/: config.yaml, targets.yaml, manifest.json).
Si el repo no tiene remoto, reinstala el código local (útil si editas aictl tú mismo).
install.sh guarda de dónde se instaló en ~/.local/share/aictl/install.json.
<vault>/
└── AI-Config/
├── agents/
│ └── check-reviewer/ # un agent = una carpeta con un único .md
│ └── code-reviewer.md # nombre del agent: "check-reviewer"
└── skills/
└── pdf-tools/ # una skill = una carpeta con SKILL.md
├── SKILL.md # (+ archivos auxiliares, se copian todos)
└── scripts/extract.py
- El nombre del agent/skill es el de su carpeta, salvo que el frontmatter defina
name:. - Una carpeta de agent con más de un
.mdes un error; una carpeta de skill sinSKILL.mdse ignora. -
AI-Config/agentsyAI-Config/skillsson las carpetas por defecto (configurables eninit/update).
---
name: code-reviewer # opcional (por defecto el nombre de la carpeta)
description: Revisa cambios de código
model: sonnet
targets: [claude, opencode] # opcional: limita a qué AIs se copia
aictl: false # opcional: excluye el archivo
opencode: # opcional: overrides de frontmatter para una AI concreta
model: anthropic/claude-sonnet-4-5
---
Instrucciones del agent. Los [[wikilinks]] se convierten en texto plano.Las claves targets, aictl y los overrides por AI nunca llegan a los archivos generados.
src/aictl/data/targets.yaml define, por AI, la carpeta raíz y qué copiar dónde.
Para personalizarlo: aictl mapping --export → edita ~/.config/aictl/targets.yaml
(o apunta mapping_file en config.yaml a otro archivo).
| AI | Agents | Skills |
|---|---|---|
| claude | ~/.claude/agents/{name}.md |
~/.claude/skills/{name}/ |
| opencode | ~/.config/opencode/agents/{name}.md |
~/.config/opencode/skills/{name}/ |
| codex | ~/.codex/agents/{name}.toml |
~/.codex/skills/{name}/ |
| antigravity | ~/.gemini/config/agents/{name}/agent.md |
~/.gemini/config/skills/{name}/ |
| kiro | ~/.kiro/agents/{name}.json |
~/.kiro/skills/{name}/ |
| cursor | ~/.cursor/agents/{name}.md |
~/.cursor/skills/{name}/ |
Transforms disponibles: strip_wikilinks, strip_frontmatter, opencode_frontmatter,
kiro_steering (para usar ~/.kiro/steering/), to_kiro_json, to_codex_toml, to_mdc, concat.
Las rutas globales de cada herramienta cambian con sus versiones; si alguna no coincide con la tuya, ajústala en tu
targets.yaml.
init, update (al cambiar el vault o añadir AIs) y doctor comprueban antes de guardar:
- Que el vault y las carpetas de agents/skills existen y se pueden listar (detecta el bloqueo de macOS en Google Drive/iCloud y explica cómo dar permiso a la terminal).
- Que se pueden leer todos los archivos de cada agent/skill.
- Avisa de carpetas vacías (Drive sin sincronizar), agents sin
.mdy skills sinSKILL.md. - Que se puede escribir en la carpeta de cada AI (prueba real con un archivo temporal).
Si hay errores, init/update piden confirmación antes de guardar (sin terminal interactiva, fallan).
aictl guarda en ~/.config/aictl/manifest.json cada archivo que escribe con su hash. En sync:
- Solo sobrescribe archivos que él creó y que no se han editado a mano.
- Un archivo existente no gestionado (p. ej. tu
~/.codex/agents/reviewer.toml) o editado a mano se marca como conflicto y no se toca.--forcelo sobrescribe. - Si borras un agent/skill del vault, se elimina su copia gestionada (las carpetas vacías también).
-
aictl update --remove X --cleanborra solo los archivos gestionados de esa AI.
uv venv && uv pip install -e '.[dev]'
.venv/bin/pytest
.venv/bin/ruff check src tests