trackops 1.0.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/README.md +292 -272
  2. package/bin/trackops.js +108 -50
  3. package/lib/config.js +267 -38
  4. package/lib/control.js +534 -480
  5. package/lib/env.js +244 -0
  6. package/lib/i18n.js +61 -53
  7. package/lib/init.js +170 -47
  8. package/lib/locale.js +63 -0
  9. package/lib/opera-bootstrap.js +1075 -0
  10. package/lib/opera.js +524 -125
  11. package/lib/preferences.js +74 -0
  12. package/lib/registry.js +27 -13
  13. package/lib/release.js +56 -0
  14. package/lib/resources.js +42 -0
  15. package/lib/runtime-state.js +144 -0
  16. package/lib/server.js +1004 -521
  17. package/lib/skills.js +148 -124
  18. package/lib/workspace.js +260 -0
  19. package/locales/en.json +418 -132
  20. package/locales/es.json +418 -132
  21. package/package.json +8 -9
  22. package/scripts/postinstall-locale.js +21 -0
  23. package/scripts/skills-marketplace-smoke.js +124 -0
  24. package/scripts/smoke-tests.js +570 -0
  25. package/scripts/sync-skill-version.js +21 -0
  26. package/scripts/validate-skill.js +89 -0
  27. package/skills/trackops/SKILL.md +89 -0
  28. package/skills/trackops/agents/openai.yaml +3 -0
  29. package/skills/trackops/references/activation.md +73 -0
  30. package/skills/trackops/references/troubleshooting.md +49 -0
  31. package/skills/trackops/references/workflow.md +26 -0
  32. package/skills/trackops/scripts/bootstrap-trackops.js +203 -0
  33. package/skills/trackops/skill.json +29 -0
  34. package/templates/opera/agent.md +10 -9
  35. package/templates/opera/architecture/dependency-graph.md +24 -0
  36. package/templates/opera/architecture/runtime-automation.md +24 -0
  37. package/templates/opera/architecture/runtime-operations.md +34 -0
  38. package/templates/opera/en/agent.md +27 -0
  39. package/templates/opera/en/architecture/dependency-graph.md +24 -0
  40. package/templates/opera/en/architecture/runtime-automation.md +24 -0
  41. package/templates/opera/en/architecture/runtime-operations.md +34 -0
  42. package/templates/opera/en/genesis.md +79 -0
  43. package/templates/opera/en/references/autonomy-and-recovery.md +23 -0
  44. package/templates/opera/en/references/opera-cycle.md +62 -0
  45. package/templates/opera/en/registry.md +28 -0
  46. package/templates/opera/en/reviews/delivery-audit.md +18 -0
  47. package/templates/opera/en/reviews/integration-audit.md +18 -0
  48. package/templates/opera/en/router.md +49 -0
  49. package/templates/opera/genesis.md +79 -94
  50. package/templates/opera/reviews/delivery-audit.md +18 -0
  51. package/templates/opera/reviews/integration-audit.md +18 -0
  52. package/templates/opera/router.md +15 -5
  53. package/templates/skills/changelog-updater/locales/en/SKILL.md +11 -0
  54. package/templates/skills/commiter/locales/en/SKILL.md +11 -0
  55. package/templates/skills/opera-contract-auditor/SKILL.md +38 -0
  56. package/templates/skills/opera-contract-auditor/locales/en/SKILL.md +38 -0
  57. package/templates/skills/opera-policy-guard/SKILL.md +26 -0
  58. package/templates/skills/opera-policy-guard/locales/en/SKILL.md +26 -0
  59. package/templates/skills/project-starter-skill/SKILL.md +89 -164
  60. package/templates/skills/project-starter-skill/locales/en/SKILL.md +104 -0
  61. package/ui/css/panels.css +956 -953
  62. package/ui/index.html +1 -1
  63. package/ui/js/api.js +211 -194
  64. package/ui/js/app.js +200 -199
  65. package/ui/js/i18n.js +14 -0
  66. package/ui/js/onboarding.js +439 -437
  67. package/ui/js/state.js +130 -129
  68. package/ui/js/utils.js +175 -172
  69. package/ui/js/views/board.js +255 -254
  70. package/ui/js/views/execution.js +256 -256
  71. package/ui/js/views/insights.js +340 -339
  72. package/ui/js/views/overview.js +366 -361
  73. package/ui/js/views/settings.js +340 -202
  74. package/ui/js/views/sidebar.js +131 -132
  75. package/ui/js/views/skills.js +163 -162
  76. package/ui/js/views/tasks.js +406 -405
  77. package/ui/js/views/topbar.js +239 -183
  78. package/templates/etapa/agent.md +0 -26
  79. package/templates/etapa/genesis.md +0 -94
  80. package/templates/etapa/references/autonomy-and-recovery.md +0 -117
  81. package/templates/etapa/references/etapa-cycle.md +0 -193
  82. package/templates/etapa/registry.md +0 -28
  83. package/templates/etapa/router.md +0 -39
