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