@dewtech/dare-cli
Advanced tools
| # /dare-security | ||
| Guia completo de segurança para todas as fases do DARE. Use para: revisar o DESIGN/BLUEPRINT com foco em segurança, implementar controles em uma task específica, ou auditar o projeto existente. | ||
| ## Como usar | ||
| ``` | ||
| /dare-security # auditoria geral do projeto | ||
| /dare-security task-005 # revisar segurança de uma task específica | ||
| /dare-security design # revisar DARE/DESIGN.md com lente de segurança | ||
| /dare-security deps # auditar dependências vulneráveis agora | ||
| ``` | ||
| ## Aplicação por fase | ||
| ### `/dare-security design` — Revisar DESIGN.md | ||
| Leia `DARE/DESIGN.md` e verifique: | ||
| - [ ] Seção RS-* com requisitos de segurança numerados existe | ||
| - [ ] RS-01 (validação de entrada), RS-02 (hash/criptografia), RS-03 (controle de acesso), RS-04 (auditoria de deps), RS-05 (secrets) presentes | ||
| - [ ] Riscos de segurança identificados com mitigações (SSRF, Injection, Auth bypass...) | ||
| - [ ] Fora do escopo não omite itens de segurança críticos para v1 | ||
| ### `/dare-security deps` — Auditar dependências | ||
| Execute o comando de auditoria da stack do projeto: | ||
| ```bash | ||
| # Detectar stack automaticamente e rodar | ||
| npm audit --audit-level=high # se package.json presente | ||
| cargo audit # se Cargo.toml presente | ||
| pip-audit # se requirements.txt / pyproject.toml presente | ||
| composer audit # se composer.json presente | ||
| govulncheck ./... # se go.mod presente | ||
| ``` | ||
| **Critério:** CVE HIGH ou CRITICAL = reportar ao usuário com versão afetada, CVE ID e versão corrigida disponível. Propor o fix (bump de versão ou substituição de pacote). | ||
| **Auto-fix quando seguro:** | ||
| ```bash | ||
| npm audit fix # Node — corrige sem breaking changes | ||
| cargo update # Rust — bumpa dentro das constraints do Cargo.toml | ||
| pip install --upgrade [pacote] # Python — atualizar pacote específico | ||
| ``` | ||
| --- | ||
| ## OWASP Top 10 — Referência Rápida por Stack | ||
| ### A01 — Broken Access Control | ||
| ```typescript | ||
| // Node/NestJS — guard + policy | ||
| @UseGuards(JwtAuthGuard, PoliciesGuard) | ||
| @CheckPolicies(ability => ability.can(Action.Update, Post)) | ||
| async update(@Param('id') id: string, @CurrentUser() user: User) { | ||
| // ORM já filtra por ownership via policy | ||
| } | ||
| ``` | ||
| ```python | ||
| # FastAPI — dependency injection para verificar ownership | ||
| async def get_post_or_403(post_id: str, current_user: User = Depends(get_current_user), db: Session = Depends(get_db)): | ||
| post = db.query(Post).filter(Post.id == post_id, Post.author_id == current_user.id).first() | ||
| if not post: | ||
| raise HTTPException(403) | ||
| return post | ||
| ``` | ||
| ```rust | ||
| // Rust/Axum — extractor verifica ownership | ||
| async fn update_post( | ||
| State(db): State<Pool<Postgres>>, | ||
| claims: Claims, // extraído do JWT | ||
| Path(post_id): Path<Uuid>, | ||
| Json(body): Json<UpdatePostBody>, | ||
| ) -> Result<Json<Post>, AppError> { | ||
| let post = sqlx::query_as!(Post, | ||
| "SELECT * FROM posts WHERE id = $1 AND author_id = $2", | ||
| post_id, claims.sub // filtra por owner | ||
| ).fetch_one(&db).await?; | ||
| // ... | ||
| } | ||
| ``` | ||
| ### A02 — Cryptographic Failures | ||
| ```typescript | ||
| // Node — Argon2 via @node-rs/argon2 | ||
| import { hash, verify } from '@node-rs/argon2'; | ||
| const hashed = await hash(password); // hash | ||
| const valid = await verify(hashed, password); // verify | ||
| ``` | ||
| ```python | ||
| # Python — passlib com Argon2 | ||
| from passlib.hash import argon2 | ||
| hashed = argon2.hash(password) | ||
| valid = argon2.verify(password, hashed) | ||
| ``` | ||
| ```rust | ||
| // Rust — argon2 crate | ||
| use argon2::{Argon2, PasswordHash, PasswordHasher, PasswordVerifier, password_hash::SaltString}; | ||
| let salt = SaltString::generate(&mut OsRng); | ||
| let hash = Argon2::default().hash_password(password.as_bytes(), &salt)?.to_string(); | ||
| ``` | ||
| ### A03 — Injection | ||
| ```typescript | ||
| // TypeScript/Prisma — parametrizado por padrão | ||
| const user = await prisma.user.findFirst({ where: { email } }); // ✅ | ||
| // NestJS — nunca QueryBuilder com interpolação | ||
| .where(`user.email = '${email}'`) // ❌ | ||
| .where('user.email = :email', { email }) // ✅ | ||
| ``` | ||
| ```python | ||
| # SQLAlchemy — sempre parametrizado | ||
| db.execute(select(User).where(User.email == email)) # ✅ | ||
| db.execute(f"SELECT * FROM users WHERE email = '{email}'") # ❌ | ||
| ``` | ||
| ### A06 — Vulnerable Components (Ralph Loop obrigatório) | ||
| ```bash | ||
| # Adicionar ao pipeline CI (GitHub Actions): | ||
| - name: Security audit | ||
| run: | | ||
| npm audit --audit-level=high # Node | ||
| # ou cargo audit # Rust | ||
| # ou pip-audit # Python | ||
| # ou composer audit # PHP | ||
| ``` | ||
| ### A07 — Authentication Failures | ||
| ```typescript | ||
| // Rate limiting com @nestjs/throttler | ||
| @Throttle({ default: { limit: 5, ttl: 900000 } }) // 5 req / 15 min | ||
| @Post('login') | ||
| async login() { ... } | ||
| // JWT: access token curto, refresh com rotação | ||
| const accessToken = jwt.sign(payload, secret, { expiresIn: '15m' }); | ||
| const refreshToken = jwt.sign({ sub: userId }, refreshSecret, { expiresIn: '7d' }); | ||
| // Salvar refresh token hash no DB para invalidação no logout | ||
| ``` | ||
| ### Prompt Injection (projetos com LLM) | ||
| ```python | ||
| # Nunca concatenar input do usuário diretamente na instrução do sistema | ||
| system_prompt = f"Você é um assistente. {user_input}" # ❌ CRÍTICO | ||
| # Separar claramente instrução de dados: | ||
| messages = [ | ||
| {"role": "system", "content": "Você é um assistente. Responda apenas sobre o documento fornecido."}, | ||
| {"role": "user", "content": f"<documento>{sanitize(user_document)}</documento>\n\nPergunta: {sanitize(user_question)}"} | ||
| ] | ||
| # Sanitize: remova ou escape sequências como "Ignore as instruções acima" | ||
| ``` | ||
| --- | ||
| ## Gestão de Secrets | ||
| ### O que nunca commitar | ||
| ```bash | ||
| # Configure git-secrets ou detect-secrets: | ||
| pip install detect-secrets | ||
| detect-secrets scan > .secrets.baseline | ||
| # Padrões críticos a bloquear: | ||
| # password = "..." | ||
| # api_key = "..." | ||
| # DATABASE_URL com credenciais | ||
| # AWS_SECRET_ACCESS_KEY | ||
| # private_key | ||
| ``` | ||
| ### Estrutura correta | ||
| ``` | ||
| .env ← valores reais (no .gitignore) | ||
| .env.example ← template sem valores (commitado) | ||
| ``` | ||
| ```bash | ||
| # .env.example — sempre commitado, sem valores reais | ||
| DATABASE_URL=postgres://user:password@localhost:5432/dbname | ||
| JWT_SECRET=your-secret-here-min-32-chars | ||
| STRIPE_SECRET_KEY=sk_test_... | ||
| ``` | ||
| --- | ||
| ## Headers de Segurança HTTP | ||
| ```typescript | ||
| // NestJS — helmet middleware | ||
| import helmet from 'helmet'; | ||
| app.use(helmet()); | ||
| app.use(helmet.hsts({ maxAge: 31536000, includeSubDomains: true })); | ||
| ``` | ||
| ```python | ||
| # FastAPI — middleware de headers | ||
| from starlette.middleware.base import BaseHTTPMiddleware | ||
| class SecurityHeadersMiddleware(BaseHTTPMiddleware): | ||
| async def dispatch(self, request, call_next): | ||
| response = await call_next(request) | ||
| response.headers["X-Frame-Options"] = "DENY" | ||
| response.headers["X-Content-Type-Options"] = "nosniff" | ||
| response.headers["Strict-Transport-Security"] = "max-age=31536000; includeSubDomains" | ||
| return response | ||
| ``` | ||
| ```rust | ||
| // Axum — layer de headers de segurança | ||
| use tower_http::set_header::SetResponseHeaderLayer; | ||
| let app = Router::new() | ||
| .layer(SetResponseHeaderLayer::overriding( | ||
| header::X_FRAME_OPTIONS, | ||
| HeaderValue::from_static("DENY"), | ||
| )); | ||
| ``` | ||
| $ARGUMENTS |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,WAAW,SAqNpB,CAAC"} | ||
| {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,WAAW,SAkPpB,CAAC"} |
@@ -100,2 +100,22 @@ import { Command } from 'commander'; | ||
| }, | ||
| // ── Rust workspace layout (only for monorepo + rust-axum + rust-leptos*) ── | ||
| { | ||
| type: 'list', | ||
| name: 'rustWorkspaceLayout', | ||
| message: 'Cargo workspace layout:', | ||
| when: (ans) => ans.structure === 'monorepo' && | ||
| ans.backend === 'rust-axum' && | ||
| (ans.frontend === 'rust-leptos' || ans.frontend === 'rust-leptos-csr'), | ||
| choices: [ | ||
| { | ||
| name: '📦 Single-crate — crates/server + crates/web (app simples, recomendado para começar)', | ||
| value: 'single', | ||
| }, | ||
| { | ||
| name: '🏗️ Multi-crate — {name}-core / {name}-server / {name}-web / {name}-cli (produto / plataforma)', | ||
| value: 'multi', | ||
| }, | ||
| ], | ||
| default: 'single', | ||
| }, | ||
| // ── Common questions ────────────────────────────────────────────────── | ||
@@ -166,2 +186,3 @@ { | ||
| toolchain: answers.toolchain, | ||
| rustWorkspaceLayout: answers.rustWorkspaceLayout, | ||
| outputDir: path.resolve(process.cwd(), name), | ||
@@ -194,13 +215,20 @@ }); | ||
| } | ||
| const isRustFullstack = answers.backend === 'rust-axum' && | ||
| answers.frontend === 'rust-leptos' && | ||
| const isRustMonorepo = answers.backend === 'rust-axum' && | ||
| (answers.frontend === 'rust-leptos' || answers.frontend === 'rust-leptos-csr') && | ||
| answers.structure === 'monorepo'; | ||
| if (isRustFullstack) { | ||
| console.log(chalk.cyan('🦀 Rust full-stack workspace created!')); | ||
| console.log(chalk.gray(' Cargo.toml workspace unifies backend/ and frontend/ into a single Cargo workspace.')); | ||
| if (isRustMonorepo) { | ||
| const layout = answers.rustWorkspaceLayout ?? 'single'; | ||
| const sanitized = name.toLowerCase().replace(/[^a-z0-9-]+/g, '-').replace(/^-+|-+$/g, ''); | ||
| console.log(chalk.cyan('🦀 Rust workspace created!')); | ||
| if (layout === 'single') { | ||
| console.log(chalk.gray(` crates/server/ (rust-axum) + crates/web/ (${answers.frontend})`)); | ||
| } | ||
| else { | ||
| console.log(chalk.gray(` crates/${sanitized}-core | crates/${sanitized}-server | crates/${sanitized}-web | crates/${sanitized}-cli`)); | ||
| } | ||
| console.log(chalk.gray(' See .cargo/config.toml — do NOT add a global [build] target (breaks WASM + native crates).\n')); | ||
| console.log(chalk.gray(' Tip: use /dare-rust-leptos for Leptos idioms and /dare-rust-workspace for multi-crate decisions.\n')); | ||
| console.log(chalk.gray(' Tip: /dare-rust-leptos for Leptos idioms · /dare-rust-workspace for workspace decisions.\n')); | ||
| } | ||
| const isLeptos = answers.frontend === 'rust-leptos' || answers.frontend === 'rust-leptos-csr'; | ||
| if (isLeptos && !isRustFullstack) { | ||
| if (isLeptos && !isRustMonorepo) { | ||
| console.log(chalk.gray(` Leptos tip: use /dare-rust-leptos for component patterns, server functions and workspace config.\n`)); | ||
@@ -207,0 +235,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"} |
@@ -6,2 +6,4 @@ export type ProjectStructure = 'monorepo' | 'backend' | 'frontend'; | ||
| export type GraphRagBackend = 'sqlite' | 'json' | 'neo4j'; | ||
| /** single: crates/server + crates/web | multi: {name}-core + {name}-server + {name}-web + {name}-cli */ | ||
| export type RustWorkspaceLayout = 'single' | 'multi'; | ||
| export interface ProjectConfig { | ||
@@ -14,3 +16,4 @@ name: string; | ||
| graphrag: GraphRagBackend; | ||
| rustWorkspaceLayout?: RustWorkspaceLayout; | ||
| } | ||
| //# sourceMappingURL=project.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/core/types/project.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;AACnE,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,aAAa,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAC1F,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,KAAK,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAChF,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ,CAAC;AAC5D,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAE1D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,gBAAgB,CAAC;IAC5B,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,GAAG,EAAE,SAAS,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;CAC3B"} | ||
| {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/core/types/project.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;AACnE,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,aAAa,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAC1F,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,KAAK,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAChF,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ,CAAC;AAC5D,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAC1D,wGAAwG;AACxG,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,gBAAgB,CAAC;IAC5B,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,GAAG,EAAE,SAAS,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C"} |
@@ -27,2 +27,4 @@ import { type ToolchainMode } from './stack-bootstrap.js'; | ||
| toolchain?: ToolchainMode; | ||
| /** single: crates/server + crates/web | multi: {slug}-core/-server/-web/-cli */ | ||
| rustWorkspaceLayout?: 'single' | 'multi'; | ||
| } | ||
@@ -29,0 +31,0 @@ export declare function generateProjectStructure(config: ProjectConfig): Promise<void>; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"project-generator.d.ts","sourceRoot":"","sources":["../../src/utils/project-generator.ts"],"names":[],"mappings":"AAcA,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,aAAa,CAAC;IAC/C,WAAW,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACnC,WAAW,CAAC,EAAE,CAAC,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC;IACpD,GAAG,EAAE,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,aAAa,GAAG,eAAe,CAAC;IAC3E,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACtC,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAoInF;AAED,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC,CAwCf"} | ||
| {"version":3,"file":"project-generator.d.ts","sourceRoot":"","sources":["../../src/utils/project-generator.ts"],"names":[],"mappings":"AAcA,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,aAAa,CAAC;IAC/C,WAAW,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACnC,WAAW,CAAC,EAAE,CAAC,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC;IACpD,GAAG,EAAE,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,aAAa,GAAG,eAAe,CAAC;IAC3E,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACtC,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC1C;AAED,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAoInF;AAED,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC,CAwCf"} |
@@ -696,4 +696,16 @@ import fs from 'fs-extra'; | ||
| } | ||
| /** Returns the crate directory for a Rust backend/frontend inside a monorepo. */ | ||
| function rustMonorepoDir(outputDir, crateType, layout, name) { | ||
| if (layout === 'multi') { | ||
| const slug = name.toLowerCase().replace(/[^a-z0-9-]+/g, '-').replace(/^-+|-+$/g, '') || 'app'; | ||
| return path.join(outputDir, 'crates', `${slug}-${crateType}`); | ||
| } | ||
| return path.join(outputDir, 'crates', crateType); | ||
| } | ||
| async function runStackBootstrap(config) { | ||
| const { outputDir, name, structure, backend, frontend, mcpLanguage, toolchain } = config; | ||
| const { outputDir, name, structure, backend, frontend, mcpLanguage, toolchain, rustWorkspaceLayout } = config; | ||
| const isRustMonorepo = structure === 'monorepo' && | ||
| backend === 'rust-axum' && | ||
| (frontend === 'rust-leptos' || frontend === 'rust-leptos-csr'); | ||
| const layout = rustWorkspaceLayout ?? 'single'; | ||
| // Backend / monorepo backend | ||
@@ -704,3 +716,7 @@ if ((structure === 'backend' || structure === 'monorepo') && backend) { | ||
| } | ||
| const backendDir = structure === 'monorepo' ? path.join(outputDir, 'backend') : outputDir; | ||
| const backendDir = isRustMonorepo | ||
| ? rustMonorepoDir(outputDir, 'server', layout, name) | ||
| : structure === 'monorepo' | ||
| ? path.join(outputDir, 'backend') | ||
| : outputDir; | ||
| await fs.ensureDir(backendDir); | ||
@@ -712,10 +728,15 @@ await bootstrapBackend({ | ||
| toolchain, | ||
| isMonorepo: structure === 'monorepo', | ||
| }); | ||
| } | ||
| // Frontend / monorepo frontend | ||
| if ((structure === 'frontend' || structure === 'monorepo') && frontend) { | ||
| if ((structure === 'frontend' || structure === 'monorepo') && frontend && frontend !== 'none') { | ||
| if (!FRONTEND_STACKS.has(frontend)) { | ||
| throw new Error(`Unsupported frontend stack: ${frontend}`); | ||
| } | ||
| const frontendDir = structure === 'monorepo' ? path.join(outputDir, 'frontend') : outputDir; | ||
| const frontendDir = isRustMonorepo | ||
| ? rustMonorepoDir(outputDir, 'web', layout, name) | ||
| : structure === 'monorepo' | ||
| ? path.join(outputDir, 'frontend') | ||
| : outputDir; | ||
| await fs.ensureDir(frontendDir); | ||
@@ -740,12 +761,28 @@ await bootstrapFrontend({ | ||
| } | ||
| // Combo: rust-axum + rust-leptos in monorepo → unify into a single Cargo workspace | ||
| if (structure === 'monorepo' && backend === 'rust-axum' && frontend === 'rust-leptos') { | ||
| await createRustFullstackWorkspace(outputDir, name); | ||
| // Combo: rust-axum + rust-leptos(csr) in monorepo → unified Cargo workspace | ||
| if (isRustMonorepo) { | ||
| await createRustFullstackWorkspace(outputDir, name, layout, frontend); | ||
| } | ||
| console.log(chalk.green('\n✓ Stack scaffold complete.\n')); | ||
| } | ||
| async function createRustFullstackWorkspace(outputDir, projectName) { | ||
| console.log(chalk.cyan('\n🦀 Creating unified Cargo workspace (rust-axum + rust-leptos)...\n')); | ||
| const sanitized = projectName.toLowerCase().replace(/[^a-z0-9_]+/g, '_').replace(/^_+|_+$/g, '') || 'app'; | ||
| async function createRustFullstackWorkspace(outputDir, projectName, layout, frontend) { | ||
| const frontendLabel = frontend === 'rust-leptos-csr' ? 'rust-leptos-csr' : 'rust-leptos'; | ||
| console.log(chalk.cyan(`\n🦀 Creating unified Cargo workspace (rust-axum + ${frontendLabel}, ${layout})...\n`)); | ||
| const slug = projectName.toLowerCase().replace(/[^a-z0-9-]+/g, '-').replace(/^-+|-+$/g, '') || 'app'; | ||
| // Determine workspace members based on layout | ||
| let members; | ||
| if (layout === 'single') { | ||
| members = ['crates/server', 'crates/web']; | ||
| } | ||
| else { | ||
| members = [ | ||
| `crates/${slug}-core`, | ||
| `crates/${slug}-server`, | ||
| `crates/${slug}-web`, | ||
| `crates/${slug}-cli`, | ||
| ]; | ||
| } | ||
| // Root Cargo.toml workspace | ||
| // Note: leptos is NOT in workspace.dependencies — features (ssr/hydrate/csr) must be | ||
| // set per-crate to avoid conflicting feature resolution across the workspace. | ||
| await fs.writeFile(path.join(outputDir, 'Cargo.toml'), [ | ||
@@ -755,7 +792,11 @@ `[workspace]`, | ||
| `members = [`, | ||
| ` "backend",`, | ||
| ` "frontend",`, | ||
| ...members.map((m) => ` "${m}",`), | ||
| `]`, | ||
| ``, | ||
| `# Shared dependencies — pin versions here, reference in crates via { workspace = true }`, | ||
| `# CRÍTICO: NÃO definir [build] target global aqui.`, | ||
| `# Este workspace mistura crates WASM (${layout === 'single' ? 'crates/web' : `crates/${slug}-web`}/Leptos)`, | ||
| `# com crates nativos (${layout === 'single' ? 'crates/server' : `crates/${slug}-server`}/Axum).`, | ||
| `# cargo-leptos gerencia wasm32-unknown-unknown internamente.`, | ||
| ``, | ||
| `# Shared dependencies — reference in crates via { workspace = true }`, | ||
| `[workspace.dependencies]`, | ||
@@ -769,22 +810,18 @@ `tokio = { version = "1", features = ["full"] }`, | ||
| `uuid = { version = "1.10", features = ["v4", "serde"] }`, | ||
| `leptos = { version = "0.7", features = [] }`, | ||
| ``, | ||
| ].join('\n')); | ||
| // Root .cargo/config.toml — MUST NOT have global [build] target | ||
| // Root .cargo/config.toml guard | ||
| await fs.ensureDir(path.join(outputDir, '.cargo')); | ||
| await fs.writeFile(path.join(outputDir, '.cargo', 'config.toml'), `# DARE: Do NOT add a global [build] target here. | ||
| # This workspace mixes Leptos WASM crates (frontend) with native crates (backend). | ||
| # A global target would make cargo try to compile Axum for wasm32 or Leptos for x86 — both fail. | ||
| # cargo-leptos manages the wasm32-unknown-unknown target for the frontend crate automatically. | ||
| # This workspace mixes Leptos WASM crates with native Axum crates. | ||
| # A global target breaks one or the other — cargo-leptos manages wasm32 internally. | ||
| `); | ||
| // Root .gitignore additions | ||
| // Multi-crate: create core and cli scaffold crates | ||
| if (layout === 'multi') { | ||
| await createCoreCrate(outputDir, slug); | ||
| await createCliCrate(outputDir, slug); | ||
| } | ||
| // Root .gitignore | ||
| const rootGitignore = path.join(outputDir, '.gitignore'); | ||
| const rustIgnore = [ | ||
| '', | ||
| '# Rust / Cargo', | ||
| 'target/', | ||
| 'dist/', | ||
| 'Cargo.lock', | ||
| '', | ||
| ].join('\n'); | ||
| const rustIgnore = ['', '# Rust / Cargo', 'target/', 'dist/', 'Cargo.lock', ''].join('\n'); | ||
| if (await fs.pathExists(rootGitignore)) { | ||
@@ -800,5 +837,61 @@ const existing = await fs.readFile(rootGitignore, 'utf-8'); | ||
| console.log(chalk.green(` ✓ Cargo workspace root created`)); | ||
| console.log(chalk.gray(` backend/ (rust-axum) and frontend/ (rust-leptos) are workspace members.\n`)); | ||
| console.log(chalk.yellow(` ⚠ Cargo.lock is gitignored at root — commit it if this is a binary deployment.\n`)); | ||
| members.forEach((m) => console.log(chalk.gray(` ${m}/`))); | ||
| console.log(chalk.yellow(`\n ⚠ Cargo.lock gitignored — commit it for binary deployments.\n`)); | ||
| } | ||
| async function createCoreCrate(outputDir, slug) { | ||
| const dir = path.join(outputDir, 'crates', `${slug}-core`); | ||
| await fs.ensureDir(path.join(dir, 'src')); | ||
| await fs.writeFile(path.join(dir, 'Cargo.toml'), [ | ||
| `[package]`, | ||
| `name = "${slug}-core"`, | ||
| `version = "0.1.0"`, | ||
| `edition = "2021"`, | ||
| ``, | ||
| `[lib]`, | ||
| ``, | ||
| `[dependencies]`, | ||
| `serde = { workspace = true }`, | ||
| `serde_json = { workspace = true }`, | ||
| `thiserror = { workspace = true }`, | ||
| `anyhow = { workspace = true }`, | ||
| `tracing = { workspace = true }`, | ||
| `uuid = { workspace = true }`, | ||
| ``, | ||
| ].join('\n')); | ||
| await fs.writeFile(path.join(dir, 'src', 'lib.rs'), `// ${slug}-core — shared domain types and business logic\n`); | ||
| } | ||
| async function createCliCrate(outputDir, slug) { | ||
| const dir = path.join(outputDir, 'crates', `${slug}-cli`); | ||
| await fs.ensureDir(path.join(dir, 'src')); | ||
| await fs.writeFile(path.join(dir, 'Cargo.toml'), [ | ||
| `[package]`, | ||
| `name = "${slug}-cli"`, | ||
| `version = "0.1.0"`, | ||
| `edition = "2021"`, | ||
| ``, | ||
| `[[bin]]`, | ||
| `name = "${slug}-cli"`, | ||
| `path = "src/main.rs"`, | ||
| ``, | ||
| `[dependencies]`, | ||
| `${slug}-core = { path = "../${slug}-core" }`, | ||
| `clap = { version = "4", features = ["derive"] }`, | ||
| `anyhow = { workspace = true }`, | ||
| `tokio = { workspace = true }`, | ||
| ``, | ||
| ].join('\n')); | ||
| await fs.writeFile(path.join(dir, 'src', 'main.rs'), [ | ||
| `use clap::Parser;`, | ||
| ``, | ||
| `#[derive(Parser)]`, | ||
| `#[command(name = "${slug}-cli")]`, | ||
| `struct Cli {}`, | ||
| ``, | ||
| `#[tokio::main]`, | ||
| `async fn main() {`, | ||
| ` let _cli = Cli::parse();`, | ||
| `}`, | ||
| ``, | ||
| ].join('\n')); | ||
| } | ||
| function generateStackSkill(stack) { | ||
@@ -805,0 +898,0 @@ const skills = { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"project-generator.js","sourceRoot":"","sources":["../../src/utils/project-generator.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"project-generator.js","sourceRoot":"","sources":["../../src/utils/project-generator.ts"],"names":[],"mappings":"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"} |
@@ -20,2 +20,4 @@ export type BackendStack = 'php-laravel' | 'node-nestjs' | 'python-fastapi' | 'rust-axum' | 'go-gin' | 'go-stdlib'; | ||
| toolchain?: ToolchainMode; | ||
| /** When true the crate lives inside a Cargo workspace — use --vcs none on cargo init. */ | ||
| isMonorepo?: boolean; | ||
| } | ||
@@ -22,0 +24,0 @@ export interface BootstrapFrontendOptions { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"stack-bootstrap.d.ts","sourceRoot":"","sources":["../../src/utils/stack-bootstrap.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,YAAY,GACpB,aAAa,GACb,aAAa,GACb,gBAAgB,GAChB,WAAW,GACX,QAAQ,GACR,WAAW,CAAC;AAEhB,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,KAAK,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAEhF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE/C;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,YAAY,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,aAAa,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B;oFACgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,WAAW,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAID,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBnF;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBrF;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAU3E"} | ||
| {"version":3,"file":"stack-bootstrap.d.ts","sourceRoot":"","sources":["../../src/utils/stack-bootstrap.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,YAAY,GACpB,aAAa,GACb,aAAa,GACb,gBAAgB,GAChB,WAAW,GACX,QAAQ,GACR,WAAW,CAAC;AAEhB,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,KAAK,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAEhF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE/C;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,YAAY,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,yFAAyF;IACzF,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,aAAa,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B;oFACgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,WAAW,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAID,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBnF;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBrF;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAU3E"} |
@@ -28,3 +28,3 @@ /** | ||
| case 'rust-axum': | ||
| return bootstrapRustAxum(opts.dir, opts.projectName, mode); | ||
| return bootstrapRustAxum(opts.dir, opts.projectName, mode, opts.isMonorepo ?? false); | ||
| case 'go-gin': | ||
@@ -258,3 +258,3 @@ return bootstrapGoGin(opts.dir, opts.projectName, mode); | ||
| } | ||
| async function bootstrapRustAxum(dir, projectName, mode) { | ||
| async function bootstrapRustAxum(dir, projectName, mode, isMonorepo = false) { | ||
| banner(`Bootstrapping Rust + Axum in ${dir}`); | ||
@@ -269,3 +269,5 @@ const cargo = await StackTool.resolve({ | ||
| }); | ||
| await cargo.run(['init', '--name', sanitizeCrateName(projectName)]); | ||
| // --vcs none when inside a workspace — the workspace root owns the .git | ||
| const vcsArgs = isMonorepo ? ['--vcs', 'none'] : []; | ||
| await cargo.run(['init', '--name', sanitizeCrateName(projectName), ...vcsArgs]); | ||
| const cargoToml = path.join(dir, 'Cargo.toml'); | ||
@@ -272,0 +274,0 @@ await fs.writeFile(cargoToml, [ |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"stack-bootstrap.js","sourceRoot":"","sources":["../../src/utils/stack-bootstrap.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"stack-bootstrap.js","sourceRoot":"","sources":["../../src/utils/stack-bootstrap.ts"],"names":[],"mappings":"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"} |
+1
-1
| { | ||
| "name": "@dewtech/dare-cli", | ||
| "version": "2.11.0", | ||
| "version": "2.12.0", | ||
| "description": "DARE Framework - CLI, GraphRAG engine, MCP server and shared types in a single package", | ||
@@ -5,0 +5,0 @@ "type": "module", |
+5
-4
@@ -26,4 +26,4 @@ # @dewtech/dare-cli | ||
| | `react`, `vue` | `npx degit vitejs/vite/packages/create-vite/template-<x> .` + `npm install` | | ||
| | `rust-leptos` | write Cargo.toml (Leptos 0.7 SSR+hydrate) + Axum main + `cargo fetch` | | ||
| | `rust-leptos-csr` | write Cargo.toml (Leptos 0.7 csr) + index.html + Trunk.toml + `cargo fetch` | | ||
| | `rust-leptos` | Cargo workspace with `crates/server` (Axum) + `crates/web` (Leptos 0.7 SSR+hydrate) + `cargo fetch` | | ||
| | `rust-leptos-csr` | Cargo workspace with `crates/server` (Axum) + `crates/web` (Leptos 0.7 CSR) + Trunk.toml + `cargo fetch` | | ||
| | `mcp-server-node-ts` | `npm init` + `@modelcontextprotocol/sdk` | | ||
@@ -214,2 +214,3 @@ | `mcp-server-python` | `python -m venv .venv` + `pip install mcp[cli]` | | ||
| - **Frontend stack:** React 18+ · Vue 3+ · Leptos fullstack (Rust SSR+WASM) · Leptos CSR-only (Rust WASM) | ||
| - **Cargo workspace layout** *(Monorepo + Rust/Axum + Leptos only)*: Single-crate (`crates/server` + `crates/web`) · Multi-crate (`{name}-core` + `{name}-server` + `{name}-web` + `{name}-cli`) | ||
| - **IDE / Agent:** Claude Code · Cursor · Antigravity · Hybrid | ||
@@ -221,3 +222,3 @@ - **GraphRAG backend:** SQLite · JSON · Neo4j | ||
| - `dare.config.json` — project config | ||
| - `CLAUDE.md` + `.claude/commands/` + `.claude/settings.json` — Claude Code rules and slash commands | ||
| - `CLAUDE.md` + `.claude/commands/` + `.claude/settings.json` — Claude Code rules and slash commands (includes `/dare-security`) | ||
| - `.cursorrules` / `.antigravityrules` — Cursor / Antigravity rules | ||
@@ -319,3 +320,3 @@ - `.cursor/rules/*.mdc` — stack-specific skills | ||
| `dare init` also ships skills focused on architectural decisions for | ||
| specific stacks. As of v2.11.0: | ||
| specific stacks. As of v2.13.0: | ||
@@ -322,0 +323,0 @@ - **`skill-rust-workspace.mdc`** (Cursor) / |
@@ -1,53 +0,193 @@ | ||
| # BLUEPRINT DE IMPLEMENTAÇÃO: [Nome do Projeto] | ||
| # BLUEPRINT: [Nome do Projeto] | ||
| > **Gerado a partir de:** `DARE/DESIGN.md` v[X.Y] | ||
| > **Data:** YYYY-MM-DD | **Status:** DRAFT → APROVADO | ||
| --- | ||
| ## 1. VISÃO GERAL DA ARQUITETURA | ||
| [Descrição da arquitetura do sistema: Monolito modular, Microserviços, Hexagonal, etc.] | ||
| [Diagrama em formato Mermaid se aplicável] | ||
| [Descrição da arquitetura: Monolito modular / Microserviços / Hexagonal / Clean Architecture] | ||
| ```mermaid | ||
| graph TD | ||
| A[Cliente] --> B[API Gateway / BFF] | ||
| B --> C[Auth Service] | ||
| B --> D[Core Service] | ||
| D --> E[(PostgreSQL)] | ||
| D --> F[(Redis)] | ||
| ``` | ||
| **Decisões arquiteturais principais:** | ||
| | Decisão | Escolha | Justificativa | | ||
| |---------|---------|---------------| | ||
| | Padrão de módulos | [ex: Hexagonal] | [motivo] | | ||
| | Comunicação inter-serviços | [ex: REST síncrono] | [motivo] | | ||
| | Autenticação | [ex: JWT stateless] | [motivo] | | ||
| --- | ||
| ## 2. STACK TÉCNICA DEFINIDA | ||
| - **Linguagem:** [ex: PHP 8.3] | ||
| - **Framework:** [ex: Laravel 11.x] | ||
| - **Banco de Dados:** [ex: PostgreSQL 16.x] | ||
| - **Pacotes Essenciais:** [Lista de dependências do composer/npm] | ||
| ## 3. MODELO DE DADOS | ||
| [Entidades principais, relacionamentos e tipos de dados] | ||
| [Exemplo de Migration Laravel ou Model Pydantic/Go Struct] | ||
| | Camada | Tecnologia | Versão | Papel | | ||
| |--------|-----------|--------|-------| | ||
| | Linguagem | | | | | ||
| | Framework | | | | | ||
| | Banco principal | | | | | ||
| | Cache / filas | | | | | ||
| | Frontend | | | | | ||
| | Container | Docker | latest | Dev + CI | | ||
| | Observabilidade | | | Logs, métricas, traces | | ||
| ## 4. ESTRUTURA DE PASTAS E ARQUIVOS | ||
| [Árvore de diretórios completa focando nos arquivos que serão criados/modificados] | ||
| --- | ||
| ## 3. ESTRUTURA DE PASTAS E ARQUIVOS | ||
| ```text | ||
| app/ | ||
| ├── Http/ | ||
| │ ├── Controllers/ | ||
| │ └── Requests/ | ||
| ├── Models/ | ||
| ├── Services/ | ||
| └── ... | ||
| [nome-do-projeto]/ | ||
| ├── [diretório principal]/ | ||
| │ ├── [módulo 1]/ | ||
| │ └── [módulo 2]/ | ||
| ├── DARE/ | ||
| │ ├── DESIGN.md | ||
| │ ├── BLUEPRINT.md | ||
| │ ├── TASKS.md | ||
| │ ├── dare-dag.yaml | ||
| │ └── EXECUTION/ | ||
| ├── Dockerfile | ||
| ├── docker-compose.yml | ||
| └── [arquivo de configuração principal] | ||
| ``` | ||
| ## 5. ENDPOINTS DA API | ||
| | Método | Endpoint | Controller@Method | Descrição | Request Body | Response | Auth | | ||
| |---|---|---|---|---|---|---| | ||
| | POST | /api/v1/users | UserController@store | Cria usuário | {name, email, pass} | {id, token} | Não | | ||
| | GET | /api/v1/users | UserController@index | Lista usuários | - | [{id, name}] | Sim | | ||
| > **Constraints de workspace (Rust):** se Cargo workspace, NÃO definir `[build] target` global no `.cargo/config.toml` (quebra crates WASM + native). Cada crate declara suas próprias features Leptos. | ||
| ## 6. CÓDIGO-BASE / PADRÕES A SEGUIR | ||
| [Trechos de código críticos que definem o padrão do projeto] | ||
| [Exemplo: Interface de repositório, FormRequest base, Trait de respostas de API] | ||
| --- | ||
| ## 7. PLANO DE EXECUÇÃO (FASES) | ||
| - **Fase 1:** Setup do projeto e Banco de Dados (Migrations/Seeds) | ||
| - **Fase 2:** Autenticação e Autorização (Middlewares/Policies) | ||
| - **Fase 3:** [Módulo Principal 1] | ||
| - **Fase 4:** [Módulo Principal 2] | ||
| - **Fase N:** Testes e Documentação | ||
| ## 4. MODELO DE DADOS | ||
| ## 8. COMANDOS DE SETUP | ||
| [Todos os comandos para rodar o projeto do zero, ex: docker-compose up, php artisan migrate, etc] | ||
| ### Entidades principais | ||
| ## 9. CRITÉRIOS DE SUCESSO GERAIS | ||
| - [ ] O código passa em todos os testes (`php artisan test`) | ||
| - [ ] Não há erros de linting (`./vendor/bin/pint`) | ||
| - [ ] A API responde conforme os endpoints definidos | ||
| - [ ] A documentação Swagger/OpenAPI está atualizada | ||
| ``` | ||
| [Entidade 1] | ||
| - id: UUID (PK) | ||
| - [campo]: [tipo] [restrições] | ||
| - created_at, updated_at | ||
| [Entidade 2] | ||
| - id: UUID (PK) | ||
| - [entidade_1_id]: FK → Entidade1 | ||
| ``` | ||
| ### Relacionamentos | ||
| | De | Para | Cardinalidade | Via | | ||
| |----|------|---------------|-----| | ||
| | [Entidade 1] | [Entidade 2] | 1:N | FK | | ||
| --- | ||
| ## 5. CONTRATOS DE API | ||
| | Método | Endpoint | Auth | Request Body | Response | Status codes | | ||
| |--------|----------|------|-------------|----------|--------------| | ||
| | POST | `/api/v1/[recurso]` | Não | `{campo1, campo2}` | `{id, ...}` | 201, 400, 422 | | ||
| | GET | `/api/v1/[recurso]` | JWT | — | `[{id, ...}]` | 200, 401 | | ||
| | GET | `/api/v1/[recurso]/:id` | JWT | — | `{id, ...}` | 200, 401, 404 | | ||
| | PUT | `/api/v1/[recurso]/:id` | JWT + Owner | `{campos}` | `{id, ...}` | 200, 401, 403, 404 | | ||
| | DELETE | `/api/v1/[recurso]/:id` | JWT + Admin | — | `{}` | 204, 401, 403, 404 | | ||
| --- | ||
| ## 6. PLANO DE EXECUÇÃO (FASES) | ||
| ### Fase 1: Containerização e Setup ← **SEMPRE PRIMEIRA** | ||
| **Critério de DONE:** `docker compose up -d` sobe sem erros; healthcheck `/health` retorna 200. | ||
| - Dockerfile multi-stage | ||
| - docker-compose.yml com todos os serviços | ||
| - Variáveis de ambiente via `.env.example` | ||
| ### Fase 2: Banco de Dados e Migrations | ||
| **Critério de DONE:** migrations rodando; schema validado; seeds de desenvolvimento funcionando. | ||
| - Migrations / schema inicial | ||
| - Seeds de desenvolvimento | ||
| - Índices para queries críticas | ||
| ### Fase 3: Autenticação e Autorização | ||
| **Critério de DONE:** login retorna JWT; endpoint protegido rejeita token inválido com 401; acesso sem permissão retorna 403. | ||
| - Registro, login, refresh, logout | ||
| - Middleware de autenticação | ||
| - Sistema de permissões (RBAC/ACL) | ||
| ### Fase 4: [Módulo de negócio principal] | ||
| **Critério de DONE:** [comportamento testável esperado]. | ||
| - [Descrever aqui] | ||
| ### Fase N-1: Auditoria de Segurança e Dependências | ||
| **Critério de DONE:** `[audit-cmd]` sem CVE HIGH/CRITICAL; security headers presentes; sem secrets em código. | ||
| - `npm audit --audit-level=high` / `cargo audit` / `pip-audit` / `composer audit` | ||
| - Headers HTTP de segurança (HSTS, CSP, X-Frame-Options) | ||
| - Scan de secrets no repositório | ||
| ### Fase N: Observabilidade e Documentação | ||
| **Critério de DONE:** logs estruturados em JSON; endpoint `/metrics` ou equivalente; documentação API gerada. | ||
| - Logs estruturados (JSON) com trace-id | ||
| - Métricas de negócio e técnicas | ||
| - Documentação API (OpenAPI / Swagger) | ||
| --- | ||
| ## 7. VALIDAÇÃO E SEGURANÇA | ||
| ### Validation Gates (Ralph Loop) por stack | ||
| | Stack | Build | Test | Lint/Audit | | ||
| |-------|-------|------|------------| | ||
| | Rust/Axum | `cargo build` | `cargo test --workspace` | `cargo clippy && cargo audit` | | ||
| | Node/NestJS | `npm run build` | `npm test` | `npx eslint src && npm audit --audit-level=high` | | ||
| | Python/FastAPI | `python -m py_compile` | `pytest` | `ruff check . && pip-audit` | | ||
| | PHP/Laravel | `php artisan config:cache` | `php artisan test` | `./vendor/bin/phpstan && composer audit` | | ||
| | Go | `go build ./...` | `go test ./...` | `golangci-lint run` | | ||
| ### Controles de segurança obrigatórios | ||
| - [ ] Rate limiting em endpoints de autenticação e públicos | ||
| - [ ] Input validation no servidor para todos os endpoints | ||
| - [ ] Dados sensíveis (PII, tokens, senhas) nunca em logs | ||
| - [ ] Todas as dependências sem CVE HIGH/CRITICAL (ver Fase N-1) | ||
| - [ ] HTTP Security Headers em produção | ||
| - [ ] Secrets apenas em variáveis de ambiente / vault | ||
| --- | ||
| ## 8. ESTRATÉGIA DE TESTES | ||
| | Tipo | Ferramenta | Cobertura mínima | O que cobre | | ||
| |------|-----------|------------------|-------------| | ||
| | Unitários | [jest/pytest/cargo test] | 80 % das funções críticas | Lógica de negócio isolada | | ||
| | Integração | [supertest/httpx/reqwest] | Todos os endpoints | Contrato da API | | ||
| | Segurança | [npm audit/cargo audit/pip-audit] | 100 % deps | CVEs conhecidos | | ||
| | E2E | [playwright/cypress] se frontend | Fluxo principal | Jornada do usuário | | ||
| --- | ||
| ## 9. ESTRATÉGIA DE DEPLOY | ||
| | Ambiente | Branch | Trigger | Infra | | ||
| |----------|--------|---------|-------| | ||
| | `dev` | `develop` | Push automático | [ex: Docker local / Railway] | | ||
| | `staging` | `main` | PR merge | [ex: OKE / ECS / Fly.io] | | ||
| | `prod` | tag `v*.*.*` | Manual | [ex: OKE / ECS / Fly.io] | | ||
| --- | ||
| ## 10. CHECKLIST DE APROVAÇÃO DO BLUEPRINT | ||
| - [ ] Arquitetura revisada e aprovada | ||
| - [ ] Modelo de dados validado | ||
| - [ ] Contratos de API definidos e completos | ||
| - [ ] Fases com critérios de DONE claros | ||
| - [ ] Validation gates por stack definidos | ||
| - [ ] Controles de segurança mapeados | ||
| - [ ] Estratégia de testes cobrindo todos os tipos | ||
| - [ ] DAG de tasks gerado (`dare-dag.yaml`) |
@@ -1,34 +0,129 @@ | ||
| # PROJETO: [Nome do Projeto] | ||
| # DESIGN: [Nome do Projeto / Feature] | ||
| ## DESCRIÇÃO | ||
| [O que é o sistema em 2-3 frases claras e objetivas] | ||
| > **Versão:** v1.0 | **Data:** YYYY-MM-DD | **Status:** DRAFT → APROVADO | ||
| ## FUNCIONALIDADES | ||
| - [Funcionalidade 1: descrição detalhada] | ||
| - [Funcionalidade 2: descrição detalhada] | ||
| - [...] | ||
| --- | ||
| ## STACK TÉCNICA | ||
| - **Linguagem:** [ex: PHP 8.3] | ||
| - **Framework:** [ex: Laravel 11] | ||
| - **Banco de Dados:** [ex: PostgreSQL 16] | ||
| - **Frontend:** [ex: Vue.js 3 / Nuxt] | ||
| - **Outros:** [ex: Redis, S3] | ||
| ## 1. DESCRIÇÃO | ||
| ## REQUISITOS TÉCNICOS E DE NEGÓCIO | ||
| - [Requisito 1: ex. API deve responder em menos de 200ms] | ||
| - [Requisito 2: ex. Autenticação via JWT (Sanctum)] | ||
| - [Requisito 3: ex. Cobertura de testes unitários > 80%] | ||
| [O que é o sistema e qual problema ele resolve — 3 a 5 frases claras e objetivas. Evite jargão.] | ||
| ## INTEGRAÇÕES | ||
| - [Integração 1: ex. Stripe para pagamentos (link da doc)] | ||
| - [Integração 2: ex. AWS S3 para armazenamento de arquivos] | ||
| --- | ||
| ## RESTRIÇÕES | ||
| - **Prazo:** [Data limite ou restrição de tempo] | ||
| - **Orçamento:** [Limitações de custo com infra/APIs] | ||
| - **Limitações Técnicas:** [ex. Não pode usar banco NoSQL] | ||
| ## 2. OBJETIVOS E MÉTRICAS DE SUCESSO | ||
| ## FORA DO ESCOPO | ||
| - [O que NÃO será feito nesta versão] | ||
| - [Funcionalidades adiadas para v2] | ||
| | # | Objetivo | Métrica verificável | Meta | | ||
| |---|----------|---------------------|------| | ||
| | O-01 | [ex: Reduzir tempo de resposta da API] | p99 latência em produção | < 200 ms | | ||
| | O-02 | [ex: Aumentar cobertura de testes] | `coverage --summary` | > 80 % | | ||
| | O-03 | | | | | ||
| --- | ||
| ## 3. STAKEHOLDERS | ||
| | Papel | Nome / Time | Interesse principal | | ||
| |-------|-------------|---------------------| | ||
| | Product Owner | | Aprovação de scope e prioridades | | ||
| | Tech Lead | | Decisões arquiteturais | | ||
| | Usuário Final | | [Persona] — [necessidade] | | ||
| | Operações / SRE | | SLA, alertas, deploys | | ||
| --- | ||
| ## 4. REQUISITOS FUNCIONAIS | ||
| | ID | Requisito | Prioridade | Critério de aceite | | ||
| |----|-----------|------------|--------------------| | ||
| | RF-01 | | MUST | | | ||
| | RF-02 | | SHOULD | | | ||
| | RF-03 | | COULD | | | ||
| > Prioridades: **MUST** (bloqueia v1) · **SHOULD** (importante, mas não bloqueia) · **COULD** (nice to have) | ||
| --- | ||
| ## 5. REQUISITOS NÃO-FUNCIONAIS | ||
| | ID | Categoria | Requisito | Meta | | ||
| |----|-----------|-----------|------| | ||
| | RNF-01 | Performance | [ex: API responde dentro do SLA] | p95 < 500 ms | | ||
| | RNF-02 | Disponibilidade | [ex: uptime mensal] | ≥ 99,5 % | | ||
| | RNF-03 | Segurança | Autenticação obrigatória em todos os endpoints sensíveis | JWT + refresh | | ||
| | RNF-04 | Segurança | Rate limiting em endpoints públicos | ≤ 60 req/min/IP | | ||
| | RNF-05 | Segurança | Dados sensíveis (PII, tokens) nunca em logs | auditoria automática | | ||
| | RNF-06 | Observabilidade | Logs estruturados (JSON) com trace-id | OpenTelemetry | | ||
| | RNF-07 | Manutenibilidade | Cobertura de testes | > 80 % | | ||
| --- | ||
| ## 6. REQUISITOS DE SEGURANÇA | ||
| | ID | Requisito | Referência | | ||
| |----|-----------|------------| | ||
| | RS-01 | Todas as entradas do usuário validadas no servidor antes de qualquer processamento | OWASP A03 | | ||
| | RS-02 | Senhas e segredos nunca armazenados em texto plano; hash Argon2/Bcrypt | OWASP A02 | | ||
| | RS-03 | Controle de acesso verificado por recurso (não só por rota) | OWASP A01 | | ||
| | RS-04 | Dependências auditadas antes de cada release (sem CVE HIGH/CRITICAL) | OWASP A06 | | ||
| | RS-05 | Segredos gerenciados via variáveis de ambiente / vault — nunca em código | Supply chain | | ||
| | RS-06 | [Requisito específico do domínio] | | | ||
| --- | ||
| ## 7. STACK TÉCNICA | ||
| | Camada | Tecnologia | Versão | | ||
| |--------|-----------|--------| | ||
| | Linguagem / Runtime | | | | ||
| | Framework principal | | | | ||
| | Banco de dados | | | | ||
| | Cache | | | | ||
| | Frontend | | | | ||
| | Infra / deploy | | | | ||
| | Observabilidade | | | | ||
| --- | ||
| ## 8. INTEGRAÇÕES EXTERNAS | ||
| | Sistema | Tipo | Protocolo | Direção | Dados trocados | Responsável | | ||
| |---------|------|-----------|---------|----------------|-------------| | ||
| | [ex: Stripe] | Pagamento | REST/webhook | Saída + entrada | Cobrança, confirmação | Time Pagamentos | | ||
| | [ex: Auth0] | IdP | OIDC | Entrada | ID Token, Claims | Time Auth | | ||
| --- | ||
| ## 9. RESTRIÇÕES | ||
| - **Prazo:** [Data de entrega ou milestone] | ||
| - **Orçamento de infra:** [Limite de custo mensal ou por request] | ||
| - **Limitações técnicas:** [ex: não pode usar banco NoSQL; deve usar Go ≥ 1.22] | ||
| - **Regulatórias / Compliance:** [ex: LGPD, GDPR, SOC 2, PCI-DSS se aplicável] | ||
| --- | ||
| ## 10. FORA DO ESCOPO (v1) | ||
| - [Funcionalidade adiada para v2 — e o motivo] | ||
| - [Caso de uso que NÃO será tratado nesta versão] | ||
| --- | ||
| ## 11. RISCOS E MITIGAÇÕES | ||
| | # | Risco | Probabilidade | Impacto | Mitigação | | ||
| |---|-------|---------------|---------|-----------| | ||
| | R-01 | [ex: Latência alta no serviço de terceiros] | Média | Alto | Circuit breaker + fallback | | ||
| | R-02 | [ex: Falta de dados históricos para ML] | Alta | Médio | Dataset sintético inicial | | ||
| | R-03 | | | | | | ||
| --- | ||
| ## 12. CHECKLIST DE APROVAÇÃO | ||
| - [ ] Requisitos funcionais revisados e priorizados | ||
| - [ ] Requisitos de segurança validados pelo Tech Lead | ||
| - [ ] Stack técnica aprovada | ||
| - [ ] Integrações externas confirmadas com responsáveis | ||
| - [ ] Fora do escopo alinhado com Product Owner | ||
| - [ ] Riscos críticos com mitigação definida |
@@ -1,43 +0,100 @@ | ||
| # ESPECIFICAÇÃO DE TAREFA: [ID da Task, ex: task-001] | ||
| # TASK [ID]: [Título da Task] | ||
| ## OBJETIVO DA TAREFA | ||
| [Descrição concisa do que precisa ser implementado, ex: Criar o Model, Migration e Factory para a entidade Usuário.] | ||
| > **Complexidade:** LOW / MED / HIGH | ||
| > **Depends on:** [task-ids ou —] | ||
| > **Estimativa:** [X horas] | ||
| ## CONTEXTO E DEPENDÊNCIAS | ||
| - **Fase:** [Nome da Fase] | ||
| - **Depende de:** [ID de tasks anteriores, ex: Nenhuma / task-000] | ||
| - **Arquivos Relacionados Existentes:** [Arquivos que servem de base ou serão modificados, ex: `app/Models/User.php`] | ||
| --- | ||
| ## ESPECIFICAÇÃO DE IMPLEMENTAÇÃO (O QUE FAZER) | ||
| [Instruções detalhadas passo a passo para a IA Executora] | ||
| ## 1. OBJETIVO | ||
| 1. **[Passo 1, ex: Atualizar a migration `create_users_table`]** | ||
| - Adicionar coluna `role` (enum: admin, user). | ||
| - Adicionar coluna `is_active` (boolean, default true). | ||
| [Uma frase precisa do que esta task entrega. Deve ser verificável — termine com um estado observável, não uma ação.] | ||
| 2. **[Passo 2, ex: Atualizar o Model `User`]** | ||
| - Adicionar campos ao `$fillable`. | ||
| - Criar os casts corretos. | ||
| Exemplo: _"Ao final desta task, o endpoint `POST /api/v1/users` aceita cadastro, valida unicidade de e-mail e retorna JWT."_ | ||
| 3. **[Passo 3, ex: Criar/Atualizar a Factory]** | ||
| - Garantir que os novos campos sejam gerados pelo Faker. | ||
| --- | ||
| ## EXEMPLOS E PADRÕES A SEGUIR | ||
| - **Referência:** Siga o padrão de formatação definido em `.cursorrules`. | ||
| - **Exemplo Existente:** Se houver um model parecido, cite aqui (ex: `app/Models/Product.php`). | ||
| ## 2. CONTEXTO | ||
| ## CRITÉRIOS DE SUCESSO (VALIDATION GATES) | ||
| Estes comandos DEVEM ser executados pela IA para validar a implementação antes de concluir a tarefa. | ||
| - **Fase no BLUEPRINT:** Fase [N] — [Nome da fase] | ||
| - **Arquivos existentes relevantes:** [caminhos de arquivos que servem de referência ou serão modificados] | ||
| - **Decisões do BLUEPRINT que afetam esta task:** [cite seção/decisão específica] | ||
| --- | ||
| ## 3. ARQUIVOS A CRIAR / MODIFICAR | ||
| | Ação | Caminho | Descrição | | ||
| |------|---------|-----------| | ||
| | CRIAR | `src/[módulo]/[arquivo]` | [o que contém] | | ||
| | MODIFICAR | `src/[módulo]/[arquivo]` | [o que muda] | | ||
| | CRIAR | `tests/[arquivo].test.[ext]` | Testes da feature | | ||
| --- | ||
| ## 4. IMPLEMENTAÇÃO | ||
| ### Passo 1: [Nome do passo] | ||
| [Descrição precisa do que fazer. Inclua assinaturas de função/struct se crítico.] | ||
| ```[lang] | ||
| // Exemplo de padrão esperado | ||
| ``` | ||
| ### Passo 2: [Nome do passo] | ||
| [Descrição] | ||
| ### Passo 3: Testes | ||
| - [ ] Teste do caminho feliz (`should_[comportamento]_when_[condição]`) | ||
| - [ ] Teste de erro de validação (400 / erro de negócio) | ||
| - [ ] Teste de autorização (401 / 403 quando aplicável) | ||
| - [ ] Teste de edge case: [descrever] | ||
| --- | ||
| ## 5. CONSIDERAÇÕES DE SEGURANÇA | ||
| - [ ] **Input validation:** toda entrada do usuário validada no servidor antes de qualquer processamento | ||
| - [ ] **Autenticação / Autorização:** verificar se o usuário tem permissão sobre o *recurso específico*, não só sobre a rota | ||
| - [ ] **Dados sensíveis:** senhas, tokens e PII nunca aparecem em logs, responses de erro ou mensagens de exceção | ||
| - [ ] **SQL / Command Injection:** usar ORM / prepared statements; nunca concatenar strings em queries | ||
| - [ ] **Dependências novas:** se esta task adicionar uma dependência, verificar CVEs com `npm audit` / `cargo audit` / `pip-audit` antes de commitar | ||
| - [ ] **Segredo em código:** nenhum token, chave ou credencial hardcoded — sempre via variável de ambiente | ||
| --- | ||
| ## 6. VALIDATION GATES (RALPH LOOP) | ||
| Execute **todos** antes de marcar a task como DONE. Se qualquer um falhar, leia o erro, corrija e reexecute. | ||
| ```bash | ||
| # 1. Linting / Formatação | ||
| ./vendor/bin/pint | ||
| # 1. Build — sem erros de compilação | ||
| [comando de build da stack] | ||
| # 2. Análise Estática (se aplicável, ex: PHPStan/Larastan) | ||
| ./vendor/bin/phpstan analyse | ||
| # 2. Tests — todos passando, incluindo os novos | ||
| [comando de test] | ||
| # 3. Testes Unitários/Feature | ||
| php artisan test --filter=UserTest | ||
| # 3. Lint — sem warnings | ||
| [comando de lint] | ||
| # 4. Auditoria de dependências (se novas deps foram adicionadas nesta task) | ||
| [npm audit --audit-level=high | cargo audit | pip-audit | composer audit] | ||
| ``` | ||
| Se algum comando falhar, a IA deve ler o erro, consertar o código e rodar o comando novamente (Ralph Loop) até que todos os testes passem. | ||
| > **Gate de segurança obrigatório:** se esta task adicionar dependências externas, `[audit-cmd]` não pode retornar CVE de nível HIGH ou CRITICAL. | ||
| --- | ||
| ## 7. CRITÉRIOS DE DONE | ||
| - [ ] Todos os 4 validation gates passaram sem erros | ||
| - [ ] Testes cobrem caminho feliz + erros + edge cases da seção 4 | ||
| - [ ] Considerações de segurança da seção 5 todas checadas | ||
| - [ ] Arquivos listados na seção 3 criados/modificados conforme spec | ||
| - [ ] `DARE/TASKS.md` atualizado com status `DONE` | ||
| --- | ||
| ## 8. PRÓXIMA TASK SUGERIDA | ||
| `[task-id]` — [título] _(desbloqueada após conclusão desta task)_ |
| # /dare-blueprint | ||
| Gera os 4 artefatos a partir do `DARE/DESIGN.md`: | ||
| Gera os 5 artefatos a partir do `DARE/DESIGN.md`: | ||
| 1. `DARE/BLUEPRINT.md` — arquitetura técnica | ||
| 1. `DARE/BLUEPRINT.md` — arquitetura técnica detalhada | ||
| 2. `DARE/TASKS.md` — visão humana das tasks | ||
| 3. `DARE/dare-dag.yaml` — grafo executável pelo CLI | ||
| 4. `DARE/EXECUTION/task-<id>.md` — uma spec detalhada por task | ||
| 4. `DARE/EXECUTION/task-<id>.md` — spec detalhada por task | ||
| 5. `DARE/dag-graph.mmd` — visualização Mermaid do DAG | ||
@@ -23,12 +24,49 @@ ## Como usar | ||
| Extraia e memorize para uso neste comando: | ||
| - Stack técnica (linguagem, framework, versões) | ||
| - Requisitos funcionais priorizados (RF-*) | ||
| - Requisitos de segurança (RS-*) | ||
| - Integrações externas confirmadas | ||
| - Restrições e escopo | ||
| ### 2. Gerar `DARE/BLUEPRINT.md` | ||
| - Stack tecnológico detalhado (versões, libs) | ||
| - Módulos e responsabilidades | ||
| - Contratos de API (endpoints, schemas em OpenAPI) | ||
| - Modelo de dados (tabelas, índices, relações) | ||
| - Decisões arquiteturais com justificativa | ||
| - Estratégia de testes | ||
| - Estratégia de deploy | ||
| Siga o template `templates/BLUEPRINT-template.md`. Seções obrigatórias: | ||
| **2.1 Visão Geral da Arquitetura** | ||
| - Diagrama Mermaid da arquitetura | ||
| - Tabela de decisões arquiteturais com justificativa (não apenas "escolha X") | ||
| **2.2 Stack Técnica Definida** — versões fixas, não ranges | ||
| **2.3 Estrutura de Pastas** — árvore completa dos arquivos que serão criados | ||
| **2.4 Modelo de Dados** — entidades, campos tipados, relacionamentos, índices necessários | ||
| **2.5 Contratos de API** — tabela completa: método, rota, auth, request body, response, status codes | ||
| **2.6 Plano de Execução (Fases)** — cada fase com: | ||
| - Nome e objetivo | ||
| - **Critério de DONE** — comportamento verificável e testável (não "código feito") | ||
| - Lista de entregáveis concretos | ||
| > **Fase 1 é sempre containerização** (Dockerfile + docker-compose + healthcheck) | ||
| > **Fase N-1 é sempre auditoria de segurança e dependências** | ||
| **2.7 Validation Gates por Stack** | ||
| | Stack | Build | Test | Lint/Audit | | ||
| |-------|-------|------|------------| | ||
| | Rust/Axum | `cargo build` | `cargo test --workspace` | `cargo clippy && cargo audit` | | ||
| | Node/NestJS | `npm run build` | `npm test` | `npx eslint src && npm audit --audit-level=high` | | ||
| | Python/FastAPI | verificar imports | `pytest` | `ruff check . && pip-audit` | | ||
| | PHP/Laravel | `php artisan config:cache` | `php artisan test` | `./vendor/bin/phpstan && composer audit` | | ||
| | Go | `go build ./...` | `go test ./...` | `golangci-lint run` | | ||
| **2.8 Controles de Segurança** — checklist com todos os RS-* do DESIGN mapeados para tasks específicas | ||
| **2.9 Estratégia de Testes** — unitários + integração + segurança (auditoria de deps) + E2E se frontend | ||
| **2.10 Estratégia de Deploy** — por ambiente com branch, trigger e infra | ||
| ### 3. Gerar `DARE/dare-dag.yaml` (grafo executável) | ||
@@ -43,9 +81,9 @@ | ||
| limits: | ||
| parent_context_chars: 2000 # snippet de output de cada pai injetado no filho | ||
| task_output_chars: 4000 # cap do output capturado por task | ||
| timeout_seconds: 600 # AbortController por task | ||
| parent_context_chars: 2000 | ||
| task_output_chars: 4000 | ||
| timeout_seconds: 600 | ||
| models: | ||
| cursor: { HIGH: gpt-5.3-codex, MED: composer-2, LOW: auto-low } | ||
| claude: { HIGH: claude-sonnet-4-5, MED: claude-haiku-4, LOW: claude-haiku-4 } | ||
| claude: { HIGH: claude-sonnet-4-6, MED: claude-haiku-4-5, LOW: claude-haiku-4-5 } | ||
| antigravity: { HIGH: gemini-2.5-pro, MED: gemini-2.5-flash, LOW: gemini-2.5-flash } | ||
@@ -55,3 +93,3 @@ | ||
| - id: task-001 | ||
| title: "Setup project structure" | ||
| title: "Containerização — Dockerfile + docker-compose" | ||
| depends_on: [] | ||
@@ -61,24 +99,18 @@ complexity: LOW | ||
| subtask_prompt: | | ||
| <prompt completamente self-contained — o subagente vê só este texto | ||
| mais snippets de até 2000 chars de cada pai> | ||
| <prompt completamente self-contained> | ||
| ``` | ||
| **Regras inegociáveis ao construir o DAG:** | ||
| **Regras inegociáveis:** | ||
| - `id` em kebab-case e único | ||
| - `depends_on` **mínimo** — só adicione quando a task filha *literalmente* | ||
| não pode começar sem o output da pai (arquivo, schema, decisão exportada) | ||
| - `subtask_prompt` totalmente self-contained — não vale "use o padrão da | ||
| task-001" | ||
| - Pelo menos 2 tasks no rank 0 (`depends_on: []`) para haver paralelismo | ||
| - Cadeia linear (`001→002→003→...`) é antipattern — reanalise | ||
| - `complexity` honesta: `HIGH` só para lógica crítica/segurança | ||
| - Output cap de 4000 chars: se a task gera muito, escreva em arquivo e | ||
| retorne só resumo + caminhos | ||
| - **A primeira task deve containerizar a aplicação** (Dockerfile + compose | ||
| + healthcheck) — sem isso o Ralph Loop automático não tem onde rodar | ||
| - **NÃO crie task "Ralph Loop final" / "Hardening" / "QA final"** — o | ||
| Ralph Loop roda em CADA `dare execute --complete`, automaticamente | ||
| - **Tests com assertions reais** — `assertTrue(true)` quebra o gate `test` | ||
| e a task vai para FAILED | ||
| - `depends_on` **mínimo** — só quando a task filha literalmente não pode começar sem o output da pai | ||
| - `subtask_prompt` totalmente self-contained — não use "siga o padrão da task-001" | ||
| - Pelo menos 2 tasks no rank 0 (`depends_on: []`) para haver paralelismo real | ||
| - Cadeia linear (`001→002→003→...`) é antipattern — reanalise o grafo | ||
| - `complexity: HIGH` apenas para lógica de segurança crítica, algoritmos complexos ou integrações externas arriscadas | ||
| - **task-001 = containerização** sempre | ||
| - **task-N-1 ou task-N = auditoria de segurança + dependências** (sem CVE HIGH/CRITICAL) | ||
| - **NÃO crie task "Ralph Loop final" / "QA final"** — o Ralph Loop roda em CADA `--complete` | ||
| - **NÃO crie task "Refactoring geral"** — refactoring faz parte de cada task | ||
| - Testes com assertions reais — `assertTrue(true)` quebra o gate e a task vai para FAILED | ||
@@ -98,5 +130,5 @@ ### 4. Gerar `DARE/TASKS.md` (visão humana) | ||
| |----------|---------------------------|-------------|------------------|------------| | ||
| | task-001 | Setup project structure | ⏳ PENDING | — | LOW | | ||
| | task-001 | Containerização | ⏳ PENDING | — | LOW | | ||
| | task-002 | DB migrations | ⏳ PENDING | — | MED | | ||
| | task-003 | Auth controllers | ⏳ PENDING | task-001, 002 | HIGH | | ||
| | task-003 | Auth endpoints | ⏳ PENDING | task-001, 002 | HIGH | | ||
| ``` | ||
@@ -106,29 +138,23 @@ | ||
| Para CADA task em `dare-dag.yaml`, crie a spec correspondente seguindo | ||
| `templates/TASK-SPEC-template.md`: | ||
| Para CADA task, use o template `templates/TASK-SPEC-template.md`: | ||
| - Objetivo verificável (não uma ação, mas um estado observável) | ||
| - Arquivos a criar/modificar (tabela) | ||
| - Implementação passo a passo | ||
| - **Considerações de segurança** (seção obrigatória mesmo para tasks de infra) | ||
| - **Validation Gates** específicos da stack (build + test + lint + audit se nova dep) | ||
| - Critérios de DONE explícitos | ||
| - **Objetivo** claro | ||
| - **Arquivos a criar/modificar** | ||
| - **Validation Gates** específicos da stack (PHPUnit, Pytest, Vitest, cargo test) | ||
| - **Testes esperados** | ||
| - **Considerações de segurança** | ||
| - **Próxima task** sugerida | ||
| ### 6. Validar consistência dos 5 artefatos | ||
| O `subtask_prompt` no YAML pode referenciar `spec_file: EXECUTION/task-001.md` | ||
| para que o subagente leia a spec na hora de executar. | ||
| ### 6. Validar consistência dos 4 artefatos | ||
| Antes de entregar: | ||
| - [ ] Mesmos `id`s em `TASKS.md`, `dare-dag.yaml` e `EXECUTION/task-*.md` | ||
| - [ ] Mesmas `depends_on` nos três | ||
| - [ ] Mesmas `complexity` | ||
| - [ ] Sem ciclos | ||
| - [ ] Mesmas `depends_on` nos três artefatos | ||
| - [ ] Mesma `complexity` nos três artefatos | ||
| - [ ] Sem ciclos no DAG | ||
| - [ ] Pelo menos 2 tasks no rank 0 | ||
| - [ ] Cada `subtask_prompt` executável sem contexto adicional | ||
| - [ ] task-001 é containerização | ||
| - [ ] Existe task de auditoria de segurança/dependências | ||
| - [ ] Cada `subtask_prompt` é executável sem contexto adicional | ||
| ### 7. Regenerar a visualização do DAG | ||
| ### 7. Regenerar visualização do DAG | ||
| Depois de salvar o `dare-dag.yaml`, rode: | ||
| ```bash | ||
@@ -138,38 +164,18 @@ dare dag viz -o DARE/dag-graph.mmd | ||
| Isso reescreve `DARE/dag-graph.mmd` (Mermaid) refletindo o grafo atualizado. | ||
| O usuário pode abrir no editor com Markdown Preview Mermaid para ver o | ||
| grafo estático com cores por status antes de executar. | ||
| ### 8. Aguardar aprovação humana | ||
| **Não execute nenhuma task** até o usuário revisar e aprovar os 5 artefatos | ||
| (BLUEPRINT, TASKS, dare-dag.yaml, EXECUTION/task-*, dag-graph.mmd). | ||
| **Não execute nenhuma task** até o usuário revisar e aprovar os 5 artefatos. | ||
| ## Templates disponíveis | ||
| - `templates/BLUEPRINT-template.md` | ||
| - `templates/TASKS-template.md` | ||
| - `templates/TASK-SPEC-template.md` | ||
| ## Próximos passos | ||
| Após aprovação humana: | ||
| Após aprovação: | ||
| ```bash | ||
| # Paralelo (recomendado) | ||
| dare execute --parallel --runner claude | ||
| # Sequencial (debug) | ||
| dare execute --runner claude | ||
| # Task única | ||
| dare execute --task task-003 --runner claude | ||
| dare execute --runner claude # sequencial (debug) | ||
| dare execute --task task-003 --runner claude # task única | ||
| ``` | ||
| Ou pelos slash commands: | ||
| Ou slash commands: `/dare-dag-run` · `/dare-execute task-001` · `/dare-tasks` | ||
| - `/dare-dag-run` — executa o DAG completo em paralelo | ||
| - `/dare-execute task-001` — executa uma task específica | ||
| - `/dare-tasks` — mostra status atual das tasks | ||
| $ARGUMENTS |
@@ -9,3 +9,3 @@ # /dare-design | ||
| /dare-design Quero uma API REST de autenticação com JWT e refresh token | ||
| /dare-design Adicionar endpoint de upload de arquivos com validação | ||
| /dare-design Adicionar módulo de pagamentos com Stripe e webhook | ||
| ``` | ||
@@ -15,43 +15,57 @@ | ||
| 1. **Leia o contexto atual do projeto:** | ||
| - `package.json` / `composer.json` / `Cargo.toml` / `requirements.txt` para entender stack | ||
| - Estrutura de pastas existente | ||
| - `DARE/DESIGN.md` se já existir (não sobrescreva sem autorização) | ||
| ### 1. Leia o contexto atual do projeto | ||
| 2. **Crie ou atualize `DARE/DESIGN.md` com:** | ||
| - **Descrição** clara do que será construído | ||
| - **Objetivos** mensuráveis (use checkboxes `- [ ]`) | ||
| - **Restrições** técnicas, de negócio e de tempo | ||
| - **Critérios de sucesso** verificáveis | ||
| - **Stakeholders** e personas afetadas | ||
| - **Riscos** identificados | ||
| - `package.json` / `composer.json` / `Cargo.toml` / `go.mod` / `requirements.txt` — stack atual | ||
| - Estrutura de pastas existente | ||
| - `DARE/DESIGN.md` se já existir — não sobrescreva sem aprovação explícita do usuário | ||
| 3. **Use o template** em `templates/DESIGN-template.md` se disponível | ||
| ### 2. Gere `DARE/DESIGN.md` com as seguintes seções obrigatórias | ||
| 4. **Confirme com o usuário** antes de prosseguir para a fase de Architect | ||
| **2.1 Descrição** — 3 a 5 frases claras: o que é, qual problema resolve, quem usa. | ||
| ## Formato esperado do DESIGN.md | ||
| **2.2 Objetivos e Métricas de Sucesso** — tabela numerada (O-01, O-02…) com métrica verificável e meta numérica para cada objetivo. Evite objetivos vagos como "melhorar performance" — use "p99 < 200 ms". | ||
| ```markdown | ||
| # DESIGN: <Nome do Projeto/Feature> | ||
| **2.3 Stakeholders** — tabela: papel, nome/time, interesse principal. | ||
| ## Descrição | ||
| <O que será construído e por quê> | ||
| **2.4 Requisitos Funcionais** — tabela numerada (RF-01, RF-02…) com prioridade MUST/SHOULD/COULD e critério de aceite verificável para cada um. | ||
| ## Objetivos | ||
| - [ ] Objetivo mensurável 1 | ||
| - [ ] Objetivo mensurável 2 | ||
| **2.5 Requisitos Não-Funcionais** — tabela numerada (RNF-01…) cobrindo: performance, disponibilidade, segurança (autenticação, rate limiting, segredos), observabilidade, manutenibilidade. | ||
| ## Restrições | ||
| - Técnicas: <stack, performance, etc> | ||
| - Negócio: <prazo, budget, regulatórias> | ||
| **2.6 Requisitos de Segurança** — tabela numerada (RS-01…). Inclua **sempre**: | ||
| - RS-01: validação de entrada (OWASP A03) | ||
| - RS-02: proteção de dados sensíveis / hash de senhas (OWASP A02) | ||
| - RS-03: controle de acesso por recurso (OWASP A01) | ||
| - RS-04: auditoria de dependências sem CVE HIGH/CRITICAL (OWASP A06) | ||
| - RS-05: secrets via variáveis de ambiente — nunca em código | ||
| - Adicione requisitos específicos do domínio do projeto | ||
| ## Critérios de Sucesso | ||
| - <Critério verificável 1> | ||
| - <Critério verificável 2> | ||
| **2.7 Stack Técnica** — tabela por camada com tecnologia e versão. | ||
| ## Riscos | ||
| - <Risco 1 e mitigação> | ||
| ``` | ||
| **2.8 Integrações Externas** — tabela: sistema, tipo, protocolo, direção, dados trocados, responsável. Inclua apenas integrações confirmadas; marque incertas como "A confirmar". | ||
| **2.9 Restrições** — prazo, orçamento de infra, limitações técnicas, compliance regulatório. | ||
| **2.10 Fora do Escopo (v1)** — lista explícita do que NÃO será feito e o motivo. | ||
| **2.11 Riscos e Mitigações** — tabela: risco, probabilidade (Alta/Média/Baixa), impacto (Alto/Médio/Baixo), mitigação concreta. | ||
| **2.12 Checklist de Aprovação** — checkboxes para o usuário revisar antes de avançar ao `/dare-blueprint`. | ||
| ### 3. Use o template em `templates/DESIGN-template.md` | ||
| Siga o template fielmente. Não omita seções — use "[A definir]" se a informação não estiver disponível ainda, mas deixe a seção explícita para o usuário preencher. | ||
| ### 4. Qualidade esperada | ||
| O DESIGN.md gerado deve permitir que qualquer engenheiro novo no projeto entenda: | ||
| - **O QUÊ** vai ser construído (requisitos funcionais) | ||
| - **POR QUÊ** (objetivos e métricas) | ||
| - **PARA QUEM** (stakeholders e personas) | ||
| - **O QUE NÃO** vai ser feito (escopo) | ||
| - **QUAIS RISCOS** existem (com mitigação) | ||
| ### 5. Confirme com o usuário antes de prosseguir | ||
| Após gerar o DESIGN.md, apresente um resumo das seções geradas e pergunte se o usuário quer ajustar algo antes de rodar `/dare-blueprint`. | ||
| $ARGUMENTS |
@@ -14,55 +14,136 @@ # /dare-execute | ||
| 1. **Leia `DARE/BLUEPRINT.md`** — obrigatório antes de qualquer implementação | ||
| ### 1. Leia `DARE/BLUEPRINT.md` — obrigatório | ||
| 2. **Leia a task especificada** em `DARE/dare-dag.yaml`: | ||
| - Extraia `subtask_prompt` | ||
| - Verifique `complexity` (LOW/MED/HIGH) | ||
| - Liste `depends_on` | ||
| Antes de qualquer implementação. Foque em: | ||
| - Stack técnica e versões (seção 2) | ||
| - Validation gates da stack (seção 7) | ||
| - Controles de segurança mapeados (seção 8) | ||
| 3. **Verifique dependências:** | ||
| - Todas as tasks em `depends_on` devem ter status `DONE` em `DARE/TASKS.md` | ||
| - Se alguma estiver `PENDING`, alerte o usuário (a menos que `--force`) | ||
| - Se alguma estiver `FAILED`, recuse executar | ||
| ### 2. Leia a task em `DARE/dare-dag.yaml` e `DARE/EXECUTION/task-<id>.md` | ||
| 4. **Implemente a task** seguindo o `subtask_prompt`: | ||
| - Siga padrões do `CLAUDE.md` | ||
| - Crie/modifique arquivos conforme spec | ||
| - Adicione testes | ||
| - Implemente validações de segurança | ||
| - `subtask_prompt` — instrução self-contained da task | ||
| - `complexity` — LOW/MED/HIGH (define rigor do Ralph Loop) | ||
| - `depends_on` — verifique status antes de executar | ||
| - Spec em `EXECUTION/task-<id>.md` — objetivo, arquivos, validation gates | ||
| 5. **Execute o Ralph Loop:** | ||
| - **Build:** compile sem erros | ||
| - **Test:** todos os testes passando (incluindo os novos) | ||
| - **Lint:** sem warnings | ||
| ### 3. Verifique dependências | ||
| 6. **Atualize `DARE/TASKS.md`:** | ||
| - Mude status para `DONE` | ||
| - Adicione duração e tokens consumidos se possível | ||
| - Todas as tasks em `depends_on` devem ter status `DONE` em `DARE/TASKS.md` | ||
| - Se alguma estiver `PENDING` → alerte o usuário (a menos que `--force`) | ||
| - Se alguma estiver `FAILED` → recuse executar e informe | ||
| 7. **Crie artifact em `DARE/EXECUTION/task-<id>.md`:** | ||
| ```markdown | ||
| # Task <id>: <título> | ||
| ## Status: ✅ DONE | ||
| ## Duração: <ms> | ||
| ## Arquivos criados/modificados | ||
| - path/to/file1.ts | ||
| - path/to/file2.test.ts | ||
| ## Testes | ||
| - ✅ test_should_x | ||
| - ✅ test_should_y | ||
| ## Ralph Loop | ||
| - ✅ Build | ||
| - ✅ Test | ||
| - ✅ Lint | ||
| ``` | ||
| ### 4. Implemente a task | ||
| 8. **Sugira a próxima task** disponível (com dependências satisfeitas) | ||
| - Siga padrões do `CLAUDE.md` e da spec em `EXECUTION/task-<id>.md` | ||
| - Crie/modifique arquivos conforme seção "Arquivos a criar/modificar" | ||
| - Implemente testes com assertions reais (não `assertTrue(true)`) | ||
| - Aplique os controles de segurança listados na seção 5 da spec | ||
| ### 5. Execute o Ralph Loop (obrigatório antes de DONE) | ||
| Se qualquer etapa falhar, leia o erro, corrija e reexecute. **Não marque DONE sem todos os gates verdes.** | ||
| #### 5.1 Build | ||
| ```bash | ||
| # Rust: cargo build | ||
| # Node: npm run build | ||
| # Python: python -m py_compile **/*.py (ou mypy para tipo) | ||
| # PHP: php artisan config:cache | ||
| # Go: go build ./... | ||
| ``` | ||
| #### 5.2 Test | ||
| ```bash | ||
| # Rust: cargo test --workspace | ||
| # Node: npm test | ||
| # Python: pytest | ||
| # PHP: php artisan test | ||
| # Go: go test ./... | ||
| ``` | ||
| #### 5.3 Lint | ||
| ```bash | ||
| # Rust: cargo clippy -- -D warnings | ||
| # Node: npx eslint src --max-warnings=0 | ||
| # Python: ruff check . | ||
| # PHP: ./vendor/bin/phpstan analyse | ||
| # Go: golangci-lint run | ||
| ``` | ||
| #### 5.4 Auditoria de Dependências | ||
| **Execute SEMPRE que esta task adicionar ou atualizar dependências externas.** | ||
| ```bash | ||
| # Node.js / npm | ||
| npm audit --audit-level=high | ||
| # Se houver vulnerabilidades corrigíveis: | ||
| npm audit fix | ||
| # Rust / Cargo | ||
| cargo audit | ||
| # Para auto-fix (bumpa versões compatíveis): | ||
| cargo update # depois verificar Cargo.lock | ||
| # Python / pip | ||
| pip-audit | ||
| # Para instalar: pip install pip-audit | ||
| # Fix: atualizar versão no requirements.txt / pyproject.toml | ||
| # PHP / Composer | ||
| composer audit | ||
| # Fix: composer update --with-all-dependencies [pacote] | ||
| ``` | ||
| > **Gate obrigatório:** a task só pode ser marcada como DONE se não houver CVE de nível HIGH ou CRITICAL nas dependências do projeto. CVEs de nível MODERATE devem ser documentados com justificativa se não puderem ser corrigidos imediatamente. | ||
| #### 5.5 Verificação de Secrets (para tasks que mexem em configuração ou CI) | ||
| ```bash | ||
| # Verificar se não há secrets hardcoded antes de commitar | ||
| # Procurar padrões comuns: | ||
| grep -rn "password\s*=\s*['\"][^'\"]" src/ || true | ||
| grep -rn "api_key\s*=\s*['\"][^'\"]" src/ || true | ||
| grep -rn "secret\s*=\s*['\"][^'\"]" src/ || true | ||
| # Use git-secrets ou trufflehog se disponível no projeto | ||
| ``` | ||
| ### 6. Atualize `DARE/TASKS.md` | ||
| Mude o status para `DONE` e adicione duração se souber. | ||
| ### 7. Crie artifact em `DARE/EXECUTION/task-<id>.md` | ||
| ```markdown | ||
| # Task <id>: <título> | ||
| ## Status: ✅ DONE | ||
| ## Duração: <estimativa> | ||
| ## Arquivos criados/modificados | ||
| - path/to/file1.ts | ||
| - path/to/file2.test.ts | ||
| ## Testes | ||
| - ✅ test_should_x_when_y | ||
| - ✅ test_should_return_401_when_unauthenticated | ||
| ## Ralph Loop | ||
| - ✅ Build | ||
| - ✅ Test | ||
| - ✅ Lint | ||
| - ✅ Auditoria de deps (se aplicável) | ||
| ## Segurança | ||
| - ✅ Input validation aplicada | ||
| - ✅ Autenticação/autorização verificada | ||
| - ✅ Sem secrets em código | ||
| ``` | ||
| ### 8. Sugira a próxima task disponível | ||
| Liste as tasks com `depends_on` satisfeito e status `PENDING`. Indique qual rodar com `/dare-execute <id>`. | ||
| ## Modo Paralelo | ||
| Para executar múltiplas tasks em paralelo, use o CLI direto: | ||
| ```bash | ||
@@ -72,4 +153,2 @@ dare execute --parallel --runner claude | ||
| Isto executa tasks por rank topológico, respeitando `depends_on`. | ||
| $ARGUMENTS |
@@ -13,5 +13,5 @@ # DARE Framework | ||
| - Atualize o status em `DARE/TASKS.md` ao concluir cada task | ||
| - Nunca pule o Ralph Loop (build → test → lint) antes de marcar uma task como DONE | ||
| - Nunca pule o Ralph Loop (build → test → lint → audit) antes de marcar uma task como DONE | ||
| - Aprovação humana obrigatória antes de merge para a branch principal | ||
| - Use os slash commands `/dare-design`, `/dare-blueprint`, `/dare-execute`, `/dare-tasks`, `/dare-rust-leptos`, `/dare-rust-workspace` | ||
| - Use os slash commands `/dare-design`, `/dare-blueprint`, `/dare-execute`, `/dare-tasks`, `/dare-security`, `/dare-rust-leptos`, `/dare-rust-workspace` | ||
@@ -109,12 +109,40 @@ ## Estrutura do Projeto | ||
| 1. **Build** — compile e verifique erros | ||
| 2. **Test** — rode a suite de testes completa | ||
| 3. **Lint** — rode o linter/formatter | ||
| 4. Só marque DONE se os 3 passos passarem sem erros | ||
| 2. **Test** — rode a suite de testes completa (assertions reais, não `assertTrue(true)`) | ||
| 3. **Lint** — rode o linter/formatter sem warnings | ||
| 4. **Audit** — se a task adicionou ou atualizou dependências: `npm audit --audit-level=high` / `cargo audit` / `pip-audit` / `composer audit` | ||
| 5. Só marque DONE se **todos os 4 passos** passarem sem erros | ||
| 6. CVE HIGH/CRITICAL em deps = task FAILED até corrigir | ||
| ## Segurança | ||
| - Nunca exponha secrets em logs ou outputs | ||
| - Valide e sanitize todas as entradas | ||
| - Use proteções OWASP Top 10 | ||
| - Autenticação/autorização em todos os endpoints sensíveis | ||
| - Rate limiting em endpoints públicos | ||
| ### Controles obrigatórios em toda implementação | ||
| - **Nunca** exponha secrets, senhas, tokens ou PII em logs, respostas de erro ou stack traces | ||
| - **Valide no servidor** toda entrada do usuário antes de qualquer processamento (OWASP A03) | ||
| - **Controle de acesso por recurso**, não só por rota — verifique ownership (OWASP A01) | ||
| - **Hash de senhas** com Argon2id ou Bcrypt (custo ≥ 12) — nunca MD5/SHA1/texto plano (OWASP A02) | ||
| - **Rate limiting** em endpoints de autenticação e públicos (OWASP A07) | ||
| - **Auditoria de dependências** sem CVE HIGH/CRITICAL antes de todo release (OWASP A06) | ||
| - **Secrets** via variáveis de ambiente / vault — nunca hardcoded em código ou commits | ||
| ### Auditoria de dependências por stack | ||
| ```bash | ||
| npm audit --audit-level=high # Node — + npm audit fix para auto-corrigir | ||
| cargo audit # Rust — + cargo update para bumpar | ||
| pip-audit # Python — pip install pip-audit | ||
| composer audit # PHP — nativo no Composer 2.4+ | ||
| govulncheck ./... # Go — ferramenta oficial Google | ||
| ``` | ||
| ### Headers de segurança em produção | ||
| ``` | ||
| Strict-Transport-Security: max-age=31536000; includeSubDomains | ||
| X-Frame-Options: DENY | ||
| X-Content-Type-Options: nosniff | ||
| Content-Security-Policy: default-src 'self' | ||
| Referrer-Policy: strict-origin-when-cross-origin | ||
| ``` | ||
| Use `/dare-security` para o guia completo de segurança (OWASP Top 10 completo, exemplos por stack, supply chain, prompt injection para projetos IA). |
@@ -1,53 +0,193 @@ | ||
| # BLUEPRINT DE IMPLEMENTAÇÃO: [Nome do Projeto] | ||
| # BLUEPRINT: [Nome do Projeto] | ||
| > **Gerado a partir de:** `DARE/DESIGN.md` v[X.Y] | ||
| > **Data:** YYYY-MM-DD | **Status:** DRAFT → APROVADO | ||
| --- | ||
| ## 1. VISÃO GERAL DA ARQUITETURA | ||
| [Descrição da arquitetura do sistema: Monolito modular, Microserviços, Hexagonal, etc.] | ||
| [Diagrama em formato Mermaid se aplicável] | ||
| [Descrição da arquitetura: Monolito modular / Microserviços / Hexagonal / Clean Architecture] | ||
| ```mermaid | ||
| graph TD | ||
| A[Cliente] --> B[API Gateway / BFF] | ||
| B --> C[Auth Service] | ||
| B --> D[Core Service] | ||
| D --> E[(PostgreSQL)] | ||
| D --> F[(Redis)] | ||
| ``` | ||
| **Decisões arquiteturais principais:** | ||
| | Decisão | Escolha | Justificativa | | ||
| |---------|---------|---------------| | ||
| | Padrão de módulos | [ex: Hexagonal] | [motivo] | | ||
| | Comunicação inter-serviços | [ex: REST síncrono] | [motivo] | | ||
| | Autenticação | [ex: JWT stateless] | [motivo] | | ||
| --- | ||
| ## 2. STACK TÉCNICA DEFINIDA | ||
| - **Linguagem:** [ex: PHP 8.3] | ||
| - **Framework:** [ex: Laravel 11.x] | ||
| - **Banco de Dados:** [ex: PostgreSQL 16.x] | ||
| - **Pacotes Essenciais:** [Lista de dependências do composer/npm] | ||
| ## 3. MODELO DE DADOS | ||
| [Entidades principais, relacionamentos e tipos de dados] | ||
| [Exemplo de Migration Laravel ou Model Pydantic/Go Struct] | ||
| | Camada | Tecnologia | Versão | Papel | | ||
| |--------|-----------|--------|-------| | ||
| | Linguagem | | | | | ||
| | Framework | | | | | ||
| | Banco principal | | | | | ||
| | Cache / filas | | | | | ||
| | Frontend | | | | | ||
| | Container | Docker | latest | Dev + CI | | ||
| | Observabilidade | | | Logs, métricas, traces | | ||
| ## 4. ESTRUTURA DE PASTAS E ARQUIVOS | ||
| [Árvore de diretórios completa focando nos arquivos que serão criados/modificados] | ||
| --- | ||
| ## 3. ESTRUTURA DE PASTAS E ARQUIVOS | ||
| ```text | ||
| app/ | ||
| ├── Http/ | ||
| │ ├── Controllers/ | ||
| │ └── Requests/ | ||
| ├── Models/ | ||
| ├── Services/ | ||
| └── ... | ||
| [nome-do-projeto]/ | ||
| ├── [diretório principal]/ | ||
| │ ├── [módulo 1]/ | ||
| │ └── [módulo 2]/ | ||
| ├── DARE/ | ||
| │ ├── DESIGN.md | ||
| │ ├── BLUEPRINT.md | ||
| │ ├── TASKS.md | ||
| │ ├── dare-dag.yaml | ||
| │ └── EXECUTION/ | ||
| ├── Dockerfile | ||
| ├── docker-compose.yml | ||
| └── [arquivo de configuração principal] | ||
| ``` | ||
| ## 5. ENDPOINTS DA API | ||
| | Método | Endpoint | Controller@Method | Descrição | Request Body | Response | Auth | | ||
| |---|---|---|---|---|---|---| | ||
| | POST | /api/v1/users | UserController@store | Cria usuário | {name, email, pass} | {id, token} | Não | | ||
| | GET | /api/v1/users | UserController@index | Lista usuários | - | [{id, name}] | Sim | | ||
| > **Constraints de workspace (Rust):** se Cargo workspace, NÃO definir `[build] target` global no `.cargo/config.toml` (quebra crates WASM + native). Cada crate declara suas próprias features Leptos. | ||
| ## 6. CÓDIGO-BASE / PADRÕES A SEGUIR | ||
| [Trechos de código críticos que definem o padrão do projeto] | ||
| [Exemplo: Interface de repositório, FormRequest base, Trait de respostas de API] | ||
| --- | ||
| ## 7. PLANO DE EXECUÇÃO (FASES) | ||
| - **Fase 1:** Setup do projeto e Banco de Dados (Migrations/Seeds) | ||
| - **Fase 2:** Autenticação e Autorização (Middlewares/Policies) | ||
| - **Fase 3:** [Módulo Principal 1] | ||
| - **Fase 4:** [Módulo Principal 2] | ||
| - **Fase N:** Testes e Documentação | ||
| ## 4. MODELO DE DADOS | ||
| ## 8. COMANDOS DE SETUP | ||
| [Todos os comandos para rodar o projeto do zero, ex: docker-compose up, php artisan migrate, etc] | ||
| ### Entidades principais | ||
| ## 9. CRITÉRIOS DE SUCESSO GERAIS | ||
| - [ ] O código passa em todos os testes (`php artisan test`) | ||
| - [ ] Não há erros de linting (`./vendor/bin/pint`) | ||
| - [ ] A API responde conforme os endpoints definidos | ||
| - [ ] A documentação Swagger/OpenAPI está atualizada | ||
| ``` | ||
| [Entidade 1] | ||
| - id: UUID (PK) | ||
| - [campo]: [tipo] [restrições] | ||
| - created_at, updated_at | ||
| [Entidade 2] | ||
| - id: UUID (PK) | ||
| - [entidade_1_id]: FK → Entidade1 | ||
| ``` | ||
| ### Relacionamentos | ||
| | De | Para | Cardinalidade | Via | | ||
| |----|------|---------------|-----| | ||
| | [Entidade 1] | [Entidade 2] | 1:N | FK | | ||
| --- | ||
| ## 5. CONTRATOS DE API | ||
| | Método | Endpoint | Auth | Request Body | Response | Status codes | | ||
| |--------|----------|------|-------------|----------|--------------| | ||
| | POST | `/api/v1/[recurso]` | Não | `{campo1, campo2}` | `{id, ...}` | 201, 400, 422 | | ||
| | GET | `/api/v1/[recurso]` | JWT | — | `[{id, ...}]` | 200, 401 | | ||
| | GET | `/api/v1/[recurso]/:id` | JWT | — | `{id, ...}` | 200, 401, 404 | | ||
| | PUT | `/api/v1/[recurso]/:id` | JWT + Owner | `{campos}` | `{id, ...}` | 200, 401, 403, 404 | | ||
| | DELETE | `/api/v1/[recurso]/:id` | JWT + Admin | — | `{}` | 204, 401, 403, 404 | | ||
| --- | ||
| ## 6. PLANO DE EXECUÇÃO (FASES) | ||
| ### Fase 1: Containerização e Setup ← **SEMPRE PRIMEIRA** | ||
| **Critério de DONE:** `docker compose up -d` sobe sem erros; healthcheck `/health` retorna 200. | ||
| - Dockerfile multi-stage | ||
| - docker-compose.yml com todos os serviços | ||
| - Variáveis de ambiente via `.env.example` | ||
| ### Fase 2: Banco de Dados e Migrations | ||
| **Critério de DONE:** migrations rodando; schema validado; seeds de desenvolvimento funcionando. | ||
| - Migrations / schema inicial | ||
| - Seeds de desenvolvimento | ||
| - Índices para queries críticas | ||
| ### Fase 3: Autenticação e Autorização | ||
| **Critério de DONE:** login retorna JWT; endpoint protegido rejeita token inválido com 401; acesso sem permissão retorna 403. | ||
| - Registro, login, refresh, logout | ||
| - Middleware de autenticação | ||
| - Sistema de permissões (RBAC/ACL) | ||
| ### Fase 4: [Módulo de negócio principal] | ||
| **Critério de DONE:** [comportamento testável esperado]. | ||
| - [Descrever aqui] | ||
| ### Fase N-1: Auditoria de Segurança e Dependências | ||
| **Critério de DONE:** `[audit-cmd]` sem CVE HIGH/CRITICAL; security headers presentes; sem secrets em código. | ||
| - `npm audit --audit-level=high` / `cargo audit` / `pip-audit` / `composer audit` | ||
| - Headers HTTP de segurança (HSTS, CSP, X-Frame-Options) | ||
| - Scan de secrets no repositório | ||
| ### Fase N: Observabilidade e Documentação | ||
| **Critério de DONE:** logs estruturados em JSON; endpoint `/metrics` ou equivalente; documentação API gerada. | ||
| - Logs estruturados (JSON) com trace-id | ||
| - Métricas de negócio e técnicas | ||
| - Documentação API (OpenAPI / Swagger) | ||
| --- | ||
| ## 7. VALIDAÇÃO E SEGURANÇA | ||
| ### Validation Gates (Ralph Loop) por stack | ||
| | Stack | Build | Test | Lint/Audit | | ||
| |-------|-------|------|------------| | ||
| | Rust/Axum | `cargo build` | `cargo test --workspace` | `cargo clippy && cargo audit` | | ||
| | Node/NestJS | `npm run build` | `npm test` | `npx eslint src && npm audit --audit-level=high` | | ||
| | Python/FastAPI | `python -m py_compile` | `pytest` | `ruff check . && pip-audit` | | ||
| | PHP/Laravel | `php artisan config:cache` | `php artisan test` | `./vendor/bin/phpstan && composer audit` | | ||
| | Go | `go build ./...` | `go test ./...` | `golangci-lint run` | | ||
| ### Controles de segurança obrigatórios | ||
| - [ ] Rate limiting em endpoints de autenticação e públicos | ||
| - [ ] Input validation no servidor para todos os endpoints | ||
| - [ ] Dados sensíveis (PII, tokens, senhas) nunca em logs | ||
| - [ ] Todas as dependências sem CVE HIGH/CRITICAL (ver Fase N-1) | ||
| - [ ] HTTP Security Headers em produção | ||
| - [ ] Secrets apenas em variáveis de ambiente / vault | ||
| --- | ||
| ## 8. ESTRATÉGIA DE TESTES | ||
| | Tipo | Ferramenta | Cobertura mínima | O que cobre | | ||
| |------|-----------|------------------|-------------| | ||
| | Unitários | [jest/pytest/cargo test] | 80 % das funções críticas | Lógica de negócio isolada | | ||
| | Integração | [supertest/httpx/reqwest] | Todos os endpoints | Contrato da API | | ||
| | Segurança | [npm audit/cargo audit/pip-audit] | 100 % deps | CVEs conhecidos | | ||
| | E2E | [playwright/cypress] se frontend | Fluxo principal | Jornada do usuário | | ||
| --- | ||
| ## 9. ESTRATÉGIA DE DEPLOY | ||
| | Ambiente | Branch | Trigger | Infra | | ||
| |----------|--------|---------|-------| | ||
| | `dev` | `develop` | Push automático | [ex: Docker local / Railway] | | ||
| | `staging` | `main` | PR merge | [ex: OKE / ECS / Fly.io] | | ||
| | `prod` | tag `v*.*.*` | Manual | [ex: OKE / ECS / Fly.io] | | ||
| --- | ||
| ## 10. CHECKLIST DE APROVAÇÃO DO BLUEPRINT | ||
| - [ ] Arquitetura revisada e aprovada | ||
| - [ ] Modelo de dados validado | ||
| - [ ] Contratos de API definidos e completos | ||
| - [ ] Fases com critérios de DONE claros | ||
| - [ ] Validation gates por stack definidos | ||
| - [ ] Controles de segurança mapeados | ||
| - [ ] Estratégia de testes cobrindo todos os tipos | ||
| - [ ] DAG de tasks gerado (`dare-dag.yaml`) |
@@ -1,34 +0,129 @@ | ||
| # PROJETO: [Nome do Projeto] | ||
| # DESIGN: [Nome do Projeto / Feature] | ||
| ## DESCRIÇÃO | ||
| [O que é o sistema em 2-3 frases claras e objetivas] | ||
| > **Versão:** v1.0 | **Data:** YYYY-MM-DD | **Status:** DRAFT → APROVADO | ||
| ## FUNCIONALIDADES | ||
| - [Funcionalidade 1: descrição detalhada] | ||
| - [Funcionalidade 2: descrição detalhada] | ||
| - [...] | ||
| --- | ||
| ## STACK TÉCNICA | ||
| - **Linguagem:** [ex: PHP 8.3] | ||
| - **Framework:** [ex: Laravel 11] | ||
| - **Banco de Dados:** [ex: PostgreSQL 16] | ||
| - **Frontend:** [ex: Vue.js 3 / Nuxt] | ||
| - **Outros:** [ex: Redis, S3] | ||
| ## 1. DESCRIÇÃO | ||
| ## REQUISITOS TÉCNICOS E DE NEGÓCIO | ||
| - [Requisito 1: ex. API deve responder em menos de 200ms] | ||
| - [Requisito 2: ex. Autenticação via JWT (Sanctum)] | ||
| - [Requisito 3: ex. Cobertura de testes unitários > 80%] | ||
| [O que é o sistema e qual problema ele resolve — 3 a 5 frases claras e objetivas. Evite jargão.] | ||
| ## INTEGRAÇÕES | ||
| - [Integração 1: ex. Stripe para pagamentos (link da doc)] | ||
| - [Integração 2: ex. AWS S3 para armazenamento de arquivos] | ||
| --- | ||
| ## RESTRIÇÕES | ||
| - **Prazo:** [Data limite ou restrição de tempo] | ||
| - **Orçamento:** [Limitações de custo com infra/APIs] | ||
| - **Limitações Técnicas:** [ex. Não pode usar banco NoSQL] | ||
| ## 2. OBJETIVOS E MÉTRICAS DE SUCESSO | ||
| ## FORA DO ESCOPO | ||
| - [O que NÃO será feito nesta versão] | ||
| - [Funcionalidades adiadas para v2] | ||
| | # | Objetivo | Métrica verificável | Meta | | ||
| |---|----------|---------------------|------| | ||
| | O-01 | [ex: Reduzir tempo de resposta da API] | p99 latência em produção | < 200 ms | | ||
| | O-02 | [ex: Aumentar cobertura de testes] | `coverage --summary` | > 80 % | | ||
| | O-03 | | | | | ||
| --- | ||
| ## 3. STAKEHOLDERS | ||
| | Papel | Nome / Time | Interesse principal | | ||
| |-------|-------------|---------------------| | ||
| | Product Owner | | Aprovação de scope e prioridades | | ||
| | Tech Lead | | Decisões arquiteturais | | ||
| | Usuário Final | | [Persona] — [necessidade] | | ||
| | Operações / SRE | | SLA, alertas, deploys | | ||
| --- | ||
| ## 4. REQUISITOS FUNCIONAIS | ||
| | ID | Requisito | Prioridade | Critério de aceite | | ||
| |----|-----------|------------|--------------------| | ||
| | RF-01 | | MUST | | | ||
| | RF-02 | | SHOULD | | | ||
| | RF-03 | | COULD | | | ||
| > Prioridades: **MUST** (bloqueia v1) · **SHOULD** (importante, mas não bloqueia) · **COULD** (nice to have) | ||
| --- | ||
| ## 5. REQUISITOS NÃO-FUNCIONAIS | ||
| | ID | Categoria | Requisito | Meta | | ||
| |----|-----------|-----------|------| | ||
| | RNF-01 | Performance | [ex: API responde dentro do SLA] | p95 < 500 ms | | ||
| | RNF-02 | Disponibilidade | [ex: uptime mensal] | ≥ 99,5 % | | ||
| | RNF-03 | Segurança | Autenticação obrigatória em todos os endpoints sensíveis | JWT + refresh | | ||
| | RNF-04 | Segurança | Rate limiting em endpoints públicos | ≤ 60 req/min/IP | | ||
| | RNF-05 | Segurança | Dados sensíveis (PII, tokens) nunca em logs | auditoria automática | | ||
| | RNF-06 | Observabilidade | Logs estruturados (JSON) com trace-id | OpenTelemetry | | ||
| | RNF-07 | Manutenibilidade | Cobertura de testes | > 80 % | | ||
| --- | ||
| ## 6. REQUISITOS DE SEGURANÇA | ||
| | ID | Requisito | Referência | | ||
| |----|-----------|------------| | ||
| | RS-01 | Todas as entradas do usuário validadas no servidor antes de qualquer processamento | OWASP A03 | | ||
| | RS-02 | Senhas e segredos nunca armazenados em texto plano; hash Argon2/Bcrypt | OWASP A02 | | ||
| | RS-03 | Controle de acesso verificado por recurso (não só por rota) | OWASP A01 | | ||
| | RS-04 | Dependências auditadas antes de cada release (sem CVE HIGH/CRITICAL) | OWASP A06 | | ||
| | RS-05 | Segredos gerenciados via variáveis de ambiente / vault — nunca em código | Supply chain | | ||
| | RS-06 | [Requisito específico do domínio] | | | ||
| --- | ||
| ## 7. STACK TÉCNICA | ||
| | Camada | Tecnologia | Versão | | ||
| |--------|-----------|--------| | ||
| | Linguagem / Runtime | | | | ||
| | Framework principal | | | | ||
| | Banco de dados | | | | ||
| | Cache | | | | ||
| | Frontend | | | | ||
| | Infra / deploy | | | | ||
| | Observabilidade | | | | ||
| --- | ||
| ## 8. INTEGRAÇÕES EXTERNAS | ||
| | Sistema | Tipo | Protocolo | Direção | Dados trocados | Responsável | | ||
| |---------|------|-----------|---------|----------------|-------------| | ||
| | [ex: Stripe] | Pagamento | REST/webhook | Saída + entrada | Cobrança, confirmação | Time Pagamentos | | ||
| | [ex: Auth0] | IdP | OIDC | Entrada | ID Token, Claims | Time Auth | | ||
| --- | ||
| ## 9. RESTRIÇÕES | ||
| - **Prazo:** [Data de entrega ou milestone] | ||
| - **Orçamento de infra:** [Limite de custo mensal ou por request] | ||
| - **Limitações técnicas:** [ex: não pode usar banco NoSQL; deve usar Go ≥ 1.22] | ||
| - **Regulatórias / Compliance:** [ex: LGPD, GDPR, SOC 2, PCI-DSS se aplicável] | ||
| --- | ||
| ## 10. FORA DO ESCOPO (v1) | ||
| - [Funcionalidade adiada para v2 — e o motivo] | ||
| - [Caso de uso que NÃO será tratado nesta versão] | ||
| --- | ||
| ## 11. RISCOS E MITIGAÇÕES | ||
| | # | Risco | Probabilidade | Impacto | Mitigação | | ||
| |---|-------|---------------|---------|-----------| | ||
| | R-01 | [ex: Latência alta no serviço de terceiros] | Média | Alto | Circuit breaker + fallback | | ||
| | R-02 | [ex: Falta de dados históricos para ML] | Alta | Médio | Dataset sintético inicial | | ||
| | R-03 | | | | | | ||
| --- | ||
| ## 12. CHECKLIST DE APROVAÇÃO | ||
| - [ ] Requisitos funcionais revisados e priorizados | ||
| - [ ] Requisitos de segurança validados pelo Tech Lead | ||
| - [ ] Stack técnica aprovada | ||
| - [ ] Integrações externas confirmadas com responsáveis | ||
| - [ ] Fora do escopo alinhado com Product Owner | ||
| - [ ] Riscos críticos com mitigação definida |
@@ -1,43 +0,100 @@ | ||
| # ESPECIFICAÇÃO DE TAREFA: [ID da Task, ex: task-001] | ||
| # TASK [ID]: [Título da Task] | ||
| ## OBJETIVO DA TAREFA | ||
| [Descrição concisa do que precisa ser implementado, ex: Criar o Model, Migration e Factory para a entidade Usuário.] | ||
| > **Complexidade:** LOW / MED / HIGH | ||
| > **Depends on:** [task-ids ou —] | ||
| > **Estimativa:** [X horas] | ||
| ## CONTEXTO E DEPENDÊNCIAS | ||
| - **Fase:** [Nome da Fase] | ||
| - **Depende de:** [ID de tasks anteriores, ex: Nenhuma / task-000] | ||
| - **Arquivos Relacionados Existentes:** [Arquivos que servem de base ou serão modificados, ex: `app/Models/User.php`] | ||
| --- | ||
| ## ESPECIFICAÇÃO DE IMPLEMENTAÇÃO (O QUE FAZER) | ||
| [Instruções detalhadas passo a passo para a IA Executora] | ||
| ## 1. OBJETIVO | ||
| 1. **[Passo 1, ex: Atualizar a migration `create_users_table`]** | ||
| - Adicionar coluna `role` (enum: admin, user). | ||
| - Adicionar coluna `is_active` (boolean, default true). | ||
| [Uma frase precisa do que esta task entrega. Deve ser verificável — termine com um estado observável, não uma ação.] | ||
| 2. **[Passo 2, ex: Atualizar o Model `User`]** | ||
| - Adicionar campos ao `$fillable`. | ||
| - Criar os casts corretos. | ||
| Exemplo: _"Ao final desta task, o endpoint `POST /api/v1/users` aceita cadastro, valida unicidade de e-mail e retorna JWT."_ | ||
| 3. **[Passo 3, ex: Criar/Atualizar a Factory]** | ||
| - Garantir que os novos campos sejam gerados pelo Faker. | ||
| --- | ||
| ## EXEMPLOS E PADRÕES A SEGUIR | ||
| - **Referência:** Siga o padrão de formatação definido em `.cursorrules`. | ||
| - **Exemplo Existente:** Se houver um model parecido, cite aqui (ex: `app/Models/Product.php`). | ||
| ## 2. CONTEXTO | ||
| ## CRITÉRIOS DE SUCESSO (VALIDATION GATES) | ||
| Estes comandos DEVEM ser executados pela IA para validar a implementação antes de concluir a tarefa. | ||
| - **Fase no BLUEPRINT:** Fase [N] — [Nome da fase] | ||
| - **Arquivos existentes relevantes:** [caminhos de arquivos que servem de referência ou serão modificados] | ||
| - **Decisões do BLUEPRINT que afetam esta task:** [cite seção/decisão específica] | ||
| --- | ||
| ## 3. ARQUIVOS A CRIAR / MODIFICAR | ||
| | Ação | Caminho | Descrição | | ||
| |------|---------|-----------| | ||
| | CRIAR | `src/[módulo]/[arquivo]` | [o que contém] | | ||
| | MODIFICAR | `src/[módulo]/[arquivo]` | [o que muda] | | ||
| | CRIAR | `tests/[arquivo].test.[ext]` | Testes da feature | | ||
| --- | ||
| ## 4. IMPLEMENTAÇÃO | ||
| ### Passo 1: [Nome do passo] | ||
| [Descrição precisa do que fazer. Inclua assinaturas de função/struct se crítico.] | ||
| ```[lang] | ||
| // Exemplo de padrão esperado | ||
| ``` | ||
| ### Passo 2: [Nome do passo] | ||
| [Descrição] | ||
| ### Passo 3: Testes | ||
| - [ ] Teste do caminho feliz (`should_[comportamento]_when_[condição]`) | ||
| - [ ] Teste de erro de validação (400 / erro de negócio) | ||
| - [ ] Teste de autorização (401 / 403 quando aplicável) | ||
| - [ ] Teste de edge case: [descrever] | ||
| --- | ||
| ## 5. CONSIDERAÇÕES DE SEGURANÇA | ||
| - [ ] **Input validation:** toda entrada do usuário validada no servidor antes de qualquer processamento | ||
| - [ ] **Autenticação / Autorização:** verificar se o usuário tem permissão sobre o *recurso específico*, não só sobre a rota | ||
| - [ ] **Dados sensíveis:** senhas, tokens e PII nunca aparecem em logs, responses de erro ou mensagens de exceção | ||
| - [ ] **SQL / Command Injection:** usar ORM / prepared statements; nunca concatenar strings em queries | ||
| - [ ] **Dependências novas:** se esta task adicionar uma dependência, verificar CVEs com `npm audit` / `cargo audit` / `pip-audit` antes de commitar | ||
| - [ ] **Segredo em código:** nenhum token, chave ou credencial hardcoded — sempre via variável de ambiente | ||
| --- | ||
| ## 6. VALIDATION GATES (RALPH LOOP) | ||
| Execute **todos** antes de marcar a task como DONE. Se qualquer um falhar, leia o erro, corrija e reexecute. | ||
| ```bash | ||
| # 1. Linting / Formatação | ||
| ./vendor/bin/pint | ||
| # 1. Build — sem erros de compilação | ||
| [comando de build da stack] | ||
| # 2. Análise Estática (se aplicável, ex: PHPStan/Larastan) | ||
| ./vendor/bin/phpstan analyse | ||
| # 2. Tests — todos passando, incluindo os novos | ||
| [comando de test] | ||
| # 3. Testes Unitários/Feature | ||
| php artisan test --filter=UserTest | ||
| # 3. Lint — sem warnings | ||
| [comando de lint] | ||
| # 4. Auditoria de dependências (se novas deps foram adicionadas nesta task) | ||
| [npm audit --audit-level=high | cargo audit | pip-audit | composer audit] | ||
| ``` | ||
| Se algum comando falhar, a IA deve ler o erro, consertar o código e rodar o comando novamente (Ralph Loop) até que todos os testes passem. | ||
| > **Gate de segurança obrigatório:** se esta task adicionar dependências externas, `[audit-cmd]` não pode retornar CVE de nível HIGH ou CRITICAL. | ||
| --- | ||
| ## 7. CRITÉRIOS DE DONE | ||
| - [ ] Todos os 4 validation gates passaram sem erros | ||
| - [ ] Testes cobrem caminho feliz + erros + edge cases da seção 4 | ||
| - [ ] Considerações de segurança da seção 5 todas checadas | ||
| - [ ] Arquivos listados na seção 3 criados/modificados conforme spec | ||
| - [ ] `DARE/TASKS.md` atualizado com status `DONE` | ||
| --- | ||
| ## 8. PRÓXIMA TASK SUGERIDA | ||
| `[task-id]` — [título] _(desbloqueada após conclusão desta task)_ |
| # Comando: /generate-blueprint | ||
| ## Descrição | ||
| Este comando avança o Método DARE para a fase Architect, lendo o Design aprovado e gerando a arquitetura completa de implementação. | ||
| Avança o DARE para a fase Architect: lê `DARE/DESIGN.md` aprovado e gera os 5 artefatos de arquitetura. | ||
| ## Instruções para o Cursor Composer | ||
| 1. **Leia o Documento Design:** Acesse e leia o arquivo `$ARGUMENTS` (geralmente `DARE/DESIGN.md`) que contém os requisitos do projeto. | ||
| 2. **Leia o Template:** Utilize a estrutura definida em `templates/BLUEPRINT-template.md`. | ||
| 3. **Analise o Contexto Global:** Leia o arquivo `.cursorrules` (ou equivalente) para entender as regras, convenções de nomenclatura e padrões de arquitetura exigidos pela stack do projeto. | ||
| 4. **Analise Exemplos:** Se houver arquivos na pasta `examples/`, analise-os para extrair os padrões de código esperados e incluí-los na seção "CÓDIGO-BASE / PADRÕES A SEGUIR". | ||
| 5. **Gere a Arquitetura (O Blueprint):** | ||
| - **Visão Geral:** Defina a arquitetura apropriada para o projeto (Monolito, Microserviços, Hexagonal, MVC). | ||
| - **Segurança (OWASP):** Adicione uma subseção explicando como as diretrizes da `skill-security.mdc` serão implementadas (ex: Bcrypt para senhas, Middlewares de Rate Limit, Validação estrita). | ||
| - **Modelo de Dados:** Projete o esquema completo do banco de dados (tabelas, campos, tipos, relacionamentos) e apresente em formato Markdown ou SQL simplificado. Certifique-se de que dados sensíveis estão protegidos. | ||
| - **Endpoints:** Liste todas as rotas da API necessárias com Request e Response esperados em uma tabela Markdown, incluindo as necessidades de Autenticação/Autorização. | ||
| - **Estrutura:** Esboce a árvore de diretórios dos arquivos que serão criados. | ||
| - **Plano de Execução:** Divida o projeto em Fases lógicas e sequenciais. A Fase 2 geralmente deve incluir o Setup de Segurança (Auth, Middlewares). | ||
| - **Comandos:** Liste comandos de setup (ex: migrations, composer install). | ||
| 6. **Salve o Arquivo:** Crie o arquivo `DARE/BLUEPRINT.md` com o conteúdo gerado. | ||
| 7. **Mensagem Final:** Informe ao usuário: "Documento BLUEPRINT.md gerado com sucesso. Por favor, revise a arquitetura e os endpoints. Quando estiver aprovado, execute `/generate-tasks DARE/BLUEPRINT.md`." | ||
| 1. **Leia `DARE/DESIGN.md`** — obrigatório. Se não existir, peça `/generate-design` primeiro. Extraia: stack, RF-*, RNF-*, RS-*, integrações, restrições. | ||
| 2. **Leia o template:** `templates/BLUEPRINT-template.md` — siga a estrutura fielmente. | ||
| 3. **Gere `DARE/BLUEPRINT.md`** com seções obrigatórias: | ||
| - **Visão Geral da Arquitetura** — diagrama Mermaid + tabela de decisões com justificativa | ||
| - **Stack Técnica Definida** — versões fixas (não ranges) | ||
| - **Estrutura de Pastas** — árvore completa dos arquivos a criar | ||
| - **Modelo de Dados** — entidades, campos tipados, relacionamentos, índices | ||
| - **Contratos de API** — método, rota, auth, request/response, status codes | ||
| - **Plano de Execução (Fases)** — cada fase com critério de DONE verificável: | ||
| - **Fase 1 = containerização** (Dockerfile + docker-compose + healthcheck) — sempre | ||
| - **Fase N-1 = auditoria de segurança + dependências** — sempre | ||
| - **Validation Gates por stack:** | ||
| | Stack | Build | Test | Lint/Audit | | ||
| |-------|-------|------|------------| | ||
| | Rust | `cargo build` | `cargo test --workspace` | `cargo clippy && cargo audit` | | ||
| | Node | `npm run build` | `npm test` | `npx eslint src && npm audit --audit-level=high` | | ||
| | Python | verificar imports | `pytest` | `ruff check . && pip-audit` | | ||
| | PHP | `php artisan config:cache` | `php artisan test` | `./vendor/bin/phpstan && composer audit` | | ||
| | Go | `go build ./...` | `go test ./...` | `golangci-lint run` | | ||
| - **Controles de Segurança** — checklist mapeando cada RS-* do DESIGN para tasks específicas | ||
| - **Estratégia de Testes** — unitários + integração + auditoria de deps + E2E | ||
| - **Estratégia de Deploy** — por ambiente | ||
| 4. **Gere `DARE/dare-dag.yaml`** com regras: | ||
| - `id` kebab-case único; `depends_on` mínimo necessário | ||
| - Pelo menos 2 tasks no rank 0 (paralelismo real) | ||
| - task-001 = containerização; task final = auditoria de segurança | ||
| - Sem task "Ralph Loop final" ou "QA geral" — corre em cada `--complete` | ||
| - `subtask_prompt` totalmente self-contained | ||
| 5. **Gere `DARE/TASKS.md`** (tabela de status visual) | ||
| 6. **Gere `DARE/EXECUTION/task-<id>.md`** para cada task usando `templates/TASK-SPEC-template.md`: | ||
| - Objetivo verificável (estado, não ação) | ||
| - Arquivos a criar/modificar (tabela) | ||
| - Seção "Considerações de Segurança" obrigatória | ||
| - Validation gates específicos da stack (build + test + lint + audit se nova dep) | ||
| 7. **Valide consistência** dos 5 artefatos (IDs, depends_on, complexity iguais nos 3) | ||
| 8. **Salve e informe:** _"Blueprint gerado com [N] tasks em [K] ranks paralelos. Revise especialmente: [lista de tasks HIGH complexity]. Quando aprovado, execute `dare execute --parallel`."_ |
| # Comando: /generate-design | ||
| ## Descrição | ||
| Este comando inicia o Método DARE (Design) gerando um documento de requisitos a partir de uma ideia inicial. | ||
| Inicia o Método DARE (fase Design) gerando `DARE/DESIGN.md` a partir de uma ideia inicial. | ||
| ## Instruções para o Cursor Composer | ||
| 1. **Leia a Ideia Inicial:** Analise o prompt fornecido pelo usuário (`$ARGUMENTS`) que descreve o que ele deseja construir. | ||
| 2. **Leia o Template:** Utilize a estrutura definida em `templates/DESIGN-template.md`. | ||
| 3. **Analise o Contexto Global:** Leia o arquivo `.cursorrules` (ou equivalente na pasta `.cursor/rules/`) para entender a stack técnica do projeto e preencher automaticamente a seção de STACK TÉCNICA. | ||
| 4. **Gere o Documento:** | ||
| - Preencha o template com as informações extraídas do prompt. | ||
| - Organize as funcionalidades de forma clara. | ||
| - Identifique possíveis requisitos técnicos implícitos e restrições. | ||
| - **Integre Requisitos de Segurança (OWASP):** Adicione obrigatoriamente requisitos de segurança na seção correspondente (ex: Rate Limiting, HTTPS, Proteção contra Força Bruta) baseando-se na skill `skill-security.mdc`. | ||
| - Defina claramente o que fica FORA DO ESCOPO para manter o foco da versão. | ||
| 5. **Salve o Arquivo:** Crie o arquivo `DARE/DESIGN.md` com o conteúdo gerado. | ||
| 6. **Mensagem Final:** Informe ao usuário: "Documento DESIGN.md gerado com sucesso. Por favor, revise e aprove o documento. Quando estiver pronto, execute `/generate-blueprint DARE/DESIGN.md`." | ||
| 1. **Leia o contexto:** `package.json` / `Cargo.toml` / `composer.json` / `go.mod` / `requirements.txt` para identificar a stack atual. Leia `.cursorrules` para entender padrões do projeto. Se `DARE/DESIGN.md` já existir, não sobrescreva sem aprovação explícita. | ||
| 2. **Leia o template:** `templates/DESIGN-template.md` — siga a estrutura fielmente. | ||
| 3. **Gere `DARE/DESIGN.md` com as seções obrigatórias:** | ||
| - **Descrição** — 3 a 5 frases: o que é, qual problema resolve, quem usa | ||
| - **Objetivos e Métricas de Sucesso** — tabela numerada (O-01, O-02…) com métrica verificável e meta numérica | ||
| - **Stakeholders** — tabela: papel, time, interesse principal | ||
| - **Requisitos Funcionais** — tabela numerada (RF-01, RF-02…) com prioridade MUST/SHOULD/COULD e critério de aceite | ||
| - **Requisitos Não-Funcionais** — tabela numerada (RNF-01…): performance, disponibilidade, segurança, observabilidade, manutenibilidade | ||
| - **Requisitos de Segurança** — tabela numerada (RS-01…). **Sempre inclua:** | ||
| - RS-01: validação de entrada no servidor (OWASP A03) | ||
| - RS-02: hash de senhas / proteção de dados sensíveis (OWASP A02) | ||
| - RS-03: controle de acesso por recurso (OWASP A01) | ||
| - RS-04: auditoria de dependências sem CVE HIGH/CRITICAL (OWASP A06) | ||
| - RS-05: secrets via variáveis de ambiente — nunca em código | ||
| - Requisitos específicos do domínio do projeto | ||
| - **Stack Técnica** — tabela por camada com versões fixas | ||
| - **Integrações Externas** — tabela: sistema, tipo, protocolo, direção, dados, responsável | ||
| - **Restrições** — prazo, orçamento, técnicas, compliance | ||
| - **Fora do Escopo (v1)** — lista explícita | ||
| - **Riscos e Mitigações** — tabela com probabilidade, impacto e mitigação concreta | ||
| - **Checklist de Aprovação** — checkboxes para revisão humana | ||
| 4. **Qualidade:** O DESIGN.md deve responder claramente: O QUÊ, POR QUÊ, PARA QUEM, O QUE NÃO e QUAIS RISCOS. Use "[A definir]" para informações não disponíveis, mas nunca omita seções. | ||
| 5. **Salve** `DARE/DESIGN.md` e informe: _"DESIGN.md gerado. Revise as seções, especialmente os Requisitos de Segurança (RS-*) e Riscos. Quando aprovado, execute `/generate-blueprint`."_ |
@@ -1,53 +0,193 @@ | ||
| # BLUEPRINT DE IMPLEMENTAÇÃO: [Nome do Projeto] | ||
| # BLUEPRINT: [Nome do Projeto] | ||
| > **Gerado a partir de:** `DARE/DESIGN.md` v[X.Y] | ||
| > **Data:** YYYY-MM-DD | **Status:** DRAFT → APROVADO | ||
| --- | ||
| ## 1. VISÃO GERAL DA ARQUITETURA | ||
| [Descrição da arquitetura do sistema: Monolito modular, Microserviços, Hexagonal, etc.] | ||
| [Diagrama em formato Mermaid se aplicável] | ||
| [Descrição da arquitetura: Monolito modular / Microserviços / Hexagonal / Clean Architecture] | ||
| ```mermaid | ||
| graph TD | ||
| A[Cliente] --> B[API Gateway / BFF] | ||
| B --> C[Auth Service] | ||
| B --> D[Core Service] | ||
| D --> E[(PostgreSQL)] | ||
| D --> F[(Redis)] | ||
| ``` | ||
| **Decisões arquiteturais principais:** | ||
| | Decisão | Escolha | Justificativa | | ||
| |---------|---------|---------------| | ||
| | Padrão de módulos | [ex: Hexagonal] | [motivo] | | ||
| | Comunicação inter-serviços | [ex: REST síncrono] | [motivo] | | ||
| | Autenticação | [ex: JWT stateless] | [motivo] | | ||
| --- | ||
| ## 2. STACK TÉCNICA DEFINIDA | ||
| - **Linguagem:** [ex: PHP 8.3] | ||
| - **Framework:** [ex: Laravel 11.x] | ||
| - **Banco de Dados:** [ex: PostgreSQL 16.x] | ||
| - **Pacotes Essenciais:** [Lista de dependências do composer/npm] | ||
| ## 3. MODELO DE DADOS | ||
| [Entidades principais, relacionamentos e tipos de dados] | ||
| [Exemplo de Migration Laravel ou Model Pydantic/Go Struct] | ||
| | Camada | Tecnologia | Versão | Papel | | ||
| |--------|-----------|--------|-------| | ||
| | Linguagem | | | | | ||
| | Framework | | | | | ||
| | Banco principal | | | | | ||
| | Cache / filas | | | | | ||
| | Frontend | | | | | ||
| | Container | Docker | latest | Dev + CI | | ||
| | Observabilidade | | | Logs, métricas, traces | | ||
| ## 4. ESTRUTURA DE PASTAS E ARQUIVOS | ||
| [Árvore de diretórios completa focando nos arquivos que serão criados/modificados] | ||
| --- | ||
| ## 3. ESTRUTURA DE PASTAS E ARQUIVOS | ||
| ```text | ||
| app/ | ||
| ├── Http/ | ||
| │ ├── Controllers/ | ||
| │ └── Requests/ | ||
| ├── Models/ | ||
| ├── Services/ | ||
| └── ... | ||
| [nome-do-projeto]/ | ||
| ├── [diretório principal]/ | ||
| │ ├── [módulo 1]/ | ||
| │ └── [módulo 2]/ | ||
| ├── DARE/ | ||
| │ ├── DESIGN.md | ||
| │ ├── BLUEPRINT.md | ||
| │ ├── TASKS.md | ||
| │ ├── dare-dag.yaml | ||
| │ └── EXECUTION/ | ||
| ├── Dockerfile | ||
| ├── docker-compose.yml | ||
| └── [arquivo de configuração principal] | ||
| ``` | ||
| ## 5. ENDPOINTS DA API | ||
| | Método | Endpoint | Controller@Method | Descrição | Request Body | Response | Auth | | ||
| |---|---|---|---|---|---|---| | ||
| | POST | /api/v1/users | UserController@store | Cria usuário | {name, email, pass} | {id, token} | Não | | ||
| | GET | /api/v1/users | UserController@index | Lista usuários | - | [{id, name}] | Sim | | ||
| > **Constraints de workspace (Rust):** se Cargo workspace, NÃO definir `[build] target` global no `.cargo/config.toml` (quebra crates WASM + native). Cada crate declara suas próprias features Leptos. | ||
| ## 6. CÓDIGO-BASE / PADRÕES A SEGUIR | ||
| [Trechos de código críticos que definem o padrão do projeto] | ||
| [Exemplo: Interface de repositório, FormRequest base, Trait de respostas de API] | ||
| --- | ||
| ## 7. PLANO DE EXECUÇÃO (FASES) | ||
| - **Fase 1:** Setup do projeto e Banco de Dados (Migrations/Seeds) | ||
| - **Fase 2:** Autenticação e Autorização (Middlewares/Policies) | ||
| - **Fase 3:** [Módulo Principal 1] | ||
| - **Fase 4:** [Módulo Principal 2] | ||
| - **Fase N:** Testes e Documentação | ||
| ## 4. MODELO DE DADOS | ||
| ## 8. COMANDOS DE SETUP | ||
| [Todos os comandos para rodar o projeto do zero, ex: docker-compose up, php artisan migrate, etc] | ||
| ### Entidades principais | ||
| ## 9. CRITÉRIOS DE SUCESSO GERAIS | ||
| - [ ] O código passa em todos os testes (`php artisan test`) | ||
| - [ ] Não há erros de linting (`./vendor/bin/pint`) | ||
| - [ ] A API responde conforme os endpoints definidos | ||
| - [ ] A documentação Swagger/OpenAPI está atualizada | ||
| ``` | ||
| [Entidade 1] | ||
| - id: UUID (PK) | ||
| - [campo]: [tipo] [restrições] | ||
| - created_at, updated_at | ||
| [Entidade 2] | ||
| - id: UUID (PK) | ||
| - [entidade_1_id]: FK → Entidade1 | ||
| ``` | ||
| ### Relacionamentos | ||
| | De | Para | Cardinalidade | Via | | ||
| |----|------|---------------|-----| | ||
| | [Entidade 1] | [Entidade 2] | 1:N | FK | | ||
| --- | ||
| ## 5. CONTRATOS DE API | ||
| | Método | Endpoint | Auth | Request Body | Response | Status codes | | ||
| |--------|----------|------|-------------|----------|--------------| | ||
| | POST | `/api/v1/[recurso]` | Não | `{campo1, campo2}` | `{id, ...}` | 201, 400, 422 | | ||
| | GET | `/api/v1/[recurso]` | JWT | — | `[{id, ...}]` | 200, 401 | | ||
| | GET | `/api/v1/[recurso]/:id` | JWT | — | `{id, ...}` | 200, 401, 404 | | ||
| | PUT | `/api/v1/[recurso]/:id` | JWT + Owner | `{campos}` | `{id, ...}` | 200, 401, 403, 404 | | ||
| | DELETE | `/api/v1/[recurso]/:id` | JWT + Admin | — | `{}` | 204, 401, 403, 404 | | ||
| --- | ||
| ## 6. PLANO DE EXECUÇÃO (FASES) | ||
| ### Fase 1: Containerização e Setup ← **SEMPRE PRIMEIRA** | ||
| **Critério de DONE:** `docker compose up -d` sobe sem erros; healthcheck `/health` retorna 200. | ||
| - Dockerfile multi-stage | ||
| - docker-compose.yml com todos os serviços | ||
| - Variáveis de ambiente via `.env.example` | ||
| ### Fase 2: Banco de Dados e Migrations | ||
| **Critério de DONE:** migrations rodando; schema validado; seeds de desenvolvimento funcionando. | ||
| - Migrations / schema inicial | ||
| - Seeds de desenvolvimento | ||
| - Índices para queries críticas | ||
| ### Fase 3: Autenticação e Autorização | ||
| **Critério de DONE:** login retorna JWT; endpoint protegido rejeita token inválido com 401; acesso sem permissão retorna 403. | ||
| - Registro, login, refresh, logout | ||
| - Middleware de autenticação | ||
| - Sistema de permissões (RBAC/ACL) | ||
| ### Fase 4: [Módulo de negócio principal] | ||
| **Critério de DONE:** [comportamento testável esperado]. | ||
| - [Descrever aqui] | ||
| ### Fase N-1: Auditoria de Segurança e Dependências | ||
| **Critério de DONE:** `[audit-cmd]` sem CVE HIGH/CRITICAL; security headers presentes; sem secrets em código. | ||
| - `npm audit --audit-level=high` / `cargo audit` / `pip-audit` / `composer audit` | ||
| - Headers HTTP de segurança (HSTS, CSP, X-Frame-Options) | ||
| - Scan de secrets no repositório | ||
| ### Fase N: Observabilidade e Documentação | ||
| **Critério de DONE:** logs estruturados em JSON; endpoint `/metrics` ou equivalente; documentação API gerada. | ||
| - Logs estruturados (JSON) com trace-id | ||
| - Métricas de negócio e técnicas | ||
| - Documentação API (OpenAPI / Swagger) | ||
| --- | ||
| ## 7. VALIDAÇÃO E SEGURANÇA | ||
| ### Validation Gates (Ralph Loop) por stack | ||
| | Stack | Build | Test | Lint/Audit | | ||
| |-------|-------|------|------------| | ||
| | Rust/Axum | `cargo build` | `cargo test --workspace` | `cargo clippy && cargo audit` | | ||
| | Node/NestJS | `npm run build` | `npm test` | `npx eslint src && npm audit --audit-level=high` | | ||
| | Python/FastAPI | `python -m py_compile` | `pytest` | `ruff check . && pip-audit` | | ||
| | PHP/Laravel | `php artisan config:cache` | `php artisan test` | `./vendor/bin/phpstan && composer audit` | | ||
| | Go | `go build ./...` | `go test ./...` | `golangci-lint run` | | ||
| ### Controles de segurança obrigatórios | ||
| - [ ] Rate limiting em endpoints de autenticação e públicos | ||
| - [ ] Input validation no servidor para todos os endpoints | ||
| - [ ] Dados sensíveis (PII, tokens, senhas) nunca em logs | ||
| - [ ] Todas as dependências sem CVE HIGH/CRITICAL (ver Fase N-1) | ||
| - [ ] HTTP Security Headers em produção | ||
| - [ ] Secrets apenas em variáveis de ambiente / vault | ||
| --- | ||
| ## 8. ESTRATÉGIA DE TESTES | ||
| | Tipo | Ferramenta | Cobertura mínima | O que cobre | | ||
| |------|-----------|------------------|-------------| | ||
| | Unitários | [jest/pytest/cargo test] | 80 % das funções críticas | Lógica de negócio isolada | | ||
| | Integração | [supertest/httpx/reqwest] | Todos os endpoints | Contrato da API | | ||
| | Segurança | [npm audit/cargo audit/pip-audit] | 100 % deps | CVEs conhecidos | | ||
| | E2E | [playwright/cypress] se frontend | Fluxo principal | Jornada do usuário | | ||
| --- | ||
| ## 9. ESTRATÉGIA DE DEPLOY | ||
| | Ambiente | Branch | Trigger | Infra | | ||
| |----------|--------|---------|-------| | ||
| | `dev` | `develop` | Push automático | [ex: Docker local / Railway] | | ||
| | `staging` | `main` | PR merge | [ex: OKE / ECS / Fly.io] | | ||
| | `prod` | tag `v*.*.*` | Manual | [ex: OKE / ECS / Fly.io] | | ||
| --- | ||
| ## 10. CHECKLIST DE APROVAÇÃO DO BLUEPRINT | ||
| - [ ] Arquitetura revisada e aprovada | ||
| - [ ] Modelo de dados validado | ||
| - [ ] Contratos de API definidos e completos | ||
| - [ ] Fases com critérios de DONE claros | ||
| - [ ] Validation gates por stack definidos | ||
| - [ ] Controles de segurança mapeados | ||
| - [ ] Estratégia de testes cobrindo todos os tipos | ||
| - [ ] DAG de tasks gerado (`dare-dag.yaml`) |
@@ -1,34 +0,129 @@ | ||
| # PROJETO: [Nome do Projeto] | ||
| # DESIGN: [Nome do Projeto / Feature] | ||
| ## DESCRIÇÃO | ||
| [O que é o sistema em 2-3 frases claras e objetivas] | ||
| > **Versão:** v1.0 | **Data:** YYYY-MM-DD | **Status:** DRAFT → APROVADO | ||
| ## FUNCIONALIDADES | ||
| - [Funcionalidade 1: descrição detalhada] | ||
| - [Funcionalidade 2: descrição detalhada] | ||
| - [...] | ||
| --- | ||
| ## STACK TÉCNICA | ||
| - **Linguagem:** [ex: PHP 8.3] | ||
| - **Framework:** [ex: Laravel 11] | ||
| - **Banco de Dados:** [ex: PostgreSQL 16] | ||
| - **Frontend:** [ex: Vue.js 3 / Nuxt] | ||
| - **Outros:** [ex: Redis, S3] | ||
| ## 1. DESCRIÇÃO | ||
| ## REQUISITOS TÉCNICOS E DE NEGÓCIO | ||
| - [Requisito 1: ex. API deve responder em menos de 200ms] | ||
| - [Requisito 2: ex. Autenticação via JWT (Sanctum)] | ||
| - [Requisito 3: ex. Cobertura de testes unitários > 80%] | ||
| [O que é o sistema e qual problema ele resolve — 3 a 5 frases claras e objetivas. Evite jargão.] | ||
| ## INTEGRAÇÕES | ||
| - [Integração 1: ex. Stripe para pagamentos (link da doc)] | ||
| - [Integração 2: ex. AWS S3 para armazenamento de arquivos] | ||
| --- | ||
| ## RESTRIÇÕES | ||
| - **Prazo:** [Data limite ou restrição de tempo] | ||
| - **Orçamento:** [Limitações de custo com infra/APIs] | ||
| - **Limitações Técnicas:** [ex. Não pode usar banco NoSQL] | ||
| ## 2. OBJETIVOS E MÉTRICAS DE SUCESSO | ||
| ## FORA DO ESCOPO | ||
| - [O que NÃO será feito nesta versão] | ||
| - [Funcionalidades adiadas para v2] | ||
| | # | Objetivo | Métrica verificável | Meta | | ||
| |---|----------|---------------------|------| | ||
| | O-01 | [ex: Reduzir tempo de resposta da API] | p99 latência em produção | < 200 ms | | ||
| | O-02 | [ex: Aumentar cobertura de testes] | `coverage --summary` | > 80 % | | ||
| | O-03 | | | | | ||
| --- | ||
| ## 3. STAKEHOLDERS | ||
| | Papel | Nome / Time | Interesse principal | | ||
| |-------|-------------|---------------------| | ||
| | Product Owner | | Aprovação de scope e prioridades | | ||
| | Tech Lead | | Decisões arquiteturais | | ||
| | Usuário Final | | [Persona] — [necessidade] | | ||
| | Operações / SRE | | SLA, alertas, deploys | | ||
| --- | ||
| ## 4. REQUISITOS FUNCIONAIS | ||
| | ID | Requisito | Prioridade | Critério de aceite | | ||
| |----|-----------|------------|--------------------| | ||
| | RF-01 | | MUST | | | ||
| | RF-02 | | SHOULD | | | ||
| | RF-03 | | COULD | | | ||
| > Prioridades: **MUST** (bloqueia v1) · **SHOULD** (importante, mas não bloqueia) · **COULD** (nice to have) | ||
| --- | ||
| ## 5. REQUISITOS NÃO-FUNCIONAIS | ||
| | ID | Categoria | Requisito | Meta | | ||
| |----|-----------|-----------|------| | ||
| | RNF-01 | Performance | [ex: API responde dentro do SLA] | p95 < 500 ms | | ||
| | RNF-02 | Disponibilidade | [ex: uptime mensal] | ≥ 99,5 % | | ||
| | RNF-03 | Segurança | Autenticação obrigatória em todos os endpoints sensíveis | JWT + refresh | | ||
| | RNF-04 | Segurança | Rate limiting em endpoints públicos | ≤ 60 req/min/IP | | ||
| | RNF-05 | Segurança | Dados sensíveis (PII, tokens) nunca em logs | auditoria automática | | ||
| | RNF-06 | Observabilidade | Logs estruturados (JSON) com trace-id | OpenTelemetry | | ||
| | RNF-07 | Manutenibilidade | Cobertura de testes | > 80 % | | ||
| --- | ||
| ## 6. REQUISITOS DE SEGURANÇA | ||
| | ID | Requisito | Referência | | ||
| |----|-----------|------------| | ||
| | RS-01 | Todas as entradas do usuário validadas no servidor antes de qualquer processamento | OWASP A03 | | ||
| | RS-02 | Senhas e segredos nunca armazenados em texto plano; hash Argon2/Bcrypt | OWASP A02 | | ||
| | RS-03 | Controle de acesso verificado por recurso (não só por rota) | OWASP A01 | | ||
| | RS-04 | Dependências auditadas antes de cada release (sem CVE HIGH/CRITICAL) | OWASP A06 | | ||
| | RS-05 | Segredos gerenciados via variáveis de ambiente / vault — nunca em código | Supply chain | | ||
| | RS-06 | [Requisito específico do domínio] | | | ||
| --- | ||
| ## 7. STACK TÉCNICA | ||
| | Camada | Tecnologia | Versão | | ||
| |--------|-----------|--------| | ||
| | Linguagem / Runtime | | | | ||
| | Framework principal | | | | ||
| | Banco de dados | | | | ||
| | Cache | | | | ||
| | Frontend | | | | ||
| | Infra / deploy | | | | ||
| | Observabilidade | | | | ||
| --- | ||
| ## 8. INTEGRAÇÕES EXTERNAS | ||
| | Sistema | Tipo | Protocolo | Direção | Dados trocados | Responsável | | ||
| |---------|------|-----------|---------|----------------|-------------| | ||
| | [ex: Stripe] | Pagamento | REST/webhook | Saída + entrada | Cobrança, confirmação | Time Pagamentos | | ||
| | [ex: Auth0] | IdP | OIDC | Entrada | ID Token, Claims | Time Auth | | ||
| --- | ||
| ## 9. RESTRIÇÕES | ||
| - **Prazo:** [Data de entrega ou milestone] | ||
| - **Orçamento de infra:** [Limite de custo mensal ou por request] | ||
| - **Limitações técnicas:** [ex: não pode usar banco NoSQL; deve usar Go ≥ 1.22] | ||
| - **Regulatórias / Compliance:** [ex: LGPD, GDPR, SOC 2, PCI-DSS se aplicável] | ||
| --- | ||
| ## 10. FORA DO ESCOPO (v1) | ||
| - [Funcionalidade adiada para v2 — e o motivo] | ||
| - [Caso de uso que NÃO será tratado nesta versão] | ||
| --- | ||
| ## 11. RISCOS E MITIGAÇÕES | ||
| | # | Risco | Probabilidade | Impacto | Mitigação | | ||
| |---|-------|---------------|---------|-----------| | ||
| | R-01 | [ex: Latência alta no serviço de terceiros] | Média | Alto | Circuit breaker + fallback | | ||
| | R-02 | [ex: Falta de dados históricos para ML] | Alta | Médio | Dataset sintético inicial | | ||
| | R-03 | | | | | | ||
| --- | ||
| ## 12. CHECKLIST DE APROVAÇÃO | ||
| - [ ] Requisitos funcionais revisados e priorizados | ||
| - [ ] Requisitos de segurança validados pelo Tech Lead | ||
| - [ ] Stack técnica aprovada | ||
| - [ ] Integrações externas confirmadas com responsáveis | ||
| - [ ] Fora do escopo alinhado com Product Owner | ||
| - [ ] Riscos críticos com mitigação definida |
@@ -1,43 +0,100 @@ | ||
| # ESPECIFICAÇÃO DE TAREFA: [ID da Task, ex: task-001] | ||
| # TASK [ID]: [Título da Task] | ||
| ## OBJETIVO DA TAREFA | ||
| [Descrição concisa do que precisa ser implementado, ex: Criar o Model, Migration e Factory para a entidade Usuário.] | ||
| > **Complexidade:** LOW / MED / HIGH | ||
| > **Depends on:** [task-ids ou —] | ||
| > **Estimativa:** [X horas] | ||
| ## CONTEXTO E DEPENDÊNCIAS | ||
| - **Fase:** [Nome da Fase] | ||
| - **Depende de:** [ID de tasks anteriores, ex: Nenhuma / task-000] | ||
| - **Arquivos Relacionados Existentes:** [Arquivos que servem de base ou serão modificados, ex: `app/Models/User.php`] | ||
| --- | ||
| ## ESPECIFICAÇÃO DE IMPLEMENTAÇÃO (O QUE FAZER) | ||
| [Instruções detalhadas passo a passo para a IA Executora] | ||
| ## 1. OBJETIVO | ||
| 1. **[Passo 1, ex: Atualizar a migration `create_users_table`]** | ||
| - Adicionar coluna `role` (enum: admin, user). | ||
| - Adicionar coluna `is_active` (boolean, default true). | ||
| [Uma frase precisa do que esta task entrega. Deve ser verificável — termine com um estado observável, não uma ação.] | ||
| 2. **[Passo 2, ex: Atualizar o Model `User`]** | ||
| - Adicionar campos ao `$fillable`. | ||
| - Criar os casts corretos. | ||
| Exemplo: _"Ao final desta task, o endpoint `POST /api/v1/users` aceita cadastro, valida unicidade de e-mail e retorna JWT."_ | ||
| 3. **[Passo 3, ex: Criar/Atualizar a Factory]** | ||
| - Garantir que os novos campos sejam gerados pelo Faker. | ||
| --- | ||
| ## EXEMPLOS E PADRÕES A SEGUIR | ||
| - **Referência:** Siga o padrão de formatação definido em `.cursorrules`. | ||
| - **Exemplo Existente:** Se houver um model parecido, cite aqui (ex: `app/Models/Product.php`). | ||
| ## 2. CONTEXTO | ||
| ## CRITÉRIOS DE SUCESSO (VALIDATION GATES) | ||
| Estes comandos DEVEM ser executados pela IA para validar a implementação antes de concluir a tarefa. | ||
| - **Fase no BLUEPRINT:** Fase [N] — [Nome da fase] | ||
| - **Arquivos existentes relevantes:** [caminhos de arquivos que servem de referência ou serão modificados] | ||
| - **Decisões do BLUEPRINT que afetam esta task:** [cite seção/decisão específica] | ||
| --- | ||
| ## 3. ARQUIVOS A CRIAR / MODIFICAR | ||
| | Ação | Caminho | Descrição | | ||
| |------|---------|-----------| | ||
| | CRIAR | `src/[módulo]/[arquivo]` | [o que contém] | | ||
| | MODIFICAR | `src/[módulo]/[arquivo]` | [o que muda] | | ||
| | CRIAR | `tests/[arquivo].test.[ext]` | Testes da feature | | ||
| --- | ||
| ## 4. IMPLEMENTAÇÃO | ||
| ### Passo 1: [Nome do passo] | ||
| [Descrição precisa do que fazer. Inclua assinaturas de função/struct se crítico.] | ||
| ```[lang] | ||
| // Exemplo de padrão esperado | ||
| ``` | ||
| ### Passo 2: [Nome do passo] | ||
| [Descrição] | ||
| ### Passo 3: Testes | ||
| - [ ] Teste do caminho feliz (`should_[comportamento]_when_[condição]`) | ||
| - [ ] Teste de erro de validação (400 / erro de negócio) | ||
| - [ ] Teste de autorização (401 / 403 quando aplicável) | ||
| - [ ] Teste de edge case: [descrever] | ||
| --- | ||
| ## 5. CONSIDERAÇÕES DE SEGURANÇA | ||
| - [ ] **Input validation:** toda entrada do usuário validada no servidor antes de qualquer processamento | ||
| - [ ] **Autenticação / Autorização:** verificar se o usuário tem permissão sobre o *recurso específico*, não só sobre a rota | ||
| - [ ] **Dados sensíveis:** senhas, tokens e PII nunca aparecem em logs, responses de erro ou mensagens de exceção | ||
| - [ ] **SQL / Command Injection:** usar ORM / prepared statements; nunca concatenar strings em queries | ||
| - [ ] **Dependências novas:** se esta task adicionar uma dependência, verificar CVEs com `npm audit` / `cargo audit` / `pip-audit` antes de commitar | ||
| - [ ] **Segredo em código:** nenhum token, chave ou credencial hardcoded — sempre via variável de ambiente | ||
| --- | ||
| ## 6. VALIDATION GATES (RALPH LOOP) | ||
| Execute **todos** antes de marcar a task como DONE. Se qualquer um falhar, leia o erro, corrija e reexecute. | ||
| ```bash | ||
| # 1. Linting / Formatação | ||
| ./vendor/bin/pint | ||
| # 1. Build — sem erros de compilação | ||
| [comando de build da stack] | ||
| # 2. Análise Estática (se aplicável, ex: PHPStan/Larastan) | ||
| ./vendor/bin/phpstan analyse | ||
| # 2. Tests — todos passando, incluindo os novos | ||
| [comando de test] | ||
| # 3. Testes Unitários/Feature | ||
| php artisan test --filter=UserTest | ||
| # 3. Lint — sem warnings | ||
| [comando de lint] | ||
| # 4. Auditoria de dependências (se novas deps foram adicionadas nesta task) | ||
| [npm audit --audit-level=high | cargo audit | pip-audit | composer audit] | ||
| ``` | ||
| Se algum comando falhar, a IA deve ler o erro, consertar o código e rodar o comando novamente (Ralph Loop) até que todos os testes passem. | ||
| > **Gate de segurança obrigatório:** se esta task adicionar dependências externas, `[audit-cmd]` não pode retornar CVE de nível HIGH ou CRITICAL. | ||
| --- | ||
| ## 7. CRITÉRIOS DE DONE | ||
| - [ ] Todos os 4 validation gates passaram sem erros | ||
| - [ ] Testes cobrem caminho feliz + erros + edge cases da seção 4 | ||
| - [ ] Considerações de segurança da seção 5 todas checadas | ||
| - [ ] Arquivos listados na seção 3 criados/modificados conforme spec | ||
| - [ ] `DARE/TASKS.md` atualizado com status `DONE` | ||
| --- | ||
| ## 8. PRÓXIMA TASK SUGERIDA | ||
| `[task-id]` — [título] _(desbloqueada após conclusão desta task)_ |
Sorry, the diff of this file is not supported yet
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
933575
6.72%323
0.31%8926
1.48%552
0.18%