@tacuchi/agent-workflow-cli 10.2.1 → 10.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/application/hub-init-service.d.ts +2 -1
  2. package/dist/application/hub-init-service.d.ts.map +1 -1
  3. package/dist/application/hub-init-service.js +48 -15
  4. package/dist/application/hub-init-service.js.map +1 -1
  5. package/dist/application/multiroot/claude.d.ts.map +1 -1
  6. package/dist/application/multiroot/claude.js +4 -1
  7. package/dist/application/multiroot/claude.js.map +1 -1
  8. package/dist/application/multiroot/codex.js +3 -3
  9. package/dist/application/project-md-upsert-service.d.ts +2 -0
  10. package/dist/application/project-md-upsert-service.d.ts.map +1 -1
  11. package/dist/application/project-md-upsert-service.js +5 -2
  12. package/dist/application/project-md-upsert-service.js.map +1 -1
  13. package/dist/application/visibility-doctor-service.js +22 -6
  14. package/dist/application/visibility-doctor-service.js.map +1 -1
  15. package/dist/cli/commands/hub-init.d.ts +0 -24
  16. package/dist/cli/commands/hub-init.d.ts.map +1 -1
  17. package/dist/cli/commands/hub-init.js +14 -93
  18. package/dist/cli/commands/hub-init.js.map +1 -1
  19. package/dist/cli/interactive-menu.d.ts +1 -1
  20. package/dist/cli/interactive-menu.d.ts.map +1 -1
  21. package/dist/cli/main.js +0 -3
  22. package/dist/cli/main.js.map +1 -1
  23. package/dist/cli/parsers/fuentes.d.ts.map +1 -1
  24. package/dist/cli/parsers/fuentes.js +6 -1
  25. package/dist/cli/parsers/fuentes.js.map +1 -1
  26. package/dist/cli/tui/app.js +0 -5
  27. package/dist/cli/tui/app.js.map +1 -1
  28. package/dist/cli/tui/components/hub-init-alias.d.ts +5 -0
  29. package/dist/cli/tui/components/hub-init-alias.d.ts.map +1 -0
  30. package/dist/cli/tui/components/hub-init-alias.js +19 -0
  31. package/dist/cli/tui/components/hub-init-alias.js.map +1 -0
  32. package/dist/cli/tui/components/hub-init-form.d.ts +13 -0
  33. package/dist/cli/tui/components/hub-init-form.d.ts.map +1 -0
  34. package/dist/cli/tui/components/hub-init-form.js +73 -0
  35. package/dist/cli/tui/components/hub-init-form.js.map +1 -0
  36. package/dist/cli/tui/tabs/project-tab.d.ts.map +1 -1
  37. package/dist/cli/tui/tabs/project-tab.js +51 -26
  38. package/dist/cli/tui/tabs/project-tab.js.map +1 -1
  39. package/package.json +1 -1
  40. package/skills/agent-workflow/commands/hub-init.md +22 -46
  41. package/skills/agent-workflow/doctrine/hub-init/SKILL.md +41 -123
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: Inicializa un workspace en modo Hub (multi-repo) — bloque AW-PROJECT con Mode hub, captura ≥2 fuentes con sus rutas y ramas de trabajo. La rama principal default es `certificacion` (constante interna del CLI).
2
+ description: Inicializa un workspace en modo Hub (multi-repo) — escribe el bloque AW-PROJECT con Mode hub y ≥2 fuentes (rutas + ramas) y SIEMPRE configura la visibilidad multi-root (settings.local.json + config.toml, gitignored), reconciliando fuentes. La forma interactiva vive en el TUI.
3
3
  argument-hint: (opcional) --proyecto "descripción" | --fuente alias:path | --working-branch alias:rama | --main-branch <rama>
4
4
  allowed-tools:
