sedd 0.1.3 → 0.1.5

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/README.md CHANGED
@@ -20,152 +20,173 @@
20
20
 
21
21
  ## Quick Start
22
22
 
23
- ### Instalação
24
-
25
23
  ```bash
24
+ # Instalar
26
25
  npm install -g sedd
27
- ```
28
-
29
- ### Uso
30
26
 
31
- ```bash
32
- # 1. Navegue para seu projeto
27
+ # Inicializar no projeto
33
28
  cd meu-projeto
34
-
35
- # 2. Inicialize SEDD
36
29
  sedd init
37
30
 
38
- # 3. Crie uma feature spec
31
+ # Criar feature spec
39
32
  sedd specify 001 user-auth
40
33
 
41
- # 4. Edite a spec
42
- # .sedd/001-user-auth/spec.md
43
-
44
- # 5. Use seu LLM favorito para implementar
34
+ # Usar AI assistant
45
35
  claude # ou cursor, copilot, etc.
46
36
 
47
- # 6. Documente decisões
48
- sedd clarify
37
+ # Comandos no AI
38
+ /sedd.clarify # Definir expectativa e gerar tasks
39
+ /sedd.implement # Executar tasks
49
40
  ```
50
41
 
51
- ### Comandos
52
-
53
- | Comando | Descrição |
54
- |---------|-----------|
55
- | `sedd init` | Inicializar SEDD no projeto |
56
- | `sedd specify <id> <name>` | Criar nova feature spec |
57
- | `sedd clarify` | Criar migration com decisões |
58
- | `sedd status` | Ver status atual |
59
- | `sedd --help` | Ver todos os comandos |
60
-
61
42
  ---
62
43
 
63
44
  ## O que é SEDD?
64
45
 
65
- SEDD é um toolkit que transforma a forma como você desenvolve software com AI assistants. Em vez de apenas especificar *o que* construir, você também captura *como espera que funcione* - suas expectativas como desenvolvedor.
46
+ SEDD captura sua **expectativa** antes de qualquer código. A AI sempre sabe o que você espera.
66
47
 
67
48
  ```
68
- SEDD = Spec Driven Development + Expectativas do Dev
69
- ```
49
+ 🎯 EXPECTATIVA: "User can toggle dark mode and persist across sessions"
70
50
 
71
- ### O Superpoder
51
+ 📊 Coverage: ~85% 🟢
72
52
 
73
- SEDD captura três dimensões:
74
-
75
- | Dimensão | Pergunta | Artefato |
76
- |----------|----------|----------|
77
- | **Spec** | O que o sistema faz? | `spec.md` |
78
- | **Expectation** | Como você espera que funcione? | `clarify.md` |
79
- | **Decision** | Por que foi decidido assim? | `decisions.md` |
53
+ Tasks:
54
+ - T001-001: Create ThemeContext
55
+ - T001-002: Add toggle component
56
+ - T001-003: Persist to localStorage
57
+ ```
80
58
 
81
59
  ---
82
60
 
83
- ## Por que SEDD?
61
+ ## Expectation-First Workflow
84
62
 
85
- Ao trabalhar com AI assistants em projetos de desenvolvimento:
63
+ ### 1. Captura Obrigatória
86
64
 
87
- | Problema | Sem SEDD | Com SEDD |
88
- |----------|----------|----------|
89
- | **Contexto perdido** | AI "esquece" decisões anteriores | Tudo documentado em migrations |
90
- | **Falta de rastreabilidade** | "Por que fizemos assim?" | `decisions.md` com timestamps |
91
- | **Specs vagas** | Retrabalho constante | Clarificação interativa |
92
- | **Tasks desorganizadas** | Espalhadas ou esquecidas | `tasks.md` com IDs únicos |
93
- | **Difícil retomar** | Onde parei? O que falta? | `progress.md` atualizado |
65
+ Ao usar `/sedd.specify` ou `/sedd.clarify`, a AI pergunta primeiro:
94
66
 
95
- ---
67
+ ```
68
+ 🎯 Qual é sua EXPECTATIVA para esta feature?
69
+
70
+ O que você espera ver funcionando quando estiver pronto?
71
+ ```
96
72
 
97
- ## Como Funciona
73
+ ### 2. Score de Alinhamento
98
74
 
99
- ### Fluxo em 4 Passos
75
+ Ao gerar tasks, SEDD calcula cobertura:
100
76
 
101
77
  ```
