@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,142 +1,184 @@
|
|
|
1
|
-
# Comando: /generate-tasks
|
|
2
|
-
|
|
3
|
-
## Descrição
|
|
4
|
-
Avança o Método DARE lendo o Blueprint aprovado e gerando os **três artefatos**
|
|
5
|
-
da fase de execução: `TASKS.md` (visão humana), `dare-dag.yaml` (grafo
|
|
6
|
-
executável pelo CLI) e `EXECUTION/task-<id>.md` (specs detalhadas por task).
|
|
7
|
-
|
|
8
|
-
## Pré-requisitos
|
|
9
|
-
|
|
10
|
-
- `DARE/BLUEPRINT.md` aprovado pelo usuário.
|
|
11
|
-
- Você deve seguir as regras de construção do DAG definidas em
|
|
12
|
-
`.cursor/rules/skill-dag-runner.mdc` — leia antes de gerar.
|
|
13
|
-
|
|
14
|
-
## Instruções para o Cursor Composer
|
|
15
|
-
|
|
16
|
-
### 1. Ler o contexto
|
|
17
|
-
|
|
18
|
-
- Leia `$ARGUMENTS` (geralmente `DARE/BLUEPRINT.md`).
|
|
19
|
-
- Leia os templates: `templates/TASKS-template.md` e `templates/TASK-SPEC-template.md`.
|
|
20
|
-
- Leia `.cursorrules` para convenções do projeto.
|
|
21
|
-
- Leia a skill `skill-dag-runner.mdc` para regras de DAG (depends_on mínimo,
|
|
22
|
-
complexity, prompt self-contained, output cap 4000, parent context 2000).
|
|
23
|
-
|
|
24
|
-
### 2. Decompor o Blueprint em tasks atômicas
|
|
25
|
-
|
|
26
|
-
- Cada fase do Blueprint vira tasks pequenas o suficiente para um único prompt
|
|
27
|
-
do Composer.
|
|
28
|
-
- Tarefas de segurança (FormRequests, middlewares, Bcrypt, rate limit) devem
|
|
29
|
-
ter tasks específicas ou estar explícitas nas tasks relevantes.
|
|
30
|
-
- Atribua `complexity` a cada task: LOW / MED / HIGH.
|
|
31
|
-
|
|
32
|
-
#### Regras inegociáveis de ordenação
|
|
33
|
-
|
|
34
|
-
1. **A primeira task deve preparar o ambiente local** — Dockerfile +
|
|
35
|
-
`docker-compose.yml` + healthcheck. Sem isso o Ralph Loop não tem onde
|
|
36
|
-
rodar build/test/lint. Exceção: projeto que já vive em monorepo
|
|
37
|
-
containerizado.
|
|
38
|
-
2. **Não crie task "Ralph Loop final" / "Hardening final"** — o Ralph Loop
|
|
39
|
-
roda automático em cada `dare execute --complete`. Não é uma task; é um
|
|
40
|
-
gate por task.
|
|
41
|
-
3. **Tests devem ter assertions reais** desde a task que os escreve.
|
|
42
|
-
Placeholders (`assertTrue(true)` etc.) fazem o gate `test` falhar e a
|
|
43
|
-
task vai para FAILED.
|
|
44
|
-
|
|
45
|
-
### 3. Gerar `DARE/TASKS.md` (visão humana)
|
|
46
|
-
|
|
47
|
-
Tabela com todas as tasks e dependências em formato legível:
|
|
48
|
-
|
|
49
|
-
```markdown
|
|
50
|
-
| ID | Título | Status | Depends On | Complexity |
|
|
51
|
-
|----------|---------------------------|-------------|------------------|------------|
|
|
52
|
-
| task-001 | Setup project structure | ⏳ PENDING | — | LOW |
|
|
53
|
-
| task-002 | DB migrations | ⏳ PENDING | — | MED |
|
|
54
|
-
| task-003 | Auth controllers | ⏳ PENDING | task-001, 002 | HIGH |
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
Inclua: total de tasks, fases agrupadas, tempo estimado, próximos passos.
|
|
58
|
-
|
|
59
|
-
### 4. Gerar `DARE/dare-dag.yaml` (grafo executável)
|
|
60
|
-
|
|
61
|
-
Schema canônico (alinhado com `skill-dag-runner.mdc`):
|
|
62
|
-
|
|
63
|
-
```yaml
|
|
64
|
-
title: "<Nome do Projeto> - Development Tasks"
|
|
65
|
-
version: "1.0.0"
|
|
66
|
-
|
|
67
|
-
limits:
|
|
68
|
-
parent_context_chars: 2000
|
|
69
|
-
task_output_chars: 4000
|
|
70
|
-
timeout_seconds: 600
|
|
71
|
-
|
|
72
|
-
models:
|
|
73
|
-
cursor: { HIGH: gpt-5.3-codex, MED: composer-2, LOW: auto-low }
|
|
74
|
-
claude: { HIGH: claude-sonnet-4-5, MED: claude-haiku-4, LOW: claude-haiku-4 }
|
|
75
|
-
antigravity: { HIGH: gemini-2.5-pro, MED: gemini-2.5-flash, LOW: gemini-2.5-flash }
|
|
76
|
-
|
|
77
|
-
tasks:
|
|
78
|
-
- id: task-001
|
|
79
|
-
title: "Setup project structure"
|
|
80
|
-
depends_on: []
|
|
81
|
-
complexity: LOW
|
|
82
|
-
spec_file: EXECUTION/task-001.md
|
|
83
|
-
subtask_prompt: |
|
|
84
|
-
Setup base project structure following DARE/BLUEPRINT.md.
|
|
85
|
-
Create directories: src/, tests/, docs/. Initialize package files.
|
|
86
|
-
No business logic yet. Validation gate: project builds.
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
**Regras inegociáveis:**
|
|
90
|
-
- `id` em kebab-case e único.
|
|
91
|
-
- `depends_on` mínimo — só adicione quando a task filha **literalmente** não
|
|
92
|
-
pode começar sem o output da pai (arquivo, schema, decisão exportada).
|
|
93
|
-
- `subtask_prompt` totalmente self-contained (o subagente recebe só ele +
|
|
94
|
-
snippets de 2000 chars dos pais).
|
|
95
|
-
- Pelo menos 2 tasks no rank 0 (com `depends_on: []`) para haver paralelismo
|
|
96
|
-
real.
|
|
97
|
-
- Cadeia linear (`001 → 002 → 003 → ...`) é antipattern. Reanalise.
|
|
98
|
-
|
|
99
|
-
### 5. Gerar `DARE/EXECUTION/task-<id>.md` (uma spec por task)
|
|
100
|
-
|
|
101
|
-
Para CADA task em `dare-dag.yaml`, crie a spec correspondente seguindo
|
|
102
|
-
`templates/TASK-SPEC-template.md`:
|
|
103
|
-
|
|
104
|
-
- **Objetivo** claro
|
|
105
|
-
- **Arquivos a criar/modificar**
|
|
106
|
-
- **Validation Gates** (build, test, lint específicos da stack)
|
|
107
|
-
- **Testes esperados**
|
|
108
|
-
- **Considerações de segurança**
|
|
109
|
-
- **Próxima task** sugerida
|
|
110
|
-
|
|
111
|
-
O `subtask_prompt` no YAML pode referenciar a spec via
|
|
112
|
-
`spec_file: EXECUTION/task-<id>.md` para que o subagente leia a spec na hora
|
|
113
|
-
de executar.
|
|
114
|
-
|
|
115
|
-
###
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
1
|
+
# Comando: /generate-tasks
|
|
2
|
+
|
|
3
|
+
## Descrição
|
|
4
|
+
Avança o Método DARE lendo o Blueprint aprovado e gerando os **três artefatos**
|
|
5
|
+
da fase de execução: `TASKS.md` (visão humana), `dare-dag.yaml` (grafo
|
|
6
|
+
executável pelo CLI) e `EXECUTION/task-<id>.md` (specs detalhadas por task).
|
|
7
|
+
|
|
8
|
+
## Pré-requisitos
|
|
9
|
+
|
|
10
|
+
- `DARE/BLUEPRINT.md` aprovado pelo usuário.
|
|
11
|
+
- Você deve seguir as regras de construção do DAG definidas em
|
|
12
|
+
`.cursor/rules/skill-dag-runner.mdc` — leia antes de gerar.
|
|
13
|
+
|
|
14
|
+
## Instruções para o Cursor Composer
|
|
15
|
+
|
|
16
|
+
### 1. Ler o contexto
|
|
17
|
+
|
|
18
|
+
- Leia `$ARGUMENTS` (geralmente `DARE/BLUEPRINT.md`).
|
|
19
|
+
- Leia os templates: `templates/TASKS-template.md` e `templates/TASK-SPEC-template.md`.
|
|
20
|
+
- Leia `.cursorrules` para convenções do projeto.
|
|
21
|
+
- Leia a skill `skill-dag-runner.mdc` para regras de DAG (depends_on mínimo,
|
|
22
|
+
complexity, prompt self-contained, output cap 4000, parent context 2000).
|
|
23
|
+
|
|
24
|
+
### 2. Decompor o Blueprint em tasks atômicas
|
|
25
|
+
|
|
26
|
+
- Cada fase do Blueprint vira tasks pequenas o suficiente para um único prompt
|
|
27
|
+
do Composer.
|
|
28
|
+
- Tarefas de segurança (FormRequests, middlewares, Bcrypt, rate limit) devem
|
|
29
|
+
ter tasks específicas ou estar explícitas nas tasks relevantes.
|
|
30
|
+
- Atribua `complexity` a cada task: LOW / MED / HIGH.
|
|
31
|
+
|
|
32
|
+
#### Regras inegociáveis de ordenação
|
|
33
|
+
|
|
34
|
+
1. **A primeira task deve preparar o ambiente local** — Dockerfile +
|
|
35
|
+
`docker-compose.yml` + healthcheck. Sem isso o Ralph Loop não tem onde
|
|
36
|
+
rodar build/test/lint. Exceção: projeto que já vive em monorepo
|
|
37
|
+
containerizado.
|
|
38
|
+
2. **Não crie task "Ralph Loop final" / "Hardening final"** — o Ralph Loop
|
|
39
|
+
roda automático em cada `dare execute --complete`. Não é uma task; é um
|
|
40
|
+
gate por task.
|
|
41
|
+
3. **Tests devem ter assertions reais** desde a task que os escreve.
|
|
42
|
+
Placeholders (`assertTrue(true)` etc.) fazem o gate `test` falhar e a
|
|
43
|
+
task vai para FAILED.
|
|
44
|
+
|
|
45
|
+
### 3. Gerar `DARE/TASKS.md` (visão humana)
|
|
46
|
+
|
|
47
|
+
Tabela com todas as tasks e dependências em formato legível:
|
|
48
|
+
|
|
49
|
+
```markdown
|
|
50
|
+
| ID | Título | Status | Depends On | Complexity |
|
|
51
|
+
|----------|---------------------------|-------------|------------------|------------|
|
|
52
|
+
| task-001 | Setup project structure | ⏳ PENDING | — | LOW |
|
|
53
|
+
| task-002 | DB migrations | ⏳ PENDING | — | MED |
|
|
54
|
+
| task-003 | Auth controllers | ⏳ PENDING | task-001, 002 | HIGH |
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Inclua: total de tasks, fases agrupadas, tempo estimado, próximos passos.
|
|
58
|
+
|
|
59
|
+
### 4. Gerar `DARE/dare-dag.yaml` (grafo executável)
|
|
60
|
+
|
|
61
|
+
Schema canônico (alinhado com `skill-dag-runner.mdc`):
|
|
62
|
+
|
|
63
|
+
```yaml
|
|
64
|
+
title: "<Nome do Projeto> - Development Tasks"
|
|
65
|
+
version: "1.0.0"
|
|
66
|
+
|
|
67
|
+
limits:
|
|
68
|
+
parent_context_chars: 2000
|
|
69
|
+
task_output_chars: 4000
|
|
70
|
+
timeout_seconds: 600
|
|
71
|
+
|
|
72
|
+
models:
|
|
73
|
+
cursor: { HIGH: gpt-5.3-codex, MED: composer-2, LOW: auto-low }
|
|
74
|
+
claude: { HIGH: claude-sonnet-4-5, MED: claude-haiku-4, LOW: claude-haiku-4 }
|
|
75
|
+
antigravity: { HIGH: gemini-2.5-pro, MED: gemini-2.5-flash, LOW: gemini-2.5-flash }
|
|
76
|
+
|
|
77
|
+
tasks:
|
|
78
|
+
- id: task-001
|
|
79
|
+
title: "Setup project structure"
|
|
80
|
+
depends_on: []
|
|
81
|
+
complexity: LOW
|
|
82
|
+
spec_file: EXECUTION/task-001.md
|
|
83
|
+
subtask_prompt: |
|
|
84
|
+
Setup base project structure following DARE/BLUEPRINT.md.
|
|
85
|
+
Create directories: src/, tests/, docs/. Initialize package files.
|
|
86
|
+
No business logic yet. Validation gate: project builds.
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Regras inegociáveis:**
|
|
90
|
+
- `id` em kebab-case e único.
|
|
91
|
+
- `depends_on` mínimo — só adicione quando a task filha **literalmente** não
|
|
92
|
+
pode começar sem o output da pai (arquivo, schema, decisão exportada).
|
|
93
|
+
- `subtask_prompt` totalmente self-contained (o subagente recebe só ele +
|
|
94
|
+
snippets de 2000 chars dos pais).
|
|
95
|
+
- Pelo menos 2 tasks no rank 0 (com `depends_on: []`) para haver paralelismo
|
|
96
|
+
real.
|
|
97
|
+
- Cadeia linear (`001 → 002 → 003 → ...`) é antipattern. Reanalise.
|
|
98
|
+
|
|
99
|
+
### 5. Gerar `DARE/EXECUTION/task-<id>.md` (uma spec por task)
|
|
100
|
+
|
|
101
|
+
Para CADA task em `dare-dag.yaml`, crie a spec correspondente seguindo
|
|
102
|
+
`templates/TASK-SPEC-template.md`:
|
|
103
|
+
|
|
104
|
+
- **Objetivo** claro
|
|
105
|
+
- **Arquivos a criar/modificar**
|
|
106
|
+
- **Validation Gates** (build, test, lint específicos da stack)
|
|
107
|
+
- **Testes esperados**
|
|
108
|
+
- **Considerações de segurança**
|
|
109
|
+
- **Próxima task** sugerida
|
|
110
|
+
|
|
111
|
+
O `subtask_prompt` no YAML pode referenciar a spec via
|
|
112
|
+
`spec_file: EXECUTION/task-<id>.md` para que o subagente leia a spec na hora
|
|
113
|
+
de executar.
|
|
114
|
+
|
|
115
|
+
### 5.1 ANTI-STUB CONTRACT (inegociável)
|
|
116
|
+
|
|
117
|
+
> Tasks geradas com `subtask_prompt` ou spec genéricos forçam o agente a inventar — e ele vai produzir mock, stub ou esqueleto. **Não é negociável**. O comando `dare review <task-id>` (v2.17+) detecta isso e marca a task como FAILED.
|
|
118
|
+
|
|
119
|
+
Cada `subtask_prompt` e `EXECUTION/task-<id>.md` deve atender este contrato:
|
|
120
|
+
|
|
121
|
+
**O `subtask_prompt` deve ser auto-suficiente**
|
|
122
|
+
|
|
123
|
+
O subagente recebe **apenas** o `subtask_prompt` + snippets de 2000 chars dos pais. Tudo que ele precisa para implementar **sem inventar** deve estar ali ou na `spec_file`. Inclua:
|
|
124
|
+
|
|
125
|
+
- Caminho exato dos arquivos a criar/modificar
|
|
126
|
+
- Assinaturas exatas das funções/endpoints (`fn name(params: T) -> R`)
|
|
127
|
+
- Schema de request/response com tipos
|
|
128
|
+
- Validações específicas (não "validar input" — `email: regex /^.../`, `senha: ≥ 8 chars + 1 maiúscula + 1 dígito`)
|
|
129
|
+
- Edge cases enumerados (input vazio, duplicado, expirado, sem permissão)
|
|
130
|
+
- Lista de testes esperados com nome + comportamento (`should_reject_duplicate_email_with_409`)
|
|
131
|
+
|
|
132
|
+
**A `spec_file` (`EXECUTION/task-<id>.md`) deve ter Definition of Done anti-stub:**
|
|
133
|
+
|
|
134
|
+
```markdown
|
|
135
|
+
## Definition of Done (ANTI-STUB)
|
|
136
|
+
|
|
137
|
+
- [ ] Nenhum `TODO`, `FIXME`, `XXX` ou `HACK` em arquivos modificados
|
|
138
|
+
- [ ] Nenhuma função vazia (`fn x() {}`, `def x(): pass`, `function x() {}`)
|
|
139
|
+
- [ ] Nenhum `throw new Error('not implemented')`, `unimplemented!()`, `todo!()`, `NotImplementedError`
|
|
140
|
+
- [ ] Nenhum `return null` / `return undefined` / `return {}` como única statement de função pública
|
|
141
|
+
- [ ] Mocks **somente** dentro de `*.test.*`, `*.spec.*`, `__tests__/`, `tests/`, `spec/` — NUNCA em código de produção
|
|
142
|
+
- [ ] Todos os endpoints declarados na seção 3 retornam dados reais (não fixos / hardcoded)
|
|
143
|
+
- [ ] Cada validação da spec produz erro real com status code correto (testado)
|
|
144
|
+
- [ ] Cada edge case da spec tem teste unitário ou integração demonstrando comportamento
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Verificação automatizável:** o agente que executar a task vai rodar `dare review <id>` antes de marcar DONE. Se a review falhar, a task volta para revisão.
|
|
148
|
+
|
|
149
|
+
**Sinais de spec rasa** (auto-validar antes de salvar):
|
|
150
|
+
|
|
151
|
+
- ❌ "Implementar X" — sem assinatura, sem retorno, sem validações
|
|
152
|
+
- ❌ "Tratar erros adequadamente" — quais erros? como? que código?
|
|
153
|
+
- ❌ "Adicionar validações" — quais regras?
|
|
154
|
+
- ❌ Arquivos listados sem dizer **o que cada um contém**
|
|
155
|
+
- ✅ "Implementar `POST /auth/login` retornando `{ token: string, refresh: string }` com 200 se credenciais válidas, 401 se inválidas, 429 se rate limit"
|
|
156
|
+
|
|
157
|
+
### 6. Validar consistência dos 3 artefatos
|
|
158
|
+
|
|
159
|
+
- Mesmos `id`s em `TASKS.md`, `dare-dag.yaml` e `EXECUTION/task-*.md`.
|
|
160
|
+
- Mesmas `depends_on` em `TASKS.md` e `dare-dag.yaml`.
|
|
161
|
+
- Mesmas `complexity`.
|
|
162
|
+
- Sem ciclos.
|
|
163
|
+
|
|
164
|
+
### 7. Regenerar a visualização do DAG
|
|
165
|
+
|
|
166
|
+
Depois de salvar o `dare-dag.yaml`, rode:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
dare dag viz -o DARE/dag-graph.mmd
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Isso reescreve `DARE/dag-graph.mmd` (Mermaid) refletindo o grafo atualizado.
|
|
173
|
+
O usuário pode abrir o arquivo no Cursor com a extensão Mermaid Preview.
|
|
174
|
+
|
|
175
|
+
### 8. Mensagem final ao usuário
|
|
176
|
+
|
|
177
|
+
> Gerados 4 artefatos da fase de execução:
|
|
178
|
+
> - `DARE/TASKS.md` ([N] tasks, visão humana)
|
|
179
|
+
> - `DARE/dare-dag.yaml` (grafo executável, [N] ranks paralelos)
|
|
180
|
+
> - `DARE/EXECUTION/task-*.md` ([N] specs detalhadas)
|
|
181
|
+
> - `DARE/dag-graph.mmd` (visualização Mermaid do DAG)
|
|
182
|
+
>
|
|
183
|
+
> Revise (abra `dag-graph.mmd` para ver o grafo). Para executar:
|
|
184
|
+
> `/run-dag` ou `dare execute --next`.
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Comando: /refine-task
|
|
2
|
+
|
|
3
|
+
## Descrição
|
|
4
|
+
|
|
5
|
+
Analisa a complexidade de uma task e, quando alta, **quebra em sub-tasks menores** com escopo bem delimitado. Pode ser chamada:
|
|
6
|
+
|
|
7
|
+
- Automaticamente pela skill `/generate-tasks` após gerar o DAG (para cada task ≥ MED)
|
|
8
|
+
- Manualmente pelo dev: `/refine-task task-034`
|
|
9
|
+
- Após mudança de escopo: quando o BLUEPRINT mudou e uma task ficou grande
|
|
10
|
+
|
|
11
|
+
A camada determinística (heurística de complexidade) é feita pelo CLI: `dare refine <id>`. Este comando adiciona a camada **semântica** — você lê a spec, decide se a quebra é necessária e produz sub-tasks coerentes.
|
|
12
|
+
|
|
13
|
+
## Instruções para o Cursor Composer
|
|
14
|
+
|
|
15
|
+
### 1. Rodar a heurística determinística
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
dare refine $ARGUMENTS --split --format json > .dare/refine-$ARGUMENTS.json
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Esse JSON traz:
|
|
22
|
+
- `report.score`, `report.level` (LOW/MED/HIGH/CRITICAL)
|
|
23
|
+
- `report.signals` — explica a pontuação
|
|
24
|
+
- `report.recommendsSplit` — true se HIGH/CRITICAL
|
|
25
|
+
- `proposal.subtasks` — quebra inicial coarse (por diretório)
|
|
26
|
+
|
|
27
|
+
### 2. Decidir se vale quebrar
|
|
28
|
+
|
|
29
|
+
**Quebrar quando:**
|
|
30
|
+
- `recommendsSplit: true` (HIGH/CRITICAL)
|
|
31
|
+
- Mais de 6 arquivos a criar/modificar
|
|
32
|
+
- Mistura responsabilidades (modelo + controller + teste + migration)
|
|
33
|
+
- Inclui refactor + feature juntos
|
|
34
|
+
- Keyword "pesada" (refactor/migrate/integrate) + score MED+
|
|
35
|
+
|
|
36
|
+
**Manter inteira quando:**
|
|
37
|
+
- LOW ou MED baixo
|
|
38
|
+
- Todos arquivos no mesmo módulo
|
|
39
|
+
- Cabe em uma conversa do Composer (15–60 min)
|
|
40
|
+
|
|
41
|
+
### 3. Se quebrar — eixos de split
|
|
42
|
+
|
|
43
|
+
| Eixo | Quando |
|
|
44
|
+
|---|---|
|
|
45
|
+
| **Por camada** | Modelo / Controller / Service / Test separados |
|
|
46
|
+
| **Por endpoint** | 4 endpoints REST → 4 sub-tasks |
|
|
47
|
+
| **Por feature** | Auth = register + login + refresh → split por verbo |
|
|
48
|
+
| **Refactor + feature** | "1. refactor X" + "2. feature Y em cima" |
|
|
49
|
+
| **Migration + código** | "1. migration + seeds" + "2. código novo" |
|
|
50
|
+
|
|
51
|
+
Cada sub-task precisa de:
|
|
52
|
+
- `subtask_prompt` auto-suficiente (Anti-Stub Contract!)
|
|
53
|
+
- spec própria em `DARE/EXECUTION/<sub-id>.md`
|
|
54
|
+
- `depends_on` mínimo mas correto
|
|
55
|
+
- complexity honesta — se sub ainda for HIGH, quebrar de novo
|
|
56
|
+
|
|
57
|
+
### 4. Emitir verdito
|
|
58
|
+
|
|
59
|
+
`.dare/refine-verdict-$ARGUMENTS.json`:
|
|
60
|
+
|
|
61
|
+
```json
|
|
62
|
+
{
|
|
63
|
+
"manageable": false,
|
|
64
|
+
"reasons": ["Score 18 (HIGH) — 7 endpoints + migration", "Mistura refactor com features novas"],
|
|
65
|
+
"proposedSubtasks": [
|
|
66
|
+
{
|
|
67
|
+
"id": "task-034a",
|
|
68
|
+
"title": "Refactor UserService",
|
|
69
|
+
"files": ["src/services/UserService.ts", "tests/services/UserService.test.ts"],
|
|
70
|
+
"rationale": "Refactor isolado antes da feature",
|
|
71
|
+
"estimatedLevel": "MED"
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Se manuseável:
|
|
78
|
+
|
|
79
|
+
```json
|
|
80
|
+
{
|
|
81
|
+
"manageable": true,
|
|
82
|
+
"reasons": ["Score 7 (MED), 4 arquivos mesmo módulo, 6 testes"]
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 5. Aplicar o split
|
|
87
|
+
|
|
88
|
+
1. Edite `DARE/dare-dag.yaml` substituindo a task pelas sub-tasks
|
|
89
|
+
2. Crie as specs em `DARE/EXECUTION/<sub-id>.md` (template + Anti-Stub Contract)
|
|
90
|
+
3. Atualize `DARE/TASKS.md` (visão humana)
|
|
91
|
+
4. Regenere Mermaid: `dare dag viz -o DARE/dag-graph.mmd`
|
|
92
|
+
5. Marque a task original como SPLIT no TASKS.md
|
|
93
|
+
|
|
94
|
+
### 6. Mensagem ao usuário
|
|
95
|
+
|
|
96
|
+
Manuseável:
|
|
97
|
+
> ✅ Task `$ARGUMENTS` está bem-dimensionada (score X, level Y). Sem split.
|
|
98
|
+
|
|
99
|
+
Quebrada:
|
|
100
|
+
> 🪓 Task `$ARGUMENTS` quebrada em N sub-tasks: [lista]. Revise com `dare validate` e `dare dag viz`.
|
|
101
|
+
|
|
102
|
+
## Regras inegociáveis
|
|
103
|
+
|
|
104
|
+
- Não quebrar tasks LOW
|
|
105
|
+
- Não inventar dependências falsas
|
|
106
|
+
- Cada sub-task testável independentemente
|
|
107
|
+
- Anti-Stub Contract aplica em cada sub-task
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Comando: /review-task
|
|
2
|
+
|
|
3
|
+
## Descrição
|
|
4
|
+
|
|
5
|
+
Audita uma task **implementada** cruzando a spec (`DARE/EXECUTION/<id>.md`) com os arquivos reais que ela tocou. Detecta stubs, mocks fora de testes, funções vazias, TODOs, retorno-fantasma — **e** valida critério-a-critério se a implementação satisfaz o que a spec prometeu.
|
|
6
|
+
|
|
7
|
+
Esta é a camada **semântica** do review. A camada estática (regex / patterns) já é feita automaticamente pelo CLI quando você roda `dare review <task-id>`. Este comando combina as duas: rode a estática via CLI, gere um verdito semântico aqui, e produza um relatório fundido.
|
|
8
|
+
|
|
9
|
+
## Quando rodar
|
|
10
|
+
|
|
11
|
+
- Antes de marcar uma task como DONE (gate obrigatório no Definition of Done do TASK-SPEC)
|
|
12
|
+
- Quando o `dare review <id>` estático passa mas você quer validação adicional contra a spec
|
|
13
|
+
- Quando o dev pede revisão manual: `/review-task task-034`
|
|
14
|
+
|
|
15
|
+
## Instruções para o Cursor Composer
|
|
16
|
+
|
|
17
|
+
### 1. Validar argumento
|
|
18
|
+
|
|
19
|
+
`$ARGUMENTS` deve conter o `task-id`. Se vazio, peça.
|
|
20
|
+
|
|
21
|
+
### 2. Rodar a camada estática primeiro
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
dare review $ARGUMENTS --format json > .dare/review-static-$ARGUMENTS.json
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Leia esse JSON. Se houver erros estáticos, reporte-os e pergunte se quer prosseguir com a análise semântica (geralmente não vale — corrija primeiro).
|
|
28
|
+
|
|
29
|
+
### 3. Carregar contexto
|
|
30
|
+
|
|
31
|
+
- `DARE/EXECUTION/$ARGUMENTS.md` — spec
|
|
32
|
+
- Cada arquivo listado na seção 3 da spec
|
|
33
|
+
- `DARE/BLUEPRINT.md` — contratos referenciados
|
|
34
|
+
|
|
35
|
+
### 4. Auditoria critério-a-critério
|
|
36
|
+
|
|
37
|
+
Para **cada** item das seções abaixo da spec, marque ✅ / ❌ com evidência (arquivo + linha):
|
|
38
|
+
|
|
39
|
+
- **4.1 Objetivo (seção 1):** estado observável foi atingido?
|
|
40
|
+
- **4.2 Arquivos (seção 3):** todos existem com conteúdo descrito? Há arquivos extras suspeitos?
|
|
41
|
+
- **4.3 Implementação (seção 4):** cada passo executado? assinaturas exatas? validações com regras concretas (não "valida email" — a regex específica)?
|
|
42
|
+
- **4.4 Testes:** cada teste listado existe? Tem assertions reais? Edge cases cobertos?
|
|
43
|
+
- **4.5 Segurança (seção 5):** input validation, autorização, secrets, SQL injection — tudo conforme spec?
|
|
44
|
+
- **4.6 Anti-Stub (seção 7):** a camada estática já checou — só anote se você encontrar algo que regex não pegaria (ex.: dados hardcoded disfarçados de "do banco").
|
|
45
|
+
|
|
46
|
+
### 5. Emitir verdito semântico
|
|
47
|
+
|
|
48
|
+
Salve em `.dare/review-semantic-$ARGUMENTS.json`:
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{
|
|
52
|
+
"passed": true,
|
|
53
|
+
"unmetCriteria": [],
|
|
54
|
+
"notes": "Resumo de 1-3 frases do que foi verificado"
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Se algo falhou:
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"passed": false,
|
|
63
|
+
"unmetCriteria": [
|
|
64
|
+
"Seção 4.3: validação de senha não implementa regex de força",
|
|
65
|
+
"Seção 4.4: teste de 'email duplicado' não existe"
|
|
66
|
+
],
|
|
67
|
+
"notes": "2 critérios não atendidos em src/auth/register.ts"
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### 6. Rodar o review fundido
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
dare review $ARGUMENTS --from-agent .dare/review-semantic-$ARGUMENTS.json
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Exit code 0 = task pode ir para DONE; 1 = não pode.
|
|
78
|
+
|
|
79
|
+
### 7. Mensagem final
|
|
80
|
+
|
|
81
|
+
Se passou:
|
|
82
|
+
> ✅ Task `$ARGUMENTS` aprovada. Marque como DONE: `dare execute --complete $ARGUMENTS`
|
|
83
|
+
|
|
84
|
+
Se falhou:
|
|
85
|
+
> ❌ Task `$ARGUMENTS` não passou. Itens a corrigir: [lista]. Após corrigir, rode `/review-task $ARGUMENTS` novamente.
|
|
86
|
+
|
|
87
|
+
## Regras inegociáveis
|
|
88
|
+
|
|
89
|
+
- **Não invente** que algo está implementado se você não viu o código.
|
|
90
|
+
- **Não aceite** mocks/stubs em código de produção mesmo que "façam o teste passar".
|
|
91
|
+
- **Mocks são OK** dentro de `*.test.*`, `*.spec.*`, `__tests__/`, `tests/`, `spec/`.
|