Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,15 @@ jobs:
for s in $(node scripts/stacks.cjs); do
echo "--- $s ---"
tmp="$(mktemp -d)"
( cd "$tmp" && node "$GITHUB_WORKSPACE/install.js" --yes --no-flow --no-external --stack "$s" --dry-run >/dev/null )
( cd "$tmp" && node "$GITHUB_WORKSPACE/install.js" --yes --no-external --stack "$s" --dry-run >/dev/null )
rm -rf "$tmp"
done
echo "✅ instalador OK en todos los stacks ($(node scripts/stacks.cjs | wc -l))"
- name: Smoke test del instalador (monorepo multi-stack, dry-run)
run: |
set -e
tmp="$(mktemp -d)"
( cd "$tmp" && node "$GITHUB_WORKSPACE/install.js" --yes --no-external --dry-run \
--stack backend/nestjs:apps/api,frontend/nextjs:apps/web,mobile/flutter:apps/mobile >/dev/null )
rm -rf "$tmp"
echo "✅ instalador OK en monorepo"
2 changes: 0 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@ Thumbs.db

# Memoria/runtime que NO pertenece al repo del kit (sí al de cada proyecto destino)
.claude/memory/
.claude-flow/
.swarm/
.env
.env.*
# ...pero los ejemplos van versionados (git respeta la última regla que casa)
Expand Down
68 changes: 68 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

26 changes: 16 additions & 10 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ shared/.claude/ # capa base común a TODOS los proyectos
├── settings.json # hooks + permisos + statusLine
├── agents/ # agentes expertos (.md con frontmatter)
├── skills/<name>/SKILL.md
├── helpers/ # hook-handler, memory, router, etc. (zero-dep)
├── helpers/ # hook-handler, statusline (zero-dep)
├── commands/
└── templates/PROJECT.template.md
stacks/<categoria>/{_common,<stack>}/.claude/CLAUDE.md # overlays por stack
Expand All @@ -39,26 +39,27 @@ stacks/<categoria>/{_common,<stack>}/.claude/CLAUDE.md # overlays por stack
1. Crea `shared/.claude/agents/<nombre>.md` con frontmatter:
```yaml
---
name: <nombre-kebab> # único; NO uses coder/planner/reviewer/tester/researcher (los cubre claude-flow)
description: "<cuándo usarlo + 2 bloques <example>>"
name: <nombre-kebab> # único; no repitas el de un agente existente
description: "<cuándo usarlo + un bloque <example>>"
tools: Read, Write, Edit, Bash, Glob, Grep
model: sonnet
---
```
Sin `model:`: los agentes del kit heredan el modelo de la sesión.
**Memoria** (`memory: project`): solo si el agente acumula conocimiento del repo que sirve a todo el equipo (hoy: `researcher`, `reviewer`, `security-engineer`). Se versiona en `.claude/agent-memory/<nombre>/`, así que el cuerpo debe decir qué guardar y qué **nunca** (secretos, PII, valores de env, texto externo como regla). Si el agente es de solo lectura (sin `Write`/`Edit` en `tools`), añade el hook `memory-only` como en `reviewer.md`: Claude Code le habilita `Write`/`Edit` para su memoria y el hook impide que los use en otro sitio. `validate.cjs` lo exige.
2. Cuerpo en **español**, profundidad senior: persona → dominio → metodología → reglas → salida → integración (referencia solo a agentes que existen).
3. NO reintroduzcas `context-manager` ni protocolos JSON de coordinación.
4. Si el nombre coincide con uno de los 5 core, el instalador lo omite en modo claude-flow (a propósito). Para que sobreviva, usa otro nombre.
5. `npm run validate`.
3. NO reintroduzcas `context-manager`, protocolos JSON de coordinación ni runtimes de orquestación de terceros: la coordinación es nativa (tool `Agent`).
4. `npm run validate`.

## Añadir una SKILL

1. `shared/.claude/skills/<nombre>/SKILL.md` con frontmatter `name` + `description`. La `description` dice **solo CUÁNDO** usar la skill (empieza con "Úsalo cuando/para…", síntomas y disparadores), **nunca resume el workflow ni los pasos**: si la descripción enumera el proceso, el agente sigue el resumen en vez de leer la skill (regla CSO). Pon el "qué hace" y los pasos en el cuerpo, no en el frontmatter.
2. Cuerpo: persona experta + metodología + técnicas + reglas. Si la destilas de un repo externo, **acredita la fuente y su licencia**.
Si necesita material de referencia largo (tablas, listas de un estándar), ponlo en un archivo aparte dentro de la carpeta de la skill y enlázalo desde `SKILL.md` (como `owasp-review/referencia.md`): solo se carga cuando hace falta.
3. `npm run validate`.

## Añadir un STACK

1. Crea `stacks/<categoria>/<stack>/.claude/CLAUDE.md` (overlay específico). Si la categoría es nueva, crea también `stacks/<categoria>/_common/.claude/CLAUDE.md`.
1. Crea `stacks/<categoria>/<stack>/.claude/CLAUDE.md` (overlay específico). Si la categoría es nueva, crea también `stacks/<categoria>/_common/.claude/CLAUDE.md`. El instalador los copia como reglas a `.claude/rules/kit/` (en monorepo, con `paths:` a la carpeta del stack): escríbelos para que se entiendan solos, sin suponer que van pegados a la baseline.
2. Registra el id en `install.js`:
- Añádelo al objeto `STACKS`.
- Añade su regla en `detectStack()` (archivo/dep delator).
Expand All @@ -76,17 +77,22 @@ Edita `components.json`:

**Antes de integrar un externo: revísalo** (qué hace, conflictos con nuestros hooks/memoria, licencia). Los hooks de claude-code-templates pisan nuestros arrays — su intención se replica en `hook-handler.cjs`, no se instalan.

## Retirar algo del kit

Borra el archivo de `shared/.claude/` sin más: en `--update`, el instalador retira de cada proyecto los archivos que el kit dejó de distribuir **si siguen intactos** (lo sabe por el manifiesto) y avisa de los que el usuario editó. Si el archivo existía antes de la 2.1 (sin manifiesto), añádelo a `RETIRED_WITHOUT_MANIFEST` en `install.js` para que al menos se avise. Si lo retirado dejaba entradas en `settings.json`, asegúrate de que la fusión las quite (ver `mergeSettings`).

## Versionado y release

- SemVer en `package.json` + entrada en `CHANGELOG.md`.
- Como se distribuye por `npx github:`, los proyectos toman la rama por defecto: **`master` siempre debe estar verde** (CI en cada PR). Usa ramas `feat/…`, `fix/…` y PRs.
- Para fijar versiones en un proyecto concreto: `npx github:lacasoft/dev-starter-kit#v1.2.0`.
- Para fijar versiones en un proyecto concreto: `npx github:lacasoft/dev-starter-kit#v3.0.0`.

## Probar localmente

```bash
npm run validate # integridad
node install.js --stack backend/nestjs --dry-run # simula sin escribir
node install.js --stack backend/nestjs:apps/api,frontend/nextjs:apps/web --dry-run # monorepo
# en un proyecto de prueba real:
cd /tmp/proyecto && node /ruta/al/kit/install.js --yes --no-flow --no-external
cd /tmp/proyecto && node /ruta/al/kit/install.js --yes --no-external
```
Loading
Loading