trackops 1.1.0 → 2.0.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.
- package/README.md +194 -230
- package/bin/trackops.js +54 -28
- package/lib/config.js +14 -10
- package/lib/control.js +44 -32
- package/lib/env.js +18 -1
- package/lib/init.js +40 -6
- package/lib/opera-bootstrap.js +825 -273
- package/lib/opera.js +360 -110
- package/lib/preferences.js +74 -0
- package/lib/runtime-state.js +144 -0
- package/lib/server.js +155 -25
- package/locales/en.json +136 -42
- package/locales/es.json +136 -42
- package/package.json +2 -1
- package/scripts/postinstall-locale.js +21 -0
- package/scripts/smoke-tests.js +130 -5
- package/scripts/validate-skill.js +2 -1
- package/skills/trackops/SKILL.md +67 -45
- package/skills/trackops/agents/openai.yaml +5 -1
- package/skills/trackops/locales/en/SKILL.md +86 -0
- package/skills/trackops/locales/en/references/activation.md +73 -0
- package/skills/trackops/locales/en/references/troubleshooting.md +49 -0
- package/skills/trackops/locales/en/references/workflow.md +26 -0
- package/skills/trackops/references/activation.md +53 -19
- package/skills/trackops/references/troubleshooting.md +36 -21
- package/skills/trackops/references/workflow.md +21 -15
- package/skills/trackops/scripts/bootstrap-trackops.js +9 -7
- package/skills/trackops/skill.json +4 -4
- package/templates/opera/agent.md +10 -9
- package/templates/opera/architecture/dependency-graph.md +24 -0
- package/templates/opera/architecture/runtime-automation.md +24 -0
- package/templates/opera/architecture/runtime-operations.md +34 -0
- package/templates/opera/en/agent.md +21 -20
- package/templates/opera/en/architecture/dependency-graph.md +24 -0
- package/templates/opera/en/architecture/runtime-automation.md +24 -0
- package/templates/opera/en/architecture/runtime-operations.md +34 -0
- package/templates/opera/en/reviews/delivery-audit.md +18 -0
- package/templates/opera/en/reviews/integration-audit.md +18 -0
- package/templates/opera/en/router.md +19 -9
- package/templates/opera/reviews/delivery-audit.md +18 -0
- package/templates/opera/reviews/integration-audit.md +18 -0
- package/templates/opera/router.md +15 -5
- package/templates/skills/opera-contract-auditor/SKILL.md +38 -0
- package/templates/skills/opera-contract-auditor/locales/en/SKILL.md +38 -0
- package/templates/skills/opera-policy-guard/SKILL.md +26 -0
- package/templates/skills/opera-policy-guard/locales/en/SKILL.md +26 -0
- package/templates/skills/project-starter-skill/SKILL.md +89 -164
- package/templates/skills/project-starter-skill/locales/en/SKILL.md +104 -24
- package/ui/js/views/overview.js +16 -12
- package/templates/etapa/agent.md +0 -26
- package/templates/etapa/genesis.md +0 -94
- package/templates/etapa/references/autonomy-and-recovery.md +0 -117
- package/templates/etapa/references/etapa-cycle.md +0 -193
- package/templates/etapa/registry.md +0 -28
- package/templates/etapa/router.md +0 -39
|
@@ -1,204 +1,129 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "project-starter-skill"
|
|
3
|
-
description: "Skill
|
|
3
|
+
description: "Skill para discovery y estructuracion inicial de proyectos con TrackOps y OPERA. Usala cuando haya que convertir una idea, notas o documentacion parcial en una especificacion clara, especialmente si el usuario no es tecnico o el proyecto aun esta en fase temprana."
|
|
4
4
|
metadata:
|
|
5
|
-
version: "
|
|
5
|
+
version: "4.0"
|
|
6
6
|
type: "global"
|
|
7
7
|
triggers:
|
|
8
|
-
- "iniciar proyecto"
|
|
9
8
|
- "nuevo proyecto"
|
|
10
|
-
- "
|
|
11
|
-
- "opera"
|
|
9
|
+
- "iniciar proyecto"
|
|
12
10
|
- "project starter"
|
|
13
11
|
- "scaffold"
|
|
14
|
-
- "
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
# 🚀 ProjectStarterSkill — O.P.E.R.A. v3.0
|
|
18
|
-
|
|
19
|
-
## Identidad
|
|
20
|
-
|
|
21
|
-
Eres el **Piloto del Sistema**. Tu misión es construir automatización determinista y autorreparable usando el protocolo O.P.E.R.A.
|
|
22
|
-
|
|
23
|
-
## Filosofía
|
|
24
|
-
|
|
25
|
-
- Fiabilidad sobre velocidad. Nunca adivines lógica de negocio.
|
|
26
|
-
- Los LLMs son probabilísticos, pero tu código debe ser **determinista**.
|
|
27
|
-
- Cada fase tiene un **Definition of Done** verificable. No avanzas sin cumplirlo.
|
|
28
|
-
- `genesis.md` es la ley. Si un script la contradice, el script está mal.
|
|
29
|
-
|
|
12
|
+
- "idea de proyecto"
|
|
13
|
+
- "spec dossier"
|
|
30
14
|
---
|
|
31
15
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
Este protocolo se ejecuta secuencialmente y sin excepciones al crear un nuevo proyecto.
|
|
35
|
-
|
|
36
|
-
### Paso 1 — Descubrimiento
|
|
37
|
-
|
|
38
|
-
Antes de crear cualquier archivo, haz al usuario estas preguntas:
|
|
39
|
-
|
|
40
|
-
| # | Pregunta | Propósito |
|
|
41
|
-
|---|----------|-----------|
|
|
42
|
-
| 1 | ¿Cuál es el resultado singular deseado? | Directriz principal |
|
|
43
|
-
| 2 | ¿Qué servicios externos necesitamos? ¿Están listas las claves? | Integraciones |
|
|
44
|
-
| 3 | ¿Dónde viven los datos primarios? | Fuente de la verdad |
|
|
45
|
-
| 4 | ¿Cómo y dónde debe entregarse el resultado final? | Carga útil |
|
|
46
|
-
| 5 | ¿Restricciones, tono o reglas específicas? | Reglas de comportamiento |
|
|
47
|
-
|
|
48
|
-
También pregunta:
|
|
49
|
-
- ¿Repositorio **público o privado**?
|
|
50
|
-
- ¿Tipo de **licencia**? (MIT, Apache 2.0, GPL v3, Propietario)
|
|
51
|
-
|
|
52
|
-
### Paso 2 — Inicialización con Ops
|
|
53
|
-
|
|
54
|
-
Ejecuta la inicialización del sistema operativo:
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
npx trackops init --with-opera
|
|
58
|
-
```
|
|
16
|
+
# Project Starter Skill
|
|
59
17
|
|
|
60
|
-
|
|
18
|
+
Tu trabajo es convertir una idea o una documentacion parcial en un proyecto estructurado y explicable.
|
|
61
19
|
|
|
62
|
-
|
|
20
|
+
## Regla principal
|
|
63
21
|
|
|
64
|
-
|
|
22
|
+
Empieza siempre por la persona, no por la arquitectura.
|
|
65
23
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
24
|
+
- identifica el nivel tecnico del usuario
|
|
25
|
+
- adapta el lenguaje y la profundidad a ese nivel
|
|
26
|
+
- si ya existe documentacion, leela y consolidala
|
|
27
|
+
- si no existe documentacion, construye la primera especificacion util desde la idea
|
|
69
28
|
|
|
70
|
-
|
|
29
|
+
## Cuando TrackOps ya esta instalado
|
|
71
30
|
|
|
72
|
-
|
|
31
|
+
Si el repo ya contiene TrackOps u OPERA:
|
|
73
32
|
|
|
74
|
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
33
|
+
- no ejecutes `trackops init`
|
|
34
|
+
- no recrees `app/`, `ops/` ni el resto del workspace
|
|
35
|
+
- usa `ops/contract/operating-contract.json` como fuente de verdad de maquina si ya existe
|
|
36
|
+
- usa `ops/genesis.md` como vista humana compilada
|
|
37
|
+
- usa `ops/project_control.json` para backlog y estado operativo
|
|
38
|
+
- trabaja sobre `ops/bootstrap/agent-handoff.md`
|
|
39
|
+
- escribe:
|
|
40
|
+
- `ops/bootstrap/intake.json`
|
|
41
|
+
- `ops/bootstrap/spec-dossier.md`
|
|
42
|
+
- `ops/bootstrap/open-questions.md` si quedan vacios importantes
|
|
78
43
|
|
|
79
|
-
|
|
44
|
+
## Lo que debe producir la skill
|
|
80
45
|
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
trackops skill install commiter
|
|
84
|
-
trackops skill install changelog-updater
|
|
85
|
-
```
|
|
86
|
-
2. Analiza la definición del proyecto en `genesis.md`.
|
|
87
|
-
3. Busca skills adicionales con `trackops skill catalog` y **recomienda** (no instales sin aprobación) las que apliquen.
|
|
46
|
+
`ops/bootstrap/intake.json` debe dejar, como minimo:
|
|
88
47
|
|
|
89
|
-
|
|
48
|
+
- `technicalLevel`
|
|
49
|
+
- `projectState`
|
|
50
|
+
- `documentationState`
|
|
51
|
+
- `decisionOwnership`
|
|
52
|
+
- `problemStatement`
|
|
53
|
+
- `targetUser`
|
|
54
|
+
- `singularDesiredOutcome`
|
|
55
|
+
- `userLanguage`
|
|
56
|
+
- `needsPlainLanguage`
|
|
57
|
+
- `recommendedStack`
|
|
58
|
+
- `externalServices`
|
|
59
|
+
- `sourceOfTruth`
|
|
60
|
+
- `payload`
|
|
61
|
+
- `behaviorRules`
|
|
62
|
+
- `architecturalInvariants`
|
|
63
|
+
- `inputSchema`
|
|
64
|
+
- `outputSchema`
|
|
65
|
+
- `pipeline`
|
|
66
|
+
- `templates`
|
|
90
67
|
|
|
91
|
-
|
|
92
|
-
2. Genera `README.md` con la descripción del proyecto basada en `genesis.md`.
|
|
93
|
-
3. Crea `LICENSE` según la elección del usuario.
|
|
94
|
-
4. Inicializa `CHANGELOG.md` con entrada de creación.
|
|
95
|
-
5. Realiza el primer commit (usa la skill `commiter`).
|
|
68
|
+
`ops/bootstrap/spec-dossier.md` debe explicar:
|
|
96
69
|
|
|
97
|
-
|
|
70
|
+
- `## Problem statement`
|
|
71
|
+
- `## Target user`
|
|
72
|
+
- `## Singular desired outcome`
|
|
73
|
+
- `## Delivery target`
|
|
74
|
+
- `## Source of truth`
|
|
75
|
+
- flujo funcional principal
|
|
76
|
+
- stack recomendado o stack heredado
|
|
77
|
+
- integraciones externas
|
|
78
|
+
- restricciones relevantes
|
|
98
79
|
|
|
99
|
-
|
|
80
|
+
`ops/bootstrap/open-questions.md` debe listar:
|
|
100
81
|
|
|
101
|
-
-
|
|
102
|
-
-
|
|
103
|
-
-
|
|
104
|
-
- [ ] La estructura `.agent/` y `.agents/` esté creada.
|
|
105
|
-
- [ ] El repositorio esté inicializado.
|
|
82
|
+
- preguntas que siguen abiertas
|
|
83
|
+
- contradicciones entre idea, repo y documentacion
|
|
84
|
+
- decisiones que TrackOps u OPERA no deben inventar
|
|
106
85
|
|
|
107
|
-
|
|
86
|
+
## Calidad minima antes de entregar
|
|
108
87
|
|
|
109
|
-
|
|
88
|
+
No des por cerrado el discovery si falta alguno de estos campos:
|
|
110
89
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
90
|
+
- problema principal
|
|
91
|
+
- usuario objetivo
|
|
92
|
+
- resultado singular deseado
|
|
93
|
+
- objetivo de entrega
|
|
94
|
+
- fuente de verdad
|
|
95
|
+
- schema de entrada y salida, aunque sea provisional
|
|
115
96
|
|
|
116
|
-
|
|
97
|
+
Si algo sigue incierto, dejalo en `open-questions.md` en lugar de inventarlo.
|
|
117
98
|
|
|
118
|
-
|
|
119
|
-
|------|--------|------|-------------------|
|
|
120
|
-
| **O** | Orquestar | Visión y lógica | Schema JSON en `genesis.md` |
|
|
121
|
-
| **P** | Probar | Conectividad | Scripts de test pasando |
|
|
122
|
-
| **E** | Estructurar | Construcción en 3 capas | SOPs + tools + tests de integración |
|
|
123
|
-
| **R** | Refinar | Refinamiento | Outputs validados contra templates |
|
|
124
|
-
| **A** | Automatizar | Despliegue | Triggers configurados + smoke test |
|
|
99
|
+
## Si TrackOps aun no esta instalado
|
|
125
100
|
|
|
126
|
-
|
|
101
|
+
No improvises una estructura propia.
|
|
127
102
|
|
|
128
|
-
|
|
129
|
-
|------|-----------|---------|
|
|
130
|
-
| Arquitectura | `architecture/` | SOPs técnicos en Markdown. Si la lógica cambia, actualiza el SOP **antes** que el código. |
|
|
131
|
-
| Navegación | El Agente | Capa de razonamiento. Enruta datos entre SOPs y herramientas. |
|
|
132
|
-
| Herramientas | `tools/` | Scripts atómicos y deterministas. Variables en `.env`. Temporales en `.tmp/`. |
|
|
103
|
+
Explica el flujo correcto:
|
|
133
104
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
Para la matriz de autonomía (semáforo), el protocolo de auto-reparación y el sistema de rollback, lee:
|
|
139
|
-
```
|
|
140
|
-
references/autonomy-and-recovery.md
|
|
105
|
+
```bash
|
|
106
|
+
npx skills add Baxahaun/trackops
|
|
107
|
+
trackops init
|
|
108
|
+
trackops opera install
|
|
141
109
|
```
|
|
142
110
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
111
|
+
Si el usuario solo tiene una idea, deja claro que TrackOps puede derivar el bootstrap a una conversacion guiada con el agente.
|
|
112
|
+
- flujo funcional principal
|
|
113
|
+
- decisiones de stack, si ya existen o si hay que proponerlas
|
|
114
|
+
- integraciones externas
|
|
115
|
+
- restricciones relevantes
|
|
146
116
|
|
|
147
|
-
|
|
117
|
+
## Si TrackOps aun no esta instalado
|
|
148
118
|
|
|
149
|
-
|
|
119
|
+
No improvises una estructura propia.
|
|
150
120
|
|
|
151
|
-
|
|
121
|
+
Explica el flujo correcto:
|
|
152
122
|
|
|
123
|
+
```bash
|
|
124
|
+
npx skills add Baxahaun/trackops
|
|
125
|
+
trackops init
|
|
126
|
+
trackops opera install
|
|
153
127
|
```
|
|
154
|
-
proyecto/
|
|
155
|
-
├── .agent/
|
|
156
|
-
│ ├── hub/
|
|
157
|
-
│ │ ├── agent.md # Instrucciones del agente
|
|
158
|
-
│ │ └── router.md # Enrutamiento a skills
|
|
159
|
-
│ └── hub/
|
|
160
|
-
│ ├── agent.md # Instrucciones del agente
|
|
161
|
-
│ └── router.md # Enrutamiento a skills
|
|
162
|
-
├── .agents/
|
|
163
|
-
│ └── skills/
|
|
164
|
-
│ ├── _registry.md # Índice de skills instaladas
|
|
165
|
-
│ └── [skill-name]/
|
|
166
|
-
│ └── SKILL.md # Contenido de skills
|
|
167
|
-
├── genesis.md # 📜 La Constitución
|
|
168
|
-
├── task_plan.md # 🗺️ El Mapa (autogenerado)
|
|
169
|
-
├── progress.md # 📓 El Diario (autogenerado)
|
|
170
|
-
├── findings.md # 📖 La Biblioteca (autogenerado)
|
|
171
|
-
├── CHANGELOG.md # 📋 El Historial
|
|
172
|
-
├── architecture/ # 📘 El Manual (SOPs)
|
|
173
|
-
├── tools/ # ⚙️ Los Motores
|
|
174
|
-
├── templates/ # 📐 Las Plantillas
|
|
175
|
-
├── .tmp/ # 🔧 El Taller
|
|
176
|
-
├── .env # 🔑 Las Llaves
|
|
177
|
-
├── project_control.json # 🎛️ Control Operativo
|
|
178
|
-
├── README.md
|
|
179
|
-
├── LICENSE
|
|
180
|
-
└── .gitignore
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
---
|
|
184
128
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
```markdown
|
|
188
|
-
- [ ] Preguntas de descubrimiento respondidas
|
|
189
|
-
- [ ] trackops init ejecutado
|
|
190
|
-
- [ ] genesis.md poblado con schema y reglas
|
|
191
|
-
- [ ] task_plan.md con Definition of Done por fase
|
|
192
|
-
- [ ] progress.md generado
|
|
193
|
-
- [ ] findings.md generado
|
|
194
|
-
- [ ] .agent/hub/agent.md configurado
|
|
195
|
-
- [ ] .agent/hub/router.md configurado
|
|
196
|
-
- [ ] .agents/skills/_registry.md creado
|
|
197
|
-
- [ ] Skills base instaladas (commiter, changelog-updater)
|
|
198
|
-
- [ ] Repositorio GitHub creado
|
|
199
|
-
- [ ] README.md generado
|
|
200
|
-
- [ ] LICENSE creada
|
|
201
|
-
- [ ] CHANGELOG.md inicializado
|
|
202
|
-
- [ ] .gitignore configurado
|
|
203
|
-
- [ ] Primer commit realizado
|
|
204
|
-
```
|
|
129
|
+
Si el usuario solo tiene una idea, deja claro que TrackOps puede derivar el bootstrap a una conversacion guiada con el agente.
|
|
@@ -1,24 +1,104 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "project-starter-skill"
|
|
3
|
-
description: "
|
|
4
|
-
metadata:
|
|
5
|
-
version: "
|
|
6
|
-
type: "global"
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Project Starter Skill
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
##
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
##
|
|
23
|
-
|
|
24
|
-
|
|
1
|
+
---
|
|
2
|
+
name: "project-starter-skill"
|
|
3
|
+
description: "Skill for discovery and early project structuring with TrackOps and OPERA. Use it when an idea, notes, or partial documentation must become a clear project specification, especially for non-technical users or early-stage projects."
|
|
4
|
+
metadata:
|
|
5
|
+
version: "4.0"
|
|
6
|
+
type: "global"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Project Starter Skill
|
|
10
|
+
|
|
11
|
+
Your job is to turn an idea or partial documentation into a structured, explainable project.
|
|
12
|
+
|
|
13
|
+
## Core rule
|
|
14
|
+
|
|
15
|
+
Start from the person, not from the architecture.
|
|
16
|
+
|
|
17
|
+
- identify the user's technical level
|
|
18
|
+
- adapt language and depth to that level
|
|
19
|
+
- if documentation exists, read it and consolidate it
|
|
20
|
+
- if documentation does not exist, build the first useful specification from the idea
|
|
21
|
+
|
|
22
|
+
## When TrackOps is already installed
|
|
23
|
+
|
|
24
|
+
If the repository already contains TrackOps or OPERA:
|
|
25
|
+
|
|
26
|
+
- do not run `trackops init`
|
|
27
|
+
- do not recreate `app/`, `ops/`, or the workspace
|
|
28
|
+
- use `ops/contract/operating-contract.json` as the machine source of truth when it already exists
|
|
29
|
+
- use `ops/genesis.md` as the compiled human view
|
|
30
|
+
- use `ops/project_control.json` for backlog and operational state
|
|
31
|
+
- work from `ops/bootstrap/agent-handoff.md`
|
|
32
|
+
- write:
|
|
33
|
+
- `ops/bootstrap/intake.json`
|
|
34
|
+
- `ops/bootstrap/spec-dossier.md`
|
|
35
|
+
- `ops/bootstrap/open-questions.md` when important gaps remain
|
|
36
|
+
|
|
37
|
+
## What the skill must produce
|
|
38
|
+
|
|
39
|
+
`ops/bootstrap/intake.json` must include at least:
|
|
40
|
+
|
|
41
|
+
- `technicalLevel`
|
|
42
|
+
- `projectState`
|
|
43
|
+
- `documentationState`
|
|
44
|
+
- `decisionOwnership`
|
|
45
|
+
- `problemStatement`
|
|
46
|
+
- `targetUser`
|
|
47
|
+
- `singularDesiredOutcome`
|
|
48
|
+
- `userLanguage`
|
|
49
|
+
- `needsPlainLanguage`
|
|
50
|
+
- `recommendedStack`
|
|
51
|
+
- `externalServices`
|
|
52
|
+
- `sourceOfTruth`
|
|
53
|
+
- `payload`
|
|
54
|
+
- `behaviorRules`
|
|
55
|
+
- `architecturalInvariants`
|
|
56
|
+
- `inputSchema`
|
|
57
|
+
- `outputSchema`
|
|
58
|
+
- `pipeline`
|
|
59
|
+
- `templates`
|
|
60
|
+
|
|
61
|
+
`ops/bootstrap/spec-dossier.md` must explain:
|
|
62
|
+
|
|
63
|
+
- `## Problem statement`
|
|
64
|
+
- `## Target user`
|
|
65
|
+
- `## Singular desired outcome`
|
|
66
|
+
- `## Delivery target`
|
|
67
|
+
- `## Source of truth`
|
|
68
|
+
- the main functional flow
|
|
69
|
+
- recommended or inherited stack
|
|
70
|
+
- external integrations
|
|
71
|
+
- relevant constraints
|
|
72
|
+
|
|
73
|
+
`ops/bootstrap/open-questions.md` must list:
|
|
74
|
+
|
|
75
|
+
- questions still open
|
|
76
|
+
- contradictions between the idea, the repository, and the documents
|
|
77
|
+
- decisions that TrackOps or OPERA must not invent
|
|
78
|
+
|
|
79
|
+
## Minimum quality bar before handing off
|
|
80
|
+
|
|
81
|
+
Do not treat discovery as complete if any of these are missing:
|
|
82
|
+
|
|
83
|
+
- problem statement
|
|
84
|
+
- target user
|
|
85
|
+
- singular desired outcome
|
|
86
|
+
- delivery target
|
|
87
|
+
- source of truth
|
|
88
|
+
- input and output schema, even if still provisional
|
|
89
|
+
|
|
90
|
+
If something is still uncertain, write it to `open-questions.md` instead of inventing it.
|
|
91
|
+
|
|
92
|
+
## If TrackOps is not installed yet
|
|
93
|
+
|
|
94
|
+
Do not invent your own structure.
|
|
95
|
+
|
|
96
|
+
Explain the correct flow:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
npx skills add Baxahaun/trackops
|
|
100
|
+
trackops init
|
|
101
|
+
trackops opera install
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
If the user only has an idea, make it explicit that TrackOps can route bootstrap into an agent-led discovery conversation.
|
package/ui/js/views/overview.js
CHANGED
|
@@ -21,7 +21,7 @@ export async function render() {
|
|
|
21
21
|
</div>`;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
const { derived, runtime, control, project, docsDirty } = payload;
|
|
24
|
+
const { derived, runtime, control, project, docsDirty, opera } = payload;
|
|
25
25
|
|
|
26
26
|
const html = `
|
|
27
27
|
<div class="view-enter">
|
|
@@ -102,8 +102,8 @@ export async function render() {
|
|
|
102
102
|
<!-- Salud operativa -->
|
|
103
103
|
<div class="chart-card stagger-3" aria-label="${t('ui.overview.operationalHealth', {}, 'Operational health')}">
|
|
104
104
|
<p class="chart-title" style="margin-bottom:var(--space-4)">${t('ui.overview.operationalHealth', {}, 'Operational health')}</p>
|
|
105
|
-
${_renderRepoHealth(runtime, docsDirty, derived)}
|
|
106
|
-
</div>
|
|
105
|
+
${_renderRepoHealth(runtime, docsDirty, derived, opera)}
|
|
106
|
+
</div>
|
|
107
107
|
|
|
108
108
|
</div>
|
|
109
109
|
</div>
|
|
@@ -334,7 +334,7 @@ function _bindPortfolioEvents() {
|
|
|
334
334
|
|
|
335
335
|
// ─────────────────────────────── REPO HEALTH ────────────────────────────────
|
|
336
336
|
|
|
337
|
-
function _renderRepoHealth(runtime, docsDirty, derived) {
|
|
337
|
+
function _renderRepoHealth(runtime, docsDirty, derived, opera) {
|
|
338
338
|
const completionRate = derived.totals.all
|
|
339
339
|
? Math.round((derived.totals.completed / derived.totals.all) * 100)
|
|
340
340
|
: 0;
|
|
@@ -343,14 +343,18 @@ function _renderRepoHealth(runtime, docsDirty, derived) {
|
|
|
343
343
|
? Math.round((derived.totals.blocked / derived.totals.all) * 100)
|
|
344
344
|
: 0;
|
|
345
345
|
|
|
346
|
-
const items = [
|
|
347
|
-
{ label: t('ui.overview.metric.completion', {}, 'Completion rate'), value: `${completionRate}%`, cls: completionRate >= 75 ? 'good' : completionRate >= 40 ? '' : 'bad' },
|
|
348
|
-
{ label: t('ui.overview.metric.blockerPressure', {}, 'Blocker pressure'), value: `${blockerRate}%`, cls: blockerRate === 0 ? 'good' : blockerRate > 20 ? 'bad' : 'warn' },
|
|
349
|
-
{ label: t('ui.overview.metric.findings', {}, 'Open findings'), value: String((derived.openFindings || []).length), cls: (derived.openFindings||[]).length === 0 ? 'good' : 'warn' },
|
|
350
|
-
{ label: t('ui.overview.metric.repo', {}, 'Repo'), value: runtime?.clean ? t('ui.overview.repoClean', {}, 'Clean') : t('ui.overview.repoDirty', {}, 'Changes present'), cls: runtime?.clean ? 'good' : 'warn' },
|
|
351
|
-
{ label: t('ui.overview.metric.docDrift', {}, 'Documentation drift'), value: docsDirty?.length ? docsDirty.join(', ') : 'OK', cls: docsDirty?.length ? 'warn' : 'good' },
|
|
352
|
-
{ label: t('ui.overview.metric.lastCommit', {}, 'Last commit'), value: runtime?.lastCommit ? `${runtime.lastCommit.shortHash} · ${formatDate(runtime.lastCommit.date, 'date')}` : '—', cls: '' },
|
|
353
|
-
|
|
346
|
+
const items = [
|
|
347
|
+
{ label: t('ui.overview.metric.completion', {}, 'Completion rate'), value: `${completionRate}%`, cls: completionRate >= 75 ? 'good' : completionRate >= 40 ? '' : 'bad' },
|
|
348
|
+
{ label: t('ui.overview.metric.blockerPressure', {}, 'Blocker pressure'), value: `${blockerRate}%`, cls: blockerRate === 0 ? 'good' : blockerRate > 20 ? 'bad' : 'warn' },
|
|
349
|
+
{ label: t('ui.overview.metric.findings', {}, 'Open findings'), value: String((derived.openFindings || []).length), cls: (derived.openFindings||[]).length === 0 ? 'good' : 'warn' },
|
|
350
|
+
{ label: t('ui.overview.metric.repo', {}, 'Repo'), value: runtime?.clean ? t('ui.overview.repoClean', {}, 'Clean') : t('ui.overview.repoDirty', {}, 'Changes present'), cls: runtime?.clean ? 'good' : 'warn' },
|
|
351
|
+
{ label: t('ui.overview.metric.docDrift', {}, 'Documentation drift'), value: docsDirty?.length ? docsDirty.join(', ') : 'OK', cls: docsDirty?.length ? 'warn' : 'good' },
|
|
352
|
+
{ label: t('ui.overview.metric.lastCommit', {}, 'Last commit'), value: runtime?.lastCommit ? `${runtime.lastCommit.shortHash} · ${formatDate(runtime.lastCommit.date, 'date')}` : '—', cls: '' },
|
|
353
|
+
{ label: t('ui.overview.metric.contract', {}, 'Contract readiness'), value: opera?.contractReadiness || 'hypothesis', cls: opera?.contractReadiness === 'locked' || opera?.contractReadiness === 'verified' ? 'good' : 'warn' },
|
|
354
|
+
{ label: t('ui.overview.metric.bootstrap', {}, 'OPERA bootstrap'), value: opera?.bootstrap?.status || 'awaiting_intake', cls: opera?.bootstrap?.status === 'completed' ? 'good' : opera?.bootstrap?.status === 'legacy_unsupported' ? 'bad' : 'warn' },
|
|
355
|
+
{ label: t('ui.overview.metric.legacy', {}, 'Legacy status'), value: opera?.legacyStatus || 'supported', cls: opera?.legacyStatus === 'supported' ? 'good' : 'bad' },
|
|
356
|
+
{ label: t('ui.overview.metric.localeSource', {}, 'Language source'), value: opera?.localeSource || 'project', cls: '' },
|
|
357
|
+
];
|
|
354
358
|
|
|
355
359
|
return `
|
|
356
360
|
<div class="health-grid">
|
package/templates/etapa/agent.md
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# Agente del Proyecto: {{PROJECT_NAME}}
|
|
2
|
-
|
|
3
|
-
## Identidad
|
|
4
|
-
Eres el agente principal del proyecto **{{PROJECT_NAME}}**. Este template existe por compatibilidad heredada y debe operar bajo el protocolo O.P.E.R.A. v3.0.
|
|
5
|
-
|
|
6
|
-
## Fuente de Verdad
|
|
7
|
-
Tu fuente de verdad es `genesis.md`. Antes de tomar cualquier decisión, consulta este archivo.
|
|
8
|
-
Para el seguimiento operativo y el estado del backlog, usa `project_control.json`.
|
|
9
|
-
|
|
10
|
-
## Comportamiento
|
|
11
|
-
- Sigue las reglas de comportamiento definidas en `genesis.md`.
|
|
12
|
-
- Respeta la Matriz de Autonomía (Semáforo) para determinar qué acciones puedes tomar.
|
|
13
|
-
- Gestiona tareas y estados desde `project_control.json`.
|
|
14
|
-
- No edites manualmente `task_plan.md`, `progress.md` ni `findings.md`; se regeneran con `trackops sync`.
|
|
15
|
-
|
|
16
|
-
## Skills Disponibles
|
|
17
|
-
Consulta `.agents/skills/_registry.md` para ver las skills instaladas.
|
|
18
|
-
También puedes buscar nuevas skills con `trackops skill catalog`.
|
|
19
|
-
|
|
20
|
-
## Ciclo de Trabajo
|
|
21
|
-
1. Ejecuta `trackops status` al inicio de cada bloque de trabajo.
|
|
22
|
-
2. Consulta `genesis.md` para entender los datos y reglas.
|
|
23
|
-
3. Usa `trackops next` para ver la siguiente cola priorizada.
|
|
24
|
-
4. Antes de implementar, marca la tarea con `trackops task start <task-id>`.
|
|
25
|
-
5. Usa el router (`.agent/hub/router.md`) para saber qué skill aplicar.
|
|
26
|
-
6. Al terminar, pasa la tarea a `review`, `complete` o `block` y ejecuta `trackops sync`.
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
# {{PROJECT_NAME}} — Genesis
|
|
2
|
-
|
|
3
|
-
> **La Constitución del proyecto.** Este documento es la fuente de verdad. Antes de tomar cualquier decisión arquitectónica o de implementación, consulta este archivo. Si un script contradice lo definido aquí, el script está mal.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## 1. Directriz Principal
|
|
8
|
-
|
|
9
|
-
_¿Cuál es el resultado singular deseado de este proyecto?_
|
|
10
|
-
|
|
11
|
-
> TODO: Definir el objetivo principal del proyecto.
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## 2. Integraciones Externas
|
|
16
|
-
|
|
17
|
-
_¿Qué servicios externos necesitamos? ¿Están listas las claves?_
|
|
18
|
-
|
|
19
|
-
| Servicio | Estado | Clave / Config |
|
|
20
|
-
|----------|--------|----------------|
|
|
21
|
-
| — | — | — |
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## 3. Fuente de la Verdad
|
|
26
|
-
|
|
27
|
-
_¿Dónde viven los datos primarios?_
|
|
28
|
-
|
|
29
|
-
> TODO: Describir la fuente de datos principal.
|
|
30
|
-
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
## 4. Carga Útil (Payload)
|
|
34
|
-
|
|
35
|
-
_¿Cómo y dónde debe entregarse el resultado final?_
|
|
36
|
-
|
|
37
|
-
> TODO: Describir destino y formato de entrega.
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
## 5. Reglas de Comportamiento
|
|
42
|
-
|
|
43
|
-
_Restricciones, tono y reglas específicas del dominio._
|
|
44
|
-
|
|
45
|
-
> TODO: Definir restricciones de negocio.
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## Esquema de Datos
|
|
50
|
-
|
|
51
|
-
> **Regla "Datos-Primero"**: Este schema debe estar definido antes de escribir cualquier código.
|
|
52
|
-
|
|
53
|
-
```json
|
|
54
|
-
{
|
|
55
|
-
"input": {
|
|
56
|
-
"source": "",
|
|
57
|
-
"schema": {}
|
|
58
|
-
},
|
|
59
|
-
"output": {
|
|
60
|
-
"destination": "",
|
|
61
|
-
"schema": {}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
## Invariantes Arquitectónicas
|
|
69
|
-
|
|
70
|
-
_Decisiones técnicas inamovibles. Cambiarlas requiere aprobación explícita (Nivel Rojo)._
|
|
71
|
-
|
|
72
|
-
- TODO: Listar invariantes.
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
## Pipeline
|
|
77
|
-
|
|
78
|
-
_Documenta el grafo de dependencias entre herramientas._
|
|
79
|
-
|
|
80
|
-
<!-- Ejemplo:
|
|
81
|
-
### tool_fetch.py → tool_transform.py
|
|
82
|
-
- Output: `.tmp/raw_data.json`
|
|
83
|
-
- Formato: JSON array según schema X
|
|
84
|
-
-->
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
## Templates
|
|
89
|
-
|
|
90
|
-
_Referencias a las plantillas de output definidas en `templates/`._
|
|
91
|
-
|
|
92
|
-
<!-- Ejemplo:
|
|
93
|
-
- `templates/report.md` — Plantilla para reportes
|
|
94
|
-
-->
|