102
- ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
103
- │ 1. SPECIFY │ → │ 2. CLARIFY │ → │ 3. TASKS │ → │ 4. IMPLEMENT│
104
- │ │ │ │ │ │ │ │
105
- O que? │ │ Como? │ │ Quanto? │ │ Fazer! │
106
- spec.md │ │ clarify.md │ │ tasks.md │ │ código │
107
- └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
78
+ 📊 Coverage: ~83% 🟢
79
+
80
+ Tokens encontrados:
81
+ toggle (T001-003)
82
+ dark mode (T001-003, T001-004)
83
+ ✅ persist (T001-003)
84
+ ❌ sessions - não encontrado
85
+
86
+ ⚠️ Deseja adicionar tasks para cobrir os gaps? [Y/n]
108
87
  ```
109
88
 
110
- ### Estrutura de Pastas
89
+ ### 3. Acceptance Criteria Automático
90
+
91
+ SEDD gera `acceptance.md` baseado na expectativa:
92
+
93
+ ```markdown
94
+ ## Checklist de Aceite
111
95
 
96
+ - [ ] AC-001: User can toggle dark mode
97
+ - [ ] AC-002: Toggle está em settings
98
+ - [ ] AC-003: Theme persists after refresh
99
+ - [ ] AC-004: Theme persists across sessions
112
100
  ```
113
- .sedd/001-user-auth/
114
- ├── spec.md # Especificação base
115
- ├── _meta.json # Metadados
116
-
117
- ├── M001/ # Migration 1
118
- │ ├── clarify.md # Discussão
119
- │ ├── decisions.md # Decisões
120
- │ └── tasks.md # Tasks T001-XXX
121
-
122
- ├── M002/ # Migration 2
123
- │ ├── clarify.md
124
- │ ├── decisions.md
125
- │ └── tasks.md # Tasks T002-XXX
126
-
127
- └── progress.md # Progresso geral
101
+
102
+ ### 4. Checkpoints Durante Implementação
103
+
104
+ A cada 3 tasks, SEDD verifica alinhamento:
105
+
128
106
  ```
107
+ ⏸️ Checkpoint - 3/10 tasks completas
129
108
 
130
- ---
109
+ Sua expectativa:
110
+ > User can toggle dark mode and persist
131
111
 
132
- ## Migrations: O Diferencial
112
+ Isso ainda está alinhado? [Y/n/ajustar]
113
+ ```
133
114
 
134
- O grande diferencial do SEDD é o sistema de **migrations incrementais**.
115
+ ### 5. Validação Final
135
116
 
136
- Você não precisa saber tudo no início. Pode clarificar aos poucos:
117
+ Ao completar migration, valida contra acceptance criteria:
137
118
 
138
- ```bash
139
- sedd clarify → Migration M001 (5 tasks)
140
- # implemente...
141
- sedd clarify → Migration M002 (3 tasks mais)
142
- # implemente...
143
- sedd clarify → Migration M003 (ajustes)
144
119
  ```
120
+ 🏁 Migration 001 Completa!
145
121
 
146
- ### Benefícios
122
+ Acceptance Criteria:
123
+ - [x] AC-001: User can toggle ✓
124
+ - [x] AC-002: Toggle in settings ✓
125
+ - [ ] AC-003: Persist after refresh ✗
147
126
 
148
- - **Histórico completo**: Cada decisão tem timestamp e contexto
149
- - **Rastreabilidade**: Task T002-003 → Migration M002 → Decisão
150
- - **Flexibilidade**: Implemente M001, depois clarifica mais
151
- - **Retomada fácil**: Volte semanas depois e saiba onde parou
127
+ Criar migration de follow-up? [Y/n]
128
+ ```
152
129
 
