repo-harness 0.1.5 → 0.2.1

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 (79) hide show
  1. package/README.es.md +408 -0
  2. package/README.fr.md +417 -0
  3. package/README.ja.md +374 -0
  4. package/README.md +104 -20
  5. package/README.zh-CN.md +77 -14
  6. package/SKILL.md +126 -42
  7. package/assets/hooks/post-edit-guard.sh +3 -1
  8. package/assets/hooks/prompt-guard.sh +59 -1
  9. package/assets/hooks/security-sentinel.sh +115 -0
  10. package/assets/hooks/stop-orchestrator.sh +1 -1
  11. package/assets/initializer-question-pack.v4.json +2 -2
  12. package/assets/partials/04-project-structure.partial.md +1 -1
  13. package/assets/partials/05-workflow.partial.md +1 -1
  14. package/assets/partials-agents/02-operating-mode.partial.md +1 -1
  15. package/assets/plan-map.json +46 -46
  16. package/assets/project-structures/astro-ssr.txt +25 -0
  17. package/assets/project-structures/monorepo.txt +6 -6
  18. package/assets/reference-configs/agentic-development-flow.md +1 -1
  19. package/assets/reference-configs/ai-workflows.md +1 -1
  20. package/assets/reference-configs/changelog-versioning.md +1 -1
  21. package/assets/reference-configs/coding-standards.md +1 -1
  22. package/assets/reference-configs/development-protocol.md +1 -1
  23. package/assets/reference-configs/document-generation.md +3 -3
  24. package/assets/reference-configs/evaluator-rubric.md +1 -1
  25. package/assets/reference-configs/external-tooling.md +14 -16
  26. package/assets/reference-configs/git-strategy.md +1 -1
  27. package/assets/reference-configs/global-working-rules.md +0 -1
  28. package/assets/reference-configs/harness-overview.md +1 -1
  29. package/assets/reference-configs/hook-operations.md +14 -1
  30. package/assets/reference-configs/release-deploy.md +1 -1
  31. package/assets/reference-configs/spa-day-protocol.md +1 -1
  32. package/assets/reference-configs/workflow-orchestration.md +1 -1
  33. package/assets/skill-commands/manifest.json +1 -1
  34. package/assets/skill-commands/repo-harness-architecture/SKILL.md +2 -2
  35. package/assets/skill-commands/repo-harness-init/SKILL.md +1 -1
  36. package/assets/skills/codex-review/SKILL.md +2 -2
  37. package/assets/templates/helpers/architecture-drift.sh +2 -2
  38. package/assets/templates/helpers/check-agent-tooling.sh +4 -4
  39. package/assets/templates/helpers/check-brain-manifest.sh +5 -4
  40. package/assets/templates/helpers/ensure-task-workflow.sh +16 -13
  41. package/assets/templates/helpers/sync-brain-docs.sh +29 -6
  42. package/assets/workflow-contract.v1.json +9 -11
  43. package/docs/images/repo-harness-hook-carrot.png +0 -0
  44. package/docs/reference-configs/agentic-development-flow.md +1 -1
  45. package/docs/reference-configs/ai-workflows.md +1 -1
  46. package/docs/reference-configs/changelog-versioning.md +1 -1
  47. package/docs/reference-configs/coding-standards.md +1 -1
  48. package/docs/reference-configs/development-protocol.md +1 -1
  49. package/docs/reference-configs/document-generation.md +3 -3
  50. package/docs/reference-configs/evaluator-rubric.md +1 -1
  51. package/docs/reference-configs/external-tooling.md +14 -16
  52. package/docs/reference-configs/git-strategy.md +1 -1
  53. package/docs/reference-configs/global-working-rules.md +0 -1
  54. package/docs/reference-configs/harness-overview.md +1 -1
  55. package/docs/reference-configs/hook-operations.md +14 -1
  56. package/docs/reference-configs/release-deploy.md +1 -1
  57. package/docs/reference-configs/spa-day-protocol.md +1 -1
  58. package/docs/reference-configs/workflow-orchestration.md +1 -1
  59. package/package.json +2 -1
  60. package/scripts/architecture-drift.sh +2 -2
  61. package/scripts/check-agent-tooling.sh +4 -4
  62. package/scripts/check-brain-manifest.sh +5 -4
  63. package/scripts/create-project-dirs.sh +2 -0
  64. package/scripts/ensure-task-workflow.sh +16 -13
  65. package/scripts/init-project.sh +1 -0
  66. package/scripts/lib/project-init-lib.sh +17 -14
  67. package/scripts/migrate-project-template.sh +3 -2
  68. package/scripts/setup-plugins.sh +24 -20
  69. package/scripts/sync-brain-docs.sh +29 -6
  70. package/src/cli/commands/brain-root.ts +102 -0
  71. package/src/cli/commands/brain.ts +5 -10
  72. package/src/cli/commands/doctor.ts +27 -0
  73. package/src/cli/commands/global-runtime.ts +79 -0
  74. package/src/cli/commands/init.ts +385 -65
  75. package/src/cli/commands/security.ts +294 -0
  76. package/src/cli/commands/status.ts +1 -1
  77. package/src/cli/hook/route-registry.ts +1 -1
  78. package/src/cli/hook/runtime.ts +41 -1
  79. package/src/cli/index.ts +83 -10
