gemstack-ai 1.0.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/.agents/rules/01-gemstack-core.md +51 -0
- package/.agents/rules/02-gemstack-constitution.md +44 -0
- package/.agents/rules/03-gemstack-security.md +49 -0
- package/.agents/rules/04-gemstack-infrastructure.md +28 -0
- package/.agents/skills/gemstack-cso/SKILL.md +50 -0
- package/.agents/skills/gemstack-dashboard/SKILL.md +31 -0
- package/.agents/skills/gemstack-guard/SKILL.md +19 -0
- package/.agents/skills/gemstack-handoff/SKILL.md +21 -0
- package/.agents/skills/gemstack-heal/SKILL.md +19 -0
- package/.agents/skills/gemstack-investigate/SKILL.md +25 -0
- package/.agents/skills/gemstack-learn/SKILL.md +18 -0
- package/.agents/skills/gemstack-office-hours/SKILL.md +18 -0
- package/.agents/skills/gemstack-plan/SKILL.md +20 -0
- package/.agents/skills/gemstack-qa/SKILL.md +17 -0
- package/.agents/skills/gemstack-qa-visual/SKILL.md +17 -0
- package/.agents/skills/gemstack-resume/SKILL.md +18 -0
- package/.agents/skills/gemstack-review/SKILL.md +18 -0
- package/.agents/skills/gemstack-sandbox/SKILL.md +19 -0
- package/.agents/skills/gemstack-ship/SKILL.md +19 -0
- package/.agents/skills/gemstack-spec/SKILL.md +24 -0
- package/.agents/skills/gemstack-swarm/SKILL.md +18 -0
- package/.agents/skills/gemstack-tasks/SKILL.md +18 -0
- package/.gemstack/learnings.md +8 -0
- package/.gemstack/state.json +11 -0
- package/.gitattributes +19 -0
- package/.github/workflows/main-ci.yml +32 -0
- package/.github/workflows/pr-ci.yml +31 -0
- package/.github/workflows/publish.yml +52 -0
- package/.github/workflows/release-readiness.yml +43 -0
- package/CHANGELOG.md +35 -0
- package/CODE_OF_CONDUCT.md +49 -0
- package/CONTRIBUTING.md +62 -0
- package/LICENSE +21 -0
- package/MANUAL.md +99 -0
- package/README.md +130 -0
- package/RELEASE_NOTES.md +149 -0
- package/bin/gemstack +31 -0
- package/bin/gemstack-doctor +16 -0
- package/bin/gemstack-doctor.ps1 +38 -0
- package/bin/gemstack.ps1 +49 -0
- package/docs/antigravity.md +6 -0
- package/docs/handoff.md +9 -0
- package/docs/qa/latest-qa.md +25 -0
- package/docs/qa-browser.md +7 -0
- package/docs/quickstart.md +21 -0
- package/docs/release.md +29 -0
- package/docs/reviews/latest-review.md +24 -0
- package/docs/security/latest-security-audit.md +35 -0
- package/docs/security.md +17 -0
- package/docs/skills.md +17 -0
- package/docs/spec-driven-development.md +10 -0
- package/gemstack-ai-1.0.1.tgz +0 -0
- package/handoff.md +45 -0
- package/handoff_archive.md +61 -0
- package/package.json +25 -0
- package/scripts/ci/check-frontmatter.js +54 -0
- package/scripts/ci/check-mojibake.js +44 -0
- package/scripts/ci/check-package-contents.js +32 -0
- package/scripts/ci/check-template-clean.js +46 -0
- package/scripts/ci/smoke-cli.js +30 -0
- package/specs/004-release-automation/plan.md +52 -0
- package/specs/004-release-automation/spec.md +49 -0
- package/specs/004-release-automation/tasks.md +25 -0
- package/specs/005-the-wow-update/plan.md +29 -0
- package/specs/005-the-wow-update/spec.md +32 -0
- package/specs/005-the-wow-update/tasks.md +16 -0
- package/specs/README.md +12 -0
- package/specs/current/plan.md +83 -0
- package/specs/current/spec.md +57 -0
- package/specs/current/tasks.md +98 -0
- package/specs/templates/plan.md +38 -0
- package/specs/templates/spec.md +35 -0
- package/specs/templates/tasks.md +21 -0
- package/specs/v0.2-cli-distribution/plan.md +112 -0
- package/specs/v0.2-cli-distribution/spec.md +27 -0
- package/specs/v0.2-cli-distribution/tasks.md +115 -0
- package/specs/v0.3-ci-cd/plan.md +83 -0
- package/specs/v0.3-ci-cd/spec.md +57 -0
- package/specs/v0.3-ci-cd/tasks.md +98 -0
- package/src/cli.js +64 -0
- package/src/commands/doctor.js +50 -0
- package/src/commands/hooks.js +67 -0
- package/src/commands/init.js +90 -0
- package/src/commands/install.js +72 -0
- package/src/commands/list.js +20 -0
- package/src/commands/show.js +18 -0
- package/src/commands/update.js +88 -0
- package/src/lib/backup.js +29 -0
- package/src/lib/filesystem-safe.js +22 -0
- package/src/lib/gitignore.js +19 -0
- package/src/lib/logger.js +6 -0
- package/src/lib/manifest.js +25 -0
- package/src/lib/parser.js +27 -0
- package/src/mcp-server.js +101 -0
- package/template/.agents/rules/01-gemstack-core.md +51 -0
- package/template/.agents/rules/02-gemstack-constitution.md +44 -0
- package/template/.agents/rules/03-gemstack-security.md +49 -0
- package/template/.agents/rules/04-gemstack-infrastructure.md +28 -0
- package/template/.agents/skills/gemstack-cso/SKILL.md +50 -0
- package/template/.agents/skills/gemstack-dashboard/SKILL.md +31 -0
- package/template/.agents/skills/gemstack-guard/SKILL.md +19 -0
- package/template/.agents/skills/gemstack-handoff/SKILL.md +21 -0
- package/template/.agents/skills/gemstack-heal/SKILL.md +19 -0
- package/template/.agents/skills/gemstack-investigate/SKILL.md +25 -0
- package/template/.agents/skills/gemstack-learn/SKILL.md +18 -0
- package/template/.agents/skills/gemstack-office-hours/SKILL.md +18 -0
- package/template/.agents/skills/gemstack-plan/SKILL.md +20 -0
- package/template/.agents/skills/gemstack-qa/SKILL.md +17 -0
- package/template/.agents/skills/gemstack-qa-visual/SKILL.md +17 -0
- package/template/.agents/skills/gemstack-resume/SKILL.md +18 -0
- package/template/.agents/skills/gemstack-review/SKILL.md +18 -0
- package/template/.agents/skills/gemstack-sandbox/SKILL.md +19 -0
- package/template/.agents/skills/gemstack-ship/SKILL.md +19 -0
- package/template/.agents/skills/gemstack-spec/SKILL.md +24 -0
- package/template/.agents/skills/gemstack-swarm/SKILL.md +18 -0
- package/template/.agents/skills/gemstack-tasks/SKILL.md +18 -0
- package/template/.gemstack/learnings.md +3 -0
- package/template/.gemstack/state.json +4 -0
- package/template/docs/antigravity.md +6 -0
- package/template/docs/handoff.md +9 -0
- package/template/docs/qa/latest-qa.md +25 -0
- package/template/docs/qa-browser.md +7 -0
- package/template/docs/quickstart.md +21 -0
- package/template/docs/release.md +10 -0
- package/template/docs/reviews/latest-review.md +19 -0
- package/template/docs/security/latest-security-audit.md +37 -0
- package/template/docs/security.md +17 -0
- package/template/docs/skills.md +17 -0
- package/template/docs/spec-driven-development.md +10 -0
- package/template/handoff.md +11 -0
- package/template/handoff_archive.md +3 -0
- package/template/specs/current/plan.md +5 -0
- package/template/specs/current/spec.md +7 -0
- package/template/specs/current/tasks.md +3 -0
- package/template/specs/templates/plan.md +38 -0
- package/template/specs/templates/spec.md +35 -0
- package/template/specs/templates/tasks.md +21 -0
package/RELEASE_NOTES.md
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Gemstack Release Notes
|
|
2
|
+
|
|
3
|
+
# Gemstack v0.3.0
|
|
4
|
+
|
|
5
|
+
## Highlights
|
|
6
|
+
- GitHub Actions CI
|
|
7
|
+
- PR CI on Ubuntu with Node 18/20
|
|
8
|
+
- Main CI cross-platform matrix on Ubuntu, Windows, macOS with Node 18/20
|
|
9
|
+
- Manual release-readiness workflow
|
|
10
|
+
- Zero-dependency CI scripts under scripts/ci/
|
|
11
|
+
- Frontmatter validation
|
|
12
|
+
- Template cleanliness validation
|
|
13
|
+
- Mojibake detection
|
|
14
|
+
- Package content validation
|
|
15
|
+
- CLI smoke tests
|
|
16
|
+
- SecureDocs smoke tests
|
|
17
|
+
- Artifact generation for npm tarball
|
|
18
|
+
- No npm publish automation
|
|
19
|
+
|
|
20
|
+
## Validation
|
|
21
|
+
- `npm test`: PASS
|
|
22
|
+
- `npm run ci:all`: PASS
|
|
23
|
+
- `npm run ci:demo`: PASS
|
|
24
|
+
- `npm run pack:dry`: PASS
|
|
25
|
+
- `main-ci` result: SUCCESS (expected)
|
|
26
|
+
- `release-readiness` result: SUCCESS (expected)
|
|
27
|
+
- artifact generated: `gemstack-npm-tarball`
|
|
28
|
+
|
|
29
|
+
## Safety
|
|
30
|
+
- no npm publish
|
|
31
|
+
- no automatic GitHub Release
|
|
32
|
+
- no automatic tag creation by workflow
|
|
33
|
+
- no secrets printed in logs
|
|
34
|
+
- package contents checked
|
|
35
|
+
- template cleanliness checked
|
|
36
|
+
|
|
37
|
+
## Known limitations
|
|
38
|
+
- npm publish still manual/future
|
|
39
|
+
- GitHub Release still manual/future
|
|
40
|
+
- CI scripts are custom zero-deps, not full linters
|
|
41
|
+
- release artifact downloads from GitHub UI may be zipped by GitHub
|
|
42
|
+
|
|
43
|
+
## Next
|
|
44
|
+
- v0.4 or future: npm publish planning
|
|
45
|
+
- GitHub Release automation planning
|
|
46
|
+
- better update diff UX
|
|
47
|
+
- deeper symlink/path tests
|
|
48
|
+
- optional browser QA automation
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
# Gemstack v0.2.0
|
|
53
|
+
|
|
54
|
+
## Highlights
|
|
55
|
+
- **Zero-dependency Node CLI**: `gemstack init` and `gemstack update` for easy local-first scaffolding.
|
|
56
|
+
- **Installable Scaffold**: Separation of codebase in `src/` and cleanly replicable agents/skills in `template/`.
|
|
57
|
+
- **Manifest & Safety**: Idempotent installation managed via `.gemstack/manifest.json` ensuring no overwritten custom files.
|
|
58
|
+
- **Backups System**: Mandatory automatic rollback copy placed in `.gemstack/backups/<timestamp>/` when force updating Gemstack-owned files.
|
|
59
|
+
- **Cryptography Checksums**: Used `crypto` module (SHA-256) to ensure template vs user-drift.
|
|
60
|
+
- **Path Traversal Guard**: Deep node.js native hardening mapping absolute resolution strings `path.relative()` blocking malicious escalations.
|
|
61
|
+
- **Node:Test**: Comprehensive local `node:test` suite for the `cli.js` installer without needing Jest or third party supply-chain vectors.
|
|
62
|
+
- **Tested Packaging**: Verified local compatibility via `npm link` and `npm pack`.
|
|
63
|
+
|
|
64
|
+
## Safety
|
|
65
|
+
- No destructive overwrite by default.
|
|
66
|
+
- No `stdin` blocking prompts in `v0.2.0` (fail-fast with `--yes` suggestion).
|
|
67
|
+
- No `npm publish` executed yet.
|
|
68
|
+
- Backups execute silently before replacement (no leaking secrets to stdout).
|
|
69
|
+
- `handoff.md` and user files are strictly skipped.
|
|
70
|
+
|
|
71
|
+
## Validation
|
|
72
|
+
- `npm test` 100% passes native tests.
|
|
73
|
+
- `npm run pack:dry` generated correct package structure strictly ignoring temporary dumps.
|
|
74
|
+
- `npm link` tested efficiently.
|
|
75
|
+
- `npm pack` (tarball) fully tested inside isolated dummy-project folder via `npx gemstack init --dry-run`.
|
|
76
|
+
|
|
77
|
+
## Known limitations
|
|
78
|
+
- Not published to npm yet.
|
|
79
|
+
- No GitHub Actions yet.
|
|
80
|
+
- Update conflict UX can be improved to feature rich diffs.
|
|
81
|
+
- Symlink hardening may need more tests in v0.3.
|
|
82
|
+
- Browser QA still manual/documented.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
# Gemstack v0.1.0
|
|
87
|
+
- Antigravity-native `.agents/rules` and `.agents/skills` structure
|
|
88
|
+
- Spec-Driven Development workflow
|
|
89
|
+
- Handoff memory system
|
|
90
|
+
- Security/CSO checklist
|
|
91
|
+
- SecureDocs demo app
|
|
92
|
+
- Anti-IDOR smoke tests
|
|
93
|
+
- PowerShell and Unix/Git Bash CLI helpers
|
|
94
|
+
|
|
95
|
+
## Included Skills
|
|
96
|
+
- gemstack-handoff
|
|
97
|
+
- gemstack-resume
|
|
98
|
+
- gemstack-office-hours
|
|
99
|
+
- gemstack-spec
|
|
100
|
+
- gemstack-plan
|
|
101
|
+
- gemstack-tasks
|
|
102
|
+
- gemstack-review
|
|
103
|
+
- gemstack-investigate
|
|
104
|
+
- gemstack-qa
|
|
105
|
+
- gemstack-ship
|
|
106
|
+
- gemstack-cso
|
|
107
|
+
- gemstack-learn
|
|
108
|
+
- gemstack-guard
|
|
109
|
+
|
|
110
|
+
## Demo
|
|
111
|
+
SecureDocs is included in `demo-app/` to validate the framework. Features:
|
|
112
|
+
- Express + SQLite + Vanilla JS
|
|
113
|
+
- CRUD de documentos
|
|
114
|
+
- `X-Mock-User-Id` como mock auth
|
|
115
|
+
- smoke tests anti-IDOR automáticos
|
|
116
|
+
- `npm run smoke`
|
|
117
|
+
|
|
118
|
+
## How to try
|
|
119
|
+
**PowerShell:**
|
|
120
|
+
```powershell
|
|
121
|
+
.\bin\gemstack-doctor.ps1
|
|
122
|
+
.\bin\gemstack.ps1 list
|
|
123
|
+
cd demo-app
|
|
124
|
+
npm install
|
|
125
|
+
npm run smoke
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Unix/Git Bash:**
|
|
129
|
+
```bash
|
|
130
|
+
./bin/gemstack-doctor
|
|
131
|
+
./bin/gemstack list
|
|
132
|
+
cd demo-app
|
|
133
|
+
npm install
|
|
134
|
+
npm run smoke
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Known limitations
|
|
138
|
+
- No npm package yet
|
|
139
|
+
- Mock auth only in demo
|
|
140
|
+
- No full automated routing tests yet
|
|
141
|
+
- Browser QA is documented but not fully automated
|
|
142
|
+
- No GitHub Actions yet
|
|
143
|
+
|
|
144
|
+
## Next
|
|
145
|
+
- v0.2 specs
|
|
146
|
+
- installer/package distribution
|
|
147
|
+
- GitHub Actions
|
|
148
|
+
- more robust QA/browser automation
|
|
149
|
+
- richer security checks
|
package/bin/gemstack
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Gemstack CLI
|
|
3
|
+
|
|
4
|
+
COMMAND=$1
|
|
5
|
+
|
|
6
|
+
case $COMMAND in
|
|
7
|
+
init)
|
|
8
|
+
echo "🚀 Iniciando Gemstack v0.1..."
|
|
9
|
+
mkdir -p .agents/rules .agents/skills .gemstack specs/current specs/templates docs bin
|
|
10
|
+
echo "✅ Estructura creada."
|
|
11
|
+
;;
|
|
12
|
+
list)
|
|
13
|
+
echo "📂 Skills instalados:"
|
|
14
|
+
ls -1 .agents/skills/
|
|
15
|
+
;;
|
|
16
|
+
show)
|
|
17
|
+
cat ".agents/skills/$2/SKILL.md" 2>/dev/null || echo "❌ Skill no encontrado"
|
|
18
|
+
;;
|
|
19
|
+
doctor)
|
|
20
|
+
bash ./bin/gemstack-doctor
|
|
21
|
+
;;
|
|
22
|
+
handoff)
|
|
23
|
+
cat handoff.md
|
|
24
|
+
;;
|
|
25
|
+
security-audit)
|
|
26
|
+
echo "Para correr un audit real, invoca /cso en tu chat con Antigravity."
|
|
27
|
+
;;
|
|
28
|
+
*)
|
|
29
|
+
echo "Uso: gemstack {init|list|show <skill>|doctor|handoff|security-audit}"
|
|
30
|
+
;;
|
|
31
|
+
esac
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Gemstack Doctor CLI
|
|
3
|
+
echo "🩺 Gemstack Doctor"
|
|
4
|
+
if command -v git >/dev/null 2>&1; then echo "✅ Git instalado"; else echo "❌ Git no instalado"; exit 1; fi
|
|
5
|
+
if [ -d ".git" ]; then echo "✅ Repositorio Git detectado"; else echo "❌ No es un repositorio Git"; exit 1; fi
|
|
6
|
+
if [ -d ".agents/rules" ]; then echo "✅ .agents/rules existe"; else echo "❌ Falta .agents/rules"; exit 1; fi
|
|
7
|
+
if [ -d ".agents/skills" ]; then echo "✅ .agents/skills existe"; else echo "❌ Falta .agents/skills"; exit 1; fi
|
|
8
|
+
if [ -d ".gemstack" ]; then echo "✅ .gemstack existe"; else echo "❌ Falta .gemstack"; exit 1; fi
|
|
9
|
+
if [ -d "specs/current" ]; then echo "✅ specs/current existe"; else echo "❌ Falta specs/current"; exit 1; fi
|
|
10
|
+
|
|
11
|
+
if [ -f "handoff.md" ]; then echo "✅ handoff.md existe"; else touch handoff.md && echo "✅ handoff.md creado"; fi
|
|
12
|
+
if [ -f "handoff_archive.md" ]; then echo "✅ handoff_archive.md existe"; else touch handoff_archive.md && echo "✅ handoff_archive.md creado"; fi
|
|
13
|
+
|
|
14
|
+
if command -v node >/dev/null 2>&1; then echo "✅ Node detectado"; else echo "⚠️ Node no detectado (opcional)"; fi
|
|
15
|
+
echo "💡 Antigravity Browser nativo: Usa /browser en Antigravity, o instala Playwright si ejecutas headless."
|
|
16
|
+
echo "✅ Diagnóstico completado."
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
[Console]::OutputEncoding = [System.Text.UTF8Encoding]::new()
|
|
2
|
+
$OutputEncoding = [System.Text.UTF8Encoding]::new()
|
|
3
|
+
|
|
4
|
+
$ErrorActionPreference = "Continue"
|
|
5
|
+
|
|
6
|
+
Write-Host "[INFO] Gemstack Doctor"
|
|
7
|
+
|
|
8
|
+
# Git check
|
|
9
|
+
try {
|
|
10
|
+
$gitVer = git --version 2>$null
|
|
11
|
+
if ($gitVer -match "git version") { Write-Host "[OK] Git instalado" } else { Write-Host "[ERROR] Git no instalado"; exit 1 }
|
|
12
|
+
} catch {
|
|
13
|
+
Write-Host "[ERROR] Git no instalado"
|
|
14
|
+
exit 1
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (Test-Path ".git") { Write-Host "[OK] Repositorio Git detectado" } else { Write-Host "[ERROR] No es un repositorio Git"; exit 1 }
|
|
18
|
+
if (Test-Path ".agents/rules") { Write-Host "[OK] .agents/rules existe" } else { Write-Host "[ERROR] Falta .agents/rules"; exit 1 }
|
|
19
|
+
if (Test-Path ".agents/skills") { Write-Host "[OK] .agents/skills existe" } else { Write-Host "[ERROR] Falta .agents/skills"; exit 1 }
|
|
20
|
+
if (Test-Path ".gemstack") { Write-Host "[OK] .gemstack existe" } else { Write-Host "[ERROR] Falta .gemstack"; exit 1 }
|
|
21
|
+
if (Test-Path "specs/current") { Write-Host "[OK] specs/current existe" } else { Write-Host "[ERROR] Falta specs/current"; exit 1 }
|
|
22
|
+
|
|
23
|
+
if (Test-Path "handoff.md") { Write-Host "[OK] handoff.md existe" } else { New-Item -ItemType File -Path "handoff.md" | Out-Null; Write-Host "[OK] handoff.md creado" }
|
|
24
|
+
if (Test-Path "handoff_archive.md") { Write-Host "[OK] handoff_archive.md existe" } else { New-Item -ItemType File -Path "handoff_archive.md" | Out-Null; Write-Host "[OK] handoff_archive.md creado" }
|
|
25
|
+
|
|
26
|
+
# Node
|
|
27
|
+
try {
|
|
28
|
+
$nodeVer = node -v 2>$null
|
|
29
|
+
if ($nodeVer -match "v") { Write-Host "[OK] Node detectado" } else { Write-Host "[WARN] Node no detectado (opcional)" }
|
|
30
|
+
} catch {
|
|
31
|
+
Write-Host "[WARN] Node no detectado (opcional)"
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
# PowerShell
|
|
35
|
+
Write-Host "[OK] PowerShell funcional"
|
|
36
|
+
|
|
37
|
+
Write-Host "[INFO] Antigravity Browser nativo: Usa /browser en Antigravity, o instala Playwright si ejecutas headless."
|
|
38
|
+
Write-Host "[OK] Diagnostico completado."
|
package/bin/gemstack.ps1
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
param(
|
|
2
|
+
[string]$Command = "",
|
|
3
|
+
[string]$Arg1 = ""
|
|
4
|
+
)
|
|
5
|
+
|
|
6
|
+
[Console]::OutputEncoding = [System.Text.UTF8Encoding]::new()
|
|
7
|
+
$OutputEncoding = [System.Text.UTF8Encoding]::new()
|
|
8
|
+
|
|
9
|
+
$ErrorActionPreference = "Stop"
|
|
10
|
+
|
|
11
|
+
switch ($Command) {
|
|
12
|
+
"init" {
|
|
13
|
+
Write-Host "[INIT] Iniciando Gemstack v0.1..."
|
|
14
|
+
New-Item -ItemType Directory -Force -Path ".agents/rules", ".agents/skills", ".gemstack", "specs/current", "specs/templates", "docs", "bin" | Out-Null
|
|
15
|
+
Write-Host "[OK] Estructura creada."
|
|
16
|
+
}
|
|
17
|
+
"list" {
|
|
18
|
+
Write-Host "[LIST] Skills instalados:"
|
|
19
|
+
Get-ChildItem -Path ".agents/skills" -Directory | Select-Object -ExpandProperty Name
|
|
20
|
+
}
|
|
21
|
+
"show" {
|
|
22
|
+
if (-not [string]::IsNullOrWhiteSpace($Arg1)) {
|
|
23
|
+
$path = ".agents/skills\$Arg1\SKILL.md"
|
|
24
|
+
if (Test-Path $path) {
|
|
25
|
+
Get-Content $path -Encoding UTF8
|
|
26
|
+
} else {
|
|
27
|
+
Write-Host "[ERROR] Skill no encontrado: $Arg1"
|
|
28
|
+
}
|
|
29
|
+
} else {
|
|
30
|
+
Write-Host "[ERROR] Debes especificar un skill."
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
"doctor" {
|
|
34
|
+
& (Join-Path $PSScriptRoot "gemstack-doctor.ps1")
|
|
35
|
+
}
|
|
36
|
+
"handoff" {
|
|
37
|
+
if (Test-Path "handoff.md") {
|
|
38
|
+
Get-Content "handoff.md" -Encoding UTF8
|
|
39
|
+
} else {
|
|
40
|
+
Write-Host "[ERROR] handoff.md no existe aun."
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
"security-audit" {
|
|
44
|
+
Write-Host "[INFO] Para correr un audit real, invoca /cso en tu chat con Antigravity."
|
|
45
|
+
}
|
|
46
|
+
default {
|
|
47
|
+
Write-Host "Uso: .\bin\gemstack.ps1 {init|list|show <skill>|doctor|handoff|security-audit}"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# Integración con Google Antigravity
|
|
2
|
+
|
|
3
|
+
Gemstack aprovecha el ecosistema nativo de Antigravity:
|
|
4
|
+
- **Rules (`.agents/rules/`)**: Mapea pseudo-comandos (ej. `/handoff`) para guiar a Gemini.
|
|
5
|
+
- **Skills (`.agents/skills/`)**: Utiliza *Progressive Disclosure* mediante validaciones de frontmatter `triggers`.
|
|
6
|
+
- **Compatibilidad Dual**: Scripts integrados garantizan que puedes testear el contexto y estado tanto desde Unix (`./bin/gemstack`) como de Windows de forma nativa (`.\bin\gemstack.ps1`).
|
package/docs/handoff.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# El Sistema Handoff
|
|
2
|
+
|
|
3
|
+
El archivo `handoff.md` es la memoria de tu proyecto.
|
|
4
|
+
|
|
5
|
+
## Reglas
|
|
6
|
+
1. Siempre se genera o actualiza al final de la sesión.
|
|
7
|
+
2. Contiene 5 partes: Objetivo, Estado actual, Archivos tocados, Intentos fallidos y Próximos pasos.
|
|
8
|
+
3. **Intentos Fallidos NUNCA se borran**: Previenen que Gemini cometa el mismo error (loops de debugging).
|
|
9
|
+
4. **Archive**: Para evitar que consuma toda la ventana de contexto, el agente mueve las entradas antiguas a `handoff_archive.md` cuando la lista crece demasiado, pero mantiene siempre viva la referencia.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Latest QA Report
|
|
2
|
+
**Date:** 2026-08-19
|
|
3
|
+
|
|
4
|
+
## QA Flow: SecureDocs
|
|
5
|
+
|
|
6
|
+
### Entorno de Prueba
|
|
7
|
+
- Node.js (v18+)
|
|
8
|
+
- Automatizado vía `npm run smoke`
|
|
9
|
+
|
|
10
|
+
### Resultados de Smoke Tests
|
|
11
|
+
Los smoke tests ejecutaron exitosamente los siguientes escenarios:
|
|
12
|
+
- `[OK]` Users fetched correctly
|
|
13
|
+
- `[OK]` Alice created document
|
|
14
|
+
- `[OK]` Bob blocked from reading Alice's doc (Status 404)
|
|
15
|
+
- `[OK]` Bob blocked from deleting Alice's doc (Status 404)
|
|
16
|
+
- `[OK]` Bob created doc with malicious payload
|
|
17
|
+
- `[OK]` Malicious payload ignored: Doc does not belong to Alice
|
|
18
|
+
- `[OK]` Malicious payload ignored: Doc belongs to Bob safely
|
|
19
|
+
|
|
20
|
+
### Casos de Prueba Ejecutados Manualmente / API
|
|
21
|
+
1. **[PASS] Selección de Usuario:** Cambiar en el `<select>` entre Alice y Bob recarga exitosamente la lista de documentos (`loadDocs`).
|
|
22
|
+
2. **[PASS] Testing XSS Básico:** Se inyectó `<script>alert("Hacked")</script>` en el título. El documento se listó en la UI de Alice como un string literal gracias a la codificación DOM generada por `textContent`.
|
|
23
|
+
|
|
24
|
+
### Conclusión
|
|
25
|
+
- Todos los smoke tests pasan con exit code `0`. Sin bugs bloqueantes detectados. El QA confirma la mitigación de IDOR.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# QA & Browser Testing
|
|
2
|
+
|
|
3
|
+
Usa `/qa` o `/qa-only` para validar tu código contra el `spec.md`.
|
|
4
|
+
|
|
5
|
+
## Herramientas Visuales
|
|
6
|
+
Si desarrollas frontend, puedes pedirle a Antigravity que abra el navegador usando su comando nativo `/browser` para navegar por el sitio local y validar el UI manualmente.
|
|
7
|
+
Alternativamente, si tienes pruebas e2e automatizadas con **Playwright** o **Cypress**, Gemstack puede ejecutarlas y parsear sus resultados durante la fase de QA.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Gemstack Quickstart
|
|
2
|
+
|
|
3
|
+
1. **Inicializa el entorno**:
|
|
4
|
+
- *Unix:* `./bin/gemstack init`
|
|
5
|
+
- *Windows:* `.\bin\gemstack.ps1 init`
|
|
6
|
+
2. **Valida la instalación**:
|
|
7
|
+
- *Unix:* `./bin/gemstack doctor`
|
|
8
|
+
- *Windows:* `.\bin\gemstack-doctor.ps1`
|
|
9
|
+
3. **Tu primera sesión**:
|
|
10
|
+
- Inicia con `/office-hours` para discutir la arquitectura.
|
|
11
|
+
- Escribe `/specify quiero añadir autenticación con JWT`.
|
|
12
|
+
- Revisa `specs/current/spec.md`.
|
|
13
|
+
- Escribe `/plan` para generar la estrategia técnica.
|
|
14
|
+
- Escribe `/tasks` para desglosar la implementación.
|
|
15
|
+
- Escribe `/review` para chequear tu código.
|
|
16
|
+
4. **Validación y Cierre**:
|
|
17
|
+
- Corre `/cso` y `/qa`.
|
|
18
|
+
- Escribe `/ship` para preparar los commits.
|
|
19
|
+
5. **Pausa**: Escribe `/handoff` al final de la sesión.
|
|
20
|
+
6. **Retorno**: Abre chat limpio y escribe:
|
|
21
|
+
> "Lee handoff.md y continúa desde los próximos pasos"
|
package/docs/release.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Gemstack Release Process
|
|
2
|
+
|
|
3
|
+
Gemstack is protected by a multi-stage CI/CD pipeline using GitHub Actions. No release process is entirely automated for NPM publishing (for security reasons), so all `npm publish` executions are strictly manual post-verification.
|
|
4
|
+
|
|
5
|
+
## CI Workflows
|
|
6
|
+
|
|
7
|
+
1. **`pr-ci.yml`**: Runs on `pull_request` to `main`. This is a fast verification matrix running strictly on `ubuntu-latest` with Node 18.x and 20.x. It executes all unit tests, CLI smoke tests, and cleanliness verifications.
|
|
8
|
+
2. **`main-ci.yml`**: Runs on `push` to `main`. Full multi-OS matrix (`ubuntu-latest`, `windows-latest`, `macos-latest`) verifying absolute cross-platform integrity.
|
|
9
|
+
3. **`release-readiness.yml`**: A `workflow_dispatch` manual action. It tests the creation of a `.tgz` via `npm pack`, installs it in a dummy project to guarantee tarball structure, and exposes the `gemstack-npm-tarball` as a downloadable GitHub Artifact. Note: GitHub zips this artifact, so you will extract it to get the inner `.tgz`.
|
|
10
|
+
|
|
11
|
+
## Local Verifications
|
|
12
|
+
|
|
13
|
+
Before merging or triggering release readiness, you can test everything locally using:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# Run unit tests
|
|
17
|
+
npm test
|
|
18
|
+
|
|
19
|
+
# Run all zero-deps CI validators
|
|
20
|
+
npm run ci:all
|
|
21
|
+
|
|
22
|
+
# Run Demo-App smoke tests (IDOR validation)
|
|
23
|
+
npm run ci:demo
|
|
24
|
+
|
|
25
|
+
# Validate tarball contents
|
|
26
|
+
npm run pack:dry
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
*(Note: We never automatically tag or publish to NPM via CI. The framework focuses entirely on robust local-first scaffolding).*
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Latest Review
|
|
2
|
+
**Date:** 2026-08-19
|
|
3
|
+
|
|
4
|
+
## Overview
|
|
5
|
+
Revisión arquitectónica de Gemstack CLI v0.2 (Zero-dependency installer).
|
|
6
|
+
|
|
7
|
+
## Archivos Revisados
|
|
8
|
+
- `src/cli.js`, `src/lib/*.js`, `src/commands/*.js`
|
|
9
|
+
- `tests/init.test.js`
|
|
10
|
+
|
|
11
|
+
## Latest Review (v0.3.0)
|
|
12
|
+
- **Workflows**: Implementados `pr-ci.yml`, `main-ci.yml` y `release-readiness.yml` para validación automatizada cross-platform sin auto-publish.
|
|
13
|
+
- **Scripts CI**: Creados scripts en `scripts/ci/` zero-deps para parseo de YAML (`check-frontmatter`), limpieza de estado (`check-template-clean`), detección de mojibake (`check-mojibake`), análisis del npm pack (`check-package-contents`) y smoke testing interactivo (`smoke-cli.js`).
|
|
14
|
+
- **Line Endings**: Inyectado `.gitattributes` conservador forzando CR/LF de forma predictiva y cuidando hashes SHA-256.
|
|
15
|
+
- **Cross-Platform**: Verificadas APIs node agnósticas a OS en lugar de bash scripts. `smoke-cli.js` usa `os.tmpdir()`.
|
|
16
|
+
- **Demo Smoke**: El workflow prueba las defensas IDOR con `npm run ci:demo` en cada iteración.
|
|
17
|
+
|
|
18
|
+
## Hallazgos
|
|
19
|
+
- **Fixed:** Parser CLI manual procesa correctamente banderas binarias sin dependencias externas.
|
|
20
|
+
- **Fixed:** Test suite de Node.js corre rápido (~200ms) aisladamente, y las pruebas validan comportamiento de dry-run.
|
|
21
|
+
- **Fixed:** `.npmignore` se añadió excluyendo directorios ajenos (`demo-app/`, `tests/`) logrando un paquete eficiente.
|
|
22
|
+
- **Follow-up for v0.2 Release:** Cuando estemos listos para publicar, necesitaremos documentar o preparar automatización GitHub Actions para testing continuo.
|
|
23
|
+
|
|
24
|
+
**Decisión**: APPROVED. El CLI mantiene filosofía "safety-first" y "zero-deps".
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Latest Security Audit
|
|
2
|
+
**Date:** 2026-08-19
|
|
3
|
+
|
|
4
|
+
## CSO Report: Gemstack CLI v0.2 Installer
|
|
5
|
+
|
|
6
|
+
### 1. Path Traversal & Symlinks
|
|
7
|
+
- **Status:** [Fixed]
|
|
8
|
+
- **Severity:** Critical
|
|
9
|
+
- **Detail:** Verificado en `src/lib/filesystem-safe.js`. `resolveSafe` verifica con `startsWith()` que el directorio resultante nunca escape la carpeta target, bloqueando `../../` payloads o configuraciones ambiguas.
|
|
10
|
+
|
|
11
|
+
### 2. Supply Chain Risks
|
|
12
|
+
- **Status:** [Fixed]
|
|
13
|
+
- **Severity:** High
|
|
14
|
+
- **Detail:** Se decidió implementar CLI con **cero dependencias**. `package.json` está libre de packages externos en runtime. Elimina 100% ataques de cadena de suministro vía NPM sobre Gemstack CLI actual.
|
|
15
|
+
|
|
16
|
+
### 3. Ejecución de código arbitrario
|
|
17
|
+
- **Status:** [Fixed]
|
|
18
|
+
- **Severity:** High
|
|
19
|
+
- **Detail:** El comando `init` realiza operaciones FS puras de lectura y escritura. No emite llamadas a `child_process.exec`, impidiendo Remote Code Execution en el target.
|
|
20
|
+
|
|
21
|
+
### 4. Overwrite de data y backups sin secretos
|
|
22
|
+
- **Status:** [Fixed]
|
|
23
|
+
- **Severity:** Medium
|
|
24
|
+
- **Detail:** `src/lib/backup.js` realiza el traslado físico en caso de colisión. El logging de backup fue revisado para sólo imprimir en consola el *path* y no el contenido del archivo, lo que protege contra fugas de credenciales locales hacia CI/CD logs.
|
|
25
|
+
|
|
26
|
+
## Latest Security Audit (v0.3.0)
|
|
27
|
+
- **Secrets Leakage**: `npm pack --dry-run` and smoke tests run locally within temporary paths blocking any hardcoded secrets. `GITHUB_TOKEN` is constrained. No variables dumped.
|
|
28
|
+
- **Artifact Leakage**: The template cleanliness check strictly blocks any real project history, DBs (`.sqlite`), or logs from being bundled into the tarball.
|
|
29
|
+
- **NPM Publish**: NPM Publishing remains entirely manual; no GitHub Action has publish permissions, neutralizing automated supply-chain contamination.
|
|
30
|
+
- **Path Safety (Indirect)**: Workflows rely on standard Actions avoiding risky user-input reflection in shells.
|
|
31
|
+
- **CI Permissions**: Standard read-only intent. No aggressive caching strategies introduced that would leak secure payloads across branches.
|
|
32
|
+
|
|
33
|
+
All checks passed.
|
|
34
|
+
|
|
35
|
+
**Decisión General**: APPROVED. El diseño priorizó defensibilidad por encima de comodidad, resultando en un instalador aséptico.
|
package/docs/security.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Seguridad Práctica en Gemstack (CSO)
|
|
2
|
+
|
|
3
|
+
Gemstack incluye el skill `gemstack-cso`, que actúa como tu Chief Security Officer virtual.
|
|
4
|
+
|
|
5
|
+
Invócalo mediante `/cso` (para una revisión general) o mediante sus sub-comandos para revisiones específicas.
|
|
6
|
+
|
|
7
|
+
## Módulos de Revisión:
|
|
8
|
+
1. `/security-idor`: Control de acceso y pertenencia de recursos.
|
|
9
|
+
2. `/security-api`: CORS, Rate Limiting, y autenticación.
|
|
10
|
+
3. `/security-deps`: Análisis de `package.json` o `requirements.txt`.
|
|
11
|
+
4. `/security-uploads`: Validación rigurosa de magic bytes en subidas.
|
|
12
|
+
5. `/security-sql`: Prevención de Inyección SQL.
|
|
13
|
+
6. `/security-sessions`: Revisión de estrategias de tokens y cookies.
|
|
14
|
+
7. `/security-webhooks`: Verificación de firmas de Stripe/PayPal.
|
|
15
|
+
8. `/security-headers`: CSP y protección XSS.
|
|
16
|
+
|
|
17
|
+
**Guardrail:** El CSO puede corregir código trivial de seguridad, pero cambios mayores (migraciones, auth) requieren un Plan de Seguridad y tu aprobación explícita.
|
package/docs/skills.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Skills & Pseudo-comandos
|
|
2
|
+
|
|
3
|
+
Gemstack vincula pseudo-comandos a Skills específicos:
|
|
4
|
+
|
|
5
|
+
- `/handoff` -> `gemstack-handoff`
|
|
6
|
+
- `/resume` -> `gemstack-resume`
|
|
7
|
+
- `/office-hours` -> `gemstack-office-hours`
|
|
8
|
+
- `/specify` -> `gemstack-spec`
|
|
9
|
+
- `/plan` -> `gemstack-plan`
|
|
10
|
+
- `/tasks` -> `gemstack-tasks`
|
|
11
|
+
- `/review` -> `gemstack-review`
|
|
12
|
+
- `/investigate` -> `gemstack-investigate`
|
|
13
|
+
- `/cso`, `/security-*` -> `gemstack-cso`
|
|
14
|
+
- `/qa`, `/qa-only` -> `gemstack-qa`
|
|
15
|
+
- `/ship` -> `gemstack-ship`
|
|
16
|
+
- `/learn` -> `gemstack-learn`
|
|
17
|
+
- `/careful`, `/freeze`, `/guard`, `/unfreeze` -> `gemstack-guard`
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Spec-Driven Development (SDD) en Gemstack
|
|
2
|
+
|
|
3
|
+
Inspirado en Spec Kit, Gemstack obliga a pensar antes de teclear.
|
|
4
|
+
|
|
5
|
+
1. **El Qué (`spec.md`)**: Requisitos funcionales, criterios de aceptación (checkboxes) y casos límite. No tiene detalles de implementación.
|
|
6
|
+
2. **El Cómo (`plan.md`)**: Arquitectura, esquema de base de datos, rutas, y dependencias necesarias.
|
|
7
|
+
3. **El Cuándo (`tasks.md`)**: Pasos lógicos a seguir para construirlo.
|
|
8
|
+
|
|
9
|
+
Usa `/specify` para comenzar este ciclo.
|
|
10
|
+
Una vez que el spec esté aprobado por el usuario, usa `/plan` y luego `/tasks`.
|
|
Binary file
|
package/handoff.md
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Gemstack Handoff (v1.0.0)
|
|
2
|
+
|
|
3
|
+
## Resumen del Proyecto
|
|
4
|
+
Gemstack es un "Sistema Operativo para IA" de cero dependencias (Zero-Dependency) que inyecta reglas militares de ciberseguridad, autonomía y flujos de Spec-Driven Development en cualquier repositorio local, permitiendo a los desarrolladores pair-programar de forma estructurada con inteligencias artificiales como Antigravity o Cursor.
|
|
5
|
+
|
|
6
|
+
## Estado Actual
|
|
7
|
+
El proyecto ha alcanzado oficialmente la **Versión 1.0.0 (Open-Source Ready)**.
|
|
8
|
+
Durante el último sprint se añadieron las capacidades clave para transformar a Gemstack de un simple manejador de prompts en un verdadero ecosistema agentico:
|
|
9
|
+
|
|
10
|
+
1. **Military-Grade DevSecOps (Rules 03 & 04):**
|
|
11
|
+
- Actualización a AppSec Nivel 2 (Mitigación de Race Conditions, CSRF, SSRF, Rate Limiting).
|
|
12
|
+
- Nueva regla de Infraestructura (`04-gemstack-infrastructure.md`) exigiendo contenedores, VPCs y gestores de secretos cloud.
|
|
13
|
+
2. **Git Hooks (Active Security):**
|
|
14
|
+
- Comando `npx gemstack hooks` implementado en `src/commands/hooks.js`.
|
|
15
|
+
- Previene localmente (antes del commit) la subida de `.env`, llaves hardcodeadas, y marcadores de conflicto de git.
|
|
16
|
+
3. **Ecosistema de Plugins y Skills:**
|
|
17
|
+
- Comando `npx gemstack install <url>` inyectado en `src/commands/install.js` usando `fetch` nativo de Node 18+. Permite descargar skills de la comunidad directamente a `.agents/skills/`.
|
|
18
|
+
4. **Dashboard de Generative UI:**
|
|
19
|
+
- Skill `gemstack-dashboard` (`/dashboard`) creado para leer el estado del proyecto y renderizar un widget HTML interactivo con el progreso de `tasks.md`.
|
|
20
|
+
5. **Servidor Nativo MCP (Model Context Protocol):**
|
|
21
|
+
- Implementado en `src/mcp-server.js`. Gemstack ahora actúa como un servidor MCP accesible vía `npx gemstack mcp`, exponiendo el SDD del proyecto a clientes IA externos mediante JSON-RPC sobre stdio.
|
|
22
|
+
6. **Package Version:**
|
|
23
|
+
- El archivo `package.json` fue ascendido a `v1.0.0`.
|
|
24
|
+
|
|
25
|
+
## Últimos Cambios Realizados
|
|
26
|
+
- Creación de `.agents/rules/04-gemstack-infrastructure.md`
|
|
27
|
+
- Modificación profunda de `.agents/rules/03-gemstack-security.md` (Level 2).
|
|
28
|
+
- Evolución de `gemstack-cso` para revisar infraestructura.
|
|
29
|
+
- Nuevo script `src/commands/hooks.js` y vinculación en `cli.js` e `init.js`.
|
|
30
|
+
- Nuevo script `src/commands/install.js`.
|
|
31
|
+
- Creación del Skill `gemstack-dashboard` y actualización de `.agents/rules/01-gemstack-core.md`.
|
|
32
|
+
- Nuevo servidor `src/mcp-server.js` y vinculación CLI.
|
|
33
|
+
- Todos los archivos `.agents/` nuevos fueron replicados en la carpeta `template/`.
|
|
34
|
+
- Actualización mayor de `README.md` documentando todas las capacidades "v1.0".
|
|
35
|
+
|
|
36
|
+
## Qué Sigue (Next Steps para futuras sesiones)
|
|
37
|
+
1. **Adopción y Difusión:** El proyecto está listo para ser publicado abiertamente. Los usuarios pueden empezar a instalarlo en sus propios proyectos web.
|
|
38
|
+
2. **Ampliar el Mercado de Skills:** Podríamos crear un repositorio independiente (`gemstack-skills`) donde la comunidad aloje sus skills compartidos.
|
|
39
|
+
3. **Mantenimiento del Servidor MCP:** Actualmente el servidor MCP expone 2 herramientas (`get_current_tasks`, `get_security_rules`). En futuras iteraciones se podrían agregar herramientas de mutación (escribir specs a través de MCP).
|
|
40
|
+
|
|
41
|
+
## Archivos Críticos a Tener en Cuenta
|
|
42
|
+
- `src/cli.js`: El cerebro del enrutador de comandos.
|
|
43
|
+
- `src/commands/*.js`: Cada comando de la CLI está encapsulado de forma nativa.
|
|
44
|
+
- `template/`: Esta carpeta *debe* contener un espejo exacto de `.agents/`, `.gemstack/`, `docs/` y `specs/`. ¡Nunca modifiques reglas locales sin actualizarlas en el `template/`!
|
|
45
|
+
- `scripts/ci/*.js`: Toda la validación CI depende de scripts cero-dependencias escritos en Node.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Handoff Archive
|
|
2
|
+
|
|
3
|
+
Histórico de intentos fallidos antiguos movidos desde `handoff.md`.
|
|
4
|
+
|
|
5
|
+
## Archivo
|
|
6
|
+
# Handoff
|
|
7
|
+
|
|
8
|
+
## 1. Objetivo
|
|
9
|
+
**[Fin de Jornada]** Integrar las metodologías y entregables de Spec-Driven Development (SDD) dentro del motor de agentes de Gemstack, formalizando la creación de especificaciones inmutables, Test-First Development y arquitecturas orientadas a interfaces.
|
|
10
|
+
|
|
11
|
+
## 2. Estado actual
|
|
12
|
+
Hemos analizado el repositorio de referencia de `spec-kit` y actualizado todas nuestras habilidades y plantillas base de Gemstack para alinear los pseudo-comandos `/specify`, `/plan` y `/tasks`.
|
|
13
|
+
Se implementó la **Constitución de Gemstack (The 9 Articles)** para prevenir alucinaciones de LLM (`[NEEDS CLARIFICATION]`), forzar implementaciones modulares (Library-First) y establecer la filosofía TDD (Test-First Imperative). Además, el flujo ha migrado de una sola carpeta `current` hacia el uso de **Feature Branches** (ej. `specs/004-nueva-feature/`) junto a artefactos satélites (modelos de datos, contratos, y quickstarts). Todo el trabajo ha sido pusheado a `main`.
|
|
14
|
+
|
|
15
|
+
## 3. Archivos y cambios
|
|
16
|
+
- **Reglas (Constitution):** Creado `.agents/rules/02-gemstack-constitution.md`.
|
|
17
|
+
- **Plantillas (Templates):** Refactorizados fuertemente `specs/templates/spec.md`, `specs/templates/plan.md`, y `specs/templates/tasks.md` introduciendo prioridades (P1, P2), Constitution Checks y métricas de éxito (Measurable Outcomes).
|
|
18
|
+
- **Skills:** Actualizados `gemstack-spec`, `gemstack-plan` y `gemstack-tasks` para reconocer la constitución, forzar el uso de `[NEEDS CLARIFICATION]`, soportar entregables satélites y soportar tareas paralelizables con el marcador `[P]`.
|
|
19
|
+
|
|
20
|
+
## 4. Intentos fallidos
|
|
21
|
+
<!-- NUNCA BORRES ESTA SECCIÓN. Si crece mucho, mueve entradas antiguas a handoff_archive.md. -->
|
|
22
|
+
- Ejecución directa de scripts bash a través de Antigravity `run_command` (WSL execvpe failed). El CLI fue saneado para que al menos funcione correctamente en bash/git-bash nativo o entornos Unix y se previno el falso positivo en la detección de git.
|
|
23
|
+
- PowerShell arrojó error de "Expresión de asignación no válida" en el bloque `param()` de `gemstack.ps1` al inyectar líneas antes de dicho bloque. Solución: Se corrigió dejando el bloque `param()` obligatoriamente como lo primero en el script.
|
|
24
|
+
- Caracteres de codificación (Diagnóstico) persistieron en PowerShell console a pesar del reemplazo UTF-8 automatizado. Solución: reescritura directa del archivo usando las herramientas nativas del agente y ASCII labels por seguridad.
|
|
25
|
+
- Conflicto en el globbing de la test suite predeterminada (`node --test`). Ejecutaba involuntariamente el servidor de SecureDocs (`smoke-test.js`) lo que bloqueaba la suite. Solución: Se restringió explícitamente en el `package.json` a correr sobre la ruta `tests/*.test.js`.
|
|
26
|
+
- Parser manual de `--help` no captaba globalmente si se ponía como segundo o primer argumento tras Node (`argv[2]`). Solución: Parser refactorizado para inferencia temprana.
|
|
27
|
+
|
|
28
|
+
## 5. Próximos pasos
|
|
29
|
+
El framework interno de agentes de Gemstack ahora es capaz de desarrollar con rigor bajo Spec-Driven Development. El próximo paso natural es:
|
|
30
|
+
1. Poner a prueba la nueva arquitectura de plantillas creando una nueva funcionalidad (Feature 004) utilizando `/specify`.
|
|
31
|
+
2. Continuar con el roadmap oficial hacia v0.4, abordando la publicación de NPM y la automatización de GitHub Releases.
|
|
32
|
+
3. Explorar la automatización de QA Testing de navegadores ahora que las tareas soportan el desglose satelital de `[P]` (Paralelización) y la validación MVP temprana.
|
|
33
|
+
# Gemstack - Handoff
|
|
34
|
+
|
|
35
|
+
**Fecha:** 30 de Agosto de 2026
|
|
36
|
+
**Fase Actual:** Desarrollo Continuo (v0.4/Open-Source Ready)
|
|
37
|
+
**Estado:** Idle
|
|
38
|
+
|
|
39
|
+
## 1. Resumen de la Sesión
|
|
40
|
+
Durante esta sesión intensiva se completaron 4 grandes hitos ("Features") que transformaron a Gemstack en un framework agentico maduro, seguro y listo para su distribución Open Source:
|
|
41
|
+
|
|
42
|
+
- **Feature 004 (Release Automation):** Se implementó un flujo CI/CD en `.github/workflows/publish.yml` que empaqueta y publica la herramienta en NPM y genera un GitHub Release automático cada vez que se empuja un tag `v*`.
|
|
43
|
+
- **Feature 005 (The "WOW" Update - Advanced Autonomy):** Se crearon los skills `/qa-visual`, `/swarm`, `/heal` y `/sandbox`. Ahora el agente tiene instrucciones nativas para hacer UI testing autónomo, delegar subagentes en paralelo, auto-sanar builds de CI rotos y correr código riesgoso en Docker.
|
|
44
|
+
- **Feature 006 (Military-Grade Security Shield):** Se integró el documento `SEGURIDAD.MD` del usuario creando la regla inmutable `.agents/rules/03-gemstack-security.md`. El `/cso` y `/review` ahora bloquean activamente vulnerabilidades como IDOR, exposición de llaves y falta de firmas en webhooks.
|
|
45
|
+
- **Feature 007 (Open Source Readiness):** Se reescribió por completo el `README.md` (con badges y estructura profesional), se añadieron `CONTRIBUTING.md` y `CODE_OF_CONDUCT.md`. Se estabilizó `demo-app` cambiando el puerto de pruebas a 3001.
|
|
46
|
+
|
|
47
|
+
## 2. Archivos Modificados Recientemente
|
|
48
|
+
- `package.json` (bump a 0.3.0, scripts ci)
|
|
49
|
+
- `.github/workflows/publish.yml`
|
|
50
|
+
- `.agents/rules/01-gemstack-core.md`, `03-gemstack-security.md`
|
|
51
|
+
- `.agents/skills/gemstack-*` (Múltiples skills creados y editados)
|
|
52
|
+
- `template/` (Toda la distribución sincronizada)
|
|
53
|
+
- `README.md`, `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`
|
|
54
|
+
- `demo-app/server.js`, `demo-app/scripts/smoke-test.js`
|
|
55
|
+
|
|
56
|
+
## 3. Trabajo Pendiente o Bloqueos
|
|
57
|
+
- **Bloqueos:** Ninguno. La pipeline `ci:all` está en verde y el código está subido a la rama `main`.
|
|
58
|
+
- **Tests Faltantes:** Durante el análisis previo, se identificó que comandos como `list`, `show`, `doctor` y `parser` podrían beneficiarse de cobertura unitaria más profunda en v0.4.
|
|
59
|
+
|
|
60
|
+
## 4. Próximos Pasos (Next Steps)
|
|
61
|
+
- Esperando las próximas instrucciones del usuario para continuar la evolución del framework, posiblemente explorando la publicación oficial a NPM o mejoras de arquitectura.
|
package/package.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "gemstack-ai",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Agentic Spec-Driven Development framework for Gemini/Antigravity",
|
|
5
|
+
"main": "src/cli.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"gemstack": "src/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"engines": {
|
|
10
|
+
"node": ">=18.18.0"
|
|
11
|
+
},
|
|
12
|
+
"scripts": {
|
|
13
|
+
"test": "node --test tests/init.test.js",
|
|
14
|
+
"pack:dry": "npm pack --dry-run",
|
|
15
|
+
"ci:frontmatter": "node scripts/ci/check-frontmatter.js",
|
|
16
|
+
"ci:template": "node scripts/ci/check-template-clean.js",
|
|
17
|
+
"ci:mojibake": "node scripts/ci/check-mojibake.js",
|
|
18
|
+
"ci:package": "node scripts/ci/check-package-contents.js",
|
|
19
|
+
"ci:smoke": "node scripts/ci/smoke-cli.js",
|
|
20
|
+
"ci:demo": "npm --prefix demo-app install && npm --prefix demo-app run smoke",
|
|
21
|
+
"ci:all": "npm test && npm run ci:frontmatter && npm run ci:template && npm run ci:mojibake && npm run ci:package && npm run ci:smoke && npm run ci:demo"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {},
|
|
24
|
+
"devDependencies": {}
|
|
25
|
+
}
|