153
130
  ---
154
131
 
155
- ## Slash Commands (AI Assistants)
132
+ ## Comandos CLI
133
+
134
+ | Comando | Descrição |
135
+ |---------|-----------|
136
+ | `sedd init` | Inicializar SEDD no projeto |
137
+ | `sedd specify <id> <name>` | Criar nova feature spec |
138
+ | `sedd clarify` | Criar migration com decisões |
139
+ | `sedd status` | Ver status atual |
140
+ | `sedd update` | Atualizar templates e migrar features existentes |
156
141
 
157
- Use estes comandos no Claude Code, Cursor, etc:
142
+ ## Slash Commands (AI)
158
143
 
159
144
  | Comando | Descrição |
160
145
  |---------|-----------|
161
- | `/sedd.specify` | Criar spec base |
162
- | `/sedd.clarify` | Clarificar e gerar tasks |
163
- | `/sedd.tasks` | Adicionar tasks à migration |
164
- | `/sedd.implement` | Executar tasks |
146
+ | `/sedd.specify` | Criar spec (pergunta expectativa primeiro) |
147
+ | `/sedd.clarify` | Clarificar e gerar tasks com score |
148
+ | `/sedd.implement` | Executar tasks com checkpoints |
165
149
  | `/sedd.implement --all` | Executar tudo sem parar |
166
150
 
167
151
  ---
168
152
 
153
+ ## Estrutura de Pastas
154
+
155
+ ```
156
+ .sedd/001-user-auth/
157
+ ├── spec.md # Especificação + Expectativa
158
+ ├── _meta.json # Metadados + expectation field
159
+
160
+ ├── 001_timestamp/ # Migration 1
161
+ │ ├── clarify.md # Discussão
162
+ │ ├── decisions.md # Decisões
163
+ │ ├── tasks.md # Tasks T001-XXX
164
+ │ └── acceptance.md # Critérios de aceite
165
+
166
+ └── progress.md # Progresso + checkpoints
167
+ ```
168
+
169
+ ---
170
+
171
+ ## Hooks Inteligentes
172
+
173
+ O hook `check-roadmap.js` sempre mostra:
174
+
175
+ ```xml
176
+ <sedd-context>
177
+ Branch: 024-feature | Migration: 001 | Progress: 3/10 🟢 ~85%
178
+
179
+ 🎯 FEATURE: User can customize theme
180
+ 📍 MIGRATION 001: Toggle dark mode with persistence
181
+
182
+ Pending tasks:
183
+ - T001-004: Add to settings page
184
+ - T001-005: API endpoint
185
+ </sedd-context>
186
+ ```
187
+
188
+ ---
189
+
169
190
  ## Configuração
170
191
 
171
192
  `sedd.config.json`:
@@ -178,12 +199,6 @@ Use estes comandos no Claude Code, Cursor, etc:
178
199
  }
