@planu/cli 0.24.0 → 0.26.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/dist/config/ai-model-pricing.json +81 -0
- package/dist/config/framework-registry/csharp-aspnet.json +67 -0
- package/dist/config/framework-registry/dart-flutter.json +61 -0
- package/dist/config/framework-registry/go-gin.json +62 -0
- package/dist/config/framework-registry/index.json +164 -0
- package/dist/config/framework-registry/java-springboot.json +67 -0
- package/dist/config/framework-registry/php-laravel.json +67 -0
- package/dist/config/framework-registry/python-django.json +72 -0
- package/dist/config/framework-registry/python-fastapi.json +72 -0
- package/dist/config/framework-registry/ruby-rails.json +67 -0
- package/dist/config/framework-registry/rust-actix.json +61 -0
- package/dist/config/framework-registry/swift-swiftui.json +67 -0
- package/dist/config/framework-registry/typescript-angular.json +67 -0
- package/dist/config/framework-registry/typescript-astro.json +61 -0
- package/dist/config/framework-registry/typescript-express.json +67 -0
- package/dist/config/framework-registry/typescript-nestjs.json +62 -0
- package/dist/config/framework-registry/typescript-nextjs.json +82 -0
- package/dist/config/framework-registry/typescript-nuxt.json +67 -0
- package/dist/config/framework-registry/typescript-react.json +77 -0
- package/dist/config/framework-registry/typescript-remix.json +61 -0
- package/dist/config/framework-registry/typescript-sveltekit.json +67 -0
- package/dist/config/framework-registry/typescript-vue.json +72 -0
- package/dist/config/license-plans.json +23 -3
- package/dist/engine/agile-config-builder.d.ts.map +1 -1
- package/dist/engine/agile-config-builder.js +3 -0
- package/dist/engine/agile-config-builder.js.map +1 -1
- package/dist/engine/ai-cost-estimator/core.d.ts +8 -0
- package/dist/engine/ai-cost-estimator/core.d.ts.map +1 -0
- package/dist/engine/ai-cost-estimator/core.js +257 -0
- package/dist/engine/ai-cost-estimator/core.js.map +1 -0
- package/dist/engine/ai-cost-estimator/index.d.ts +4 -0
- package/dist/engine/ai-cost-estimator/index.d.ts.map +1 -0
- package/dist/engine/ai-cost-estimator/index.js +5 -0
- package/dist/engine/ai-cost-estimator/index.js.map +1 -0
- package/dist/engine/ai-cost-estimator/model-pricing.d.ts +31 -0
- package/dist/engine/ai-cost-estimator/model-pricing.d.ts.map +1 -0
- package/dist/engine/ai-cost-estimator/model-pricing.js +96 -0
- package/dist/engine/ai-cost-estimator/model-pricing.js.map +1 -0
- package/dist/engine/ai-cost-estimator/token-estimator.d.ts +37 -0
- package/dist/engine/ai-cost-estimator/token-estimator.d.ts.map +1 -0
- package/dist/engine/ai-cost-estimator/token-estimator.js +194 -0
- package/dist/engine/ai-cost-estimator/token-estimator.js.map +1 -0
- package/dist/engine/ci-generator/context-builders.d.ts +4 -0
- package/dist/engine/ci-generator/context-builders.d.ts.map +1 -0
- package/dist/engine/ci-generator/context-builders.js +129 -0
- package/dist/engine/ci-generator/context-builders.js.map +1 -0
- package/dist/engine/ci-generator/index.d.ts +7 -0
- package/dist/engine/ci-generator/index.d.ts.map +1 -0
- package/dist/engine/ci-generator/index.js +44 -0
- package/dist/engine/ci-generator/index.js.map +1 -0
- package/dist/engine/ci-generator/stack-detector.d.ts +21 -0
- package/dist/engine/ci-generator/stack-detector.d.ts.map +1 -0
- package/dist/engine/ci-generator/stack-detector.js +203 -0
- package/dist/engine/ci-generator/stack-detector.js.map +1 -0
- package/dist/engine/ci-generator/yaml-builder.d.ts +8 -0
- package/dist/engine/ci-generator/yaml-builder.d.ts.map +1 -0
- package/dist/engine/ci-generator/yaml-builder.js +285 -0
- package/dist/engine/ci-generator/yaml-builder.js.map +1 -0
- package/dist/engine/dashboard/data-loader.d.ts +21 -0
- package/dist/engine/dashboard/data-loader.d.ts.map +1 -0
- package/dist/engine/dashboard/data-loader.js +196 -0
- package/dist/engine/dashboard/data-loader.js.map +1 -0
- package/dist/engine/dashboard/index.d.ts +5 -0
- package/dist/engine/dashboard/index.d.ts.map +1 -0
- package/dist/engine/dashboard/index.js +6 -0
- package/dist/engine/dashboard/index.js.map +1 -0
- package/dist/engine/dashboard/routes.d.ts +4 -0
- package/dist/engine/dashboard/routes.d.ts.map +1 -0
- package/dist/engine/dashboard/routes.js +120 -0
- package/dist/engine/dashboard/routes.js.map +1 -0
- package/dist/engine/dashboard/server.d.ts +14 -0
- package/dist/engine/dashboard/server.d.ts.map +1 -0
- package/dist/engine/dashboard/server.js +88 -0
- package/dist/engine/dashboard/server.js.map +1 -0
- package/dist/engine/dashboard/templates-layout.d.ts +11 -0
- package/dist/engine/dashboard/templates-layout.d.ts.map +1 -0
- package/dist/engine/dashboard/templates-layout.js +305 -0
- package/dist/engine/dashboard/templates-layout.js.map +1 -0
- package/dist/engine/dashboard/templates-project.d.ts +10 -0
- package/dist/engine/dashboard/templates-project.d.ts.map +1 -0
- package/dist/engine/dashboard/templates-project.js +163 -0
- package/dist/engine/dashboard/templates-project.js.map +1 -0
- package/dist/engine/dashboard/templates.d.ts +3 -0
- package/dist/engine/dashboard/templates.d.ts.map +1 -0
- package/dist/engine/dashboard/templates.js +4 -0
- package/dist/engine/dashboard/templates.js.map +1 -0
- package/dist/engine/focus-tracker.d.ts.map +1 -1
- package/dist/engine/focus-tracker.js +1 -0
- package/dist/engine/focus-tracker.js.map +1 -1
- package/dist/engine/hooks/core.d.ts +26 -0
- package/dist/engine/hooks/core.d.ts.map +1 -0
- package/dist/engine/hooks/core.js +164 -0
- package/dist/engine/hooks/core.js.map +1 -0
- package/dist/engine/hooks/git-hook-generator.d.ts +14 -0
- package/dist/engine/hooks/git-hook-generator.d.ts.map +1 -0
- package/dist/engine/hooks/git-hook-generator.js +119 -0
- package/dist/engine/hooks/git-hook-generator.js.map +1 -0
- package/dist/engine/hooks/index.d.ts +5 -0
- package/dist/engine/hooks/index.d.ts.map +1 -0
- package/dist/engine/hooks/index.js +6 -0
- package/dist/engine/hooks/index.js.map +1 -0
- package/dist/engine/hooks/templates.d.ts +14 -0
- package/dist/engine/hooks/templates.d.ts.map +1 -0
- package/dist/engine/hooks/templates.js +138 -0
- package/dist/engine/hooks/templates.js.map +1 -0
- package/dist/engine/hooks/triggers.d.ts +27 -0
- package/dist/engine/hooks/triggers.d.ts.map +1 -0
- package/dist/engine/hooks/triggers.js +104 -0
- package/dist/engine/hooks/triggers.js.map +1 -0
- package/dist/engine/registry/core.d.ts +32 -0
- package/dist/engine/registry/core.d.ts.map +1 -0
- package/dist/engine/registry/core.js +85 -0
- package/dist/engine/registry/core.js.map +1 -0
- package/dist/engine/registry/index.d.ts +6 -0
- package/dist/engine/registry/index.d.ts.map +1 -0
- package/dist/engine/registry/index.js +8 -0
- package/dist/engine/registry/index.js.map +1 -0
- package/dist/engine/registry/loader.d.ts +18 -0
- package/dist/engine/registry/loader.d.ts.map +1 -0
- package/dist/engine/registry/loader.js +81 -0
- package/dist/engine/registry/loader.js.map +1 -0
- package/dist/engine/registry/matcher.d.ts +19 -0
- package/dist/engine/registry/matcher.d.ts.map +1 -0
- package/dist/engine/registry/matcher.js +150 -0
- package/dist/engine/registry/matcher.js.map +1 -0
- package/dist/engine/registry/reporter.d.ts +10 -0
- package/dist/engine/registry/reporter.d.ts.map +1 -0
- package/dist/engine/registry/reporter.js +132 -0
- package/dist/engine/registry/reporter.js.map +1 -0
- package/dist/engine/registry/validator.d.ts +17 -0
- package/dist/engine/registry/validator.d.ts.map +1 -0
- package/dist/engine/registry/validator.js +103 -0
- package/dist/engine/registry/validator.js.map +1 -0
- package/dist/engine/spec-changelog/core.d.ts +16 -0
- package/dist/engine/spec-changelog/core.d.ts.map +1 -0
- package/dist/engine/spec-changelog/core.js +175 -0
- package/dist/engine/spec-changelog/core.js.map +1 -0
- package/dist/engine/spec-changelog/diff.d.ts +18 -0
- package/dist/engine/spec-changelog/diff.d.ts.map +1 -0
- package/dist/engine/spec-changelog/diff.js +116 -0
- package/dist/engine/spec-changelog/diff.js.map +1 -0
- package/dist/engine/spec-changelog/index.d.ts +3 -0
- package/dist/engine/spec-changelog/index.d.ts.map +1 -0
- package/dist/engine/spec-changelog/index.js +4 -0
- package/dist/engine/spec-changelog/index.js.map +1 -0
- package/dist/engine/spec-coverage/core.d.ts +14 -0
- package/dist/engine/spec-coverage/core.d.ts.map +1 -0
- package/dist/engine/spec-coverage/core.js +132 -0
- package/dist/engine/spec-coverage/core.js.map +1 -0
- package/dist/engine/spec-coverage/criteria-mapper.d.ts +18 -0
- package/dist/engine/spec-coverage/criteria-mapper.d.ts.map +1 -0
- package/dist/engine/spec-coverage/criteria-mapper.js +306 -0
- package/dist/engine/spec-coverage/criteria-mapper.js.map +1 -0
- package/dist/engine/spec-coverage/index.d.ts +4 -0
- package/dist/engine/spec-coverage/index.d.ts.map +1 -0
- package/dist/engine/spec-coverage/index.js +5 -0
- package/dist/engine/spec-coverage/index.js.map +1 -0
- package/dist/engine/spec-coverage/test-finder.d.ts +17 -0
- package/dist/engine/spec-coverage/test-finder.d.ts.map +1 -0
- package/dist/engine/spec-coverage/test-finder.js +250 -0
- package/dist/engine/spec-coverage/test-finder.js.map +1 -0
- package/dist/engine/spec-templates/catalog-extra.d.ts +4 -0
- package/dist/engine/spec-templates/catalog-extra.d.ts.map +1 -0
- package/dist/engine/spec-templates/catalog-extra.js +367 -0
- package/dist/engine/spec-templates/catalog-extra.js.map +1 -0
- package/dist/engine/spec-templates/catalog.d.ts +4 -0
- package/dist/engine/spec-templates/catalog.d.ts.map +1 -0
- package/dist/engine/spec-templates/catalog.js +386 -0
- package/dist/engine/spec-templates/catalog.js.map +1 -0
- package/dist/engine/spec-templates/index.d.ts +4 -0
- package/dist/engine/spec-templates/index.d.ts.map +1 -0
- package/dist/engine/spec-templates/index.js +5 -0
- package/dist/engine/spec-templates/index.js.map +1 -0
- package/dist/engine/spec-templates/query.d.ts +14 -0
- package/dist/engine/spec-templates/query.d.ts.map +1 -0
- package/dist/engine/spec-templates/query.js +56 -0
- package/dist/engine/spec-templates/query.js.map +1 -0
- package/dist/engine/spec-templates/renderer.d.ts +19 -0
- package/dist/engine/spec-templates/renderer.d.ts.map +1 -0
- package/dist/engine/spec-templates/renderer.js +45 -0
- package/dist/engine/spec-templates/renderer.js.map +1 -0
- package/dist/engine/usage-tracker/trial.d.ts +4 -4
- package/dist/engine/usage-tracker/trial.d.ts.map +1 -1
- package/dist/engine/usage-tracker/trial.js +4 -4
- package/dist/engine/usage-tracker/trial.js.map +1 -1
- package/dist/engine/webhook/event-handlers.d.ts +25 -0
- package/dist/engine/webhook/event-handlers.d.ts.map +1 -0
- package/dist/engine/webhook/event-handlers.js +89 -0
- package/dist/engine/webhook/event-handlers.js.map +1 -0
- package/dist/engine/webhook/index.d.ts +4 -0
- package/dist/engine/webhook/index.d.ts.map +1 -0
- package/dist/engine/webhook/index.js +5 -0
- package/dist/engine/webhook/index.js.map +1 -0
- package/dist/engine/webhook/server.d.ts +18 -0
- package/dist/engine/webhook/server.d.ts.map +1 -0
- package/dist/engine/webhook/server.js +187 -0
- package/dist/engine/webhook/server.js.map +1 -0
- package/dist/engine/webhook/signature.d.ts +16 -0
- package/dist/engine/webhook/signature.d.ts.map +1 -0
- package/dist/engine/webhook/signature.js +49 -0
- package/dist/engine/webhook/signature.js.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -1
- package/dist/storage/hooks-store.d.ts +34 -0
- package/dist/storage/hooks-store.d.ts.map +1 -0
- package/dist/storage/hooks-store.js +128 -0
- package/dist/storage/hooks-store.js.map +1 -0
- package/dist/storage/index.d.ts +1 -0
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +1 -0
- package/dist/storage/index.js.map +1 -1
- package/dist/tools/check-spec-accuracy.d.ts +7 -0
- package/dist/tools/check-spec-accuracy.d.ts.map +1 -0
- package/dist/tools/check-spec-accuracy.js +28 -0
- package/dist/tools/check-spec-accuracy.js.map +1 -0
- package/dist/tools/ci-generator.d.ts +7 -0
- package/dist/tools/ci-generator.d.ts.map +1 -0
- package/dist/tools/ci-generator.js +49 -0
- package/dist/tools/ci-generator.js.map +1 -0
- package/dist/tools/create-spec.d.ts.map +1 -1
- package/dist/tools/create-spec.js +4 -0
- package/dist/tools/create-spec.js.map +1 -1
- package/dist/tools/dashboard.d.ts +6 -0
- package/dist/tools/dashboard.d.ts.map +1 -0
- package/dist/tools/dashboard.js +48 -0
- package/dist/tools/dashboard.js.map +1 -0
- package/dist/tools/detect-drift.d.ts.map +1 -1
- package/dist/tools/detect-drift.js +6 -0
- package/dist/tools/detect-drift.js.map +1 -1
- package/dist/tools/estimate-ai-cost.d.ts +8 -0
- package/dist/tools/estimate-ai-cost.d.ts.map +1 -0
- package/dist/tools/estimate-ai-cost.js +29 -0
- package/dist/tools/estimate-ai-cost.js.map +1 -0
- package/dist/tools/list-specs.d.ts.map +1 -1
- package/dist/tools/list-specs.js +15 -0
- package/dist/tools/list-specs.js.map +1 -1
- package/dist/tools/manage-hooks.d.ts +5 -0
- package/dist/tools/manage-hooks.d.ts.map +1 -0
- package/dist/tools/manage-hooks.js +247 -0
- package/dist/tools/manage-hooks.js.map +1 -0
- package/dist/tools/reconcile-spec.d.ts.map +1 -1
- package/dist/tools/reconcile-spec.js +24 -0
- package/dist/tools/reconcile-spec.js.map +1 -1
- package/dist/tools/register-ai-cost-tools.d.ts +3 -0
- package/dist/tools/register-ai-cost-tools.d.ts.map +1 -0
- package/dist/tools/register-ai-cost-tools.js +25 -0
- package/dist/tools/register-ai-cost-tools.js.map +1 -0
- package/dist/tools/register-changelog-tools.d.ts +3 -0
- package/dist/tools/register-changelog-tools.d.ts.map +1 -0
- package/dist/tools/register-changelog-tools.js +23 -0
- package/dist/tools/register-changelog-tools.js.map +1 -0
- package/dist/tools/register-ci-tools.d.ts +3 -0
- package/dist/tools/register-ci-tools.d.ts.map +1 -0
- package/dist/tools/register-ci-tools.js +50 -0
- package/dist/tools/register-ci-tools.js.map +1 -0
- package/dist/tools/register-coverage-tools.d.ts +7 -0
- package/dist/tools/register-coverage-tools.d.ts.map +1 -0
- package/dist/tools/register-coverage-tools.js +27 -0
- package/dist/tools/register-coverage-tools.js.map +1 -0
- package/dist/tools/register-dashboard-tools.d.ts +3 -0
- package/dist/tools/register-dashboard-tools.d.ts.map +1 -0
- package/dist/tools/register-dashboard-tools.js +29 -0
- package/dist/tools/register-dashboard-tools.js.map +1 -0
- package/dist/tools/register-hooks-tools.d.ts +3 -0
- package/dist/tools/register-hooks-tools.d.ts.map +1 -0
- package/dist/tools/register-hooks-tools.js +107 -0
- package/dist/tools/register-hooks-tools.js.map +1 -0
- package/dist/tools/register-registry-tools.d.ts +3 -0
- package/dist/tools/register-registry-tools.d.ts.map +1 -0
- package/dist/tools/register-registry-tools.js +43 -0
- package/dist/tools/register-registry-tools.js.map +1 -0
- package/dist/tools/register-template-tools.d.ts +8 -0
- package/dist/tools/register-template-tools.d.ts.map +1 -0
- package/dist/tools/register-template-tools.js +71 -0
- package/dist/tools/register-template-tools.js.map +1 -0
- package/dist/tools/register-webhook-tools.d.ts +3 -0
- package/dist/tools/register-webhook-tools.d.ts.map +1 -0
- package/dist/tools/register-webhook-tools.js +49 -0
- package/dist/tools/register-webhook-tools.js.map +1 -0
- package/dist/tools/schemas/index.d.ts +1 -0
- package/dist/tools/schemas/index.d.ts.map +1 -1
- package/dist/tools/schemas/index.js +1 -0
- package/dist/tools/schemas/index.js.map +1 -1
- package/dist/tools/schemas/registry.d.ts +41 -0
- package/dist/tools/schemas/registry.d.ts.map +1 -0
- package/dist/tools/schemas/registry.js +62 -0
- package/dist/tools/schemas/registry.js.map +1 -0
- package/dist/tools/spec-coverage.d.ts +3 -0
- package/dist/tools/spec-coverage.d.ts.map +1 -0
- package/dist/tools/spec-coverage.js +176 -0
- package/dist/tools/spec-coverage.js.map +1 -0
- package/dist/tools/spec-history.d.ts +3 -0
- package/dist/tools/spec-history.d.ts.map +1 -0
- package/dist/tools/spec-history.js +67 -0
- package/dist/tools/spec-history.js.map +1 -0
- package/dist/tools/spec-templates.d.ts +10 -0
- package/dist/tools/spec-templates.d.ts.map +1 -0
- package/dist/tools/spec-templates.js +155 -0
- package/dist/tools/spec-templates.js.map +1 -0
- package/dist/tools/update-registry.d.ts +8 -0
- package/dist/tools/update-registry.d.ts.map +1 -0
- package/dist/tools/update-registry.js +53 -0
- package/dist/tools/update-registry.js.map +1 -0
- package/dist/tools/update-status.d.ts.map +1 -1
- package/dist/tools/update-status.js +24 -0
- package/dist/tools/update-status.js.map +1 -1
- package/dist/tools/webhook.d.ts +6 -0
- package/dist/tools/webhook.d.ts.map +1 -0
- package/dist/tools/webhook.js +150 -0
- package/dist/tools/webhook.js.map +1 -0
- package/dist/types/ai-cost.d.ts +98 -0
- package/dist/types/ai-cost.d.ts.map +1 -0
- package/dist/types/ai-cost.js +4 -0
- package/dist/types/ai-cost.js.map +1 -0
- package/dist/types/analysis.d.ts +64 -0
- package/dist/types/analysis.d.ts.map +1 -1
- package/dist/types/changelog.d.ts +49 -0
- package/dist/types/changelog.d.ts.map +1 -0
- package/dist/types/changelog.js +3 -0
- package/dist/types/changelog.js.map +1 -0
- package/dist/types/ci.d.ts +105 -0
- package/dist/types/ci.d.ts.map +1 -0
- package/dist/types/ci.js +3 -0
- package/dist/types/ci.js.map +1 -0
- package/dist/types/coverage.d.ts +95 -0
- package/dist/types/coverage.d.ts.map +1 -0
- package/dist/types/coverage.js +4 -0
- package/dist/types/coverage.js.map +1 -0
- package/dist/types/hooks.d.ts +139 -0
- package/dist/types/hooks.d.ts.map +1 -0
- package/dist/types/hooks.js +3 -0
- package/dist/types/hooks.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/registry.d.ts +90 -0
- package/dist/types/registry.d.ts.map +1 -0
- package/dist/types/registry.js +5 -0
- package/dist/types/registry.js.map +1 -0
- package/dist/types/spec-templates.d.ts +87 -0
- package/dist/types/spec-templates.d.ts.map +1 -0
- package/dist/types/spec-templates.js +3 -0
- package/dist/types/spec-templates.js.map +1 -0
- package/dist/types/ui.d.ts +76 -0
- package/dist/types/ui.d.ts.map +1 -1
- package/dist/types/webhook.d.ts +62 -0
- package/dist/types/webhook.d.ts.map +1 -0
- package/dist/types/webhook.js +4 -0
- package/dist/types/webhook.js.map +1 -0
- package/package.json +1 -1
- package/src/config/ai-model-pricing.json +81 -0
- package/src/config/framework-registry/csharp-aspnet.json +67 -0
- package/src/config/framework-registry/dart-flutter.json +61 -0
- package/src/config/framework-registry/go-gin.json +62 -0
- package/src/config/framework-registry/index.json +164 -0
- package/src/config/framework-registry/java-springboot.json +67 -0
- package/src/config/framework-registry/php-laravel.json +67 -0
- package/src/config/framework-registry/python-django.json +72 -0
- package/src/config/framework-registry/python-fastapi.json +72 -0
- package/src/config/framework-registry/ruby-rails.json +67 -0
- package/src/config/framework-registry/rust-actix.json +61 -0
- package/src/config/framework-registry/swift-swiftui.json +67 -0
- package/src/config/framework-registry/typescript-angular.json +67 -0
- package/src/config/framework-registry/typescript-astro.json +61 -0
- package/src/config/framework-registry/typescript-express.json +67 -0
- package/src/config/framework-registry/typescript-nestjs.json +62 -0
- package/src/config/framework-registry/typescript-nextjs.json +82 -0
- package/src/config/framework-registry/typescript-nuxt.json +67 -0
- package/src/config/framework-registry/typescript-react.json +77 -0
- package/src/config/framework-registry/typescript-remix.json +61 -0
- package/src/config/framework-registry/typescript-sveltekit.json +67 -0
- package/src/config/framework-registry/typescript-vue.json +72 -0
- package/src/config/license-plans.json +23 -3
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"framework": "nuxt",
|
|
3
|
+
"displayName": "Nuxt",
|
|
4
|
+
"frameworkVersion": "3.x",
|
|
5
|
+
"lastUpdated": "2026-03-04",
|
|
6
|
+
"ecosystem": "typescript",
|
|
7
|
+
"customEntry": false,
|
|
8
|
+
"correctPatterns": [
|
|
9
|
+
{
|
|
10
|
+
"pattern": "useFetch() para data fetching con SSR en Nuxt 3",
|
|
11
|
+
"example": "const { data, pending } = await useFetch('/api/items');",
|
|
12
|
+
"since": "3.0"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"pattern": "Auto-imports de composables — no se importan manualmente",
|
|
16
|
+
"example": "// useState, useRoute, useFetch disponibles sin import",
|
|
17
|
+
"since": "3.0"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"pattern": "server/api/*.ts para rutas de API server-side",
|
|
21
|
+
"example": "server/api/users.get.ts exporta defineEventHandler(event => { return { users: [] }; })",
|
|
22
|
+
"since": "3.0"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"pattern": "definePageMeta para metadatos de pagina",
|
|
26
|
+
"example": "definePageMeta({ layout: 'admin', middleware: 'auth' });",
|
|
27
|
+
"since": "3.0"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"pattern": "useRuntimeConfig para variables de entorno",
|
|
31
|
+
"example": "const config = useRuntimeConfig(); console.log(config.public.apiBase);",
|
|
32
|
+
"since": "3.0"
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"deprecatedPatterns": [
|
|
36
|
+
{
|
|
37
|
+
"pattern": "asyncData() / fetch() de Nuxt 2",
|
|
38
|
+
"replacedBy": "useFetch() o useAsyncData() de Nuxt 3",
|
|
39
|
+
"severity": "error"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"pattern": "nuxt.config.js con modules de Nuxt 2 sin actualizar",
|
|
43
|
+
"replacedBy": "nuxt.config.ts con modulos compatibles Nuxt 3",
|
|
44
|
+
"severity": "warning"
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"commonMistakes": [
|
|
48
|
+
{
|
|
49
|
+
"pattern": "Importar manualmente composables que son auto-importados",
|
|
50
|
+
"example": "import { useFetch } from '#app' — innecesario en Nuxt 3",
|
|
51
|
+
"replacedBy": "Usar directamente useFetch() sin import",
|
|
52
|
+
"severity": "warning"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"pattern": "Acceder a process.env directamente en cliente",
|
|
56
|
+
"example": "process.env.MY_KEY — no disponible en el browser",
|
|
57
|
+
"replacedBy": "useRuntimeConfig().public.myKey",
|
|
58
|
+
"severity": "error"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"pattern": "Mezclar Nuxt 2 y Nuxt 3 APIs en el mismo proyecto",
|
|
62
|
+
"example": "asyncData() junto a useFetch()",
|
|
63
|
+
"replacedBy": "Migrar completamente a Nuxt 3 con useFetch/useAsyncData",
|
|
64
|
+
"severity": "error"
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"framework": "react",
|
|
3
|
+
"displayName": "React",
|
|
4
|
+
"frameworkVersion": "18.x",
|
|
5
|
+
"lastUpdated": "2026-03-04",
|
|
6
|
+
"ecosystem": "typescript",
|
|
7
|
+
"customEntry": false,
|
|
8
|
+
"correctPatterns": [
|
|
9
|
+
{
|
|
10
|
+
"pattern": "useState para estado local en componentes funcionales",
|
|
11
|
+
"example": "const [count, setCount] = useState<number>(0);",
|
|
12
|
+
"since": "16.8"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"pattern": "useEffect para side effects con array de dependencias",
|
|
16
|
+
"example": "useEffect(() => { fetchData(); }, [userId]);",
|
|
17
|
+
"since": "16.8"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"pattern": "useCallback para memoizar funciones y evitar re-renders",
|
|
21
|
+
"example": "const handleClick = useCallback(() => { ... }, [dep]);",
|
|
22
|
+
"since": "16.8"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"pattern": "Suspense para carga lazy y data fetching",
|
|
26
|
+
"example": "<Suspense fallback={<Spinner />}><LazyComponent /></Suspense>",
|
|
27
|
+
"since": "18.0"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"pattern": "createRoot para renderizado React 18",
|
|
31
|
+
"example": "import { createRoot } from 'react-dom/client'; createRoot(document.getElementById('root')).render(<App />);",
|
|
32
|
+
"since": "18.0"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"pattern": "useTransition para actualizaciones de estado no urgentes",
|
|
36
|
+
"example": "const [isPending, startTransition] = useTransition(); startTransition(() => setFilter(value));",
|
|
37
|
+
"since": "18.0"
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"deprecatedPatterns": [
|
|
41
|
+
{
|
|
42
|
+
"pattern": "ReactDOM.render() — reemplazado en React 18",
|
|
43
|
+
"replacedBy": "createRoot(element).render(<App />)",
|
|
44
|
+
"severity": "error"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"pattern": "Class Components con lifecycle methods para nuevo codigo",
|
|
48
|
+
"replacedBy": "Function Components con hooks",
|
|
49
|
+
"severity": "warning"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"pattern": "componentWillMount / componentWillReceiveProps / componentWillUpdate",
|
|
53
|
+
"replacedBy": "useEffect o getDerivedStateFromProps",
|
|
54
|
+
"severity": "error"
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"commonMistakes": [
|
|
58
|
+
{
|
|
59
|
+
"pattern": "Mutar el estado directamente en lugar de usar el setter",
|
|
60
|
+
"example": "state.items.push(newItem) — INCORRECTO",
|
|
61
|
+
"replacedBy": "setItems([...items, newItem])",
|
|
62
|
+
"severity": "error"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"pattern": "useEffect sin array de dependencias para ejecutar solo una vez",
|
|
66
|
+
"example": "useEffect(() => { init(); }) — sin [] ejecuta en cada render",
|
|
67
|
+
"replacedBy": "useEffect(() => { init(); }, []) — con [] ejecuta solo al montar",
|
|
68
|
+
"severity": "warning"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"pattern": "Usar index como key en listas con reordenamiento",
|
|
72
|
+
"example": "items.map((item, index) => <Item key={index} />) — causa bugs con reordenamiento",
|
|
73
|
+
"replacedBy": "Usar un ID unico: items.map(item => <Item key={item.id} />)",
|
|
74
|
+
"severity": "warning"
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"framework": "remix",
|
|
3
|
+
"displayName": "Remix",
|
|
4
|
+
"frameworkVersion": "2.x",
|
|
5
|
+
"lastUpdated": "2026-03-04",
|
|
6
|
+
"ecosystem": "typescript",
|
|
7
|
+
"customEntry": false,
|
|
8
|
+
"correctPatterns": [
|
|
9
|
+
{
|
|
10
|
+
"pattern": "loader function para data fetching server-side",
|
|
11
|
+
"example": "export const loader: LoaderFunction = async ({ params }) => { return json({ post: await getPost(params.id) }); };",
|
|
12
|
+
"since": "1.0"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"pattern": "action function para mutaciones de datos",
|
|
16
|
+
"example": "export const action: ActionFunction = async ({ request }) => { const data = await request.formData(); ... };",
|
|
17
|
+
"since": "1.0"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"pattern": "useLoaderData para consumir datos del loader",
|
|
21
|
+
"example": "const { post } = useLoaderData<typeof loader>();",
|
|
22
|
+
"since": "1.0"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"pattern": "ErrorBoundary export para manejar errores de ruta",
|
|
26
|
+
"example": "export function ErrorBoundary() { const error = useRouteError(); return <div>Error: {String(error)}</div>; }",
|
|
27
|
+
"since": "1.0"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"pattern": "Form de Remix para submissions con progressive enhancement",
|
|
31
|
+
"example": "import { Form } from '@remix-run/react'; <Form method='post'>",
|
|
32
|
+
"since": "1.0"
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"deprecatedPatterns": [
|
|
36
|
+
{
|
|
37
|
+
"pattern": "CatchBoundary de Remix v1",
|
|
38
|
+
"replacedBy": "ErrorBoundary con useRouteError() en Remix v2",
|
|
39
|
+
"severity": "error"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"pattern": "useTransition() de Remix v1",
|
|
43
|
+
"replacedBy": "useNavigation() en Remix v2",
|
|
44
|
+
"severity": "error"
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"commonMistakes": [
|
|
48
|
+
{
|
|
49
|
+
"pattern": "Intentar acceder a window/document en el loader",
|
|
50
|
+
"example": "export const loader = () => { window.localStorage.getItem('key') } — loader corre en server",
|
|
51
|
+
"replacedBy": "El loader solo corre en server; acceder a cookies via request.headers",
|
|
52
|
+
"severity": "error"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"pattern": "Confundir useLoaderData con useActionData",
|
|
56
|
+
"example": "useLoaderData para leer resultado de action — INCORRECTO",
|
|
57
|
+
"replacedBy": "useActionData para leer resultado de actions, useLoaderData para loaders",
|
|
58
|
+
"severity": "warning"
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"framework": "sveltekit",
|
|
3
|
+
"displayName": "SvelteKit",
|
|
4
|
+
"frameworkVersion": "2.x",
|
|
5
|
+
"lastUpdated": "2026-03-04",
|
|
6
|
+
"ecosystem": "typescript",
|
|
7
|
+
"customEntry": false,
|
|
8
|
+
"correctPatterns": [
|
|
9
|
+
{
|
|
10
|
+
"pattern": "load function en +page.server.ts para data fetching server-side",
|
|
11
|
+
"example": "export const load: PageServerLoad = async ({ params }) => { return { post: await getPost(params.id) }; };",
|
|
12
|
+
"since": "1.0"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"pattern": "Form Actions en +page.server.ts para mutaciones",
|
|
16
|
+
"example": "export const actions: Actions = { create: async ({ request }) => { ... } };",
|
|
17
|
+
"since": "1.0"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"pattern": "use:enhance para progressive enhancement de formularios",
|
|
21
|
+
"example": "<form method='POST' use:enhance>",
|
|
22
|
+
"since": "1.0"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"pattern": "$state rune para estado reactivo en Svelte 5",
|
|
26
|
+
"example": "let count = $state(0);",
|
|
27
|
+
"since": "2.0"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"pattern": "hooks.server.ts para middleware global",
|
|
31
|
+
"example": "export const handle: Handle = async ({ event, resolve }) => { return resolve(event); };",
|
|
32
|
+
"since": "1.0"
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"deprecatedPatterns": [
|
|
36
|
+
{
|
|
37
|
+
"pattern": "writable() stores de Svelte 4 para nuevo codigo Svelte 5",
|
|
38
|
+
"replacedBy": "$state rune y $derived rune",
|
|
39
|
+
"severity": "warning"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"pattern": "onMount para data fetching en lugar de load function",
|
|
43
|
+
"replacedBy": "load function en +page.server.ts o +page.ts",
|
|
44
|
+
"severity": "warning"
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"commonMistakes": [
|
|
48
|
+
{
|
|
49
|
+
"pattern": "Usar fetch directamente en componente para SSR data",
|
|
50
|
+
"example": "onMount(async () => { data = await fetch('/api/...') }) — no funciona en SSR",
|
|
51
|
+
"replacedBy": "load function en +page.server.ts",
|
|
52
|
+
"severity": "error"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"pattern": "Confundir +page.ts (universal) con +page.server.ts (solo server)",
|
|
56
|
+
"example": "Acceder a DB en +page.ts — expone credenciales al cliente",
|
|
57
|
+
"replacedBy": "Usar +page.server.ts para logica con acceso a DB/secrets",
|
|
58
|
+
"severity": "error"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"pattern": "Importar stores de Svelte 4 ($store syntax) en contexto server-side",
|
|
62
|
+
"example": "import { get } from 'svelte/store'; get(myStore) — no funciona en SSR",
|
|
63
|
+
"replacedBy": "Pasar datos via load function y props",
|
|
64
|
+
"severity": "error"
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"framework": "vue",
|
|
3
|
+
"displayName": "Vue",
|
|
4
|
+
"frameworkVersion": "3.x",
|
|
5
|
+
"lastUpdated": "2026-03-04",
|
|
6
|
+
"ecosystem": "typescript",
|
|
7
|
+
"customEntry": false,
|
|
8
|
+
"correctPatterns": [
|
|
9
|
+
{
|
|
10
|
+
"pattern": "Composition API con <script setup> para componentes Vue 3",
|
|
11
|
+
"example": "<script setup lang='ts'>\\nconst count = ref(0)\\n</script>",
|
|
12
|
+
"since": "3.0"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"pattern": "ref() para valores primitivos reactivos",
|
|
16
|
+
"example": "const message = ref<string>('hello'); console.log(message.value);",
|
|
17
|
+
"since": "3.0"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"pattern": "reactive() para objetos reactivos",
|
|
21
|
+
"example": "const state = reactive({ count: 0, name: '' });",
|
|
22
|
+
"since": "3.0"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"pattern": "Pinia para estado global en Vue 3",
|
|
26
|
+
"example": "const useStore = defineStore('main', () => { const count = ref(0); return { count }; });",
|
|
27
|
+
"since": "3.0"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"pattern": "defineProps y defineEmits en <script setup>",
|
|
31
|
+
"example": "const props = defineProps<{ title: string }>(); const emit = defineEmits<{ click: [] }>();",
|
|
32
|
+
"since": "3.0"
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"deprecatedPatterns": [
|
|
36
|
+
{
|
|
37
|
+
"pattern": "Vue 2 Options API new Vue({ data, methods }) para nuevo codigo",
|
|
38
|
+
"replacedBy": "Vue 3 Composition API con <script setup>",
|
|
39
|
+
"severity": "warning"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"pattern": "Vuex para nuevo codigo Vue 3",
|
|
43
|
+
"replacedBy": "Pinia (store oficial para Vue 3)",
|
|
44
|
+
"severity": "warning"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"pattern": "this.$set() de Vue 2 para reactividad",
|
|
48
|
+
"replacedBy": "ref() o reactive() — son automaticamente reactivos en Vue 3",
|
|
49
|
+
"severity": "error"
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"commonMistakes": [
|
|
53
|
+
{
|
|
54
|
+
"pattern": "Acceder a ref sin .value en <script setup>",
|
|
55
|
+
"example": "const count = ref(0); count++ — INCORRECTO, count es un objeto Ref",
|
|
56
|
+
"replacedBy": "count.value++ — acceder via .value en JS/TS",
|
|
57
|
+
"severity": "error"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"pattern": "Usar $emit en lugar de defineEmits en <script setup>",
|
|
61
|
+
"example": "this.$emit('change') — INCORRECTO en <script setup>",
|
|
62
|
+
"replacedBy": "const emit = defineEmits(['change']); emit('change')",
|
|
63
|
+
"severity": "warning"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"pattern": "Mutar props directamente",
|
|
67
|
+
"example": "props.value = newValue — las props son de solo lectura",
|
|
68
|
+
"replacedBy": "Emitir un evento al padre para que actualice el valor",
|
|
69
|
+
"severity": "error"
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
}
|
|
@@ -38,7 +38,8 @@
|
|
|
38
38
|
"learn_pattern",
|
|
39
39
|
"consult_docs",
|
|
40
40
|
"facilitate",
|
|
41
|
-
"check_config_health"
|
|
41
|
+
"check_config_health",
|
|
42
|
+
"list_templates"
|
|
42
43
|
],
|
|
43
44
|
"proTools": [
|
|
44
45
|
"audit",
|
|
@@ -79,9 +80,28 @@
|
|
|
79
80
|
"security_check",
|
|
80
81
|
"suggest_mcps",
|
|
81
82
|
"suggest_tooling",
|
|
82
|
-
"
|
|
83
|
+
"spec_history",
|
|
84
|
+
"validate_workflow",
|
|
85
|
+
"spec_coverage",
|
|
86
|
+
"estimate_ai_cost",
|
|
87
|
+
"generate_ci",
|
|
88
|
+
"manage_hooks",
|
|
89
|
+
"apply_template",
|
|
90
|
+
"check_spec_accuracy",
|
|
91
|
+
"update_registry"
|
|
92
|
+
],
|
|
93
|
+
"alwaysAllowed": [
|
|
94
|
+
"activate_license",
|
|
95
|
+
"deactivate_license",
|
|
96
|
+
"license_status",
|
|
97
|
+
"usage_stats",
|
|
98
|
+
"usage_report",
|
|
99
|
+
"start_dashboard",
|
|
100
|
+
"stop_dashboard",
|
|
101
|
+
"start_webhook",
|
|
102
|
+
"stop_webhook",
|
|
103
|
+
"webhook_status"
|
|
83
104
|
],
|
|
84
|
-
"alwaysAllowed": ["activate_license", "deactivate_license", "license_status", "usage_stats", "usage_report"],
|
|
85
105
|
"variantMapping": {
|
|
86
106
|
"Planu Pro": "pro",
|
|
87
107
|
"Planu Team": "team"
|