@dsalazardev/ai-hub-cli 0.0.0-stage → 0.1.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/LICENSE +21 -0
- package/NOTICE.md +34 -0
- package/README.md +64 -2
- package/agents/cpp-build-resolver.md +25 -0
- package/agents/cpp-reviewer.md +28 -0
- package/agents/csharp-reviewer.md +28 -0
- package/agents/django-build-resolver.md +25 -0
- package/agents/django-reviewer.md +28 -0
- package/agents/explorer-domain.md +28 -0
- package/agents/fastapi-reviewer.md +28 -0
- package/agents/flutter-build-resolver.md +25 -0
- package/agents/flutter-reviewer.md +28 -0
- package/agents/go-build-resolver.md +25 -0
- package/agents/go-reviewer.md +28 -0
- package/agents/implementer-backend.md +30 -0
- package/agents/implementer-frontend.md +30 -0
- package/agents/java-build-resolver.md +26 -0
- package/agents/java-reviewer.md +29 -0
- package/agents/kotlin-build-resolver.md +25 -0
- package/agents/kotlin-reviewer.md +28 -0
- package/agents/mle-reviewer.md +28 -0
- package/agents/php-reviewer.md +29 -0
- package/agents/postgres-reviewer.md +28 -0
- package/agents/python-reviewer.md +28 -0
- package/agents/pytorch-build-resolver.md +25 -0
- package/agents/rag-reviewer.md +28 -0
- package/agents/react-build-resolver.md +26 -0
- package/agents/react-reviewer.md +29 -0
- package/agents/reviewer-architecture.md +32 -0
- package/agents/reviewer-tests.md +31 -0
- package/agents/rust-build-resolver.md +25 -0
- package/agents/rust-reviewer.md +28 -0
- package/agents/spec-author.md +36 -0
- package/agents/spec-miner.md +14 -0
- package/agents/swift-build-resolver.md +25 -0
- package/agents/swift-reviewer.md +28 -0
- package/agents/typescript-reviewer.md +28 -0
- package/agents/vue-reviewer.md +28 -0
- package/dist/backup/snapshots.d.ts +24 -0
- package/dist/backup/snapshots.js +171 -0
- package/dist/bin/ai-hub.d.ts +2 -0
- package/dist/bin/ai-hub.js +11 -0
- package/dist/cli/args.d.ts +4 -0
- package/dist/cli/args.js +63 -0
- package/dist/cli/context.d.ts +7 -0
- package/dist/cli/context.js +74 -0
- package/dist/cli/doctor.d.ts +14 -0
- package/dist/cli/doctor.js +200 -0
- package/dist/cli/drift.d.ts +2 -0
- package/dist/cli/drift.js +34 -0
- package/dist/cli/items.d.ts +5 -0
- package/dist/cli/items.js +10 -0
- package/dist/cli/legacy.d.ts +3 -0
- package/dist/cli/legacy.js +18 -0
- package/dist/cli/maintenance.d.ts +8 -0
- package/dist/cli/maintenance.js +262 -0
- package/dist/cli/memory.d.ts +2 -0
- package/dist/cli/memory.js +84 -0
- package/dist/cli/onboarding.d.ts +17 -0
- package/dist/cli/onboarding.js +234 -0
- package/dist/cli/run.d.ts +15 -0
- package/dist/cli/run.js +183 -0
- package/dist/cli/source.d.ts +5 -0
- package/dist/cli/source.js +22 -0
- package/dist/cli/trunk.d.ts +8 -0
- package/dist/cli/trunk.js +54 -0
- package/dist/cli/types.d.ts +17 -0
- package/dist/cli/types.js +4 -0
- package/dist/cli/worktrees.d.ts +11 -0
- package/dist/cli/worktrees.js +141 -0
- package/dist/engine/engine.d.ts +48 -0
- package/dist/engine/engine.js +114 -0
- package/dist/engine/gates.d.ts +2 -0
- package/dist/engine/gates.js +93 -0
- package/dist/frontmatter.d.ts +11 -0
- package/dist/frontmatter.js +30 -0
- package/dist/harness/guards/adapters/context.d.ts +19 -0
- package/dist/harness/guards/adapters/context.js +153 -0
- package/dist/harness/guards/adapters/hermes.d.ts +13 -0
- package/dist/harness/guards/adapters/hermes.js +18 -0
- package/dist/harness/guards/adapters/hooks.d.ts +25 -0
- package/dist/harness/guards/adapters/hooks.js +52 -0
- package/dist/harness/guards/branch.d.ts +5 -0
- package/dist/harness/guards/branch.js +43 -0
- package/dist/harness/guards/danger.d.ts +13 -0
- package/dist/harness/guards/danger.js +157 -0
- package/dist/harness/guards/index.d.ts +6 -0
- package/dist/harness/guards/index.js +6 -0
- package/dist/harness/guards/preflight.d.ts +14 -0
- package/dist/harness/guards/preflight.js +37 -0
- package/dist/harness/guards/ship.d.ts +2 -0
- package/dist/harness/guards/ship.js +35 -0
- package/dist/harness/guards/trunk.d.ts +5 -0
- package/dist/harness/guards/trunk.js +41 -0
- package/dist/harness/guards/types.d.ts +50 -0
- package/dist/harness/guards/types.js +1 -0
- package/dist/harness/memory/ledger.d.ts +53 -0
- package/dist/harness/memory/ledger.js +136 -0
- package/dist/harness/memory/state.d.ts +35 -0
- package/dist/harness/memory/state.js +121 -0
- package/dist/harness/worktree/reaper.d.ts +32 -0
- package/dist/harness/worktree/reaper.js +54 -0
- package/dist/manifest/build.d.ts +1 -0
- package/dist/manifest/build.js +1 -0
- package/dist/manifest/cli.d.ts +2 -0
- package/dist/manifest/cli.js +44 -0
- package/dist/manifest/dispatch.d.ts +13 -0
- package/dist/manifest/dispatch.js +36 -0
- package/dist/manifest/labels.d.ts +15 -0
- package/dist/manifest/labels.js +70 -0
- package/dist/manifest/manifest.d.ts +113 -0
- package/dist/manifest/manifest.js +202 -0
- package/dist/package-info.d.ts +4 -0
- package/dist/package-info.js +7 -0
- package/dist/paths.d.ts +33 -0
- package/dist/paths.js +123 -0
- package/dist/presets/detect.d.ts +24 -0
- package/dist/presets/detect.js +116 -0
- package/dist/presets/materialize.d.ts +18 -0
- package/dist/presets/materialize.js +101 -0
- package/dist/presets/resolve.d.ts +37 -0
- package/dist/presets/resolve.js +83 -0
- package/dist/presets/schema.d.ts +57 -0
- package/dist/presets/schema.js +68 -0
- package/dist/source-checkout.d.ts +8 -0
- package/dist/source-checkout.js +19 -0
- package/dist/sync/config.d.ts +47 -0
- package/dist/sync/config.js +85 -0
- package/dist/sync/lock.d.ts +16 -0
- package/dist/sync/lock.js +43 -0
- package/dist/sync/render.d.ts +18 -0
- package/dist/sync/render.js +255 -0
- package/dist/sync/sync.d.ts +38 -0
- package/dist/sync/sync.js +288 -0
- package/dist/sync/targets.d.ts +24 -0
- package/dist/sync/targets.js +78 -0
- package/engine/coupling.json +4 -0
- package/engine/engine.yaml +250 -0
- package/engine/legacy-paths.json +4 -0
- package/engine/preflight.md +11 -0
- package/manifest.json +393 -0
- package/package.json +61 -4
- package/presets/angular-express/harness/rules/01-zero-any.sh +25 -0
- package/presets/angular-express/harness/rules/02-no-ng-module.sh +21 -0
- package/presets/angular-express/harness/rules/03-no-constructor-injection.sh +21 -0
- package/presets/angular-express/harness/rules/04-no-legacy-directives.sh +21 -0
- package/presets/angular-express/harness/rules/05-no-dolibarrdal-inheritance.sh +25 -0
- package/presets/angular-express/harness/rules/06-no-todos.sh +22 -0
- package/presets/angular-express/harness/run-all.sh +13 -0
- package/presets/angular-express/preset.yaml +55 -0
- package/presets/angular-express/references/common-imports-catalog.md +146 -0
- package/presets/angular-express/references/fichajes-migration-notes.md +57 -0
- package/presets/angular-express/references/module-implementation-flow.md +260 -0
- package/presets/angular-express/references/products-coding-standard.md +143 -0
- package/presets/angular-express/references/products-module-blueprint.md +860 -0
- package/presets/angular-express/references/replicate-module-checklist.md +72 -0
- package/presets/angular-express/references/users-migration-notes.md +172 -0
- package/presets/angular-express/rules/architecture.md +8 -0
- package/presets/angular-express/rules/backend.md +4 -0
- package/presets/angular-express/rules/frontend.md +53 -0
- package/presets/angular-express/skills/angular-developer/SKILL.md +130 -0
- package/presets/angular-express/skills/angular-developer/references/angular-animations.md +160 -0
- package/presets/angular-express/skills/angular-developer/references/angular-aria.md +410 -0
- package/presets/angular-express/skills/angular-developer/references/cli.md +86 -0
- package/presets/angular-express/skills/angular-developer/references/component-harnesses.md +59 -0
- package/presets/angular-express/skills/angular-developer/references/component-styling.md +91 -0
- package/presets/angular-express/skills/angular-developer/references/components.md +117 -0
- package/presets/angular-express/skills/angular-developer/references/creating-services.md +97 -0
- package/presets/angular-express/skills/angular-developer/references/data-resolvers.md +69 -0
- package/presets/angular-express/skills/angular-developer/references/define-routes.md +67 -0
- package/presets/angular-express/skills/angular-developer/references/defining-providers.md +72 -0
- package/presets/angular-express/skills/angular-developer/references/di-fundamentals.md +120 -0
- package/presets/angular-express/skills/angular-developer/references/e2e-testing.md +66 -0
- package/presets/angular-express/skills/angular-developer/references/effects.md +83 -0
- package/presets/angular-express/skills/angular-developer/references/hierarchical-injectors.md +43 -0
- package/presets/angular-express/skills/angular-developer/references/host-elements.md +80 -0
- package/presets/angular-express/skills/angular-developer/references/injection-context.md +63 -0
- package/presets/angular-express/skills/angular-developer/references/inputs.md +101 -0
- package/presets/angular-express/skills/angular-developer/references/linked-signal.md +59 -0
- package/presets/angular-express/skills/angular-developer/references/loading-strategies.md +61 -0
- package/presets/angular-express/skills/angular-developer/references/mcp.md +106 -0
- package/presets/angular-express/skills/angular-developer/references/migrations.md +30 -0
- package/presets/angular-express/skills/angular-developer/references/navigate-to-routes.md +69 -0
- package/presets/angular-express/skills/angular-developer/references/outputs.md +86 -0
- package/presets/angular-express/skills/angular-developer/references/reactive-forms.md +122 -0
- package/presets/angular-express/skills/angular-developer/references/rendering-strategies.md +44 -0
- package/presets/angular-express/skills/angular-developer/references/resource.md +74 -0
- package/presets/angular-express/skills/angular-developer/references/route-animations.md +56 -0
- package/presets/angular-express/skills/angular-developer/references/route-guards.md +52 -0
- package/presets/angular-express/skills/angular-developer/references/router-lifecycle.md +45 -0
- package/presets/angular-express/skills/angular-developer/references/router-testing.md +87 -0
- package/presets/angular-express/skills/angular-developer/references/show-routes-with-outlets.md +68 -0
- package/presets/angular-express/skills/angular-developer/references/signal-forms.md +897 -0
- package/presets/angular-express/skills/angular-developer/references/signals-overview.md +94 -0
- package/presets/angular-express/skills/angular-developer/references/tailwind-css.md +69 -0
- package/presets/angular-express/skills/angular-developer/references/template-driven-forms.md +114 -0
- package/presets/angular-express/skills/angular-developer/references/testing-fundamentals.md +66 -0
- package/presets/angular-express/skills/angular-new-app/SKILL.md +62 -0
- package/presets/angular-express/skills/frontend-design/LICENSE.txt +177 -0
- package/presets/angular-express/skills/frontend-design/SKILL.md +55 -0
- package/presets/angular-express/skills/onna-architecture-angular/SKILL.md +229 -0
- package/presets/angular-express/skills/onna-architecture-bff/SKILL.md +446 -0
- package/presets/angular-express/skills/onna-architecture-common/SKILL.md +313 -0
- package/presets/angular-express/skills/onna-design-system/SKILL.md +615 -0
- package/presets/base/preset.yaml +27 -0
- package/presets/base/rules/core.md +35 -0
- package/presets/generic-ts/preset.yaml +46 -0
- package/presets/python/preset.yaml +47 -0
- package/presets/python/rules/python.md +10 -0
- package/schema/engine.schema.json +73 -0
- package/schema/manifest.schema.json +140 -0
- package/schema/preset.schema.json +98 -0
- package/schema/state.schema.json +27 -0
- package/skills/shared/ab-testing/SKILL.md +159 -0
- package/skills/shared/ab-testing/evals/README.md +8 -0
- package/skills/shared/ab-testing/evals/cases.yaml +49 -0
- package/skills/shared/ab-testing/references/pitfalls.md +74 -0
- package/skills/shared/ab-testing/references/sample-size-and-cuped.md +128 -0
- package/skills/shared/ab-testing/scripts/verify.sh +89 -0
- package/skills/shared/accessibility/SKILL.md +216 -0
- package/skills/shared/accessibility/evals/README.md +3 -0
- package/skills/shared/accessibility/evals/cases.yaml +47 -0
- package/skills/shared/accessibility/references/aria-patterns.md +113 -0
- package/skills/shared/accessibility/references/wcag22-checklist.md +83 -0
- package/skills/shared/accessibility/scripts/verify.sh +103 -0
- package/skills/shared/agent-eval/SKILL.md +187 -0
- package/skills/shared/agent-eval/evals/README.md +12 -0
- package/skills/shared/agent-eval/evals/cases.yaml +45 -0
- package/skills/shared/agent-eval/references/judge-design.md +118 -0
- package/skills/shared/agent-eval/references/runner-and-gate.md +183 -0
- package/skills/shared/agent-eval/scripts/verify.sh +161 -0
- package/skills/shared/agent-safety/SKILL.md +169 -0
- package/skills/shared/agent-safety/evals/README.md +12 -0
- package/skills/shared/agent-safety/evals/cases.yaml +46 -0
- package/skills/shared/agent-safety/references/threat-model.md +51 -0
- package/skills/shared/analyze/SKILL.md +123 -0
- package/skills/shared/analyze/evals/README.md +72 -0
- package/skills/shared/analyze/evals/cases.yaml +74 -0
- package/skills/shared/angular/SKILL.md +275 -0
- package/skills/shared/angular/evals/README.md +3 -0
- package/skills/shared/angular/evals/cases.yaml +38 -0
- package/skills/shared/angular/references/migration.md +81 -0
- package/skills/shared/angular/references/signals-rxjs.md +92 -0
- package/skills/shared/angular/scripts/verify.sh +122 -0
- package/skills/shared/api-connector-builder/SKILL.md +268 -0
- package/skills/shared/api-connector-builder/evals/README.md +11 -0
- package/skills/shared/api-connector-builder/evals/cases.yaml +47 -0
- package/skills/shared/api-connector-builder/references/auth-flows.md +132 -0
- package/skills/shared/api-connector-builder/references/pagination.md +144 -0
- package/skills/shared/api-connector-builder/scripts/verify.sh +172 -0
- package/skills/shared/api-design/SKILL.md +182 -0
- package/skills/shared/api-design/evals/README.md +3 -0
- package/skills/shared/api-design/evals/cases.yaml +45 -0
- package/skills/shared/api-design/references/graphql-design.md +70 -0
- package/skills/shared/api-design/references/openapi-contract.md +86 -0
- package/skills/shared/api-design/references/rest-conventions.md +63 -0
- package/skills/shared/api-design/references/versioning-and-evolution.md +49 -0
- package/skills/shared/api-design/scripts/verify.sh +138 -0
- package/skills/shared/astro/SKILL.md +257 -0
- package/skills/shared/astro/evals/README.md +3 -0
- package/skills/shared/astro/evals/cases.yaml +41 -0
- package/skills/shared/astro/references/content-layer.md +118 -0
- package/skills/shared/astro/references/deploy-and-integrations.md +163 -0
- package/skills/shared/astro/scripts/verify.sh +137 -0
- package/skills/shared/author-skill/SKILL.md +194 -0
- package/skills/shared/author-skill/evals/README.md +66 -0
- package/skills/shared/author-skill/evals/cases.yaml +75 -0
- package/skills/shared/author-skill/references/description-recipe.md +85 -0
- package/skills/shared/author-skill/references/eval-authoring.md +108 -0
- package/skills/shared/author-skill/references/skill-conventions.md +95 -0
- package/skills/shared/automation-flows/SKILL.md +122 -0
- package/skills/shared/automation-flows/evals/README.md +5 -0
- package/skills/shared/automation-flows/evals/cases.yaml +44 -0
- package/skills/shared/automation-flows/references/error-handling.md +58 -0
- package/skills/shared/automation-flows/references/n8n-workflow-json.md +63 -0
- package/skills/shared/automation-flows/scripts/verify.sh +78 -0
- package/skills/shared/aws-essentials/SKILL.md +206 -0
- package/skills/shared/aws-essentials/evals/README.md +10 -0
- package/skills/shared/aws-essentials/evals/cases.yaml +44 -0
- package/skills/shared/aws-essentials/references/iam-least-privilege.md +134 -0
- package/skills/shared/aws-essentials/references/rds-cloudfront-recipes.md +127 -0
- package/skills/shared/aws-essentials/scripts/verify.sh +99 -0
- package/skills/shared/backups/SKILL.md +131 -0
- package/skills/shared/backups/evals/README.md +3 -0
- package/skills/shared/backups/evals/cases.yaml +42 -0
- package/skills/shared/backups/references/engine-recipes.md +121 -0
- package/skills/shared/backups/references/restore-runbook.md +65 -0
- package/skills/shared/backups/scripts/verify.sh +80 -0
- package/skills/shared/bash-scripting/SKILL.md +227 -0
- package/skills/shared/bash-scripting/evals/README.md +3 -0
- package/skills/shared/bash-scripting/evals/cases.yaml +45 -0
- package/skills/shared/bash-scripting/references/portability.md +97 -0
- package/skills/shared/bash-scripting/scripts/verify.sh +140 -0
- package/skills/shared/building-agents/SKILL.md +386 -0
- package/skills/shared/building-agents/evals/README.md +68 -0
- package/skills/shared/building-agents/evals/cases.yaml +60 -0
- package/skills/shared/building-agents/references/agent-loops-and-harness.md +371 -0
- package/skills/shared/building-agents/references/evals-and-observability.md +420 -0
- package/skills/shared/building-agents/references/mcp-servers.md +294 -0
- package/skills/shared/building-agents/references/provider-abstraction.md +489 -0
- package/skills/shared/building-agents/references/tools-and-rag.md +417 -0
- package/skills/shared/building-agents/scripts/verify.sh +121 -0
- package/skills/shared/chatbot/SKILL.md +151 -0
- package/skills/shared/chatbot/evals/README.md +13 -0
- package/skills/shared/chatbot/evals/cases.yaml +43 -0
- package/skills/shared/chatbot/references/handoff-and-sales.md +71 -0
- package/skills/shared/chatbot/references/system-prompt-and-guardrails.md +78 -0
- package/skills/shared/chatbot/scripts/verify.sh +162 -0
- package/skills/shared/chrome-extension/SKILL.md +169 -0
- package/skills/shared/chrome-extension/evals/README.md +12 -0
- package/skills/shared/chrome-extension/evals/cases.yaml +40 -0
- package/skills/shared/chrome-extension/references/store-and-migration.md +84 -0
- package/skills/shared/chrome-extension/scripts/verify.sh +62 -0
- package/skills/shared/clarify/SKILL.md +161 -0
- package/skills/shared/clarify/evals/README.md +70 -0
- package/skills/shared/clarify/evals/cases.yaml +71 -0
- package/skills/shared/clickhouse-analytics/SKILL.md +159 -0
- package/skills/shared/clickhouse-analytics/evals/README.md +3 -0
- package/skills/shared/clickhouse-analytics/evals/cases.yaml +45 -0
- package/skills/shared/clickhouse-analytics/references/ingestion-and-mvs.md +109 -0
- package/skills/shared/clickhouse-analytics/references/query-optimization.md +76 -0
- package/skills/shared/clickhouse-analytics/references/schema-and-engines.md +63 -0
- package/skills/shared/clickhouse-analytics/scripts/verify.sh +109 -0
- package/skills/shared/cloudflare/SKILL.md +186 -0
- package/skills/shared/cloudflare/evals/README.md +15 -0
- package/skills/shared/cloudflare/evals/cases.yaml +46 -0
- package/skills/shared/cloudflare/references/storage-primitives.md +104 -0
- package/skills/shared/cloudflare/references/wrangler-config.md +91 -0
- package/skills/shared/cloudflare/scripts/verify.sh +133 -0
- package/skills/shared/code-review/SKILL.md +132 -0
- package/skills/shared/code-review/evals/README.md +3 -0
- package/skills/shared/code-review/evals/cases.yaml +55 -0
- package/skills/shared/code-review/references/pr-workflow.md +67 -0
- package/skills/shared/codebase-onboarding/SKILL.md +128 -0
- package/skills/shared/codebase-onboarding/evals/README.md +3 -0
- package/skills/shared/codebase-onboarding/evals/cases.yaml +69 -0
- package/skills/shared/codebase-onboarding/references/recon-playbook.md +57 -0
- package/skills/shared/codebase-onboarding/scripts/verify.sh +54 -0
- package/skills/shared/compose-multiplatform/SKILL.md +198 -0
- package/skills/shared/compose-multiplatform/evals/README.md +3 -0
- package/skills/shared/compose-multiplatform/evals/cases.yaml +40 -0
- package/skills/shared/compose-multiplatform/references/ios-interop.md +91 -0
- package/skills/shared/compose-multiplatform/references/project-setup.md +96 -0
- package/skills/shared/compose-multiplatform/scripts/verify.sh +123 -0
- package/skills/shared/connect-tool/SKILL.md +163 -0
- package/skills/shared/connect-tool/evals/cases.yaml +58 -0
- package/skills/shared/constitution/SKILL.md +158 -0
- package/skills/shared/constitution/evals/README.md +68 -0
- package/skills/shared/constitution/evals/cases.yaml +72 -0
- package/skills/shared/constitution/references/constitution-template.md +100 -0
- package/skills/shared/context-budget/SKILL.md +114 -0
- package/skills/shared/context-budget/evals/README.md +11 -0
- package/skills/shared/context-budget/evals/cases.yaml +40 -0
- package/skills/shared/context-budget/references/handoff-and-compaction.md +96 -0
- package/skills/shared/continuous-learning/SKILL.md +106 -0
- package/skills/shared/continuous-learning/evals/README.md +16 -0
- package/skills/shared/continuous-learning/evals/cases.yaml +39 -0
- package/skills/shared/continuous-learning/references/lesson-routing.md +106 -0
- package/skills/shared/coolify/SKILL.md +194 -0
- package/skills/shared/coolify/evals/README.md +21 -0
- package/skills/shared/coolify/evals/cases.yaml +46 -0
- package/skills/shared/coolify/references/databases-and-backups.md +99 -0
- package/skills/shared/coolify/references/deploy-recipes.md +105 -0
- package/skills/shared/coolify/references/install-and-proxy.md +80 -0
- package/skills/shared/coolify/scripts/verify.sh +123 -0
- package/skills/shared/cost-tracking/SKILL.md +176 -0
- package/skills/shared/cost-tracking/evals/README.md +3 -0
- package/skills/shared/cost-tracking/evals/cases.yaml +45 -0
- package/skills/shared/cost-tracking/references/cloud-caps.md +52 -0
- package/skills/shared/cost-tracking/references/pricing-tables.md +51 -0
- package/skills/shared/cost-tracking/scripts/verify.sh +135 -0
- package/skills/shared/cpp/SKILL.md +302 -0
- package/skills/shared/cpp/evals/README.md +14 -0
- package/skills/shared/cpp/evals/cases.yaml +44 -0
- package/skills/shared/cpp/references/cmake.md +167 -0
- package/skills/shared/cpp/references/move-and-templates.md +130 -0
- package/skills/shared/cpp/references/undefined-behavior.md +86 -0
- package/skills/shared/cpp/scripts/verify.sh +165 -0
- package/skills/shared/csharp-dotnet/SKILL.md +272 -0
- package/skills/shared/csharp-dotnet/evals/README.md +3 -0
- package/skills/shared/csharp-dotnet/evals/cases.yaml +48 -0
- package/skills/shared/csharp-dotnet/references/aspnetcore.md +99 -0
- package/skills/shared/csharp-dotnet/references/async.md +82 -0
- package/skills/shared/csharp-dotnet/references/efcore.md +96 -0
- package/skills/shared/csharp-dotnet/scripts/verify.sh +90 -0
- package/skills/shared/data-cleaning/SKILL.md +259 -0
- package/skills/shared/data-cleaning/evals/README.md +16 -0
- package/skills/shared/data-cleaning/evals/cases.yaml +57 -0
- package/skills/shared/data-cleaning/references/normalization-recipes.md +136 -0
- package/skills/shared/data-cleaning/references/validation-patterns.md +134 -0
- package/skills/shared/data-cleaning/scripts/verify.sh +115 -0
- package/skills/shared/data-scraper/SKILL.md +130 -0
- package/skills/shared/data-scraper/evals/README.md +3 -0
- package/skills/shared/data-scraper/evals/cases.yaml +46 -0
- package/skills/shared/data-scraper/references/anti-bot.md +85 -0
- package/skills/shared/data-scraper/references/frameworks.md +116 -0
- package/skills/shared/data-scraper/references/legal-compliance.md +64 -0
- package/skills/shared/data-scraper/scripts/verify.sh +166 -0
- package/skills/shared/db-migrations/SKILL.md +237 -0
- package/skills/shared/db-migrations/evals/README.md +10 -0
- package/skills/shared/db-migrations/evals/cases.yaml +46 -0
- package/skills/shared/db-migrations/references/backfill-and-batching.md +105 -0
- package/skills/shared/db-migrations/references/expand-contract-playbook.md +152 -0
- package/skills/shared/db-migrations/references/tools-and-runners.md +88 -0
- package/skills/shared/db-migrations/scripts/verify.sh +112 -0
- package/skills/shared/debug/SKILL.md +188 -0
- package/skills/shared/debug/evals/README.md +88 -0
- package/skills/shared/debug/evals/cases.yaml +74 -0
- package/skills/shared/decision-challenge/SKILL.md +113 -0
- package/skills/shared/decision-challenge/evals/README.md +3 -0
- package/skills/shared/decision-challenge/evals/cases.yaml +42 -0
- package/skills/shared/decision-records/SKILL.md +202 -0
- package/skills/shared/decision-records/evals/README.md +3 -0
- package/skills/shared/decision-records/evals/cases.yaml +43 -0
- package/skills/shared/decision-records/references/templates.md +252 -0
- package/skills/shared/decision-records/scripts/verify.sh +105 -0
- package/skills/shared/deep-learning/SKILL.md +226 -0
- package/skills/shared/deep-learning/evals/README.md +11 -0
- package/skills/shared/deep-learning/evals/cases.yaml +48 -0
- package/skills/shared/deep-learning/references/distributed.md +105 -0
- package/skills/shared/deep-learning/references/training-recipes.md +135 -0
- package/skills/shared/deployment/SKILL.md +374 -0
- package/skills/shared/deployment/evals/README.md +50 -0
- package/skills/shared/deployment/evals/cases.yaml +53 -0
- package/skills/shared/deployment/references/coolify.md +216 -0
- package/skills/shared/deployment/references/dockerfiles-by-stack.md +319 -0
- package/skills/shared/deployment/references/github-actions.md +295 -0
- package/skills/shared/deployment/references/hosting-targets.md +272 -0
- package/skills/shared/deployment/scripts/verify.sh +134 -0
- package/skills/shared/deprecation/SKILL.md +123 -0
- package/skills/shared/deprecation/evals/README.md +3 -0
- package/skills/shared/deprecation/evals/cases.yaml +42 -0
- package/skills/shared/design/IMPECCABLE-LICENSE.txt +191 -0
- package/skills/shared/design/SKILL.md +111 -0
- package/skills/shared/design/THIRD_PARTY.md +26 -0
- package/skills/shared/design/engine/LICENSE +21 -0
- package/skills/shared/design/engine/RUN.md +515 -0
- package/skills/shared/design/engine/UPSTREAM.json +4 -0
- package/skills/shared/design/engine/assets/app.css +216 -0
- package/skills/shared/design/engine/assets/base.css +105 -0
- package/skills/shared/design/engine/assets/base.js +37 -0
- package/skills/shared/design/engine/assets/charts.js +617 -0
- package/skills/shared/design/engine/assets/scenes/stage.css +28 -0
- package/skills/shared/design/engine/assets/scenes/stage.js +133 -0
- package/skills/shared/design/engine/library/app.json +1327 -0
- package/skills/shared/design/engine/library/directions.json +1078 -0
- package/skills/shared/design/engine/library/heroes.json +1086 -0
- package/skills/shared/design/engine/library/motions.json +92 -0
- package/skills/shared/design/engine/library/palettes.json +1485 -0
- package/skills/shared/design/engine/library/photos.json +7240 -0
- package/skills/shared/design/engine/library/sections.json +4429 -0
- package/skills/shared/design/engine/library/sites.json +8350 -0
- package/skills/shared/design/engine/library/type.json +2024 -0
- package/skills/shared/design/engine/references/app-screens.md +1199 -0
- package/skills/shared/design/engine/references/colour.md +141 -0
- package/skills/shared/design/engine/references/copy.md +177 -0
- package/skills/shared/design/engine/references/critique.md +182 -0
- package/skills/shared/design/engine/references/imagery.md +791 -0
- package/skills/shared/design/engine/references/layout.md +292 -0
- package/skills/shared/design/engine/references/motion.md +980 -0
- package/skills/shared/design/engine/references/research.md +356 -0
- package/skills/shared/design/engine/references/scenes.md +174 -0
- package/skills/shared/design/engine/references/tells.md +115 -0
- package/skills/shared/design/engine/references/type.md +170 -0
- package/skills/shared/design/engine/scripts/assets.mjs +865 -0
- package/skills/shared/design/engine/scripts/draw.mjs +584 -0
- package/skills/shared/design/engine/scripts/inspect.mjs +303 -0
- package/skills/shared/design/engine/scripts/lib/app-draw.mjs +203 -0
- package/skills/shared/design/engine/scripts/lib/cdp.mjs +248 -0
- package/skills/shared/design/engine/scripts/lib/probe.mjs +909 -0
- package/skills/shared/design/engine/scripts/lib/rules.mjs +243 -0
- package/skills/shared/design/engine/scripts/lint.mjs +119 -0
- package/skills/shared/design/engine/scripts/scenes.mjs +124 -0
- package/skills/shared/design/evals/cases.yaml +45 -0
- package/skills/shared/design/references/design-md.md +49 -0
- package/skills/shared/design/references/finish-review.md +46 -0
- package/skills/shared/design/references/modes.md +51 -0
- package/skills/shared/digitalocean/SKILL.md +227 -0
- package/skills/shared/digitalocean/evals/README.md +10 -0
- package/skills/shared/digitalocean/evals/cases.yaml +37 -0
- package/skills/shared/digitalocean/references/app-spec.md +126 -0
- package/skills/shared/digitalocean/references/droplet-ops.md +95 -0
- package/skills/shared/digitalocean/scripts/verify.sh +102 -0
- package/skills/shared/django/SKILL.md +263 -0
- package/skills/shared/django/evals/README.md +11 -0
- package/skills/shared/django/evals/cases.yaml +47 -0
- package/skills/shared/django/references/drf.md +109 -0
- package/skills/shared/django/references/orm-performance.md +91 -0
- package/skills/shared/django/references/security.md +81 -0
- package/skills/shared/django/references/testing.md +86 -0
- package/skills/shared/django/scripts/verify.sh +115 -0
- package/skills/shared/docker/SKILL.md +251 -0
- package/skills/shared/docker/evals/README.md +10 -0
- package/skills/shared/docker/evals/cases.yaml +44 -0
- package/skills/shared/docker/references/base-images-and-stages.md +104 -0
- package/skills/shared/docker/references/compose-recipes.md +109 -0
- package/skills/shared/docker/scripts/verify.sh +149 -0
- package/skills/shared/domains-dns/SKILL.md +131 -0
- package/skills/shared/domains-dns/evals/README.md +16 -0
- package/skills/shared/domains-dns/evals/cases.yaml +47 -0
- package/skills/shared/domains-dns/references/record-cookbook.md +94 -0
- package/skills/shared/domains-dns/references/tls-and-acme.md +90 -0
- package/skills/shared/domains-dns/references/verify-and-debug.md +64 -0
- package/skills/shared/domains-dns/scripts/verify.sh +163 -0
- package/skills/shared/drizzle-orm/SKILL.md +231 -0
- package/skills/shared/drizzle-orm/evals/README.md +12 -0
- package/skills/shared/drizzle-orm/evals/cases.yaml +47 -0
- package/skills/shared/drizzle-orm/references/relations-and-drivers.md +118 -0
- package/skills/shared/drizzle-orm/scripts/verify.sh +155 -0
- package/skills/shared/duckdb/SKILL.md +202 -0
- package/skills/shared/duckdb/evals/README.md +31 -0
- package/skills/shared/duckdb/evals/cases.yaml +41 -0
- package/skills/shared/duckdb/references/python-and-interop.md +105 -0
- package/skills/shared/duckdb/references/remote-and-lakehouse.md +101 -0
- package/skills/shared/duckdb/scripts/verify.sh +71 -0
- package/skills/shared/dynamodb/SKILL.md +204 -0
- package/skills/shared/dynamodb/evals/README.md +8 -0
- package/skills/shared/dynamodb/evals/cases.yaml +46 -0
- package/skills/shared/dynamodb/references/access-patterns.md +127 -0
- package/skills/shared/dynamodb/references/capacity-and-limits.md +78 -0
- package/skills/shared/dynamodb/scripts/verify.sh +108 -0
- package/skills/shared/e2e-testing/SKILL.md +233 -0
- package/skills/shared/e2e-testing/evals/README.md +10 -0
- package/skills/shared/e2e-testing/evals/cases.yaml +64 -0
- package/skills/shared/e2e-testing/references/config-and-ci.md +156 -0
- package/skills/shared/e2e-testing/references/flakiness-playbook.md +124 -0
- package/skills/shared/e2e-testing/scripts/verify.sh +117 -0
- package/skills/shared/electron/SKILL.md +209 -0
- package/skills/shared/electron/evals/README.md +13 -0
- package/skills/shared/electron/evals/cases.yaml +38 -0
- package/skills/shared/electron/references/packaging-and-updates.md +122 -0
- package/skills/shared/electron/references/security-and-ipc.md +158 -0
- package/skills/shared/electron/scripts/verify.sh +143 -0
- package/skills/shared/elixir/SKILL.md +209 -0
- package/skills/shared/elixir/evals/README.md +3 -0
- package/skills/shared/elixir/evals/cases.yaml +41 -0
- package/skills/shared/elixir/references/mix-and-releases.md +91 -0
- package/skills/shared/elixir/references/otp-patterns.md +96 -0
- package/skills/shared/elixir/scripts/verify.sh +76 -0
- package/skills/shared/email-deliverability/SKILL.md +148 -0
- package/skills/shared/email-deliverability/evals/README.md +21 -0
- package/skills/shared/email-deliverability/evals/cases.yaml +45 -0
- package/skills/shared/email-deliverability/scripts/verify.sh +98 -0
- package/skills/shared/embeddings-search/SKILL.md +184 -0
- package/skills/shared/embeddings-search/evals/README.md +10 -0
- package/skills/shared/embeddings-search/evals/cases.yaml +44 -0
- package/skills/shared/embeddings-search/references/evaluation.md +86 -0
- package/skills/shared/embeddings-search/references/models.md +73 -0
- package/skills/shared/embeddings-search/scripts/verify.sh +103 -0
- package/skills/shared/error-handling/SKILL.md +273 -0
- package/skills/shared/error-handling/evals/README.md +12 -0
- package/skills/shared/error-handling/evals/cases.yaml +46 -0
- package/skills/shared/error-handling/references/boundaries-and-messaging.md +120 -0
- package/skills/shared/error-handling/references/retry-and-resilience.md +154 -0
- package/skills/shared/error-handling/scripts/verify.sh +110 -0
- package/skills/shared/expo/SKILL.md +243 -0
- package/skills/shared/expo/evals/README.md +13 -0
- package/skills/shared/expo/evals/cases.yaml +44 -0
- package/skills/shared/expo/references/config-plugins.md +117 -0
- package/skills/shared/expo/references/eas-update.md +118 -0
- package/skills/shared/expo/scripts/verify.sh +132 -0
- package/skills/shared/fal/SKILL.md +196 -0
- package/skills/shared/fal/evals/README.md +3 -0
- package/skills/shared/fal/evals/cases.yaml +42 -0
- package/skills/shared/fal/references/models-and-cost.md +53 -0
- package/skills/shared/fal/references/queue-and-webhooks.md +153 -0
- package/skills/shared/fal/scripts/verify.sh +72 -0
- package/skills/shared/fastapi/SKILL.md +469 -0
- package/skills/shared/fastapi/evals/README.md +50 -0
- package/skills/shared/fastapi/evals/cases.yaml +55 -0
- package/skills/shared/fastapi/references/database.md +347 -0
- package/skills/shared/fastapi/references/production.md +338 -0
- package/skills/shared/fastapi/references/security.md +330 -0
- package/skills/shared/fastapi/references/testing.md +349 -0
- package/skills/shared/fastapi/scripts/verify.sh +157 -0
- package/skills/shared/finetuning/SKILL.md +232 -0
- package/skills/shared/finetuning/evals/README.md +13 -0
- package/skills/shared/finetuning/evals/cases.yaml +50 -0
- package/skills/shared/finetuning/references/hyperparameters-and-eval.md +74 -0
- package/skills/shared/finetuning/references/methods.md +189 -0
- package/skills/shared/firebase/SKILL.md +237 -0
- package/skills/shared/firebase/evals/README.md +12 -0
- package/skills/shared/firebase/evals/cases.yaml +45 -0
- package/skills/shared/firebase/references/cloud-functions.md +102 -0
- package/skills/shared/firebase/references/data-modeling.md +108 -0
- package/skills/shared/firebase/references/security-rules.md +137 -0
- package/skills/shared/firebase/scripts/verify.sh +98 -0
- package/skills/shared/flutter/SKILL.md +400 -0
- package/skills/shared/flutter/evals/README.md +54 -0
- package/skills/shared/flutter/evals/cases.yaml +69 -0
- package/skills/shared/flutter/references/architecture-and-state.md +499 -0
- package/skills/shared/flutter/references/i18n-and-dependencies.md +197 -0
- package/skills/shared/flutter/references/performance.md +299 -0
- package/skills/shared/flutter/references/testing.md +385 -0
- package/skills/shared/flutter/references/ui-and-navigation.md +378 -0
- package/skills/shared/flutter/scripts/verify.sh +104 -0
- package/skills/shared/fly-io/SKILL.md +197 -0
- package/skills/shared/fly-io/evals/README.md +3 -0
- package/skills/shared/fly-io/evals/cases.yaml +42 -0
- package/skills/shared/fly-io/references/fly-toml.md +155 -0
- package/skills/shared/fly-io/references/multi-region.md +66 -0
- package/skills/shared/fly-io/scripts/verify.sh +90 -0
- package/skills/shared/ftd/SKILL.md +111 -0
- package/skills/shared/ftd/evals/cases.yaml +66 -0
- package/skills/shared/ftd/evals/routing.json +24 -0
- package/skills/shared/game-design/SKILL.md +146 -0
- package/skills/shared/game-design/evals/README.md +13 -0
- package/skills/shared/game-design/evals/cases.yaml +47 -0
- package/skills/shared/game-design/references/mechanics-and-loops.md +78 -0
- package/skills/shared/game-design/references/playtesting-and-scope.md +58 -0
- package/skills/shared/game-design/references/progression-and-economy.md +70 -0
- package/skills/shared/game-storytelling/SKILL.md +134 -0
- package/skills/shared/game-storytelling/evals/README.md +28 -0
- package/skills/shared/game-storytelling/evals/cases.yaml +51 -0
- package/skills/shared/game-storytelling/references/branching-and-state.md +134 -0
- package/skills/shared/game-storytelling/references/dialogue-tools.md +117 -0
- package/skills/shared/game-storytelling/references/environmental-storytelling.md +71 -0
- package/skills/shared/gamedev-multiplayer/SKILL.md +237 -0
- package/skills/shared/gamedev-multiplayer/evals/README.md +12 -0
- package/skills/shared/gamedev-multiplayer/evals/cases.yaml +44 -0
- package/skills/shared/gamedev-multiplayer/references/godot-high-level-multiplayer.md +133 -0
- package/skills/shared/gamedev-multiplayer/references/prediction-and-latency.md +104 -0
- package/skills/shared/gamedev-multiplayer/references/unity-and-unreal-netcode.md +166 -0
- package/skills/shared/gamedev-pathing/SKILL.md +233 -0
- package/skills/shared/gamedev-pathing/evals/README.md +14 -0
- package/skills/shared/gamedev-pathing/evals/cases.yaml +49 -0
- package/skills/shared/gamedev-pathing/references/navmesh-workflow.md +110 -0
- package/skills/shared/gamedev-pathing/references/search-algorithms.md +135 -0
- package/skills/shared/gamedev-pathing/references/steering-and-avoidance.md +120 -0
- package/skills/shared/gamedev-physics/SKILL.md +225 -0
- package/skills/shared/gamedev-physics/evals/README.md +12 -0
- package/skills/shared/gamedev-physics/evals/cases.yaml +54 -0
- package/skills/shared/gamedev-physics/references/character-controllers.md +120 -0
- package/skills/shared/gamedev-physics/references/determinism-and-queries.md +124 -0
- package/skills/shared/gamedev-physics/references/layers-and-masks.md +115 -0
- package/skills/shared/gamedev-shaders/SKILL.md +232 -0
- package/skills/shared/gamedev-shaders/evals/README.md +14 -0
- package/skills/shared/gamedev-shaders/evals/cases.yaml +45 -0
- package/skills/shared/gamedev-shaders/references/effect-recipes.md +205 -0
- package/skills/shared/gamedev-shaders/references/godot-shading-language.md +133 -0
- package/skills/shared/gamedev-shaders/references/unity-and-unreal-shaders.md +169 -0
- package/skills/shared/gamedev-shipping/SKILL.md +220 -0
- package/skills/shared/gamedev-shipping/evals/README.md +9 -0
- package/skills/shared/gamedev-shipping/evals/cases.yaml +55 -0
- package/skills/shared/gamedev-shipping/references/mobile-and-desktop.md +127 -0
- package/skills/shared/gamedev-shipping/references/stores-and-ci.md +162 -0
- package/skills/shared/gamedev-shipping/references/web-export-headers.md +140 -0
- package/skills/shared/gcp-essentials/SKILL.md +324 -0
- package/skills/shared/gcp-essentials/evals/README.md +12 -0
- package/skills/shared/gcp-essentials/evals/cases.yaml +38 -0
- package/skills/shared/gcp-essentials/references/deploy-recipes.md +81 -0
- package/skills/shared/gcp-essentials/references/iam-and-auth.md +94 -0
- package/skills/shared/gcp-essentials/references/networking-and-sql.md +74 -0
- package/skills/shared/gcp-essentials/scripts/verify.sh +158 -0
- package/skills/shared/git-workflow/SKILL.md +214 -0
- package/skills/shared/git-workflow/evals/README.md +10 -0
- package/skills/shared/git-workflow/evals/cases.yaml +52 -0
- package/skills/shared/git-workflow/references/gitmoji.md +157 -0
- package/skills/shared/git-workflow/references/interactive-rebase.md +89 -0
- package/skills/shared/github-actions/SKILL.md +244 -0
- package/skills/shared/github-actions/evals/README.md +3 -0
- package/skills/shared/github-actions/evals/cases.yaml +45 -0
- package/skills/shared/github-actions/references/caching-and-matrix.md +92 -0
- package/skills/shared/github-actions/references/oidc-deploys.md +130 -0
- package/skills/shared/github-actions/scripts/verify.sh +105 -0
- package/skills/shared/gitlab-auth/SKILL.md +99 -0
- package/skills/shared/gitlab-workflow/SKILL.md +138 -0
- package/skills/shared/go/SKILL.md +390 -0
- package/skills/shared/go/evals/README.md +56 -0
- package/skills/shared/go/evals/cases.yaml +55 -0
- package/skills/shared/go/references/concurrency.md +557 -0
- package/skills/shared/go/references/http-services.md +529 -0
- package/skills/shared/go/references/testing.md +338 -0
- package/skills/shared/go/scripts/verify.sh +134 -0
- package/skills/shared/godot/SKILL.md +300 -0
- package/skills/shared/godot/evals/README.md +13 -0
- package/skills/shared/godot/evals/cases.yaml +50 -0
- package/skills/shared/godot/references/export-and-testing.md +102 -0
- package/skills/shared/godot/references/gdscript-style.md +84 -0
- package/skills/shared/godot/references/godot3-to-4-traps.md +89 -0
- package/skills/shared/godot/references/nodes-scenes-resources.md +109 -0
- package/skills/shared/harness/SKILL.md +316 -0
- package/skills/shared/harness/assets/_TEMPLATE/.env.example +8 -0
- package/skills/shared/harness/assets/_TEMPLATE/CREDENTIALS.md +25 -0
- package/skills/shared/harness/assets/_TEMPLATE/README.md +25 -0
- package/skills/shared/harness/assets/_TEMPLATE/gitignore +10 -0
- package/skills/shared/harness/assets/_TEMPLATE/test_connection.sh +30 -0
- package/skills/shared/harness/evals/README.md +54 -0
- package/skills/shared/harness/evals/cases.yaml +72 -0
- package/skills/shared/harness/examples/audit-example.md +120 -0
- package/skills/shared/harness/references/agents-md-template.md +41 -0
- package/skills/shared/harness/references/audit-report-template.html +140 -0
- package/skills/shared/harness/references/audit-report-template.md +116 -0
- package/skills/shared/harness/references/claude-md-template.md +85 -0
- package/skills/shared/harness/references/daily-curation-automation.md +68 -0
- package/skills/shared/harness/references/inbox-readme-template.md +51 -0
- package/skills/shared/harness/references/ingest-formats.md +185 -0
- package/skills/shared/harness/references/ingest-ignore-defaults.md +48 -0
- package/skills/shared/harness/references/obsidian-scaffolding.md +103 -0
- package/skills/shared/harness/references/providers.yaml +3546 -0
- package/skills/shared/harness/references/tools-readme-template.md +88 -0
- package/skills/shared/harness/references/wiki-archive-template.html +81 -0
- package/skills/shared/harness/references/wiki-article-template.md +60 -0
- package/skills/shared/harness/references/wiki-dashboard-template.html +136 -0
- package/skills/shared/harness/references/wiki-deep-improve-report-template.html +126 -0
- package/skills/shared/harness/references/wiki-gaps-template.md +22 -0
- package/skills/shared/harness/references/wiki-index-template.md +32 -0
- package/skills/shared/harness/references/wiki-protocol.md +926 -0
- package/skills/shared/harness/references/wiki-raw-template.md +7 -0
- package/skills/shared/harness/references/wiki-worklog-template.md +60 -0
- package/skills/shared/hetzner/SKILL.md +203 -0
- package/skills/shared/hetzner/evals/README.md +35 -0
- package/skills/shared/hetzner/evals/cases.yaml +46 -0
- package/skills/shared/hetzner/references/cloud-init.md +120 -0
- package/skills/shared/hetzner/references/plans-and-locations.md +56 -0
- package/skills/shared/hetzner/scripts/verify.sh +122 -0
- package/skills/shared/htmx/SKILL.md +261 -0
- package/skills/shared/htmx/evals/README.md +3 -0
- package/skills/shared/htmx/evals/cases.yaml +38 -0
- package/skills/shared/htmx/references/patterns.md +113 -0
- package/skills/shared/htmx/references/server-contract.md +91 -0
- package/skills/shared/htmx/scripts/verify.sh +93 -0
- package/skills/shared/huggingface/SKILL.md +191 -0
- package/skills/shared/huggingface/evals/README.md +11 -0
- package/skills/shared/huggingface/evals/cases.yaml +41 -0
- package/skills/shared/huggingface/references/endpoints-and-spaces.md +99 -0
- package/skills/shared/huggingface/references/hub-and-cli.md +85 -0
- package/skills/shared/huggingface/references/inference-providers.md +115 -0
- package/skills/shared/huggingface/scripts/verify.sh +123 -0
- package/skills/shared/idea-refinement/SKILL.md +121 -0
- package/skills/shared/idea-refinement/evals/README.md +3 -0
- package/skills/shared/idea-refinement/evals/cases.yaml +42 -0
- package/skills/shared/implement/SKILL.md +383 -0
- package/skills/shared/implement/evals/README.md +56 -0
- package/skills/shared/implement/evals/cases.yaml +43 -0
- package/skills/shared/implement/references/per-task-review.md +46 -0
- package/skills/shared/implement/scripts/review-package +59 -0
- package/skills/shared/implement/scripts/sdd-workspace +47 -0
- package/skills/shared/implement/scripts/task-brief +77 -0
- package/skills/shared/init/SKILL.md +209 -0
- package/skills/shared/init/evals/README.md +49 -0
- package/skills/shared/init/evals/cases.yaml +74 -0
- package/skills/shared/init/references/accompaniment-and-profile.md +122 -0
- package/skills/shared/init/references/discovery.md +90 -0
- package/skills/shared/init/references/recommend-skills.md +115 -0
- package/skills/shared/init/scripts/verify.sh +118 -0
- package/skills/shared/java/SKILL.md +341 -0
- package/skills/shared/java/evals/README.md +23 -0
- package/skills/shared/java/evals/cases.yaml +43 -0
- package/skills/shared/java/references/builds.md +133 -0
- package/skills/shared/java/references/concurrency.md +108 -0
- package/skills/shared/java/references/streams.md +102 -0
- package/skills/shared/java/scripts/verify.sh +107 -0
- package/skills/shared/knowledge-ops/SKILL.md +122 -0
- package/skills/shared/knowledge-ops/evals/README.md +16 -0
- package/skills/shared/knowledge-ops/evals/cases.yaml +50 -0
- package/skills/shared/knowledge-ops/references/gardening-playbook.md +126 -0
- package/skills/shared/kotlin-android/SKILL.md +245 -0
- package/skills/shared/kotlin-android/evals/README.md +13 -0
- package/skills/shared/kotlin-android/evals/cases.yaml +56 -0
- package/skills/shared/kotlin-android/references/architecture.md +200 -0
- package/skills/shared/kotlin-android/references/gradle-setup.md +125 -0
- package/skills/shared/kotlin-android/scripts/verify.sh +109 -0
- package/skills/shared/laravel/SKILL.md +301 -0
- package/skills/shared/laravel/evals/README.md +10 -0
- package/skills/shared/laravel/evals/cases.yaml +45 -0
- package/skills/shared/laravel/references/eloquent-patterns.md +126 -0
- package/skills/shared/laravel/references/queues-and-scheduling.md +153 -0
- package/skills/shared/laravel/scripts/verify.sh +128 -0
- package/skills/shared/level-design/SKILL.md +143 -0
- package/skills/shared/level-design/evals/README.md +35 -0
- package/skills/shared/level-design/evals/cases.yaml +58 -0
- package/skills/shared/level-design/references/blockout-to-art.md +118 -0
- package/skills/shared/level-design/references/guidance-and-readability.md +152 -0
- package/skills/shared/level-design/references/pacing-and-encounters.md +142 -0
- package/skills/shared/llm-pipeline/SKILL.md +150 -0
- package/skills/shared/llm-pipeline/evals/README.md +3 -0
- package/skills/shared/llm-pipeline/evals/cases.yaml +44 -0
- package/skills/shared/llm-pipeline/references/caching-layers.md +60 -0
- package/skills/shared/llm-pipeline/references/litellm-router.md +101 -0
- package/skills/shared/llm-pipeline/scripts/verify.sh +169 -0
- package/skills/shared/machine-learning/SKILL.md +228 -0
- package/skills/shared/machine-learning/evals/README.md +15 -0
- package/skills/shared/machine-learning/evals/cases.yaml +54 -0
- package/skills/shared/machine-learning/references/gbdt-and-tuning.md +83 -0
- package/skills/shared/machine-learning/references/metrics-and-imbalance.md +82 -0
- package/skills/shared/machine-learning/references/pipelines-and-cv.md +135 -0
- package/skills/shared/modal/SKILL.md +290 -0
- package/skills/shared/modal/evals/README.md +29 -0
- package/skills/shared/modal/evals/cases.yaml +50 -0
- package/skills/shared/modal/references/images-gpu-cookbook.md +160 -0
- package/skills/shared/modal/references/web-and-scaling.md +138 -0
- package/skills/shared/modal/scripts/verify.sh +127 -0
- package/skills/shared/mongodb/SKILL.md +342 -0
- package/skills/shared/mongodb/evals/README.md +29 -0
- package/skills/shared/mongodb/evals/cases.yaml +41 -0
- package/skills/shared/mongodb/references/aggregation.md +115 -0
- package/skills/shared/mongodb/references/data-modeling.md +135 -0
- package/skills/shared/mongodb/references/transactions-and-ops.md +128 -0
- package/skills/shared/mongodb/scripts/verify.sh +151 -0
- package/skills/shared/monitoring/SKILL.md +155 -0
- package/skills/shared/monitoring/evals/README.md +3 -0
- package/skills/shared/monitoring/evals/cases.yaml +47 -0
- package/skills/shared/monitoring/references/burn-rate-and-oncall.md +128 -0
- package/skills/shared/monitoring/references/tool-setup.md +154 -0
- package/skills/shared/monitoring/scripts/verify.sh +145 -0
- package/skills/shared/mysql/SKILL.md +249 -0
- package/skills/shared/mysql/evals/README.md +12 -0
- package/skills/shared/mysql/evals/cases.yaml +49 -0
- package/skills/shared/mysql/references/indexing-and-explain.md +161 -0
- package/skills/shared/mysql/references/mysql-vs-mariadb.md +78 -0
- package/skills/shared/mysql/references/online-ddl-and-migrations.md +120 -0
- package/skills/shared/mysql/references/replication-and-ha.md +115 -0
- package/skills/shared/mysql/scripts/verify.sh +141 -0
- package/skills/shared/neon/SKILL.md +218 -0
- package/skills/shared/neon/evals/README.md +11 -0
- package/skills/shared/neon/evals/cases.yaml +45 -0
- package/skills/shared/neon/references/branching-ci.md +86 -0
- package/skills/shared/neon/scripts/verify.sh +78 -0
- package/skills/shared/nestjs/SKILL.md +217 -0
- package/skills/shared/nestjs/evals/README.md +3 -0
- package/skills/shared/nestjs/evals/cases.yaml +38 -0
- package/skills/shared/nestjs/references/cross-cutting.md +135 -0
- package/skills/shared/nestjs/references/testing-recipes.md +105 -0
- package/skills/shared/nestjs/scripts/verify.sh +98 -0
- package/skills/shared/netlify/SKILL.md +208 -0
- package/skills/shared/netlify/evals/README.md +13 -0
- package/skills/shared/netlify/evals/cases.yaml +43 -0
- package/skills/shared/netlify/references/functions.md +97 -0
- package/skills/shared/netlify/references/netlify-toml.md +115 -0
- package/skills/shared/netlify/scripts/verify.sh +95 -0
- package/skills/shared/nextjs/SKILL.md +400 -0
- package/skills/shared/nextjs/evals/README.md +59 -0
- package/skills/shared/nextjs/evals/cases.yaml +56 -0
- package/skills/shared/nextjs/references/data-and-caching.md +309 -0
- package/skills/shared/nextjs/references/metadata.md +208 -0
- package/skills/shared/nextjs/references/performance.md +325 -0
- package/skills/shared/nextjs/references/react.md +383 -0
- package/skills/shared/nextjs/references/security.md +239 -0
- package/skills/shared/nextjs/references/testing.md +290 -0
- package/skills/shared/nextjs/scripts/verify.sh +141 -0
- package/skills/shared/nlp/SKILL.md +225 -0
- package/skills/shared/nlp/evals/README.md +10 -0
- package/skills/shared/nlp/evals/cases.yaml +45 -0
- package/skills/shared/nlp/references/evaluation.md +107 -0
- package/skills/shared/nlp/references/tokenization.md +95 -0
- package/skills/shared/no-code-app/SKILL.md +145 -0
- package/skills/shared/no-code-app/evals/README.md +3 -0
- package/skills/shared/no-code-app/evals/cases.yaml +43 -0
- package/skills/shared/no-code-app/references/platform-limits.md +100 -0
- package/skills/shared/nodejs/SKILL.md +229 -0
- package/skills/shared/nodejs/evals/README.md +3 -0
- package/skills/shared/nodejs/evals/cases.yaml +39 -0
- package/skills/shared/nodejs/references/express5-migration.md +53 -0
- package/skills/shared/nodejs/references/graceful-shutdown.md +73 -0
- package/skills/shared/nodejs/scripts/verify.sh +122 -0
- package/skills/shared/observability/SKILL.md +235 -0
- package/skills/shared/observability/evals/README.md +3 -0
- package/skills/shared/observability/evals/cases.yaml +51 -0
- package/skills/shared/observability/references/collector-config.md +98 -0
- package/skills/shared/observability/references/instrumentation-recipes.md +115 -0
- package/skills/shared/observability/scripts/verify.sh +156 -0
- package/skills/shared/ollama/SKILL.md +213 -0
- package/skills/shared/ollama/evals/README.md +9 -0
- package/skills/shared/ollama/evals/cases.yaml +43 -0
- package/skills/shared/ollama/references/api.md +148 -0
- package/skills/shared/ollama/references/hardware-sizing.md +87 -0
- package/skills/shared/ollama/scripts/verify.sh +116 -0
- package/skills/shared/open-weights/SKILL.md +239 -0
- package/skills/shared/open-weights/evals/README.md +14 -0
- package/skills/shared/open-weights/evals/cases.yaml +42 -0
- package/skills/shared/open-weights/references/licenses.md +123 -0
- package/skills/shared/open-weights/references/model-families.md +83 -0
- package/skills/shared/open-weights/references/sizing-and-quant.md +89 -0
- package/skills/shared/orient/SKILL.md +92 -0
- package/skills/shared/orient/evals/README.md +18 -0
- package/skills/shared/orient/evals/cases.yaml +67 -0
- package/skills/shared/orient/references/explain-ladder.md +93 -0
- package/skills/shared/orient/references/orientation-contract.md +86 -0
- package/skills/shared/parallel/SKILL.md +168 -0
- package/skills/shared/parallel/evals/README.md +62 -0
- package/skills/shared/parallel/evals/cases.yaml +44 -0
- package/skills/shared/performance/SKILL.md +229 -0
- package/skills/shared/performance/evals/README.md +3 -0
- package/skills/shared/performance/evals/cases.yaml +49 -0
- package/skills/shared/performance/references/profiling-playbook.md +54 -0
- package/skills/shared/performance/scripts/verify.sh +94 -0
- package/skills/shared/phoenix/SKILL.md +169 -0
- package/skills/shared/phoenix/evals/README.md +3 -0
- package/skills/shared/phoenix/evals/cases.yaml +40 -0
- package/skills/shared/phoenix/references/auth-and-scopes.md +82 -0
- package/skills/shared/phoenix/references/ecto-patterns.md +93 -0
- package/skills/shared/phoenix/references/liveview.md +134 -0
- package/skills/shared/phoenix/scripts/verify.sh +73 -0
- package/skills/shared/php/SKILL.md +397 -0
- package/skills/shared/php/evals/README.md +12 -0
- package/skills/shared/php/evals/cases.yaml +45 -0
- package/skills/shared/php/references/tooling.md +170 -0
- package/skills/shared/php/references/type-system.md +220 -0
- package/skills/shared/php/scripts/verify.sh +155 -0
- package/skills/shared/plan/SKILL.md +166 -0
- package/skills/shared/plan/evals/README.md +62 -0
- package/skills/shared/plan/evals/cases.yaml +49 -0
- package/skills/shared/plan/references/plan-template.md +153 -0
- package/skills/shared/planetscale/SKILL.md +198 -0
- package/skills/shared/planetscale/evals/README.md +11 -0
- package/skills/shared/planetscale/evals/cases.yaml +46 -0
- package/skills/shared/planetscale/references/deploy-requests.md +75 -0
- package/skills/shared/planetscale/references/no-foreign-keys.md +88 -0
- package/skills/shared/planetscale/scripts/verify.sh +115 -0
- package/skills/shared/planning-with-files/SKILL.md +278 -0
- package/skills/shared/planning-with-files/examples.md +202 -0
- package/skills/shared/planning-with-files/reference.md +218 -0
- package/skills/shared/planning-with-files/scripts/attest-plan.ps1 +118 -0
- package/skills/shared/planning-with-files/scripts/attest-plan.sh +110 -0
- package/skills/shared/planning-with-files/scripts/check-complete.ps1 +44 -0
- package/skills/shared/planning-with-files/scripts/check-complete.sh +46 -0
- package/skills/shared/planning-with-files/scripts/init-session.ps1 +166 -0
- package/skills/shared/planning-with-files/scripts/init-session.sh +284 -0
- package/skills/shared/planning-with-files/scripts/resolve-plan-dir.ps1 +44 -0
- package/skills/shared/planning-with-files/scripts/resolve-plan-dir.sh +76 -0
- package/skills/shared/planning-with-files/scripts/session-catchup.py +438 -0
- package/skills/shared/planning-with-files/scripts/set-active-plan.ps1 +50 -0
- package/skills/shared/planning-with-files/scripts/set-active-plan.sh +50 -0
- package/skills/shared/planning-with-files/templates/findings.md +95 -0
- package/skills/shared/planning-with-files/templates/progress.md +114 -0
- package/skills/shared/planning-with-files/templates/task_plan.md +132 -0
- package/skills/shared/postgresdb/SKILL.md +354 -0
- package/skills/shared/postgresdb/evals/README.md +55 -0
- package/skills/shared/postgresdb/evals/cases.yaml +57 -0
- package/skills/shared/postgresdb/references/migrations.md +279 -0
- package/skills/shared/postgresdb/references/operations-and-security.md +267 -0
- package/skills/shared/postgresdb/references/query-optimization.md +374 -0
- package/skills/shared/postgresdb/references/schema-and-indexing.md +379 -0
- package/skills/shared/postgresdb/scripts/verify.sh +191 -0
- package/skills/shared/prisma-orm/SKILL.md +313 -0
- package/skills/shared/prisma-orm/evals/README.md +12 -0
- package/skills/shared/prisma-orm/evals/cases.yaml +56 -0
- package/skills/shared/prisma-orm/references/migrations-and-v7-upgrade.md +197 -0
- package/skills/shared/prisma-orm/references/queries-and-performance.md +169 -0
- package/skills/shared/prisma-orm/scripts/verify.sh +137 -0
- package/skills/shared/prompt-engineering/SKILL.md +127 -0
- package/skills/shared/prompt-engineering/evals/README.md +11 -0
- package/skills/shared/prompt-engineering/evals/cases.yaml +46 -0
- package/skills/shared/prompt-engineering/references/eval-templates.md +94 -0
- package/skills/shared/prompt-engineering/references/output-contracts.md +120 -0
- package/skills/shared/prompt-engineering/scripts/verify.sh +84 -0
- package/skills/shared/python/SKILL.md +320 -0
- package/skills/shared/python/evals/README.md +19 -0
- package/skills/shared/python/evals/cases.yaml +46 -0
- package/skills/shared/python/references/async.md +136 -0
- package/skills/shared/python/references/stdlib.md +162 -0
- package/skills/shared/python/references/typing.md +160 -0
- package/skills/shared/python/scripts/verify.sh +125 -0
- package/skills/shared/rag/SKILL.md +209 -0
- package/skills/shared/rag/evals/README.md +13 -0
- package/skills/shared/rag/evals/cases.yaml +45 -0
- package/skills/shared/rag/references/evaluation.md +99 -0
- package/skills/shared/rag/references/pipeline.md +151 -0
- package/skills/shared/rag/scripts/verify.sh +99 -0
- package/skills/shared/rails/SKILL.md +264 -0
- package/skills/shared/rails/evals/README.md +12 -0
- package/skills/shared/rails/evals/cases.yaml +47 -0
- package/skills/shared/rails/references/activerecord.md +148 -0
- package/skills/shared/rails/references/hotwire.md +139 -0
- package/skills/shared/rails/references/testing.md +110 -0
- package/skills/shared/rails/scripts/verify.sh +128 -0
- package/skills/shared/railway/SKILL.md +245 -0
- package/skills/shared/railway/evals/README.md +14 -0
- package/skills/shared/railway/evals/cases.yaml +44 -0
- package/skills/shared/railway/references/cli-cookbook.md +137 -0
- package/skills/shared/railway/references/config-as-code.md +120 -0
- package/skills/shared/railway/scripts/verify.sh +162 -0
- package/skills/shared/react/SKILL.md +182 -0
- package/skills/shared/react/evals/README.md +3 -0
- package/skills/shared/react/evals/cases.yaml +43 -0
- package/skills/shared/react/references/data-and-state.md +152 -0
- package/skills/shared/react/references/performance.md +75 -0
- package/skills/shared/react/references/routing.md +99 -0
- package/skills/shared/react/scripts/verify.sh +123 -0
- package/skills/shared/react-native/SKILL.md +215 -0
- package/skills/shared/react-native/evals/README.md +3 -0
- package/skills/shared/react-native/evals/cases.yaml +42 -0
- package/skills/shared/react-native/references/native-modules.md +123 -0
- package/skills/shared/react-native/references/performance-debugging.md +46 -0
- package/skills/shared/react-native/scripts/verify.sh +120 -0
- package/skills/shared/redis/SKILL.md +298 -0
- package/skills/shared/redis/evals/README.md +10 -0
- package/skills/shared/redis/evals/cases.yaml +43 -0
- package/skills/shared/redis/references/caching.md +116 -0
- package/skills/shared/redis/references/locks-and-rate-limiting.md +140 -0
- package/skills/shared/redis/references/queues.md +102 -0
- package/skills/shared/redis/scripts/verify.sh +164 -0
- package/skills/shared/render/SKILL.md +256 -0
- package/skills/shared/render/evals/README.md +12 -0
- package/skills/shared/render/evals/cases.yaml +45 -0
- package/skills/shared/render/references/blueprint-reference.md +203 -0
- package/skills/shared/render/scripts/verify.sh +167 -0
- package/skills/shared/replicate/SKILL.md +210 -0
- package/skills/shared/replicate/evals/README.md +9 -0
- package/skills/shared/replicate/evals/cases.yaml +45 -0
- package/skills/shared/replicate/references/cog-packaging.md +89 -0
- package/skills/shared/replicate/references/deployments-api.md +87 -0
- package/skills/shared/replicate/references/webhooks-and-async.md +110 -0
- package/skills/shared/replicate/scripts/verify.sh +162 -0
- package/skills/shared/research-ops/SKILL.md +200 -0
- package/skills/shared/research-ops/evals/README.md +13 -0
- package/skills/shared/research-ops/evals/cases.yaml +38 -0
- package/skills/shared/research-ops/references/credibility-rubric.md +78 -0
- package/skills/shared/research-ops/references/memo-template.md +63 -0
- package/skills/shared/research-ops/scripts/verify.sh +181 -0
- package/skills/shared/review/SKILL.md +314 -0
- package/skills/shared/review/evals/README.md +84 -0
- package/skills/shared/review/evals/cases.yaml +55 -0
- package/skills/shared/ruby/SKILL.md +295 -0
- package/skills/shared/ruby/evals/README.md +12 -0
- package/skills/shared/ruby/evals/cases.yaml +41 -0
- package/skills/shared/ruby/references/gems-and-testing.md +208 -0
- package/skills/shared/ruby/references/metaprogramming.md +161 -0
- package/skills/shared/ruby/scripts/verify.sh +83 -0
- package/skills/shared/runpod/SKILL.md +238 -0
- package/skills/shared/runpod/evals/README.md +11 -0
- package/skills/shared/runpod/evals/cases.yaml +47 -0
- package/skills/shared/runpod/references/cost-and-scaling.md +85 -0
- package/skills/shared/runpod/references/serverless-workers.md +101 -0
- package/skills/shared/runpod/scripts/verify.sh +126 -0
- package/skills/shared/rust/SKILL.md +320 -0
- package/skills/shared/rust/evals/README.md +12 -0
- package/skills/shared/rust/evals/cases.yaml +42 -0
- package/skills/shared/rust/references/async-tokio.md +141 -0
- package/skills/shared/rust/references/axum-service.md +132 -0
- package/skills/shared/rust/references/ownership.md +86 -0
- package/skills/shared/rust/references/testing.md +108 -0
- package/skills/shared/rust/scripts/verify.sh +91 -0
- package/skills/shared/scaling/SKILL.md +137 -0
- package/skills/shared/scaling/evals/README.md +3 -0
- package/skills/shared/scaling/evals/cases.yaml +42 -0
- package/skills/shared/scaling/references/load-testing-k6.md +127 -0
- package/skills/shared/scaling/scripts/example.load.js +24 -0
- package/skills/shared/scaling/scripts/verify.sh +70 -0
- package/skills/shared/sdd/SKILL.md +250 -0
- package/skills/shared/sdd/evals/README.md +60 -0
- package/skills/shared/sdd/evals/cases.yaml +90 -0
- package/skills/shared/sdd/references/model-routing.md +194 -0
- package/skills/shared/sdd-init/SKILL.md +189 -0
- package/skills/shared/sdd-init/evals/README.md +3 -0
- package/skills/shared/sdd-init/evals/cases.yaml +43 -0
- package/skills/shared/secure-coding/SKILL.md +336 -0
- package/skills/shared/secure-coding/evals/README.md +68 -0
- package/skills/shared/secure-coding/evals/cases.yaml +55 -0
- package/skills/shared/secure-coding/references/authn-authz.md +249 -0
- package/skills/shared/secure-coding/references/owasp-by-stack.md +574 -0
- package/skills/shared/secure-coding/references/secrets-and-supply-chain.md +205 -0
- package/skills/shared/secure-coding/references/threat-modeling.md +213 -0
- package/skills/shared/secure-coding/scripts/verify.sh +208 -0
- package/skills/shared/security-scan/SKILL.md +219 -0
- package/skills/shared/security-scan/evals/README.md +14 -0
- package/skills/shared/security-scan/evals/cases.yaml +50 -0
- package/skills/shared/security-scan/references/tools.md +97 -0
- package/skills/shared/security-scan/references/triage.md +92 -0
- package/skills/shared/security-scan/scripts/verify.sh +108 -0
- package/skills/shared/ship/SKILL.md +272 -0
- package/skills/shared/ship/evals/README.md +89 -0
- package/skills/shared/ship/evals/cases.yaml +44 -0
- package/skills/shared/shopify/SKILL.md +229 -0
- package/skills/shared/shopify/evals/README.md +14 -0
- package/skills/shared/shopify/evals/cases.yaml +41 -0
- package/skills/shared/shopify/references/apps-graphql.md +103 -0
- package/skills/shared/shopify/references/checkout-extensibility.md +71 -0
- package/skills/shared/shopify/references/liquid-themes.md +89 -0
- package/skills/shared/shopify/scripts/verify.sh +120 -0
- package/skills/shared/simplify-code/SKILL.md +101 -0
- package/skills/shared/simplify-code/evals/README.md +3 -0
- package/skills/shared/simplify-code/evals/cases.yaml +42 -0
- package/skills/shared/skill-scout/SKILL.md +169 -0
- package/skills/shared/skill-scout/evals/README.md +12 -0
- package/skills/shared/skill-scout/evals/cases.yaml +56 -0
- package/skills/shared/skill-scout/references/install-commands.md +76 -0
- package/skills/shared/skill-scout/scripts/verify.sh +154 -0
- package/skills/shared/solid-js/SKILL.md +260 -0
- package/skills/shared/solid-js/evals/README.md +3 -0
- package/skills/shared/solid-js/evals/cases.yaml +38 -0
- package/skills/shared/solid-js/references/reactivity-deep-dive.md +89 -0
- package/skills/shared/solid-js/references/router-and-start.md +93 -0
- package/skills/shared/solid-js/scripts/verify.sh +130 -0
- package/skills/shared/source-grounded-development/SKILL.md +108 -0
- package/skills/shared/source-grounded-development/evals/README.md +3 -0
- package/skills/shared/source-grounded-development/evals/cases.yaml +42 -0
- package/skills/shared/specify/SKILL.md +391 -0
- package/skills/shared/specify/evals/README.md +73 -0
- package/skills/shared/specify/evals/cases.yaml +93 -0
- package/skills/shared/specify/references/eliciting-requirements.md +117 -0
- package/skills/shared/specify/references/spec-template.md +101 -0
- package/skills/shared/speckit-analyze/SKILL.md +35 -0
- package/skills/shared/speckit-assess-decide/SKILL.md +36 -0
- package/skills/shared/speckit-assess-define/SKILL.md +36 -0
- package/skills/shared/speckit-assess-intake/SKILL.md +38 -0
- package/skills/shared/speckit-assess-research/SKILL.md +36 -0
- package/skills/shared/speckit-assess-shape/SKILL.md +36 -0
- package/skills/shared/speckit-bug-assess/SKILL.md +38 -0
- package/skills/shared/speckit-bug-fix/SKILL.md +37 -0
- package/skills/shared/speckit-bug-test/SKILL.md +37 -0
- package/skills/shared/speckit-checklist/SKILL.md +35 -0
- package/skills/shared/speckit-clarify/SKILL.md +32 -0
- package/skills/shared/speckit-constitution/SKILL.md +35 -0
- package/skills/shared/speckit-converge/SKILL.md +36 -0
- package/skills/shared/speckit-implement/SKILL.md +32 -0
- package/skills/shared/speckit-plan/SKILL.md +37 -0
- package/skills/shared/speckit-specify/SKILL.md +36 -0
- package/skills/shared/speckit-tasks/SKILL.md +34 -0
- package/skills/shared/spreadsheet-ops/SKILL.md +180 -0
- package/skills/shared/spreadsheet-ops/evals/README.md +33 -0
- package/skills/shared/spreadsheet-ops/evals/cases.yaml +42 -0
- package/skills/shared/spreadsheet-ops/references/formula-cookbook.md +70 -0
- package/skills/shared/spreadsheet-ops/references/python-excel.md +87 -0
- package/skills/shared/spreadsheet-ops/references/sheets-api-appsscript.md +118 -0
- package/skills/shared/spreadsheet-ops/scripts/verify.sh +152 -0
- package/skills/shared/spring-boot/SKILL.md +350 -0
- package/skills/shared/spring-boot/evals/README.md +11 -0
- package/skills/shared/spring-boot/evals/cases.yaml +49 -0
- package/skills/shared/spring-boot/references/jpa.md +94 -0
- package/skills/shared/spring-boot/references/security.md +92 -0
- package/skills/shared/spring-boot/references/testing.md +95 -0
- package/skills/shared/spring-boot/scripts/verify.sh +115 -0
- package/skills/shared/sql/SKILL.md +286 -0
- package/skills/shared/sql/evals/README.md +9 -0
- package/skills/shared/sql/evals/cases.yaml +49 -0
- package/skills/shared/sql/references/ctes-and-recursion.md +63 -0
- package/skills/shared/sql/references/joins-and-sets.md +71 -0
- package/skills/shared/sql/references/portability.md +38 -0
- package/skills/shared/sql/references/window-functions.md +72 -0
- package/skills/shared/sql/scripts/verify.sh +139 -0
- package/skills/shared/sqlite-turso/SKILL.md +214 -0
- package/skills/shared/sqlite-turso/evals/README.md +24 -0
- package/skills/shared/sqlite-turso/evals/cases.yaml +45 -0
- package/skills/shared/sqlite-turso/references/embedded-replicas.md +96 -0
- package/skills/shared/sqlite-turso/scripts/verify.sh +95 -0
- package/skills/shared/structured-extraction/SKILL.md +230 -0
- package/skills/shared/structured-extraction/evals/README.md +13 -0
- package/skills/shared/structured-extraction/evals/cases.yaml +70 -0
- package/skills/shared/structured-extraction/references/providers.md +152 -0
- package/skills/shared/structured-extraction/scripts/verify.sh +160 -0
- package/skills/shared/suggest/SKILL.md +123 -0
- package/skills/shared/suggest/evals/README.md +17 -0
- package/skills/shared/suggest/evals/cases.yaml +78 -0
- package/skills/shared/supabase/SKILL.md +268 -0
- package/skills/shared/supabase/evals/README.md +12 -0
- package/skills/shared/supabase/evals/cases.yaml +42 -0
- package/skills/shared/supabase/references/auth-ssr.md +173 -0
- package/skills/shared/supabase/references/rls-cookbook.md +122 -0
- package/skills/shared/supabase/scripts/verify.sh +149 -0
- package/skills/shared/svelte/SKILL.md +238 -0
- package/skills/shared/svelte/evals/README.md +3 -0
- package/skills/shared/svelte/evals/cases.yaml +41 -0
- package/skills/shared/svelte/references/runes.md +97 -0
- package/skills/shared/svelte/references/sveltekit-data.md +156 -0
- package/skills/shared/svelte/scripts/verify.sh +128 -0
- package/skills/shared/swift-ios/SKILL.md +224 -0
- package/skills/shared/swift-ios/evals/README.md +3 -0
- package/skills/shared/swift-ios/evals/cases.yaml +46 -0
- package/skills/shared/swift-ios/references/concurrency.md +132 -0
- package/skills/shared/swift-ios/references/testing.md +112 -0
- package/skills/shared/swift-ios/scripts/verify.sh +98 -0
- package/skills/shared/tasks/SKILL.md +265 -0
- package/skills/shared/tasks/evals/README.md +70 -0
- package/skills/shared/tasks/evals/cases.yaml +75 -0
- package/skills/shared/tauri/SKILL.md +219 -0
- package/skills/shared/tauri/evals/README.md +12 -0
- package/skills/shared/tauri/evals/cases.yaml +46 -0
- package/skills/shared/tauri/references/bundling-distribution.md +129 -0
- package/skills/shared/tauri/references/security.md +143 -0
- package/skills/shared/tauri/scripts/verify.sh +178 -0
- package/skills/shared/technical-writing/SKILL.md +230 -0
- package/skills/shared/technical-writing/evals/README.md +12 -0
- package/skills/shared/technical-writing/evals/cases.yaml +53 -0
- package/skills/shared/technical-writing/references/diataxis-modes.md +131 -0
- package/skills/shared/technical-writing/references/vale-starter.md +90 -0
- package/skills/shared/technical-writing/scripts/verify.sh +83 -0
- package/skills/shared/testing-go/SKILL.md +263 -0
- package/skills/shared/testing-go/evals/README.md +3 -0
- package/skills/shared/testing-go/evals/cases.yaml +46 -0
- package/skills/shared/testing-go/references/coverage-and-benchmarks.md +85 -0
- package/skills/shared/testing-go/references/mocks-and-fakes.md +140 -0
- package/skills/shared/testing-go/references/synctest-and-concurrency.md +82 -0
- package/skills/shared/testing-go/scripts/verify.sh +72 -0
- package/skills/shared/testing-py/SKILL.md +197 -0
- package/skills/shared/testing-py/evals/README.md +5 -0
- package/skills/shared/testing-py/evals/cases.yaml +44 -0
- package/skills/shared/testing-py/references/mocking.md +141 -0
- package/skills/shared/testing-py/references/property-testing.md +99 -0
- package/skills/shared/testing-py/scripts/verify.sh +117 -0
- package/skills/shared/testing-web/SKILL.md +244 -0
- package/skills/shared/testing-web/evals/README.md +11 -0
- package/skills/shared/testing-web/evals/cases.yaml +52 -0
- package/skills/shared/testing-web/references/jest-setup.md +88 -0
- package/skills/shared/testing-web/references/recipes.md +116 -0
- package/skills/shared/testing-web/scripts/verify.sh +111 -0
- package/skills/shared/together-fireworks/SKILL.md +176 -0
- package/skills/shared/together-fireworks/evals/README.md +3 -0
- package/skills/shared/together-fireworks/evals/cases.yaml +50 -0
- package/skills/shared/together-fireworks/references/batch-and-tuning.md +59 -0
- package/skills/shared/together-fireworks/references/models-and-pricing.md +79 -0
- package/skills/shared/together-fireworks/scripts/verify.sh +165 -0
- package/skills/shared/training-data/SKILL.md +226 -0
- package/skills/shared/training-data/evals/README.md +13 -0
- package/skills/shared/training-data/evals/cases.yaml +41 -0
- package/skills/shared/training-data/references/formats.md +118 -0
- package/skills/shared/training-data/references/synthesis-dedup-quality.md +134 -0
- package/skills/shared/translation-l10n/SKILL.md +229 -0
- package/skills/shared/translation-l10n/evals/README.md +3 -0
- package/skills/shared/translation-l10n/evals/cases.yaml +39 -0
- package/skills/shared/translation-l10n/references/icu-cookbook.md +82 -0
- package/skills/shared/translation-l10n/references/rtl-and-bidi.md +60 -0
- package/skills/shared/typescript/SKILL.md +225 -0
- package/skills/shared/typescript/evals/README.md +15 -0
- package/skills/shared/typescript/evals/cases.yaml +46 -0
- package/skills/shared/typescript/references/build-and-monorepo.md +141 -0
- package/skills/shared/typescript/references/type-system.md +162 -0
- package/skills/shared/typescript/scripts/verify.sh +52 -0
- package/skills/shared/ui-engineering/SKILL.md +113 -0
- package/skills/shared/ui-engineering/evals/cases.yaml +38 -0
- package/skills/shared/unity/SKILL.md +282 -0
- package/skills/shared/unity/evals/README.md +8 -0
- package/skills/shared/unity/evals/cases.yaml +43 -0
- package/skills/shared/unity/references/build-and-platforms.md +65 -0
- package/skills/shared/unity/references/input-system.md +102 -0
- package/skills/shared/unity/references/lifecycle-deep-dive.md +75 -0
- package/skills/shared/unreal/SKILL.md +270 -0
- package/skills/shared/unreal/evals/README.md +12 -0
- package/skills/shared/unreal/evals/cases.yaml +45 -0
- package/skills/shared/unreal/references/blueprint-cpp-parity.md +109 -0
- package/skills/shared/unreal/references/gameplay-framework.md +95 -0
- package/skills/shared/unreal/references/packaging.md +83 -0
- package/skills/shared/unslop/SKILL.md +143 -0
- package/skills/shared/unslop/evals/README.md +25 -0
- package/skills/shared/unslop/evals/cases.yaml +61 -0
- package/skills/shared/unsloth/SKILL.md +254 -0
- package/skills/shared/unsloth/evals/README.md +10 -0
- package/skills/shared/unsloth/evals/cases.yaml +42 -0
- package/skills/shared/unsloth/references/export.md +75 -0
- package/skills/shared/unsloth/references/grpo.md +91 -0
- package/skills/shared/unsloth/references/masking-and-templates.md +91 -0
- package/skills/shared/variant-explorer/SKILL.md +93 -0
- package/skills/shared/variant-explorer/evals/cases.yaml +38 -0
- package/skills/shared/vector-db/SKILL.md +189 -0
- package/skills/shared/vector-db/evals/README.md +10 -0
- package/skills/shared/vector-db/evals/cases.yaml +45 -0
- package/skills/shared/vector-db/references/engines.md +175 -0
- package/skills/shared/vector-db/references/tuning.md +62 -0
- package/skills/shared/vector-db/scripts/verify.sh +110 -0
- package/skills/shared/vercel/SKILL.md +242 -0
- package/skills/shared/vercel/evals/README.md +23 -0
- package/skills/shared/vercel/evals/cases.yaml +45 -0
- package/skills/shared/vercel/references/cli-cookbook.md +98 -0
- package/skills/shared/vercel/references/vercel-json.md +120 -0
- package/skills/shared/vercel/scripts/verify.sh +168 -0
- package/skills/shared/verify/SKILL.md +230 -0
- package/skills/shared/verify/evals/README.md +78 -0
- package/skills/shared/verify/evals/cases.yaml +104 -0
- package/skills/shared/vllm/SKILL.md +235 -0
- package/skills/shared/vllm/evals/README.md +9 -0
- package/skills/shared/vllm/evals/cases.yaml +47 -0
- package/skills/shared/vllm/references/flags-and-endpoints.md +105 -0
- package/skills/shared/vllm/references/memory-and-throughput.md +78 -0
- package/skills/shared/vue-nuxt/SKILL.md +323 -0
- package/skills/shared/vue-nuxt/evals/README.md +11 -0
- package/skills/shared/vue-nuxt/evals/cases.yaml +49 -0
- package/skills/shared/vue-nuxt/references/data-and-state.md +127 -0
- package/skills/shared/vue-nuxt/references/migration-nuxt4.md +79 -0
- package/skills/shared/vue-nuxt/references/nitro-and-rendering.md +117 -0
- package/skills/shared/vue-nuxt/references/reactivity.md +135 -0
- package/skills/shared/vue-nuxt/scripts/verify.sh +148 -0
- package/skills/shared/webhooks/SKILL.md +229 -0
- package/skills/shared/webhooks/evals/README.md +15 -0
- package/skills/shared/webhooks/evals/cases.yaml +46 -0
- package/skills/shared/webhooks/references/framework-raw-body.md +97 -0
- package/skills/shared/webhooks/references/signature-schemes.md +66 -0
- package/skills/shared/webhooks/scripts/verify.sh +142 -0
- package/skills/shared/wordpress/SKILL.md +224 -0
- package/skills/shared/wordpress/evals/README.md +3 -0
- package/skills/shared/wordpress/evals/cases.yaml +50 -0
- package/skills/shared/wordpress/references/hardening.md +108 -0
- package/skills/shared/wordpress/references/performance.md +80 -0
- package/skills/shared/wordpress/references/woocommerce.md +65 -0
- package/skills/shared/wordpress/scripts/verify.sh +96 -0
- package/skills/shared/worktrees/SKILL.md +204 -0
- package/skills/shared/worktrees/evals/README.md +78 -0
- package/skills/shared/worktrees/evals/cases.yaml +47 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Catálogo de imports `common` (desde el patrón `products`)
|
|
2
|
+
|
|
3
|
+
> Inventario de lo que **products** importa de `common` y para qué sirve. Usar al implementar otros módulos (DRY).
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Backend — `backend/src/common/`
|
|
8
|
+
|
|
9
|
+
### Domain
|
|
10
|
+
|
|
11
|
+
| Símbolo | Ruta | Uso en products | Cuándo reutilizar |
|
|
12
|
+
|---------|------|-----------------|-------------------|
|
|
13
|
+
| `QueryListDto` | `domain/queryListDto.ts` | Base de `ProductsGetAllDto` | Todo listado paginado |
|
|
14
|
+
| `QueryItemDto` | `domain/queryItemDto.ts` | Base de `ProductsGetByIdDto` | GET por id |
|
|
15
|
+
| `QueryListResult<T>` | `domain/queryListResult.ts` | Retorno GetAll DAL | Listados |
|
|
16
|
+
| `QueryItemResult<T>` | `domain/queryItemResult.ts` | Retorno GetById DAL | Detalle |
|
|
17
|
+
| `SortOrder` | `domain/queryListDto.ts` | Orden ASC/DESC | Listados |
|
|
18
|
+
| `Field`, `FieldType`, `FieldGenere`, `FieldSubType` | `domain/field-meta.ts` | Decoradores en DTOs | Formularios + Zod |
|
|
19
|
+
| `AuthenticatedRequest` | `domain/AuthenticatedRequest.ts` | Router: session | Todos los routers |
|
|
20
|
+
| `IQueryGetListDal` | `domain/IQueryGetListDal.ts` | `ProductsGetAllDal` | List DALs |
|
|
21
|
+
| `IQueryGetItemDal` | `domain/IQueryGetItemDal.ts` | `ProductsGetByIdDal` | GetById DALs |
|
|
22
|
+
| `IServiceDal` | `domain/IServiceDal.ts` | Create/Update/Delete DALs | Mutaciones |
|
|
23
|
+
|
|
24
|
+
**Legacy (evitar en módulos nuevos)**:
|
|
25
|
+
|
|
26
|
+
| Símbolo | Notas |
|
|
27
|
+
|---------|-------|
|
|
28
|
+
| `QueryRequest` | Usado en `catalogGetAllUseCase`, `servicesGetAllDal` legacy |
|
|
29
|
+
| `IQueryGetAllPaginatedDal` | Patrón viejo multi-arg |
|
|
30
|
+
|
|
31
|
+
### Infrastructure
|
|
32
|
+
|
|
33
|
+
| Símbolo | Ruta | Uso en products |
|
|
34
|
+
|---------|------|-----------------|
|
|
35
|
+
| `DolibarrDal` | `infrastructure/dolibarr/dolibarrDal.ts` | GetAll, Create, Update, Delete |
|
|
36
|
+
| `DolibarrClient` | `infrastructure/dolibarr/dolibarrClient.ts` | GetById (composición directa) |
|
|
37
|
+
| `DolibarrMapper` | `infrastructure/dolibarr/dolibarrMapper.ts` | Base de todos los mappers |
|
|
38
|
+
| `buildZodSchema` | `infrastructure/zodSchemas.ts` | Router POST/PUT/DELETE |
|
|
39
|
+
| `pick` | `utils/rxjs-utils.ts` | Proyección `fields` en GetAll |
|
|
40
|
+
|
|
41
|
+
**Helpers heredados vía `DolibarrDal`**:
|
|
42
|
+
|
|
43
|
+
- `mapFiltersFromDomain(value, columns[])`
|
|
44
|
+
- `combineSqlFilters(...filters)`
|
|
45
|
+
- `mapStatusFilterFrom(status, column)`
|
|
46
|
+
|
|
47
|
+
**`DolibarrClient.query2`** (vía `this.dolibarr`):
|
|
48
|
+
|
|
49
|
+
- Paginación: `page`, `limit`, `pagination_data`
|
|
50
|
+
- Sort: `sortfield`, `sortorder`
|
|
51
|
+
- Filtros custom en `params`
|
|
52
|
+
|
|
53
|
+
### Errores (fuera de `common/`, transversal)
|
|
54
|
+
|
|
55
|
+
`backend/src/errors/domain/` — `ArgumentError`, `ForbiddenError`, etc. Usar en DALs y dejar propagar al middleware.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Frontend — `frontend/src/app/common/`
|
|
60
|
+
|
|
61
|
+
### Domain (espejo backend)
|
|
62
|
+
|
|
63
|
+
| Símbolo | Uso en products |
|
|
64
|
+
|---------|-----------------|
|
|
65
|
+
| `QueryListDto` | `ProductsGetAllDto` |
|
|
66
|
+
| `QueryItemDto` | `ProductsGetByIdDto` |
|
|
67
|
+
| `QueryResult<T>` | Tipo retorno listado (`data` + `pagination`) |
|
|
68
|
+
| `QueryItemResult<T>` | Retorno GetById |
|
|
69
|
+
| `field-meta` | `@Field` en DTOs |
|
|
70
|
+
| `SelectorResult` | Pipes `selector()` para enums |
|
|
71
|
+
| `SelectorResponse` | Modal precios (selectores API) |
|
|
72
|
+
| `nullToUndefined` | Normalización en modales |
|
|
73
|
+
|
|
74
|
+
### Infrastructure — HTTP y bases
|
|
75
|
+
|
|
76
|
+
| Símbolo | Ruta | Uso en products |
|
|
77
|
+
|---------|------|-----------------|
|
|
78
|
+
| `ApiDalService` | `api.dal.service.ts` | Todos los DALs |
|
|
79
|
+
| `QueryBackendDal` | `dal/backend/queryBackendDal.ts` | GetAll, GetById |
|
|
80
|
+
| `ServiceBackendDal` | `dal/backend/serviceBackendDal.ts` | Create, Update, ChangePrice |
|
|
81
|
+
| `AppQueryBase` | `app-query-base.ts` | `ProductsGetAllComponent` |
|
|
82
|
+
| `AppServiceBase` | `app-service-base.ts` | Create, Update |
|
|
83
|
+
| `formGroupFromDto` | `formField.ts` | Vía bases: FormGroup desde DTO |
|
|
84
|
+
|
|
85
|
+
**Métodos `ApiDalService` usados por products**:
|
|
86
|
+
|
|
87
|
+
| Método | Operación |
|
|
88
|
+
|--------|-----------|
|
|
89
|
+
| `queryList(url, QueryListDto)` | GetAll |
|
|
90
|
+
| `queryItem(url, QueryItemDto)` | GetById |
|
|
91
|
+
| `post(url, body)` | Create |
|
|
92
|
+
| `put(url, id, body)` | Update |
|
|
93
|
+
| `delete(url, id)` | Delete |
|
|
94
|
+
|
|
95
|
+
### Infrastructure — Componentes UI (listados)
|
|
96
|
+
|
|
97
|
+
| Componente | Uso en products-getall |
|
|
98
|
+
|------------|------------------------|
|
|
99
|
+
| `kpi-card` | Total / Activos / Inactivos |
|
|
100
|
+
| `card-header`, `card-empty` | Cabecera y vacío |
|
|
101
|
+
| `col-icon`, `col-text`, `col-currency`, `col-empty`, `col-button` | Columnas tabla |
|
|
102
|
+
| `form-field-text`, `form-submit` | Filtro búsqueda |
|
|
103
|
+
| `confirm-dialog` | Confirmar borrado |
|
|
104
|
+
|
|
105
|
+
### Infrastructure — Componentes UI (formularios)
|
|
106
|
+
|
|
107
|
+
| Componente | Uso en create/update |
|
|
108
|
+
|------------|---------------------|
|
|
109
|
+
| `card-section` | Secciones del formulario |
|
|
110
|
+
| `form-field-text`, `area`, `boolean`, `enum`, `number`, `euro` | Campos |
|
|
111
|
+
| `form-button`, `form-submit`, `form-button-principal` | Acciones |
|
|
112
|
+
|
|
113
|
+
### Guards
|
|
114
|
+
|
|
115
|
+
| Guard | Módulo products |
|
|
116
|
+
|-------|-----------------|
|
|
117
|
+
| `canReadProductsGuard` | Listado |
|
|
118
|
+
| `canCreateProductsGuard` | Create, Update |
|
|
119
|
+
|
|
120
|
+
Definidos en `common/infrastructure/guards/commercial-module.guards.ts`.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Matriz: qué va en `common` vs módulo
|
|
125
|
+
|
|
126
|
+
| Va en `common` | Va en el módulo |
|
|
127
|
+
|----------------|-----------------|
|
|
128
|
+
| Paginación genérica (`QueryListDto`) | `Product`, `ProductsGetAllDto` |
|
|
129
|
+
| `buildZodSchema`, `formGroupFromDto` | Campos `@Field` del recurso |
|
|
130
|
+
| `DolibarrDal` helpers SQL | `ProductDolibarrDto`, mappers |
|
|
131
|
+
| `ApiDalService` | `ProductsGetAllDal` |
|
|
132
|
+
| `col-*`, `form-field-*`, `kpi-card` | Pipes `{entity}Status*` (ej. `productStatus*`, `userStatus*`) |
|
|
133
|
+
| `AppQueryBase` | `ProductsGetAllComponent` |
|
|
134
|
+
|
|
135
|
+
**Criterio KISS**: Si solo un módulo lo usa y no es genérico → **no** subir a common. Si 2+ módulos lo repetirían → valorar extraer (ej. parametrizar mensajes de `AppServiceBase`).
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Imports preferidos
|
|
140
|
+
|
|
141
|
+
- Frontend cross-module: `@app/common/...`, `@app/products/...`
|
|
142
|
+
- Backend: rutas relativas `../../common/...` desde `domain/` o `infrastructure/`
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
*Ampliar este catálogo cuando un módulo migrado importe algo nuevo de common que products no usa.*
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Fichajes → workdays + punches — Índice rápido
|
|
2
|
+
|
|
3
|
+
> **No duplicar este archivo.** La fuente operativa es [`.planning/fichajes-migration-master-plan.md`](../../.planning/fichajes-migration-master-plan.md).
|
|
4
|
+
>
|
|
5
|
+
> **Estado**: planning completado — sin `/speckit.implement` hasta aprobación humana.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Lectura obligatoria del agente
|
|
10
|
+
|
|
11
|
+
1. [`.planning/fichajes-migration-master-plan.md`](../../.planning/fichajes-migration-master-plan.md) — decisiones, nombres, permisos, 9 changes, riesgos
|
|
12
|
+
2. [`.planning/handoff_fichajes-migration.md`](../../.planning/handoff_fichajes-migration.md) — estado del programa
|
|
13
|
+
3. Guías G2 (track fichajes, autocontenidas): `guia-migracion-monorepo2.md`, `backend/guia-migracion-backend2.md`, `frontend/guia-migracion-frontend2.md`
|
|
14
|
+
4. Plantilla código: [products-module-blueprint.md](./products-module-blueprint.md)
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Decisiones cerradas (resumen)
|
|
19
|
+
|
|
20
|
+
| Tema | Decisión |
|
|
21
|
+
|------|----------|
|
|
22
|
+
| Módulos | `workdays/` + `punches/`; eliminar `fichajes/` al final |
|
|
23
|
+
| BFF | Corte duro `/api/workdays`, `/api/punches` |
|
|
24
|
+
| Config (P5) | `PunchesConfig`, `PunchesConfigParam`, `PunchesConfigFlag` |
|
|
25
|
+
| Permisos (P6) | `RightFichaje` en users; policies en common; **misma lógica que legacy** |
|
|
26
|
+
| users-list (P3) | Facade hasta change 4; refactor KPIs en change 9 |
|
|
27
|
+
| IDs dominio | `id: number` siempre (D21) |
|
|
28
|
+
| `PunchType` | Un solo enum; manual incluido (D22); eliminar `RegistroManualAccionTipo` |
|
|
29
|
+
| Entidad fichaje | `Punch` en inglés (D23) |
|
|
30
|
+
| Auditoría modificados | `workdays/domain/` (D24) |
|
|
31
|
+
| Paginación workdays | Igual que products / `QueryListDto` (D27) |
|
|
32
|
+
| `punch-card` | Permanece en `common/` (D28) |
|
|
33
|
+
| Enriquecimiento pausas | Helper `application/` + batch eventos (D25); no DAL `EnrichBreaks` |
|
|
34
|
+
| Filtro empleados | Criterio employees users (D26); refactor `entityUsersScope` |
|
|
35
|
+
| Export | Motor `common/`; helper `WorkdaysService` (patrón actual) |
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Clasificación
|
|
40
|
+
|
|
41
|
+
| Aspecto | Valor |
|
|
42
|
+
|---------|-------|
|
|
43
|
+
| Perfil | **Híbrido** — workdays listado tipo products; punches acciones + service layer |
|
|
44
|
+
| Referencia listado | `products-getall` + `users-list` (employees) |
|
|
45
|
+
| Primer change | `migrate-workdays-getall` (opcional previo: `fix-app-query-base-products-strings`) |
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Enlaces legacy (solo exploración)
|
|
50
|
+
|
|
51
|
+
| Qué | Dónde |
|
|
52
|
+
|-----|-------|
|
|
53
|
+
| Routes BFF | `backend/routes/fichajes.ts`, `backend/routes/jornadas.ts` |
|
|
54
|
+
| FE monolito | `frontend/src/app/fichajes/` |
|
|
55
|
+
| Permisos dominio | `backend/src/users/domain/rightFichaje.ts` |
|
|
56
|
+
|
|
57
|
+
Detalle de endpoints, mapa ES→EN, DALs objetivo y complicaciones: **solo en el planning maestro**.
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
# Flujo de implementación paso a paso (módulos tipo `products`)
|
|
2
|
+
|
|
3
|
+
> **Objetivo**: Guía ordenada para que un agente implemente un módulo (nuevo o migrado) sin perder contexto ni romper contratos FE↔BE.
|
|
4
|
+
>
|
|
5
|
+
> **Referencia canónica**: [products-module-blueprint.md](./products-module-blueprint.md)
|
|
6
|
+
>
|
|
7
|
+
> **Regla de mantenimiento**: Si este flujo cambia, actualizar este archivo **y** el blueprint. No dejar documentos contradictorios.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Principios del flujo
|
|
12
|
+
|
|
13
|
+
1. **Contrato primero, código después** — El dominio y los DTOs definen qué se construye; el resto los consume.
|
|
14
|
+
2. **Backend antes que frontend** en cada vertical (salvo que el spec diga lo contrario).
|
|
15
|
+
3. **Una operación = un DAL = un DTO de entrada** (patrón products).
|
|
16
|
+
4. **Verificar tras cada fase** (`tsc`, `ng build`, tests del slice).
|
|
17
|
+
5. **No inventar** — Si falta endpoint, campo Dolibarr o permiso: **preguntar al usuario**.
|
|
18
|
+
6. **KPIs en listados**: patrón `products-getall` (`statusCounts` + `KpiCardComponent` + pipes del módulo).
|
|
19
|
+
7. **Regla de paridad products**: lo general igual que `products`; solo cambian entidad, enums, campos, endpoints y operaciones del dominio ([blueprint §0.1](./products-module-blueprint.md#01-regla-de-paridad-products-general-igual-datos-distintos)).
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Perfiles de módulo
|
|
24
|
+
|
|
25
|
+
| Perfil | Ejemplo | Operaciones típicas |
|
|
26
|
+
|--------|---------|---------------------|
|
|
27
|
+
| **A — CRUD Dolibarr nativo** | `products`, `users/employees` | GetAll, GetById, Create, Update, Delete |
|
|
28
|
+
| **B — API custom + acciones** | `fichajes` | Clock-in/out, breaks, manual entry + CRUD workdays |
|
|
29
|
+
| **C — Transversal** | `users` (auth, rights) | Login, me, policies; no forzar patrón CRUD puro |
|
|
30
|
+
|
|
31
|
+
Cada módulo puede **extender** el perfil A con operaciones extra (ej. `ProductsChangePriceDal`). Las extensiones se documentan en el spec del módulo.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Fase 0 — Nutrición (solo lectura, sin código)
|
|
36
|
+
|
|
37
|
+
**Entrada**: nombre del módulo, spec Spec Kit aprobada (o borrador para explorar).
|
|
38
|
+
|
|
39
|
+
**Leer obligatoriamente**:
|
|
40
|
+
|
|
41
|
+
| Orden | Qué leer |
|
|
42
|
+
|-------|----------|
|
|
43
|
+
| 1 | [products-module-blueprint.md](./products-module-blueprint.md) |
|
|
44
|
+
| 2 | [common-imports-catalog.md](./common-imports-catalog.md) |
|
|
45
|
+
| 3 | Código canónico de `products` (lista en blueprint §10) |
|
|
46
|
+
| 4 | `backend/doc/swagger.json` — endpoints Dolibarr del recurso |
|
|
47
|
+
| 5 | Anexo del módulo si existe: `fichajes-migration-notes.md`, `users-migration-notes.md` |
|
|
48
|
+
| 6 | Módulo legacy actual (si es migración) — inventario de archivos y rutas |
|
|
49
|
+
|
|
50
|
+
**Salida escrita** (en `.planning/` o en el change Spec Kit):
|
|
51
|
+
|
|
52
|
+
- `findings.md` — endpoints reales, campos Dolibarr, permisos, deuda legacy
|
|
53
|
+
- `entity-map.md` — nombres ES→EN si aplica (fichajes)
|
|
54
|
+
- Lista de operaciones → DTOs → DALs (tabla)
|
|
55
|
+
|
|
56
|
+
**Criterio de salida**: tabla operaciones/DTOs aprobada (usuario o spec).
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Fase 1 — Dominio compartido (FE + BE en paralelo conceptual)
|
|
61
|
+
|
|
62
|
+
> Tu intuición de empezar por `domain` es correcta. Es la **primera fase de código**, pero hay un paso previo (Fase 0) y un orden interno.
|
|
63
|
+
|
|
64
|
+
### 1.1 Entidad principal
|
|
65
|
+
|
|
66
|
+
- Crear `domain/{entity}.ts` — `interface` con camelCase.
|
|
67
|
+
- **Solo `id: number` es obligatorio** — **nunca** `id?: number` en `domain/` (FE ni BE). El resto de propiedades con `?`.
|
|
68
|
+
- Verificación: `rg "id\?:" backend/src/{modulo}/domain frontend/src/app/{modulo}/domain` → **0 coincidencias** (salvo comentarios).
|
|
69
|
+
- Si el listado es una proyección (ej. `EmployeeListItem` vs `User` completo), documentar en el spec; el mapper sigue el patrón `{Entity}Mapper`.
|
|
70
|
+
- Enums de negocio en `domain/enums/{name}.ts` (no `Enumerations/` PascalCase).
|
|
71
|
+
- **Backend y frontend: archivos espejo** (mismo contenido, distintos imports relativos).
|
|
72
|
+
|
|
73
|
+
### 1.2 DTOs por operación
|
|
74
|
+
|
|
75
|
+
Crear en este orden (dependencias de herencia):
|
|
76
|
+
|
|
77
|
+
| Orden | Archivo | Extiende |
|
|
78
|
+
|-------|---------|----------|
|
|
79
|
+
| 1 | `{Entity}sUpdateDto` | — (campos con `@Field`) |
|
|
80
|
+
| 2 | `{Entity}sCreateDto` | `UpdateDto` (si aplica mismo formulario) |
|
|
81
|
+
| 3 | `{Entity}sGetAllDto` | `QueryListDto` + filtros `@Field` |
|
|
82
|
+
| 4 | `{Entity}sGetByIdDto` | `QueryItemDto` |
|
|
83
|
+
| 5 | `{Entity}sDeleteDto` | `id` mínimo |
|
|
84
|
+
| 6 | DTOs de **acciones** extra | Según spec (fichajes: `PunchesClockInDto`, `WorkdaysGetAllDto`, etc.) |
|
|
85
|
+
|
|
86
|
+
**Reglas `@Field`**:
|
|
87
|
+
|
|
88
|
+
- `label` en español
|
|
89
|
+
- `type`, `required`, `min`, `max`, `enumType` según campo
|
|
90
|
+
- Labels alimentan Zod (BE) y `FormGroup` (FE)
|
|
91
|
+
|
|
92
|
+
### 1.3 Verificación Fase 1
|
|
93
|
+
|
|
94
|
+
- [ ] Sin `any`
|
|
95
|
+
- [ ] FE y BE: mismos nombres de propiedades en DTOs y entidad
|
|
96
|
+
- [ ] Enums idénticos en ambos lados
|
|
97
|
+
- [ ] `npx tsc --noEmit` (BE) si ya hay tsconfig que incluye domain
|
|
98
|
+
- [ ] No crear aún DALs ni componentes
|
|
99
|
+
|
|
100
|
+
**Por qué antes que DAL**: Los DALs y routers **solo importan** tipos de dominio. Cambiar dominio después rompe mappers y formularios.
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Fase 2 — Infraestructura backend (por operación)
|
|
105
|
+
|
|
106
|
+
### 2.1 DTO Dolibarr + mappers
|
|
107
|
+
|
|
108
|
+
| Orden | Artefacto |
|
|
109
|
+
|-------|-----------|
|
|
110
|
+
| 1 | `infrastructure/dal/dolibarr/{entity}DolibarrDto.ts` — snake_case, shape API |
|
|
111
|
+
| 2 | `mappers/{entity}Mapper.ts` — `toDomain` / `fromDomain` |
|
|
112
|
+
| 3 | Mappers de enum si hace falta | `ProductStatusMapper` pattern |
|
|
113
|
+
|
|
114
|
+
### 2.2 DALs (uno por operación)
|
|
115
|
+
|
|
116
|
+
Implementar en este orden recomendado:
|
|
117
|
+
|
|
118
|
+
| Orden | DAL | Por qué este orden |
|
|
119
|
+
|-------|-----|-------------------|
|
|
120
|
+
| 1 | **GetById** | Valida mapper con un solo registro |
|
|
121
|
+
| 2 | **GetAll** | El más complejo; reutiliza mapper |
|
|
122
|
+
| 3 | **Create** | `fromDomain` → Dolibarr |
|
|
123
|
+
| 4 | **Update** | Igual |
|
|
124
|
+
| 5 | **Delete** | Mínimo |
|
|
125
|
+
| 6 | **Acciones** custom | Fichajes: clock-in, etc. |
|
|
126
|
+
|
|
127
|
+
Cada DAL: `run(request: XxxDto): Promise<...>` + interfaz `IQueryGetListDal` / `IQueryGetItemDal` / `IServiceDal`.
|
|
128
|
+
|
|
129
|
+
### 2.3 Router + DI
|
|
130
|
+
|
|
131
|
+
| Orden | Tarea |
|
|
132
|
+
|-------|-------|
|
|
133
|
+
| 1 | `infrastructure/router/{entity}Router.ts` |
|
|
134
|
+
| 2 | `requireHttpRight` con policy del módulo |
|
|
135
|
+
| 3 | `buildZodSchema` en POST/PUT/DELETE |
|
|
136
|
+
| 4 | Registrar DALs en `container.ts` (`Lifetime.SCOPED`) |
|
|
137
|
+
| 5 | Montar en `server.ts` |
|
|
138
|
+
|
|
139
|
+
### 2.4 Verificación Fase 2
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
cd backend && npx tsc --noEmit
|
|
143
|
+
cd backend && npm test -- tests/{modulo} # cuando existan
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Probar manualmente o con supertest: GetById → GetAll → Create (si spec lo incluye).
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Fase 3 — Infraestructura frontend
|
|
151
|
+
|
|
152
|
+
### 3.1 DALs (`infrastructure/dal/backend/`)
|
|
153
|
+
|
|
154
|
+
Mismo orden que backend:
|
|
155
|
+
|
|
156
|
+
1. `GetByIdDal` → `api.queryItem`
|
|
157
|
+
2. `GetAllDal` → `api.queryList`
|
|
158
|
+
3. `CreateDal` / `UpdateDal` / `DeleteDal` → `ServiceBackendDal`
|
|
159
|
+
|
|
160
|
+
### 3.2 Pipes de dominio (si hay enums en UI)
|
|
161
|
+
|
|
162
|
+
- `{entity}StatusLabel`, `Color`, `Icon` + método `selector()` para selects.
|
|
163
|
+
|
|
164
|
+
### 3.3 Componentes (orden UI)
|
|
165
|
+
|
|
166
|
+
| Orden | Componente | Base |
|
|
167
|
+
|-------|------------|------|
|
|
168
|
+
| 1 | `{entity}s-getall` | `AppQueryBase` |
|
|
169
|
+
| 2 | `{entity}s-create` | `AppServiceBase` |
|
|
170
|
+
| 3 | `{entity}s-update` | `AppServiceBase` + `loadDal` |
|
|
171
|
+
| 4 | Modales / acciones extra | Según spec |
|
|
172
|
+
|
|
173
|
+
**Listado (KPIs frontend — patrón products)**:
|
|
174
|
+
|
|
175
|
+
- `items = signal<Entity[]>([])`
|
|
176
|
+
- `statusCounts = signal<Partial<Record<StatusEnum, number>>>({})`
|
|
177
|
+
- Tras cada `load()`, agrupar `response.data` con RxJS `groupBy` + `reduce` (copiar de `products-getall.ts`)
|
|
178
|
+
- Tarjeta «Total»: `[value]="items().length"` + `[total]="request().total"`
|
|
179
|
+
- UI: `KpiCardComponent` + pipes `{entity}StatusLabel|Color|Icon`
|
|
180
|
+
- Filtro por tarjeta: `setStatus()` → actualiza `request().status` + `load()`
|
|
181
|
+
- **Prohibido**: requests HTTP extra solo para KPIs; **prohibido** leer `stats` del BFF
|
|
182
|
+
|
|
183
|
+
### 3.4 Rutas
|
|
184
|
+
|
|
185
|
+
- Añadir en `app.routes.ts`: rutas estáticas (`create`) **antes** de `:id`
|
|
186
|
+
- Guards desde `common/guards/`
|
|
187
|
+
|
|
188
|
+
### 3.5 Verificación Fase 3
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
cd frontend && ng build
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Fase 4 — Integración y cierre
|
|
197
|
+
|
|
198
|
+
- [ ] Flujo E2E manual documentado en `progress.md`
|
|
199
|
+
- [ ] Tests mínimos (DAL BE, routes BE, DAL FE críticos)
|
|
200
|
+
- [ ] Eliminar o marcar deprecated archivos legacy del módulo
|
|
201
|
+
- [ ] Actualizar anexo de migración del módulo
|
|
202
|
+
- [ ] `/speckit.converge` cuando spec completo
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Migración vs módulo nuevo
|
|
207
|
+
|
|
208
|
+
| Aspecto | Módulo nuevo | Migración (fichajes, users) |
|
|
209
|
+
|---------|--------------|----------------------------|
|
|
210
|
+
| Fase 0 | Swagger + spec | + inventario legacy + mapa renombres |
|
|
211
|
+
| Fase 1 | Crear domain | Renombrar/mover domain; aliases temporales si spec lo pide |
|
|
212
|
+
| Rutas BFF | Solo inglés | Decidir: ¿mantener rutas ES con deprecation? (preguntar) |
|
|
213
|
+
| Código legacy | No existe | Convivencia hasta fase 4; no borrar sin spec |
|
|
214
|
+
|
|
215
|
+
**Estrategia recomendada para migraciones grandes** (fichajes):
|
|
216
|
+
|
|
217
|
+
1. **Vertical por feature**: ej. primero `workdays` listado+detalle, luego punch actions, luego config.
|
|
218
|
+
2. **No renombrar todo el módulo en un solo PR** — el spec debe trocear por Spec Kit changes.
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Qué NO hacer en medio del flujo
|
|
223
|
+
|
|
224
|
+
- No crear componentes antes de DTOs
|
|
225
|
+
- No definir tipos en `routes/` o componentes
|
|
226
|
+
- No duplicar lógica de filtros SQL fuera de `DolibarrDal`
|
|
227
|
+
- No usar `application/services` en FE si el patrón products usa `AppQueryBase` / `AppServiceBase`
|
|
228
|
+
- No registrar en Awilix hasta tener el DAL con constructor `(dolikey, entityId)`
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Diagrama resumen
|
|
233
|
+
|
|
234
|
+
```
|
|
235
|
+
Fase 0: Leer products + common + swagger + legacy
|
|
236
|
+
↓
|
|
237
|
+
Fase 1: domain/{entity}.ts + enums + DTOs (FE espejo BE)
|
|
238
|
+
↓
|
|
239
|
+
Fase 2: BE: DolibarrDto → mappers → DALs → router → container
|
|
240
|
+
↓ verify tsc
|
|
241
|
+
Fase 3: FE: DALs → pipes → componentes → rutas
|
|
242
|
+
↓ verify ng build
|
|
243
|
+
Fase 4: Tests, limpieza legacy, archive
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## Documentos relacionados
|
|
249
|
+
|
|
250
|
+
| Archivo | Contenido |
|
|
251
|
+
|---------|-----------|
|
|
252
|
+
| [products-module-blueprint.md](./products-module-blueprint.md) | Patrón completo products |
|
|
253
|
+
| [common-imports-catalog.md](./common-imports-catalog.md) | Qué importar de common |
|
|
254
|
+
| [replicate-module-checklist.md](./replicate-module-checklist.md) | Checklist corto |
|
|
255
|
+
| [fichajes-migration-notes.md](./fichajes-migration-notes.md) | Fichajes: nombres, subdominios, endpoints |
|
|
256
|
+
| [users-migration-notes.md](./users-migration-notes.md) | Users: auth, employees, transversal |
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
*Actualizar este documento cuando se valide un flujo distinto en un módulo real (fichajes/users).*
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# Estándar de código — paridad products / services
|
|
2
|
+
|
|
3
|
+
> **Audiencia**: todo agente que escriba o revise código en Doligestion.
|
|
4
|
+
> **Fuente de verdad**: el código de `products` y `services` (mismo esqueleto). Si este doc y el código canónico divergen, **manda el código de products/services** y luego actualiza este archivo.
|
|
5
|
+
> **Complementa**: [products-module-blueprint.md](./products-module-blueprint.md) (esqueleto de módulo), [replicate-module-checklist.md](./replicate-module-checklist.md).
|
|
6
|
+
> **Última revisión**: 2026-09-17
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 0. Regla de oro
|
|
11
|
+
|
|
12
|
+
1. **Copiar el patrón general de products/services.** Solo cambian entidad, campos, enums, endpoints y reglas de negocio del módulo.
|
|
13
|
+
2. **Si no sabes el tipo, valor o forma de un dato: pregunta al usuario.** Prohibido inventar uniones (`string | number`), opcionales “por si acaso”, o magic strings.
|
|
14
|
+
3. **Módulos custom** (p. ej. `projectsonna`, fichajes API propia) pueden tener endpoints y DALs distintos, pero **naming, carpetas, `id`, enums, `@Field`, dominio FE≡BE y Zero-Any** siguen este estándar.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 1. `id` — invariante
|
|
19
|
+
|
|
20
|
+
| Capa | Regla |
|
|
21
|
+
|------|--------|
|
|
22
|
+
| `domain/` (FE y BE) | `id: number` **siempre**. **Sin** `?`. Es el **único** campo obligatorio de la entidad; el resto con `?`. |
|
|
23
|
+
| `*DolibarrDto` (infra) | Igual que products/services: `id: number` **sin** `?`. Dolibarr a veces envía `"1"` como string en JSON: el **mapper** hace `Number(item.id)`. |
|
|
24
|
+
| Prohibido | `id?: …`, `id: number \| string`, `id: string` en dominio limpio, `id: string \| number`. |
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
// Correcto (domain + DolibarrDto)
|
|
28
|
+
id: number;
|
|
29
|
+
|
|
30
|
+
// Incorrecto
|
|
31
|
+
id?: number;
|
|
32
|
+
id: number | string;
|
|
33
|
+
id: string; // en domain limpio
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 2. Tipos: no adivinar
|
|
39
|
+
|
|
40
|
+
- **Prohibido** uniones “por incertidumbre” (`string | number`, `A | B` en un campo de dominio) salvo que el contrato de negocio lo exija y esté en el spec.
|
|
41
|
+
- Si la API real no está clara → **preguntar** o mirar respuesta real / swagger; no tipar a ciegas.
|
|
42
|
+
- Zero-Any: usar `unknown` + type guard solo en fronteras externas cuando haga falta.
|
|
43
|
+
- Campos opcionales: solo si el dominio/API realmente los omiten → `campo?: Tipo` (nunca mezclar con uniones inventadas).
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 3. Enums y magic strings
|
|
48
|
+
|
|
49
|
+
- Estados / tipos de negocio **numéricos** (como Dolibarr): `enum` **numérico** en `domain/enums/` (ej. `ProductStatus { Inactive = 0, … }`).
|
|
50
|
+
- **Prohibido** magic strings sueltos en filtros SQL, comparaciones de estado, query params de negocio (`'open'`, `'1'` hardcodeado) → usar el enum.
|
|
51
|
+
- Enum **string** solo cuando el contrato real es código string estable (ej. roles de contacto `BILLING`) y products/el módulo de referencia ya lo hace así; documentarlo en el spec.
|
|
52
|
+
- Constantes nombradas para límites, paths de segmento fijo (`'selector'`), etc., cuando se reutilicen.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 4. Classes con `@Field` vs interfaces
|
|
57
|
+
|
|
58
|
+
| Artefacto | Forma | Dónde |
|
|
59
|
+
|-----------|--------|--------|
|
|
60
|
+
| Entidad de dominio (`Product`, `Project`) | `interface` | `domain/{entity}.ts` |
|
|
61
|
+
| DTO de query/comando (GetAll, Create, Update…) | `class` + `@Field({…})` | `domain/{resource}{Op}Dto.ts` |
|
|
62
|
+
| Shape cruda Dolibarr | `interface` | `infrastructure/dal/dolibarr/{entity}DolibarrDto.ts` |
|
|
63
|
+
| Shape cruda liviana (selector) | `interface` | `…/{entity}SelectorDolibarrDto.ts` (mismo estilo que `productDolibarrDto`) |
|
|
64
|
+
| Selector de UI BFF | `SelectorDto` (`id` + `description`) | `common/domain/selectorDto` — no inventar otro shape |
|
|
65
|
+
|
|
66
|
+
- `@Field` lleva `label` en **español** (UI); identificadores en **inglés**.
|
|
67
|
+
- DTOs FE y BE **idénticos** (mismas propiedades y `@Field`); solo cambian imports (`@app/…` vs relativos).
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 5. Naming y ubicación de archivos
|
|
72
|
+
|
|
73
|
+
### Backend (`backend/src/{module}/`)
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
domain/
|
|
77
|
+
{entity}.ts # interface
|
|
78
|
+
enums/{Entity}Status.ts
|
|
79
|
+
{resources}GetAllDto.ts # class + @Field
|
|
80
|
+
{resources}CreateDto.ts
|
|
81
|
+
infrastructure/
|
|
82
|
+
dal/dolibarr/
|
|
83
|
+
{entity}DolibarrDto.ts
|
|
84
|
+
{entity}SelectorDolibarrDto.ts # si hay selector liviano
|
|
85
|
+
{resources}GetAllDal.ts
|
|
86
|
+
{resources}SelectorDal.ts # GET …/selector
|
|
87
|
+
mappers/{entity}Mapper.ts
|
|
88
|
+
router/{resources}Router.ts
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
- Recurso plural en DALs/rutas: `productsGetAllDal`, `projectsSelectorDal`.
|
|
92
|
+
- Entidad singular en DTO Dolibarr: `productDolibarrDto`, `projectSelectorDolibarrDto`.
|
|
93
|
+
- Selectores: ruta estática `GET /selector` **antes** de `/:id`; respuesta `SelectorDto[]`; **sin** N+1 ni stats de listado.
|
|
94
|
+
|
|
95
|
+
### Frontend (`frontend/src/app/{module}/`)
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
domain/ # espejo del backend
|
|
99
|
+
infrastructure/
|
|
100
|
+
dal/backend/{resources}GetAllDal.ts
|
|
101
|
+
dal/backend/{resources}SelectorDal.ts
|
|
102
|
+
components/{resources}-getall/
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
- Dominio FE ≡ BE (paridad de ficheros y tipos).
|
|
106
|
+
- Español solo en labels `@Field` y texto de plantillas.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## 6. Capas (Clean Architecture)
|
|
111
|
+
|
|
112
|
+
- Tipos **solo** en `domain/` (o DTO Dolibarr en `dal/dolibarr/`). Routes/components **importan**, no declaran interfaces de negocio.
|
|
113
|
+
- DALs G2: un caso de uso ≈ un DAL + `run()`.
|
|
114
|
+
- Listado rico (`GetAll` + stats/paginación) **≠** selector (`SelectorDal`). No un boolean “includeX” que mezcle responsabilidades caras.
|
|
115
|
+
- Mapper: frontera snake_case → camelCase; `Number(id)`; sin lógica de UI.
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## 7. Checklist rápido (antes de marcar hecho)
|
|
120
|
+
|
|
121
|
+
- [ ] ¿Existe el mismo patrón en `products` o `services`? Si sí, ¿lo copié?
|
|
122
|
+
- [ ] ¿`id: number` sin `?` en domain y DolibarrDto?
|
|
123
|
+
- [ ] ¿Sin `number | string` / uniones inventadas?
|
|
124
|
+
- [ ] ¿Enums numéricos para estados; sin magic strings de negocio?
|
|
125
|
+
- [ ] ¿DTOs = `class` + `@Field`; entidades = `interface`?
|
|
126
|
+
- [ ] ¿Dominio FE alineado byte-a-byte con BE?
|
|
127
|
+
- [ ] ¿Naming/ubicación como la tabla de la §5?
|
|
128
|
+
- [ ] ¿Si dudé de un tipo/campo, pregunté en lugar de inventar?
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## 8. Referencias canónicas (abrir el código)
|
|
133
|
+
|
|
134
|
+
| Qué | Dónde |
|
|
135
|
+
|-----|--------|
|
|
136
|
+
| Entidad + id | `backend/src/products/domain/product.ts` |
|
|
137
|
+
| DTO `@Field` | `backend/src/products/domain/productsGetAllDto.ts` ≡ FE |
|
|
138
|
+
| Enum numérico | `backend/src/products/domain/enums/productStatus.ts` |
|
|
139
|
+
| DolibarrDto | `backend/src/products/infrastructure/dal/dolibarr/productDolibarrDto.ts` |
|
|
140
|
+
| DAL listado | `…/productsGetAllDal.ts` |
|
|
141
|
+
| Services (paridad) | `backend/src/services/`, `frontend/src/app/services/` |
|
|
142
|
+
| Selector (terceros/users) | `thirdpartiesSelectorDal`, `usersSelectorDal`, `GET /selector` |
|
|
143
|
+
| Blueprint módulo | [products-module-blueprint.md](./products-module-blueprint.md) |
|