179
200
  ```
180
201
 
181
- | Opção | Default | Descrição |
182
- |-------|---------|-----------|
183
- | `specsDir` | `.sedd` | Pasta das specs |
184
- | `branchPattern` | `{{id}}-{{name}}` | Formato do nome da branch |
185
- | `scriptRunner` | `auto` | `auto`, `powershell`, ou `bash` |
186
-
187
202
  ---
188
203
 
189
204
  ## Licença
@@ -195,5 +210,5 @@ MIT
195
210
  <p align="center">
196
211
  <b>Especificações dizem O QUE construir.<br>
197
212
  Expectativas dizem COMO você imagina que deve funcionar.<br>
198
- Juntas, são o superpoder que faltava.</b>
213
+ SEDD garante que as duas estejam sempre alinhadas.</b>
199
214
  </p>
package/dist/cli/index.js CHANGED
@@ -16,6 +16,7 @@ import { migrate } from './migrate.js';
16
16
  import { specify } from './specify.js';
17
17
  import { clarify } from './clarify.js';
18
18
  import { addTasks, completeTask } from './tasks.js';
19
+ import { update } from './update.js';
19
20
  const SEDD_DIR = '.sedd';
20
21
  function getFeatures(seddPath) {
21
22
  if (!existsSync(seddPath))
@@ -101,6 +102,7 @@ function showWelcome() {
101
102
  ${chalk.cyan('sedd specify <id> <name>')} Create new feature spec
102
103
  ${chalk.cyan('sedd clarify')} Create clarify/tasks/decisions
103
104
  ${chalk.cyan('sedd status')} Show project status
105
+ ${chalk.cyan('sedd update')} Update templates/commands/hooks
104
106
  ${chalk.cyan('sedd --help')} Show all commands
105
107
  `);
106
108
  }