@@ -0,0 +1,89 @@
1
+ ---
2
+ name: "trackops"
3
+ description: "Global TrackOps skill that prepares your agent for local project orchestration and operational automation, ensures the runtime on first use, and guides per-project activation with optional OPERA."
4
+ metadata:
5
+ version: "2.0.0"
6
+ type: "global"
7
+ triggers:
8
+ - "install trackops"
9
+ - "skills.sh"
10
+ - "trackops init"
11
+ - "trackops opera install"
12
+ - "opera handoff"
13
+ ---
14
+
15
+ # TrackOps
16
+
17
+ Use this skill in two layers.
18
+
19
+ ## 1. Global skill layer
20
+
21
+ Install it with:
22
+
23
+ ```bash
24
+ npx skills add Baxahaun/trackops
25
+ ```
26
+
27
+ Before relying on the CLI, run:
28
+
29
+ ```bash
30
+ node scripts/bootstrap-trackops.js
31
+ ```
32
+
33
+ That bootstrap ensures the `trackops` runtime and records state in `~/.trackops/runtime.json`.
34
+
35
+ ## 2. Local project layer
36
+
37
+ Inside a repository:
38
+
39
+ ```bash
40
+ trackops init
41
+ trackops opera install
42
+ ```
43
+
44
+ Core rules:
45
+
46
+ - treat the global skill install as non-invasive
47
+ - use `ops/contract/operating-contract.json` as the machine contract when it exists
48
+ - use `ops/project_control.json` as the operational source of truth for backlog and state
49
+ - use `ops/policy/autonomy.json` before approval-sensitive actions
50
+ - use `/.env` and `/.env.example` as the environment contract
51
+ - keep generated operational docs under `ops/`
52
+ - support `trackops locale get|set` and `trackops doctor locale` when language matters
53
+
54
+ ## OPERA onboarding
55
+
56
+ OPERA no longer assumes every user is technical.
57
+
58
+ When OPERA starts, TrackOps classifies:
59
+
60
+ - user technical level
61
+ - current project state
62
+ - available documentation
63
+
64
+ Then it chooses one of two routes:
65
+
66
+ - `direct bootstrap`
67
+ for technical users and already-defined repositories
68
+ - `agent handoff`
69
+ for early ideas, non-technical users, or weak documentation
70
+
71
+ If TrackOps routes bootstrap to the agent:
72
+
73
+ - read `ops/bootstrap/agent-handoff.md`
74
+ - or print it with `trackops opera handoff --print`
75
+ - the agent must produce:
76
+ - `ops/bootstrap/intake.json`
77
+ - `ops/bootstrap/spec-dossier.md`
78
+ - `ops/bootstrap/open-questions.md` when important gaps remain
79
+ - then resume with:
80
+
81
+ ```bash
82
+ trackops opera bootstrap --resume
83
+ ```
84
+
85
+ Read references only when needed:
86
+
87
+ - `references/activation.md`
88
+ - `references/workflow.md`
89
+ - `references/troubleshooting.md`
@@ -0,0 +1,3 @@
1
+ interface:
2
+ display_name: "TrackOps"
3
+ short_description: "Global TrackOps skill for local project orchestration, bilingual onboarding, agent coordination, and operational automation"
@@ -0,0 +1,73 @@
1
+ # Activation
2
+
3
+ ## Global install
4
+
5
+ Install the marketplace skill:
6
+
7
+ ```bash
8
+ npx skills add Baxahaun/trackops
9
+ ```
10
+
11
+ On first use, ensure the runtime with:
12
+
13
+ ```bash
14
+ node scripts/bootstrap-trackops.js
15
+ ```
16
+
17
+ The global skill must not create repository files by itself.
18
+
19
+ ## Local activation
20
+
21
+ Inside a repository:
22
+
23
+ ```bash
24
+ trackops init
25
+ trackops opera install
26
+ ```
27
+
28
+ By default, `trackops init` creates a split workspace with:
29
+
30
+ - `app/`
31
+ - `ops/`
32
+ - `/.env`
33
+ - `/.env.example`
34
+ - `.trackops-workspace.json`
35
+
36
+ ## OPERA routing
37
+
38
+ OPERA always starts by classifying:
39
+
40
+ - technical level
41
+ - project state
42
+ - documentation state
43
+
44
+ If the project is still early or the user is non-technical, TrackOps writes:
45
+
46
+ - `ops/bootstrap/agent-handoff.md`
47
+ - `ops/bootstrap/agent-handoff.json`
48
+
49
+ The agent then produces:
50
+
51
+ - `ops/bootstrap/intake.json`
52
+ - `ops/bootstrap/spec-dossier.md`
53
+ - `ops/bootstrap/open-questions.md` when needed
54
+
55
+ When the quality gate passes, OPERA compiles:
56
+
57
+ - `ops/contract/operating-contract.json`
58
+ - `ops/genesis.md`
59
+ - `ops/policy/autonomy.json`
60
+
61
+ Resume with:
62
+
63
+ ```bash
64
+ trackops opera bootstrap --resume
65
+ ```
66
+
67
+ Locale controls:
68
+
69
+ ```bash
70
+ trackops locale get
71
+ trackops locale set en
72
+ trackops doctor locale
73
+ ```
@@ -0,0 +1,49 @@
1
+ # Troubleshooting
2
+
3
+ ## Missing prerequisites
4
+
5
+ - Install Node 18+ if Node is missing or too old.
6
+ - Install a Node distribution that includes npm if npm is missing.
7
+
8
+ ## Global install command failed
9
+
10
+ - Install from committed GitHub state:
11
+ `npx skills add Baxahaun/trackops`
12
+ - Then ensure the local runtime with:
13
+ `node scripts/bootstrap-trackops.js`
14
+ - If the install succeeded but the CLI still looks unavailable, confirm that `~/.trackops/runtime.json` exists.
15
+
16
+ ## Runtime bootstrap failed
17
+
18
+ - Re-run `node scripts/bootstrap-trackops.js`.
19
+ - If npm global permissions fail, configure a user-writable npm prefix instead of using `sudo`.
20
+
21
+ ## OPERA routed bootstrap to the agent
22
+
23
+ This is expected when:
24
+
25
+ - the user is non-technical
26
+ - the project is still in idea stage
27
+ - documentation is weak
28
+
29
+ Use:
30
+
31
+ ```bash
32
+ trackops opera handoff --print
33
+ trackops opera bootstrap --resume
34
+ ```
35
+
36
+ ## Resume does not complete
37
+
38
+ TrackOps will not invent missing context.
39
+
40
+ Check that both files exist and contain usable data:
41
+
42
+ - `ops/bootstrap/intake.json`
43
+ - `ops/bootstrap/spec-dossier.md`
44
+
45
+ ## Environment looks inconsistent
46
+
47
+ - Run `trackops env status`.
48
+ - Run `trackops env sync`.
49
+ - If bridge mode is `copy`, do not edit `app/.env` directly.
@@ -0,0 +1,26 @@
1
+ # Workflow
2
+
3
+ Once TrackOps is active in a repository:
4
+
5
+ 1. Run `trackops status`.
6
+ 2. Run `trackops next`.
7
+ 3. Move task state with `trackops task ...`.
8
+ 4. Run `trackops sync` after meaningful changes.
9
+ 5. Run `trackops env status` when credentials matter.
10
+
11
+ Operational rules:
12
+
13
+ - In split workspaces, use `ops/project_control.json` as the source of truth.
14
+ - Generated operational docs live in `ops/`.
15
+ - Product code lives in `app/`.
16
+ - Real secrets live in `/.env`.
17
+ - Public environment contract lives in `/.env.example`.
18
+ - `app/.env` is only a compatibility bridge.
19
+
20
+ If OPERA is installed:
21
+
22
+ - `ops/contract/operating-contract.json` holds the machine contract.
23
+ - `ops/genesis.md` holds the compiled human view.
24
+ - `ops/policy/autonomy.json` holds the executable autonomy policy.
25
+ - `ops/bootstrap/` holds onboarding artifacts.
26
+ - `ops/.agent/hub/` and `ops/.agents/skills/` hold managed agent artifacts.
@@ -0,0 +1,203 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require("fs");
4
+ const os = require("os");
5
+ const path = require("path");
6
+ const { spawnSync } = require("child_process");
7
+ const runtimeState = require("../../../lib/runtime-state");
8
+
9
+ const EXIT_CODES = {
10
+ READY: 0,
11
+ PREREQ: 1,
12
+ INSTALL: 2,
13
+ UNVERIFIABLE: 3,
14
+ };
15
+
16
+ function getNpmCommand() {
17
+ return process.platform === "win32" ? "npm.cmd" : "npm";
18
+ }
19
+
20
+ function readSkillConfig() {
21
+ const skillFile = path.join(__dirname, "..", "skill.json");
22
+ return JSON.parse(fs.readFileSync(skillFile, "utf8"));
23
+ }
24
+
25
+ function getHomeDir() {
26
+ return process.env.TRACKOPS_BOOTSTRAP_HOME || os.homedir();
27
+ }
28
+
29
+ function getPrefixOverride() {
30
+ return process.env.TRACKOPS_BOOTSTRAP_PREFIX || null;
31
+ }
32
+
33
+ function getInstallSource(config) {
34
+ return process.env.TRACKOPS_BOOTSTRAP_INSTALL_SOURCE || `${config.npmPackage}@${config.trackopsVersion}`;
35
+ }
36
+
37
+ function parseMajor(version) {
38
+ const major = Number(String(version || "").split(".")[0]);
39
+ return Number.isFinite(major) ? major : null;
40
+ }
41
+
42
+ function hasSupportedNode() {
43
+ const major = parseMajor(process.versions.node);
44
+ return major != null && major >= 18;
45
+ }
46
+
47
+ function spawnChecked(command, args, extra = {}) {
48
+ const shell = process.platform === "win32" && /\.(cmd|bat)$/i.test(command);
49
+ return spawnSync(command, args, {
50
+ encoding: "utf8",
51
+ stdio: ["ignore", "pipe", "pipe"],
52
+ shell,
53
+ ...extra,
54
+ });
55
+ }
56
+
57
+ function spawnNpm(args, extra = {}) {
58
+ return spawnSync(getNpmCommand(), args, {
59
+ encoding: "utf8",
60
+ stdio: ["ignore", "pipe", "pipe"],
61
+ shell: process.platform === "win32",
62
+ ...extra,
63
+ });
64
+ }
65
+
66
+ function resolvePrefixExecutables(prefix) {
67
+ if (!prefix) return [];
68
+ if (process.platform === "win32") {
69
+ return [
70
+ path.join(prefix, "trackops.cmd"),
71
+ path.join(prefix, "trackops.exe"),
72
+ path.join(prefix, "trackops"),
73
+ ];
74
+ }
75
+ return [path.join(prefix, "bin", "trackops")];
76
+ }
77
+
78
+ function buildVerificationTargets(prefix) {
79
+ const targets = [{ command: "trackops", via: "path" }];
80
+ for (const candidate of resolvePrefixExecutables(prefix)) {
81
+ targets.push({ command: candidate, via: "prefix" });
82
+ }
83
+ return targets;
84
+ }
85
+
86
+ function readInstalledVersion(prefix) {
87
+ for (const target of buildVerificationTargets(prefix)) {
88
+ const result = spawnChecked(target.command, ["--version"]);
89
+ if (result.error || result.status !== 0) continue;
90
+ const version = String(result.stdout || "").trim();
91
+ if (version) {
92
+ return { version, command: target.command, via: target.via };
93
+ }
94
+ }
95
+ return null;
96
+ }
97
+
98
+ function verifyRuntime(expectedVersion, prefix) {
99
+ const installed = readInstalledVersion(prefix);
100
+ if (!installed) {
101
+ return { ok: false, reason: "missing-command" };
102
+ }
103
+ if (installed.version !== expectedVersion) {
104
+ return { ok: false, reason: "version-drift", installed };
105
+ }
106
+
107
+ const help = spawnChecked(installed.command, ["help"]);
108
+ if (help.error || help.status !== 0) {
109
+ return { ok: false, reason: "help-failed", installed };
110
+ }
111
+
112
+ return { ok: true, installed };
113
+ }
114
+
115
+ function ensureNpmAvailable() {
116
+ const result = spawnNpm(["--version"]);
117
+ return !result.error && result.status === 0;
118
+ }
119
+
120
+ function runInstall(config, prefix) {
121
+ const installSource = getInstallSource(config);
122
+ const args = ["install", "-g"];
123
+ if (prefix) {
124
+ args.push("--prefix", prefix);
125
+ }
126
+ args.push(installSource);
127
+
128
+ const result = spawnNpm(args);
129
+ return { ...result, installSource };
130
+ }
131
+
132
+ function writeRuntimeStamp(config, verification) {
133
+ const previous = runtimeState.readRuntimeState();
134
+ const payload = runtimeState.writeRuntimeState({
135
+ ...previous,
136
+ skill: config.name,
137
+ skillVersion: config.skillVersion,
138
+ runtimePackage: config.npmPackage,
139
+ runtimeVersion: config.trackopsVersion,
140
+ bootstrapPolicy: config.bootstrapPolicy,
141
+ supportedAgentsV1: config.supportedAgentsV1,
142
+ verifiedAt: new Date().toISOString(),
143
+ verifiedWith: verification.installed.via,
144
+ executable: verification.installed.command,
145
+ });
146
+ return payload;
147
+ }
148
+
149
+ function printInstallGuidance(prefix) {
150
+ if (prefix) {
151
+ console.error(`TrackOps was installed under the custom prefix '${prefix}'.`);
152
+ console.error("Use that prefix's executable or add it to PATH before trying again.");
153
+ return;
154
+ }
155
+
156
+ console.error("TrackOps was installed but could not be executed from PATH.");
157
+ console.error("Add your npm global bin directory to PATH, reopen the terminal, and retry.");
158
+ }
159
+
160
+ async function main() {
161
+ const config = readSkillConfig();
162
+ const prefix = getPrefixOverride();
163
+
164
+ if (!hasSupportedNode()) {
165
+ console.error("TrackOps requires Node.js 18 or newer.");
166
+ process.exit(EXIT_CODES.PREREQ);
167
+ }
168
+
169
+ if (!ensureNpmAvailable()) {
170
+ console.error("npm is required to bootstrap the TrackOps runtime.");
171
+ process.exit(EXIT_CODES.PREREQ);
172
+ }
173
+
174
+ const current = verifyRuntime(config.trackopsVersion, prefix);
175
+ if (current.ok) {
176
+ await runtimeState.ensureGlobalLocale({ interactive: false });
177
+ writeRuntimeStamp(config, current);
178
+ console.log(`TrackOps runtime ${config.trackopsVersion} is already ready.`);
179
+ process.exit(EXIT_CODES.READY);
180
+ }
181
+
182
+ const install = runInstall(config, prefix);
183
+ if (install.error || install.status !== 0) {
184
+ console.error(`Failed to install ${install.installSource}.`);
185
+ if (install.stderr) {
186
+ console.error(install.stderr.trim());
187
+ }
188
+ process.exit(EXIT_CODES.INSTALL);
189
+ }
190
+
191
+ const verification = verifyRuntime(config.trackopsVersion, prefix);
192
+ if (!verification.ok) {
193
+ printInstallGuidance(prefix);
194
+ process.exit(EXIT_CODES.UNVERIFIABLE);
195
+ }
196
+
197
+ await runtimeState.ensureGlobalLocale({ interactive: false });
198
+ writeRuntimeStamp(config, verification);
199
+ console.log(`TrackOps runtime ${config.trackopsVersion} is ready.`);
200
+ process.exit(EXIT_CODES.READY);
201
+ }
202
+
203
+ main();
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "trackops",
3
+ "shortDescription": "Global TrackOps skill for local project orchestration, agent coordination, bilingual onboarding, and operational automation.",
4
+ "description": "Installs TrackOps as a global skill, ensures the runtime on first use, lets users choose Spanish or English, activates local project orchestration, and routes OPERA onboarding into either direct bootstrap or agent-led discovery.",
5
+ "skillVersion": "2.0.0",
6
+ "trackopsVersion": "2.0.0",
7
+ "npmPackage": "trackops",
8
+ "bootstrapPolicy": "first_use",
9
+ "supportedAgentsV1": [
10
+ "antigravity",
11
+ "claude-code",
12
+ "codex",
13
+ "cursor",
14
+ "gemini-cli",
15
+ "github-copilot",
16
+ "kiro-cli"
17
+ ],
18
+ "distribution": {
19
+ "source": "Baxahaun/trackops",
20
+ "skill": "trackops",
21
+ "fullDepth": true
22
+ },
23
+ "repository": {
24
+ "provider": "github",
25
+ "owner": "Baxahaun",
26
+ "repo": "trackops",
27
+ "skillPath": "skills/trackops"
28
+ }
29
+ }
@@ -4,23 +4,24 @@
4
4
  Eres el agente principal del proyecto **{{PROJECT_NAME}}**. Operas bajo el protocolo O.P.E.R.A. v3.0.
