agent-cloud-kit 1.0.0-rc.4 → 1.0.0-rc.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/dist/manual.js +16 -42
- package/package.json +1 -1
- package/skills/cloud-ready/SKILL.md +7 -4
package/dist/manual.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { existsSync, mkdirSync, readFileSync, realpathSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
|
|
6
6
|
import { dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
|
|
7
7
|
import { readConfig } from "./config.js";
|
|
8
|
-
import { CONFIG_FILE,
|
|
8
|
+
import { CONFIG_FILE, PACKAGE, packageSpec } from "./constants.js";
|
|
9
9
|
/** Path of the manual, relative to the repo. */
|
|
10
10
|
export const MANUAL_FILE = "docs/agent-cloud.md";
|
|
11
11
|
/** Marker that opens the generated block. */
|
|
@@ -27,18 +27,8 @@ const HTTPS_PREFIX = "https://";
|
|
|
27
27
|
function setupScript(packageVersion) {
|
|
28
28
|
return `#!/bin/bash\nnpx -y ${packageSpec(packageVersion)} setup`;
|
|
29
29
|
}
|
|
30
|
-
/**
|
|
31
|
-
const
|
|
32
|
-
"## Cómo funciona",
|
|
33
|
-
"",
|
|
34
|
-
"1. agent-kitchen instala las herramientas y los ganchos en el repo.",
|
|
35
|
-
`2. \`${PACKAGE} prepare\` configura el repo con la skill y genera este documento.`,
|
|
36
|
-
"3. Tú configuras el entorno en claude.ai con lo que indica la siguiente sección.",
|
|
37
|
-
"4. Una sesión en la nube verifica que el entorno quedó bien.",
|
|
38
|
-
"5. El PR guarda el resultado.",
|
|
39
|
-
"",
|
|
40
|
-
"Este documento se va actualizando. Cuando la skill `cloud-ready`, en local o en la nube, detecta que hace falta un dominio o una variable de entorno nueva, la agrega a `.claude/cloud.json`, regenera este archivo y te lo dice en la sesión. Cuando cambie la sección \"Configurar el entorno en claude.ai\", aplica lo nuevo en claude.ai y vuelve a verificar con `npx agent-cloud-kit verify` desde la rama.",
|
|
41
|
-
].join("\n");
|
|
30
|
+
/** Note at the top: the document grows when the skill finds something new. */
|
|
31
|
+
const UPDATES_NOTE = `> Se actualiza solo cuando la skill \`cloud-ready\` detecta un dominio o una variable nueva. Si cambia, aplícalo en claude.ai y corre \`npx ${PACKAGE} verify\`.`;
|
|
42
32
|
/**
|
|
43
33
|
* Extracts the host of an apt repo URL.
|
|
44
34
|
*
|
|
@@ -80,46 +70,30 @@ function allowedHosts(config) {
|
|
|
80
70
|
*/
|
|
81
71
|
export function renderEnvironmentSection(config, packageVersion) {
|
|
82
72
|
const hosts = allowedHosts(config);
|
|
73
|
+
const code = (items) => items.map((item) => `\`${item}\``).join(", ");
|
|
83
74
|
const lines = [
|
|
84
75
|
"## Configurar el entorno en claude.ai",
|
|
85
76
|
"",
|
|
86
|
-
"
|
|
87
|
-
"",
|
|
88
|
-
"### Network access",
|
|
89
|
-
"",
|
|
90
|
-
'Elige **Custom**, marca "Also include default list of common package managers" y agrega estos dominios:',
|
|
91
|
-
"",
|
|
92
|
-
...(hosts.length ? hosts.map((host) => `- ${host}`) : ["ninguno extra"]),
|
|
77
|
+
"Elige el entorno con `/remote-env` y edítalo en claude.ai/code:",
|
|
93
78
|
"",
|
|
94
|
-
"
|
|
79
|
+
`- **Network access:** Custom y marca "Also include default list of common package managers". Dominios extra: ${hosts.length ? code(hosts) : "ninguno"}.`,
|
|
80
|
+
`- **Variables:** ${config.requiredEnv.length ? `${code(config.requiredEnv)} (solo los nombres; los valores los pones tú)` : "ninguna"}.`,
|
|
81
|
+
"- **Claude GitHub App:** instalado en el repo, o la sesión no puede pushear.",
|
|
82
|
+
"- **Setup script:**",
|
|
95
83
|
"",
|
|
96
84
|
"```bash",
|
|
97
85
|
setupScript(packageVersion),
|
|
98
86
|
"```",
|
|
99
|
-
"",
|
|
100
|
-
"### Variables de entorno",
|
|
101
|
-
"",
|
|
102
87
|
];
|
|
103
|
-
if (config.requiredEnv.length)
|
|
104
|
-
lines.push(
|
|
105
|
-
lines.push("", "Solo los nombres; los valores los pones tú en el entorno. Ojo: quien use el entorno puede leerlas, y no llegan al setup script (solo a la sesión).");
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
lines.push("Ninguna.");
|
|
109
|
-
}
|
|
110
|
-
lines.push("", "### Claude GitHub App", "", "El Claude GitHub App debe estar instalado en el repo. Sin él, la sesión no puede pushear.");
|
|
88
|
+
if (config.requiredEnv.length)
|
|
89
|
+
lines.push("", "> ⚠️ Quien use el entorno puede leer las variables, y no llegan al setup script (solo a la sesión).");
|
|
111
90
|
return lines.join("\n");
|
|
112
91
|
}
|
|
113
|
-
/** The "how to verify" section
|
|
92
|
+
/** The "how to verify" section, one line. */
|
|
114
93
|
const VERIFY_SECTION = [
|
|
115
|
-
"## Verificar
|
|
116
|
-
"",
|
|
117
|
-
"En una sesión nueva en la nube, revisa esto:",
|
|
94
|
+
"## Verificar",
|
|
118
95
|
"",
|
|
119
|
-
`
|
|
120
|
-
"2. `node_modules` existe.",
|
|
121
|
-
"3. Las versiones de `.tool-versions` son las que están instaladas.",
|
|
122
|
-
`4. Al empezar la sesión no hay líneas \`${OUTPUT_PREFIX.trim()}\` de falla.`,
|
|
96
|
+
`Corre \`npx ${PACKAGE} verify\` desde la rama subida: abre una sesión en la nube que revisa \`${PACKAGE} doctor\`, las dependencias, las versiones y las variables, y lo reporta en el PR.`,
|
|
123
97
|
].join("\n");
|
|
124
98
|
/**
|
|
125
99
|
* Resolves the `notes` of the config: the content of the file when it is a relative path to an
|
|
@@ -164,8 +138,8 @@ export function renderManual(input) {
|
|
|
164
138
|
const parts = [
|
|
165
139
|
BEGIN,
|
|
166
140
|
`<!-- Generado por ${PACKAGE} ${input.packageVersion}. No edites entre las marcas. -->`,
|
|
167
|
-
"#
|
|
168
|
-
|
|
141
|
+
"# Claude Code en la nube",
|
|
142
|
+
UPDATES_NOTE,
|
|
169
143
|
renderEnvironmentSection(input.config, input.packageVersion),
|
|
170
144
|
VERIFY_SECTION,
|
|
171
145
|
`## Qué corre en la nube\n\n${notes?.trim() ? notes.trim() : "Nada anotado."}`,
|
package/package.json
CHANGED
|
@@ -71,14 +71,17 @@ No le pidas al usuario una lista de variables secretas ni de dominios: anota en
|
|
|
71
71
|
comprueba ni crees scripts de tests nuevos sin aprobación.
|
|
72
72
|
7. **Escribe el archivo de `notes`:** qué correr en la nube (el comando tal como lo corre el
|
|
73
73
|
repo, lo que hay que levantar antes, cuánto tarda y si va en segundo plano), qué no y por qué.
|
|
74
|
-
|
|
74
|
+
Va dentro de `docs/agent-cloud.md`, así que sé breve: una viñeta por cosa, marcada con ✅ (corre), ⏳ (hay que levantar algo
|
|
75
|
+
antes) o ❌ (no corre), sin párrafos. Por ejemplo:
|
|
75
76
|
|
|
76
77
|
```markdown
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
entorno no permite
|
|
78
|
+
- ✅ `npm test` (~1 min)
|
|
79
|
+
- ⏳ Antes de `npm run test:db`: `docker compose up -d db` (~3 min, en segundo plano)
|
|
80
|
+
- ❌ `npm run test:e2e:prod`: pega a una API externa que el entorno no permite
|
|
80
81
|
```
|
|
81
82
|
|
|
83
|
+
Sin tests: `- El repo no tiene tests; en la nube solo se prepara la máquina.`
|
|
84
|
+
|
|
82
85
|
8. **Si existe `.agents/skills/test-audit/project.md`:** escribe o actualiza su sección "Nube"
|
|
83
86
|
con el mismo resumen; no toques el resto del archivo.
|
|
84
87
|
9. **Corre `agent-cloud-kit manual`** y muéstrale al usuario la sección "Configurar el entorno en
|