@@ -161,6 +163,12 @@ async function main() {
161
163
  .description('Mark a task as completed')
162
164
  .argument('<task-id>', 'Task ID (e.g., "T001-001")')
163
165
  .action(completeTask);
166
+ program
167
+ .command('update')
168
+ .description('Update SEDD templates, commands, hooks and scripts')
169
+ .option('-f, --force', 'Skip confirmation prompt')
170
+ .option('-b, --backup', 'Create backup before updating')
171
+ .action(update);
164
172
  // No arguments - show welcome
165
173
  if (args.length === 0) {
166
174
  showWelcome();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface UpdateOptions {
2
+ force?: boolean;
3
+ backup?: boolean;
4
+ }
5
+ export declare function update(options?: UpdateOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"AAWA,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAoSD,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4GvE"}
@@ -0,0 +1,343 @@
1
+ import { existsSync, mkdirSync, copyFileSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { join, dirname } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import chalk from 'chalk';
5
+ const __dirname = dirname(fileURLToPath(import.meta.url));
6
+ const TEMPLATES_DIR = join(__dirname, '../../templates');
7
+ const COMMANDS_DIR = join(__dirname, '../../commands');
8
+ const HOOKS_DIR = join(__dirname, '../../hooks');
9
+ const SCRIPTS_DIR = join(__dirname, '../../scripts');
10
+ function getInstalledVersion() {
11
+ try {
12
+ const pkgPath = join(__dirname, '../../package.json');
13
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
14
+ return pkg.version || 'unknown';
15
+ }
16
+ catch {
17
+ return 'unknown';
18
+ }
19
+ }
20
+ function scanFeatures(seddDir) {
21
+ const features = [];
22
+ if (!existsSync(seddDir))
23
+ return features;
24
+ const items = readdirSync(seddDir, { withFileTypes: true });
25
+ for (const item of items) {
26
+ if (!item.isDirectory() || !/^\d{3}-/.test(item.name))
27
+ continue;
28
+ if (item.name === 'templates' || item.name === 'scripts' || item.name === 'cache')
29
+ continue;
30
+ const featurePath = join(seddDir, item.name);
31
+ const metaPath = join(featurePath, '_meta.json');
32
+ const specPath = join(featurePath, 'spec.md');
33
+ let hasMetaExpectation = false;
34
+ if (existsSync(metaPath)) {
35
+ try {
36
+ const meta = JSON.parse(readFileSync(metaPath, 'utf-8'));
37
+ hasMetaExpectation = !!meta.expectation;
38
+ }
39
+ catch { }
40
+ }
41
+ let hasSpecExpectation = false;
42
+ if (existsSync(specPath)) {
43
+ try {
44
+ const spec = readFileSync(specPath, 'utf-8');
45
+ hasSpecExpectation = /^##\s*Expectat/im.test(spec);
46
+ }
47
+ catch { }
48
+ }
49
+ const migrations = [];
50
+ const contents = readdirSync(featurePath, { withFileTypes: true });
51
+ for (const content of contents) {
52
+ if (!content.isDirectory())
53
+ continue;
54
+ if (!/^\d{3}[_-]/.test(content.name))
55
+ continue;
56
+ const migPath = join(featurePath, content.name);
57
+ const hasAcceptance = existsSync(join(migPath, 'acceptance.md'));
58
+ let taskCount = 0;
59
+ const tasksPath = join(migPath, 'tasks.md');
60
+ if (existsSync(tasksPath)) {
61
+ try {
62
+ const tasks = readFileSync(tasksPath, 'utf-8');
63
+ const matches = tasks.match(/^\s*-\s*\[[\sx]\]\s*T\d{3}-\d{3}/gim);
64
+ taskCount = matches ? matches.length : 0;
65
+ }
66
+ catch { }
67
+ }
68
+ const migId = content.name.split(/[_-]/)[0];
69
+ migrations.push({
70
+ id: migId,
71
+ folder: content.name,
72
+ path: migPath,
73
+ hasAcceptance,
74
+ taskCount,
75
+ });
76
+ }
77
+ migrations.sort((a, b) => a.id.localeCompare(b.id));
78
+ features.push({
79
+ name: item.name,
80
+ path: featurePath,
81
+ hasMetaExpectation,
82
+ hasSpecExpectation,
83
+ migrations,
84
+ });
85
+ }
86
+ return features.sort((a, b) => a.name.localeCompare(b.name));
87
+ }
88
+ function updateSeddFiles(cwd) {
89
+ const seddDir = join(cwd, '.sedd');
90
+ const claudeDir = join(cwd, '.claude');
91
+ const seddTemplatesDir = join(seddDir, 'templates');
92
+ const seddScriptsDir = join(seddDir, 'scripts');
93
+ const commandsDestDir = join(claudeDir, 'commands');
94
+ const hooksDestDir = join(claudeDir, 'hooks');
95
+ if (!existsSync(seddTemplatesDir))
96
+ mkdirSync(seddTemplatesDir, { recursive: true });
97
+ if (!existsSync(commandsDestDir))
98
+ mkdirSync(commandsDestDir, { recursive: true });
99
+ if (!existsSync(hooksDestDir))
100
+ mkdirSync(hooksDestDir, { recursive: true });
101
+ if (existsSync(TEMPLATES_DIR)) {
102
+ for (const file of readdirSync(TEMPLATES_DIR)) {
103
+ copyFileSync(join(TEMPLATES_DIR, file), join(seddTemplatesDir, file));
104
+ }
105
+ }
106
+ if (existsSync(COMMANDS_DIR)) {
107
+ for (const file of readdirSync(COMMANDS_DIR)) {
108
+ copyFileSync(join(COMMANDS_DIR, file), join(commandsDestDir, file));
109
+ }
110
+ }
111
+ if (existsSync(HOOKS_DIR)) {
112
+ for (const file of readdirSync(HOOKS_DIR)) {
113
+ copyFileSync(join(HOOKS_DIR, file), join(hooksDestDir, file));
114
+ }
115
+ }
116
+ if (existsSync(SCRIPTS_DIR)) {
117
+ const isWindows = process.platform === 'win32';
118
+ for (const folder of ['powershell', 'bash']) {
119
+ const srcFolder = join(SCRIPTS_DIR, folder);
120
+ const destFolder = join(seddScriptsDir, folder);
121
+ if (existsSync(srcFolder)) {
122
+ if (!existsSync(destFolder))
123
+ mkdirSync(destFolder, { recursive: true });
124
+ for (const file of readdirSync(srcFolder)) {
125
+ copyFileSync(join(srcFolder, file), join(destFolder, file));
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }
131
+ async function migrateFeature(feature) {
132
+ const { default: inquirer } = await import('inquirer');
133
+ console.log(chalk.blue(`\n📝 Migrando ${feature.name}...\n`));
134
+ let specSummary = '';
135
+ const specPath = join(feature.path, 'spec.md');
136
+ if (existsSync(specPath)) {
137
+ const spec = readFileSync(specPath, 'utf-8');
138
+ const lines = spec.split('\n').slice(0, 20);
139
+ const descLine = lines.find(l => l.startsWith('>') || (l.length > 20 && !l.startsWith('#')));
140
+ if (descLine) {
141
+ specSummary = descLine.replace(/^>\s*/, '').slice(0, 100);
142
+ }
143
+ }
144
+ if (specSummary) {
145
+ console.log(chalk.gray('Resumo da feature:'));
146
+ console.log(chalk.white(`> ${specSummary}\n`));
147
+ }
148
+ const { expectation } = await inquirer.prompt([{
149
+ type: 'input',
150
+ name: 'expectation',
151
+ message: '🎯 Qual é a EXPECTATIVA para esta feature?',
152
+ validate: (input) => input.length > 5 || 'Expectativa muito curta',
153
+ }]);
154
+ const metaPath = join(feature.path, '_meta.json');
155
+ if (existsSync(metaPath)) {
156
+ try {
157
+ const meta = JSON.parse(readFileSync(metaPath, 'utf-8'));
158
+ meta.expectation = expectation;
159
+ writeFileSync(metaPath, JSON.stringify(meta, null, 2) + '\n');
160
+ console.log(chalk.green('✓'), 'Adicionado ao _meta.json');
161
+ }
162
+ catch (e) {
163
+ console.log(chalk.red('✗'), 'Erro ao atualizar _meta.json');
164
+ }
165
+ }
166
+ if (existsSync(specPath) && !feature.hasSpecExpectation) {
167
+ try {
168
+ const spec = readFileSync(specPath, 'utf-8');
169
+ const lines = spec.split('\n');
170
+ let insertIndex = 0;
171
+ for (let i = 0; i < lines.length; i++) {
172
+ if (lines[i].startsWith('# ')) {
173
+ insertIndex = i + 1;
174
+ while (insertIndex < lines.length && lines[insertIndex].trim() === '') {
175
+ insertIndex++;
176
+ }
177
+ break;
178
+ }
179
+ }
180
+ const expectationSection = `\n## Expectation\n\n> ${expectation}\n`;
181
+ lines.splice(insertIndex, 0, expectationSection);
182
+ writeFileSync(specPath, lines.join('\n'));
183
+ console.log(chalk.green('✓'), 'Adicionado ao spec.md');
184
+ }
185
+ catch (e) {
186
+ console.log(chalk.red('✗'), 'Erro ao atualizar spec.md');
187
+ }
188
+ }
189
+ if (feature.migrations.length > 0) {
190
+ const migrationsWithoutAC = feature.migrations.filter(m => !m.hasAcceptance && m.taskCount > 0);
191
+ if (migrationsWithoutAC.length > 0) {
192
+ const { createAC } = await inquirer.prompt([{
193
+ type: 'confirm',
194
+ name: 'createAC',
195
+ message: `Criar acceptance.md para ${migrationsWithoutAC.length} migration(s)?`,
196
+ default: true,
197
+ }]);
198
+ if (createAC) {
199
+ for (const mig of migrationsWithoutAC) {
200
+ await generateAcceptance(mig, expectation);
201
+ }
202
+ }
203
+ }
204
+ }
205
+ }
206
+ async function generateAcceptance(migration, expectation) {
207
+ const tasksPath = join(migration.path, 'tasks.md');
208
+ if (!existsSync(tasksPath))
209
+ return;
210
+ const tasks = readFileSync(tasksPath, 'utf-8');
211
+ const taskMatches = tasks.match(/^\s*-\s*\[[\sx]\]\s*(T\d{3}-\d{3})\s*\[?[^\]]*\]?\s*(.+)/gim) || [];
212
+ const criteria = [];
213
+ let acNum = 1;
214
+ for (const match of taskMatches) {
215
+ const parts = match.match(/^\s*-\s*\[[\sx]\]\s*(T\d{3}-\d{3})\s*\[?[^\]]*\]?\s*(.+)/i);
216
+ if (parts && parts[2]) {
217
+ const taskDesc = parts[2].replace(/`[^`]+`/g, '').trim();
218
+ const acId = `AC-${String(acNum).padStart(3, '0')}`;
219
+ criteria.push(`- [ ] **${acId}:** ${taskDesc}`);
220
+ acNum++;
221
+ }
222
+ }
223
+ if (criteria.length === 0)
224
+ return;
225
+ const timestamp = new Date().toISOString().slice(0, 19).replace('T', ' ');
226
+ const acceptance = `# Acceptance Criteria - Migration ${migration.id}
227
+
228
+ > Generated from tasks
229
+ > Timestamp: ${timestamp}
230
+
231
+ ## Expectativa
232
+
233
+ > ${expectation}
234
+
235
+ ---
236
+
237
+ ## Checklist de Aceite
238
+
239
+ ${criteria.join('\n - Verificar: Testar manualmente\n\n')}
240
+ - Verificar: Testar manualmente
241
+
242
+ ---
243
+
244
+ ## Sign-off
245
+
246
+ | Critério | Status | Verificado Por | Data |
247
+ |----------|--------|----------------|------|
248
+ ${criteria.map((_, i) => `| AC-${String(i + 1).padStart(3, '0')} | pending | - | - |`).join('\n')}
249
+
250
+ ---
251
+
252
+ ## Notas
253
+
254
+ _Gerado automaticamente por \`sedd update\`_
255
+ `;
256
+ writeFileSync(join(migration.path, 'acceptance.md'), acceptance);
257
+ console.log(chalk.green('✓'), `Criado ${migration.folder}/acceptance.md (${criteria.length} critérios)`);
258
+ }
259
+ export async function update(options = {}) {
260
+ const cwd = process.cwd();
261
+ const seddDir = join(cwd, '.sedd');
262
+ const claudeDir = join(cwd, '.claude');
263
+ if (!existsSync(seddDir) && !existsSync(claudeDir)) {
264
+ console.log(chalk.red('\n❌ SEDD não inicializado neste projeto.'));
265
+ console.log(chalk.gray(' Execute'), chalk.cyan('sedd init'), chalk.gray('primeiro.\n'));
266
+ return;
267
+ }
268
+ const version = getInstalledVersion();
269
+ console.log(chalk.blue(`\n🔄 SEDD Update - v${version}\n`));
270
+ console.log(chalk.gray('Escaneando projeto...\n'));
271
+ const features = scanFeatures(seddDir);
272
+ if (features.length === 0) {
273
+ console.log(chalk.yellow('Nenhuma feature encontrada.\n'));
274
+ console.log(chalk.gray('Atualizando templates/commands/hooks...\n'));
275
+ updateSeddFiles(cwd);
276
+ console.log(chalk.green('\n✨ Atualização concluída!\n'));
277
+ return;
278
+ }
279
+ console.log(chalk.white(`📁 Features encontradas: ${features.length}`));
280
+ for (const f of features) {
281
+ console.log(chalk.gray(` ${f.name}`));
282
+ }
283
+ console.log('');
284
+ console.log(chalk.bold('📋 Análise de compatibilidade:\n'));
285
+ const maxName = Math.max(...features.map(f => f.name.length), 15);
286
+ console.log(chalk.gray(`┌${'─'.repeat(maxName + 2)}┬──────────┬────────────┬─────────────┐`));
287
+ console.log(chalk.gray(`│ ${'Feature'.padEnd(maxName)} │ meta.exp │ spec.exp │ migrations │`));
288
+ console.log(chalk.gray(`├${'─'.repeat(maxName + 2)}┼──────────┼────────────┼─────────────┤`));
289
+ let needsMigration = 0;
290
+ for (const f of features) {
291
+ const metaIcon = f.hasMetaExpectation ? chalk.green('✅') : chalk.red('❌');
292
+ const specIcon = f.hasSpecExpectation ? chalk.green('✅') : chalk.red('❌');
293
+ const migsWithAC = f.migrations.filter(m => m.hasAcceptance).length;
294
+ const migInfo = f.migrations.length > 0
295
+ ? `${f.migrations.length} (${migsWithAC} c/ AC)`
296
+ : '0';
297
+ if (!f.hasMetaExpectation || !f.hasSpecExpectation)
298
+ needsMigration++;
299
+ console.log(chalk.gray(`│ `) + f.name.padEnd(maxName) + chalk.gray(` │ `) + metaIcon.padEnd(8) + chalk.gray(` │ `) + specIcon.padEnd(10) + chalk.gray(` │ `) + migInfo.padEnd(11) + chalk.gray(` │`));
300
+ }
301
+ console.log(chalk.gray(`└${'─'.repeat(maxName + 2)}┴──────────┴────────────┴─────────────┘`));
302
+ console.log(chalk.gray('\nLegenda:'));
303
+ console.log(chalk.gray(' meta.exp = _meta.json tem campo expectation'));
304
+ console.log(chalk.gray(' spec.exp = spec.md tem seção ## Expectation'));
305
+ console.log(chalk.gray(' AC = acceptance.md\n'));
306
+ if (needsMigration > 0) {
307
+ console.log(chalk.yellow(`⚠️ ${needsMigration} feature(s) sem expectation definida\n`));
308
+ }
309
+ const { default: inquirer } = await import('inquirer');
310
+ const choices = [
311
+ { name: '1. Atualizar só templates/commands (novas features terão expectation)', value: 'templates' },
312
+ ];
313
+ if (needsMigration > 0) {
314
+ choices.push({ name: '2. Migrar features existentes (perguntar expectation para cada)', value: 'migrate' });
315
+ }
316
+ choices.push({ name: needsMigration > 0 ? '3. Cancelar' : '2. Cancelar', value: 'cancel' });
317
+ const { action } = await inquirer.prompt([{
318
+ type: 'list',
319
+ name: 'action',
320
+ message: 'O que deseja fazer?',
321
+ choices,
322
+ }]);
323
+ if (action === 'cancel') {
324
+ console.log(chalk.gray('\nAbortado.\n'));
325
+ return;
326
+ }
327
+ if (action === 'migrate') {
328
+ const featuresToMigrate = features.filter(f => !f.hasMetaExpectation || !f.hasSpecExpectation);
329
+ for (const feature of featuresToMigrate) {
330
+ await migrateFeature(feature);
331
+ }
332
+ }
333
+ console.log(chalk.blue('\n📦 Atualizando templates/commands/hooks/scripts...\n'));
334
+ updateSeddFiles(cwd);
335
+ const templatesCount = existsSync(TEMPLATES_DIR) ? readdirSync(TEMPLATES_DIR).length : 0;
336
+ const commandsCount = existsSync(COMMANDS_DIR) ? readdirSync(COMMANDS_DIR).length : 0;
337
+ const hooksCount = existsSync(HOOKS_DIR) ? readdirSync(HOOKS_DIR).length : 0;
338
+ console.log(chalk.green('✓'), `Templates: ${templatesCount} arquivos`);
339
+ console.log(chalk.green('✓'), `Commands: ${commandsCount} arquivos`);
340
+ console.log(chalk.green('✓'), `Hooks: ${hooksCount} arquivos`);
341
+ console.log(chalk.blue(`\n✨ SEDD atualizado para v${version}!\n`));
342
+ }
343
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sedd",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "SEDD - Spec & Expectation Driven Development. A phase-based specification workflow for AI-assisted development.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",