sedd 0.1.8 → 0.1.9

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.
@@ -51,26 +51,67 @@ User runs `/sedd.clarify`
51
51
  - Every migration has tasks.md (generated at the end)
52
52
  - Tasks reference this migration ID
53
53
 
54
+ ⚠️ **ANNOTATE EVERYTHING - TUDO VIRA TASK**
55
+ - Cada ponto do usuario → anotar como fonte de task
56
+ - Cada sugestao da AI aceita → anotar como fonte de task
57
+ - Cada decisao tomada → anotar implicacoes como fontes de task
58
+ - Cada edge case levantado → anotar como fonte de task
59
+ - Formato: **[TASK_SOURCE:{tipo}]** antes de cada ponto anotado
60
+ - Tipos: user-req, ai-suggestion, decision, edge-case, constraint
61
+
54
62
  ## Workflow
55
63
 
56
- ### Step 1: Capture Expected Outcome (FIRST - MANDATORY)
64
+ ### Step 1: Load Context PRIMEIRO
57
65
 
58
- **ANTES DE QUALQUER COISA**, pergunte ao usuário:
66
+ Read from feature root:
67
+ - spec.md (especialmente `## Expectation` e user stories)
68
+ - interfaces.ts (entidades)
69
+ - _meta.json (expectation do specify)
70
+ - Previous migrations (if any)
59
71
 
60
- ```
61
- 🎯 Qual é sua EXPECTATIVA para esta clarificação?
72
+ ### Step 1.5: Suggest Expectations (PROACTIVE)
62
73
 
63
- O que você espera ter funcionando ao final desta migration?
64
- (Isso será usado para validar se as tasks cobrem seu objetivo)
65
- ```
74
+ Com base no contexto carregado, AI DEVE:
75
+
76
+ 1. Apresentar a expectativa original da spec:
77
+ > "Expectativa original (da spec): {quote}"
78
+
79
+ 2. SUGERIR expectativas adicionais para esta migration baseado em:
80
+ - User stories nao cobertas por migrations anteriores
81
+ - Edge cases identificados nas interfaces
82
+ - Dependencias entre entidades
83
+ - Potenciais problemas de performance/seguranca
84
+ - Gaps entre a expectativa original e o que ja foi implementado
85
+
86
+ 3. Apresentar assim:
87
+ ```
88
+ Com base na spec e no que ja temos, sugiro para esta migration:
89
+
90
+ DEVE:
91
+ - [sugestao 1 baseada na spec]
92
+ - [sugestao 2 baseada em edge case]
93
+ - [sugestao 3 baseada em dependencia]
94
+
95
+ NAO DEVE:
96
+ - [restricao identificada]
97
+
98
+ Potenciais que identifiquei:
99
+ - [concern 1]
100
+ - [concern 2]
101
+
102
+ Quer acrescentar algo? Quer que eu veja outro potencial?
103
+ ```
104
+
105
+ 4. Aguardar usuario confirmar, ajustar, ou adicionar
106
+ 5. SO ENTAO consolidar expectativa final (summary + must + mustNot)
66
107
 
67
108
  Save in `clarify.md` under `## Expected Outcome` section (NO TOPO).
68
109
 
69
- **NÃO PROSSIGA** sem a expectativa do usuário.
110
+ **NÃO PROSSIGA** sem a expectativa do usuário confirmada.
70
111
 
71
- ### Step 1.5: Detail MUST and MUST NOT (STRUCTURED EXPECTATION)
112
+ ### Step 2: Detail MUST and MUST NOT (STRUCTURED EXPECTATION)
72
113
 
73
- Após capturar o resumo da expectativa, detalhar com regras claras:
114
+ Após consolidar as expectativas (originais + sugeridas + usuario), detalhar com regras claras:
74
115
 
75
116
  ```
76
117
  Agora vamos detalhar sua expectativa:
@@ -111,13 +152,6 @@ Save in `clarify.md` under `## Expectation Details`:
111
152
  }
112
153
  ```
113
154
 
114
- ### Step 2: Load Context
115
-
116
- Read from feature root:
117
- - spec.md (especialmente a seção Expectation original)
118
- - interfaces.ts
119
- - Previous migrations (if any)
120
-
121
155
  ### Step 3: Create New Migration Folder
122
156
 
123
157
  Generate new migration folder:
@@ -199,9 +233,10 @@ When user provides information (not a command):
199
233
  "O sistema precisa suportar múltiplos tenants, cada um com suas próprias configurações..."
200
234
 
201
235
  **Key Points Extracted:**
202
- - Multi-tenant architecture required
203
- - Per-tenant configuration
204
- - Isolation between tenants
236
+ - **[TASK_SOURCE:user-req]** Multi-tenant architecture required
237
+ - **[TASK_SOURCE:user-req]** Per-tenant configuration
238
+ - **[TASK_SOURCE:ai-suggestion]** Isolation strategy needs definition
239
+ - **[TASK_SOURCE:edge-case]** Cross-tenant data leaks prevention
205
240
 
206
241
  ---
207
242
  ```
@@ -274,7 +309,14 @@ Proceed to Step 6 (Generate Tasks).
274
309
 
275
310
  ### Step 6: Generate tasks.md (After All Q&A Complete)
276
311
 
