@cristiancorreau/forge 2.9.13 → 2.10.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/CHANGELOG.md +25 -0
- package/README.md +8 -3
- package/assets/adapters/claude-code/commands/session-close.md +5 -106
- package/assets/adapters/claude-code/commands/session-start.md +5 -56
- package/assets/adapters/codex/HOOKS.md +55 -0
- package/assets/adapters/codex/commands/session-close.md +5 -45
- package/assets/adapters/codex/commands/session-start.md +6 -41
- package/assets/adapters/opencode/HOOKS.md +31 -3
- package/assets/adapters/opencode/commands/session-close.md +5 -106
- package/assets/adapters/opencode/commands/session-start.md +6 -57
- package/assets/core/hooks/hooks-registry.yaml +18 -31
- package/assets/core/hooks/pre-edit-check.js +108 -0
- package/assets/core/schemas/project.schema.json +5 -0
- package/assets/core/skills/README.md +9 -0
- package/assets/core/skills/session-close/SKILL.md +137 -0
- package/assets/core/skills/session-start/SKILL.md +86 -0
- package/assets/manifest.json +1 -1
- package/dist/cli.js +12 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +11 -0
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +28 -5
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +40 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/scaffold.d.ts.map +1 -1
- package/dist/commands/scaffold.js +107 -4
- package/dist/commands/scaffold.js.map +1 -1
- package/dist/commands/session.d.ts +3 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +78 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +27 -1
- package/dist/commands/validate.js.map +1 -1
- package/dist/lib/catalog.d.ts.map +1 -1
- package/dist/lib/catalog.js +2 -0
- package/dist/lib/catalog.js.map +1 -1
- package/dist/lib/generators/codex.d.ts +1 -0
- package/dist/lib/generators/codex.d.ts.map +1 -1
- package/dist/lib/generators/codex.js +13 -3
- package/dist/lib/generators/codex.js.map +1 -1
- package/dist/lib/generators/kiro.d.ts +2 -0
- package/dist/lib/generators/kiro.d.ts.map +1 -1
- package/dist/lib/generators/kiro.js +32 -0
- package/dist/lib/generators/kiro.js.map +1 -1
- package/dist/lib/generators/opencode.d.ts +9 -0
- package/dist/lib/generators/opencode.d.ts.map +1 -1
- package/dist/lib/generators/opencode.js +64 -1
- package/dist/lib/generators/opencode.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { resolveForgeRoot } from '../lib/paths.js';
|
|
4
|
+
import { bold, dim, cyan } from '../ui/colors.js';
|
|
5
|
+
import { box } from '../ui/box.js';
|
|
6
|
+
const META = {
|
|
7
|
+
start: {
|
|
8
|
+
id: 'session-start',
|
|
9
|
+
command: '/session-start',
|
|
10
|
+
title: 'forge session-start',
|
|
11
|
+
blurb: 'Abre la sesión: detecta el estado del repo y enruta según el escenario.',
|
|
12
|
+
},
|
|
13
|
+
close: {
|
|
14
|
+
id: 'session-close',
|
|
15
|
+
command: '/session-close',
|
|
16
|
+
title: 'forge session-close',
|
|
17
|
+
blurb: 'Cierra la sesión: commit → changeset → daily note → sync → PR.',
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
function help(phase) {
|
|
21
|
+
const m = META[phase];
|
|
22
|
+
return `Usage: forge ${m.id} [options]
|
|
23
|
+
|
|
24
|
+
${m.blurb}
|
|
25
|
+
|
|
26
|
+
Estos comandos son guías para el agente: imprimen el skill central
|
|
27
|
+
core/skills/${m.id}/SKILL.md para que lo ejecutes en tu runtime (${m.command}).
|
|
28
|
+
|
|
29
|
+
Options:
|
|
30
|
+
--json Output the skill metadata and body as JSON
|
|
31
|
+
-h, --help Show this help
|
|
32
|
+
`;
|
|
33
|
+
}
|
|
34
|
+
/** Read the central SKILL.md for the given session phase, if bundled. */
|
|
35
|
+
function readSkillBody(phase) {
|
|
36
|
+
let root;
|
|
37
|
+
try {
|
|
38
|
+
root = resolveForgeRoot();
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
const path = join(root, 'core', 'skills', META[phase].id, 'SKILL.md');
|
|
44
|
+
if (!existsSync(path))
|
|
45
|
+
return null;
|
|
46
|
+
return readFileSync(path, 'utf-8');
|
|
47
|
+
}
|
|
48
|
+
async function run(phase, args) {
|
|
49
|
+
if (args.includes('-h') || args.includes('--help')) {
|
|
50
|
+
process.stdout.write(help(phase));
|
|
51
|
+
return 0;
|
|
52
|
+
}
|
|
53
|
+
const m = META[phase];
|
|
54
|
+
const body = readSkillBody(phase);
|
|
55
|
+
if (args.includes('--json')) {
|
|
56
|
+
console.log(JSON.stringify({ id: m.id, command: m.command, body }, null, 2));
|
|
57
|
+
return body ? 0 : 1;
|
|
58
|
+
}
|
|
59
|
+
console.log(cyan(bold(m.title)) + '\n');
|
|
60
|
+
console.log(dim(m.blurb) + '\n');
|
|
61
|
+
if (!body) {
|
|
62
|
+
console.log(dim(`No se encontró core/skills/${m.id}/SKILL.md en los assets de forge.`));
|
|
63
|
+
console.log(box('Skill', [`${m.command} — ${m.blurb}`]));
|
|
64
|
+
return 1;
|
|
65
|
+
}
|
|
66
|
+
console.log(body.trimEnd() + '\n');
|
|
67
|
+
console.log(box('Skill central', [
|
|
68
|
+
`${cyan(m.command)} — ejecutá estos pasos en tu runtime (Claude Code, OpenCode, Codex).`,
|
|
69
|
+
]));
|
|
70
|
+
return 0;
|
|
71
|
+
}
|
|
72
|
+
export async function sessionStart(args) {
|
|
73
|
+
return run('start', args);
|
|
74
|
+
}
|
|
75
|
+
export async function sessionClose(args) {
|
|
76
|
+
return run('close', args);
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAiEA,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAwE9D"}
|
|
@@ -6,7 +6,7 @@ const require = createRequire(import.meta.url);
|
|
|
6
6
|
const Ajv = require('ajv');
|
|
7
7
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
8
8
|
const addFormats = require('ajv-formats');
|
|
9
|
-
import { findProjectYaml, loadProjectYaml } from '../lib/yaml.js';
|
|
9
|
+
import { findProjectYaml, loadProjectYaml, projectRoot } from '../lib/yaml.js';
|
|
10
10
|
import { resolveForgeRoot } from '../lib/paths.js';
|
|
11
11
|
const HELP = `Usage: forge validate [options]
|
|
12
12
|
|
|
@@ -38,6 +38,28 @@ function businessWarnings(data) {
|
|
|
38
38
|
warnings.push("Sección 'github' ausente — considera integrar con GitHub Projects (v2)");
|
|
39
39
|
return warnings;
|
|
40
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Verifica que cada agente Tier 3 declarado en agents.specialized exista como
|
|
43
|
+
* archivo en .claude/agents/<agente>.md. Devuelve una lista de errores (vacía si
|
|
44
|
+
* todos existen o si no hay agentes especializados declarados).
|
|
45
|
+
*/
|
|
46
|
+
function specializedAgentErrors(data, root) {
|
|
47
|
+
const errors = [];
|
|
48
|
+
const agents = (data.agents ?? null);
|
|
49
|
+
const specialized = agents?.specialized;
|
|
50
|
+
if (!Array.isArray(specialized))
|
|
51
|
+
return errors;
|
|
52
|
+
const agentsDir = join(root, '.claude', 'agents');
|
|
53
|
+
for (const name of specialized) {
|
|
54
|
+
if (typeof name !== 'string')
|
|
55
|
+
continue;
|
|
56
|
+
const file = join(agentsDir, `${name}.md`);
|
|
57
|
+
if (!existsSync(file)) {
|
|
58
|
+
errors.push(`/agents/specialized: el agente Tier 3 '${name}' está en agents.specialized pero no existe .claude/agents/${name}.md`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return errors;
|
|
62
|
+
}
|
|
41
63
|
export async function validate(args) {
|
|
42
64
|
if (args.includes('-h') || args.includes('--help')) {
|
|
43
65
|
process.stdout.write(HELP);
|
|
@@ -81,6 +103,10 @@ export async function validate(args) {
|
|
|
81
103
|
catch {
|
|
82
104
|
// schema not available — skip schema validation
|
|
83
105
|
}
|
|
106
|
+
// Tier 3: cada agente en agents.specialized debe tener su archivo en .claude/agents/.
|
|
107
|
+
if (errors.length === 0) {
|
|
108
|
+
errors = specializedAgentErrors(data, projectRoot(projectYamlPath));
|
|
109
|
+
}
|
|
84
110
|
const warnings = businessWarnings(data);
|
|
85
111
|
const valid = errors.length === 0;
|
|
86
112
|
const result = { valid, errors, warnings };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAW,MAAM,MAAM,CAAC;AAGrC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,8DAA8D;AAC9D,MAAM,GAAG,GAAQ,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC,8DAA8D;AAC9D,MAAM,UAAU,GAAQ,OAAO,CAAC,aAAa,CAAC,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/lib/catalog.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,SAAS;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE;AAC/G,MAAM,WAAW,WAAW;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAAE;AAE3G,eAAO,MAAM,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/lib/catalog.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,SAAS;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE;AAC/G,MAAM,WAAW,WAAW;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAAE;AAE3G,eAAO,MAAM,MAAM,EAAE,SAAS,EAe7B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,WAAW,EAKjC,CAAC;AAEF,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;CAAE,CAiB3G"}
|
package/dist/lib/catalog.js
CHANGED
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
import { existsSync, readdirSync } from 'fs';
|
|
7
7
|
import { join } from 'path';
|
|
8
8
|
export const SKILLS = [
|
|
9
|
+
{ id: 'session-start', command: '/session-start', category: 'Sesión', purpose: 'Abre la sesión: detecta estado del repo y enruta', trigger: '"iniciar sesión", al empezar a trabajar' },
|
|
10
|
+
{ id: 'session-close', command: '/session-close', category: 'Sesión', purpose: 'Cierra la sesión: commit → daily note → sync → PR', trigger: '"cerrar sesión", al terminar de trabajar' },
|
|
9
11
|
{ id: 'spec', command: '/spec', category: 'Desarrollo', purpose: 'Redacta specs siguiendo la plantilla forge', trigger: 'antes de escribir una spec' },
|
|
10
12
|
{ id: 'new-feature', command: '/new-feature', category: 'Desarrollo', purpose: 'Checklist de feature de plan a deploy', trigger: '"nueva feature", "implementar"' },
|
|
11
13
|
{ id: 'security-audit', command: '/security-audit', category: 'Desarrollo', purpose: 'Checklist de seguridad para endpoints y auth', trigger: '"auditar seguridad", "revisar auth"' },
|
package/dist/lib/catalog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/lib/catalog.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/lib/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/lib/generators/codex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/lib/generators/codex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAE5D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CA+EjE"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// Codex has no native blocking hooks: it shares the executable git pre-commit
|
|
2
|
+
// fallback with OpenCode so branch guard + debug detection still run automatically.
|
|
3
|
+
export { generateSharedPreCommitHook } from './opencode.js';
|
|
1
4
|
export function generateCodexAgentsMd(config) {
|
|
2
5
|
const proj = config.project;
|
|
3
6
|
const stack = config.stack ?? {};
|
|
@@ -42,9 +45,16 @@ rm -rf / # Borra sistema
|
|
|
42
45
|
git push --force # Sobreescribe historial remoto
|
|
43
46
|
\`\`\`
|
|
44
47
|
|
|
45
|
-
> Codex no tiene hooks de bloqueo automático como Claude Code
|
|
46
|
-
>
|
|
47
|
-
>
|
|
48
|
+
> Codex no tiene hooks de bloqueo automático nativos como Claude Code. Como
|
|
49
|
+
> complemento, forge genera un git hook compartido en \`.githooks/pre-commit\`
|
|
50
|
+
> (branch guard + detección de debug). Activalo una vez con:
|
|
51
|
+
>
|
|
52
|
+
> \`\`\`
|
|
53
|
+
> git config core.hooksPath .githooks
|
|
54
|
+
> \`\`\`
|
|
55
|
+
>
|
|
56
|
+
> Aún así, ante cualquier comando destructivo en producción, pará y pedí
|
|
57
|
+
> confirmación explícita al humano: el git hook solo corre en \`git commit\`.
|
|
48
58
|
|
|
49
59
|
## Branch guard
|
|
50
60
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/lib/generators/codex.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qBAAqB,CAAC,MAAmB;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IAEnC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,aAAa,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC;IAE7C,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC;IAEzF,OAAO,iBAAiB,IAAI;;;;;gBAKd,IAAI;kBACF,QAAQ;iBACT,KAAK,CAAC,OAAO,IAAI,KAAK;kBACrB,KAAK,CAAC,QAAQ,IAAI,KAAK;;;;EAIvC,SAAS
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/lib/generators/codex.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,oFAAoF;AACpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAE5D,MAAM,UAAU,qBAAqB,CAAC,MAAmB;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IAEnC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,aAAa,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC;IAE7C,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC;IAEzF,OAAO,iBAAiB,IAAI;;;;;gBAKd,IAAI;kBACF,QAAQ;iBACT,KAAK,CAAC,OAAO,IAAI,KAAK;kBACrB,KAAK,CAAC,QAAQ,IAAI,KAAK;;;;EAIvC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDV,CAAC;AACF,CAAC"}
|
|
@@ -4,4 +4,6 @@ export declare function generateKiroStructure(config: ProjectYaml): string;
|
|
|
4
4
|
export declare function generateKiroAgents(config: ProjectYaml): string;
|
|
5
5
|
export declare function generateKiroCommands(deployProvider: string): string;
|
|
6
6
|
export declare function generateKiroBranchGuardHook(): string;
|
|
7
|
+
export declare function generateKiroBashCheckHook(): string;
|
|
8
|
+
export declare function generateKiroPostTurnHook(): string;
|
|
7
9
|
//# sourceMappingURL=kiro.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kiro.d.ts","sourceRoot":"","sources":["../../../src/lib/generators/kiro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAa9C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAsB/D;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CA+BjE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAqC9D;AAED,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAgBnE;AAED,wBAAgB,2BAA2B,IAAI,MAAM,CAcpD"}
|
|
1
|
+
{"version":3,"file":"kiro.d.ts","sourceRoot":"","sources":["../../../src/lib/generators/kiro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAa9C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAsB/D;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CA+BjE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAqC9D;AAED,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAgBnE;AAED,wBAAgB,2BAA2B,IAAI,MAAM,CAcpD;AAGD,wBAAgB,yBAAyB,IAAI,MAAM,CAclD;AAGD,wBAAgB,wBAAwB,IAAI,MAAM,CAcjD"}
|
|
@@ -130,4 +130,36 @@ export function generateKiroBranchGuardHook() {
|
|
|
130
130
|
}
|
|
131
131
|
}, null, 2);
|
|
132
132
|
}
|
|
133
|
+
// Mirrors core/hooks/pre-bash-check.js: blocks destructive commands before they run.
|
|
134
|
+
export function generateKiroBashCheckHook() {
|
|
135
|
+
return JSON.stringify({
|
|
136
|
+
name: 'forge-bash-check',
|
|
137
|
+
description: 'Block destructive commands (DROP TABLE, --force-reset, rm -rf /, git push --force)',
|
|
138
|
+
event: 'PreBash',
|
|
139
|
+
condition: {
|
|
140
|
+
type: 'script',
|
|
141
|
+
script: 'echo "$KIRO_BASH_COMMAND" | grep -qiE "(--force-reset|prisma +migrate +reset|DROP +TABLE|DROP +DATABASE|TRUNCATE|rm +-rf +/|git +push +--force([^-]|$))"'
|
|
142
|
+
},
|
|
143
|
+
action: {
|
|
144
|
+
type: 'block',
|
|
145
|
+
message: 'forge: comando potencialmente destructivo bloqueado. Si apunta a producción, ejecutalo manualmente con plena consciencia.\n Lección 2026-04-28: --force-reset borró 225 usuarios en producción.'
|
|
146
|
+
}
|
|
147
|
+
}, null, 2);
|
|
148
|
+
}
|
|
149
|
+
// Mirrors core/hooks/post-turn-check.sh: warns about leftover debug statements after a turn.
|
|
150
|
+
export function generateKiroPostTurnHook() {
|
|
151
|
+
return JSON.stringify({
|
|
152
|
+
name: 'forge-post-turn-check',
|
|
153
|
+
description: 'After each turn, warn about debug statements left in changed files',
|
|
154
|
+
event: 'PostTurn',
|
|
155
|
+
condition: {
|
|
156
|
+
type: 'script',
|
|
157
|
+
script: 'git diff --name-only HEAD 2>/dev/null | xargs -r grep -nE "(console\\.log\\(|debugger;|binding\\.pry|var_dump\\(|dd\\()" 2>/dev/null | grep -q .'
|
|
158
|
+
},
|
|
159
|
+
action: {
|
|
160
|
+
type: 'warn',
|
|
161
|
+
message: 'forge: se detectaron sentencias de debug (console.log, debugger, binding.pry, var_dump, dd) en archivos modificados. Eliminalas antes de commitear.'
|
|
162
|
+
}
|
|
163
|
+
}, null, 2);
|
|
164
|
+
}
|
|
133
165
|
//# sourceMappingURL=kiro.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kiro.js","sourceRoot":"","sources":["../../../src/lib/generators/kiro.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kiro.js","sourceRoot":"","sources":["../../../src/lib/generators/kiro.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,12 @@
|
|
|
1
1
|
import type { ProjectYaml } from '../yaml.js';
|
|
2
|
+
/**
|
|
3
|
+
* Shared git pre-commit hook. Runtimes without native blocking hooks
|
|
4
|
+
* (OpenCode, Codex) rely on this executable fallback so branch guard and
|
|
5
|
+
* debug detection still run automatically. Install it with:
|
|
6
|
+
* git config core.hooksPath .githooks
|
|
7
|
+
*
|
|
8
|
+
* POSIX sh, zero Python, never blocks on documentation-only edits.
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateSharedPreCommitHook(): string;
|
|
2
11
|
export declare function generateAgentsMd(config: ProjectYaml): string;
|
|
3
12
|
//# sourceMappingURL=opencode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/lib/generators/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/lib/generators/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CA6CpD;AAqED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CA4C5D"}
|
|
@@ -1,3 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared git pre-commit hook. Runtimes without native blocking hooks
|
|
3
|
+
* (OpenCode, Codex) rely on this executable fallback so branch guard and
|
|
4
|
+
* debug detection still run automatically. Install it with:
|
|
5
|
+
* git config core.hooksPath .githooks
|
|
6
|
+
*
|
|
7
|
+
* POSIX sh, zero Python, never blocks on documentation-only edits.
|
|
8
|
+
*/
|
|
9
|
+
export function generateSharedPreCommitHook() {
|
|
10
|
+
return `#!/bin/sh
|
|
11
|
+
# forge — shared git pre-commit hook (fallback for runtimes without native hooks)
|
|
12
|
+
# Generated by forge v2. Enable with: git config core.hooksPath .githooks
|
|
13
|
+
#
|
|
14
|
+
# Guardrails:
|
|
15
|
+
# 1. Branch guard — block commits straight to main/master
|
|
16
|
+
# 2. Debug detection — block leftover console.log/debugger/print/dd/var_dump
|
|
17
|
+
set -eu
|
|
18
|
+
|
|
19
|
+
branch=$(git symbolic-ref --short HEAD 2>/dev/null || echo "")
|
|
20
|
+
staged=$(git diff --cached --name-only --diff-filter=ACM 2>/dev/null || echo "")
|
|
21
|
+
|
|
22
|
+
# Only documentation/config edits are exempt from the branch guard.
|
|
23
|
+
code_staged=$(printf '%s\\n' "$staged" | grep -vE '\\.(md|ya?ml|json|txt)$' || true)
|
|
24
|
+
|
|
25
|
+
if [ "$branch" = "main" ] || [ "$branch" = "master" ]; then
|
|
26
|
+
if [ -n "$code_staged" ]; then
|
|
27
|
+
echo "forge: BLOQUEADO — estás commiteando código en '$branch'." >&2
|
|
28
|
+
echo " Creá una rama de feature antes de commitear:" >&2
|
|
29
|
+
echo " git checkout -b feat/descripcion" >&2
|
|
30
|
+
echo " (solo *.md / *.yaml / *.json / *.txt pueden commitearse en main)" >&2
|
|
31
|
+
exit 1
|
|
32
|
+
fi
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
# Debug detection on staged code files.
|
|
36
|
+
debug_hits=""
|
|
37
|
+
for f in $code_staged; do
|
|
38
|
+
[ -f "$f" ] || continue
|
|
39
|
+
hit=$(grep -nE '(console\\.log\\(|debugger;|binding\\.pry|var_dump\\(|[^a-zA-Z_]dd\\()' "$f" 2>/dev/null || true)
|
|
40
|
+
if [ -n "$hit" ]; then
|
|
41
|
+
debug_hits="$debug_hits\\n$f:\\n$hit"
|
|
42
|
+
fi
|
|
43
|
+
done
|
|
44
|
+
|
|
45
|
+
if [ -n "$debug_hits" ]; then
|
|
46
|
+
echo "forge: BLOQUEADO — sentencias de debug en archivos staged:" >&2
|
|
47
|
+
printf '%b\\n' "$debug_hits" >&2
|
|
48
|
+
echo " Eliminalas (o usá 'git commit --no-verify' bajo tu responsabilidad)." >&2
|
|
49
|
+
exit 1
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
exit 0
|
|
53
|
+
`;
|
|
54
|
+
}
|
|
1
55
|
const AGENT_DESCRIPTIONS = {
|
|
2
56
|
'orchestrator': 'Coordina agentes y descompone tareas complejas',
|
|
3
57
|
'backend-engineer': 'API, base de datos, lógica de negocio',
|
|
@@ -17,7 +71,16 @@ const AGENT_DESCRIPTIONS = {
|
|
|
17
71
|
function guardrailSection() {
|
|
18
72
|
return `## Guardrails de seguridad
|
|
19
73
|
|
|
20
|
-
|
|
74
|
+
OpenCode no tiene hooks PreToolUse/Stop nativos. Branch guard y detección de
|
|
75
|
+
debug se aplican de forma **automática** mediante el git hook compartido en
|
|
76
|
+
\`.githooks/pre-commit\` (generado por forge). Activalo una vez con:
|
|
77
|
+
|
|
78
|
+
\`\`\`
|
|
79
|
+
git config core.hooksPath .githooks
|
|
80
|
+
\`\`\`
|
|
81
|
+
|
|
82
|
+
Las siguientes reglas aplican a TODOS los agentes sin excepción (el git hook
|
|
83
|
+
refuerza branch guard y debug detection en cada \`git commit\`):
|
|
21
84
|
|
|
22
85
|
### Branch guard
|
|
23
86
|
- Verificar siempre la rama antes de hacer cambios: \`git branch --show-current\`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../src/lib/generators/opencode.ts"],"names":[],"mappings":"AAEA,MAAM,kBAAkB,GAA2B;IACjD,cAAc,EAAU,gDAAgD;IACxE,kBAAkB,EAAM,uCAAuC;IAC/D,cAAc,EAAU,0CAA0C;IAClE,mBAAmB,EAAK,sCAAsC;IAC9D,gBAAgB,EAAQ,2CAA2C;IACnE,iBAAiB,EAAO,uCAAuC;IAC/D,oBAAoB,EAAI,0CAA0C;IAClE,eAAe,EAAS,oCAAoC;IAC5D,aAAa,EAAW,qCAAqC;IAC7D,qBAAqB,EAAG,kDAAkD;IAC1E,kBAAkB,EAAM,8CAA8C;IACtE,sBAAsB,EAAE,qCAAqC;IAC7D,aAAa,EAAW,iCAAiC;IACzD,kBAAkB,EAAM,yCAAyC;CAClE,CAAC;AAEF,SAAS,gBAAgB;IACvB,OAAO
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../src/lib/generators/opencode.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CR,CAAC;AACF,CAAC;AAED,MAAM,kBAAkB,GAA2B;IACjD,cAAc,EAAU,gDAAgD;IACxE,kBAAkB,EAAM,uCAAuC;IAC/D,cAAc,EAAU,0CAA0C;IAClE,mBAAmB,EAAK,sCAAsC;IAC9D,gBAAgB,EAAQ,2CAA2C;IACnE,iBAAiB,EAAO,uCAAuC;IAC/D,oBAAoB,EAAI,0CAA0C;IAClE,eAAe,EAAS,oCAAoC;IAC5D,aAAa,EAAW,qCAAqC;IAC7D,qBAAqB,EAAG,kDAAkD;IAC1E,kBAAkB,EAAM,8CAA8C;IACtE,sBAAsB,EAAE,qCAAqC;IAC7D,aAAa,EAAW,iCAAiC;IACzD,kBAAkB,EAAM,yCAAyC;CAClE,CAAC;AAEF,SAAS,gBAAgB;IACvB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BR,CAAC;AACF,CAAC;AAED,SAAS,eAAe,CAAC,cAAsB;IAC7C,OAAO;;;;;;;;;;wBAUe,cAAc;;;CAGrC,CAAC;AACF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAmB;IAClD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IAE3C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,aAAa,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IACnC,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IACvC,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAC;IAEnD,MAAM,SAAS,GAAG,SAAS;SACxB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,kBAAkB,CAAC,CAAC,CAAC,IAAI,sBAAsB,IAAI,CAAC;SAC7E,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,iBAAiB,GAAG,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QACjF,CAAC,CAAC,sCAAsC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QACtG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,iBAAiB,IAAI;;;;;;gBAMd,IAAI;kBACF,QAAQ;iBACT,KAAK,CAAC,OAAO,IAAI,KAAK;kBACrB,KAAK,CAAC,QAAQ,IAAI,KAAK;uBAClB,KAAK,CAAC,QAAQ,IAAI,KAAK;0BACpB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG;;;;;;EAMlD,SAAS,IAAI,gDAAgD;;;;EAI7D,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,IAAI,yBAAyB,CAAC;EACrE,gBAAgB,EAAE,GAAG,iBAAiB,EAAE,CAAC;AAC3C,CAAC"}
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cristiancorreau/forge",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.10.0",
|
|
4
4
|
"description": "Agentic development framework — multi-runtime support for Claude Code, OpenCode, Codex and Kiro",
|
|
5
5
|
"author": "Cristian Correa <cristian@socialweb.cl>",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"build:all": "node scripts/build-assets.mjs && tsc",
|
|
29
29
|
"dev": "tsc --watch",
|
|
30
30
|
"prepublishOnly": "npm run build:all",
|
|
31
|
-
"test": "node --test test/commands.test.mjs test/assets.test.mjs"
|
|
31
|
+
"test": "node --test test/commands.test.mjs test/assets.test.mjs test/hook-spec-gate.test.mjs"
|
|
32
32
|
},
|
|
33
33
|
"files": [
|
|
34
34
|
"dist",
|