trackops 2.0.4 → 2.0.6
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/LICENSE +21 -21
- package/README.md +660 -575
- package/bin/trackops.js +127 -106
- package/lib/cli-format.js +118 -0
- package/lib/config.js +352 -326
- package/lib/control.js +408 -246
- package/lib/env.js +234 -222
- package/lib/i18n.js +5 -4
- package/lib/init.js +390 -282
- package/lib/locale.js +41 -41
- package/lib/opera-bootstrap.js +1066 -880
- package/lib/opera.js +615 -444
- package/lib/preferences.js +74 -74
- package/lib/registry.js +214 -214
- package/lib/release.js +56 -56
- package/lib/runtime-state.js +144 -144
- package/lib/skills.js +114 -89
- package/lib/workspace.js +259 -248
- package/locales/en.json +311 -167
- package/locales/es.json +314 -170
- package/package.json +61 -58
- package/scripts/postinstall-locale.js +21 -21
- package/scripts/skills-marketplace-smoke.js +124 -124
- package/scripts/smoke-tests.js +563 -517
- package/scripts/sync-skill-version.js +21 -21
- package/scripts/validate-skill.js +103 -103
- package/skills/trackops/SKILL.md +126 -122
- package/skills/trackops/agents/openai.yaml +7 -7
- package/skills/trackops/locales/en/SKILL.md +126 -122
- package/skills/trackops/locales/en/references/activation.md +94 -90
- package/skills/trackops/locales/en/references/troubleshooting.md +73 -67
- package/skills/trackops/locales/en/references/workflow.md +55 -32
- package/skills/trackops/references/activation.md +94 -90
- package/skills/trackops/references/troubleshooting.md +73 -67
- package/skills/trackops/references/workflow.md +55 -32
- package/skills/trackops/skill.json +29 -29
- package/templates/hooks/post-checkout +2 -2
- package/templates/hooks/post-commit +2 -2
- package/templates/hooks/post-merge +2 -2
- package/templates/opera/agent.md +28 -27
- package/templates/opera/architecture/dependency-graph.md +24 -24
- package/templates/opera/architecture/runtime-automation.md +24 -24
- package/templates/opera/architecture/runtime-operations.md +34 -34
- package/templates/opera/en/agent.md +22 -21
- package/templates/opera/en/architecture/dependency-graph.md +24 -24
- package/templates/opera/en/architecture/runtime-automation.md +24 -24
- package/templates/opera/en/architecture/runtime-operations.md +34 -34
- package/templates/opera/en/reviews/delivery-audit.md +18 -18
- package/templates/opera/en/reviews/integration-audit.md +18 -18
- package/templates/opera/en/router.md +24 -19
- package/templates/opera/references/autonomy-and-recovery.md +117 -117
- package/templates/opera/references/opera-cycle.md +193 -193
- package/templates/opera/registry.md +28 -28
- package/templates/opera/reviews/delivery-audit.md +18 -18
- package/templates/opera/reviews/integration-audit.md +18 -18
- package/templates/opera/router.md +54 -49
- package/templates/skills/changelog-updater/SKILL.md +69 -69
- package/templates/skills/commiter/SKILL.md +99 -99
- package/templates/skills/opera-contract-auditor/SKILL.md +38 -38
- package/templates/skills/opera-contract-auditor/locales/en/SKILL.md +38 -38
- package/templates/skills/opera-policy-guard/SKILL.md +26 -26
- package/templates/skills/opera-policy-guard/locales/en/SKILL.md +26 -26
- package/templates/skills/opera-skill/SKILL.md +279 -0
- package/templates/skills/opera-skill/locales/en/SKILL.md +279 -0
- package/templates/skills/opera-skill/locales/en/references/phase-dod.md +138 -0
- package/templates/skills/opera-skill/references/phase-dod.md +138 -0
- package/templates/skills/project-starter-skill/SKILL.md +150 -131
- package/templates/skills/project-starter-skill/locales/en/SKILL.md +143 -105
- package/templates/skills/project-starter-skill/references/opera-cycle.md +195 -193
- package/ui/css/base.css +284 -284
- package/ui/css/charts.css +425 -425
- package/ui/css/components.css +1107 -1107
- package/ui/css/onboarding.css +133 -133
- package/ui/css/terminal.css +125 -125
- package/ui/css/timeline.css +58 -58
- package/ui/css/tokens.css +284 -284
- package/ui/favicon.svg +5 -5
- package/ui/index.html +99 -99
- package/ui/js/charts.js +526 -526
- package/ui/js/console-logger.js +172 -172
- package/ui/js/filters.js +247 -247
- package/ui/js/icons.js +129 -129
- package/ui/js/keyboard.js +229 -229
- package/ui/js/router.js +142 -142
- package/ui/js/theme.js +100 -100
- package/ui/js/time-tracker.js +248 -248
- package/ui/js/views/dashboard.js +870 -870
- package/ui/js/views/flash.js +47 -47
- package/ui/js/views/projects.js +745 -745
- package/ui/js/views/scrum.js +476 -476
- package/ui/js/views/settings.js +331 -331
- package/ui/js/views/timeline.js +265 -265
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
const fs = require("fs");
|
|
4
|
-
const path = require("path");
|
|
5
|
-
|
|
6
|
-
const ROOT = path.resolve(__dirname, "..");
|
|
7
|
-
const PACKAGE_FILE = path.join(ROOT, "package.json");
|
|
8
|
-
const SKILL_FILE = path.join(ROOT, "skills", "trackops", "skill.json");
|
|
9
|
-
|
|
10
|
-
function main() {
|
|
11
|
-
const pkg = JSON.parse(fs.readFileSync(PACKAGE_FILE, "utf8"));
|
|
12
|
-
const skill = JSON.parse(fs.readFileSync(SKILL_FILE, "utf8"));
|
|
13
|
-
|
|
14
|
-
skill.skillVersion = pkg.version;
|
|
15
|
-
skill.trackopsVersion = pkg.version;
|
|
16
|
-
|
|
17
|
-
fs.writeFileSync(SKILL_FILE, `${JSON.stringify(skill, null, 2)}\n`, "utf8");
|
|
18
|
-
console.log(`Synced skills/trackops/skill.json to version ${pkg.version}.`);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
main();
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const fs = require("fs");
|
|
4
|
+
const path = require("path");
|
|
5
|
+
|
|
6
|
+
const ROOT = path.resolve(__dirname, "..");
|
|
7
|
+
const PACKAGE_FILE = path.join(ROOT, "package.json");
|
|
8
|
+
const SKILL_FILE = path.join(ROOT, "skills", "trackops", "skill.json");
|
|
9
|
+
|
|
10
|
+
function main() {
|
|
11
|
+
const pkg = JSON.parse(fs.readFileSync(PACKAGE_FILE, "utf8"));
|
|
12
|
+
const skill = JSON.parse(fs.readFileSync(SKILL_FILE, "utf8"));
|
|
13
|
+
|
|
14
|
+
skill.skillVersion = pkg.version;
|
|
15
|
+
skill.trackopsVersion = pkg.version;
|
|
16
|
+
|
|
17
|
+
fs.writeFileSync(SKILL_FILE, `${JSON.stringify(skill, null, 2)}\n`, "utf8");
|
|
18
|
+
console.log(`Synced skills/trackops/skill.json to version ${pkg.version}.`);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
main();
|
|
@@ -1,103 +1,103 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
const fs = require("fs");
|
|
4
|
-
const path = require("path");
|
|
5
|
-
|
|
6
|
-
const ROOT = path.resolve(__dirname, "..");
|
|
7
|
-
const PACKAGE_FILE = path.join(ROOT, "package.json");
|
|
8
|
-
const SKILL_DIR = path.join(ROOT, "skills", "trackops");
|
|
9
|
-
const SKILL_FILE = path.join(SKILL_DIR, "skill.json");
|
|
10
|
-
const REQUIRED_FILES = [
|
|
11
|
-
path.join(SKILL_DIR, "SKILL.md"),
|
|
12
|
-
path.join(SKILL_DIR, "skill.json"),
|
|
13
|
-
path.join(SKILL_DIR, "references", "activation.md"),
|
|
14
|
-
path.join(SKILL_DIR, "references", "workflow.md"),
|
|
15
|
-
path.join(SKILL_DIR, "references", "troubleshooting.md"),
|
|
16
|
-
];
|
|
17
|
-
|
|
18
|
-
function fail(message) {
|
|
19
|
-
console.error(message);
|
|
20
|
-
process.exit(1);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
function main() {
|
|
24
|
-
const pkg = JSON.parse(fs.readFileSync(PACKAGE_FILE, "utf8"));
|
|
25
|
-
const skill = JSON.parse(fs.readFileSync(SKILL_FILE, "utf8"));
|
|
26
|
-
const skillMd = fs.readFileSync(path.join(SKILL_DIR, "SKILL.md"), "utf8");
|
|
27
|
-
|
|
28
|
-
for (const file of REQUIRED_FILES) {
|
|
29
|
-
if (!fs.existsSync(file)) {
|
|
30
|
-
fail(`Missing required skill file: ${path.relative(ROOT, file)}`);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
if (!Array.isArray(pkg.files) || !pkg.files.includes("skills/")) {
|
|
35
|
-
fail("package.json must publish the skills/ directory.");
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
if (skill.name !== "trackops") {
|
|
39
|
-
fail("skills/trackops/skill.json must declare name 'trackops'.");
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
if (skill.skillVersion !== pkg.version || skill.trackopsVersion !== pkg.version) {
|
|
43
|
-
fail(`skills/trackops/skill.json must be synced to package version ${pkg.version}.`);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (skill.npmPackage !== pkg.name) {
|
|
47
|
-
fail(`skills/trackops/skill.json must target npm package '${pkg.name}'.`);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
if (skill.bootstrapPolicy !== "explicit_install") {
|
|
51
|
-
fail("skills/trackops/skill.json must use bootstrapPolicy 'explicit_install'.");
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const supportedAgents = Array.isArray(skill.supportedAgentsV1) ? skill.supportedAgentsV1 : [];
|
|
55
|
-
for (const agent of ["antigravity", "claude-code", "codex", "cursor", "gemini-cli", "github-copilot", "kiro-cli"]) {
|
|
56
|
-
if (!supportedAgents.includes(agent)) {
|
|
57
|
-
fail(`skills/trackops/skill.json must include supported agent '${agent}'.`);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
if (!skill.distribution || skill.distribution.source !== "Baxahaun/trackops") {
|
|
62
|
-
fail("skills/trackops/skill.json must declare distribution.source 'Baxahaun/trackops'.");
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
if (skill.distribution.skill !== "trackops") {
|
|
66
|
-
fail("skills/trackops/skill.json must declare distribution.skill 'trackops'.");
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
if (skill.distribution.fullDepth !== true) {
|
|
70
|
-
fail("skills/trackops/skill.json must declare distribution.fullDepth true.");
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
for (const requiredPhrase of [
|
|
74
|
-
"npx skills add Baxahaun/trackops",
|
|
75
|
-
"npm install -g trackops",
|
|
76
|
-
"trackops --version",
|
|
77
|
-
"trackops init",
|
|
78
|
-
"trackops opera install",
|
|
79
|
-
"trackops opera bootstrap --resume",
|
|
80
|
-
]) {
|
|
81
|
-
if (!skillMd.includes(requiredPhrase)) {
|
|
82
|
-
fail(`skills/trackops/SKILL.md must mention '${requiredPhrase}'.`);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
for (const forbiddenPhrase of [
|
|
87
|
-
"node scripts/bootstrap-trackops.js",
|
|
88
|
-
"ensures the runtime on first use",
|
|
89
|
-
"asegura el runtime en el primer uso",
|
|
90
|
-
]) {
|
|
91
|
-
if (skillMd.includes(forbiddenPhrase)) {
|
|
92
|
-
fail(`skills/trackops/SKILL.md must not mention '${forbiddenPhrase}'.`);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
if (fs.existsSync(path.join(SKILL_DIR, "scripts", "bootstrap-trackops.js"))) {
|
|
97
|
-
fail("skills/trackops must not publish scripts/bootstrap-trackops.js.");
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
console.log("skills/trackops validated successfully.");
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
main();
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const fs = require("fs");
|
|
4
|
+
const path = require("path");
|
|
5
|
+
|
|
6
|
+
const ROOT = path.resolve(__dirname, "..");
|
|
7
|
+
const PACKAGE_FILE = path.join(ROOT, "package.json");
|
|
8
|
+
const SKILL_DIR = path.join(ROOT, "skills", "trackops");
|
|
9
|
+
const SKILL_FILE = path.join(SKILL_DIR, "skill.json");
|
|
10
|
+
const REQUIRED_FILES = [
|
|
11
|
+
path.join(SKILL_DIR, "SKILL.md"),
|
|
12
|
+
path.join(SKILL_DIR, "skill.json"),
|
|
13
|
+
path.join(SKILL_DIR, "references", "activation.md"),
|
|
14
|
+
path.join(SKILL_DIR, "references", "workflow.md"),
|
|
15
|
+
path.join(SKILL_DIR, "references", "troubleshooting.md"),
|
|
16
|
+
];
|
|
17
|
+
|
|
18
|
+
function fail(message) {
|
|
19
|
+
console.error(message);
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function main() {
|
|
24
|
+
const pkg = JSON.parse(fs.readFileSync(PACKAGE_FILE, "utf8"));
|
|
25
|
+
const skill = JSON.parse(fs.readFileSync(SKILL_FILE, "utf8"));
|
|
26
|
+
const skillMd = fs.readFileSync(path.join(SKILL_DIR, "SKILL.md"), "utf8");
|
|
27
|
+
|
|
28
|
+
for (const file of REQUIRED_FILES) {
|
|
29
|
+
if (!fs.existsSync(file)) {
|
|
30
|
+
fail(`Missing required skill file: ${path.relative(ROOT, file)}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (!Array.isArray(pkg.files) || !pkg.files.includes("skills/")) {
|
|
35
|
+
fail("package.json must publish the skills/ directory.");
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (skill.name !== "trackops") {
|
|
39
|
+
fail("skills/trackops/skill.json must declare name 'trackops'.");
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (skill.skillVersion !== pkg.version || skill.trackopsVersion !== pkg.version) {
|
|
43
|
+
fail(`skills/trackops/skill.json must be synced to package version ${pkg.version}.`);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (skill.npmPackage !== pkg.name) {
|
|
47
|
+
fail(`skills/trackops/skill.json must target npm package '${pkg.name}'.`);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (skill.bootstrapPolicy !== "explicit_install") {
|
|
51
|
+
fail("skills/trackops/skill.json must use bootstrapPolicy 'explicit_install'.");
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const supportedAgents = Array.isArray(skill.supportedAgentsV1) ? skill.supportedAgentsV1 : [];
|
|
55
|
+
for (const agent of ["antigravity", "claude-code", "codex", "cursor", "gemini-cli", "github-copilot", "kiro-cli"]) {
|
|
56
|
+
if (!supportedAgents.includes(agent)) {
|
|
57
|
+
fail(`skills/trackops/skill.json must include supported agent '${agent}'.`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (!skill.distribution || skill.distribution.source !== "Baxahaun/trackops") {
|
|
62
|
+
fail("skills/trackops/skill.json must declare distribution.source 'Baxahaun/trackops'.");
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (skill.distribution.skill !== "trackops") {
|
|
66
|
+
fail("skills/trackops/skill.json must declare distribution.skill 'trackops'.");
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (skill.distribution.fullDepth !== true) {
|
|
70
|
+
fail("skills/trackops/skill.json must declare distribution.fullDepth true.");
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
for (const requiredPhrase of [
|
|
74
|
+
"npx skills add Baxahaun/trackops",
|
|
75
|
+
"npm install -g trackops",
|
|
76
|
+
"trackops --version",
|
|
77
|
+
"trackops init",
|
|
78
|
+
"trackops opera install",
|
|
79
|
+
"trackops opera bootstrap --resume",
|
|
80
|
+
]) {
|
|
81
|
+
if (!skillMd.includes(requiredPhrase)) {
|
|
82
|
+
fail(`skills/trackops/SKILL.md must mention '${requiredPhrase}'.`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
for (const forbiddenPhrase of [
|
|
87
|
+
"node scripts/bootstrap-trackops.js",
|
|
88
|
+
"ensures the runtime on first use",
|
|
89
|
+
"asegura el runtime en el primer uso",
|
|
90
|
+
]) {
|
|
91
|
+
if (skillMd.includes(forbiddenPhrase)) {
|
|
92
|
+
fail(`skills/trackops/SKILL.md must not mention '${forbiddenPhrase}'.`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (fs.existsSync(path.join(SKILL_DIR, "scripts", "bootstrap-trackops.js"))) {
|
|
97
|
+
fail("skills/trackops must not publish scripts/bootstrap-trackops.js.");
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
console.log("skills/trackops validated successfully.");
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
main();
|
package/skills/trackops/SKILL.md
CHANGED
|
@@ -1,122 +1,126 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "trackops"
|
|
3
|
-
description: "Skill global de TrackOps para explicar que hace TrackOps, exigir la instalacion explicita del runtime con npm y guiar la activacion local de proyectos y OPERA en cada repositorio."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# TrackOps
|
|
7
|
-
|
|
8
|
-
Si la conversacion y el proyecto deben trabajar en ingles, lee `locales/en/SKILL.md` antes de seguir.
|
|
9
|
-
|
|
10
|
-
TrackOps
|
|
11
|
-
|
|
12
|
-
Esta skill es la puerta de entrada cuando alguien:
|
|
13
|
-
|
|
14
|
-
- quiere arrancar un proyecto con agentes IA
|
|
15
|
-
- ya tiene un repo y necesita orden operativo
|
|
16
|
-
- necesita activar TrackOps y, si hace falta, OPERA
|
|
17
|
-
- quiere trabajar en espanol o en ingles con el mismo flujo
|
|
18
|
-
|
|
19
|
-
## Que hace esta skill
|
|
20
|
-
|
|
21
|
-
Esta skill:
|
|
22
|
-
|
|
23
|
-
- explica
|
|
24
|
-
- exige una
|
|
25
|
-
-
|
|
26
|
-
- ayuda a decidir si OPERA debe seguir por `direct bootstrap` o por `agent handoff`
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
trackops
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
57
|
-
- la skill
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
trackops
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
- trata la
|
|
72
|
-
-
|
|
73
|
-
- usa `ops/
|
|
74
|
-
- usa `ops/
|
|
75
|
-
- usa
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
-
|
|
87
|
-
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
-
|
|
116
|
-
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
1
|
+
---
|
|
2
|
+
name: "trackops"
|
|
3
|
+
description: "Skill global de TrackOps para explicar que hace TrackOps, exigir la instalacion explicita del runtime con npm y guiar la activacion local de proyectos y OPERA en cada repositorio."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TrackOps
|
|
7
|
+
|
|
8
|
+
Si la conversacion y el proyecto deben trabajar en ingles, lee `locales/en/SKILL.md` antes de seguir.
|
|
9
|
+
|
|
10
|
+
TrackOps es un sistema local de control y coordinación para desarrollo de software con agentes IA.
|
|
11
|
+
|
|
12
|
+
Esta skill es la puerta de entrada al sistema. Úsala cuando alguien:
|
|
13
|
+
|
|
14
|
+
- quiere arrancar un proyecto con agentes IA
|
|
15
|
+
- ya tiene un repo y necesita orden operativo
|
|
16
|
+
- necesita activar TrackOps y, si hace falta, OPERA
|
|
17
|
+
- quiere trabajar en espanol o en ingles con el mismo flujo
|
|
18
|
+
|
|
19
|
+
## Que hace esta skill
|
|
20
|
+
|
|
21
|
+
Esta skill:
|
|
22
|
+
|
|
23
|
+
- explica qué es TrackOps y cuándo conviene usarlo
|
|
24
|
+
- exige una instalación explícita y visible del runtime
|
|
25
|
+
- guía la activación por repositorio
|
|
26
|
+
- ayuda a decidir si OPERA debe seguir por `direct bootstrap` o por `agent handoff`
|
|
27
|
+
- explica que al instalar OPERA se activa un equipo de agentes coordinados por `opera-skill`
|
|
28
|
+
|
|
29
|
+
## Que no hace esta skill
|
|
30
|
+
|
|
31
|
+
Esta skill no:
|
|
32
|
+
|
|
33
|
+
- instala paquetes por su cuenta
|
|
34
|
+
- ejecuta codigo remoto en silencio
|
|
35
|
+
- modifica un repositorio antes de que el runtime exista
|
|
36
|
+
- sustituye al runtime `trackops`
|
|
37
|
+
|
|
38
|
+
## Flujo rapido
|
|
39
|
+
|
|
40
|
+
Instala la skill del marketplace con:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npx skills add Baxahaun/trackops
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Despues, confirma que el runtime `trackops` existe. Si no esta disponible, pide al usuario que lo instale de forma explicita:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
npm install -g trackops
|
|
50
|
+
trackops --version
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Reglas:
|
|
54
|
+
|
|
55
|
+
- la skill no debe instalar paquetes ni ejecutar codigo remoto por si sola
|
|
56
|
+
- el runtime se instala con un paso visible y auditable
|
|
57
|
+
- la skill puede verificar `trackops --version`, pero no debe encadenar instalaciones silenciosas
|
|
58
|
+
- la skill no debe crear archivos dentro de un repositorio por si sola
|
|
59
|
+
|
|
60
|
+
## Activacion en un proyecto
|
|
61
|
+
|
|
62
|
+
Dentro del repositorio:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
trackops init
|
|
66
|
+
trackops opera install
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Reglas base:
|
|
70
|
+
|
|
71
|
+
- trata la skill global como capa de instrucciones
|
|
72
|
+
- trata la instalacion del runtime como explicita y separada
|
|
73
|
+
- usa `ops/contract/operating-contract.json` como contrato de maquina cuando exista
|
|
74
|
+
- usa `ops/project_control.json` como fuente de verdad operativa
|
|
75
|
+
- usa `ops/policy/autonomy.json` antes de acciones sensibles
|
|
76
|
+
- usa `/.env` y `/.env.example` como contrato de entorno
|
|
77
|
+
- deja la documentacion operativa generada dentro de `ops/`
|
|
78
|
+
- usa `trackops locale get|set` y `trackops doctor locale` cuando el idioma importe
|
|
79
|
+
|
|
80
|
+
## Como entra OPERA
|
|
81
|
+
|
|
82
|
+
OPERA ya no asume que todo usuario es tecnico.
|
|
83
|
+
|
|
84
|
+
TrackOps clasifica:
|
|
85
|
+
|
|
86
|
+
- nivel tecnico del usuario
|
|
87
|
+
- estado actual del proyecto
|
|
88
|
+
- documentacion disponible
|
|
89
|
+
|
|
90
|
+
Luego elige una de dos rutas:
|
|
91
|
+
|
|
92
|
+
- `direct bootstrap`
|
|
93
|
+
para usuarios tecnicos y repos ya definidos
|
|
94
|
+
- `agent handoff`
|
|
95
|
+
para ideas tempranas, usuarios no tecnicos o documentacion debil
|
|
96
|
+
|
|
97
|
+
Una vez activo, OPERA instala automáticamente un equipo de agentes especializados en `ops/.agents/skills/`. La coordinadora (`opera-skill`) decide en qué fase está el proyecto, qué agente debe actuar, cuándo delegar y cuándo frenar el avance.
|
|
98
|
+
|
|
99
|
+
Si TrackOps deriva al agente:
|
|
100
|
+
|
|
101
|
+
- lee `ops/bootstrap/agent-handoff.md`
|
|
102
|
+
- o imprímelo con `trackops opera handoff --print`
|
|
103
|
+
- exige como salida:
|
|
104
|
+
- `ops/bootstrap/intake.json`
|
|
105
|
+
- `ops/bootstrap/spec-dossier.md`
|
|
106
|
+
- `ops/bootstrap/open-questions.md` cuando queden huecos importantes
|
|
107
|
+
- reanuda con:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
trackops opera bootstrap --resume
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Que debe entender alguien que llega desde skills.sh
|
|
114
|
+
|
|
115
|
+
- la skill global instala instrucciones en el agente
|
|
116
|
+
- el runtime se instala por separado con npm
|
|
117
|
+
- `trackops init` activa el proyecto
|
|
118
|
+
- `trackops opera install` anade el framework operativo completo solo cuando hace falta
|
|
119
|
+
- TrackOps separa producto y operacion para que el repo no se vuelva caotico
|
|
120
|
+
|
|
121
|
+
## Que referencia leer y cuando
|
|
122
|
+
|
|
123
|
+
- lee `references/activation.md` solo para instalación, verificación del runtime, locale bootstrap y activación de un repositorio
|
|
124
|
+
- lee `references/workflow.md` solo cuando TrackOps ya está activo y haga falta operar el día a día del repositorio
|
|
125
|
+
- lee `references/troubleshooting.md` solo cuando fallen la instalación explícita, la detección de `trackops`, el resume o el contrato de entorno
|
|
126
|
+
- `opera-skill` es una skill de proyecto, no una referencia de esta skill global. Se instala con OPERA y coordina el trabajo dentro del repositorio.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: "TrackOps"
|
|
3
|
-
short_description: "Explain TrackOps and guide explicit install"
|
|
4
|
-
default_prompt: "Use $trackops to explain what TrackOps does, require explicit npm installation of the TrackOps runtime, and then activate TrackOps and OPERA in this repository."
|
|
5
|
-
|
|
6
|
-
policy:
|
|
7
|
-
allow_implicit_invocation: true
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "TrackOps"
|
|
3
|
+
short_description: "Explain TrackOps and guide explicit install"
|
|
4
|
+
default_prompt: "Use $trackops to explain what TrackOps does, require explicit npm installation of the TrackOps runtime, and then activate TrackOps and OPERA in this repository."
|
|
5
|
+
|
|
6
|
+
policy:
|
|
7
|
+
allow_implicit_invocation: true
|