277
- Based on all decisions, create tasks:
312
+ Ao gerar tasks, VARRER clarify.md por TODOS os `[TASK_SOURCE:*]` tags:
313
+ - Cada tag com tipo `user-req` → task obrigatoria
314
+ - Cada tag com tipo `ai-suggestion` (aceita) → task obrigatoria
315
+ - Cada tag com tipo `decision` → task para implementar decisao
316
+ - Cada tag com tipo `edge-case` → task de validacao/protecao
317
+ - Cada tag com tipo `constraint` → task de teste negativo
318
+
319
+ Based on all decisions and TASK_SOURCE tags, create tasks:
278
320
 
279
321
  ```markdown
280
322
  # Tasks - Migration 001
@@ -20,7 +20,11 @@ User runs `/sedd.specify "feature description"` or `/sedd.specify` (interactive)
20
20
 
21
21
  3. **Check for existing feature branch**
22
22
  - If on feature branch (###-name): use existing feature
23
- - If not: create new feature
23
+ - If on master/main or outra branch nao-feature:
24
+ 1. Determinar proximo feature ID (buscar maior ###- nas branches + 1)
25
+ 2. Criar branch `{id}-{nome}` com `git checkout -b {id}-{nome}`
26
+ 3. Confirmar: "Criei a branch {id}-{nome} e ja estou nela"
27
+ 4. SO ENTAO prosseguir com criacao da estrutura
24
28
 
25
29
  ## Configuration
26
30
 
@@ -1 +1 @@
1
- {"version":3,"file":"specify.d.ts","sourceRoot":"","sources":["../../src/cli/specify.ts"],"names":[],"mappings":"AAKA,UAAU,cAAc;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,OAAO,CAC3B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA0If"}
1
+ {"version":3,"file":"specify.d.ts","sourceRoot":"","sources":["../../src/cli/specify.ts"],"names":[],"mappings":"AAMA,UAAU,cAAc;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,OAAO,CAC3B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAyJf"}
@@ -2,10 +2,25 @@ import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import chalk from 'chalk';
4
4
  import { loadConfig } from '../types/index.js';
5
+ import { GitOperations } from '../utils/git.js';
5
6
  export async function specify(featureId, featureName, options = {}) {
6
7
  const cwd = process.cwd();
7
8
  const config = loadConfig(cwd);
8
9
  const branchName = `${featureId}-${featureName}`;
10
+ const git = new GitOperations(cwd);
11
+ const currentBranch = git.getCurrentBranch();
12
+ if (!git.isFeatureBranch(currentBranch)) {
13
+ console.log(chalk.blue('i'), `On ${currentBranch}, creating feature branch...`);
14
+ const success = git.createBranch(branchName);
15
+ if (!success) {
16
+ console.log(chalk.red('Error: Could not create branch'), branchName);
17
+ process.exit(1);
18
+ }
19
+ console.log(chalk.green('✓'), `Created and switched to branch: ${branchName}`);
20
+ }
21
+ else {
22
+ console.log(chalk.blue('i'), `Already on feature branch: ${currentBranch}`);
23
+ }
9
24
  const featureDir = join(cwd, config.specsDir, branchName);
10
25
  if (existsSync(featureDir)) {
11
26
  console.log(chalk.yellow(`Feature already exists: ${featureDir}`));
@@ -1 +1 @@
1
- {"version":3,"file":"specify.js","sourceRoot":"","sources":["../../src/cli/specify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"specify.js","sourceRoot":"","sources":["../../src/cli/specify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAe,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAOhD,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,SAAiB,EACjB,WAAmB,EACnB,UAA0B,EAAE;IAE5B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,UAAU,GAAG,GAAG,SAAS,IAAI,WAAW,EAAE,CAAC;IAEjD,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,aAAa,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAE7C,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,aAAa,8BAA8B,CAAC,CAAC;QAChF,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,EAAE,UAAU,CAAC,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,mCAAmC,UAAU,EAAE,CAAC,CAAC;IACjF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,8BAA8B,aAAa,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAE1D,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,YAAY,UAAU,EAAE,CAAC,CAAC;IAExD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;IAE9C,MAAM,IAAI,GAAgB;QACxB,SAAS;QACT,WAAW;QACX,MAAM,EAAE,UAAU;QAClB,SAAS,EAAE,GAAG;QACd,aAAa,EAAE,GAAG;QAClB,gBAAgB,EAAE,IAAI;QACtB,UAAU,EAAE,EAAE;QACd,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,WAAW,IAAI,SAAS;KACtC,CAAC;IAEF,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAErD,MAAM,kBAAkB,GAAG,WAAW;QACpC,CAAC,CAAC;;IAEF,WAAW;;CAEd;QACG,CAAC,CAAC;;;;;;CAML,CAAC;IAEA,MAAM,WAAW,GAAG,KAAK,WAAW;;;;EAIpC,WAAW;;EAEX,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCnB,CAAC;IAEA,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAElD,MAAM,iBAAiB,GAAG;+BACG,WAAW;iBACzB,SAAS;;;;;;;;;;;;;CAazB,CAAC;IAEA,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,wBAAwB,CAAC,CAAC;IAExD,MAAM,gBAAgB,GAAG,iBAAiB,WAAW;;;;;;;;CAQtD,CAAC;IAEA,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,uBAAuB,CAAC,CAAC;IAEvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;AACjE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sedd",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
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",