trackops 2.0.6 → 2.1.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.md +295 -701
- package/bin/trackops.js +24 -16
- package/lib/config.js +265 -58
- package/lib/control.js +830 -292
- package/lib/init.js +46 -16
- package/lib/opera-bootstrap.js +85 -45
- package/lib/opera-phase-dod.js +485 -0
- package/lib/opera.js +8 -5
- package/lib/plans.js +1329 -0
- package/lib/quality-assert.js +49 -0
- package/lib/quality.js +1759 -0
- package/lib/release.js +18 -11
- package/lib/server.js +504 -192
- package/locales/en.json +249 -15
- package/locales/es.json +249 -15
- package/package.json +6 -5
- package/scripts/quality-unit-tests.js +130 -0
- package/scripts/smoke-tests.js +357 -57
- package/skills/trackops/skill.json +29 -29
- package/templates/skills/opera-quality-guard/SKILL.md +26 -0
- package/templates/skills/opera-quality-guard/locales/en/SKILL.md +26 -0
- package/templates/skills/opera-skill/SKILL.md +8 -0
- package/templates/skills/opera-skill/locales/en/SKILL.md +8 -0
- package/ui/js/api.js +93 -26
- package/ui/js/app.js +13 -7
- package/ui/js/filters.js +49 -29
- package/ui/js/time-tracker.js +41 -28
- package/ui/js/views/board.js +22 -14
- package/ui/js/views/dashboard.js +206 -49
- package/ui/js/views/execution.js +7 -3
- package/ui/js/views/plans.js +284 -0
- package/ui/js/views/scrum.js +25 -13
- package/ui/js/views/sidebar.js +9 -8
- package/ui/js/views/tasks.js +238 -134
package/README.md
CHANGED
|
@@ -1,725 +1,319 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<img src="docs/assets/logo.svg" alt="TrackOps Logo" width="96" height="96" />
|
|
3
|
-
</p>
|
|
4
|
-
|
|
5
|
-
<h1 align="center">TrackOps</h1>
|
|
6
|
-
|
|
7
|
-
<p align="center">
|
|
8
|
-
<strong>
|
|
9
|
-
</p>
|
|
10
|
-
|
|
11
|
-
<p align="center">
|
|
12
|
-
<a href="https://www.npmjs.com/package/trackops"><img src="https://img.shields.io/npm/v/trackops?color=D97706&style=flat-square" alt="npm" /></a>
|
|
13
|
-
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-22C55E?style=flat-square" alt="MIT" /></a>
|
|
14
|
-
<img src="https://img.shields.io/badge/node-%3E%3D18-333?style=flat-square" alt="Node 18+" />
|
|
15
|
-
</p>
|
|
16
|
-
|
|
17
|
-
<p align="center">
|
|
18
|
-
<a href="#espanol">
|
|
19
|
-
</p>
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
##
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
al
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
trackops --version
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
Esta separacion es intencional:
|
|
68
|
-
|
|
69
|
-
- la skill se audita como capa de instrucciones
|
|
70
|
-
- el runtime se instala con un paso visible y verificable
|
|
71
|
-
- no hay instalacion transitiva oculta desde la propia skill
|
|
72
|
-
|
|
73
|
-
Si `npm install -g trackops` se ejecuta en modo interactivo, TrackOps intenta pedir el idioma global en ese momento. Si tu terminal o npm no muestran ese prompt, puedes fijarlo manualmente despues:
|
|
74
|
-
|
|
75
|
-
```bash
|
|
76
|
-
trackops locale set es
|
|
77
|
-
trackops locale set en
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### Flujo completo recomendado
|
|
81
|
-
|
|
82
|
-
1. Instala la skill global:
|
|
83
|
-
|
|
84
|
-
```bash
|
|
85
|
-
npx skills add Baxahaun/trackops --skill trackops --agent "*" --global -y
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
2. Instala el runtime:
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
npm install -g trackops@latest
|
|
92
|
-
trackops --version
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
3. Entra en el repo que quieres gestionar:
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
cd ruta/a/tu/proyecto
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
4. Activa TrackOps y elige el idioma del proyecto cuando el CLI lo pida:
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="docs/assets/logo.svg" alt="TrackOps Logo" width="96" height="96" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">TrackOps</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<strong>Turn AI coding tools into an operating team you can direct.</strong>
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
<p align="center">
|
|
12
|
+
<a href="https://www.npmjs.com/package/trackops"><img src="https://img.shields.io/npm/v/trackops?color=D97706&style=flat-square" alt="npm" /></a>
|
|
13
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-22C55E?style=flat-square" alt="MIT" /></a>
|
|
14
|
+
<img src="https://img.shields.io/badge/node-%3E%3D18-333?style=flat-square" alt="Node 18+" />
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
<p align="center">
|
|
18
|
+
<a href="#espanol">Español</a> · <a href="#english">English</a> · <a href="https://baxahaun.github.io/trackops/">Web</a>
|
|
19
|
+
</p>
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Español
|
|
24
|
+
|
|
25
|
+
### Qué es TrackOps
|
|
26
|
+
|
|
27
|
+
TrackOps es una capa local de control para trabajar con agentes de IA sin perder el gobierno del proyecto.
|
|
28
|
+
|
|
29
|
+
No sustituye tu producto. Ordena el trabajo que ocurre alrededor del producto:
|
|
30
|
+
|
|
31
|
+
- define una fuente de verdad operativa dentro del repo
|
|
32
|
+
- separa producto y operaciones para que no se mezclen
|
|
33
|
+
- da contexto persistente a los agentes entre sesiones
|
|
34
|
+
- expone estado, tareas, calidad y release desde CLI y dashboard
|
|
35
|
+
|
|
36
|
+
Si quieres ir más allá, puedes instalar OPERA, la metodología opcional que añade discovery, contrato operativo, readiness y un equipo coordinado de especialistas.
|
|
37
|
+
|
|
38
|
+
### Cómo funciona
|
|
39
|
+
|
|
40
|
+
TrackOps trabaja en tres capas:
|
|
41
|
+
|
|
42
|
+
1. `skill global`
|
|
43
|
+
prepara al agente con instrucciones comunes
|
|
44
|
+
2. `runtime global`
|
|
45
|
+
instala la CLI real de forma explícita con npm
|
|
46
|
+
3. `activación local por repo`
|
|
47
|
+
crea el workspace operativo dentro del proyecto
|
|
48
|
+
|
|
49
|
+
La separación es deliberada:
|
|
50
|
+
|
|
51
|
+
- la skill sigue siendo auditable como capa de instrucciones
|
|
52
|
+
- la instalación del runtime queda visible y controlada por el usuario
|
|
53
|
+
- cada repositorio se activa de forma explícita, no por magia
|
|
54
|
+
|
|
55
|
+
### Instalación recomendada
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npx skills add Baxahaun/trackops --skill trackops --agent "*" --global -y
|
|
59
|
+
npm install -g trackops@latest
|
|
60
|
+
trackops --version
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Si el idioma global no queda fijado durante la instalación:
|
|
102
64
|
|
|
103
65
|
```bash
|
|
66
|
+
trackops locale set es
|
|
67
|
+
trackops locale set en
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Activar un proyecto
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
cd ruta/a/tu/proyecto
|
|
104
74
|
trackops init
|
|
105
75
|
```
|
|
106
76
|
|
|
107
|
-
`trackops init`
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
trackops opera install
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
6. Responde el intake inicial con estos valores:
|
|
116
|
-
|
|
117
|
-
- nivel tecnico:
|
|
118
|
-
`low|medium|high|senior`
|
|
119
|
-
tambien acepta `bajo|medio|alto`
|
|
120
|
-
- estado del proyecto:
|
|
121
|
-
`idea|draft|existing_repo|advanced`
|
|
122
|
-
- documentacion:
|
|
123
|
-
`none|notes|sos|spec_dossier|repo_docs`
|
|
124
|
-
- propiedad de decision:
|
|
125
|
-
`user|shared|agent`
|
|
126
|
-
tambien acepta `usuario|compartido|agente`
|
|
127
|
-
|
|
128
|
-
7. Si OPERA deriva al agente:
|
|
129
|
-
|
|
130
|
-
```bash
|
|
131
|
-
trackops opera handoff --print
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
Pega ese contexto en el agente, deja que genere:
|
|
135
|
-
|
|
136
|
-
- `ops/bootstrap/intake.json`
|
|
137
|
-
- `ops/bootstrap/spec-dossier.md`
|
|
138
|
-
- `ops/bootstrap/open-questions.md` si faltan decisiones
|
|
139
|
-
|
|
140
|
-
Y despues reanuda:
|
|
141
|
-
|
|
142
|
-
```bash
|
|
143
|
-
trackops opera bootstrap --resume
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
8. Si OPERA completa bootstrap directo, revisa estado y continua con:
|
|
77
|
+
`trackops init` activa el control local del repo. Funciona sobre proyectos nuevos, repos existentes y workspaces ya activados.
|
|
78
|
+
|
|
79
|
+
Si quieres el framework operativo completo:
|
|
147
80
|
|
|
148
81
|
```bash
|
|
149
|
-
trackops opera
|
|
82
|
+
trackops opera install
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Qué añade OPERA
|
|
86
|
+
|
|
87
|
+
OPERA no es obligatoria. Se instala cuando quieres que el proyecto siga un protocolo operativo más estricto.
|
|
88
|
+
|
|
89
|
+
Con OPERA obtienes:
|
|
90
|
+
|
|
91
|
+
- bootstrap guiado según el nivel técnico del usuario y el estado del proyecto
|
|
92
|
+
- handoff al agente cuando todavía no hay especificación suficiente
|
|
93
|
+
- contrato operativo compilado
|
|
94
|
+
- fases O.P.E.R.A. para discovery, validación, construcción, refinado y automatización
|
|
95
|
+
- equipo de agentes especializados coordinados por `opera-skill`
|
|
96
|
+
|
|
97
|
+
### Flujo completo
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
npx skills add Baxahaun/trackops --skill trackops --agent "*" --global -y
|
|
101
|
+
npm install -g trackops@latest
|
|
102
|
+
trackops --version
|
|
103
|
+
cd ruta/a/tu/proyecto
|
|
104
|
+
trackops init
|
|
105
|
+
trackops opera install
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Si OPERA deriva el arranque al agente:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
trackops opera handoff --print
|
|
112
|
+
trackops opera bootstrap --resume
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Si el proyecto ya está suficientemente definido, OPERA entra por bootstrap directo y continúa sin handoff.
|
|
116
|
+
|
|
117
|
+
### Lo que TrackOps gestiona
|
|
118
|
+
|
|
119
|
+
En un workspace split, la estructura base queda así:
|
|
120
|
+
|
|
121
|
+
```text
|
|
122
|
+
.trackops-workspace.json
|
|
123
|
+
.env
|
|
124
|
+
.env.example
|
|
125
|
+
app/
|
|
126
|
+
ops/project_control.json
|
|
127
|
+
ops/task_plan.md
|
|
128
|
+
ops/progress.md
|
|
129
|
+
ops/findings.md
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Con OPERA instalado se añaden, entre otros:
|
|
133
|
+
|
|
134
|
+
```text
|
|
135
|
+
ops/bootstrap/
|
|
136
|
+
ops/contract/operating-contract.json
|
|
137
|
+
ops/genesis.md
|
|
138
|
+
ops/policy/autonomy.json
|
|
139
|
+
ops/.agents/skills/
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
La fuente de verdad operativa vive en `ops/project_control.json`.
|
|
143
|
+
|
|
144
|
+
### Trabajo diario
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
trackops status
|
|
150
148
|
trackops next
|
|
149
|
+
trackops task start <id>
|
|
151
150
|
trackops sync
|
|
151
|
+
trackops dashboard
|
|
152
|
+
trackops quality status
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Para release:
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
trackops quality verify --scope all
|
|
159
|
+
trackops quality release-readiness --json
|
|
160
|
+
npm run release:check
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
`trackops release` publica solo `app/`. Nunca publica `ops/`, `/.env` ni `.trackops-workspace.json`.
|
|
164
|
+
|
|
165
|
+
### Documentación
|
|
166
|
+
|
|
167
|
+
- guía completa: [`UserGUIDE.md`](./UserGUIDE.md)
|
|
168
|
+
- web pública: https://baxahaun.github.io/trackops/
|
|
169
|
+
- paquete npm: https://www.npmjs.com/package/trackops
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## English
|
|
174
|
+
|
|
175
|
+
### What TrackOps is
|
|
176
|
+
|
|
177
|
+
TrackOps is a local control layer for working with AI agents without losing control of the project.
|
|
178
|
+
|
|
179
|
+
It does not replace your product. It organizes the work around the product:
|
|
180
|
+
|
|
181
|
+
- defines an operational source of truth inside the repository
|
|
182
|
+
- keeps product and operations separate
|
|
183
|
+
- gives agents persistent context across sessions
|
|
184
|
+
- exposes status, tasks, quality, and release state through CLI and dashboard
|
|
185
|
+
|
|
186
|
+
If you need a stricter operating model, you can install OPERA, the optional methodology that adds discovery, an operating contract, readiness checks, and a coordinated team of specialists.
|
|
187
|
+
|
|
188
|
+
### How it works
|
|
189
|
+
|
|
190
|
+
TrackOps works in three layers:
|
|
191
|
+
|
|
192
|
+
1. `global skill`
|
|
193
|
+
prepares the agent with shared instructions
|
|
194
|
+
2. `global runtime`
|
|
195
|
+
installs the actual CLI explicitly with npm
|
|
196
|
+
3. `local per-repo activation`
|
|
197
|
+
creates the operational workspace inside the project
|
|
198
|
+
|
|
199
|
+
That split is intentional:
|
|
200
|
+
|
|
201
|
+
- the skill remains auditable as an instruction layer
|
|
202
|
+
- runtime installation stays visible and user-controlled
|
|
203
|
+
- each repository is activated explicitly
|
|
204
|
+
|
|
205
|
+
### Recommended install
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
npx skills add Baxahaun/trackops --skill trackops --agent "*" --global -y
|
|
209
|
+
npm install -g trackops@latest
|
|
210
|
+
trackops --version
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
If the global language was not set during install:
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
trackops locale set es
|
|
217
|
+
trackops locale set en
|
|
152
218
|
```
|
|
153
219
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
### Desinstalacion global y local
|
|
157
|
-
|
|
158
|
-
#### Quitar la instalacion global
|
|
159
|
-
|
|
160
|
-
Quita la skill global del agente:
|
|
161
|
-
|
|
162
|
-
```bash
|
|
163
|
-
npx skills remove --global trackops -y
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
Quita el runtime global:
|
|
167
|
-
|
|
168
|
-
```bash
|
|
169
|
-
npm uninstall -g trackops
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
Verifica:
|
|
173
|
-
|
|
174
|
-
```bash
|
|
175
|
-
npx skills ls -g
|
|
176
|
-
trackops --version
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
#### Quitar TrackOps de un proyecto
|
|
180
|
-
|
|
181
|
-
Hoy no existe un comando `trackops uninstall` para el repo. La retirada local es manual.
|
|
182
|
-
|
|
183
|
-
En un workspace split, revisa y elimina solo lo que de verdad quieras retirar:
|
|
184
|
-
|
|
185
|
-
- `.trackops-workspace.json`
|
|
186
|
-
- `ops/`
|
|
187
|
-
- `app/.env` si era solo bridge
|
|
188
|
-
|
|
189
|
-
Revisa con cuidado antes de borrar:
|
|
190
|
-
|
|
191
|
-
- `/.env`
|
|
192
|
-
- `/.env.example`
|
|
193
|
-
|
|
194
|
-
Esos archivos pueden seguir siendo utiles para tu proyecto aunque dejes de usar TrackOps.
|
|
195
|
-
|
|
196
|
-
### Activacion local
|
|
197
|
-
|
|
198
|
-
Dentro de un repo:
|
|
199
|
-
|
|
200
|
-
```bash
|
|
201
|
-
trackops init
|
|
202
|
-
trackops opera install
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
Semantica:
|
|
206
|
-
|
|
207
|
-
- `trackops init`
|
|
208
|
-
activa o actualiza TrackOps en el repo, adopta repos existentes y puede reejecutarse con seguridad
|
|
209
|
-
- `trackops opera install`
|
|
210
|
-
anade OPERA cuando quieres el framework operativo completo
|
|
211
|
-
- `trackops init --with-opera`
|
|
212
|
-
existe como atajo
|
|
213
|
-
- `trackops init --legacy-layout`
|
|
214
|
-
existe solo por compatibilidad
|
|
215
|
-
|
|
216
|
-
`trackops workspace migrate` se mantiene solo para proyectos TrackOps legacy.
|
|
217
|
-
|
|
218
|
-
### Workspace split
|
|
219
|
-
|
|
220
|
-
Por defecto, TrackOps separa producto y operacion:
|
|
221
|
-
|
|
222
|
-
```text
|
|
223
|
-
mi-proyecto/
|
|
224
|
-
|- .trackops-workspace.json
|
|
225
|
-
|- .env
|
|
226
|
-
|- .env.example
|
|
227
|
-
|- app/
|
|
228
|
-
| \- ...producto real...
|
|
229
|
-
\- ops/
|
|
230
|
-
|- project_control.json
|
|
231
|
-
|- contract/
|
|
232
|
-
| \- operating-contract.json
|
|
233
|
-
|- policy/
|
|
234
|
-
| \- autonomy.json
|
|
235
|
-
|- task_plan.md
|
|
236
|
-
|- progress.md
|
|
237
|
-
|- findings.md
|
|
238
|
-
|- genesis.md
|
|
239
|
-
|- bootstrap/
|
|
240
|
-
|- .agent/
|
|
241
|
-
|- .agents/
|
|
242
|
-
|- .githooks/
|
|
243
|
-
\- .tmp/
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
Fuente de verdad operativa:
|
|
247
|
-
|
|
248
|
-
- layout split: `ops/project_control.json`
|
|
249
|
-
- layout legacy: `project_control.json`
|
|
250
|
-
|
|
251
|
-
### Dos formas de arrancar OPERA
|
|
252
|
-
|
|
253
|
-
#### Tengo una idea
|
|
254
|
-
|
|
255
|
-
Si el usuario no es tecnico, el proyecto esta en fase idea, o no hay documentacion suficiente, OPERA no sigue con preguntas de arquitectura en terminal. En su lugar:
|
|
256
|
-
|
|
257
|
-
1. pregunta nivel tecnico, estado del proyecto y documentacion disponible
|
|
258
|
-
2. genera un handoff en `ops/bootstrap/agent-handoff.md`
|
|
259
|
-
3. espera a que el agente produzca:
|
|
260
|
-
- `ops/bootstrap/intake.json`
|
|
261
|
-
- `ops/bootstrap/spec-dossier.md`
|
|
262
|
-
- `ops/bootstrap/open-questions.md` si quedan huecos importantes
|
|
263
|
-
4. reanudas con:
|
|
264
|
-
|
|
265
|
-
```bash
|
|
266
|
-
trackops opera bootstrap --resume
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
La terminal tambien debe decirte este siguiente paso al terminar el handoff.
|
|
270
|
-
|
|
271
|
-
#### Ya tengo un repo
|
|
272
|
-
|
|
273
|
-
Si el usuario es tecnico y el proyecto ya tiene suficiente contexto, OPERA sigue por bootstrap directo. En ese modo crea o actualiza desde el primer paso:
|
|
274
|
-
|
|
275
|
-
- `ops/bootstrap/intake.json`
|
|
276
|
-
- `ops/bootstrap/spec-dossier.md`
|
|
277
|
-
- `ops/bootstrap/open-questions.md`
|
|
278
|
-
- `ops/bootstrap/quality-report.json`
|
|
279
|
-
|
|
280
|
-
Despues solo compila `ops/contract/operating-contract.json` y recompila `ops/genesis.md` cuando el bootstrap ya es consistente.
|
|
281
|
-
|
|
282
|
-
Tambien puedes forzar el modo:
|
|
283
|
-
|
|
284
|
-
```bash
|
|
285
|
-
trackops opera install --bootstrap-mode handoff
|
|
286
|
-
trackops opera install --bootstrap-mode direct
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
Flags disponibles:
|
|
290
|
-
|
|
291
|
-
- `--technical-level low|medium|high|senior`
|
|
292
|
-
- `--project-state idea|draft|existing_repo|advanced`
|
|
293
|
-
- `--docs-state none|notes|sos|spec_dossier|repo_docs`
|
|
294
|
-
- `--decision-ownership user|shared|agent`
|
|
295
|
-
|
|
296
|
-
En modo directo, `trackops opera handoff` no inventa un handoff de agente: muestra un resumen guiado de esos archivos y te dice exactamente que completar antes de reanudar.
|
|
297
|
-
|
|
298
|
-
### Entorno y secretos
|
|
299
|
-
|
|
300
|
-
TrackOps gestiona un contrato explicito de entorno:
|
|
301
|
-
|
|
302
|
-
- `/.env`
|
|
303
|
-
secretos reales del workspace
|
|
304
|
-
- `/.env.example`
|
|
305
|
-
contrato publico de variables
|
|
306
|
-
- `app/.env`
|
|
307
|
-
puente de compatibilidad
|
|
308
|
-
|
|
309
|
-
Comandos:
|
|
310
|
-
|
|
311
|
-
```bash
|
|
312
|
-
trackops env status
|
|
313
|
-
trackops env sync
|
|
314
|
-
```
|
|
315
|
-
|
|
316
|
-
TrackOps nunca imprime ni persiste valores sensibles en docs, dashboard o `project_control.json`.
|
|
317
|
-
|
|
318
|
-
### Idioma
|
|
319
|
-
|
|
320
|
-
TrackOps puede trabajar con:
|
|
321
|
-
|
|
322
|
-
- idioma global en `~/.trackops/runtime.json`
|
|
323
|
-
- idioma por proyecto en `ops/project_control.json`
|
|
324
|
-
|
|
325
|
-
Comandos:
|
|
326
|
-
|
|
327
|
-
```bash
|
|
328
|
-
trackops locale get
|
|
329
|
-
trackops locale set es
|
|
330
|
-
trackops doctor locale
|
|
331
|
-
```
|
|
332
|
-
|
|
333
|
-
### CLI principal
|
|
334
|
-
|
|
335
|
-
| Comando | Descripcion |
|
|
336
|
-
|---|---|
|
|
337
|
-
| `trackops init [--with-opera] [--locale es\|en] [--name "..."] [--no-bootstrap] [--legacy-layout]` | Inicializa o actualiza TrackOps; adopta repos existentes |
|
|
338
|
-
| `trackops status` | Muestra estado operativo |
|
|
339
|
-
| `trackops next` | Muestra la siguiente cola priorizada |
|
|
340
|
-
| `trackops sync` | Regenera docs operativos |
|
|
341
|
-
| `trackops workspace status` | Muestra layout y roots |
|
|
342
|
-
| `trackops workspace migrate` | Migra un proyecto TrackOps legacy |
|
|
343
|
-
| `trackops env status` | Audita claves presentes y faltantes |
|
|
344
|
-
| `trackops env sync` | Regenera `/.env`, `/.env.example` y el puente |
|
|
345
|
-
| `trackops locale get\|set [es\|en]` | Lee o fija el idioma global |
|
|
346
|
-
| `trackops doctor locale` | Explica el origen del idioma efectivo |
|
|
347
|
-
| `trackops release [--push]` | Publica la rama configurada desde `app/` |
|
|
348
|
-
| `trackops dashboard` | Lanza el dashboard local |
|
|
349
|
-
| `trackops opera install [--bootstrap-mode ...] [--technical-level ...] [--project-state ...] [--docs-state ...] [--decision-ownership ...]` | Instala OPERA y decide la ruta de bootstrap |
|
|
350
|
-
| `trackops opera bootstrap [--resume]` | Continua el bootstrap o ingiere el resultado del agente |
|
|
351
|
-
| `trackops opera handoff [--print\|--json]` | Muestra el handoff listo para copiar al agente |
|
|
352
|
-
| `trackops opera status` | Muestra estado de instalacion y bootstrap |
|
|
353
|
-
| `trackops opera configure` | Reconfigura idioma o fases |
|
|
354
|
-
| `trackops opera upgrade --stable [--reset]` | Reescribe artefactos gestionados a la version estable actual |
|
|
355
|
-
|
|
356
|
-
Todos los comandos aceptan `--plain` y `--a11y` para una salida mas lineal y accesible.
|
|
357
|
-
|
|
358
|
-
### Skills del proyecto
|
|
359
|
-
|
|
360
|
-
Hay tres niveles de skills en TrackOps:
|
|
361
|
-
|
|
362
|
-
1. **Skill global** (`trackops`): se instala una vez en el agente. Explica qué es TrackOps y guía la activación de cada repositorio.
|
|
363
|
-
2. **Coordinadora** (`opera-skill`): se instala automáticamente con OPERA. Decide qué hacer, en qué orden, cuándo delegar y cuándo frenar.
|
|
364
|
-
3. **Especialistas**: se instalan con OPERA o manualmente. Cada una cubre un rol concreto.
|
|
365
|
-
|
|
366
|
-
Skills de proyecto instaladas automáticamente con OPERA:
|
|
367
|
-
|
|
368
|
-
- `opera-skill` — coordinadora operativa
|
|
369
|
-
- `project-starter-skill` — descubrimiento y estructuración
|
|
370
|
-
- `opera-contract-auditor` — auditoría del contrato
|
|
371
|
-
- `opera-policy-guard` — control de riesgo
|
|
372
|
-
|
|
373
|
-
Skills adicionales disponibles:
|
|
374
|
-
|
|
375
|
-
- `commiter` — formato de commits
|
|
376
|
-
- `changelog-updater` — registro de cambios
|
|
377
|
-
|
|
378
|
-
Gestión:
|
|
379
|
-
|
|
380
|
-
```bash
|
|
381
|
-
trackops skill list
|
|
382
|
-
trackops skill catalog
|
|
383
|
-
trackops skill install <nombre>
|
|
384
|
-
trackops skill remove <nombre>
|
|
385
|
-
```
|
|
386
|
-
|
|
387
|
-
### Publicacion
|
|
388
|
-
|
|
389
|
-
Antes de publicar:
|
|
390
|
-
|
|
391
|
-
```bash
|
|
392
|
-
trackops workspace status
|
|
393
|
-
trackops env status
|
|
394
|
-
npm run skill:validate
|
|
395
|
-
npm run skill:smoke
|
|
396
|
-
npm run release:check
|
|
397
|
-
```
|
|
398
|
-
|
|
399
|
-
`trackops release` publica solo `app/`, incluye `.env.example` y no publica `/.env`, `ops/` ni `.trackops-workspace.json`.
|
|
400
|
-
|
|
401
|
-
Guia ampliada: [UserGUIDE.md](./UserGUIDE.md)
|
|
402
|
-
|
|
403
|
-
---
|
|
404
|
-
|
|
405
|
-
## English
|
|
406
|
-
|
|
407
|
-
TrackOps is a local control and coordination system for AI-agent software development. It puts structure where there was improvisation.
|
|
408
|
-
|
|
409
|
-
What it does:
|
|
410
|
-
|
|
411
|
-
1. prepares the agent with clear instructions (global skill)
|
|
412
|
-
2. activates operational control inside each repository
|
|
413
|
-
3. translates ideas into executable projects, even for non-technical users
|
|
414
|
-
4. coordinates a team of specialized agents inside each project (project skills)
|
|
415
|
-
|
|
416
|
-
### How it works
|
|
417
|
-
|
|
418
|
-
TrackOps works in three layers:
|
|
419
|
-
|
|
420
|
-
1. `agent instructions`
|
|
421
|
-
the global skill is installed once
|
|
422
|
-
2. `local control`
|
|
423
|
-
the runtime and activation run inside each repository
|
|
424
|
-
3. `project team`
|
|
425
|
-
when you install OPERA, specialized agents are activated and work in coordination
|
|
426
|
-
|
|
427
|
-
Local activation has two paths:
|
|
428
|
-
|
|
429
|
-
- `agent-led start`
|
|
430
|
-
for early ideas, non-technical users, or weak documentation
|
|
431
|
-
- `direct bootstrap`
|
|
432
|
-
for already defined projects and technical users
|
|
433
|
-
|
|
434
|
-
### Global install
|
|
435
|
-
|
|
436
|
-
Install the global skill:
|
|
437
|
-
|
|
438
|
-
```bash
|
|
439
|
-
npx skills add Baxahaun/trackops
|
|
440
|
-
```
|
|
441
|
-
|
|
442
|
-
Install the runtime explicitly:
|
|
443
|
-
|
|
444
|
-
```bash
|
|
445
|
-
npm install -g trackops
|
|
446
|
-
trackops --version
|
|
447
|
-
```
|
|
448
|
-
|
|
449
|
-
This split is intentional:
|
|
450
|
-
|
|
451
|
-
- the skill is audited as an instruction layer
|
|
452
|
-
- the runtime is installed through a visible and verifiable step
|
|
453
|
-
- there is no hidden transitive install from the skill itself
|
|
454
|
-
|
|
455
|
-
If `npm install -g trackops` runs interactively, TrackOps tries to ask for the global language at that moment. If your terminal or npm do not show that prompt, set it manually afterwards:
|
|
456
|
-
|
|
457
|
-
```bash
|
|
458
|
-
trackops locale set es
|
|
459
|
-
trackops locale set en
|
|
460
|
-
```
|
|
461
|
-
|
|
462
|
-
### Recommended full flow
|
|
463
|
-
|
|
464
|
-
1. Install the global skill:
|
|
465
|
-
|
|
466
|
-
```bash
|
|
467
|
-
npx skills add Baxahaun/trackops --skill trackops --agent "*" --global -y
|
|
468
|
-
```
|
|
469
|
-
|
|
470
|
-
2. Install the runtime:
|
|
471
|
-
|
|
472
|
-
```bash
|
|
473
|
-
npm install -g trackops@latest
|
|
474
|
-
trackops --version
|
|
475
|
-
```
|
|
476
|
-
|
|
477
|
-
3. Enter the repository you want to manage:
|
|
478
|
-
|
|
479
|
-
```bash
|
|
480
|
-
cd path/to/your/project
|
|
481
|
-
```
|
|
482
|
-
|
|
483
|
-
4. Activate TrackOps and choose the project language when the CLI asks:
|
|
220
|
+
### Activate a project
|
|
484
221
|
|
|
485
222
|
```bash
|
|
223
|
+
cd path/to/your/project
|
|
486
224
|
trackops init
|
|
487
225
|
```
|
|
488
226
|
|
|
489
|
-
`trackops init` works on
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
```bash
|
|
494
|
-
trackops opera install
|
|
495
|
-
```
|
|
496
|
-
|
|
497
|
-
6. Answer the initial intake with these values:
|
|
498
|
-
|
|
499
|
-
- technical level:
|
|
500
|
-
`low|medium|high|senior`
|
|
501
|
-
- project state:
|
|
502
|
-
`idea|draft|existing_repo|advanced`
|
|
503
|
-
- documentation:
|
|
504
|
-
`none|notes|sos|spec_dossier|repo_docs`
|
|
505
|
-
- decision ownership:
|
|
506
|
-
`user|shared|agent`
|
|
507
|
-
|
|
508
|
-
7. If OPERA routes to the agent:
|
|
509
|
-
|
|
510
|
-
```bash
|
|
511
|
-
trackops opera handoff --print
|
|
512
|
-
```
|
|
513
|
-
|
|
514
|
-
Paste that context into the agent and let it generate:
|
|
515
|
-
|
|
516
|
-
- `ops/bootstrap/intake.json`
|
|
517
|
-
- `ops/bootstrap/spec-dossier.md`
|
|
518
|
-
- `ops/bootstrap/open-questions.md` when decisions are still missing
|
|
519
|
-
|
|
520
|
-
Then resume with:
|
|
521
|
-
|
|
522
|
-
```bash
|
|
523
|
-
trackops opera bootstrap --resume
|
|
524
|
-
```
|
|
525
|
-
|
|
526
|
-
8. If OPERA completes direct bootstrap, review status and continue with:
|
|
227
|
+
`trackops init` activates local control in the repository. It works on new projects, existing repositories, and already initialized workspaces.
|
|
228
|
+
|
|
229
|
+
If you want the full operating framework:
|
|
527
230
|
|
|
528
231
|
```bash
|
|
529
|
-
trackops opera
|
|
232
|
+
trackops opera install
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### What OPERA adds
|
|
236
|
+
|
|
237
|
+
OPERA is optional. Install it when you want the project to follow a stricter operating protocol.
|
|
238
|
+
|
|
239
|
+
With OPERA you get:
|
|
240
|
+
|
|
241
|
+
- guided bootstrap based on user profile and project state
|
|
242
|
+
- agent handoff when the project is still underdefined
|
|
243
|
+
- compiled operating contract
|
|
244
|
+
- O.P.E.R.A. phases for discovery, validation, build, refinement, and automation
|
|
245
|
+
- a team of specialized agents coordinated by `opera-skill`
|
|
246
|
+
|
|
247
|
+
### Full flow
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
npx skills add Baxahaun/trackops --skill trackops --agent "*" --global -y
|
|
251
|
+
npm install -g trackops@latest
|
|
252
|
+
trackops --version
|
|
253
|
+
cd path/to/your/project
|
|
254
|
+
trackops init
|
|
255
|
+
trackops opera install
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
If OPERA routes discovery to the agent:
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
trackops opera handoff --print
|
|
262
|
+
trackops opera bootstrap --resume
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
If the project is already defined enough, OPERA continues through direct bootstrap with no handoff.
|
|
266
|
+
|
|
267
|
+
### What TrackOps manages
|
|
268
|
+
|
|
269
|
+
In a split workspace, the base structure looks like this:
|
|
270
|
+
|
|
271
|
+
```text
|
|
272
|
+
.trackops-workspace.json
|
|
273
|
+
.env
|
|
274
|
+
.env.example
|
|
275
|
+
app/
|
|
276
|
+
ops/project_control.json
|
|
277
|
+
ops/task_plan.md
|
|
278
|
+
ops/progress.md
|
|
279
|
+
ops/findings.md
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
With OPERA installed, TrackOps also adds items such as:
|
|
283
|
+
|
|
284
|
+
```text
|
|
285
|
+
ops/bootstrap/
|
|
286
|
+
ops/contract/operating-contract.json
|
|
287
|
+
ops/genesis.md
|
|
288
|
+
ops/policy/autonomy.json
|
|
289
|
+
ops/.agents/skills/
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
The operational source of truth lives in `ops/project_control.json`.
|
|
293
|
+
|
|
294
|
+
### Day-to-day work
|
|
295
|
+
|
|
296
|
+
```bash
|
|
297
|
+
trackops status
|
|
530
298
|
trackops next
|
|
299
|
+
trackops task start <id>
|
|
531
300
|
trackops sync
|
|
301
|
+
trackops dashboard
|
|
302
|
+
trackops quality status
|
|
532
303
|
```
|
|
533
304
|
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
```bash
|
|
541
|
-
trackops init
|
|
542
|
-
trackops opera install
|
|
543
|
-
```
|
|
544
|
-
|
|
545
|
-
### Split workspace
|
|
546
|
-
|
|
547
|
-
TrackOps separates product and operations by default:
|
|
548
|
-
|
|
549
|
-
```text
|
|
550
|
-
my-project/
|
|
551
|
-
|- .trackops-workspace.json
|
|
552
|
-
|- .env
|
|
553
|
-
|- .env.example
|
|
554
|
-
|- app/
|
|
555
|
-
\- ops/
|
|
556
|
-
|- project_control.json
|
|
557
|
-
|- contract/
|
|
558
|
-
| \- operating-contract.json
|
|
559
|
-
|- policy/
|
|
560
|
-
| \- autonomy.json
|
|
561
|
-
|- task_plan.md
|
|
562
|
-
|- progress.md
|
|
563
|
-
|- findings.md
|
|
564
|
-
|- genesis.md
|
|
565
|
-
|- bootstrap/
|
|
566
|
-
|- .agent/
|
|
567
|
-
|- .agents/
|
|
568
|
-
|- .githooks/
|
|
569
|
-
\- .tmp/
|
|
570
|
-
```
|
|
571
|
-
|
|
572
|
-
Operational source of truth:
|
|
573
|
-
|
|
574
|
-
- split layout: `ops/project_control.json`
|
|
575
|
-
- legacy layout: `project_control.json`
|
|
576
|
-
|
|
577
|
-
### Two ways to start OPERA
|
|
578
|
-
|
|
579
|
-
#### I only have an idea
|
|
580
|
-
|
|
581
|
-
If the user is not technical, the project is still in idea stage, or documentation is weak, OPERA does not keep asking architecture questions in the terminal. Instead it:
|
|
582
|
-
|
|
583
|
-
1. asks for technical level, project state, and available documentation
|
|
584
|
-
2. writes a handoff in `ops/bootstrap/agent-handoff.md`
|
|
585
|
-
3. waits for the agent to produce:
|
|
586
|
-
- `ops/bootstrap/intake.json`
|
|
587
|
-
- `ops/bootstrap/spec-dossier.md`
|
|
588
|
-
- `ops/bootstrap/open-questions.md` when important gaps remain
|
|
589
|
-
4. resumes with:
|
|
590
|
-
|
|
591
|
-
```bash
|
|
592
|
-
trackops opera bootstrap --resume
|
|
593
|
-
```
|
|
594
|
-
|
|
595
|
-
#### I already have a repository
|
|
596
|
-
|
|
597
|
-
If the user is technical and the project already has enough context, OPERA continues with direct bootstrap. In that mode it creates or updates these files from the start:
|
|
598
|
-
|
|
599
|
-
- `ops/bootstrap/intake.json`
|
|
600
|
-
- `ops/bootstrap/spec-dossier.md`
|
|
601
|
-
- `ops/bootstrap/open-questions.md`
|
|
602
|
-
- `ops/bootstrap/quality-report.json`
|
|
603
|
-
|
|
604
|
-
It only compiles `ops/contract/operating-contract.json` and recompiles `ops/genesis.md` once bootstrap becomes consistent.
|
|
605
|
-
|
|
606
|
-
You can also force the mode:
|
|
607
|
-
|
|
608
|
-
```bash
|
|
609
|
-
trackops opera install --bootstrap-mode handoff
|
|
610
|
-
trackops opera install --bootstrap-mode direct
|
|
305
|
+
For release:
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
trackops quality verify --scope all
|
|
309
|
+
trackops quality release-readiness --json
|
|
310
|
+
npm run release:check
|
|
611
311
|
```
|
|
612
312
|
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
###
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
```bash
|
|
622
|
-
npx skills remove --global trackops -y
|
|
623
|
-
```
|
|
624
|
-
|
|
625
|
-
Remove the global runtime:
|
|
626
|
-
|
|
627
|
-
```bash
|
|
628
|
-
npm uninstall -g trackops
|
|
629
|
-
```
|
|
630
|
-
|
|
631
|
-
Verify:
|
|
632
|
-
|
|
633
|
-
```bash
|
|
634
|
-
npx skills ls -g
|
|
635
|
-
trackops --version
|
|
636
|
-
```
|
|
637
|
-
|
|
638
|
-
#### Remove TrackOps from a project
|
|
639
|
-
|
|
640
|
-
There is no `trackops uninstall` command for the repository yet. Local removal is manual.
|
|
641
|
-
|
|
642
|
-
In a split workspace, review and remove only what you really want to retire:
|
|
643
|
-
|
|
644
|
-
- `.trackops-workspace.json`
|
|
645
|
-
- `ops/`
|
|
646
|
-
- `app/.env` if it was only the compatibility bridge
|
|
647
|
-
|
|
648
|
-
Review carefully before deleting:
|
|
649
|
-
|
|
650
|
-
- `/.env`
|
|
651
|
-
- `/.env.example`
|
|
652
|
-
|
|
653
|
-
Those files may still be useful to the project even if you stop using TrackOps.
|
|
654
|
-
|
|
655
|
-
### Environment and secrets
|
|
656
|
-
|
|
657
|
-
TrackOps manages:
|
|
658
|
-
|
|
659
|
-
- `/.env`
|
|
660
|
-
real workspace secrets
|
|
661
|
-
- `/.env.example`
|
|
662
|
-
public variable contract
|
|
663
|
-
- `app/.env`
|
|
664
|
-
compatibility bridge
|
|
665
|
-
|
|
666
|
-
Use:
|
|
667
|
-
|
|
668
|
-
```bash
|
|
669
|
-
trackops env status
|
|
670
|
-
trackops env sync
|
|
671
|
-
```
|
|
672
|
-
|
|
673
|
-
### Language
|
|
674
|
-
|
|
675
|
-
TrackOps can work with:
|
|
676
|
-
|
|
677
|
-
- a global language in `~/.trackops/runtime.json`
|
|
678
|
-
- a per-project language in `ops/project_control.json`
|
|
679
|
-
|
|
680
|
-
Commands:
|
|
681
|
-
|
|
682
|
-
```bash
|
|
683
|
-
trackops locale get
|
|
684
|
-
trackops locale set en
|
|
685
|
-
trackops doctor locale
|
|
686
|
-
```
|
|
687
|
-
|
|
688
|
-
### Project skills
|
|
689
|
-
|
|
690
|
-
There are three skill levels in TrackOps:
|
|
691
|
-
|
|
692
|
-
1. **Global skill** (`trackops`): installed once in the agent. Explains what TrackOps is and guides repository activation.
|
|
693
|
-
2. **Coordinator** (`opera-skill`): installed automatically with OPERA. Decides what to do, in what order, when to delegate, and when to stop.
|
|
694
|
-
3. **Specialists**: installed with OPERA or manually. Each one covers a specific role.
|
|
695
|
-
|
|
696
|
-
Project skills installed automatically with OPERA:
|
|
697
|
-
|
|
698
|
-
- `opera-skill` — operational coordinator
|
|
699
|
-
- `project-starter-skill` — discovery and structuring
|
|
700
|
-
- `opera-contract-auditor` — contract audit
|
|
701
|
-
- `opera-policy-guard` — risk control
|
|
702
|
-
|
|
703
|
-
Additional skills available:
|
|
704
|
-
|
|
705
|
-
- `commiter` — commit formatting
|
|
706
|
-
- `changelog-updater` — changelog updates
|
|
707
|
-
|
|
708
|
-
Management:
|
|
709
|
-
|
|
710
|
-
```bash
|
|
711
|
-
trackops skill list
|
|
712
|
-
trackops skill catalog
|
|
713
|
-
trackops skill install <name>
|
|
714
|
-
trackops skill remove <name>
|
|
715
|
-
```
|
|
716
|
-
|
|
717
|
-
### Main CLI
|
|
718
|
-
|
|
719
|
-
Core and OPERA commands follow the same contract as the Spanish section above, including `trackops opera handoff`, `trackops opera bootstrap --resume`, the explicit `npm install -g trackops` runtime step, and the global `--plain` / `--a11y` flags.
|
|
720
|
-
|
|
721
|
-
### Publishing
|
|
722
|
-
|
|
723
|
-
`trackops release` publishes only `app/`, includes `.env.example`, and never publishes `/.env`, `ops/`, or `.trackops-workspace.json`.
|
|
724
|
-
|
|
725
|
-
Extended guide: [UserGUIDE.md](./UserGUIDE.md)
|
|
313
|
+
`trackops release` publishes only `app/`. It never publishes `ops/`, `/.env`, or `.trackops-workspace.json`.
|
|
314
|
+
|
|
315
|
+
### Documentation
|
|
316
|
+
|
|
317
|
+
- full guide: [`UserGUIDE.md`](./UserGUIDE.md)
|
|
318
|
+
- public site: https://baxahaun.github.io/trackops/
|
|
319
|
+
- npm package: https://www.npmjs.com/package/trackops
|