5
5
 
6
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`.
7
+ Tu fuente de verdad de maquina es `ops/contract/operating-contract.json`.
8
+ Tu vista humana compilada es `ops/genesis.md`.
9
+ Para el seguimiento operativo y el estado del backlog, usa `ops/project_control.json`.
9
10
 
10
11
  ## 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`.
12
+ - Sigue las reglas definidas en `ops/contract/operating-contract.json` y reflejadas en `ops/genesis.md`.
13
+ - Respeta `ops/policy/autonomy.json` para determinar qué acciones puedes tomar sin aprobacion.
14
+ - Gestiona tareas y estados desde `ops/project_control.json`.
15
+ - No edites manualmente `ops/task_plan.md`, `ops/progress.md` ni `ops/findings.md`; se regeneran con `trackops sync`.
15
16
 
16
17
  ## Skills Disponibles
17
- Consulta `.agents/skills/_registry.md` para ver las skills instaladas.
18
+ Consulta `ops/.agents/skills/_registry.md` para ver las skills instaladas.
18
19
  También puedes buscar nuevas skills con `trackops skill catalog`.
19
20
 
20
21
  ## Ciclo de Trabajo
21
22
  1. Ejecuta `trackops status` al inicio de cada bloque de trabajo.
22
- 2. Consulta `genesis.md` para entender los datos y reglas.
23
+ 2. Consulta `ops/contract/operating-contract.json` y `ops/genesis.md` para entender el contrato y su vista humana.
23
24
  3. Usa `trackops next` para ver la siguiente cola priorizada.
