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.
- package/README.es.md +390 -0
- package/README.fr.md +394 -0
- package/README.ja.md +358 -0
- package/README.md +60 -13
- package/README.zh-CN.md +40 -8
- package/SKILL.md +128 -43
- package/assets/hooks/codex.hooks.template.json +1 -1
- package/assets/hooks/lib/workflow-state.sh +51 -1
- package/assets/hooks/prompt-guard.sh +5 -0
- package/assets/hooks/run-hook.sh +22 -0
- package/assets/hooks/security-sentinel.sh +115 -0
- package/assets/hooks/session-start-context.sh +16 -1
- package/assets/hooks/settings.template.json +1 -1
- package/assets/hooks/stop-orchestrator.sh +140 -0
- package/assets/initializer-question-pack.v4.json +28 -10
- package/assets/partials/04-project-structure.partial.md +1 -1
- package/assets/partials/05-workflow.partial.md +1 -1
- package/assets/partials-agents/02-operating-mode.partial.md +1 -1
- package/assets/plan-map.json +47 -47
- package/assets/project-structures/ai-native-collaborative-editor.txt +25 -0
- package/assets/project-structures/astro-ssr.txt +25 -0
- package/assets/project-structures/monorepo.txt +6 -6
- package/assets/reference-configs/agentic-development-flow.md +4 -3
- package/assets/reference-configs/ai-workflows.md +1 -1
- package/assets/reference-configs/changelog-versioning.md +1 -1
- package/assets/reference-configs/coding-standards.md +1 -1
- package/assets/reference-configs/development-protocol.md +1 -1
- package/assets/reference-configs/document-generation.md +3 -3
- package/assets/reference-configs/evaluator-rubric.md +1 -1
- package/assets/reference-configs/external-tooling.md +15 -17
- package/assets/reference-configs/git-strategy.md +1 -1
- package/assets/reference-configs/global-working-rules.md +0 -1
- package/assets/reference-configs/harness-overview.md +3 -3
- package/assets/reference-configs/hook-operations.md +28 -1
- package/assets/reference-configs/release-deploy.md +1 -1
- package/assets/reference-configs/spa-day-protocol.md +1 -1
- package/assets/reference-configs/workflow-orchestration.md +1 -1
- package/assets/skill-commands/manifest.json +12 -5
- package/assets/skill-commands/repo-harness-architecture/SKILL.md +2 -2
- package/assets/skill-commands/repo-harness-autoplan/SKILL.md +14 -7
- package/assets/skill-commands/repo-harness-init/SKILL.md +1 -1
- package/assets/skill-commands/repo-harness-ship/SKILL.md +26 -0
- package/assets/skills/codex-review/SKILL.md +2 -2
- package/assets/templates/helpers/architecture-drift.sh +2 -2
- package/assets/templates/helpers/architecture-event.ts +2 -1
- package/assets/templates/helpers/archive-workflow.sh +53 -1
- package/assets/templates/helpers/capability-resolver.ts +2 -1
- package/assets/templates/helpers/capture-plan.sh +29 -1
- package/assets/templates/helpers/check-agent-tooling.sh +4 -4
- package/assets/templates/helpers/check-brain-manifest.sh +5 -4
- package/assets/templates/helpers/check-task-workflow.sh +32 -2
- package/assets/templates/helpers/codex-handoff-resume.sh +52 -2
- package/assets/templates/helpers/context-contract-sync.sh +2 -1
- package/assets/templates/helpers/contract-worktree.sh +49 -2
- package/assets/templates/helpers/ensure-task-workflow.sh +20 -15
- package/assets/templates/helpers/migrate-project-template.sh +1 -1
- package/assets/templates/helpers/plan-to-todo.sh +69 -3
- package/assets/templates/helpers/prepare-codex-handoff.sh +84 -1
- package/assets/templates/helpers/select-agent-context-blocks.sh +4 -3
- package/assets/templates/helpers/ship-worktrees.sh +559 -0
- package/assets/templates/helpers/sync-brain-docs.sh +4 -4
- package/assets/workflow-contract.v1.json +11 -11
- package/docs/images/repo-harness-hook-carrot.png +0 -0
- package/docs/reference-configs/agentic-development-flow.md +4 -4
- package/docs/reference-configs/ai-workflows.md +1 -1
- package/docs/reference-configs/changelog-versioning.md +1 -1
- package/docs/reference-configs/coding-standards.md +1 -1
- package/docs/reference-configs/development-protocol.md +1 -1
- package/docs/reference-configs/document-generation.md +3 -3
- package/docs/reference-configs/evaluator-rubric.md +1 -1
- package/docs/reference-configs/external-tooling.md +15 -17
- package/docs/reference-configs/git-strategy.md +1 -1
- package/docs/reference-configs/global-working-rules.md +0 -1
- package/docs/reference-configs/handoff-protocol.md +8 -7
- package/docs/reference-configs/harness-overview.md +3 -3
- package/docs/reference-configs/hook-operations.md +19 -1
- package/docs/reference-configs/release-deploy.md +1 -1
- package/docs/reference-configs/spa-day-protocol.md +1 -1
- package/docs/reference-configs/workflow-orchestration.md +1 -1
- package/package.json +2 -1
- package/scripts/architecture-drift.sh +2 -2
- package/scripts/architecture-event.ts +2 -1
- package/scripts/archive-workflow.sh +53 -1
- package/scripts/capability-resolver.ts +2 -1
- package/scripts/capture-plan.sh +29 -1
- package/scripts/check-agent-tooling.sh +4 -4
- package/scripts/check-brain-manifest.sh +128 -70
- package/scripts/check-skill-version.ts +2 -3
- package/scripts/check-task-workflow.sh +32 -2
- package/scripts/codex-handoff-resume.sh +52 -2
- package/scripts/context-contract-sync.sh +2 -1
- package/scripts/contract-worktree.sh +49 -2
- package/scripts/create-project-dirs.sh +4 -2
- package/scripts/ensure-task-workflow.sh +20 -15
- package/scripts/init-project.sh +7 -6
- package/scripts/lib/project-init-lib.sh +89 -41
- package/scripts/migrate-project-template.sh +6 -5
- package/scripts/plan-to-todo.sh +69 -3
- package/scripts/prepare-codex-handoff.sh +84 -1
- package/scripts/repo-harness.sh +2 -2
- package/scripts/select-agent-context-blocks.sh +4 -3
- package/scripts/setup-plugins.sh +25 -21
- package/scripts/ship-worktrees.sh +559 -0
- package/scripts/sync-brain-docs.sh +80 -162
- package/src/cli/commands/brain-root.ts +102 -0
- package/src/cli/commands/brain.ts +5 -10
- package/src/cli/commands/doctor.ts +27 -0
- package/src/cli/commands/init.ts +380 -61
- package/src/cli/commands/security.ts +294 -0
- package/src/cli/commands/status.ts +1 -1
- package/src/cli/hook/route-registry.ts +2 -2
- package/src/cli/hook/runtime.ts +77 -2
- package/src/cli/index.ts +46 -8
- 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`
|