sdd-es 2.0.0 → 2.6.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/.claude/settings.json +29 -29
- package/.claude/settings.local.json +10 -0
- package/.claude-plugin/marketplace.json +10 -7
- package/.claude-plugin/plugin.json +59 -37
- package/.gitignore +20 -0
- package/.mcp.json +8 -0
- package/LICENSE +21 -0
- package/README.md +77 -40
- package/agents/architecture-designer.md +211 -0
- package/agents/arquitecto.md +16 -1
- package/agents/asesor-datos.md +15 -1
- package/agents/critico.md +37 -1
- package/agents/desarrollador-backend.md +3 -1
- package/agents/desarrollador-frontend.md +11 -16
- package/agents/disenador-api.md +13 -1
- package/agents/documentador.md +3 -1
- package/agents/investigador.md +3 -1
- package/agents/operaciones.md +3 -1
- package/agents/product-designer.md +268 -0
- package/agents/revisor.md +25 -1
- package/agents/seguridad.md +5 -1
- package/agents/tester.md +3 -1
- package/claude-hooks/agent-memory.js +288 -0
- package/claude-hooks/pre-tool-guard.js +61 -9
- package/cli/index.js +1 -2
- package/commands/sdd.adr.md +196 -0
- package/commands/sdd.analizar.md +23 -2
- package/commands/sdd.ayuda.md +13 -0
- package/commands/sdd.compliance.md +521 -0
- package/commands/sdd.configurar.md +34 -1
- package/commands/sdd.constitucion.md +198 -23
- package/commands/sdd.construir.md +210 -0
- package/commands/sdd.crear-mcp.md +2 -0
- package/commands/sdd.defect-report.md +134 -0
- package/commands/sdd.descubrir.md +19 -0
- package/commands/sdd.dise/303/261ar.md +188 -0
- package/commands/sdd.estado.md +120 -3
- package/commands/sdd.exportar.md +344 -0
- package/commands/sdd.implementar.md +272 -52
- package/commands/sdd.interpretar.md +239 -0
- package/commands/sdd.md +93 -4
- package/commands/sdd.optimizar-memoria.md +47 -0
- package/commands/sdd.optimizar.md +164 -0
- package/commands/sdd.planificar.md +64 -0
- package/commands/sdd.retro.md +74 -0
- package/commands/sdd.verificar.md +81 -0
- package/configuracion-ejemplo/.claude/CLAUDE.md +106 -0
- package/configuracion-ejemplo/sdd.config.yaml +10 -0
- package/craft/accessibility-baseline.md +216 -0
- package/craft/anti-ai-slop.md +158 -0
- package/craft/color.md +160 -0
- package/craft/typography.md +121 -0
- package/design-systems/bold-brutalist/DESIGN.md +239 -0
- package/design-systems/editorial-minimal/DESIGN.md +205 -0
- package/design-systems/neutral-modern/DESIGN.md +227 -0
- package/design-systems/vibrant-consumer/DESIGN.md +257 -0
- package/design-systems/warm-editorial/DESIGN.md +221 -0
- package/docs/AGENTES.md +4 -1
- package/docs/CASO-COMPLETO.md +206 -0
- package/docs/EJEMPLOS.md +61 -185
- package/docs/FABRICA.md +163 -115
- package/docs/INICIO-RAPIDO.md +27 -79
- package/docs/MEMORIA-Y-OBSERVABILIDAD.md +239 -0
- package/docs/MODELOS.md +3 -0
- package/docs/QUE-PASA-SI-FALLA.md +404 -0
- package/docs/README.md +43 -0
- package/docs/RELACION-CON-CLAUDE-CODE.md +38 -0
- package/docs/SEGURIDAD-PARA-NOTECNICOS.md +280 -0
- package/package.json +15 -10
- package/plantillas/job-story-mejorar-prompt.md +107 -0
- package/presets/enterprise.yaml +6 -0
- package/presets/lean.yaml +4 -0
- package/presets/startup.yaml +6 -0
- package/skills/adr-indexer/SKILL.md +181 -0
- package/skills/cache-audit/SKILL.md +163 -0
- package/skills/critica-diseno/SKILL.md +193 -0
- package/skills/descubrir-idea/SKILL.md +133 -0
- package/skills/effort-router/SKILL.md +128 -0
- package/skills/elegir-direccion/SKILL.md +184 -0
- package/skills/github-connect/IMPLEMENTATION-CHECKLIST.md +297 -0
- package/skills/github-connect/INDEX.md +223 -0
- package/skills/github-connect/INTEGRATION.md +361 -0
- package/skills/github-connect/QUICK-START.md +168 -0
- package/skills/github-connect/README.md +414 -0
- package/skills/github-connect/RESUMEN_IMPLEMENTACION.txt +374 -0
- package/skills/github-connect/SKILL.md +343 -0
- package/skills/github-connect/STRUCTURE.txt +252 -0
- package/skills/github-connect/example-config.yaml +41 -0
- package/skills/github-connect/github-connect.sh +419 -0
- package/skills/interpretar-idea/SKILL.md +254 -0
- package/skills/mejorar-prompt/SKILL.md +237 -0
- package/skills/memory-compactor/SKILL.md +68 -0
- package/skills/modo-guiado/SKILL.md +12 -2
- package/skills/mutation-detector/SKILL.md +134 -0
- package/skills/observabilidad-consumo/SKILL.md +164 -0
- package/skills/token-budget/SKILL.md +177 -0
- package/skills/vercel-deploy/00-START-HERE.txt +364 -0
- package/skills/vercel-deploy/CHECKLIST.md +205 -0
- package/skills/vercel-deploy/EXEC-SUMMARY.txt +322 -0
- package/skills/vercel-deploy/FLOW.txt +334 -0
- package/skills/vercel-deploy/INDEX.md +276 -0
- package/skills/vercel-deploy/INTEGRATION.md +328 -0
- package/skills/vercel-deploy/MANIFEST.md +310 -0
- package/skills/vercel-deploy/README.md +65 -0
- package/skills/vercel-deploy/SKILL.md +356 -0
- package/skills/vercel-deploy/deploy.sh +298 -0
- package/skills/vercel-deploy/estado.json.example +205 -0
- package/skills/vercel-deploy/skill.yaml +323 -0
- package/skills/vercel-deploy/vercel-deploy.sh +216 -0
- package/skills/wireframe-mvp/SKILL.md +157 -0
- package/docs/EJEMPLO-PRACTICA.md +0 -383
- package/mcp-figma/README.md +0 -158
- package/mcp-figma/package.json +0 -7
- package/mcp-figma/src/component-generator.js +0 -162
- package/mcp-figma/src/design-system-analyzer.js +0 -247
- package/mcp-figma/src/figma-client.js +0 -75
- package/mcp-figma/src/index.js +0 -114
- package/mcp-figma/src/mcp.js +0 -97
- package/mcp-figma/src/style-mapper.js +0 -85
- /package/skills/{compresion-tokens.md → compresion-tokens/SKILL.md} +0 -0
- /package/skills/{constitucion-constraint.md → constitucion-constraint/SKILL.md} +0 -0
- /package/skills/{deteccion-stack.md → deteccion-stack/SKILL.md} +0 -0
- /package/skills/{enrutador-agentes.md → enrutador-agentes/SKILL.md} +0 -0
- /package/skills/{gestion-estado.md → gestion-estado/SKILL.md} +0 -0
- /package/skills/{indexador.md → indexador/SKILL.md} +0 -0
- /package/skills/{validacion-spec.md → validacion-spec/SKILL.md} +0 -0
- /package/skills/{verificador-implementacion.md → verificador-implementacion/SKILL.md} +0 -0
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
import { createInterface } from "node:readline";
|
|
17
|
+
import { existsSync, mkdirSync, appendFileSync } from "node:fs";
|
|
18
|
+
import { join } from "node:path";
|
|
17
19
|
|
|
18
20
|
const rl = createInterface({ input: process.stdin, terminal: false });
|
|
19
21
|
let raw = "";
|
|
@@ -116,14 +118,36 @@ function main(raw) {
|
|
|
116
118
|
const cmd = String(toolInput?.command ?? "").trim();
|
|
117
119
|
if (!cmd) process.exit(0);
|
|
118
120
|
|
|
121
|
+
// ── 0. NUEVO: Verificar permisos por agente ─────────────────────────────
|
|
122
|
+
const agentName = process.env.CLAUDE_AGENT_NAME;
|
|
123
|
+
if (agentName) {
|
|
124
|
+
// Agentes read-only que NO pueden usar Write/Edit
|
|
125
|
+
const readOnlyAgents = [
|
|
126
|
+
'arquitecto', 'asesor-datos', 'critico', 'seguridad',
|
|
127
|
+
'investigador', 'revisor', 'disenador-api'
|
|
128
|
+
];
|
|
129
|
+
|
|
130
|
+
// Si es agente read-only e intenta usar Write/Edit, bloquea
|
|
131
|
+
if (readOnlyAgents.includes(agentName) &&
|
|
132
|
+
(toolName === 'Write' || toolName === 'Edit')) {
|
|
133
|
+
process.stderr.write(
|
|
134
|
+
`FORGE detuvo esta acción: el agente "${agentName}" solo puede leer, no modificar archivos.\n` +
|
|
135
|
+
`Si necesitas que este agente escriba código, cambia su rol en la configuración.\n`
|
|
136
|
+
);
|
|
137
|
+
process.exit(2);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Auditoría de intentos de tool por agente (log a .sdd/observabilidad/)
|
|
141
|
+
logAgentToolAttempt(agentName, toolName, cmd);
|
|
142
|
+
}
|
|
143
|
+
|
|
119
144
|
// ── 1. Verificar prohibidos ─────────────────────────────────────────────
|
|
120
145
|
for (const re of PROHIBIDOS) {
|
|
121
146
|
if (re.test(cmd)) {
|
|
122
147
|
process.stderr.write(
|
|
123
|
-
|
|
124
|
-
`
|
|
125
|
-
`
|
|
126
|
-
` Esta operación nunca debe ejecutarse automáticamente.\n`
|
|
148
|
+
`FORGE evitó esta acción porque podría borrar o dañar archivos importantes de forma irreversible.\n` +
|
|
149
|
+
`Si estás completamente seguro de lo que haces, ejecuta el comando manualmente en tu terminal.\n` +
|
|
150
|
+
`Comando bloqueado: ${cmd.slice(0, 120)}\n`
|
|
127
151
|
);
|
|
128
152
|
process.exit(2);
|
|
129
153
|
}
|
|
@@ -133,9 +157,9 @@ function main(raw) {
|
|
|
133
157
|
for (const re of SECRET_PATTERNS) {
|
|
134
158
|
if (re.test(cmd)) {
|
|
135
159
|
process.stderr.write(
|
|
136
|
-
|
|
137
|
-
`
|
|
138
|
-
`
|
|
160
|
+
`FORGE detectó que este comando incluye una contraseña o clave secreta escrita directamente.\n` +
|
|
161
|
+
`Para proteger tu seguridad, usa variables de entorno en lugar de escribir credenciales en el código.\n` +
|
|
162
|
+
`Ejemplo: usa process.env.MI_CLAVE en vez de escribir el valor directamente.\n`
|
|
139
163
|
);
|
|
140
164
|
process.exit(2);
|
|
141
165
|
}
|
|
@@ -146,8 +170,8 @@ function main(raw) {
|
|
|
146
170
|
if (re.test(cmd)) {
|
|
147
171
|
// Escribir a stderr — Claude Code lo muestra como contexto antes de pedir permiso
|
|
148
172
|
process.stderr.write(
|
|
149
|
-
|
|
150
|
-
`
|
|
173
|
+
`Atención: esto va a realizar una acción que no se puede deshacer fácilmente (${msg}).\n` +
|
|
174
|
+
`Revisa el comando antes de confirmar: ${cmd.slice(0, 120)}\n`
|
|
151
175
|
);
|
|
152
176
|
// Exit 0 — dejamos que el flujo normal de permisos de Claude Code actúe
|
|
153
177
|
process.exit(0);
|
|
@@ -157,3 +181,31 @@ function main(raw) {
|
|
|
157
181
|
// Todo bien
|
|
158
182
|
process.exit(0);
|
|
159
183
|
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Registra intentos de tool por agente para auditoría
|
|
187
|
+
*/
|
|
188
|
+
function logAgentToolAttempt(agentName, toolName, cmd) {
|
|
189
|
+
try {
|
|
190
|
+
// Intenta grabar en .sdd/observabilidad/ en formato JSONL (append-only)
|
|
191
|
+
const auditDir = '.sdd/observabilidad';
|
|
192
|
+
const auditFile = join(auditDir, 'agent-tool-audit.jsonl');
|
|
193
|
+
|
|
194
|
+
// Crea dir si no existe
|
|
195
|
+
if (!existsSync(auditDir)) {
|
|
196
|
+
mkdirSync(auditDir, { recursive: true });
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
const record = {
|
|
200
|
+
timestamp: new Date().toISOString(),
|
|
201
|
+
agent: agentName,
|
|
202
|
+
tool: toolName,
|
|
203
|
+
cmd_preview: cmd.slice(0, 120),
|
|
204
|
+
pid: process.pid
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
appendFileSync(auditFile, JSON.stringify(record) + '\n', 'utf8');
|
|
208
|
+
} catch {
|
|
209
|
+
// Silenciosamente ignorar fallos de auditoría (no bloquear ejecución)
|
|
210
|
+
}
|
|
211
|
+
}
|
package/cli/index.js
CHANGED
|
@@ -26,7 +26,6 @@ import { join, dirname } from "node:path";
|
|
|
26
26
|
import { fileURLToPath } from "node:url";
|
|
27
27
|
import { homedir } from "node:os";
|
|
28
28
|
import { execSync } from "node:child_process";
|
|
29
|
-
|
|
30
29
|
// ─── Paths ────────────────────────────────────────────────────────────────────
|
|
31
30
|
|
|
32
31
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
@@ -355,7 +354,7 @@ function cmdDoctor() {
|
|
|
355
354
|
|
|
356
355
|
function uso() {
|
|
357
356
|
console.log(`
|
|
358
|
-
SDD-ES — CLI
|
|
357
|
+
SDD-ES — CLI (v${pluginVersion()})
|
|
359
358
|
|
|
360
359
|
Uso:
|
|
361
360
|
npx sdd-es init [--global] Instala el plugin (proyecto o global)
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Indexar, listar y gestionar decisiones arquitectónicas (ADRs)
|
|
3
|
+
allowed-tools: Read, Write, Bash
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /sdd.adr
|
|
7
|
+
|
|
8
|
+
Gestiona Architecture Decision Records (ADRs) — registro de decisiones arquitectónicas.
|
|
9
|
+
|
|
10
|
+
## Modos
|
|
11
|
+
|
|
12
|
+
### `/sdd.adr list`
|
|
13
|
+
|
|
14
|
+
Lista todas las decisiones registradas.
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
ID | DECISION | CONTEXT | STATUS
|
|
18
|
+
───┼───────────────────────────┼────────────────────┼──────────
|
|
19
|
+
1 | Use PostgreSQL | ACID needed | accepted
|
|
20
|
+
2 | Cache with Redis | Performance | accepted
|
|
21
|
+
3 | JWT for auth | Stateless API | accepted
|
|
22
|
+
4 | Validate user input | Security | accepted
|
|
23
|
+
5 | HTTPS only | Compliance | accepted
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Opciones:**
|
|
27
|
+
```
|
|
28
|
+
/sdd.adr list --status=accepted # Solo aceptadas
|
|
29
|
+
/sdd.adr list --status=rejected # Solo rechazadas
|
|
30
|
+
/sdd.adr list --status=deprecated # Obsoletas
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
### `/sdd.adr new`
|
|
36
|
+
|
|
37
|
+
Captura una nueva decisión de forma interactiva.
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
Pregunta 1: ¿Cuál es la decisión?
|
|
41
|
+
> Use DynamoDB para analytics
|
|
42
|
+
|
|
43
|
+
Pregunta 2: ¿Por qué? (contexto)
|
|
44
|
+
> Scale infinitamente, baja latencia de queries
|
|
45
|
+
|
|
46
|
+
Pregunta 3: ¿Qué alternativas consideraste?
|
|
47
|
+
> PostgreSQL partitioning, BigQuery, Redshift
|
|
48
|
+
|
|
49
|
+
Pregunta 4: ¿Status? (accepted/rejected/deprecated/superseded)
|
|
50
|
+
> accepted
|
|
51
|
+
|
|
52
|
+
✅ ADR guardado en .sdd/arquitectura/ADRs.jsonl
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
### `/sdd.adr search "patrón"`
|
|
58
|
+
|
|
59
|
+
Busca ADRs por palabra clave.
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
/sdd.adr search "database"
|
|
63
|
+
|
|
64
|
+
RESULTADO:
|
|
65
|
+
ID | DECISION | CONTEXT
|
|
66
|
+
───┼───────────────────────┼────────────────
|
|
67
|
+
1 | Use PostgreSQL | ACID needed
|
|
68
|
+
2 | Use Redis cache | Performance
|
|
69
|
+
|
|
70
|
+
/sdd.adr search "security"
|
|
71
|
+
|
|
72
|
+
RESULTADO:
|
|
73
|
+
ID | DECISION | CONTEXT
|
|
74
|
+
───┼───────────────────────────┼──────────────────
|
|
75
|
+
3 | Validate user input | Prevent injection
|
|
76
|
+
4 | HTTPS only | Compliance
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
### `/sdd.adr edit [ID]`
|
|
82
|
+
|
|
83
|
+
Editar una decisión existente.
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
/sdd.adr edit 1
|
|
87
|
+
|
|
88
|
+
ADR #1: Use PostgreSQL
|
|
89
|
+
Context: ACID needed
|
|
90
|
+
Alternatives: MongoDB, Firebase
|
|
91
|
+
Status: accepted
|
|
92
|
+
|
|
93
|
+
¿Modificar? (y/n) > y
|
|
94
|
+
Nuevo status: deprecated
|
|
95
|
+
|
|
96
|
+
✅ ADR #1 actualizado
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Ficheros
|
|
102
|
+
|
|
103
|
+
**Ledger:** `.sdd/arquitectura/ADRs.jsonl` (append-only)
|
|
104
|
+
|
|
105
|
+
Cada línea es un ADR en JSON:
|
|
106
|
+
```json
|
|
107
|
+
{
|
|
108
|
+
"ts": "2026-06-14T10:30:00Z",
|
|
109
|
+
"decision": "Use PostgreSQL",
|
|
110
|
+
"context": "ACID transactions required",
|
|
111
|
+
"alternatives": ["MongoDB", "Firebase"],
|
|
112
|
+
"status": "accepted",
|
|
113
|
+
"archivo": "src/database.ts",
|
|
114
|
+
"linea": 42,
|
|
115
|
+
"agente": "arquitecto"
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Uso en Auditoría
|
|
122
|
+
|
|
123
|
+
**Para auditor externo:**
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
/sdd.adr list --status=accepted
|
|
127
|
+
→ Todas las decisiones aceptadas documentadas
|
|
128
|
+
|
|
129
|
+
/sdd.adr search "security"
|
|
130
|
+
→ Todas las decisiones de seguridad con contexto
|
|
131
|
+
|
|
132
|
+
/sdd.adr search "compliance"
|
|
133
|
+
→ Todas las decisiones de compliance (GDPR, PCI-DSS, etc.)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**Resultado:** Auditor confía porque ve trazabilidad completa.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Batch Scan
|
|
141
|
+
|
|
142
|
+
Para proyectos existentes, scan automático:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
node utils/adr-parser.js . src/**/*.ts --update-ledger
|
|
146
|
+
→ Encuentra todos los ADRs en codebase
|
|
147
|
+
→ Añade al ledger si no existen
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Ejemplo Real
|
|
153
|
+
|
|
154
|
+
### Código con ADR Incrustado
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
// ADR: {"decision": "Use TypeScript", "context": "Type safety, IDE support", "status": "accepted"}
|
|
158
|
+
import * as express from "express";
|
|
159
|
+
|
|
160
|
+
// ADR: {"decision": "Use dependency injection", "context": "Testability", "status": "accepted"}
|
|
161
|
+
class Database {
|
|
162
|
+
constructor(private config: Config) {}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// ADR: {"decision": "Validate all inputs with Zod", "context": "Security", "status": "accepted"}
|
|
166
|
+
const userSchema = z.object({
|
|
167
|
+
email: z.string().email(),
|
|
168
|
+
password: z.string().min(8)
|
|
169
|
+
});
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### Ejecutar Scan
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
/sdd.adr new (o node utils/adr-parser.js . src/**/*.ts)
|
|
176
|
+
↓
|
|
177
|
+
✅ 3 ADRs encontrados y registrados
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Verificar
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
/sdd.adr list
|
|
184
|
+
→ Ver todas las decisiones documentadas
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Notas
|
|
190
|
+
|
|
191
|
+
- **Automático:** Hook captura ADRs al escribir código
|
|
192
|
+
- **Manual:** `/sdd.adr new` para decisiones no en código
|
|
193
|
+
- **Buscable:** `/sdd.adr search` por palabra clave
|
|
194
|
+
- **Auditables:** Cada ADR tiene timestamp, autor, contexto
|
|
195
|
+
- **Seguro:** JSON validado, error silencioso si inválido
|
|
196
|
+
|
package/commands/sdd.analizar.md
CHANGED
|
@@ -28,9 +28,20 @@ cat .sdd/dominio/glosario.md 2>/dev/null
|
|
|
28
28
|
ls .sdd/arquitectura/ 2>/dev/null
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
## PASO 1.5 —
|
|
31
|
+
## PASO 1.5 — Model routing para dimensiones
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
Aplica el mismo routing de modelos que `/sdd.implementar` al despachar las dimensiones de análisis:
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
Grupo OPUS → análisis de constitución, seguridad y arquitectura (D1, D5, D7)
|
|
37
|
+
Grupo SONNET → análisis de spec, plan, tareas y glosario (D2, D3, D4, D6)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Cuando PTC está disponible, el routing se aplica a cada subagente en el bloque paralelo.
|
|
41
|
+
|
|
42
|
+
## PASO 1.6 — Despacho PTC de dimensiones
|
|
43
|
+
|
|
44
|
+
Las 7 dimensiones de auditoría son **independientes entre sí** — cada una lee los mismos artefactos sin modificarlos. Esto las hace candidatas ideales para PTC (skill `orquestacion-ptc`). El modelo de cada subagente sigue el routing del PASO 1.5.
|
|
34
45
|
|
|
35
46
|
**Si hay ≥3 agentes disponibles para ejecutar el análisis en paralelo:**
|
|
36
47
|
|
|
@@ -237,5 +248,15 @@ Empieza con:
|
|
|
237
248
|
/sdd.[comando del primer bloqueante]
|
|
238
249
|
```
|
|
239
250
|
|
|
251
|
+
## Output styles
|
|
252
|
+
|
|
253
|
+
Si el argumento contiene `pm`, `arq` o `dev`, adapta el reporte del PASO 3:
|
|
254
|
+
|
|
255
|
+
**Modo `pm`:** Solo veredicto, número de bloqueantes y recomendación de acción. Sin dimensiones técnicas ni matrices.
|
|
256
|
+
|
|
257
|
+
**Modo `arq`:** Enfatiza las dimensiones 1 (Constitución↔Plan) y 5 (Tareas internas). Incluye la matriz de cobertura CAs→Tareas y el grafo de dependencias.
|
|
258
|
+
|
|
259
|
+
**Modo `dev`:** El reporte completo del PASO 3 con todas las dimensiones, matrices y distribución de agentes (comportamiento actual).
|
|
260
|
+
|
|
240
261
|
---
|
|
241
262
|
**HOOK:** `.sdd/hooks/despues_analizar.sh`
|
package/commands/sdd.ayuda.md
CHANGED
|
@@ -61,12 +61,23 @@ Muestra esta guía formateada:
|
|
|
61
61
|
/sdd.release --preview Ver qué entraría sin modificar nada
|
|
62
62
|
|
|
63
63
|
🏭 FÁBRICA (idea → producto instalable)
|
|
64
|
+
/sdd.interpretar [idea] Interpretar idea en bruto y generar IR (Interpreted Requirement)
|
|
65
|
+
/sdd.diseñar Elegir dirección visual y generar ProductDesign
|
|
66
|
+
/sdd.construir Pipeline completo automático: diseño + código + deploy
|
|
67
|
+
/sdd.exportar Empaquetar el proyecto actual como bundle descargable
|
|
64
68
|
/sdd.crear-app [idea] Generar app web o CLI desde una descripción en lenguaje natural
|
|
65
69
|
/sdd.crear-mcp [descripción] Generar servidor MCP empaquetado (.mcpb) desde una descripción
|
|
66
70
|
|
|
71
|
+
🏛️ CALIDAD Y COMPLIANCE
|
|
72
|
+
/sdd.compliance Reporte de cumplimiento regulatorio (GDPR, SOC2, ISO 27001, HIPAA)
|
|
73
|
+
/sdd.adr Registrar decisión de arquitectura (Architecture Decision Record)
|
|
74
|
+
/sdd.defect-report Reporte de defectos y tasa de bugs del proyecto
|
|
75
|
+
|
|
67
76
|
⚙️ UTILIDADES
|
|
68
77
|
/sdd.mapear Indexar estructura, símbolos y dependencias del proyecto
|
|
69
78
|
/sdd.comprimir Comprimir archivos de memoria para ahorrar tokens
|
|
79
|
+
/sdd.optimizar Optimizar artefactos SDD para reducir uso de contexto
|
|
80
|
+
/sdd.optimizar-memoria Compactar la memoria del agente activo
|
|
70
81
|
|
|
71
82
|
═══════════════════════════════════════════════════════════════════════
|
|
72
83
|
🔄 FLUJOS RECOMENDADOS
|
|
@@ -110,6 +121,8 @@ FLUJO CALIDAD MÁXIMA (features grandes, producto enterprise)
|
|
|
110
121
|
|
|
111
122
|
DISEÑO Y ARQUITECTURA
|
|
112
123
|
arquitecto Decisiones técnicas, diseño de alto nivel
|
|
124
|
+
product-designer Diseño de producto: pantallas, user flow, MVP
|
|
125
|
+
architecture-designer Stack técnico: frontend, backend, BD, deploy
|
|
113
126
|
disenador-api Contratos: OpenAPI, GraphQL, gRPC, eventos
|
|
114
127
|
asesor-datos Esquemas, queries, índices, migraciones
|
|
115
128
|
|