24
25
  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
+ 5. Usa el router (`ops/.agent/hub/router.md`) para saber que skill aplicar.
26
27
  6. Al terminar, pasa la tarea a `review`, `complete` o `block` y ejecuta `trackops sync`.
@@ -0,0 +1,24 @@
1
+ # Dependency Graph
2
+
3
+ ```mermaid
4
+ flowchart TD
5
+ A[Global runtime bootstrap] --> B[trackops init]
6
+ B --> C[trackops opera install]
7
+ C --> D{Routing}
8
+ D -->|direct_cli| E[Direct intake]
9
+ D -->|agent_handoff| F[agent-handoff.md/json]
10
+ F --> G[intake.json + spec-dossier.md]
11
+ E --> H[quality-report.json]
12
+ G --> H
13
+ H --> I[operating-contract.json]
14
+ I --> J[genesis.md]
15
+ I --> K[task_plan.md / progress.md / findings.md]
16
+ I --> L[dashboard + API state]
17
+ I --> M[env sync + policy enforcement]
18
+ ```
19
+
20
+ ## Notes
21
+
22
+ - `ops/project_control.json` is the operational source of truth for backlog and session state.
23
+ - `ops/contract/operating-contract.json` is the machine contract.
24
+ - `ops/genesis.md` is a compiled human view.
@@ -0,0 +1,24 @@
1
+ # SOP - Runtime Automation
2
+
3
+ ## Objective
4
+
5
+ Keep validation automatic on every relevant change.
6
+
7
+ ## Trigger policy
8
+
9
+ - Validate on push to `develop` and `master`.
10
+ - Validate on pull requests targeting `develop` or `master`.
11
+ - Allow manual execution with workflow dispatch.
12
+
13
+ ## Validation circuit
14
+
15
+ 1. Install Node 18 and 20.
16
+ 2. Install runtime dependencies.
17
+ 3. Run `npm run release:check`.
18
+ 4. Fail fast on any smoke, skill or packaging regression.
19
+
20
+ ## Release hygiene
21
+
22
+ - Do not publish if `release:check` fails.
23
+ - Do not treat local runtime state as deployable proof.
24
+ - Re-run smoke after structural or locale changes.
@@ -0,0 +1,34 @@
1
+ # SOP - Runtime Operations
2
+
3
+ ## Purpose
4
+
5
+ Define the minimum operating procedure to keep a TrackOps + OPERA workspace healthy.
6
+
7
+ ## Inputs
8
+
9
+ - `ops/project_control.json`
10
+ - `ops/contract/operating-contract.json`
11
+ - `ops/policy/autonomy.json`
12
+ - `ops/bootstrap/quality-report.json`
13
+
14
+ ## Core checks
15
+
16
+ 1. Run `trackops status`.
17
+ 2. Run `trackops opera status`.
18
+ 3. Run `trackops env status`.
19
+ 4. Confirm `contract readiness` is not `hypothesis` for active delivery work.
20
+ 5. Confirm `legacyStatus` is `supported`.
21
+
22
+ ## Recovery path
23
+
24
+ 1. If bootstrap is incomplete, run `trackops opera handoff --print`.
25
+ 2. If discovery artifacts already exist, run `trackops opera bootstrap --resume`.
26
+ 3. If operational docs drift, run `trackops sync`.
27
+ 4. If managed artifacts drift, run `trackops opera upgrade --stable`.
28
+
29
+ ## Exit criteria
30
+
31
+ - Runtime status is readable.
32
+ - OPERA status is readable.
33
+ - Contract and policy files exist.
34
+ - No critical blocker remains undocumented.
@@ -0,0 +1,27 @@
1
+ # Project Agent: {{PROJECT_NAME}}
2
+
3
+ ## Identity
4
+ You are the primary agent for **{{PROJECT_NAME}}**. You operate under the O.P.E.R.A. v3.0 protocol.
5
+
6
+ ## Source of Truth
7
+ Your machine source of truth is `ops/contract/operating-contract.json`.
8
+ Your compiled human view is `ops/genesis.md`.
9
+ For operational tracking and backlog state, use `ops/project_control.json`.
10
+
11
+ ## Behavior
12
+ - Follow the rules defined in `ops/contract/operating-contract.json` and reflected in `ops/genesis.md`.
13
+ - Respect `ops/policy/autonomy.json` to determine which actions are allowed without approval.
14
+ - Manage tasks and states from `ops/project_control.json`.
15
+ - Do not edit `ops/task_plan.md`, `ops/progress.md`, or `ops/findings.md` manually; regenerate them with `trackops sync`.
16
+
17
+ ## Available Skills
18
+ Check `ops/.agents/skills/_registry.md` to see installed skills.
19
+ You can also discover new skills with `trackops skill catalog`.
20
+
21
+ ## Work Cycle
22
+ 1. Run `trackops status` at the beginning of each work block.
23
+ 2. Read `ops/contract/operating-contract.json` and `ops/genesis.md` to understand the contract and its human view.
24
+ 3. Use `trackops next` to inspect the prioritized queue.
25
+ 4. Before implementing, mark the task with `trackops task start <task-id>`.
26
+ 5. Use the router in `ops/.agent/hub/router.md` to choose the right skill.
27
+ 6. When you finish, move the task to `review`, `complete`, or `block`, then run `trackops sync`.
@@ -0,0 +1,24 @@
1
+ # Dependency Graph
2
+
3
+ ```mermaid
4
+ flowchart TD
5
+ A[Global runtime bootstrap] --> B[trackops init]
6
+ B --> C[trackops opera install]
7
+ C --> D{Routing}
8
+ D -->|direct_cli| E[Direct intake]
9
+ D -->|agent_handoff| F[agent-handoff.md/json]
10
+ F --> G[intake.json + spec-dossier.md]
11
+ E --> H[quality-report.json]
12
+ G --> H
13
+ H --> I[operating-contract.json]
14
+ I --> J[genesis.md]
15
+ I --> K[task_plan.md / progress.md / findings.md]
16
+ I --> L[dashboard + API state]
17
+ I --> M[env sync + policy enforcement]
18
+ ```
19
+
20
+ ## Notes
21
+
22
+ - `ops/project_control.json` is the operational source of truth for backlog and session state.
23
+ - `ops/contract/operating-contract.json` is the machine contract.
24
+ - `ops/genesis.md` is a compiled human view.
@@ -0,0 +1,24 @@
1
+ # SOP - Runtime Automation
2
+
3
+ ## Objective
4
+
5
+ Keep validation automatic on every relevant change.
6
+
7
+ ## Trigger policy
8
+
9
+ - Validate on push to `develop` and `master`.
10
+ - Validate on pull requests targeting `develop` or `master`.
11
+ - Allow manual execution with workflow dispatch.
12
+
13
+ ## Validation circuit
14
+
15
+ 1. Install Node 18 and 20.
16
+ 2. Install runtime dependencies.
17
+ 3. Run `npm run release:check`.
18
+ 4. Fail fast on any smoke, skill or packaging regression.
19
+
20
+ ## Release hygiene
21
+
22
+ - Do not publish if `release:check` fails.
23
+ - Do not treat local runtime state as deployable proof.
24
+ - Re-run smoke after structural or locale changes.