@cristiancorreau/forge 2.9.13 → 2.10.1
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 +41 -0
- package/README.md +20 -7
- 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 +6 -1
- 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 +2 -2
- 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 +128 -8
- 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/claude-code.d.ts.map +1 -1
- package/dist/lib/generators/claude-code.js +14 -2
- package/dist/lib/generators/claude-code.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
|
@@ -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.1",
|
|
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 test/claude-md-specialized.test.mjs"
|
|
32
32
|
},
|
|
33
33
|
"files": [
|
|
34
34
|
"dist",
|