5
5
  [
@@ -12,66 +12,42 @@ allowed-tools:
12
12
 
13
13
  # Hub Init (agent-workflow)
14
14
 
15
- Inicializa un **hub workspace** — un directorio que coordina ≥2 repos pares. Escribe el bloque `<!-- AW-PROJECT-START -->` en `CLAUDE.md` y `AGENTS.md` del directorio actual con el marcador `Mode: hub` y la lista de fuentes (alias / path / rama principal) + ramas de trabajo actuales por fuente.
15
+ Inicializa un **hub workspace** — un directorio que coordina ≥2 repos pares. Escribe el bloque `<!-- AW-PROJECT-START -->` en `CLAUDE.md` y `AGENTS.md` del CWD con `Mode: hub` + la lista de fuentes (alias / path / rama) + ramas de trabajo. Además del bloque, **siempre** configura la visibilidad multi-root (gitignored) — sin preguntar.
16
16
 
17
- > Distinto de `/agent-workflow:project-init` (single-repo). Hub mode activa heurísticas en el resto de la familia agent-workflow-*: `session` itera ramas por fuente, `implement` valida paths cross-repo, `release` agrupa por alias, etc.
17
+ > Distinto de `/agent-workflow:project-init` (single-repo). Hub mode activa heurísticas en el resto de la familia: `session` itera ramas por fuente, `implement` valida cross-repo, `release` agrupa por alias.
18
18
 
19
- ## Cuándo usar
19
+ ## La vía más simple: el TUI
20
20
 
21
- - Workspace que coordina ≥2 repos pares (ej. `qtc-plugin-marketplace` con 4 plugins, microservicios que cambian juntos, monorepo distribuido).
22
- - Sesiones cross-cutting que tocan múltiples repos a la vez.
21
+ `agent-workflow` tab **Project** **Initialize as hub**. Form interactivo (nombre + paths + rama base, alias inferido de la carpeta) dentro del TUI. Sin flags ni comandos a mano.
23
22
 
24
- ## Flujo
23
+ ## Flujo (host) — mínimo
25
24
 
26
- 1. **Detectar bloque existente** vía `agent-workflow workspace-mode`.
27
- - Si `mode=hub` mostrar fuentes actuales y preguntar si **agregar fuentes** o **reiniciar**.
28
- - Si `mode=project` (o sin `Mode:`) **y ≥1 fuente declarada** preguntar si **promover a hub** preservando la fuente original.
29
- - Si no hay bloque → flujo limpio.
30
-
31
- 2. **Capturar descripción** (1-3 líneas, debe mencionar que coordina N repos).
32
-
33
- 3. **Capturar fuentes** (mínimo 2 en flujo limpio; ≥1 nueva en flujo "agregar"). Por cada una pedir solo:
34
- - **Alias** kebab-case (único).
35
- - **Path absoluto** al repo (validado: existe + es repo git).
36
- - **Rama de trabajo actual** (default sugerido: `git -C <path> rev-parse --abbrev-ref HEAD`).
37
- - **NO se pregunta la rama principal**: el CLI usa `certificacion` como default interno. Override con `--main-branch`.
38
-
39
- 4. **Validaciones cross-fuente**:
40
- - Aliases únicos.
41
- - Paths absolutos y existentes (`os.path.isdir`).
42
- - Cada path es repo git (`<path>/.git/` o `git -C <path> rev-parse`).
43
- - Si la rama de trabajo declarada no coincide con la rama actual del repo → advertir (no bloquear).
44
-
45
- 5. **Auto-detectar stack del CWD** (probablemente workspace base sin stack propio). Si no hay stack detectable, escribir `_Workspace base — stack heterogéneo (ver fuentes individuales)._`.
46
-
47
- 6. **Persistir** vía:
25
+ 1. **Detectar** vía `agent-workflow workspace-mode`. Si ya es hub → agregar/reiniciar. Si es `project` con fuentes → ofrecer promover. Bloque de una topología legacy → delegar a `/agent-workflow:migrate`.
26
+ 2. **Reunir**: descripción (1 línea), ≥2 fuentes (alias + path) — el **set completo** que querés, porque `hub-init` reemplaza el bloque (para agregar/remover, leé las actuales con `workspace-mode` y pasá el set final) — y rama base (default `certificacion`). El alias se infiere de la carpeta si no se da.
27
+ 3. **Escribir + sincronizar** (un solo comando):
48
28
  ```
49
- agent-workflow project-md-upsert --init \
50
- --mode hub \
29
+ agent-workflow hub-init \
51
30
  --proyecto "<descripción>" \
52
- --fuente "alias1:path1" \
53
- --fuente "alias2:path2" \
54
- --working-branch "alias1:rama1" \
55
- --working-branch "alias2:rama2"
31
+ --fuente "alias1:path1" --fuente "alias2:path2" \
32
+ [--working-branch "alias1:rama1" ...] [--main-branch <rama>]
56
33
  ```
34
+ Rutas Windows (`C:\Source\...`) van directo. Escribe `CLAUDE.md` + `AGENTS.md` **y** configura la visibilidad multi-root (siempre, ver abajo).
35
+ 4. **Reportar** fuentes registradas + próximo paso (`/agent-workflow:session "<objetivo>"`).
57
36
 
58
- 7. **Reportar** archivos modificados, fuentes registradas, ramas de trabajo capturadas. Sugerir próximos pasos (`/agent-workflow:session "<objetivo>"` o configurar visibilidad multi-root del cliente — ver README de agent-workflow).
59
-
60
- ## Visibilidad multi-root del cliente
61
-
62
- `/agent-workflow:hub-init` solo captura los datos en el bloque AW-PROJECT. Para que Claude Code o Codex CLI vean los paths de las fuentes como writable, configurarlos manualmente:
37
+ ## Visibilidad multi-root (automática, siempre)
63
38
 
64
- - **Claude Code**: editar `~/.claude/settings.json` y agregar paths a `permissions.additionalDirectories`. Alternativa por sesión: `/add-dir <path>` por fuente.
65
- - **Codex CLI**: editar `~/.codex/config.toml` con `additional_writable_roots = [...]` y entradas `[projects."<path>"]` con `trust_level = "trusted"`.
39
+ `hub-init` la configura en cada run, sin preguntar:
66
40
 
67
- Snippets completos en el README de agent-workflow. Iteración futura podrá automatizarlo vía `/agent-workflow:hub-attach`.
41
+ - **Gitignored** (rutas machine-specific): `<hub>/.claude/settings.local.json` (`permissions.additionalDirectories`) + `<hub>/.codex/config.toml` (`additional_writable_roots` + `[projects.'<path>'] trust_level`). Asegura el `.gitignore`.
42
+ - **Reconcile**: attachea las fuentes actuales y detachea las removidas vs el bloque previo (agregar/remover quedan sincronizados).
43
+ - Diagnóstico: `agent-workflow visibility doctor --workspace .` (lee `settings.json` y `settings.local.json`).
68
44
 
69
45
  ## Argumentos
70
46
 
71
- Sin argumentos: flujo interactivo.
47
+ Sin argumentos: el host arma el flujo mínimo de arriba (o usá el TUI).
72
48
 
73
49
  - `--proyecto "<texto>"`
74
- - `--fuente "alias:path[:rama]"` — repetible.
50
+ - `--fuente "alias:path[:rama]"` — repetible (mín 2).
75
51
  - `--working-branch "alias:rama"` — repetible.
76
52
  - `--main-branch <rama>` — override del default `certificacion`.
77
53
 
@@ -79,4 +55,4 @@ Sin argumentos: flujo interactivo.
79
55
 
80
56
  ## Skill asociada
81
57
 
82
- Ver `skills/hub-init/SKILL.md` para el detalle del flujo, validaciones cross-fuente y promoción project→hub.
58
+ Ver `doctrine/hub-init/SKILL.md` para el flujo, la promoción project→hub y la visibilidad multi-root.
@@ -1,157 +1,75 @@
1
1
  ---
2
2
  name: hub-init
3
- description: Inicializa workspace Hub multi-repo con bloque AW-PROJECT en modo hub. Captura ≥2 fuentes con rutas y ramas de trabajo, valida cross-fuente y persiste marcador Mode hub que activa heurísticas hub-aware en sessions/implement/release. Promociona workspaces project con múltiples fuentes. Invocado vía /agent-workflow:hub-init.
4
- version: 1.1.0
3
+ description: Inicializa workspace Hub multi-repo escribe el bloque AW-PROJECT en modo hub (≥2 fuentes con rutas y ramas) y SIEMPRE configura la visibilidad multi-root (settings.local.json + config.toml, gitignored), reconciliando fuentes agregadas/removidas. Sin prompt. La forma interactiva vive en el TUI (tab Project Initialize as hub). Invocado vía /agent-workflow:hub-init.
4
+ version: 2.1.0
5
5
  ---
6
6
 
7
- > **Profile parametrization**: lee `claude_md_block` de `profile.json` (resuelto vía cascade 5 capas). Ver [`references/profile-parametrization.md`](../../references/profile-parametrization.md) para el contrato completo y comportamiento por defecto cuando el profile está vacío.
7
+ > **Profile parametrization**: lee `claude_md_block` de `profile.json` (cascade 5 capas). Ver [`references/profile-parametrization.md`](../../references/profile-parametrization.md).
8
8
 
9
9
  # Hub Init
10
10
 
11
- Bootstrap del bloque AW-PROJECT para un workspace **multi-repo** (hub mode). Hub mode introduce el marcador `Mode: hub` que activa heurísticas hub-aware en el resto de la familia agent-workflow.
11
+ Escribe el bloque AW-PROJECT para un workspace **multi-repo** (hub mode). El marcador `Mode: hub` activa heurísticas hub-aware en el resto de la familia. Además del bloque, **siempre** configura la visibilidad multi-root para que los hosts (Claude Code / Codex) vean los repos fuente — sin preguntar, en cada run.
12
12
 
13
- ## Cuándo usar
13
+ ## La vía fácil: el TUI
14
14
 
15
- - Workspace que coordina ≥2 repos pares (sesiones cross-cutting).
16
- - Promover un workspace existente que ya creció a multi-repo.
15
+ Lo más simple es el form interactivo: `agent-workflow` tab **Project** **Initialize as hub**. Pide nombre + paths de fuentes (alias inferido de la carpeta) + rama base, todo dentro del TUI. No hay que recordar flags.
17
16
 
18
- ## Diferencias vs `/agent-workflow:project-init`
17
+ ## Cuándo usar la vía CLI/host
19
18
 
20
- | Aspecto | project-init | hub-init |
21
- |---|---|---|
22
- | Fuentes | 1 (mín y máx) | ≥2 (mínimo) |
23
- | Marcador `Mode:` | `project` | `hub` |
24
- | Captura ramas de trabajo | No | Sí, por fuente, en Status |
25
- | Validación cross-fuente | No | Sí (aliases únicos, paths git válidos, comparación con `git rev-parse`) |
26
- | Stack auto-detect | Sobre CWD | Sobre CWD; suele caer en `_Workspace base_` |
27
- | Heurísticas hub-aware | Off | On (sessions, implement, release, doctor) |
19
+ - Workspace que coordina ≥2 repos pares.
20
+ - Promover un workspace `project` que creció a multi-repo.
21
+ - Agregar o remover una fuente de un hub existente (re-correr con el set nuevo).
28
22
 
29
- ## Flujo detallado
23
+ ## Flujo (host) — mínimo
30
24
 
31
- ### 1. Detectar bloque existente
25
+ No sobre-validar ni preguntar de más. El comando persiste lo declarado y sincroniza la visibilidad solo.
32
26
 
33
- ```
34
- agent-workflow workspace-mode
35
- ```
27
+ 1. **Detectar bloque** (rápido): `agent-workflow workspace-mode` → `{mode, is_hub, ...}`. Si ya es hub → preguntar si agregar/reiniciar. Si es `project` con fuentes → ofrecer promover. Bloque legacy `<!-- QTC-WORKFLOW-START -->` → delegar a `/agent-workflow:migrate`.
28
+ 2. **Reunir datos**: descripción (1 línea), ≥2 fuentes (alias + path), rama base (default `certificacion`). El alias se infiere del nombre de la carpeta si no se da.
29
+ 3. **Escribir + sincronizar** (un solo comando):
36
30
 
37
- Output: `{mode, sources, working_branches, sources_count, is_hub}`.
31
+ ```
32
+ agent-workflow hub-init \
33
+ --proyecto "<descripción>" \
34
+ --fuente "alias1:path1" --fuente "alias2:path2" \
35
+ [--working-branch "alias1:rama1" ...] \
36
+ [--main-branch <rama>]
37
+ ```
38
38
 
39
- | Caso | Acción |
40
- |---|---|
41
- | `mode=hub` | Mostrar fuentes actuales y preguntar: ¿agregar nuevas? ¿reiniciar? ¿abortar? |
42
- | `mode=project` con ≥1 fuente | Detectar promoción: mostrar fuente original y preguntar "¿Promover a hub?". Si confirma, continuar al paso 2 con la fuente original ya cargada. |
43
- | Sin bloque | Flujo limpio. |
44
- | Bloque legacy `<!-- QTC-WORKFLOW-START -->` | Recomendar `/agent-workflow:migrate --upgrade-topology` antes. Abortar. |
39
+ Rutas Windows (`C:\Source\...`) van directo — el parser respeta el colon de unidad. Escribe `CLAUDE.md` + `AGENTS.md` (`## Proyecto` Mode: hub + `## Fuentes` + `## Stack` + `## Status`) **y** configura la visibilidad multi-root (ver abajo). No hace falta un paso aparte.
40
+ 4. **Reportar**: fuentes registradas, paths con visibilidad, y próximo paso (`/agent-workflow:session "<objetivo>"`).
45
41
 
46
- ### 2. Capturar descripción del workspace
42
+ ## Visibilidad multi-root (automática, siempre)
47
43
 
48
- Pedir 1-3 líneas que mencionen que coordina N repos. Va a `## Proyecto`.
44
+ `hub-init` configura la visibilidad en **cada** run, sin prompt:
49
45
 
50
- ### 3. Capturar fuentes
46
+ - **Target gitignored**: `<hub>/.claude/settings.local.json` (`permissions.additionalDirectories`) + `<hub>/.codex/config.toml` (`additional_writable_roots` + `[projects.'<path>'] trust_level`). Las rutas son absolutas/machine-specific, así que van en archivos per-máquina; `hub-init` también asegura el `.gitignore`.
47
+ - **Reconcile**: attachea las fuentes actuales y detachea las que estaban en el bloque previo y ya no (agregar/remover quedan sincronizados).
48
+ - Diagnóstico: `agent-workflow visibility doctor --workspace .` (lee `settings.json` **y** `settings.local.json`). Legacy global contaminado: `visibility doctor --global` + `detach-multiroot --global --from-sources`.
51
49
 
52
- Loop por cada fuente:
50
+ ## Flags
53
51
 
54
- - **Alias** kebab-case único.
55
- - **Path absoluto** al repo. Validar `os.path.isdir(path)` y que sea repo git (`<path>/.git/` o `git -C <path> rev-parse --git-dir`).
56
- - **Rama de trabajo actual**: default sugerido = `git -C <path> rev-parse --abbrev-ref HEAD`. Usuario acepta o sobreescribe.
57
-
58
- **NO preguntar la rama principal**: el CLI usa `"certificacion"` como default interno. Override sólo con `--main-branch <rama>` (raro).
59
-
60
- Mínimo 2 fuentes en flujo limpio. En "agregar a hub existente", mínimo 1 nueva.
61
-
62
- ### 4. Validaciones cross-fuente
63
-
64
- Antes de persistir:
65
-
66
- - **Aliases únicos**: si duplicó, error y reintenta.
67
- - **Paths existen + son git repos**: si falla, error y reintenta esa entrada.
68
- - **Rama declarada vs actual**: comparar con `git -C <path> rev-parse --abbrev-ref HEAD`. Si difieren → advertir (no bloquear). Sugerir `git checkout` o aceptar la actual.
69
-
70
- ### 5. Auto-detectar stack del CWD
71
-
72
- ```
73
- agent-workflow stack
74
- ```
75
-
76
- En hub workspaces el CWD suele ser un directorio "base" sin stack propio. Si auto-detección falla → `_Workspace base — stack heterogéneo (ver fuentes individuales)._` en `## Stack`.
77
-
78
- Para stack de cada fuente individual: `agent-workflow stack --all-sources` (después del init).
79
-
80
- ### 6. Persistir bloque + visibilidad (atómico desde v1.1.0)
81
-
82
- Una sola invocación atómica al CLI. `agent-workflow hub-init` (introducido en v1.1.0, soportado por `agent-workflow-cli`) orquesta `project-md-upsert --init` + `attach-multiroot --from-sources` en un solo paso. Garantiza que el workspace queda consistente: bloque AW-PROJECT persistido **y** visibility configurada per-workspace, sin pasos separados que el AI pueda olvidar.
83
-
84
- ```
85
- agent-workflow hub-init \
86
- --proyecto "<descripción>" \
87
- --fuente "alias1:path1" --fuente "alias2:path2" \
88
- --working-branch "alias1:rama1" --working-branch "alias2:rama2"
89
- ```
90
-
91
- El comando:
92
-
93
- - Escribe `CLAUDE.md` y `AGENTS.md` del CWD con bloque `## Proyecto` (Mode: hub), `## Fuentes`, `## Stack`, `## Status` con `- Ramas de trabajo actuales:` + sesiones activas.
94
- - Mergea paths en `<CWD>/.claude/settings.json → permissions.additionalDirectories` con backup `.bak.<timestamp>`.
95
- - Mergea paths en `<CWD>/.codex/config.toml → additional_writable_roots` + bloques `[projects.'<path>'] trust_level = "trusted"` con backup.
96
- - Output JSON consolidado: `{ok, dry_run, workspace, project_md:{…}, attach_multiroot:{scope,scope_dir,paths_input,claude:{…},codex:{…}}}`.
97
-
98
- Reportar al usuario: paths registrados, ubicación de cada archivo (énfasis en que están dentro del hub, no en `~`), backups generados.
99
-
100
- #### Flags adicionales
101
-
102
- - `--main-branch <rama>`: override del default interno `certificacion`.
103
- - `--workspace <DIR>`: override cuando el CWD no es la raíz del hub.
104
- - `--skip-attach`: opt-out del paso de visibility (usar si el usuario prefiere configuración manual o la corre con `attach-multiroot` directamente).
105
- - `--dry-run`: previsualizar sin escribir.
106
-
107
- #### Si el usuario prefiere visibility manual
108
-
109
- Si `--skip-attach`, el AI debe avisar al usuario que tiene que correr `attach-multiroot` después o configurar manualmente. Snippets de referencia en `references/multiroot-manual.md`.
110
-
111
- #### Revertir contaminación global previa
112
-
113
- Si en versiones anteriores los paths quedaron en `~/.claude/...` / `~/.codex/...` (legacy v3.3.3 o pre-v1.1.0), correr el inspector y la limpieza:
114
-
115
- ```
116
- agent-workflow visibility doctor --workspace . --global
117
- agent-workflow detach-multiroot --global --from-sources
118
- ```
119
-
120
- `visibility doctor --global` reporta paths del hub presentes en scope global con sugerencia explícita; `detach-multiroot --global` los remueve idempotentemente.
121
-
122
- ### 7. Reportar
123
-
124
- - Archivos modificados (CLAUDE.md, AGENTS.md, settings.json, config.toml).
125
- - N fuentes registradas con aliases, paths, ramas.
126
- - Estado de visibilidad multi-root (paths registrados + scope).
127
- - Próximos pasos: `/agent-workflow:session "<objetivo>"` para crear primera sesión cross-cutting.
52
+ - `--main-branch <rama>` — override del default `certificacion`.
53
+ - `--workspace <DIR>` override si el CWD no es la raíz del hub.
54
+ - `--dry-run` previsualizar sin escribir (bloque + paths que se attachearían).
128
55
 
129
56
  ## Reglas
130
57
 
131
- - **Mínimo 2 fuentes** en flujo limpio. Si quiere 1, redirigir a `/agent-workflow:project-init`.
132
- - **Promoción auto-detectada**: bloques `mode=project` con ≥1 fuente se detectan; sin flag `--promote`.
133
- - **Idempotente**: re-ejecución con datos idénticos es no-op.
58
+ - **Mínimo 2 fuentes**. Si quiere 1 `/agent-workflow:project-init`.
59
+ - **Set autoritativo**: el `--fuente` declarado **reemplaza** el bloque (no merge). Para agregar/remover fuentes, pasá el set completo deseado (el form del TUI ya lo hace; por CLI, leé las fuentes actuales con `workspace-mode` y pasá el set final). `hub-init` reconcilia la visibilidad: detacha las removidas, attacha las actuales.
60
+ - **Visibilidad siempre**: se configura sola, sin preguntar, en init y en cualquier cambio de fuentes. No hay opt-out (salvo `--dry-run`, que no escribe nada).
61
+ - **Idempotente**: re-ejecución con datos idénticos es no-op (attach ya presente, sin cambios).
134
62
  - **No tocar legacy QTC-WORKFLOW**: avisar y delegar a migrate.
135
- - **Visibilidad multi-root atómica** (v1.1.0+): el paso 6 colapsa init + attach en `agent-workflow hub-init`. Idempotente con backup. Si el usuario quiere opt-out: `--skip-attach` (la skill avisa que la visibility queda pendiente).
136
63
 
137
64
  ## Política — sin fallback al CLI
138
65
 
139
- Si `agent-workflow workspace-mode|stack|hub-init|attach-multiroot|detach-multiroot|visibility` falla (no está en PATH, comando no reconocido, exit code != 0), **cortá la acción y reportá al usuario**: pedile que verifique `npm install -g @tacuchi/agent-workflow-cli`. No hay flujo alternativo Python.
66
+ Si `agent-workflow workspace-mode|hub-init|attach-multiroot|visibility` falla (no está en PATH, exit 0), **cortá la acción y reportá**: pedí verificar `npm install -g @tacuchi/agent-workflow-cli`. No hay flujo Python alterno.
140
67
 
141
68
  ## Sandbox read-only
142
69
 
143
- `../session/references/sandbox-readonly-rules.md`. Plan describe:
144
-
145
- - Archivos a crear/modificar: `CLAUDE.md`, `AGENTS.md`, `<CWD>/.claude/settings.json`, `<CWD>/.codex/config.toml`.
146
- - Bloque AW-PROJECT a escribir: fuentes + ramas + `Mode: hub`.
147
- - Validaciones cross-fuente que se correrían (sin ejecutar `git` ni mutar).
148
- - Si reemplaza bloque existente o promociona desde project, indicarlo.
149
-
150
- NO ejecutar `hub-init`, `project-md-upsert --init`, `attach-multiroot`, ni `git rev-parse` en plan mode.
70
+ `../session/references/sandbox-readonly-rules.md`. En plan mode describí: archivos a crear (`CLAUDE.md`, `AGENTS.md`, `.claude/settings.local.json`, `.codex/config.toml`, `.gitignore`) y el bloque AW-PROJECT (fuentes + ramas + `Mode: hub`). NO ejecutar `hub-init` / `attach-multiroot` en plan mode.
151
71
 
152
- ## Recursos adicionales
72
+ ## Recursos
153
73
 
154
- - **`references/multiroot-manual.md`** — snippets de configuración manual si el usuario declina la automatización.
155
- - **shared-contract §27** (Hub mode) — definición canónica del modo, API, marcador.
74
+ - **`references/multiroot-manual.md`** — detalle de la visibility / formato de cada archivo.
156
75
  - **`/agent-workflow:project-init`** — equivalente single-repo.
157
- - **CLI `--main-branch <rama>`** — override de la rama principal (default interno: `certificacion`).