@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
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Executa o grafo de tasks definido em DARE/dare-dag.yaml usando Cursor como executor e o CLI dare como orquestrador. Sem API keys — usa o plano nativo da IDE. O canvas ao vivo fica em DARE/.canvas.md.
|
|
3
|
+
globs: DARE/dare-dag.yaml,DARE/EXECUTION/**,DARE/.canvas.md
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill: DAG Run — Executar o grafo
|
|
8
|
+
|
|
9
|
+
Esta skill **executa** o grafo que já foi construído — não regenera o
|
|
10
|
+
`dare-dag.yaml`, não modifica o BLUEPRINT, não cria specs novas. Apenas
|
|
11
|
+
roda as tasks na ordem topológica correta.
|
|
12
|
+
|
|
13
|
+
> Para **(re)construir** o grafo, use `skill-dag-build`.
|
|
14
|
+
> Para **visualizar** o grafo, use o comando `/dag-viz`.
|
|
15
|
+
> Para **build + run num único passo**, use `skill-dag-runner`.
|
|
16
|
+
|
|
17
|
+
> **Sem API keys.** Você (Cursor) usa o plano nativo da IDE. O CLI `dare`
|
|
18
|
+
> apenas coordena estado, monta prompts e atualiza o canvas.
|
|
19
|
+
|
|
20
|
+
## Quando usar
|
|
21
|
+
|
|
22
|
+
- `DARE/dare-dag.yaml` está aprovado e pronto
|
|
23
|
+
- As specs em `DARE/EXECUTION/task-<id>.md` estão geradas
|
|
24
|
+
- É hora de implementar as tasks na ordem do grafo
|
|
25
|
+
- O usuário aprovou os ANTI-STUB contracts
|
|
26
|
+
|
|
27
|
+
## Pré-requisitos
|
|
28
|
+
|
|
29
|
+
- `DARE/dare-dag.yaml` existe e foi aprovado pelo usuário
|
|
30
|
+
- Specs em `DARE/EXECUTION/task-<id>.md` geradas (se não, use `skill-dag-build`)
|
|
31
|
+
- `dare` disponível no PATH (`npm i -g @dewtech/dare-cli`)
|
|
32
|
+
|
|
33
|
+
## Procedimento
|
|
34
|
+
|
|
35
|
+
### 1. Validar pré-condições
|
|
36
|
+
|
|
37
|
+
- Confirme que `DARE/dare-dag.yaml` existe. Se não, oriente
|
|
38
|
+
`/generate-blueprint` ou `skill-dag-build`
|
|
39
|
+
- Leia o YAML e verifique: sem ciclos, ids únicos, ranks paralelizáveis
|
|
40
|
+
- Liste para o usuário: total de tasks, ranks, próximas ready
|
|
41
|
+
|
|
42
|
+
### 2. Pegar próximas tasks
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
dare execute --next
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
O CLI imprime as tasks **ready** do rank atual com o prompt completo
|
|
49
|
+
(snippets de até 2000 chars dos outputs dos pais já costurados). Use esses
|
|
50
|
+
prompts diretamente.
|
|
51
|
+
|
|
52
|
+
### 3. Sugerir abrir o canvas
|
|
53
|
+
|
|
54
|
+
Antes de começar, peça ao usuário abrir `DARE/.canvas.md` em outra aba do
|
|
55
|
+
Cursor. Esse é o feedback visual ao vivo da execução.
|
|
56
|
+
|
|
57
|
+
### 4. Executar cada task
|
|
58
|
+
|
|
59
|
+
Para cada task ready:
|
|
60
|
+
|
|
61
|
+
1. Leia `spec_file` se houver (`DARE/EXECUTION/task-<id>.md`)
|
|
62
|
+
2. Implemente conforme o `subtask_prompt` — **não invente, não use mock fora de tests, sem TODOs**
|
|
63
|
+
3. Rode o Ralph Loop completo: build → test → lint
|
|
64
|
+
4. Registre o resultado no CLI:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# Sucesso
|
|
68
|
+
dare execute --complete task-001 --output "Resumo curto + paths dos arquivos criados/modificados"
|
|
69
|
+
|
|
70
|
+
# Falha
|
|
71
|
+
dare execute --fail task-002 --reason "Mensagem clara da falha"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 5. Avançar de rank
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
dare execute --next
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Se aparecer `✅ All tasks resolved`, todas terminaram. Reporte o resumo.
|
|
81
|
+
Caso contrário, continue executando o próximo rank.
|
|
82
|
+
|
|
83
|
+
### 6. Pós-execução
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
dare execute --status
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Snapshot do canvas + sumário (X DONE, Y FAILED, Z SKIPPED).
|
|
90
|
+
|
|
91
|
+
Para retentar tasks FAILED:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
dare execute --reset task-002
|
|
95
|
+
dare execute --next
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Comandos do orquestrador `dare`
|
|
99
|
+
|
|
100
|
+
| Comando | Função |
|
|
101
|
+
|---------|--------|
|
|
102
|
+
| `dare execute --next` | Próximas tasks ready com prompts compostos |
|
|
103
|
+
| `dare execute --complete <id> --output "..."` | Marca DONE |
|
|
104
|
+
| `dare execute --fail <id> --reason "..."` | Marca FAILED + cascade-skip |
|
|
105
|
+
| `dare execute --reset <id>` | Volta para PENDING |
|
|
106
|
+
| `dare execute --status` | Snapshot + sumário |
|
|
107
|
+
|
|
108
|
+
## Erros comuns
|
|
109
|
+
|
|
110
|
+
| Sintoma | Causa | Correção |
|
|
111
|
+
|---------|-------|----------|
|
|
112
|
+
| `dare-dag.yaml not found` | Não foi gerado | `/generate-blueprint` ou `skill-dag-build` |
|
|
113
|
+
| Cascata de SKIPPED | Pai falhou | Corrija pai → `dare execute --reset` → `--next` |
|
|
114
|
+
| Output truncado | Cap de 4000 chars | Escreva em arquivo, retorne resumo |
|
|
115
|
+
| Spec inconsistente | TASKS.md ≠ dare-dag.yaml | Re-gere com `skill-dag-build` |
|
|
116
|
+
|
|
117
|
+
## Quando NÃO usar
|
|
118
|
+
|
|
119
|
+
- Se `dare-dag.yaml` não existe — use `/generate-blueprint` ou `skill-dag-build`
|
|
120
|
+
- Se você quer só visualizar — use `/dag-viz`
|
|
121
|
+
- Se você quer build + run num único passo — `skill-dag-runner`
|
|
122
|
+
|
|
123
|
+
## Referências
|
|
124
|
+
|
|
125
|
+
- Schema: `DARE/dare-dag.yaml`
|
|
126
|
+
- Canvas: `DARE/.canvas.md`
|
|
127
|
+
- Specs: `DARE/EXECUTION/task-*.md`
|
|
128
|
+
- Status: `DARE/TASKS.md`
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Licença
|
|
133
|
+
|
|
134
|
+
Esta skill é parte do DARE Method e está sob licença MIT (D-001).
|
|
@@ -1,221 +1,221 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Como construir e executar grafos de tasks (DAG) do método DARE com paralelismo lógico via dare-dag.yaml. O Cursor é o executor; o CLI dare é orquestrador.
|
|
3
|
-
globs: DARE/dare-dag.yaml,DARE/EXECUTION/**,DARE/.canvas.md
|
|
4
|
-
alwaysApply: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Skill: DAG Task Runner
|
|
8
|
-
|
|
9
|
-
## Quando usar
|
|
10
|
-
|
|
11
|
-
- O `BLUEPRINT.md` foi aprovado e você precisa decompor em tasks executáveis
|
|
12
|
-
- O usuário pediu para começar a execução do DAG
|
|
13
|
-
- Existe `DARE/dare-dag.yaml` e você precisa entender, executar ou modificar
|
|
14
|
-
- Aparece o canvas `DARE/.canvas.md` durante uma execução
|
|
15
|
-
|
|
16
|
-
## Quem executa o quê
|
|
17
|
-
|
|
18
|
-
> **Você (Cursor) é o executor. O CLI `dare` é orquestrador.**
|
|
19
|
-
|
|
20
|
-
- A IDE em que você roda já está autenticada na conta do usuário
|
|
21
|
-
- Você lê o `dare-dag.yaml` e as specs em `DARE/EXECUTION/task-*.md`
|
|
22
|
-
- Você executa cada task — escreve código, roda testes, faz lint
|
|
23
|
-
- Depois de cada task, você chama o CLI para registrar o resultado:
|
|
24
|
-
- `dare execute --complete <task-id> --output "<resumo>"`
|
|
25
|
-
- `dare execute --fail <task-id> --reason "<mensagem>"`
|
|
26
|
-
- O CLI atualiza o canvas e popula o `dare-graph` automaticamente
|
|
27
|
-
|
|
28
|
-
**Não há API key. Não há custo extra de tokens. Você usa o plano da IDE.**
|
|
29
|
-
|
|
30
|
-
## O que é o DAG do DARE
|
|
31
|
-
|
|
32
|
-
`DARE/dare-dag.yaml` é o **plano de execução**: um grafo direcionado acíclico
|
|
33
|
-
em que cada nó é uma task atômica e as arestas são `depends_on`. O CLI ordena
|
|
34
|
-
topologicamente (Kahn's algorithm) e indica em que ordem você deve executar.
|
|
35
|
-
Tasks no mesmo rank podem rodar em paralelo (logicamente — você decide se
|
|
36
|
-
literalmente fan-out ou roda uma após a outra).
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
rank 0: task-001 task-002 ← podem rodar juntas (sem depends_on)
|
|
40
|
-
rank 1: task-003 (deps: 001, 002) ← só após rank 0
|
|
41
|
-
rank 2: task-004 (deps: 003)
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
## Schema canônico do `dare-dag.yaml`
|
|
45
|
-
|
|
46
|
-
```yaml
|
|
47
|
-
title: "<Nome do projeto> - Development Tasks"
|
|
48
|
-
version: "1.0.0"
|
|
49
|
-
|
|
50
|
-
limits:
|
|
51
|
-
parent_context_chars: 2000 # snippet de cada output de pai injetado no filho
|
|
52
|
-
task_output_chars: 4000 # cap do output capturado por task
|
|
53
|
-
timeout_seconds: 600 # apenas referência; quem aborta é você
|
|
54
|
-
|
|
55
|
-
# Mapeamento complexity → modelo (referencial — você usa o modelo da sua IDE)
|
|
56
|
-
models:
|
|
57
|
-
cursor: { HIGH: gpt-5.3-codex, MED: composer-2, LOW: auto-low }
|
|
58
|
-
claude: { HIGH: claude-sonnet-4-5, MED: claude-haiku-4, LOW: claude-haiku-4 }
|
|
59
|
-
antigravity: { HIGH: gemini-2.5-pro, MED: gemini-2.5-flash, LOW: gemini-2.5-flash }
|
|
60
|
-
|
|
61
|
-
tasks:
|
|
62
|
-
- id: task-001
|
|
63
|
-
title: "Setup project structure"
|
|
64
|
-
depends_on: []
|
|
65
|
-
complexity: LOW
|
|
66
|
-
spec_file: EXECUTION/task-001.md
|
|
67
|
-
subtask_prompt: |
|
|
68
|
-
<prompt completamente self-contained>
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
## Loop de execução
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
1. dare execute --next
|
|
75
|
-
↓ imprime prompts das tasks ready (rank atual)
|
|
76
|
-
2. Para cada prompt:
|
|
77
|
-
- leia spec_file se houver
|
|
78
|
-
- implemente
|
|
79
|
-
3. dare execute --complete <id> --output "<resumo + arquivos tocados>"
|
|
80
|
-
↓ o CLI roda o RALPH LOOP automático (build → test → lint)
|
|
81
|
-
↓ se passar: task vira DONE
|
|
82
|
-
↓ se falhar: task vira FAILED com stderr capturado; corrija e retente
|
|
83
|
-
4. Volte ao passo 1 até não haver mais tasks ready
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
> **Ralph Loop é AUTOMÁTICO e OBRIGATÓRIO.** Você NÃO roda build/test/lint
|
|
87
|
-
> manualmente — o `dare execute --complete` faz isso. Se algum gate falhar,
|
|
88
|
-
> a task NÃO vai para DONE; vai para FAILED. Você corrige o código e tenta
|
|
89
|
-
> de novo (`dare execute --complete <id>` outra vez, ou `--reset` antes se
|
|
90
|
-
> precisar zerar histórico).
|
|
91
|
-
>
|
|
92
|
-
> **Não existe flag para pular o Ralph Loop.** Toda task passa pelos 3 gates
|
|
93
|
-
> da stack do projeto.
|
|
94
|
-
|
|
95
|
-
Comandos úteis:
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
dare execute --next # próximas tasks ready (rank atual)
|
|
99
|
-
dare execute --complete task-001 --output "..." # marca DONE
|
|
100
|
-
dare execute --fail task-002 --reason "..." # marca FAILED + cascade-skip
|
|
101
|
-
dare execute --reset task-002 # volta para PENDING (retry)
|
|
102
|
-
dare execute --status # snapshot do canvas
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
## Regras inegociáveis ao construir o DAG
|
|
106
|
-
|
|
107
|
-
### 1. `id` em kebab-case e único
|
|
108
|
-
`task-001`, `auth-jwt`, `db-migrations`. Sem espaços nem maiúsculas.
|
|
109
|
-
|
|
110
|
-
### 2. `depends_on` mínimo — maximize paralelismo
|
|
111
|
-
Só adicione dependência quando a task filha **literalmente não pode começar**
|
|
112
|
-
sem o output da pai (arquivo, schema, decisão exportada).
|
|
113
|
-
|
|
114
|
-
| Cenário | Dep? |
|
|
115
|
-
|---------|------|
|
|
116
|
-
| B precisa do arquivo que A criou | sim |
|
|
117
|
-
| B precisa de uma decisão tomada em A | sim |
|
|
118
|
-
| B faz coisa similar a A mas independente | não |
|
|
119
|
-
| Pesquisa/leitura sem efeito colateral | não — fan out wide |
|
|
120
|
-
| Testes do módulo X | sim — depende da implementação |
|
|
121
|
-
| Docs do módulo X | sim — depende da implementação |
|
|
122
|
-
|
|
123
|
-
Cadeia linear `001 → 002 → 003 → ...` é antipattern. Reanalise.
|
|
124
|
-
|
|
125
|
-
### 3. `complexity` é referência (não custo real para você)
|
|
126
|
-
| Nível | Quando usar |
|
|
127
|
-
|-------|-------------|
|
|
128
|
-
| `LOW` | Setup, scaffolding, docs simples, leitura/pesquisa |
|
|
129
|
-
| `MED` | Implementação direta, refactors, testes unitários |
|
|
130
|
-
| `HIGH` | Lógica de negócio crítica, segurança, integrações |
|
|
131
|
-
|
|
132
|
-
Como você usa o plano da IDE, `complexity` virou principalmente um sinal para
|
|
133
|
-
você priorizar atenção/cuidado, não para escolher modelo.
|
|
134
|
-
|
|
135
|
-
### 4. `subtask_prompt` totalmente self-contained
|
|
136
|
-
Sua sessão futura recebe o prompt + snippets de até 2000 chars dos outputs
|
|
137
|
-
dos pais (via `dare execute --next`). Não vale "como combinamos antes".
|
|
138
|
-
Tudo o que precisa estar no prompt ou virá pelos pais.
|
|
139
|
-
|
|
140
|
-
### 5. Output cap de 4000 chars
|
|
141
|
-
Se uma task gera muito, escreva em arquivo (permanece no FS) e faça o
|
|
142
|
-
`--output` do `dare execute --complete` ser um resumo curto + caminhos dos
|
|
143
|
-
arquivos criados.
|
|
144
|
-
|
|
145
|
-
### 6. Cada task tem spec em `EXECUTION/task-<id>.md`
|
|
146
|
-
Spec detalhada com: objetivo, arquivos a criar/modificar, validation gates,
|
|
147
|
-
testes esperados. O `subtask_prompt` referencia `spec_file` para você ler na
|
|
148
|
-
hora de executar.
|
|
149
|
-
|
|
150
|
-
## Geração: o que o `/generate-tasks` deve produzir
|
|
151
|
-
|
|
152
|
-
Sempre os **três artefatos juntos**:
|
|
153
|
-
|
|
154
|
-
1. **`DARE/TASKS.md`** — tabela master para humanos
|
|
155
|
-
2. **`DARE/dare-dag.yaml`** — grafo executável
|
|
156
|
-
3. **`DARE/EXECUTION/task-<id>.md`** — uma spec por task
|
|
157
|
-
|
|
158
|
-
Os três precisam estar consistentes (mesmos `id`s, mesmos `depends_on`,
|
|
159
|
-
mesma `complexity`). Inconsistência aqui quebra a execução.
|
|
160
|
-
|
|
161
|
-
## Canvas ao vivo (`DARE/.canvas.md`)
|
|
162
|
-
|
|
163
|
-
O CLI reescreve `DARE/.canvas.md` a cada `dare execute --complete/--fail`:
|
|
164
|
-
|
|
165
|
-
```
|
|
166
|
-
| ID | Title | Status | Duration | Tokens |
|
|
167
|
-
|----------|--------------------|---------------|----------|--------|
|
|
168
|
-
| task-001 | Setup structure | ✅ DONE | 1240ms | 850 |
|
|
169
|
-
| task-002 | DB schema | 🔄 RUNNING | - | - |
|
|
170
|
-
| task-003 | Core endpoints | ⏳ PENDING | - | - |
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
Status: `PENDING` ⏳ · `RUNNING` 🔄 · `DONE` ✅ · `FAILED` ❌ · `SKIPPED` ⏭️
|
|
174
|
-
|
|
175
|
-
`SKIPPED` é automático quando uma dependência falha — você não precisa fazer
|
|
176
|
-
nada; o CLI cuida do cascade.
|
|
177
|
-
|
|
178
|
-
## Erros comuns ao construir DAG
|
|
179
|
-
|
|
180
|
-
| Erro | Sintoma | Como corrigir |
|
|
181
|
-
|------|---------|---------------|
|
|
182
|
-
| Ciclo em `depends_on` | `Circular dependency detected: <id>` | Reveja, retire a aresta cíclica |
|
|
183
|
-
| `id` duplicado | Comportamento indefinido | Renomeie |
|
|
184
|
-
| `depends_on` aponta para `id` inexistente | `Task not found: <id>` | Corrija nome |
|
|
185
|
-
| Tudo em rank 0 | Conflito de escrita no mesmo arquivo | Adicione `depends_on` quando há contenção |
|
|
186
|
-
| Cadeia linear longa | Sem ganho de paralelismo | Reveja se as deps são reais |
|
|
187
|
-
|
|
188
|
-
## Antipatterns que você NÃO deve criar
|
|
189
|
-
|
|
190
|
-
- ❌ Task chamada **"Ralph Loop final"**, **"Hardening final"**, **"QA final"**
|
|
191
|
-
— Ralph Loop roda automaticamente em cada `--complete`. Não é uma task.
|
|
192
|
-
- ❌ Tests com `assertTrue(true)` ou equivalentes — o gate `test` vai rodar
|
|
193
|
-
de verdade. Placeholder não engana o CLI; só atrasa o ciclo.
|
|
194
|
-
- ❌ "Setup project structure" como primeira task quando o ambiente ainda
|
|
195
|
-
não foi containerizado — sem container/runtime, o Ralph Loop não roda.
|
|
196
|
-
|
|
197
|
-
## Ordem recomendada das primeiras tasks
|
|
198
|
-
|
|
199
|
-
1. **Containerize app** (Dockerfile + docker-compose + healthcheck) — sem
|
|
200
|
-
isso o Ralph Loop não tem onde rodar
|
|
201
|
-
2. **Database schema** (migrations + factories)
|
|
202
|
-
3. **Core endpoints / componentes**
|
|
203
|
-
4. **Auth / autorização**
|
|
204
|
-
5. **Test suite real** (com assertions de verdade)
|
|
205
|
-
|
|
206
|
-
A task de container/compose pode estar em **outra ordem** se o projeto já
|
|
207
|
-
vive em um container do monorepo, ou se a stack não precisa de DB. Mas
|
|
208
|
-
quase sempre é uma das primeiras — nunca a última.
|
|
209
|
-
|
|
210
|
-
## Checklist antes de aprovar um DAG
|
|
211
|
-
|
|
212
|
-
- [ ] Pelo menos 2 tasks no rank 0
|
|
213
|
-
- [ ] Cada `subtask_prompt` é executável sem contexto adicional
|
|
214
|
-
- [ ] Tasks de teste/doc dependem da implementação correspondente
|
|
215
|
-
- [ ] `complexity` reflete o esforço real (não tudo HIGH)
|
|
216
|
-
- [ ] `id` em kebab-case e único
|
|
217
|
-
- [ ] Sem ciclos
|
|
218
|
-
- [ ] **Sem task de "Ralph Loop final"** — Ralph Loop é gate por task
|
|
219
|
-
- [ ] **Tests com assertions reais** — placeholder quebra o gate `test`
|
|
220
|
-
- [ ] Container/runtime resolvido cedo, não na última task
|
|
221
|
-
- [ ] `TASKS.md` + `dare-dag.yaml` + `EXECUTION/task-*.md` consistentes
|
|
1
|
+
---
|
|
2
|
+
description: Como construir e executar grafos de tasks (DAG) do método DARE com paralelismo lógico via dare-dag.yaml. O Cursor é o executor; o CLI dare é orquestrador.
|
|
3
|
+
globs: DARE/dare-dag.yaml,DARE/EXECUTION/**,DARE/.canvas.md
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill: DAG Task Runner
|
|
8
|
+
|
|
9
|
+
## Quando usar
|
|
10
|
+
|
|
11
|
+
- O `BLUEPRINT.md` foi aprovado e você precisa decompor em tasks executáveis
|
|
12
|
+
- O usuário pediu para começar a execução do DAG
|
|
13
|
+
- Existe `DARE/dare-dag.yaml` e você precisa entender, executar ou modificar
|
|
14
|
+
- Aparece o canvas `DARE/.canvas.md` durante uma execução
|
|
15
|
+
|
|
16
|
+
## Quem executa o quê
|
|
17
|
+
|
|
18
|
+
> **Você (Cursor) é o executor. O CLI `dare` é orquestrador.**
|
|
19
|
+
|
|
20
|
+
- A IDE em que você roda já está autenticada na conta do usuário
|
|
21
|
+
- Você lê o `dare-dag.yaml` e as specs em `DARE/EXECUTION/task-*.md`
|
|
22
|
+
- Você executa cada task — escreve código, roda testes, faz lint
|
|
23
|
+
- Depois de cada task, você chama o CLI para registrar o resultado:
|
|
24
|
+
- `dare execute --complete <task-id> --output "<resumo>"`
|
|
25
|
+
- `dare execute --fail <task-id> --reason "<mensagem>"`
|
|
26
|
+
- O CLI atualiza o canvas e popula o `dare-graph` automaticamente
|
|
27
|
+
|
|
28
|
+
**Não há API key. Não há custo extra de tokens. Você usa o plano da IDE.**
|
|
29
|
+
|
|
30
|
+
## O que é o DAG do DARE
|
|
31
|
+
|
|
32
|
+
`DARE/dare-dag.yaml` é o **plano de execução**: um grafo direcionado acíclico
|
|
33
|
+
em que cada nó é uma task atômica e as arestas são `depends_on`. O CLI ordena
|
|
34
|
+
topologicamente (Kahn's algorithm) e indica em que ordem você deve executar.
|
|
35
|
+
Tasks no mesmo rank podem rodar em paralelo (logicamente — você decide se
|
|
36
|
+
literalmente fan-out ou roda uma após a outra).
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
rank 0: task-001 task-002 ← podem rodar juntas (sem depends_on)
|
|
40
|
+
rank 1: task-003 (deps: 001, 002) ← só após rank 0
|
|
41
|
+
rank 2: task-004 (deps: 003)
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Schema canônico do `dare-dag.yaml`
|
|
45
|
+
|
|
46
|
+
```yaml
|
|
47
|
+
title: "<Nome do projeto> - Development Tasks"
|
|
48
|
+
version: "1.0.0"
|
|
49
|
+
|
|
50
|
+
limits:
|
|
51
|
+
parent_context_chars: 2000 # snippet de cada output de pai injetado no filho
|
|
52
|
+
task_output_chars: 4000 # cap do output capturado por task
|
|
53
|
+
timeout_seconds: 600 # apenas referência; quem aborta é você
|
|
54
|
+
|
|
55
|
+
# Mapeamento complexity → modelo (referencial — você usa o modelo da sua IDE)
|
|
56
|
+
models:
|
|
57
|
+
cursor: { HIGH: gpt-5.3-codex, MED: composer-2, LOW: auto-low }
|
|
58
|
+
claude: { HIGH: claude-sonnet-4-5, MED: claude-haiku-4, LOW: claude-haiku-4 }
|
|
59
|
+
antigravity: { HIGH: gemini-2.5-pro, MED: gemini-2.5-flash, LOW: gemini-2.5-flash }
|
|
60
|
+
|
|
61
|
+
tasks:
|
|
62
|
+
- id: task-001
|
|
63
|
+
title: "Setup project structure"
|
|
64
|
+
depends_on: []
|
|
65
|
+
complexity: LOW
|
|
66
|
+
spec_file: EXECUTION/task-001.md
|
|
67
|
+
subtask_prompt: |
|
|
68
|
+
<prompt completamente self-contained>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Loop de execução
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
1. dare execute --next
|
|
75
|
+
↓ imprime prompts das tasks ready (rank atual)
|
|
76
|
+
2. Para cada prompt:
|
|
77
|
+
- leia spec_file se houver
|
|
78
|
+
- implemente
|
|
79
|
+
3. dare execute --complete <id> --output "<resumo + arquivos tocados>"
|
|
80
|
+
↓ o CLI roda o RALPH LOOP automático (build → test → lint)
|
|
81
|
+
↓ se passar: task vira DONE
|
|
82
|
+
↓ se falhar: task vira FAILED com stderr capturado; corrija e retente
|
|
83
|
+
4. Volte ao passo 1 até não haver mais tasks ready
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
> **Ralph Loop é AUTOMÁTICO e OBRIGATÓRIO.** Você NÃO roda build/test/lint
|
|
87
|
+
> manualmente — o `dare execute --complete` faz isso. Se algum gate falhar,
|
|
88
|
+
> a task NÃO vai para DONE; vai para FAILED. Você corrige o código e tenta
|
|
89
|
+
> de novo (`dare execute --complete <id>` outra vez, ou `--reset` antes se
|
|
90
|
+
> precisar zerar histórico).
|
|
91
|
+
>
|
|
92
|
+
> **Não existe flag para pular o Ralph Loop.** Toda task passa pelos 3 gates
|
|
93
|
+
> da stack do projeto.
|
|
94
|
+
|
|
95
|
+
Comandos úteis:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
dare execute --next # próximas tasks ready (rank atual)
|
|
99
|
+
dare execute --complete task-001 --output "..." # marca DONE
|
|
100
|
+
dare execute --fail task-002 --reason "..." # marca FAILED + cascade-skip
|
|
101
|
+
dare execute --reset task-002 # volta para PENDING (retry)
|
|
102
|
+
dare execute --status # snapshot do canvas
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Regras inegociáveis ao construir o DAG
|
|
106
|
+
|
|
107
|
+
### 1. `id` em kebab-case e único
|
|
108
|
+
`task-001`, `auth-jwt`, `db-migrations`. Sem espaços nem maiúsculas.
|
|
109
|
+
|
|
110
|
+
### 2. `depends_on` mínimo — maximize paralelismo
|
|
111
|
+
Só adicione dependência quando a task filha **literalmente não pode começar**
|
|
112
|
+
sem o output da pai (arquivo, schema, decisão exportada).
|
|
113
|
+
|
|
114
|
+
| Cenário | Dep? |
|
|
115
|
+
|---------|------|
|
|
116
|
+
| B precisa do arquivo que A criou | sim |
|
|
117
|
+
| B precisa de uma decisão tomada em A | sim |
|
|
118
|
+
| B faz coisa similar a A mas independente | não |
|
|
119
|
+
| Pesquisa/leitura sem efeito colateral | não — fan out wide |
|
|
120
|
+
| Testes do módulo X | sim — depende da implementação |
|
|
121
|
+
| Docs do módulo X | sim — depende da implementação |
|
|
122
|
+
|
|
123
|
+
Cadeia linear `001 → 002 → 003 → ...` é antipattern. Reanalise.
|
|
124
|
+
|
|
125
|
+
### 3. `complexity` é referência (não custo real para você)
|
|
126
|
+
| Nível | Quando usar |
|
|
127
|
+
|-------|-------------|
|
|
128
|
+
| `LOW` | Setup, scaffolding, docs simples, leitura/pesquisa |
|
|
129
|
+
| `MED` | Implementação direta, refactors, testes unitários |
|
|
130
|
+
| `HIGH` | Lógica de negócio crítica, segurança, integrações |
|
|
131
|
+
|
|
132
|
+
Como você usa o plano da IDE, `complexity` virou principalmente um sinal para
|
|
133
|
+
você priorizar atenção/cuidado, não para escolher modelo.
|
|
134
|
+
|
|
135
|
+
### 4. `subtask_prompt` totalmente self-contained
|
|
136
|
+
Sua sessão futura recebe o prompt + snippets de até 2000 chars dos outputs
|
|
137
|
+
dos pais (via `dare execute --next`). Não vale "como combinamos antes".
|
|
138
|
+
Tudo o que precisa estar no prompt ou virá pelos pais.
|
|
139
|
+
|
|
140
|
+
### 5. Output cap de 4000 chars
|
|
141
|
+
Se uma task gera muito, escreva em arquivo (permanece no FS) e faça o
|
|
142
|
+
`--output` do `dare execute --complete` ser um resumo curto + caminhos dos
|
|
143
|
+
arquivos criados.
|
|
144
|
+
|
|
145
|
+
### 6. Cada task tem spec em `EXECUTION/task-<id>.md`
|
|
146
|
+
Spec detalhada com: objetivo, arquivos a criar/modificar, validation gates,
|
|
147
|
+
testes esperados. O `subtask_prompt` referencia `spec_file` para você ler na
|
|
148
|
+
hora de executar.
|
|
149
|
+
|
|
150
|
+
## Geração: o que o `/generate-tasks` deve produzir
|
|
151
|
+
|
|
152
|
+
Sempre os **três artefatos juntos**:
|
|
153
|
+
|
|
154
|
+
1. **`DARE/TASKS.md`** — tabela master para humanos
|
|
155
|
+
2. **`DARE/dare-dag.yaml`** — grafo executável
|
|
156
|
+
3. **`DARE/EXECUTION/task-<id>.md`** — uma spec por task
|
|
157
|
+
|
|
158
|
+
Os três precisam estar consistentes (mesmos `id`s, mesmos `depends_on`,
|
|
159
|
+
mesma `complexity`). Inconsistência aqui quebra a execução.
|
|
160
|
+
|
|
161
|
+
## Canvas ao vivo (`DARE/.canvas.md`)
|
|
162
|
+
|
|
163
|
+
O CLI reescreve `DARE/.canvas.md` a cada `dare execute --complete/--fail`:
|
|
164
|
+
|
|
165
|
+
```
|
|
166
|
+
| ID | Title | Status | Duration | Tokens |
|
|
167
|
+
|----------|--------------------|---------------|----------|--------|
|
|
168
|
+
| task-001 | Setup structure | ✅ DONE | 1240ms | 850 |
|
|
169
|
+
| task-002 | DB schema | 🔄 RUNNING | - | - |
|
|
170
|
+
| task-003 | Core endpoints | ⏳ PENDING | - | - |
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Status: `PENDING` ⏳ · `RUNNING` 🔄 · `DONE` ✅ · `FAILED` ❌ · `SKIPPED` ⏭️
|
|
174
|
+
|
|
175
|
+
`SKIPPED` é automático quando uma dependência falha — você não precisa fazer
|
|
176
|
+
nada; o CLI cuida do cascade.
|
|
177
|
+
|
|
178
|
+
## Erros comuns ao construir DAG
|
|
179
|
+
|
|
180
|
+
| Erro | Sintoma | Como corrigir |
|
|
181
|
+
|------|---------|---------------|
|
|
182
|
+
| Ciclo em `depends_on` | `Circular dependency detected: <id>` | Reveja, retire a aresta cíclica |
|
|
183
|
+
| `id` duplicado | Comportamento indefinido | Renomeie |
|
|
184
|
+
| `depends_on` aponta para `id` inexistente | `Task not found: <id>` | Corrija nome |
|
|
185
|
+
| Tudo em rank 0 | Conflito de escrita no mesmo arquivo | Adicione `depends_on` quando há contenção |
|
|
186
|
+
| Cadeia linear longa | Sem ganho de paralelismo | Reveja se as deps são reais |
|
|
187
|
+
|
|
188
|
+
## Antipatterns que você NÃO deve criar
|
|
189
|
+
|
|
190
|
+
- ❌ Task chamada **"Ralph Loop final"**, **"Hardening final"**, **"QA final"**
|
|
191
|
+
— Ralph Loop roda automaticamente em cada `--complete`. Não é uma task.
|
|
192
|
+
- ❌ Tests com `assertTrue(true)` ou equivalentes — o gate `test` vai rodar
|
|
193
|
+
de verdade. Placeholder não engana o CLI; só atrasa o ciclo.
|
|
194
|
+
- ❌ "Setup project structure" como primeira task quando o ambiente ainda
|
|
195
|
+
não foi containerizado — sem container/runtime, o Ralph Loop não roda.
|
|
196
|
+
|
|
197
|
+
## Ordem recomendada das primeiras tasks
|
|
198
|
+
|
|
199
|
+
1. **Containerize app** (Dockerfile + docker-compose + healthcheck) — sem
|
|
200
|
+
isso o Ralph Loop não tem onde rodar
|
|
201
|
+
2. **Database schema** (migrations + factories)
|
|
202
|
+
3. **Core endpoints / componentes**
|
|
203
|
+
4. **Auth / autorização**
|
|
204
|
+
5. **Test suite real** (com assertions de verdade)
|
|
205
|
+
|
|
206
|
+
A task de container/compose pode estar em **outra ordem** se o projeto já
|
|
207
|
+
vive em um container do monorepo, ou se a stack não precisa de DB. Mas
|
|
208
|
+
quase sempre é uma das primeiras — nunca a última.
|
|
209
|
+
|
|
210
|
+
## Checklist antes de aprovar um DAG
|
|
211
|
+
|
|
212
|
+
- [ ] Pelo menos 2 tasks no rank 0
|
|
213
|
+
- [ ] Cada `subtask_prompt` é executável sem contexto adicional
|
|
214
|
+
- [ ] Tasks de teste/doc dependem da implementação correspondente
|
|
215
|
+
- [ ] `complexity` reflete o esforço real (não tudo HIGH)
|
|
216
|
+
- [ ] `id` em kebab-case e único
|
|
217
|
+
- [ ] Sem ciclos
|
|
218
|
+
- [ ] **Sem task de "Ralph Loop final"** — Ralph Loop é gate por task
|
|
219
|
+
- [ ] **Tests com assertions reais** — placeholder quebra o gate `test`
|
|
220
|
+
- [ ] Container/runtime resolvido cedo, não na última task
|
|
221
|
+
- [ ] `TASKS.md` + `dare-dag.yaml` + `EXECUTION/task-*.md` consistentes
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Camada semântica da extração de DNA do projeto. Roda depois do comando `dare dna` e transforma os fatos de convenção em regras acionáveis no DARE/PROJECT-DNA.md, para o agente seguir o padrão da casa em projetos legados.
|
|
3
|
+
globs: DARE/PROJECT-DNA.md,DARE/dna-facts.json
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill: DNA — Convenções do Projeto (brownfield)
|
|
8
|
+
|
|
9
|
+
Camada **semântica** da extração de DNA. Roda **depois** do comando `dare dna`, que já varreu o código
|
|
10
|
+
e extraiu os fatos de convenção. Sua função é **transformar fatos em regras acionáveis** — o "como esse
|
|
11
|
+
codebase faz as coisas" que uma nova feature deve respeitar.
|
|
12
|
+
|
|
13
|
+
> Pré-requisito: rodar `dare dna` antes (gera `DARE/PROJECT-DNA.md` e `DARE/dna-facts.json`).
|
|
14
|
+
> Se não existirem, peça para rodar `dare dna` primeiro.
|
|
15
|
+
|
|
16
|
+
## Quando usar
|
|
17
|
+
|
|
18
|
+
- Projeto **legado** que vai adotar o DARE para novas features, sem reescrever o existente.
|
|
19
|
+
- Acabou de rodar `dare dna` e o `PROJECT-DNA.md` tem seções `<!-- AGENT -->` em aberto.
|
|
20
|
+
|
|
21
|
+
## O que fazer
|
|
22
|
+
|
|
23
|
+
### 1. Carregar os fatos (não re-varrer tudo)
|
|
24
|
+
- Leia `DARE/dna-facts.json` — fonte determinística (tooling, naming, camadas, testes, libs, commits).
|
|
25
|
+
- Abra **2-5 arquivos representativos por camada** (controller, service, model, teste) para inferir o
|
|
26
|
+
que o CLI não detecta (tratamento de erro, validação, estilo de teste).
|
|
27
|
+
|
|
28
|
+
### 2. Preencher `DARE/PROJECT-DNA.md`
|
|
29
|
+
Substitua cada `<!-- AGENT: ... -->`:
|
|
30
|
+
- **Convenções de Nomenclatura** — confirme o estilo + exceções.
|
|
31
|
+
- **Arquitetura & Camadas** — nomeie o padrão (MVC/Layered/Hexagonal) + regras de onde cada coisa mora.
|
|
32
|
+
- **Padrões de Teste** — onde ficam, naming, assertions reais, mocks/fixtures.
|
|
33
|
+
- **Tratamento de Erros & Validação** — como erros são tratados e inputs validados (exemplos reais).
|
|
34
|
+
- **Regras de Ouro** — o que SEMPRE e NUNCA fazer neste codebase.
|
|
35
|
+
- **⚠️ Incertezas** — convenções ambíguas que o humano precisa decidir.
|
|
36
|
+
|
|
37
|
+
**Não toque** nos fatos determinísticos do CLI (tooling, tabela de naming, libs).
|
|
38
|
+
|
|
39
|
+
### 3. Apresentar ao usuário
|
|
40
|
+
Resumo: arquitetura nomeada, regras de ouro, inconsistências. O `PROJECT-DNA.md` vira referência para
|
|
41
|
+
`skill-feature-design` e `skill-execute` respeitarem o legado.
|
|
42
|
+
|
|
43
|
+
## Regras de ouro
|
|
44
|
+
|
|
45
|
+
1. **Descritivo, não aspiracional** — como o código É, não como deveria ser.
|
|
46
|
+
2. **Exemplos reais** — cite arquivos/trechos do projeto.
|
|
47
|
+
3. **Sinalize inconsistência** — não invente um padrão único onde o legado mistura.
|
|
48
|
+
4. **Não re-varra** — os fatos já estão em `dna-facts.json`.
|
|
49
|
+
5. **Preserve o determinístico** — não reescreva tooling/naming/libs do CLI.
|
|
50
|
+
|
|
51
|
+
## Antipatterns
|
|
52
|
+
|
|
53
|
+
| AP | Antipattern | Por quê |
|
|
54
|
+
|---|---|---|
|
|
55
|
+
| AP-01 | Documentar o padrão "ideal" em vez do real | Código gerado sai fora do estilo do legado |
|
|
56
|
+
| AP-02 | Forçar padrão único onde o legado é inconsistente | Esconde a realidade |
|
|
57
|
+
| AP-03 | Reescrever os fatos determinísticos do CLI | Quebra a fonte de verdade |
|
|
58
|
+
| AP-04 | Regras vagas ("siga boas práticas") | Inúteis — o valor está no específico |
|
|
59
|
+
| AP-05 | Ignorar os testes existentes | Nova feature nasce inconsistente |
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
Skill MIT — parte do DARE Method. DNA do projeto (brownfield). Pareia com o comando `dare dna`.
|