@dewtech/dare-cli 2.16.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +196 -3
- package/dist/__tests__/confidence.test.d.ts +2 -0
- package/dist/__tests__/confidence.test.d.ts.map +1 -0
- package/dist/__tests__/confidence.test.js +73 -0
- package/dist/__tests__/confidence.test.js.map +1 -0
- package/dist/__tests__/datamodel.test.d.ts +2 -0
- package/dist/__tests__/datamodel.test.d.ts.map +1 -0
- package/dist/__tests__/datamodel.test.js +131 -0
- package/dist/__tests__/datamodel.test.js.map +1 -0
- package/dist/__tests__/dna-detector.test.d.ts +2 -0
- package/dist/__tests__/dna-detector.test.d.ts.map +1 -0
- package/dist/__tests__/dna-detector.test.js +97 -0
- package/dist/__tests__/dna-detector.test.js.map +1 -0
- package/dist/__tests__/dna-facts.test.d.ts +2 -0
- package/dist/__tests__/dna-facts.test.d.ts.map +1 -0
- package/dist/__tests__/dna-facts.test.js +44 -0
- package/dist/__tests__/dna-facts.test.js.map +1 -0
- package/dist/__tests__/graph-renderer.test.d.ts +2 -0
- package/dist/__tests__/graph-renderer.test.d.ts.map +1 -0
- package/dist/__tests__/graph-renderer.test.js +85 -0
- package/dist/__tests__/graph-renderer.test.js.map +1 -0
- package/dist/__tests__/migration.test.d.ts +2 -0
- package/dist/__tests__/migration.test.d.ts.map +1 -0
- package/dist/__tests__/migration.test.js +77 -0
- package/dist/__tests__/migration.test.js.map +1 -0
- package/dist/__tests__/module-detector.test.d.ts +2 -0
- package/dist/__tests__/module-detector.test.d.ts.map +1 -0
- package/dist/__tests__/module-detector.test.js +83 -0
- package/dist/__tests__/module-detector.test.js.map +1 -0
- package/dist/__tests__/refine.test.d.ts +2 -0
- package/dist/__tests__/refine.test.d.ts.map +1 -0
- package/dist/__tests__/refine.test.js +186 -0
- package/dist/__tests__/refine.test.js.map +1 -0
- package/dist/__tests__/reverse-facts.test.d.ts +2 -0
- package/dist/__tests__/reverse-facts.test.d.ts.map +1 -0
- package/dist/__tests__/reverse-facts.test.js +78 -0
- package/dist/__tests__/reverse-facts.test.js.map +1 -0
- package/dist/__tests__/review.test.d.ts +2 -0
- package/dist/__tests__/review.test.d.ts.map +1 -0
- package/dist/__tests__/review.test.js +242 -0
- package/dist/__tests__/review.test.js.map +1 -0
- package/dist/__tests__/update.test.d.ts +2 -0
- package/dist/__tests__/update.test.d.ts.map +1 -0
- package/dist/__tests__/update.test.js +150 -0
- package/dist/__tests__/update.test.js.map +1 -0
- package/dist/__tests__/validate.test.js +65 -65
- package/dist/bin/dare.js +38 -3
- package/dist/bin/dare.js.map +1 -1
- package/dist/commands/blueprint.js +122 -122
- package/dist/commands/dag.d.ts.map +1 -1
- package/dist/commands/dag.js +43 -79
- package/dist/commands/dag.js.map +1 -1
- package/dist/commands/dna.d.ts +3 -0
- package/dist/commands/dna.d.ts.map +1 -0
- package/dist/commands/dna.js +69 -0
- package/dist/commands/dna.js.map +1 -0
- package/dist/commands/execute.d.ts.map +1 -1
- package/dist/commands/execute.js +76 -0
- package/dist/commands/execute.js.map +1 -1
- package/dist/commands/migrate.d.ts +3 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +101 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/new.d.ts +16 -0
- package/dist/commands/new.d.ts.map +1 -0
- package/dist/commands/new.js +103 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/refine.d.ts +16 -0
- package/dist/commands/refine.d.ts.map +1 -0
- package/dist/commands/refine.js +167 -0
- package/dist/commands/refine.js.map +1 -0
- package/dist/commands/reverse.d.ts +3 -0
- package/dist/commands/reverse.d.ts.map +1 -0
- package/dist/commands/reverse.js +201 -0
- package/dist/commands/reverse.js.map +1 -0
- package/dist/commands/review.d.ts +16 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +106 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/update.d.ts +13 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +149 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/welcome.d.ts +14 -0
- package/dist/commands/welcome.d.ts.map +1 -0
- package/dist/commands/welcome.js +29 -0
- package/dist/commands/welcome.js.map +1 -0
- package/dist/skills/commands/add.d.ts +23 -0
- package/dist/skills/commands/add.d.ts.map +1 -0
- package/dist/skills/commands/add.js +206 -0
- package/dist/skills/commands/add.js.map +1 -0
- package/dist/skills/commands/info.d.ts +14 -0
- package/dist/skills/commands/info.d.ts.map +1 -0
- package/dist/skills/commands/info.js +99 -0
- package/dist/skills/commands/info.js.map +1 -0
- package/dist/skills/commands/list.d.ts +19 -0
- package/dist/skills/commands/list.d.ts.map +1 -0
- package/dist/skills/commands/list.js +163 -0
- package/dist/skills/commands/list.js.map +1 -0
- package/dist/skills/commands/publish.d.ts +56 -0
- package/dist/skills/commands/publish.d.ts.map +1 -0
- package/dist/skills/commands/publish.js +272 -0
- package/dist/skills/commands/publish.js.map +1 -0
- package/dist/skills/commands/remove.d.ts +19 -0
- package/dist/skills/commands/remove.d.ts.map +1 -0
- package/dist/skills/commands/remove.js +96 -0
- package/dist/skills/commands/remove.js.map +1 -0
- package/dist/skills/commands/update.d.ts +31 -0
- package/dist/skills/commands/update.d.ts.map +1 -0
- package/dist/skills/commands/update.js +132 -0
- package/dist/skills/commands/update.js.map +1 -0
- package/dist/skills/index.d.ts +22 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +33 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/manifest.d.ts +54 -0
- package/dist/skills/manifest.d.ts.map +1 -0
- package/dist/skills/manifest.js +162 -0
- package/dist/skills/manifest.js.map +1 -0
- package/dist/skills/registry-local.d.ts +67 -0
- package/dist/skills/registry-local.d.ts.map +1 -0
- package/dist/skills/registry-local.js +130 -0
- package/dist/skills/registry-local.js.map +1 -0
- package/dist/skills/registry-mock.json +109 -0
- package/dist/skills/registry-remote.d.ts +110 -0
- package/dist/skills/registry-remote.d.ts.map +1 -0
- package/dist/skills/registry-remote.js +246 -0
- package/dist/skills/registry-remote.js.map +1 -0
- package/dist/skills/registry.d.ts +49 -0
- package/dist/skills/registry.d.ts.map +1 -0
- package/dist/skills/registry.js +94 -0
- package/dist/skills/registry.js.map +1 -0
- package/dist/skills/tests/manifest.spec.d.ts +8 -0
- package/dist/skills/tests/manifest.spec.d.ts.map +1 -0
- package/dist/skills/tests/manifest.spec.js +176 -0
- package/dist/skills/tests/manifest.spec.js.map +1 -0
- package/dist/skills/tests/publish.spec.d.ts +12 -0
- package/dist/skills/tests/publish.spec.d.ts.map +1 -0
- package/dist/skills/tests/publish.spec.js +276 -0
- package/dist/skills/tests/publish.spec.js.map +1 -0
- package/dist/skills/tests/registry-local.spec.d.ts +8 -0
- package/dist/skills/tests/registry-local.spec.d.ts.map +1 -0
- package/dist/skills/tests/registry-local.spec.js +231 -0
- package/dist/skills/tests/registry-local.spec.js.map +1 -0
- package/dist/skills/tests/registry.spec.d.ts +7 -0
- package/dist/skills/tests/registry.spec.d.ts.map +1 -0
- package/dist/skills/tests/registry.spec.js +58 -0
- package/dist/skills/tests/registry.spec.js.map +1 -0
- package/dist/skills/tests/remote-registry.spec.d.ts +9 -0
- package/dist/skills/tests/remote-registry.spec.d.ts.map +1 -0
- package/dist/skills/tests/remote-registry.spec.js +357 -0
- package/dist/skills/tests/remote-registry.spec.js.map +1 -0
- package/dist/skills/tests/update.spec.d.ts +9 -0
- package/dist/skills/tests/update.spec.d.ts.map +1 -0
- package/dist/skills/tests/update.spec.js +166 -0
- package/dist/skills/tests/update.spec.js.map +1 -0
- package/dist/types/Refine.types.d.ts +96 -0
- package/dist/types/Refine.types.d.ts.map +1 -0
- package/dist/types/Refine.types.js +19 -0
- package/dist/types/Refine.types.js.map +1 -0
- package/dist/types/Review.types.d.ts +86 -0
- package/dist/types/Review.types.d.ts.map +1 -0
- package/dist/types/Review.types.js +15 -0
- package/dist/types/Review.types.js.map +1 -0
- package/dist/types/UpdateManifest.types.d.ts +91 -0
- package/dist/types/UpdateManifest.types.d.ts.map +1 -0
- package/dist/types/UpdateManifest.types.js +13 -0
- package/dist/types/UpdateManifest.types.js.map +1 -0
- package/dist/utils/ReviewRunner.d.ts +42 -0
- package/dist/utils/ReviewRunner.d.ts.map +1 -0
- package/dist/utils/ReviewRunner.js +175 -0
- package/dist/utils/ReviewRunner.js.map +1 -0
- package/dist/utils/UpdateApplier.d.ts +42 -0
- package/dist/utils/UpdateApplier.d.ts.map +1 -0
- package/dist/utils/UpdateApplier.js +207 -0
- package/dist/utils/UpdateApplier.js.map +1 -0
- package/dist/utils/UpdateDetector.d.ts +56 -0
- package/dist/utils/UpdateDetector.d.ts.map +1 -0
- package/dist/utils/UpdateDetector.js +164 -0
- package/dist/utils/UpdateDetector.js.map +1 -0
- package/dist/utils/banner.d.ts +28 -0
- package/dist/utils/banner.d.ts.map +1 -0
- package/dist/utils/banner.js +77 -0
- package/dist/utils/banner.js.map +1 -0
- package/dist/utils/banner.spec.d.ts +5 -0
- package/dist/utils/banner.spec.d.ts.map +1 -0
- package/dist/utils/banner.spec.js +253 -0
- package/dist/utils/banner.spec.js.map +1 -0
- package/dist/utils/complexity-analyzer.d.ts +60 -0
- package/dist/utils/complexity-analyzer.d.ts.map +1 -0
- package/dist/utils/complexity-analyzer.js +292 -0
- package/dist/utils/complexity-analyzer.js.map +1 -0
- package/dist/utils/confidence.d.ts +41 -0
- package/dist/utils/confidence.d.ts.map +1 -0
- package/dist/utils/confidence.js +101 -0
- package/dist/utils/confidence.js.map +1 -0
- package/dist/utils/datamodel.d.ts +41 -0
- package/dist/utils/datamodel.d.ts.map +1 -0
- package/dist/utils/datamodel.js +535 -0
- package/dist/utils/datamodel.js.map +1 -0
- package/dist/utils/dna-detector.d.ts +61 -0
- package/dist/utils/dna-detector.d.ts.map +1 -0
- package/dist/utils/dna-detector.js +354 -0
- package/dist/utils/dna-detector.js.map +1 -0
- package/dist/utils/dna-facts.d.ts +13 -0
- package/dist/utils/dna-facts.d.ts.map +1 -0
- package/dist/utils/dna-facts.js +109 -0
- package/dist/utils/dna-facts.js.map +1 -0
- package/dist/utils/excalidraw-renderer.d.ts +11 -71
- package/dist/utils/excalidraw-renderer.d.ts.map +1 -1
- package/dist/utils/excalidraw-renderer.js +29 -162
- package/dist/utils/excalidraw-renderer.js.map +1 -1
- package/dist/utils/graph-renderer.d.ts +115 -0
- package/dist/utils/graph-renderer.d.ts.map +1 -0
- package/dist/utils/graph-renderer.js +216 -0
- package/dist/utils/graph-renderer.js.map +1 -0
- package/dist/utils/migration.d.ts +64 -0
- package/dist/utils/migration.d.ts.map +1 -0
- package/dist/utils/migration.js +183 -0
- package/dist/utils/migration.js.map +1 -0
- package/dist/utils/module-detector.d.ts +46 -0
- package/dist/utils/module-detector.d.ts.map +1 -0
- package/dist/utils/module-detector.js +348 -0
- package/dist/utils/module-detector.js.map +1 -0
- package/dist/utils/project-generator.d.ts.map +1 -1
- package/dist/utils/project-generator.js +273 -254
- package/dist/utils/project-generator.js.map +1 -1
- package/dist/utils/reverse-facts.d.ts +50 -0
- package/dist/utils/reverse-facts.d.ts.map +1 -0
- package/dist/utils/reverse-facts.js +291 -0
- package/dist/utils/reverse-facts.js.map +1 -0
- package/dist/utils/stack-bootstrap.js +371 -371
- package/dist/utils/static-analyzer.d.ts +29 -0
- package/dist/utils/static-analyzer.d.ts.map +1 -0
- package/dist/utils/static-analyzer.js +390 -0
- package/dist/utils/static-analyzer.js.map +1 -0
- package/dist/utils/version-compare.d.ts +27 -0
- package/dist/utils/version-compare.d.ts.map +1 -0
- package/dist/utils/version-compare.js +47 -0
- package/dist/utils/version-compare.js.map +1 -0
- package/package.json +8 -3
- package/templates/DARE-dag-example.yaml +280 -280
- package/templates/UPDATE-MANIFEST.json +48 -0
- package/templates/backend/node-nestjs/.env.example +9 -9
- package/templates/backend/node-nestjs/nest-cli.json +8 -8
- package/templates/backend/node-nestjs/package.json +50 -50
- package/templates/backend/node-nestjs/src/app.controller.ts +12 -12
- package/templates/backend/node-nestjs/src/app.module.ts +15 -15
- package/templates/backend/node-nestjs/src/app.service.ts +8 -8
- package/templates/backend/node-nestjs/src/main.ts +24 -24
- package/templates/backend/node-nestjs/tsconfig.json +21 -21
- package/templates/backend/php-laravel/.env.example +22 -22
- package/templates/backend/php-laravel/app/Http/Controllers/HealthController.php +15 -15
- package/templates/backend/php-laravel/composer.json +40 -40
- package/templates/backend/python-fastapi/.env.example +4 -4
- package/templates/backend/python-fastapi/app/api/router.py +8 -8
- package/templates/backend/python-fastapi/app/core/config.py +20 -20
- package/templates/backend/python-fastapi/main.py +35 -35
- package/templates/backend/python-fastapi/requirements.txt +13 -13
- package/templates/backend/rust-axum/.env.example +3 -3
- package/templates/backend/rust-axum/Cargo.toml +23 -23
- package/templates/backend/rust-axum/src/errors.rs +30 -30
- package/templates/backend/rust-axum/src/main.rs +32 -32
- package/templates/backend/rust-axum/src/routes.rs +6 -6
- package/templates/frontend/leptos-csr/.cargo/config.toml +2 -2
- package/templates/frontend/leptos-csr/Cargo.toml +16 -16
- package/templates/frontend/leptos-csr/Trunk.toml +10 -10
- package/templates/frontend/leptos-csr/index.html +11 -11
- package/templates/frontend/leptos-csr/src/lib.rs +20 -20
- package/templates/frontend/leptos-csr/style/main.scss +19 -19
- package/templates/frontend/leptos-fullstack/.cargo/config.toml +4 -4
- package/templates/frontend/leptos-fullstack/Cargo.toml +56 -56
- package/templates/frontend/leptos-fullstack/src/app.rs +49 -49
- package/templates/frontend/leptos-fullstack/src/lib.rs +9 -9
- package/templates/frontend/leptos-fullstack/src/main.rs +29 -29
- package/templates/frontend/leptos-fullstack/style/main.scss +19 -19
- package/templates/frontend/react/index.html +12 -12
- package/templates/frontend/react/package.json +35 -35
- package/templates/frontend/react/src/App.tsx +25 -25
- package/templates/frontend/react/src/main.tsx +9 -9
- package/templates/frontend/vue/package.json +32 -32
- package/templates/frontend/vue/src/App.vue +7 -7
- package/templates/frontend/vue/src/main.ts +10 -10
- package/templates/frontend/vue/src/router/index.ts +14 -14
- package/templates/frontend/vue/src/views/HomeView.vue +6 -6
- package/templates/hooks/pre-commit-dare-validate +24 -24
- package/templates/ide/antigravity/.agents/skills/dare-ax/SKILL.md +152 -0
- package/templates/ide/antigravity/.agents/skills/dare-blueprint/SKILL.md +180 -36
- package/templates/ide/antigravity/.agents/skills/dare-dag-build/SKILL.md +154 -0
- package/templates/ide/antigravity/.agents/skills/dare-dag-run/SKILL.md +130 -0
- package/templates/ide/antigravity/.agents/skills/dare-dag-runner/SKILL.md +203 -203
- package/templates/ide/antigravity/.agents/skills/dare-dna/SKILL.md +63 -0
- package/templates/ide/antigravity/.agents/skills/dare-docker/SKILL.md +315 -0
- package/templates/ide/antigravity/.agents/skills/dare-frontend-design/SKILL.md +192 -0
- package/templates/ide/antigravity/.agents/skills/dare-laravel-api/SKILL.md +337 -0
- package/templates/ide/antigravity/.agents/skills/dare-layered-design/SKILL.md +166 -0
- package/templates/ide/antigravity/.agents/skills/dare-llm-integration/SKILL.md +217 -0
- package/templates/ide/antigravity/.agents/skills/dare-migrate/SKILL.md +61 -0
- package/templates/ide/antigravity/.agents/skills/dare-quality-telemetry/SKILL.md +187 -0
- package/templates/ide/antigravity/.agents/skills/dare-realtime/SKILL.md +217 -0
- package/templates/ide/antigravity/.agents/skills/dare-refine/SKILL.md +114 -0
- package/templates/ide/antigravity/.agents/skills/dare-reverse/SKILL.md +108 -0
- package/templates/ide/antigravity/.agents/skills/dare-review/SKILL.md +111 -0
- package/templates/ide/antigravity/.agents/skills/dare-rust-leptos/SKILL.md +263 -0
- package/templates/ide/antigravity/.agents/skills/dare-rust-workspace/SKILL.md +275 -275
- package/templates/ide/antigravity/.agents/skills/dare-security/SKILL.md +274 -0
- package/templates/ide/antigravity/.agents/skills/dare-tasks/SKILL.md +265 -224
- package/templates/ide/antigravity/.agents/skills/dare-telemetry/SKILL.md +188 -0
- package/templates/ide/antigravity/.agents/skills/skill-fastapi-api/SKILL.md +343 -0
- package/templates/ide/antigravity/.agents/skills/skill-go-gin-api/SKILL.md +377 -0
- package/templates/ide/antigravity/.agents/skills/skill-mcp-server/SKILL.md +382 -0
- package/templates/ide/antigravity/.agents/skills/skill-nestjs-api/SKILL.md +326 -0
- package/templates/ide/antigravity/.agents/skills/skill-rails-api/SKILL.md +393 -0
- package/templates/ide/antigravity/templates/BLUEPRINT-template.md +193 -193
- package/templates/ide/antigravity/templates/DESIGN-template.md +129 -129
- package/templates/ide/antigravity/templates/TASK-SPEC-template.md +141 -100
- package/templates/ide/claude/.claude/commands/dare-ax.md +131 -0
- package/templates/ide/claude/.claude/commands/dare-blueprint.md +134 -78
- package/templates/ide/claude/.claude/commands/dare-bugfix-design.md +119 -0
- package/templates/ide/claude/.claude/commands/dare-dag-build.md +151 -110
- package/templates/ide/claude/.claude/commands/dare-dag-run.md +109 -109
- package/templates/ide/claude/.claude/commands/dare-dag-runner.md +117 -0
- package/templates/ide/claude/.claude/commands/dare-dag-viz.md +197 -197
- package/templates/ide/claude/.claude/commands/dare-design.md +69 -69
- package/templates/ide/claude/.claude/commands/dare-dna.md +75 -0
- package/templates/ide/claude/.claude/commands/dare-docker.md +207 -0
- package/templates/ide/claude/.claude/commands/dare-execute.md +152 -152
- package/templates/ide/claude/.claude/commands/dare-feature-design.md +147 -0
- package/templates/ide/claude/.claude/commands/dare-frontend-design.md +149 -0
- package/templates/ide/claude/.claude/commands/dare-laravel-api.md +211 -0
- package/templates/ide/claude/.claude/commands/dare-layered-design.md +124 -0
- package/templates/ide/claude/.claude/commands/dare-llm-integration.md +148 -0
- package/templates/ide/claude/.claude/commands/dare-migrate.md +72 -0
- package/templates/ide/claude/.claude/commands/dare-quality-telemetry.md +166 -0
- package/templates/ide/claude/.claude/commands/dare-realtime.md +159 -0
- package/templates/ide/claude/.claude/commands/dare-refine.md +145 -0
- package/templates/ide/claude/.claude/commands/dare-reverse.md +139 -0
- package/templates/ide/claude/.claude/commands/dare-review.md +113 -0
- package/templates/ide/claude/.claude/commands/dare-rust-leptos.md +269 -269
- package/templates/ide/claude/.claude/commands/dare-rust-workspace.md +209 -209
- package/templates/ide/claude/.claude/commands/dare-security.md +232 -232
- package/templates/ide/claude/.claude/commands/dare-tasks.md +70 -70
- package/templates/ide/claude/.claude/commands/dare-telemetry.md +132 -0
- package/templates/ide/claude/.claude/commands/skill-fastapi-api.md +205 -0
- package/templates/ide/claude/.claude/commands/skill-go-gin-api.md +232 -0
- package/templates/ide/claude/.claude/commands/skill-mcp-server.md +228 -0
- package/templates/ide/claude/.claude/commands/skill-nestjs-api.md +210 -0
- package/templates/ide/claude/.claude/commands/skill-rails-api.md +236 -0
- package/templates/ide/claude/.claude/settings.example.json +35 -35
- package/templates/ide/claude/CLAUDE.md +146 -146
- package/templates/ide/claude/templates/BLUEPRINT-template.md +193 -193
- package/templates/ide/claude/templates/DESIGN-template.md +129 -129
- package/templates/ide/claude/templates/TASK-SPEC-template.md +141 -100
- package/templates/ide/cursor/.cursor/commands/dag-viz.md +139 -0
- package/templates/ide/cursor/.cursor/commands/generate-blueprint.md +86 -41
- package/templates/ide/cursor/.cursor/commands/generate-design.md +35 -35
- package/templates/ide/cursor/.cursor/commands/generate-tasks.md +184 -142
- package/templates/ide/cursor/.cursor/commands/refine-task.md +107 -0
- package/templates/ide/cursor/.cursor/commands/review-task.md +91 -0
- package/templates/ide/cursor/.cursor/commands/run-dag.md +110 -110
- package/templates/ide/cursor/.cursor/rules/skill-ax.mdc +263 -0
- package/templates/ide/cursor/.cursor/rules/skill-dag-build.mdc +173 -0
- package/templates/ide/cursor/.cursor/rules/skill-dag-run.mdc +134 -0
- package/templates/ide/cursor/.cursor/rules/skill-dag-runner.mdc +221 -221
- package/templates/ide/cursor/.cursor/rules/skill-dna.mdc +63 -0
- package/templates/ide/cursor/.cursor/rules/skill-fastapi-api.mdc +352 -0
- package/templates/ide/cursor/.cursor/rules/skill-frontend-design.mdc +244 -0
- package/templates/ide/cursor/.cursor/rules/skill-go-gin-api.mdc +371 -0
- package/templates/ide/cursor/.cursor/rules/skill-layered-design.mdc +266 -0
- package/templates/ide/cursor/.cursor/rules/skill-llm-integration.mdc +295 -0
- package/templates/ide/cursor/.cursor/rules/skill-mcp-server.mdc +367 -0
- package/templates/ide/cursor/.cursor/rules/skill-migrate.mdc +58 -0
- package/templates/ide/cursor/.cursor/rules/skill-nestjs-api.mdc +346 -0
- package/templates/ide/cursor/.cursor/rules/skill-quality-telemetry.mdc +248 -0
- package/templates/ide/cursor/.cursor/rules/skill-rails-api.mdc +400 -0
- package/templates/ide/cursor/.cursor/rules/skill-realtime.mdc +262 -0
- package/templates/ide/cursor/.cursor/rules/skill-reverse.mdc +107 -0
- package/templates/ide/cursor/.cursor/rules/skill-rust-leptos.mdc +281 -0
- package/templates/ide/cursor/.cursor/rules/skill-rust-workspace.mdc +312 -312
- package/templates/ide/cursor/.cursor/rules/skill-security.mdc +245 -245
- package/templates/ide/cursor/templates/BLUEPRINT-template.md +193 -193
- package/templates/ide/cursor/templates/DESIGN-template.md +129 -129
- package/templates/ide/cursor/templates/TASK-SPEC-template.md +141 -100
- package/templates/shared/docker-compose.yml +41 -41
- package/dist/__tests__/dag-runner/adapters.test.d.ts +0 -2
- package/dist/__tests__/dag-runner/adapters.test.d.ts.map +0 -1
- package/dist/__tests__/dag-runner/adapters.test.js +0 -134
- package/dist/__tests__/dag-runner/adapters.test.js.map +0 -1
- package/dist/dag-runner/adapters/antigravity.d.ts +0 -6
- package/dist/dag-runner/adapters/antigravity.d.ts.map +0 -1
- package/dist/dag-runner/adapters/antigravity.js +0 -54
- package/dist/dag-runner/adapters/antigravity.js.map +0 -1
- package/dist/dag-runner/adapters/claude.d.ts +0 -6
- package/dist/dag-runner/adapters/claude.d.ts.map +0 -1
- package/dist/dag-runner/adapters/claude.js +0 -48
- package/dist/dag-runner/adapters/claude.js.map +0 -1
- package/dist/dag-runner/adapters/cursor.d.ts +0 -6
- package/dist/dag-runner/adapters/cursor.d.ts.map +0 -1
- package/dist/dag-runner/adapters/cursor.js +0 -58
- package/dist/dag-runner/adapters/cursor.js.map +0 -1
- package/dist/dag-runner/adapters/index.d.ts +0 -46
- package/dist/dag-runner/adapters/index.d.ts.map +0 -1
- package/dist/dag-runner/adapters/index.js +0 -55
- package/dist/dag-runner/adapters/index.js.map +0 -1
- package/dist/dag-runner/utils/timeout.d.ts +0 -27
- package/dist/dag-runner/utils/timeout.d.ts.map +0 -1
- package/dist/dag-runner/utils/timeout.js +0 -55
- package/dist/dag-runner/utils/timeout.js.map +0 -1
|
@@ -1,100 +1,141 @@
|
|
|
1
|
-
# TASK [ID]: [Título da Task]
|
|
2
|
-
|
|
3
|
-
> **Complexidade:** LOW / MED / HIGH
|
|
4
|
-
> **Depends on:** [task-ids ou —]
|
|
5
|
-
> **Estimativa:** [X horas]
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 1. OBJETIVO
|
|
10
|
-
|
|
11
|
-
[Uma frase precisa do que esta task entrega. Deve ser verificável — termine com um estado observável, não uma ação.]
|
|
12
|
-
|
|
13
|
-
Exemplo: _"Ao final desta task, o endpoint `POST /api/v1/users` aceita cadastro, valida unicidade de e-mail e retorna JWT."_
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## 2. CONTEXTO
|
|
18
|
-
|
|
19
|
-
- **Fase no BLUEPRINT:** Fase [N] — [Nome da fase]
|
|
20
|
-
- **Arquivos existentes relevantes:** [caminhos de arquivos que servem de referência ou serão modificados]
|
|
21
|
-
- **Decisões do BLUEPRINT que afetam esta task:** [cite seção/decisão específica]
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## 3. ARQUIVOS A CRIAR / MODIFICAR
|
|
26
|
-
|
|
27
|
-
| Ação | Caminho | Descrição |
|
|
28
|
-
|------|---------|-----------|
|
|
29
|
-
| CRIAR | `src/[módulo]/[arquivo]` | [o que contém] |
|
|
30
|
-
| MODIFICAR | `src/[módulo]/[arquivo]` | [o que muda] |
|
|
31
|
-
| CRIAR | `tests/[arquivo].test.[ext]` | Testes da feature |
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## 4. IMPLEMENTAÇÃO
|
|
36
|
-
|
|
37
|
-
### Passo 1: [Nome do passo]
|
|
38
|
-
[Descrição precisa do que fazer. Inclua assinaturas de função/struct se crítico.]
|
|
39
|
-
|
|
40
|
-
```[lang]
|
|
41
|
-
// Exemplo de padrão esperado
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
### Passo 2: [Nome do passo]
|
|
45
|
-
[Descrição]
|
|
46
|
-
|
|
47
|
-
### Passo 3: Testes
|
|
48
|
-
- [ ] Teste do caminho feliz (`should_[comportamento]_when_[condição]`)
|
|
49
|
-
- [ ] Teste de erro de validação (400 / erro de negócio)
|
|
50
|
-
- [ ] Teste de autorização (401 / 403 quando aplicável)
|
|
51
|
-
- [ ] Teste de edge case: [descrever]
|
|
52
|
-
|
|
53
|
-
---
|
|
54
|
-
|
|
55
|
-
## 5. CONSIDERAÇÕES DE SEGURANÇA
|
|
56
|
-
|
|
57
|
-
- [ ] **Input validation:** toda entrada do usuário validada no servidor antes de qualquer processamento
|
|
58
|
-
- [ ] **Autenticação / Autorização:** verificar se o usuário tem permissão sobre o *recurso específico*, não só sobre a rota
|
|
59
|
-
- [ ] **Dados sensíveis:** senhas, tokens e PII nunca aparecem em logs, responses de erro ou mensagens de exceção
|
|
60
|
-
- [ ] **SQL / Command Injection:** usar ORM / prepared statements; nunca concatenar strings em queries
|
|
61
|
-
- [ ] **Dependências novas:** se esta task adicionar uma dependência, verificar CVEs com `npm audit` / `cargo audit` / `pip-audit` antes de commitar
|
|
62
|
-
- [ ] **Segredo em código:** nenhum token, chave ou credencial hardcoded — sempre via variável de ambiente
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## 6. VALIDATION GATES (RALPH LOOP)
|
|
67
|
-
|
|
68
|
-
Execute **todos** antes de marcar a task como DONE. Se qualquer um falhar, leia o erro, corrija e reexecute.
|
|
69
|
-
|
|
70
|
-
```bash
|
|
71
|
-
# 1. Build — sem erros de compilação
|
|
72
|
-
[comando de build da stack]
|
|
73
|
-
|
|
74
|
-
# 2. Tests — todos passando, incluindo os novos
|
|
75
|
-
[comando de test]
|
|
76
|
-
|
|
77
|
-
# 3. Lint — sem warnings
|
|
78
|
-
[comando de lint]
|
|
79
|
-
|
|
80
|
-
# 4. Auditoria de dependências (se novas deps foram adicionadas nesta task)
|
|
81
|
-
[npm audit --audit-level=high | cargo audit | pip-audit | composer audit]
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
> **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.
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
## 7.
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
1
|
+
# TASK [ID]: [Título da Task]
|
|
2
|
+
|
|
3
|
+
> **Complexidade:** LOW / MED / HIGH
|
|
4
|
+
> **Depends on:** [task-ids ou —]
|
|
5
|
+
> **Estimativa:** [X horas]
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. OBJETIVO
|
|
10
|
+
|
|
11
|
+
[Uma frase precisa do que esta task entrega. Deve ser verificável — termine com um estado observável, não uma ação.]
|
|
12
|
+
|
|
13
|
+
Exemplo: _"Ao final desta task, o endpoint `POST /api/v1/users` aceita cadastro, valida unicidade de e-mail e retorna JWT."_
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 2. CONTEXTO
|
|
18
|
+
|
|
19
|
+
- **Fase no BLUEPRINT:** Fase [N] — [Nome da fase]
|
|
20
|
+
- **Arquivos existentes relevantes:** [caminhos de arquivos que servem de referência ou serão modificados]
|
|
21
|
+
- **Decisões do BLUEPRINT que afetam esta task:** [cite seção/decisão específica]
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 3. ARQUIVOS A CRIAR / MODIFICAR
|
|
26
|
+
|
|
27
|
+
| Ação | Caminho | Descrição |
|
|
28
|
+
|------|---------|-----------|
|
|
29
|
+
| CRIAR | `src/[módulo]/[arquivo]` | [o que contém] |
|
|
30
|
+
| MODIFICAR | `src/[módulo]/[arquivo]` | [o que muda] |
|
|
31
|
+
| CRIAR | `tests/[arquivo].test.[ext]` | Testes da feature |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 4. IMPLEMENTAÇÃO
|
|
36
|
+
|
|
37
|
+
### Passo 1: [Nome do passo]
|
|
38
|
+
[Descrição precisa do que fazer. Inclua assinaturas de função/struct se crítico.]
|
|
39
|
+
|
|
40
|
+
```[lang]
|
|
41
|
+
// Exemplo de padrão esperado
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Passo 2: [Nome do passo]
|
|
45
|
+
[Descrição]
|
|
46
|
+
|
|
47
|
+
### Passo 3: Testes
|
|
48
|
+
- [ ] Teste do caminho feliz (`should_[comportamento]_when_[condição]`)
|
|
49
|
+
- [ ] Teste de erro de validação (400 / erro de negócio)
|
|
50
|
+
- [ ] Teste de autorização (401 / 403 quando aplicável)
|
|
51
|
+
- [ ] Teste de edge case: [descrever]
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 5. CONSIDERAÇÕES DE SEGURANÇA
|
|
56
|
+
|
|
57
|
+
- [ ] **Input validation:** toda entrada do usuário validada no servidor antes de qualquer processamento
|
|
58
|
+
- [ ] **Autenticação / Autorização:** verificar se o usuário tem permissão sobre o *recurso específico*, não só sobre a rota
|
|
59
|
+
- [ ] **Dados sensíveis:** senhas, tokens e PII nunca aparecem em logs, responses de erro ou mensagens de exceção
|
|
60
|
+
- [ ] **SQL / Command Injection:** usar ORM / prepared statements; nunca concatenar strings em queries
|
|
61
|
+
- [ ] **Dependências novas:** se esta task adicionar uma dependência, verificar CVEs com `npm audit` / `cargo audit` / `pip-audit` antes de commitar
|
|
62
|
+
- [ ] **Segredo em código:** nenhum token, chave ou credencial hardcoded — sempre via variável de ambiente
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 6. VALIDATION GATES (RALPH LOOP)
|
|
67
|
+
|
|
68
|
+
Execute **todos** antes de marcar a task como DONE. Se qualquer um falhar, leia o erro, corrija e reexecute.
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
# 1. Build — sem erros de compilação
|
|
72
|
+
[comando de build da stack]
|
|
73
|
+
|
|
74
|
+
# 2. Tests — todos passando, incluindo os novos
|
|
75
|
+
[comando de test]
|
|
76
|
+
|
|
77
|
+
# 3. Lint — sem warnings
|
|
78
|
+
[comando de lint]
|
|
79
|
+
|
|
80
|
+
# 4. Auditoria de dependências (se novas deps foram adicionadas nesta task)
|
|
81
|
+
[npm audit --audit-level=high | cargo audit | pip-audit | composer audit]
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
> **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.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 7. PADRÕES PROIBIDOS (ANTI-STUB / ANTI-MOCK)
|
|
89
|
+
|
|
90
|
+
> Esta seção é **inegociável**. O comando `dare review` (v2.17+) escaneia o código modificado por esta task e reprova se encontrar qualquer padrão abaixo.
|
|
91
|
+
|
|
92
|
+
### Em código de produção (qualquer arquivo **fora** de `*.test.*`, `*.spec.*`, `__tests__/`, `tests/`, `spec/`)
|
|
93
|
+
|
|
94
|
+
- ❌ **TODO / FIXME / XXX / HACK** — qualquer um desses marcadores em comentário
|
|
95
|
+
- ❌ **Função vazia** — `fn x() {}`, `function x() {}`, `def x(): pass`, `def x(): ...`
|
|
96
|
+
- ❌ **Stub explícito** — `throw new Error('not implemented')`, `unimplemented!()`, `todo!()`, `raise NotImplementedError`
|
|
97
|
+
- ❌ **Retorno-fantasma** — `return null` / `return undefined` / `return {}` / `return []` como **única** statement de função pública declarada nesta task
|
|
98
|
+
- ❌ **Mocks fora de testes** — `jest.fn()`, `sinon.stub()`, `mockReturnValue`, dados hardcoded fingindo ser do banco, fixtures injetadas em controllers/services
|
|
99
|
+
- ❌ **Comentário de placeholder** — `// implement later`, `# placeholder`, `// stub`, `// FIXME implement`
|
|
100
|
+
|
|
101
|
+
### Mocks são permitidos APENAS em
|
|
102
|
+
|
|
103
|
+
- Arquivos de teste (`*.test.*`, `*.spec.*`, `__tests__/`, `tests/`, `spec/`)
|
|
104
|
+
- Seeds / fixtures dentro de `database/seeders/`, `tests/fixtures/`
|
|
105
|
+
- Helpers explicitamente marcados como auxiliares de teste
|
|
106
|
+
|
|
107
|
+
### Verificação automática
|
|
108
|
+
|
|
109
|
+
Antes de marcar a task como DONE, rode:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
dare review <task-id>
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Output esperado:
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
✅ task-XYZ: nenhum padrão proibido detectado em N arquivos modificados.
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Se a review falhar, a task **não pode** ir para DONE — corrija os achados e re-rode.
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## 8. CRITÉRIOS DE DONE
|
|
126
|
+
|
|
127
|
+
- [ ] Todos os 4 validation gates passaram sem erros (build + test + lint + audit)
|
|
128
|
+
- [ ] Testes cobrem caminho feliz + erros enumerados + edge cases da seção 4
|
|
129
|
+
- [ ] Considerações de segurança da seção 5 todas checadas
|
|
130
|
+
- [ ] Arquivos listados na seção 3 criados/modificados conforme spec
|
|
131
|
+
- [ ] **`dare review <task-id>` passou** (seção 7 — sem stubs, mocks, TODOs)
|
|
132
|
+
- [ ] Cada validação declarada na spec tem teste demonstrando o erro real (não placeholder)
|
|
133
|
+
- [ ] Cada edge case enumerado tem teste cobrindo
|
|
134
|
+
- [ ] Endpoints retornam dados reais do banco/service, não hardcoded
|
|
135
|
+
- [ ] `DARE/TASKS.md` atualizado com status `DONE`
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## 9. PRÓXIMA TASK SUGERIDA
|
|
140
|
+
|
|
141
|
+
`[task-id]` — [título] _(desbloqueada após conclusão desta task)_
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Comando: /dag-viz
|
|
2
|
+
|
|
3
|
+
## Descrição
|
|
4
|
+
|
|
5
|
+
Gera diagrama interativo `.excalidraw` a partir do `DARE/dare-dag.yaml` atual. Cada task vira um retângulo com cor baseada em complexidade e status visual, agrupado em colunas verticais (swim lanes) por rank, com setas conectando dependências.
|
|
6
|
+
|
|
7
|
+
## Instruções para o Cursor Composer
|
|
8
|
+
|
|
9
|
+
1. **Leia o DAG:** Abra `DARE/dare-dag.yaml`. Valide sintaxe YAML. Extraia tasks, complexidade, dependências e status.
|
|
10
|
+
|
|
11
|
+
2. **Leia a skill de visualização:** Consulte `.cursor/rules/skill-dag-viz.mdc` (se existir) para convenções visuais e tokens de design.
|
|
12
|
+
|
|
13
|
+
3. **Calcule ranks:**
|
|
14
|
+
- Tasks sem `depends_on` → rank 1
|
|
15
|
+
- Demais: rank = 1 + max(rank das dependências)
|
|
16
|
+
- Agrupe por rank para formar swim lanes verticais
|
|
17
|
+
|
|
18
|
+
4. **Gere elementos Excalidraw:**
|
|
19
|
+
- Para cada task, crie retângulo 120×60px:
|
|
20
|
+
- Cor de fundo por `complexity`:
|
|
21
|
+
- LOW → azul `#e3f2fd`, stroke `#1976d2`
|
|
22
|
+
- MEDIUM → laranja `#fff3e0`, stroke `#f57c00`
|
|
23
|
+
- HIGH → rosa `#fce4ec`, stroke `#c2185b`
|
|
24
|
+
- Stroke por `status`:
|
|
25
|
+
- PENDING → linha sólida cinza padrão
|
|
26
|
+
- RUNNING → linha pontilhada azul
|
|
27
|
+
- DONE → linha sólida verde `#388e3c`
|
|
28
|
+
- FAILED → linha sólida vermelha `#d32f2f`
|
|
29
|
+
- Texto: `task-id\ntask-name\n[COMPLEXITY]`
|
|
30
|
+
- Para cada dependência em `depends_on`, crie seta de source → target, stroke cinza `#999`.
|
|
31
|
+
|
|
32
|
+
5. **Posicione elementos:**
|
|
33
|
+
- X = 20 + (taskIndex_no_rank × 140)
|
|
34
|
+
- Y = 20 + (rank − 1) × 160
|
|
35
|
+
|
|
36
|
+
6. **Salve:** Escreva resultado em `DARE/dag-graph.excalidraw` no formato JSON Excalidraw 2.x.
|
|
37
|
+
|
|
38
|
+
7. **Mensagem final:**
|
|
39
|
+
```
|
|
40
|
+
DAG gerado: DARE/dag-graph.excalidraw
|
|
41
|
+
Abra em https://excalidraw.com (File → Open) para visualizar e editar.
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Estrutura JSON Excalidraw esperada
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"type": "excalidraw",
|
|
49
|
+
"version": 2,
|
|
50
|
+
"source": "dare-dag-viz",
|
|
51
|
+
"elements": [
|
|
52
|
+
{
|
|
53
|
+
"id": "task-001",
|
|
54
|
+
"type": "rectangle",
|
|
55
|
+
"x": 20, "y": 20,
|
|
56
|
+
"width": 120, "height": 60,
|
|
57
|
+
"backgroundColor": "#e3f2fd",
|
|
58
|
+
"strokeColor": "#1976d2",
|
|
59
|
+
"strokeStyle": "solid",
|
|
60
|
+
"fillStyle": "solid",
|
|
61
|
+
"roundness": { "type": 2, "value": 6 }
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"type": "text",
|
|
65
|
+
"x": 25, "y": 25,
|
|
66
|
+
"text": "task-001\nSetup Auth\n[LOW]",
|
|
67
|
+
"fontSize": 12,
|
|
68
|
+
"containerId": "task-001"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"type": "arrow",
|
|
72
|
+
"startBinding": { "elementId": "task-001" },
|
|
73
|
+
"endBinding": { "elementId": "task-003" },
|
|
74
|
+
"strokeColor": "#999"
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
"appState": {
|
|
78
|
+
"gridMode": "grid",
|
|
79
|
+
"gridSize": 20
|
|
80
|
+
},
|
|
81
|
+
"files": {}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Campos esperados em `dare-dag.yaml`
|
|
86
|
+
|
|
87
|
+
```yaml
|
|
88
|
+
tasks:
|
|
89
|
+
task-001:
|
|
90
|
+
name: "Setup Auth"
|
|
91
|
+
complexity: "LOW" # LOW | MEDIUM | HIGH
|
|
92
|
+
rank: 1 # opcional (calculado se ausente)
|
|
93
|
+
depends_on: [] # default []
|
|
94
|
+
status: "DONE" # PENDING | RUNNING | DONE | FAILED (default PENDING)
|
|
95
|
+
subtask_prompt: "..." # opcional
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Obrigatórios:** `name`, `complexity`.
|
|
99
|
+
**Opcionais:** `rank`, `depends_on`, `status`.
|
|
100
|
+
|
|
101
|
+
## Como abrir o resultado
|
|
102
|
+
|
|
103
|
+
1. Acesse https://excalidraw.com
|
|
104
|
+
2. File → Open → selecione `DARE/dag-graph.excalidraw`
|
|
105
|
+
3. Edite livremente (mover, colorir, anotar)
|
|
106
|
+
4. Salve no mesmo arquivo
|
|
107
|
+
|
|
108
|
+
## Atualizar após mudanças
|
|
109
|
+
|
|
110
|
+
Sempre que `dare-dag.yaml` for modificado, rode `/dag-viz` para regenerar.
|
|
111
|
+
|
|
112
|
+
> Dica: faça backup se editou manualmente — a regeneração sobrescreve.
|
|
113
|
+
|
|
114
|
+
## Troubleshooting
|
|
115
|
+
|
|
116
|
+
- **"File not found: DARE/dare-dag.yaml"** — projeto não tem DAG. Rode `/generate-tasks` primeiro para gerá-lo.
|
|
117
|
+
- **"JSON inválido"** — valide com `dare dag validate` (se CLI disponível) ou inspecione manualmente.
|
|
118
|
+
- **Diagrama muito grande** — abra em Excalidraw e ajuste com Ctrl+Mouse / pinch zoom.
|
|
119
|
+
|
|
120
|
+
## Convenções visuais
|
|
121
|
+
|
|
122
|
+
- **Azul** (`#e3f2fd`) = LOW complexity
|
|
123
|
+
- **Laranja** (`#fff3e0`) = MEDIUM
|
|
124
|
+
- **Rosa** (`#fce4ec`) = HIGH
|
|
125
|
+
- **Verde** (`#388e3c`) = DONE
|
|
126
|
+
- **Vermelho** (`#d32f2f`) = FAILED
|
|
127
|
+
- **Pontilhado azul** = RUNNING
|
|
128
|
+
- **Cinza padrão** = PENDING
|
|
129
|
+
|
|
130
|
+
## Próximos passos
|
|
131
|
+
|
|
132
|
+
- Exporte para PNG no Excalidraw para incluir em README ou PR
|
|
133
|
+
- Compartilhe o link colaborativo do Excalidraw com stakeholders
|
|
134
|
+
- Atualize após cada `/generate-tasks` ou `/run-dag`
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
Skill MIT — parte do DARE Method.
|
|
139
|
+
Inspiração: [Excalidraw Diagram Skill](https://github.com/coleam00/excalidraw-diagram-skill) por Cole Medin.
|
|
@@ -1,41 +1,86 @@
|
|
|
1
|
-
# Comando: /generate-blueprint
|
|
2
|
-
|
|
3
|
-
## Descrição
|
|
4
|
-
Avança o DARE para a fase Architect: lê `DARE/DESIGN.md` aprovado e gera **somente** `DARE/BLUEPRINT.md`.
|
|
5
|
-
|
|
6
|
-
> As tasks, DAG e specs de execução são geradas depois com `/generate-tasks`, após você revisar e aprovar o Blueprint.
|
|
7
|
-
|
|
8
|
-
## Instruções para o Cursor Composer
|
|
9
|
-
|
|
10
|
-
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, escopo.
|
|
11
|
-
|
|
12
|
-
2. **Leia o template:** `templates/BLUEPRINT-template.md` — siga a estrutura fielmente.
|
|
13
|
-
|
|
14
|
-
3. **Gere `DARE/BLUEPRINT.md`** com seções obrigatórias:
|
|
15
|
-
|
|
16
|
-
- **Visão Geral da Arquitetura** — diagrama Mermaid + tabela de decisões com justificativa
|
|
17
|
-
- **Stack Técnica Definida** — versões fixas (não ranges)
|
|
18
|
-
- **Estrutura de Pastas** — árvore completa dos arquivos a criar
|
|
19
|
-
- **Modelo de Dados** — entidades, campos tipados, relacionamentos, índices
|
|
20
|
-
- **Contratos de API** — método, rota, auth, request/response, status codes
|
|
21
|
-
- **Plano de Execução (Fases)** — cada fase com critério de DONE verificável:
|
|
22
|
-
- Fase 1 = containerização (Dockerfile + docker-compose + healthcheck) — sempre
|
|
23
|
-
- Fase N-1 = auditoria de segurança + dependências — sempre
|
|
24
|
-
- **Validation Gates por stack:**
|
|
25
|
-
| Stack | Build | Test | Lint/Audit |
|
|
26
|
-
|-------|-------|------|------------|
|
|
27
|
-
| Rust | `cargo build` | `cargo test --workspace` | `cargo clippy && cargo audit` |
|
|
28
|
-
| Node | `npm run build` | `npm test` | `npx eslint src && npm audit --audit-level=high` |
|
|
29
|
-
| Python | verificar imports | `pytest` | `ruff check . && pip-audit` |
|
|
30
|
-
| PHP | `php artisan config:cache` | `php artisan test` | `./vendor/bin/phpstan && composer audit` |
|
|
31
|
-
| Go | `go build ./...` | `go test ./...` | `golangci-lint run` |
|
|
32
|
-
- **Controles de Segurança** — checklist mapeando cada RS-* do DESIGN para fases específicas
|
|
33
|
-
- **Estratégia de Testes** — unitários + integração + auditoria de deps + E2E
|
|
34
|
-
- **Estratégia de Deploy** — por ambiente
|
|
35
|
-
- **Checklist de Aprovação** — checkboxes para revisão humana
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
1
|
+
# Comando: /generate-blueprint
|
|
2
|
+
|
|
3
|
+
## Descrição
|
|
4
|
+
Avança o DARE para a fase Architect: lê `DARE/DESIGN.md` aprovado e gera **somente** `DARE/BLUEPRINT.md`.
|
|
5
|
+
|
|
6
|
+
> As tasks, DAG e specs de execução são geradas depois com `/generate-tasks`, após você revisar e aprovar o Blueprint.
|
|
7
|
+
|
|
8
|
+
## Instruções para o Cursor Composer
|
|
9
|
+
|
|
10
|
+
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, escopo.
|
|
11
|
+
|
|
12
|
+
2. **Leia o template:** `templates/BLUEPRINT-template.md` — siga a estrutura fielmente.
|
|
13
|
+
|
|
14
|
+
3. **Gere `DARE/BLUEPRINT.md`** com seções obrigatórias:
|
|
15
|
+
|
|
16
|
+
- **Visão Geral da Arquitetura** — diagrama Mermaid + tabela de decisões com justificativa
|
|
17
|
+
- **Stack Técnica Definida** — versões fixas (não ranges)
|
|
18
|
+
- **Estrutura de Pastas** — árvore completa dos arquivos a criar
|
|
19
|
+
- **Modelo de Dados** — entidades, campos tipados, relacionamentos, índices
|
|
20
|
+
- **Contratos de API** — método, rota, auth, request/response, status codes
|
|
21
|
+
- **Plano de Execução (Fases)** — cada fase com critério de DONE verificável:
|
|
22
|
+
- Fase 1 = containerização (Dockerfile + docker-compose + healthcheck) — sempre
|
|
23
|
+
- Fase N-1 = auditoria de segurança + dependências — sempre
|
|
24
|
+
- **Validation Gates por stack:**
|
|
25
|
+
| Stack | Build | Test | Lint/Audit |
|
|
26
|
+
|-------|-------|------|------------|
|
|
27
|
+
| Rust | `cargo build` | `cargo test --workspace` | `cargo clippy && cargo audit` |
|
|
28
|
+
| Node | `npm run build` | `npm test` | `npx eslint src && npm audit --audit-level=high` |
|
|
29
|
+
| Python | verificar imports | `pytest` | `ruff check . && pip-audit` |
|
|
30
|
+
| PHP | `php artisan config:cache` | `php artisan test` | `./vendor/bin/phpstan && composer audit` |
|
|
31
|
+
| Go | `go build ./...` | `go test ./...` | `golangci-lint run` |
|
|
32
|
+
- **Controles de Segurança** — checklist mapeando cada RS-* do DESIGN para fases específicas
|
|
33
|
+
- **Estratégia de Testes** — unitários + integração + auditoria de deps + E2E
|
|
34
|
+
- **Estratégia de Deploy** — por ambiente
|
|
35
|
+
- **Checklist de Aprovação** — checkboxes para revisão humana
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
### 🚫 ANTI-STUB CONTRACT (regra inegociável)
|
|
40
|
+
|
|
41
|
+
> **Por que existe esta seção:** o `/generate-tasks` que vem depois usa este Blueprint como **única fonte de verdade**. Se um endpoint, função ou regra ficar genérico aqui, o agente que implementar a task **será forçado a inventar** — e vai produzir mocks, stubs e esqueletos para "preencher o vazio". Detalhe agora.
|
|
42
|
+
>
|
|
43
|
+
> Tasks que produzem mock/stub/skeleton **falham** no `dare review` (v2.17+) e bloqueiam o `dare execute --complete`.
|
|
44
|
+
|
|
45
|
+
Para **cada** endpoint, função pública, evento ou job declarado no Blueprint, especifique de forma **executável**:
|
|
46
|
+
|
|
47
|
+
**Endpoints HTTP/RPC:**
|
|
48
|
+
- Assinatura completa (método, path, headers, content-type)
|
|
49
|
+
- Request schema (campos, tipos, restrições, opcionalidade)
|
|
50
|
+
- Response schema **por status code** (2xx, 4xx, 5xx)
|
|
51
|
+
- Validações server-side (lista exaustiva — `email único`, `senha ≥ 8 chars + maiúscula + dígito`)
|
|
52
|
+
- Edge cases enumerados (input vazio, duplicado, expirado, sem permissão)
|
|
53
|
+
- Side effects (tabelas/filas/caches/emails tocados — em ordem)
|
|
54
|
+
- Exemplo concreto (payload real, response real — não placeholder)
|
|
55
|
+
|
|
56
|
+
**Funções de domínio / services:**
|
|
57
|
+
- Assinatura tipada (`fn name(args: Types) -> ReturnType`)
|
|
58
|
+
- Pré-condições e pós-condições verificáveis
|
|
59
|
+
- Estados de erro com tipo de exceção esperado
|
|
60
|
+
- Comportamento em concorrência (idempotência, locking, retry)
|
|
61
|
+
|
|
62
|
+
**Jobs / event handlers / workers:**
|
|
63
|
+
- Trigger (evento, cron, fila — nome canônico)
|
|
64
|
+
- Payload schema tipado
|
|
65
|
+
- Retry policy (backoff, max attempts, DLQ)
|
|
66
|
+
- Idempotência (chave + estratégia)
|
|
67
|
+
|
|
68
|
+
**Modelos de dados:**
|
|
69
|
+
- Cada campo: tipo, nullable, default, constraints (unique, fk, check), índices
|
|
70
|
+
- Triggers / hooks (soft-delete, audit, encryption-at-rest)
|
|
71
|
+
|
|
72
|
+
**Critério de "Blueprint detalhado o suficiente"** (auto-validação antes de salvar):
|
|
73
|
+
|
|
74
|
+
- [ ] Para cada endpoint, um humano consegue escrever request/response sem perguntar?
|
|
75
|
+
- [ ] Para cada função pública, está claro o que retorna em todos os caminhos (sucesso + erros enumerados)?
|
|
76
|
+
- [ ] Edge cases enumerados explicitamente — não "tratar edge cases"?
|
|
77
|
+
- [ ] Cada validação tem regra concreta — não só "validar email"?
|
|
78
|
+
- [ ] Cada decisão arquitetural tem **justificativa**?
|
|
79
|
+
|
|
80
|
+
**Anti-padrão a evitar:** seções como _"implementar autenticação"_ ou _"validar dados"_ — isso vira stub. Especifique algoritmo, campos, regras.
|
|
81
|
+
|
|
82
|
+
4. **Salve `DARE/BLUEPRINT.md`** e informe:
|
|
83
|
+
|
|
84
|
+
_"Blueprint gerado. Revise a arquitetura, os contratos de API e os critérios de DONE de cada fase. Quando aprovado, execute `/generate-tasks` para gerar o DAG e as specs de execução."_
|
|
85
|
+
|
|
86
|
+
**Não gere** `TASKS.md`, `dare-dag.yaml` nem arquivos em `EXECUTION/` — isso é responsabilidade do `/generate-tasks`.
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
# Comando: /generate-design
|
|
2
|
-
|
|
3
|
-
## Descrição
|
|
4
|
-
Inicia o Método DARE (fase Design) gerando `DARE/DESIGN.md` a partir de uma ideia inicial.
|
|
5
|
-
|
|
6
|
-
## Instruções para o Cursor Composer
|
|
7
|
-
|
|
8
|
-
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.
|
|
9
|
-
|
|
10
|
-
2. **Leia o template:** `templates/DESIGN-template.md` — siga a estrutura fielmente.
|
|
11
|
-
|
|
12
|
-
3. **Gere `DARE/DESIGN.md` com as seções obrigatórias:**
|
|
13
|
-
|
|
14
|
-
- **Descrição** — 3 a 5 frases: o que é, qual problema resolve, quem usa
|
|
15
|
-
- **Objetivos e Métricas de Sucesso** — tabela numerada (O-01, O-02…) com métrica verificável e meta numérica
|
|
16
|
-
- **Stakeholders** — tabela: papel, time, interesse principal
|
|
17
|
-
- **Requisitos Funcionais** — tabela numerada (RF-01, RF-02…) com prioridade MUST/SHOULD/COULD e critério de aceite
|
|
18
|
-
- **Requisitos Não-Funcionais** — tabela numerada (RNF-01…): performance, disponibilidade, segurança, observabilidade, manutenibilidade
|
|
19
|
-
- **Requisitos de Segurança** — tabela numerada (RS-01…). **Sempre inclua:**
|
|
20
|
-
- RS-01: validação de entrada no servidor (OWASP A03)
|
|
21
|
-
- RS-02: hash de senhas / proteção de dados sensíveis (OWASP A02)
|
|
22
|
-
- RS-03: controle de acesso por recurso (OWASP A01)
|
|
23
|
-
- RS-04: auditoria de dependências sem CVE HIGH/CRITICAL (OWASP A06)
|
|
24
|
-
- RS-05: secrets via variáveis de ambiente — nunca em código
|
|
25
|
-
- Requisitos específicos do domínio do projeto
|
|
26
|
-
- **Stack Técnica** — tabela por camada com versões fixas
|
|
27
|
-
- **Integrações Externas** — tabela: sistema, tipo, protocolo, direção, dados, responsável
|
|
28
|
-
- **Restrições** — prazo, orçamento, técnicas, compliance
|
|
29
|
-
- **Fora do Escopo (v1)** — lista explícita
|
|
30
|
-
- **Riscos e Mitigações** — tabela com probabilidade, impacto e mitigação concreta
|
|
31
|
-
- **Checklist de Aprovação** — checkboxes para revisão humana
|
|
32
|
-
|
|
33
|
-
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.
|
|
34
|
-
|
|
35
|
-
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
|
+
# Comando: /generate-design
|
|
2
|
+
|
|
3
|
+
## Descrição
|
|
4
|
+
Inicia o Método DARE (fase Design) gerando `DARE/DESIGN.md` a partir de uma ideia inicial.
|
|
5
|
+
|
|
6
|
+
## Instruções para o Cursor Composer
|
|
7
|
+
|
|
8
|
+
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.
|
|
9
|
+
|
|
10
|
+
2. **Leia o template:** `templates/DESIGN-template.md` — siga a estrutura fielmente.
|
|
11
|
+
|
|
12
|
+
3. **Gere `DARE/DESIGN.md` com as seções obrigatórias:**
|
|
13
|
+
|
|
14
|
+
- **Descrição** — 3 a 5 frases: o que é, qual problema resolve, quem usa
|
|
15
|
+
- **Objetivos e Métricas de Sucesso** — tabela numerada (O-01, O-02…) com métrica verificável e meta numérica
|
|
16
|
+
- **Stakeholders** — tabela: papel, time, interesse principal
|
|
17
|
+
- **Requisitos Funcionais** — tabela numerada (RF-01, RF-02…) com prioridade MUST/SHOULD/COULD e critério de aceite
|
|
18
|
+
- **Requisitos Não-Funcionais** — tabela numerada (RNF-01…): performance, disponibilidade, segurança, observabilidade, manutenibilidade
|
|
19
|
+
- **Requisitos de Segurança** — tabela numerada (RS-01…). **Sempre inclua:**
|
|
20
|
+
- RS-01: validação de entrada no servidor (OWASP A03)
|
|
21
|
+
- RS-02: hash de senhas / proteção de dados sensíveis (OWASP A02)
|
|
22
|
+
- RS-03: controle de acesso por recurso (OWASP A01)
|
|
23
|
+
- RS-04: auditoria de dependências sem CVE HIGH/CRITICAL (OWASP A06)
|
|
24
|
+
- RS-05: secrets via variáveis de ambiente — nunca em código
|
|
25
|
+
- Requisitos específicos do domínio do projeto
|
|
26
|
+
- **Stack Técnica** — tabela por camada com versões fixas
|
|
27
|
+
- **Integrações Externas** — tabela: sistema, tipo, protocolo, direção, dados, responsável
|
|
28
|
+
- **Restrições** — prazo, orçamento, técnicas, compliance
|
|
29
|
+
- **Fora do Escopo (v1)** — lista explícita
|
|
30
|
+
- **Riscos e Mitigações** — tabela com probabilidade, impacto e mitigação concreta
|
|
31
|
+
- **Checklist de Aprovação** — checkboxes para revisão humana
|
|
32
|
+
|
|
33
|
+
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.
|
|
34
|
+
|
|
35
|
+
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`."_
|