package/README.es.md ADDED
@@ -0,0 +1,408 @@
1
+ # repo-harness
2
+
3
+ Repo-local agentic development harness CLI y skill runtime para workflows de
4
+ Claude/Codex.
5
+
6
+ [English](README.md) | [简体中文](README.zh-CN.md) | [日本語](README.ja.md) | [Français](README.fr.md) | [Español](README.es.md)
7
+
8
+ Dirección del repositorio: `https://github.com/Ancienttwo/repo-harness`
9
+
10
+ `repo-harness` es un harness de workflow que aterriza el proceso de programación
11
+ con IA en archivos del repositorio. Es a la vez el repositorio fuente de la CLI
12
+ `repo-harness` y de su skill runtime, y el ejemplo autoalojado del workflow
13
+ repo-local que él mismo genera para los proyectos downstream.
14
+
15
+ ## Por qué usar repo-harness
16
+
17
+ - **El estado de la sesión vive en archivos, no en el historial de chat.** Las
18
+ distintas sesiones de agente —Claude, Codex, ahora o más tarde— se mantienen
19
+ sincronizadas a través del repositorio en lugar de un hilo de chat. Cuando
20
+ arranca una sesión nueva, `.ai/hooks/session-start-context.sh` inyecta el
21
+ resume packet de la sesión anterior (`.ai/harness/handoff/resume.md`,
22
+ `tasks/current.md`); al terminar la sesión y tras cada edición,
23
+ `finalize-handoff.sh` y `post-edit-guard.sh` escriben de vuelta el siguiente
24
+ handoff. Una tarea puede cortarse a mitad de camino y la siguiente sesión
25
+ retoma directamente el next step exacto, los puntos de bloqueo y los archivos
26
+ modificados sin tener que volver a inferirlos.
27
+ - **Ahorra tokens por diseño.** En lugar de los bucles grep+read que reescanean
28
+ el repositorio en cada sesión, el harness usa el índice pre-construido de
29
+ CodeGraph para hacer consultas estructurales (quién llama, a qué llama, dónde
30
+ está definido) y, además, carga de contexto progresiva mediante
31
+ `.ai/context/context-map.json` y `capabilities.json`: un root context pequeño y
32
+ estable (~12KB), más bloques de capability que solo se cargan cuando los
33
+ archivos que tocas los necesitan. Un agente lee un contract de capability de
34
+ 1KB o consulta el índice, en vez de gastar miles de tokens redescubriendo la
35
+ estructura.
36
+
37
+ ## Novedades en 0.2.1
38
+
39
+ - **Comando de inicialización global (`repo-harness init`).** Un solo comando
40
+ inicializa el entorno global de Claude: essential plugins, policy
41
+ hooks configurables (worktree guard, atomic commit/pending), LSP plugins
42
+ opcionales según el tipo de proyecto y cuatro hook profiles (`standard`,
43
+ `minimal`, `biome`, `biome-strict`). Ejecuta
44
+ `npx -y repo-harness init`; no necesitas clonar el repositorio fuente.
45
+ - **Comando de refresco del repo (`repo-harness update`).** La instalación y el
46
+ refresco de repos existentes tienen su propia superficie de comando, manteniendo
47
+ la ruta de migración repo-local anterior mientras `init` queda dedicado al
48
+ runtime global.
49
+ - **Auto-recuperación del índice CodeGraph.** Si el prompt hook detecta intención
50
+ de navegación estructural y el repo no tiene índice `.codegraph`, inicializa el
51
+ índice con el binario CodeGraph local o visible en PATH antes de emitir la pista.
52
+ Sigue siendo advisory: no instala dependencias, no ejecuta el readiness probe
53
+ pesado y no bloquea el prompt si CodeGraph no está disponible.
54
+ - **Centinela de seguridad (`repo-harness security scan` + `security-sentinel.sh`).**
55
+ Una verificación de solo lectura sobre las superficies de inyección de
56
+ configuración de alto valor (`~/.claude/settings.json`, `~/.codex/hooks.json`,
57
+ el `.vscode/tasks.json` repo-local y los adapters legacy a nivel de proyecto
58
+ `.claude`/`.codex`). Marca patrones de comando sospechosos —pipes de remote
59
+ shell, base64-decode-to-exec, `osascript`, persistencia con
60
+ `launchctl`/`crontab`, netcat, ejecución inline de intérpretes—, además de
61
+ hooks no gestionados y tareas `folderOpen` de ejecución automática, y nunca
62
+ modifica ninguna configuración. El centinela de `SessionStart` toma una huella
63
+ de este conjunto y solo reescanea cuando la huella cambia, para no generar
64
+ ruido en el session-start. Auditoría bajo demanda:
65
+ `repo-harness security scan --json`.
66
+ - **Ciclo de vida draft-plan de Claude/Codex.** El Plan mode tiene explícitamente
67
+ dos etapas: Draft y Approved. Los hooks reconocen la intención de crear un plan
68
+ y rastrean la pending orchestration; un stop gate (`stop-orchestrator.sh`) exige
69
+ que la sesión haga una pasada de autorevisión antes de terminar con el plan sin
70
+ definir. Captura un borrador con `scripts/capture-plan.sh --slug <slug> --title
71
+ <title> --status Draft`, después promociónalo a Approved y proyéctalo a
72
+ ejecución con `--execute` o `scripts/plan-to-todo.sh --plan <plan>`. Los plans
73
+ se convierten en la fuente de verdad a nivel de archivo en `plans/`.
74
+
75
+ ## Qué hace el producto
76
+
77
+ `repo-harness` convierte el desarrollo asistido por IA de una "coordinación verbal
78
+ en el historial de chat" en un "estado de workflow auditable en el repositorio".
79
+ Instala en el repositorio objetivo un conjunto de contracts de archivos pequeño y
80
+ explícito, para que Claude, Codex y las personas tengan una misma fuente de verdad
81
+ sobre estas cuestiones:
82
+
83
+ - cuál es la intención de producto estable
84
+ - qué plan ya está aprobado para entrar en ejecución
85
+ - qué scope permite modificar el sprint contract actual
86
+ - qué checks, review y evidence prueban que la tarea está realmente completa
87
+ - cómo deben los hooks advertir, bloquear, registrar trace y hacer handoff entre
88
+ sesiones
89
+
90
+ No es un agent gateway, ni un runtime de producto, ni un servicio de base de
91
+ datos, ni un MCP server. El límite del producto es claro: inspecciona el
92
+ repositorio objetivo, instala o refresca los archivos de workflow, enruta los host
93
+ events de Claude/Codex hacia los hooks repo-local, y luego verifica que esas
94
+ workflow surfaces sigan siendo coherentes.
95
+
96
+ ## Cómo funciona
97
+
98
+ En conjunto hay tres capas:
99
+
100
+ 1. **Capa del paquete fuente**: este repositorio mantiene la CLI, los command
101
+ skill facades, los templates, los hook assets, el workflow contract, los tests
102
+ y el release gate.
103
+ 2. **Capa del contract del repositorio objetivo**: `repo-harness update` o la
104
+ migración escribe `docs/spec.md`, `plans/`, `tasks/`, `.ai/context/`,
105
+ `.ai/harness/`, helper scripts y `.ai/hooks/`.
106
+ 3. **Capa del host adapter**: el `~/.claude/settings.json` y el
107
+ `~/.codex/hooks.json` a nivel de usuario enrutan los events de Claude/Codex
108
+ hacia `repo-harness-hook`. El hook entrypoint primero comprueba si el repo
109
+ actual tiene un `.ai/harness/workflow-contract.json`; si no hay opt in, sale en
110
+ silencio, y solo si hay opt in entra en los `.ai/hooks/*` del repo actual.
111
+
112
+ Para `UserPromptSubmit`, el adapter contract público sigue siendo
113
+ `repo-harness-hook UserPromptSubmit --route default`. El CLI route registry hace
114
+ dispatch de esa route a `.ai/hooks/prompt-guard.sh`. El shell hook se sigue
115
+ ocupando del parseo del host JSON, la lectura de los archivos de workflow, los
116
+ side effects de plan capture, el render del quality gate y el stdout/stderr
117
+ host-safe. La decisión sobre el prompt intent y el workflow state se delega al
118
+ TypeScript decision engine detrás de `repo-harness-hook prompt-guard-decide`, que
119
+ devuelve un action enum desde una decision table explícita. Así la configuración
120
+ del host no cambia, pero la capa más propensa a errores —el classifier y la
121
+ state-machine— deja de estar dispersa en ramas condicionales de shell.
122
+
123
+ El invariante central: los hechos persistentes viven en el repositorio, no en la
124
+ ventana de chat. Los hooks son solo aceleradores y guardrails; la verdadera
125
+ authority son los archivos de plan, contract, review, checks y handoff.
126
+
127
+ ## Task Workflow: de Plan a Closeout
128
+
129
+ El diagrama de abajo asume que el harness ya está instalado en el repositorio
130
+ objetivo. Muestra el ciclo cerrado normal de una sola tarea: primero se forma un
131
+ plan, luego se proyecta al sprint contract, cuando hace falta se hace checkout de
132
+ un worktree aislado, se implementa bajo la protección de los hooks, y después se
133
+ verifica, se hace review, external acceptance y, por último, closeout.
134
+
135
+ ```mermaid
136
+ flowchart TD
137
+ UserTask["Tarea de usuario o planning prompt"] --> Discovery["Investigación previa<br/>P1 map, P2 trace, P3 decision"]
138
+ Discovery --> PlanDraft["Draft plan<br/>plans/plan-*.md"]
139
+ PlanDraft --> PlanReview{"¿El plan es ejecutable?"}
140
+ PlanReview -->|no| Refine["Converger scope y evidence contract"]
141
+ Refine --> PlanDraft
142
+ PlanReview -->|sí| Approve["Approved plan<br/>Status: Approved"]
143
+
144
+ Approve --> Project["Proyectar a la superficie de ejecución<br/>capture-plan.sh --execute<br/>o plan-to-todo.sh --plan"]
145
+ Project --> Active["Active markers<br/>.ai/harness/active-plan<br/>.ai/harness/active-worktree"]
146
+ Project --> Contract["Sprint contract<br/>tasks/contracts/YYYYMMDD-HHMM-task-slug.contract.md"]
147
+ Project --> ReviewFile["Review file<br/>tasks/reviews/YYYYMMDD-HHMM-task-slug.review.md"]
148
+ Project --> Notes["Task notes<br/>tasks/notes/YYYYMMDD-HHMM-task-slug.notes.md"]
149
+
150
+ Contract --> WorktreePolicy{"¿Se necesita un contract worktree?"}
151
+ WorktreePolicy -->|sí| Checkout["Checkout de worktree aislado<br/>contract-worktree.sh start --plan<br/>branch codex/task-slug"]
152
+ WorktreePolicy -->|no| CurrentTree["Usar el worktree actual<br/>tarea pequeña o slice explícitamente permitido"]
153
+ Checkout --> Implement
154
+ CurrentTree --> Implement
155
+
156
+ Implement["Editar y ejecutar comandos"] --> PreHooks["Pre-edit guards<br/>PlanStatusGuard, ContractScopeGuard, WorktreeGuard"]
157
+ PreHooks -->|blocked| ScopeFix["Corregir plan, contract, worktree o scope"]
158
+ ScopeFix --> Implement
159
+ PreHooks -->|allowed| Changes["Cambios de código, docs, tests o configuración"]
160
+ Changes --> PostHooks["Post-edit / post-bash hooks<br/>trace, drift request, handoff, check evidence"]
161
+ PostHooks --> Verify["Ejecutar verificación<br/>tests plus repo workflow checks"]
162
+
163
+ Verify --> Checks["Evidence estructurada<br/>.ai/harness/checks/latest.json<br/>.ai/harness/runs/*.json"]
164
+ Checks --> CheckReview["Evaluator review<br/>Waza /check -> review file"]
165
+ CheckReview --> External["External acceptance advice<br/>o manual override explícito"]
166
+ External --> DoneGate{"¿Pasan contract, checks, review y acceptance?"}
167
+ DoneGate -->|no| Repair["Reparar la evidence fallida o la implementación"]
168
+ Repair --> Implement
169
+ DoneGate -->|sí| Closeout["Closeout<br/>scripts/contract-worktree.sh finish"]
170
+
171
+ Closeout --> Commit["Commit del contract branch"]
172
+ Commit --> Merge["Fast-forward del target branch"]
173
+ Merge --> Archive["Archivar plan/todo y refrescar el handoff"]
174
+ Archive --> Cleanup["Limpiar el worktree ya fusionado<br/>contract-worktree.sh cleanup"]
175
+ Cleanup --> Done["Tarea completada y auditable"]
176
+ ```
177
+
178
+ ## Primeros 5 minutos
179
+
180
+ Esta es la ruta más rápida para evaluar si un repositorio real es apto para
181
+ adoptar este workflow.
182
+
183
+ ### Instalar o refrescar el runtime local
184
+
185
+ ```bash
186
+ npx -y repo-harness init
187
+ ```
188
+
189
+ La npm package release line es ahora `0.2.x`; el workflow compatibility model line
190
+ generado se rastrea por separado como `5.x`. `repo-harness@0.2.1` separa el
191
+ bootstrap global inicial (`repo-harness init`) del refresco repo-local
192
+ (`repo-harness update`), conserva el instalador global de plugin/hook
193
+ (`scripts/setup-plugins.sh`), el centinela de seguridad de configuración de solo
194
+ lectura (`repo-harness security scan`), el ciclo de vida draft-plan explícito de
195
+ Claude/Codex y añade inicialización no bloqueante del índice CodeGraph para el
196
+ routing estructural de prompts.
197
+
198
+ Si trabajas desde un checkout del código fuente:
199
+
200
+ ```bash
201
+ git clone https://github.com/Ancienttwo/repo-harness.git ~/Projects/repo-harness
202
+ cd ~/Projects/repo-harness
203
+ bun src/cli/index.ts init
204
+ ```
205
+
206
+ Modelo de rutas locales:
207
+
208
+ - Repositorio fuente: `~/Projects/repo-harness`
209
+ - Claude skill aliases: `~/.claude/skills/repo-harness`, `~/.claude/skills/repo-harness-skill`
210
+ - Codex discoverable skill alias: `~/.codex/skills/repo-harness`
211
+ - Codex compatibility fallback alias: `~/.codex/skills/repo-harness-skill`
212
+
213
+ `~/Projects/repo-harness` es la única source of truth editable. Las rutas locales
214
+ de Claude/Codex son runtime entrypoints respaldados por symlinks. Los directorios
215
+ del runtime `project-initializer` ya retirado los limpia
216
+ `scripts/sync-codex-installed-copies.sh`.
217
+
218
+ ### Prerrequisitos mínimos
219
+
220
+ - Git working tree
221
+ - `bash`
222
+ - `bun`, para la verificación posterior y el template assembly
223
+ - `jq` es opcional; se recomienda al hacer `--dry-run` y resulta más útil al
224
+ aplicar el settings merge
225
+
226
+ ### Empieza por aquí
227
+
228
+ En un repositorio existente, ejecuta desde el repo root:
229
+
230
+ ```bash
231
+ npx -y repo-harness update --dry-run
232
+ ```
233
+
234
+ Aplica solo después de que el reporte del dry-run sea correcto:
235
+
236
+ ```bash
237
+ npx -y repo-harness update
238
+ ```
239
+
240
+ Para un proyecto o módulo nuevo, usa el command skill `repo-harness-scaffold`. Para
241
+ un repositorio existente, usa `repo-harness-init`; este instala o refresca el
242
+ harness y no crea el stack tecnológico de la aplicación.
243
+
244
+ ### Cómo se ve el éxito
245
+
246
+ El comando debería terminar imprimiendo `=== Migration Report ===`, e incluir:
247
+
248
+ - `Project hooks synced from:`: de dónde proviene el comportamiento de los hooks generados
249
+ - `Host hook config target: user-level ~/.claude/settings.json and ~/.codex/hooks.json`: dónde está la capa del adapter
250
+ - `Host hook adapters are user-level:`: recordatorio de instalar los global adapters y de confiar en `~/.codex/hooks.json`
251
+ - `Workflow migration:`: el plan de creación o refresco de las repo-local harness surfaces
252
+ - `Helper scripts:`: la cadena de herramientas operativa que obtendrás tras aplicar
253
+ - `--- External Tooling ---`: el routing de gstack/Waza/gbrain más las advisory de instalación/actualización
254
+
255
+ ### Los dos comandos siguientes
256
+
257
+ ```bash
258
+ bash scripts/check-task-workflow.sh --strict
259
+ bun test
260
+ ```
261
+
262
+ Si la salida del dry-run no es correcta, detente aquí primero y lee
263
+ [`docs/reference-configs/hook-operations.md`](docs/reference-configs/hook-operations.md).
264
+
265
+ ## Hook Authority Map
266
+
267
+ - `.ai/hooks/` es la única shared hook implementation que se debe editar de forma prioritaria.
268
+ - `~/.claude/settings.json` es el Claude adapter a nivel de usuario, encargado de hacer dispatch a los opted-in repos.
269
+ - `~/.codex/hooks.json` es el Codex adapter a nivel de usuario, hace dispatch al mismo runner.
270
+ - Los hook adapters repo-local `.claude/settings.json` y `.codex/hooks.json` son legacy project-level config y deben retirarse durante la migración.
271
+ - Codex debe confiar en `~/.codex/hooks.json` en sus Settings para que los hooks se ejecuten.
272
+ - Orden de depuración: user-level adapter config -> `repo-harness-hook` o el fallback `repo-harness hook` -> route registry -> `.ai/hooks/*`.
273
+
274
+ `SessionStart` ejecuta dos scripts ordenados antes de empezar el trabajo:
275
+
276
+ ```mermaid
277
+ flowchart LR
278
+ SessionStart["Claude/Codex SessionStart"] --> Ctx["session-start-context.sh<br/>contexto de resume + handoff"]
279
+ Ctx --> Sec["security-sentinel.sh<br/>escaneo de configuración de solo lectura, fingerprint-gated"]
280
+ Sec --> SSOut["SessionStart additionalContext<br/>estado de la sesión anterior + hallazgos de SecurityConfig"]
281
+ ```
282
+
283
+ El prompt guard tiene un paso interno adicional:
284
+
285
+ ```mermaid
286
+ flowchart LR
287
+ Host["Claude/Codex UserPromptSubmit"] --> Adapter["user-level adapter"]
288
+ Adapter --> CLI["repo-harness-hook UserPromptSubmit --route default"]
289
+ CLI --> Route["route registry"]
290
+ Route --> Shell[".ai/hooks/prompt-guard.sh"]
291
+ Shell --> Decision["repo-harness-hook prompt-guard-decide<br/>TypeScript decision table"]
292
+ Decision --> Action["single action enum"]
293
+ Action --> Shell
294
+ Shell --> RouteHint["Waza route hint<br/>think/planning explícito coincide primero → /think"]
295
+ Shell --> HostOutput["host-safe allow, advice, block, or done gate output"]
296
+ ```
297
+
298
+ La capa de shell sigue teniendo la authority del sistema de archivos y los side
299
+ effects. TypeScript solo tiene el classifier más la decision table de
300
+ `intent x plan state`.
301
+
302
+ ## Hook Failure Playbook
303
+
304
+ Cuando un hook block está activo, mira primero la salida estructurada en el
305
+ terminal. Los campos centrales son `guard`, `reason`, `fix`, `failure_class` y
306
+ `run_id`.
307
+
308
+ - Failure log: `.ai/harness/failures/latest.jsonl`
309
+ - Trace log: `.claude/.trace.jsonl`
310
+ - Guía detallada: [`docs/reference-configs/hook-operations.md`](docs/reference-configs/hook-operations.md)
311
+
312
+ Guards habituales:
313
+
314
+ - `PlanStatusGuard`: no hay active plan, o el plan todavía no puede ejecutarse
315
+ - `ContractGuard`: la approved execution aún no ha generado el scaffold de contract/review/notes
316
+ - `ContractGuard`: la tarea afirma estar completa sin haber pasado la contract verification
317
+ - `WorktreeGuard`: se escribe desde el primary worktree bajo una política que fuerza linked worktrees
318
+
319
+ ## Repo Workflow
320
+
321
+ - Root routing docs: `CLAUDE.md`, `AGENTS.md`
322
+ - Shared hook layer: `.ai/hooks/`
323
+ - User-level adapter layer: `~/.claude/settings.json`, `~/.codex/hooks.json`
324
+ - Active execution surface: `tasks/`
325
+ - Plan source of truth: `plans/`
326
+ - Durable progress: `tasks/workstreams/`
327
+ - Release history: `docs/CHANGELOG.md`
328
+
329
+ ## Release actual
330
+
331
+ - npm package: `repo-harness@0.2.1`
332
+ - Generated workflow compatibility: `5.2.3`
333
+ - GitHub repository: `Ancienttwo/repo-harness`
334
+ - Release history: [`docs/CHANGELOG.md`](docs/CHANGELOG.md)
335
+
336
+ ## Current Model (5.2.3)
337
+
338
+ - El question flow usa **12 grouped decision points**, infiriendo primero los harness defaults.
339
+ - El plan menu está por capas: los **Core Plans (A-F)** primero, los **Custom Presets (G-K)** solo cuando hace falta.
340
+ - El skill routing es inspection-first:
341
+ - `scripts/inspect-project-state.ts`
342
+ - `scripts/migrate-workflow-docs.ts`
343
+ - `assets/workflow-contract.v1.json`
344
+ - Los generated repos usan por defecto el repo-local harness flow:
345
+ - `docs/spec.md -> plans/ -> tasks/contracts/ -> tasks/reviews/ -> .ai/context/context-map.json -> .ai/harness/*`
346
+ - `repo-harness update` refresca las runtime pieces:
347
+ - los `repo-harness` skill aliases
348
+ - los global Codex/Claude hook adapters
349
+ - las Waza skills: `check`, `design`, `health`, `hunt`, `learn`, `read`, `think`, `write`
350
+ - sincroniza `diagram-design` si existe la source copy
351
+ - El resto del external tooling se mantiene advisory-only:
352
+ - `bash scripts/check-agent-tooling.sh --host both --check-updates`
353
+ - no configura automáticamente gstack, gbrain, CodeGraph MCP, daemon ni provider
354
+
355
+ ## Action Command Skills
356
+
357
+ Los command skill facades públicos están en `assets/skill-commands/`:
358
+
359
+ - Planning / review: `repo-harness-plan`, `repo-harness-review`, `repo-harness-autoplan`
360
+ - Repo workflow actions: `repo-harness-ship`, `repo-harness-init`, `repo-harness-migrate`, `repo-harness-upgrade`, `repo-harness-capability`, `repo-harness-architecture`, `repo-harness-handoff`, `repo-harness-deploy`, `repo-harness-repair`, `repo-harness-check`
361
+ - Project creation: `repo-harness-scaffold`
362
+
363
+ `repo-harness-init` se usa para repositorios existentes; `repo-harness-scaffold` se
364
+ usa para crear proyectos o módulos nuevos. `hooks-init`, `docs-init` y
365
+ `create-project-dirs` son pasos internos, no commands públicos.
366
+
367
+ ## Maintainer Reference
368
+
369
+ ### Verificar el workflow contract de este repositorio
370
+
371
+ ```bash
372
+ bash scripts/check-task-sync.sh
373
+ bash scripts/check-task-workflow.sh --strict
374
+ bun scripts/inspect-project-state.ts --repo . --format text
375
+ bash scripts/migrate-project-template.sh --repo . --dry-run
376
+ ```
377
+
378
+ ### Template assembly
379
+
380
+ ```bash
381
+ bun scripts/assemble-template.ts --plan C --name "MyProject"
382
+ bun scripts/assemble-template.ts --target agents --plan C --name "MyProject"
383
+ ```
384
+
385
+ ### Verification
386
+
387
+ ```bash
388
+ bun test
389
+ bash scripts/check-task-sync.sh
390
+ bash scripts/check-task-workflow.sh --strict
391
+ bun scripts/inspect-project-state.ts --repo . --format text
392
+ bash scripts/migrate-project-template.sh --repo . --dry-run
393
+ bash scripts/check-agent-tooling.sh --host both --check-updates
394
+ bun run benchmark:skills --dry-run
395
+ ```
396
+
397
+ ## Key Files
398
+
399
+ - Skill spec: `SKILL.md`
400
+ - Root routing docs: `CLAUDE.md`, `AGENTS.md`
401
+ - Plan mapping: `assets/plan-map.json`
402
+ - Question-pack: `assets/initializer-question-pack.v4.json`
403
+ - Shared hooks: `assets/hooks/`
404
+ - Workflow contract: `assets/workflow-contract.v1.json`
405
+ - Hook operations reference: `docs/reference-configs/hook-operations.md`
406
+ - Template assembler: `scripts/assemble-template.ts`
407
+ - State inspector: `scripts/inspect-project-state.ts`
408
+ - Legacy-doc migrator: `scripts/migrate-workflow-docs.ts`