@nockdev/awf 6.2.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/.agent/build.yaml +178 -0
- package/.agent/config.yaml +235 -0
- package/.agent/core/ACTIVE_MEMORY.yaml +344 -0
- package/.agent/core/ARCH_REGISTRY.yaml +252 -0
- package/.agent/core/AUDIT_POLICY.md +68 -0
- package/.agent/core/BRANDING.yaml +185 -0
- package/.agent/core/CACHE.md +59 -0
- package/.agent/core/CHECKPOINT.yaml +153 -0
- package/.agent/core/CLEANUP_ENGINE.yaml +326 -0
- package/.agent/core/CODING_STYLES.yaml +346 -0
- package/.agent/core/COMMANDS.md +93 -0
- package/.agent/core/CONTEXT_INJECTOR.yaml +325 -0
- package/.agent/core/CONTEXT_LOADER.yaml +323 -0
- package/.agent/core/CONTEXT_OPTIMIZATION.yaml +286 -0
- package/.agent/core/CONTEXT_PRIORITY.yaml +357 -0
- package/.agent/core/CUSTOMIZE.md +138 -0
- package/.agent/core/DATA_SAFETY.md +92 -0
- package/.agent/core/FLOW_ENGINE.yaml +300 -0
- package/.agent/core/GRAPH_MEMORY.yaml +420 -0
- package/.agent/core/HSA.yaml +357 -0
- package/.agent/core/HYBRID_ROUTER.yaml +346 -0
- package/.agent/core/INTENT_DETECTION.yaml +384 -0
- package/.agent/core/LIBRARY_REGISTRY.yaml +401 -0
- package/.agent/core/MCP_TOOLS.yaml +414 -0
- package/.agent/core/MEMORY_CONSOLIDATION.yaml +352 -0
- package/.agent/core/MEMORY_ENGINE.yaml +353 -0
- package/.agent/core/MEMORY_PATHS.yaml +79 -0
- package/.agent/core/MEMORY_UTILS.yaml +212 -0
- package/.agent/core/PATTERNS.yaml +319 -0
- package/.agent/core/PERMISSIONS.md +100 -0
- package/.agent/core/README.md +91 -0
- package/.agent/core/REFLECTION_ENGINE.yaml +348 -0
- package/.agent/core/ROUTER.yaml +424 -0
- package/.agent/core/SCORING_FORMULA.yaml +103 -0
- package/.agent/core/SEMANTIC_ENGINE.yaml +162 -0
- package/.agent/core/SKILLS_FLOW.yaml +341 -0
- package/.agent/core/SKILL_SCHEMA.yaml +266 -0
- package/.agent/core/STATE_MACHINE.yaml +409 -0
- package/.agent/core/SUMMARIZATION_ENGINE.yaml +258 -0
- package/.agent/core/TEMPLATES.yaml +364 -0
- package/.agent/core/TOKEN_BUDGETS.yaml +157 -0
- package/.agent/core/TOKEN_LOADING.yaml +197 -0
- package/.agent/core/TOKEN_SUMMARY.yaml +121 -0
- package/.agent/core/VERSION.yaml +240 -0
- package/.agent/core/embeddings.json +2004 -0
- package/.agent/core/session_cache.json +50 -0
- package/.agent/i18n/README.md +30 -0
- package/.agent/i18n/en.yaml +302 -0
- package/.agent/i18n/vi.yaml +302 -0
- package/.agent/ide/README.md +47 -0
- package/.agent/ide/amazonq.json +35 -0
- package/.agent/ide/amp.json +35 -0
- package/.agent/ide/antigravity.json +47 -0
- package/.agent/ide/augment.json +35 -0
- package/.agent/ide/claude.json +42 -0
- package/.agent/ide/cline.json +34 -0
- package/.agent/ide/codex.json +37 -0
- package/.agent/ide/cody.json +35 -0
- package/.agent/ide/continue.json +35 -0
- package/.agent/ide/cursor.json +42 -0
- package/.agent/ide/gemini.json +46 -0
- package/.agent/ide/jetbrains.json +35 -0
- package/.agent/ide/kiro.json +35 -0
- package/.agent/ide/opencode.json +35 -0
- package/.agent/ide/roo.json +35 -0
- package/.agent/ide/tabnine.json +35 -0
- package/.agent/ide/trae.json +35 -0
- package/.agent/ide/vscode.json +34 -0
- package/.agent/ide/windsurf.json +56 -0
- package/.agent/ide/zed.json +36 -0
- package/.agent/manifest.yaml +416 -0
- package/.agent/memory/README.md +148 -0
- package/.agent/memory/active_memories.json +35 -0
- package/.agent/memory/archive/.gitkeep +0 -0
- package/.agent/memory/audit_summary.json +58 -0
- package/.agent/memory/cleanup_log.json +34 -0
- package/.agent/memory/consolidated.md +75 -0
- package/.agent/memory/core_memory/persona.json +30 -0
- package/.agent/memory/core_memory/project.json +25 -0
- package/.agent/memory/core_memory/rules.json +29 -0
- package/.agent/memory/core_memory/user.json +24 -0
- package/.agent/memory/decisions.md +40 -0
- package/.agent/memory/graph/knowledge_graph.json +12 -0
- package/.agent/memory/insights.md +52 -0
- package/.agent/memory/metrics.json +48 -0
- package/.agent/memory/patterns/errors.json +11 -0
- package/.agent/memory/patterns/successes.json +10 -0
- package/.agent/memory/session.md +64 -0
- package/.agent/memory/session_rules.json +19 -0
- package/.agent/memory/state.json +81 -0
- package/.agent/memory/vectors/README.md +129 -0
- package/.agent/personas/README.md +180 -0
- package/.agent/personas/architect.md +186 -0
- package/.agent/personas/auditor.md +222 -0
- package/.agent/personas/debugger.md +210 -0
- package/.agent/personas/developer.md +183 -0
- package/.agent/personas/devops.md +268 -0
- package/.agent/personas/documenter.md +262 -0
- package/.agent/personas/orchestrator.md +240 -0
- package/.agent/personas/persona.schema.yaml +209 -0
- package/.agent/personas/planner.md +171 -0
- package/.agent/personas/researcher.md +194 -0
- package/.agent/personas/security.md +212 -0
- package/.agent/personas/tester.md +247 -0
- package/.agent/rules/README.md +231 -0
- package/.agent/rules/SACRED_RULES.xml +142 -0
- package/.agent/rules/constitutional/tier-0-core.yaml +182 -0
- package/.agent/rules/constitutional/tier-1-safety.yaml +272 -0
- package/.agent/rules/constitutional/tier-2-execution.yaml +294 -0
- package/.agent/rules/data/build-systems.yaml +126 -0
- package/.agent/rules/data/quality-standards.json +59 -0
- package/.agent/rules/duplication-prevention.md +138 -0
- package/.agent/rules/incremental-changes.md +146 -0
- package/.agent/rules/modules/context-management.yaml +158 -0
- package/.agent/rules/modules/edit-verification.yaml +197 -0
- package/.agent/rules/modules/evidence.yaml +185 -0
- package/.agent/rules/modules/git-workflow.yaml +165 -0
- package/.agent/rules/modules/language.yaml +155 -0
- package/.agent/rules/modules/online-research.yaml +192 -0
- package/.agent/rules/modules/quality.yaml +185 -0
- package/.agent/rules/modules/reflection.yaml +209 -0
- package/.agent/rules/modules/stop-conditions.yaml +196 -0
- package/.agent/rules/modules/terminal-safety.yaml +229 -0
- package/.agent/rules/modules/versioning.yaml +97 -0
- package/.agent/rules/modules/yagni.yaml +167 -0
- package/.agent/rules/project-detection.md +317 -0
- package/.agent/rules/prompt-injection-guard.md +260 -0
- package/.agent/rules/shell-commands.md +210 -0
- package/.agent/rules/validation-framework.md +189 -0
- package/.agent/skills/DEVELOPMENT.yaml +226 -0
- package/.agent/skills/README.md +69 -0
- package/.agent/skills/_categories.yaml +145 -0
- package/.agent/skills/_router.yaml +232 -0
- package/.agent/skills/core/_index.yaml +12 -0
- package/.agent/skills/core/api-design/META.yaml +64 -0
- package/.agent/skills/core/api-design/SKILL.md +169 -0
- package/.agent/skills/core/api-design/data/api-versioning.yaml +217 -0
- package/.agent/skills/core/api-design/data/error-responses.yaml +135 -0
- package/.agent/skills/core/api-design/data/graphql-patterns.yaml +165 -0
- package/.agent/skills/core/api-design/data/grpc-patterns.yaml +165 -0
- package/.agent/skills/core/api-design/data/http-status-codes.yaml +176 -0
- package/.agent/skills/core/api-design/data/pagination.yaml +121 -0
- package/.agent/skills/core/api-design/data/rate-limiting.yaml +135 -0
- package/.agent/skills/core/api-design/data/rest-patterns.yaml +195 -0
- package/.agent/skills/core/api-design/data/test-apis.yaml +217 -0
- package/.agent/skills/core/authentication/META.yaml +73 -0
- package/.agent/skills/core/authentication/SKILL.md +166 -0
- package/.agent/skills/core/authentication/data/anti-patterns.yaml +135 -0
- package/.agent/skills/core/authentication/data/core-patterns.yaml +256 -0
- package/.agent/skills/core/authentication/data/jwt-patterns.yaml +255 -0
- package/.agent/skills/core/authentication/data/language-csharp.yaml +215 -0
- package/.agent/skills/core/authentication/data/language-go.yaml +215 -0
- package/.agent/skills/core/authentication/data/language-java.yaml +215 -0
- package/.agent/skills/core/authentication/data/language-mobile.yaml +215 -0
- package/.agent/skills/core/authentication/data/language-python.yaml +215 -0
- package/.agent/skills/core/authentication/data/language-rust.yaml +215 -0
- package/.agent/skills/core/authentication/data/language-typescript.yaml +215 -0
- package/.agent/skills/core/authentication/data/mfa-patterns.yaml +175 -0
- package/.agent/skills/core/authentication/data/oauth-patterns.yaml +255 -0
- package/.agent/skills/core/authentication/data/oauth.yaml +248 -0
- package/.agent/skills/core/authentication/data/passkeys-webauthn.yaml +215 -0
- package/.agent/skills/core/authentication/data/passkeys.yaml +208 -0
- package/.agent/skills/core/authentication/data/password-patterns.yaml +175 -0
- package/.agent/skills/core/authentication/data/password.yaml +168 -0
- package/.agent/skills/core/authentication/data/session-patterns.yaml +215 -0
- package/.agent/skills/core/error-handling/META.yaml +71 -0
- package/.agent/skills/core/error-handling/SKILL.md +156 -0
- package/.agent/skills/core/error-handling/data/anti-patterns.yaml +105 -0
- package/.agent/skills/core/error-handling/data/api-error-patterns.yaml +135 -0
- package/.agent/skills/core/error-handling/data/core-patterns.yaml +226 -0
- package/.agent/skills/core/error-handling/data/error-codes.yaml +165 -0
- package/.agent/skills/core/error-handling/data/error-messages.yaml +165 -0
- package/.agent/skills/core/error-handling/data/language-c-cpp.yaml +226 -0
- package/.agent/skills/core/error-handling/data/language-go-rust.yaml +226 -0
- package/.agent/skills/core/error-handling/data/language-python-java.yaml +226 -0
- package/.agent/skills/core/error-handling/data/language-swift-kotlin.yaml +226 -0
- package/.agent/skills/core/error-handling/data/language-typescript-php-ruby.yaml +226 -0
- package/.agent/skills/core/error-handling/data/resilience-patterns.yaml +191 -0
- package/.agent/skills/core/error-handling/data/ui-error-patterns.yaml +135 -0
- package/.agent/skills/core/logging/META.yaml +73 -0
- package/.agent/skills/core/logging/SKILL.md +184 -0
- package/.agent/skills/core/logging/data/aggregation-patterns.yaml +191 -0
- package/.agent/skills/core/logging/data/anti-patterns.yaml +121 -0
- package/.agent/skills/core/logging/data/core-patterns.yaml +226 -0
- package/.agent/skills/core/logging/data/language-csharp.yaml +191 -0
- package/.agent/skills/core/logging/data/language-go.yaml +191 -0
- package/.agent/skills/core/logging/data/language-java.yaml +191 -0
- package/.agent/skills/core/logging/data/language-kotlin.yaml +156 -0
- package/.agent/skills/core/logging/data/language-others.yaml +184 -0
- package/.agent/skills/core/logging/data/language-python.yaml +191 -0
- package/.agent/skills/core/logging/data/language-rust.yaml +191 -0
- package/.agent/skills/core/logging/data/language-swift.yaml +156 -0
- package/.agent/skills/core/logging/data/language-typescript.yaml +191 -0
- package/.agent/skills/core/logging/data/otel-logging.yaml +156 -0
- package/.agent/skills/core/observability/META.yaml +76 -0
- package/.agent/skills/core/observability/SKILL.md +153 -0
- package/.agent/skills/core/observability/data/alerting-patterns.yaml +165 -0
- package/.agent/skills/core/observability/data/anti-patterns.yaml +105 -0
- package/.agent/skills/core/observability/data/core-patterns.yaml +195 -0
- package/.agent/skills/core/observability/data/language-cpp.yaml +165 -0
- package/.agent/skills/core/observability/data/language-csharp.yaml +165 -0
- package/.agent/skills/core/observability/data/language-go.yaml +165 -0
- package/.agent/skills/core/observability/data/language-java.yaml +165 -0
- package/.agent/skills/core/observability/data/language-others.yaml +255 -0
- package/.agent/skills/core/observability/data/language-python.yaml +165 -0
- package/.agent/skills/core/observability/data/language-rust.yaml +165 -0
- package/.agent/skills/core/observability/data/language-typescript.yaml +165 -0
- package/.agent/skills/core/observability/data/metrics-patterns.yaml +135 -0
- package/.agent/skills/core/observability/data/metrics-prometheus.yaml +165 -0
- package/.agent/skills/core/observability/data/otel-core.yaml +195 -0
- package/.agent/skills/core/observability/data/profiling-patterns.yaml +135 -0
- package/.agent/skills/core/observability/data/tracing-patterns.yaml +165 -0
- package/.agent/skills/core/observability/data/tracing-tools.yaml +135 -0
- package/.agent/skills/core/security/ADVANCED.md +269 -0
- package/.agent/skills/core/security/META.yaml +97 -0
- package/.agent/skills/core/security/SKILL.md +234 -0
- package/.agent/skills/core/security/data/ai-ml-security.yaml +261 -0
- package/.agent/skills/core/security/data/api-security.yaml +230 -0
- package/.agent/skills/core/security/data/auth-patterns.yaml +195 -0
- package/.agent/skills/core/security/data/binary-exploitation.yaml +339 -0
- package/.agent/skills/core/security/data/cloud-security.yaml +269 -0
- package/.agent/skills/core/security/data/cwe-top25.yaml +415 -0
- package/.agent/skills/core/security/data/language-specific/c-security.yaml +295 -0
- package/.agent/skills/core/security/data/language-specific/cpp-security.yaml +295 -0
- package/.agent/skills/core/security/data/language-specific/csharp-security.yaml +219 -0
- package/.agent/skills/core/security/data/language-specific/go-security.yaml +219 -0
- package/.agent/skills/core/security/data/language-specific/java-security.yaml +295 -0
- package/.agent/skills/core/security/data/language-specific/kotlin-security.yaml +198 -0
- package/.agent/skills/core/security/data/language-specific/php-security.yaml +219 -0
- package/.agent/skills/core/security/data/language-specific/python-security.yaml +295 -0
- package/.agent/skills/core/security/data/language-specific/ruby-security.yaml +198 -0
- package/.agent/skills/core/security/data/language-specific/rust-security.yaml +240 -0
- package/.agent/skills/core/security/data/language-specific/solidity-security.yaml +369 -0
- package/.agent/skills/core/security/data/language-specific/swift-security.yaml +198 -0
- package/.agent/skills/core/security/data/language-specific/typescript-security.yaml +295 -0
- package/.agent/skills/core/security/data/mobile-security.yaml +369 -0
- package/.agent/skills/core/security/data/network-security.yaml +297 -0
- package/.agent/skills/core/security/data/owasp-top10.yaml +171 -0
- package/.agent/skills/core/security/data/reverse-engineering.yaml +497 -0
- package/.agent/skills/core/security/data/supply-chain.yaml +219 -0
- package/.agent/skills/cross-cutting/_index.yaml +15 -0
- package/.agent/skills/cross-cutting/audit-pro/META.yaml +43 -0
- package/.agent/skills/cross-cutting/audit-pro/data/checklists.yaml +644 -0
- package/.agent/skills/cross-cutting/audit-pro/data/scoring.yaml +101 -0
- package/.agent/skills/cross-cutting/aws/META.yaml +75 -0
- package/.agent/skills/cross-cutting/aws/data/ai_ml.yaml +194 -0
- package/.agent/skills/cross-cutting/aws/data/compute.yaml +191 -0
- package/.agent/skills/cross-cutting/aws/data/kubernetes.yaml +199 -0
- package/.agent/skills/cross-cutting/aws/data/storage.yaml +174 -0
- package/.agent/skills/cross-cutting/bun/META.yaml +58 -0
- package/.agent/skills/cross-cutting/bun/SKILL.md +357 -0
- package/.agent/skills/cross-cutting/bun/data/database.yaml +85 -0
- package/.agent/skills/cross-cutting/bun/data/runtime.yaml +170 -0
- package/.agent/skills/cross-cutting/bun/data/tooling.yaml +192 -0
- package/.agent/skills/cross-cutting/ci-cd/META.yaml +60 -0
- package/.agent/skills/cross-cutting/ci-cd/data/github_actions.yaml +248 -0
- package/.agent/skills/cross-cutting/ci-cd/data/security.yaml +211 -0
- package/.agent/skills/cross-cutting/coding-rules/META.yaml +61 -0
- package/.agent/skills/cross-cutting/coding-rules/SKILL.md +171 -0
- package/.agent/skills/cross-cutting/coding-rules/data/architecture-patterns.yaml +96 -0
- package/.agent/skills/cross-cutting/coding-rules/data/build-systems.yaml +346 -0
- package/.agent/skills/cross-cutting/coding-rules/data/coding-rules.yaml +647 -0
- package/.agent/skills/cross-cutting/coding-rules/data/concurrency-patterns.yaml +108 -0
- package/.agent/skills/cross-cutting/coding-rules/data/design-patterns.yaml +260 -0
- package/.agent/skills/cross-cutting/coding-rules/data/framework-signatures.yaml +344 -0
- package/.agent/skills/cross-cutting/coding-rules/data/memory-management.yaml +108 -0
- package/.agent/skills/cross-cutting/coding-rules/data/naming-conventions.yaml +320 -0
- package/.agent/skills/cross-cutting/coding-rules/data/performance-benchmarks.yaml +164 -0
- package/.agent/skills/cross-cutting/coding-rules/data/solid-principles.yaml +80 -0
- package/.agent/skills/cross-cutting/coding-rules/data/test-frameworks.yaml +183 -0
- package/.agent/skills/cross-cutting/database/ADVANCED.md +465 -0
- package/.agent/skills/cross-cutting/database/META.yaml +22 -0
- package/.agent/skills/cross-cutting/database/SKILL.md +816 -0
- package/.agent/skills/cross-cutting/database/data/anti_patterns.yaml +116 -0
- package/.agent/skills/cross-cutting/database/data/distributed.yaml +152 -0
- package/.agent/skills/cross-cutting/database/data/mongodb.yaml +132 -0
- package/.agent/skills/cross-cutting/database/data/mysql.yaml +130 -0
- package/.agent/skills/cross-cutting/database/data/orm.yaml +104 -0
- package/.agent/skills/cross-cutting/database/data/postgresql.yaml +170 -0
- package/.agent/skills/cross-cutting/database/data/redis.yaml +129 -0
- package/.agent/skills/cross-cutting/deno/META.yaml +68 -0
- package/.agent/skills/cross-cutting/deno/SKILL.md +343 -0
- package/.agent/skills/cross-cutting/deno/data/runtime.yaml +260 -0
- package/.agent/skills/cross-cutting/deno/data/security.yaml +168 -0
- package/.agent/skills/cross-cutting/deno/data/tooling.yaml +133 -0
- package/.agent/skills/cross-cutting/docker/META.yaml +65 -0
- package/.agent/skills/cross-cutting/docker/data/build.yaml +197 -0
- package/.agent/skills/cross-cutting/docker/data/compose.yaml +229 -0
- package/.agent/skills/cross-cutting/docker/data/security.yaml +164 -0
- package/.agent/skills/cross-cutting/electron/META.yaml +174 -0
- package/.agent/skills/cross-cutting/electron/SKILL.md +862 -0
- package/.agent/skills/cross-cutting/electron/data/build.yaml +105 -0
- package/.agent/skills/cross-cutting/electron/data/crash.yaml +103 -0
- package/.agent/skills/cross-cutting/electron/data/ipc.yaml +85 -0
- package/.agent/skills/cross-cutting/electron/data/native.yaml +157 -0
- package/.agent/skills/cross-cutting/electron/data/security.yaml +89 -0
- package/.agent/skills/cross-cutting/electron/data/storage.yaml +100 -0
- package/.agent/skills/cross-cutting/electron/data/testing.yaml +103 -0
- package/.agent/skills/cross-cutting/electron/data/updates.yaml +99 -0
- package/.agent/skills/cross-cutting/electron/data/window.yaml +83 -0
- package/.agent/skills/cross-cutting/kubernetes/META.yaml +70 -0
- package/.agent/skills/cross-cutting/kubernetes/data/networking.yaml +270 -0
- package/.agent/skills/cross-cutting/kubernetes/data/scheduling.yaml +267 -0
- package/.agent/skills/cross-cutting/kubernetes/data/security.yaml +253 -0
- package/.agent/skills/cross-cutting/kubernetes/data/workloads.yaml +251 -0
- package/.agent/skills/cross-cutting/sql/META.yaml +88 -0
- package/.agent/skills/cross-cutting/sql/SKILL.md +296 -0
- package/.agent/skills/cross-cutting/sql/data/indexing.yaml +147 -0
- package/.agent/skills/cross-cutting/sql/data/json.yaml +156 -0
- package/.agent/skills/cross-cutting/sql/data/performance.yaml +204 -0
- package/.agent/skills/cross-cutting/sql/data/queries.yaml +150 -0
- package/.agent/skills/cross-cutting/tailwind/META.yaml +72 -0
- package/.agent/skills/cross-cutting/tailwind/SKILL.md +344 -0
- package/.agent/skills/cross-cutting/tailwind/data/build.yaml +143 -0
- package/.agent/skills/cross-cutting/tailwind/data/config.yaml +109 -0
- package/.agent/skills/cross-cutting/tailwind/data/migration.yaml +149 -0
- package/.agent/skills/cross-cutting/tailwind/data/responsive.yaml +148 -0
- package/.agent/skills/cross-cutting/tailwind/data/states.yaml +152 -0
- package/.agent/skills/cross-cutting/tailwind/data/theme.yaml +126 -0
- package/.agent/skills/cross-cutting/tailwind/data/utilities.yaml +182 -0
- package/.agent/skills/cross-cutting/tailwind/data/variants.yaml +154 -0
- package/.agent/skills/cross-cutting/testing/ADVANCED.md +245 -0
- package/.agent/skills/cross-cutting/testing/META.yaml +49 -0
- package/.agent/skills/cross-cutting/testing/SKILL.md +263 -0
- package/.agent/skills/cross-cutting/testing/data/frameworks.yaml +300 -0
- package/.agent/skills/cross-cutting/testing/data/patterns.yaml +168 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/META.yaml +108 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/SKILL.md +565 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/charts.yaml +331 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/colors.yaml +1226 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/component-decision.yaml +287 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/component-mapping.yaml +318 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/design-tokens.yaml +525 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/desktop-animation.yaml +232 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/desktop-architecture.yaml +140 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/desktop-colors.yaml +467 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/directory-structure.yaml +75 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/icons.yaml +918 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/implementation-strategy.yaml +107 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/landing.yaml +372 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/platform-frameworks.yaml +195 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/platform-guidelines.yaml +177 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/products.yaml +1339 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/prompts.yaml +180 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/react-performance.yaml +504 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/desktop.yaml +228 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/flutter.yaml +508 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/html-tailwind.yaml +543 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/nextjs.yaml +515 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/nuxt-ui.yaml +519 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/nuxtjs.yaml +599 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/react-native.yaml +496 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/react.yaml +526 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/shadcn.yaml +616 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/svelte.yaml +520 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/swiftui.yaml +486 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/stacks/vue.yaml +485 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/styles.yaml +1473 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/typography.yaml +647 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/ui-reasoning.yaml +1019 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/ux-guidelines.yaml +1009 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/data/web-interface.yaml +347 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/__pycache__/core.cpython-310.pyc +0 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc +0 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc +0 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/core.py +393 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/core_legacy.py +303 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/design_system.py +496 -0
- package/.agent/skills/cross-cutting/ui-ux-pro-max/scripts/search.py +76 -0
- package/.agent/skills/cross-cutting/web-perf/META.yaml +92 -0
- package/.agent/skills/cross-cutting/web-perf/SKILL.md +181 -0
- package/.agent/skills/cross-cutting/web-perf/data/cls_optimization.yaml +189 -0
- package/.agent/skills/cross-cutting/web-perf/data/core_web_vitals.yaml +282 -0
- package/.agent/skills/cross-cutting/web-perf/data/inp_optimization.yaml +240 -0
- package/.agent/skills/cross-cutting/web-perf/data/lcp_optimization.yaml +202 -0
- package/.agent/skills/cross-cutting/web-perf/data/measurement.yaml +170 -0
- package/.agent/skills/devops/_index.yaml +9 -0
- package/.agent/skills/devops/aws/ADVANCED.md +547 -0
- package/.agent/skills/devops/aws/META.yaml +84 -0
- package/.agent/skills/devops/aws/SKILL.md +711 -0
- package/.agent/skills/devops/ci-cd/ADVANCED.md +529 -0
- package/.agent/skills/devops/ci-cd/META.yaml +21 -0
- package/.agent/skills/devops/ci-cd/SKILL.md +821 -0
- package/.agent/skills/devops/docker/ADVANCED.md +495 -0
- package/.agent/skills/devops/docker/META.yaml +20 -0
- package/.agent/skills/devops/docker/SKILL.md +653 -0
- package/.agent/skills/devops/kubernetes/ADVANCED.md +252 -0
- package/.agent/skills/devops/kubernetes/META.yaml +15 -0
- package/.agent/skills/devops/kubernetes/SKILL.md +621 -0
- package/.agent/skills/frameworks/_index.yaml +13 -0
- package/.agent/skills/frameworks/angular/META.yaml +70 -0
- package/.agent/skills/frameworks/angular/SKILL.md +319 -0
- package/.agent/skills/frameworks/angular/data/core.yaml +209 -0
- package/.agent/skills/frameworks/angular/data/performance.yaml +210 -0
- package/.agent/skills/frameworks/angular/data/server.yaml +175 -0
- package/.agent/skills/frameworks/flutter/ADVANCED.md +491 -0
- package/.agent/skills/frameworks/flutter/META.yaml +64 -0
- package/.agent/skills/frameworks/flutter/SKILL.md +541 -0
- package/.agent/skills/frameworks/flutter/data/core.yaml +210 -0
- package/.agent/skills/frameworks/flutter/data/platform.yaml +246 -0
- package/.agent/skills/frameworks/flutter/data/state.yaml +250 -0
- package/.agent/skills/frameworks/nextjs/ADVANCED.md +225 -0
- package/.agent/skills/frameworks/nextjs/META.yaml +67 -0
- package/.agent/skills/frameworks/nextjs/SKILL.md +593 -0
- package/.agent/skills/frameworks/nextjs/data/caching.yaml +210 -0
- package/.agent/skills/frameworks/nextjs/data/core.yaml +255 -0
- package/.agent/skills/frameworks/nextjs/data/server.yaml +248 -0
- package/.agent/skills/frameworks/nuxt/META.yaml +57 -0
- package/.agent/skills/frameworks/nuxt/SKILL.md +283 -0
- package/.agent/skills/frameworks/nuxt/data/core.yaml +309 -0
- package/.agent/skills/frameworks/nuxt/data/server.yaml +271 -0
- package/.agent/skills/frameworks/react/ADVANCED.md +676 -0
- package/.agent/skills/frameworks/react/META.yaml +60 -0
- package/.agent/skills/frameworks/react/SKILL.md +263 -0
- package/.agent/skills/frameworks/react/data/core.yaml +278 -0
- package/.agent/skills/frameworks/react/data/server.yaml +283 -0
- package/.agent/skills/frameworks/react-native/META.yaml +59 -0
- package/.agent/skills/frameworks/react-native/SKILL.md +301 -0
- package/.agent/skills/frameworks/react-native/data/core.yaml +260 -0
- package/.agent/skills/frameworks/react-native/data/platform.yaml +287 -0
- package/.agent/skills/frameworks/svelte/META.yaml +62 -0
- package/.agent/skills/frameworks/svelte/SKILL.md +398 -0
- package/.agent/skills/frameworks/svelte/data/runes.yaml +239 -0
- package/.agent/skills/frameworks/svelte/data/sveltekit.yaml +244 -0
- package/.agent/skills/frameworks/vue/ADVANCED.md +214 -0
- package/.agent/skills/frameworks/vue/META.yaml +58 -0
- package/.agent/skills/frameworks/vue/SKILL.md +356 -0
- package/.agent/skills/frameworks/vue/data/advanced.yaml +253 -0
- package/.agent/skills/frameworks/vue/data/core.yaml +270 -0
- package/.agent/skills/index.json +143 -0
- package/.agent/skills/languages/_index.yaml +33 -0
- package/.agent/skills/languages/asm/ADVANCED.md +750 -0
- package/.agent/skills/languages/asm/META.yaml +84 -0
- package/.agent/skills/languages/asm/SKILL.md +753 -0
- package/.agent/skills/languages/asm/data/advanced.yaml +295 -0
- package/.agent/skills/languages/asm/data/core.yaml +280 -0
- package/.agent/skills/languages/c/ADVANCED.md +625 -0
- package/.agent/skills/languages/c/META.yaml +58 -0
- package/.agent/skills/languages/c/SKILL.md +748 -0
- package/.agent/skills/languages/c/data/core.yaml +179 -0
- package/.agent/skills/languages/c/data/embedded.yaml +251 -0
- package/.agent/skills/languages/c/data/memory.yaml +253 -0
- package/.agent/skills/languages/clojure/META.yaml +13 -0
- package/.agent/skills/languages/clojure/SKILL.md +130 -0
- package/.agent/skills/languages/clojure/data/core.yaml +326 -0
- package/.agent/skills/languages/cpp/ADVANCED.md +457 -0
- package/.agent/skills/languages/cpp/META.yaml +61 -0
- package/.agent/skills/languages/cpp/SKILL.md +936 -0
- package/.agent/skills/languages/cpp/data/core.yaml +304 -0
- package/.agent/skills/languages/cpp/data/memory.yaml +247 -0
- package/.agent/skills/languages/cpp/data/modern.yaml +334 -0
- package/.agent/skills/languages/crystal/META.yaml +30 -0
- package/.agent/skills/languages/crystal/SKILL.md +117 -0
- package/.agent/skills/languages/crystal/data/async.yaml +264 -0
- package/.agent/skills/languages/crystal/data/core.yaml +279 -0
- package/.agent/skills/languages/csharp/ADVANCED.md +592 -0
- package/.agent/skills/languages/csharp/META.yaml +23 -0
- package/.agent/skills/languages/csharp/SKILL.md +620 -0
- package/.agent/skills/languages/csharp/data/aspnet.yaml +448 -0
- package/.agent/skills/languages/csharp/data/core.yaml +362 -0
- package/.agent/skills/languages/elixir/META.yaml +18 -0
- package/.agent/skills/languages/elixir/SKILL.md +368 -0
- package/.agent/skills/languages/elixir/data/core.yaml +392 -0
- package/.agent/skills/languages/fsharp/META.yaml +14 -0
- package/.agent/skills/languages/fsharp/SKILL.md +113 -0
- package/.agent/skills/languages/fsharp/data/core.yaml +396 -0
- package/.agent/skills/languages/go/ADVANCED.md +260 -0
- package/.agent/skills/languages/go/META.yaml +64 -0
- package/.agent/skills/languages/go/SKILL.md +489 -0
- package/.agent/skills/languages/go/data/concurrency.yaml +424 -0
- package/.agent/skills/languages/go/data/core.yaml +399 -0
- package/.agent/skills/languages/go/data/http.yaml +507 -0
- package/.agent/skills/languages/haskell/META.yaml +18 -0
- package/.agent/skills/languages/haskell/SKILL.md +305 -0
- package/.agent/skills/languages/haskell/data/core.yaml +347 -0
- package/.agent/skills/languages/java/ADVANCED.md +450 -0
- package/.agent/skills/languages/java/META.yaml +89 -0
- package/.agent/skills/languages/java/SKILL.md +495 -0
- package/.agent/skills/languages/java/data/core.yaml +307 -0
- package/.agent/skills/languages/java/data/spring.yaml +437 -0
- package/.agent/skills/languages/javascript/ADVANCED.md +530 -0
- package/.agent/skills/languages/javascript/META.yaml +105 -0
- package/.agent/skills/languages/javascript/SKILL.md +455 -0
- package/.agent/skills/languages/javascript/data/async.yaml +290 -0
- package/.agent/skills/languages/javascript/data/core.yaml +380 -0
- package/.agent/skills/languages/javascript/data/modern.yaml +269 -0
- package/.agent/skills/languages/julia/META.yaml +13 -0
- package/.agent/skills/languages/julia/SKILL.md +174 -0
- package/.agent/skills/languages/julia/data/core.yaml +356 -0
- package/.agent/skills/languages/kotlin/ADVANCED.md +539 -0
- package/.agent/skills/languages/kotlin/META.yaml +24 -0
- package/.agent/skills/languages/kotlin/SKILL.md +525 -0
- package/.agent/skills/languages/kotlin/data/android.yaml +495 -0
- package/.agent/skills/languages/kotlin/data/core.yaml +366 -0
- package/.agent/skills/languages/lua/ADVANCED.md +257 -0
- package/.agent/skills/languages/lua/META.yaml +58 -0
- package/.agent/skills/languages/lua/SKILL.md +492 -0
- package/.agent/skills/languages/lua/data/core.yaml +264 -0
- package/.agent/skills/languages/lua/data/embedding.yaml +300 -0
- package/.agent/skills/languages/nim/META.yaml +30 -0
- package/.agent/skills/languages/nim/SKILL.md +116 -0
- package/.agent/skills/languages/nim/data/async.yaml +257 -0
- package/.agent/skills/languages/nim/data/core.yaml +241 -0
- package/.agent/skills/languages/ocaml/META.yaml +13 -0
- package/.agent/skills/languages/ocaml/SKILL.md +123 -0
- package/.agent/skills/languages/ocaml/data/core.yaml +357 -0
- package/.agent/skills/languages/perl/META.yaml +13 -0
- package/.agent/skills/languages/perl/SKILL.md +115 -0
- package/.agent/skills/languages/perl/data/core.yaml +360 -0
- package/.agent/skills/languages/php/ADVANCED.md +199 -0
- package/.agent/skills/languages/php/META.yaml +18 -0
- package/.agent/skills/languages/php/SKILL.md +488 -0
- package/.agent/skills/languages/php/data/core.yaml +392 -0
- package/.agent/skills/languages/php/data/laravel.yaml +525 -0
- package/.agent/skills/languages/python/ADVANCED.md +207 -0
- package/.agent/skills/languages/python/META.yaml +91 -0
- package/.agent/skills/languages/python/SKILL.md +495 -0
- package/.agent/skills/languages/python/data/async.yaml +265 -0
- package/.agent/skills/languages/python/data/core.yaml +259 -0
- package/.agent/skills/languages/python/data/fastapi.yaml +296 -0
- package/.agent/skills/languages/python/data/testing.yaml +226 -0
- package/.agent/skills/languages/r/META.yaml +16 -0
- package/.agent/skills/languages/r/SKILL.md +348 -0
- package/.agent/skills/languages/r/data/core.yaml +355 -0
- package/.agent/skills/languages/ruby/ADVANCED.md +381 -0
- package/.agent/skills/languages/ruby/META.yaml +19 -0
- package/.agent/skills/languages/ruby/SKILL.md +417 -0
- package/.agent/skills/languages/ruby/data/core.yaml +448 -0
- package/.agent/skills/languages/ruby/data/rails.yaml +415 -0
- package/.agent/skills/languages/rust/ADVANCED.md +212 -0
- package/.agent/skills/languages/rust/META.yaml +87 -0
- package/.agent/skills/languages/rust/SKILL.md +377 -0
- package/.agent/skills/languages/rust/data/async.yaml +404 -0
- package/.agent/skills/languages/rust/data/axum.yaml +450 -0
- package/.agent/skills/languages/rust/data/core.yaml +356 -0
- package/.agent/skills/languages/scala/META.yaml +17 -0
- package/.agent/skills/languages/scala/SKILL.md +202 -0
- package/.agent/skills/languages/scala/data/core.yaml +349 -0
- package/.agent/skills/languages/solidity/META.yaml +13 -0
- package/.agent/skills/languages/solidity/SKILL.md +188 -0
- package/.agent/skills/languages/solidity/data/core.yaml +528 -0
- package/.agent/skills/languages/swift/ADVANCED.md +231 -0
- package/.agent/skills/languages/swift/META.yaml +18 -0
- package/.agent/skills/languages/swift/SKILL.md +342 -0
- package/.agent/skills/languages/swift/data/core.yaml +489 -0
- package/.agent/skills/languages/typescript/ADVANCED.md +186 -0
- package/.agent/skills/languages/typescript/META.yaml +92 -0
- package/.agent/skills/languages/typescript/SKILL.md +306 -0
- package/.agent/skills/languages/typescript/data/async.yaml +397 -0
- package/.agent/skills/languages/typescript/data/core.yaml +283 -0
- package/.agent/skills/languages/typescript/data/validation.yaml +338 -0
- package/.agent/skills/languages/zig/META.yaml +52 -0
- package/.agent/skills/languages/zig/SKILL.md +354 -0
- package/.agent/skills/languages/zig/data/async.yaml +314 -0
- package/.agent/skills/languages/zig/data/core.yaml +302 -0
- package/.agent/templates/README.md +42 -0
- package/.agent/templates/audit-report.md +153 -0
- package/.agent/templates/chains/debug/step1-reproduce.md +83 -0
- package/.agent/templates/chains/debug/step2-isolate.md +73 -0
- package/.agent/templates/chains/debug/step3-analyze.md +86 -0
- package/.agent/templates/chains/debug/step4-fix.md +85 -0
- package/.agent/templates/chains/debug/step5-verify.md +122 -0
- package/.agent/templates/chains/implement/step1-plan.md +88 -0
- package/.agent/templates/chains/implement/step2-code.md +87 -0
- package/.agent/templates/chains/implement/step3-test.md +87 -0
- package/.agent/templates/chains/implement/step4-doc.md +118 -0
- package/.agent/templates/chains/review/step1-understand.md +74 -0
- package/.agent/templates/chains/review/step2-analyze.md +110 -0
- package/.agent/templates/chains/review/step3-fix.md +93 -0
- package/.agent/templates/chains/review/step4-summary.md +104 -0
- package/.agent/templates/debug-report.md +50 -0
- package/.agent/templates/deploy-plan.md +54 -0
- package/.agent/templates/doc-template.md +57 -0
- package/.agent/templates/findings.md +122 -0
- package/.agent/templates/index.yaml +239 -0
- package/.agent/templates/migrate-plan.md +50 -0
- package/.agent/templates/phase-template.md +72 -0
- package/.agent/templates/project-plan.md +87 -0
- package/.agent/templates/prompts/context_block.md +114 -0
- package/.agent/templates/prompts/guardrails_block.md +116 -0
- package/.agent/templates/prompts/persona_base.md +155 -0
- package/.agent/templates/prompts/tools_block.md +137 -0
- package/.agent/templates/reflection/critic.md +110 -0
- package/.agent/templates/reflection/error_analysis.md +149 -0
- package/.agent/templates/reflection/success_analysis.md +174 -0
- package/.agent/templates/task-list.md +144 -0
- package/.agent/templates/tasks/audit.yaml +146 -0
- package/.agent/templates/tasks/bug_fix.yaml +121 -0
- package/.agent/templates/tasks/code_implementation.yaml +110 -0
- package/.agent/templates/tasks/refactor.yaml +157 -0
- package/.agent/templates/test-report.md +52 -0
- package/.agent/workflows/ap.md +135 -0
- package/.agent/workflows/code.md +130 -0
- package/.agent/workflows/debug.md +230 -0
- package/.agent/workflows/deploy.md +192 -0
- package/.agent/workflows/dev.md +137 -0
- package/.agent/workflows/doc.md +124 -0
- package/.agent/workflows/env.md +98 -0
- package/.agent/workflows/fix.md +76 -0
- package/.agent/workflows/generate.md +28 -0
- package/.agent/workflows/git.md +97 -0
- package/.agent/workflows/help.md +75 -0
- package/.agent/workflows/init.md +148 -0
- package/.agent/workflows/migrate.md +135 -0
- package/.agent/workflows/monitor.md +133 -0
- package/.agent/workflows/onboard.md +144 -0
- package/.agent/workflows/orchestrate.md +117 -0
- package/.agent/workflows/perf.md +106 -0
- package/.agent/workflows/plan.md +106 -0
- package/.agent/workflows/recap.md +101 -0
- package/.agent/workflows/refactor.md +161 -0
- package/.agent/workflows/revert.md +99 -0
- package/.agent/workflows/review.md +106 -0
- package/.agent/workflows/scaffold.md +119 -0
- package/.agent/workflows/security.md +186 -0
- package/.agent/workflows/status.md +103 -0
- package/.agent/workflows/test.md +157 -0
- package/.agent/workflows/think.md +126 -0
- package/.agent/workflows/upgrade.md +109 -0
- package/.agent/workflows/visualize.md +295 -0
- package/.agent/workflows/workflow.md +196 -0
- package/README.md +64 -0
- package/dist/commands/add.d.ts +2 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +70 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/config.d.ts +4 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +152 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/doctor.d.ts +4 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +98 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/hsa.d.ts +4 -0
- package/dist/commands/hsa.d.ts.map +1 -0
- package/dist/commands/hsa.js +194 -0
- package/dist/commands/hsa.js.map +1 -0
- package/dist/commands/info.d.ts +2 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +149 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init.d.ts +4 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +262 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/install-core.d.ts +4 -0
- package/dist/commands/install-core.d.ts.map +1 -0
- package/dist/commands/install-core.js +85 -0
- package/dist/commands/install-core.js.map +1 -0
- package/dist/commands/install-helpers.d.ts +27 -0
- package/dist/commands/install-helpers.d.ts.map +1 -0
- package/dist/commands/install-helpers.js +125 -0
- package/dist/commands/install-helpers.js.map +1 -0
- package/dist/commands/install-hsa.d.ts +18 -0
- package/dist/commands/install-hsa.d.ts.map +1 -0
- package/dist/commands/install-hsa.js +61 -0
- package/dist/commands/install-hsa.js.map +1 -0
- package/dist/commands/install.d.ts +4 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +310 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/list.d.ts +4 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +91 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/mcp-registry.d.ts +48 -0
- package/dist/commands/mcp-registry.d.ts.map +1 -0
- package/dist/commands/mcp-registry.js +246 -0
- package/dist/commands/mcp-registry.js.map +1 -0
- package/dist/commands/mcp-writers.d.ts +20 -0
- package/dist/commands/mcp-writers.d.ts.map +1 -0
- package/dist/commands/mcp-writers.js +144 -0
- package/dist/commands/mcp-writers.js.map +1 -0
- package/dist/commands/mcp.d.ts +10 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +319 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/update.d.ts +4 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +79 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/constants/cursor-globs.d.ts +17 -0
- package/dist/constants/cursor-globs.d.ts.map +1 -0
- package/dist/constants/cursor-globs.js +62 -0
- package/dist/constants/cursor-globs.js.map +1 -0
- package/dist/constants/ide-install-specs.d.ts +36 -0
- package/dist/constants/ide-install-specs.d.ts.map +1 -0
- package/dist/constants/ide-install-specs.js +870 -0
- package/dist/constants/ide-install-specs.js.map +1 -0
- package/dist/constants/ides.d.ts +105 -0
- package/dist/constants/ides.d.ts.map +1 -0
- package/dist/constants/ides.js +412 -0
- package/dist/constants/ides.js.map +1 -0
- package/dist/constants/skills.d.ts +40 -0
- package/dist/constants/skills.d.ts.map +1 -0
- package/dist/constants/skills.js +78 -0
- package/dist/constants/skills.js.map +1 -0
- package/dist/constants.d.ts +39 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +75 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +122 -0
- package/dist/index.js.map +1 -0
- package/dist/types/flags.d.ts +47 -0
- package/dist/types/flags.d.ts.map +1 -0
- package/dist/types/flags.js +4 -0
- package/dist/types/flags.js.map +1 -0
- package/dist/types/ide-install.d.ts +175 -0
- package/dist/types/ide-install.d.ts.map +1 -0
- package/dist/types/ide-install.js +29 -0
- package/dist/types/ide-install.js.map +1 -0
- package/dist/utils/copy-helpers.d.ts +60 -0
- package/dist/utils/copy-helpers.d.ts.map +1 -0
- package/dist/utils/copy-helpers.js +617 -0
- package/dist/utils/copy-helpers.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/validation.d.ts +29 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +211 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
metadata:
|
|
2
|
+
skill: coding-rules
|
|
3
|
+
domain: test_frameworks
|
|
4
|
+
version: 6.2.0
|
|
5
|
+
updated: '2026-02-05'
|
|
6
|
+
migrated_from: test-frameworks.csv
|
|
7
|
+
patterns_count: 24
|
|
8
|
+
columns:
|
|
9
|
+
- test_framework
|
|
10
|
+
- language
|
|
11
|
+
- detection_file
|
|
12
|
+
- detection_pattern
|
|
13
|
+
- run_command
|
|
14
|
+
- file_pattern
|
|
15
|
+
patterns:
|
|
16
|
+
- id: item_001
|
|
17
|
+
test_framework: Jest
|
|
18
|
+
language: JavaScript/TypeScript
|
|
19
|
+
detection_file: package.json
|
|
20
|
+
detection_pattern: jest in devDependencies
|
|
21
|
+
run_command: npm test
|
|
22
|
+
file_pattern: '*.test.js;*.spec.ts'
|
|
23
|
+
- id: item_002
|
|
24
|
+
test_framework: Vitest
|
|
25
|
+
language: JavaScript/TypeScript
|
|
26
|
+
detection_file: package.json
|
|
27
|
+
detection_pattern: vitest in devDependencies
|
|
28
|
+
run_command: npm test
|
|
29
|
+
file_pattern: '*.test.ts;*.spec.ts'
|
|
30
|
+
- id: item_003
|
|
31
|
+
test_framework: Mocha
|
|
32
|
+
language: JavaScript
|
|
33
|
+
detection_file: package.json
|
|
34
|
+
detection_pattern: mocha in devDependencies
|
|
35
|
+
run_command: npm test
|
|
36
|
+
file_pattern: '*.test.js'
|
|
37
|
+
- id: item_004
|
|
38
|
+
test_framework: Cypress
|
|
39
|
+
language: JavaScript/TypeScript
|
|
40
|
+
detection_file: package.json
|
|
41
|
+
detection_pattern: cypress in devDependencies
|
|
42
|
+
run_command: npx cypress run
|
|
43
|
+
file_pattern: '*.cy.ts;*.cy.js'
|
|
44
|
+
- id: item_005
|
|
45
|
+
test_framework: Playwright
|
|
46
|
+
language: TypeScript
|
|
47
|
+
detection_file: package.json
|
|
48
|
+
detection_pattern: '@playwright/test in devDependencies'
|
|
49
|
+
run_command: npx playwright test
|
|
50
|
+
file_pattern: '*.spec.ts'
|
|
51
|
+
- id: item_006
|
|
52
|
+
test_framework: pytest
|
|
53
|
+
language: Python
|
|
54
|
+
detection_file: requirements.txt
|
|
55
|
+
detection_pattern: pytest
|
|
56
|
+
run_command: pytest
|
|
57
|
+
file_pattern: test_*.py;*_test.py
|
|
58
|
+
- id: item_007
|
|
59
|
+
test_framework: unittest
|
|
60
|
+
language: Python
|
|
61
|
+
detection_file: '*.py'
|
|
62
|
+
detection_pattern: import unittest
|
|
63
|
+
run_command: python -m unittest
|
|
64
|
+
file_pattern: test_*.py
|
|
65
|
+
- id: item_008
|
|
66
|
+
test_framework: nose2
|
|
67
|
+
language: Python
|
|
68
|
+
detection_file: requirements.txt
|
|
69
|
+
detection_pattern: nose2
|
|
70
|
+
run_command: nose2
|
|
71
|
+
file_pattern: test_*.py
|
|
72
|
+
- id: item_009
|
|
73
|
+
test_framework: xUnit
|
|
74
|
+
language: C#
|
|
75
|
+
detection_file: '*.csproj'
|
|
76
|
+
detection_pattern: xunit PackageReference
|
|
77
|
+
run_command: dotnet test
|
|
78
|
+
file_pattern: '*Test.cs;*Tests.cs'
|
|
79
|
+
- id: item_010
|
|
80
|
+
test_framework: NUnit
|
|
81
|
+
language: C#
|
|
82
|
+
detection_file: '*.csproj'
|
|
83
|
+
detection_pattern: NUnit PackageReference
|
|
84
|
+
run_command: dotnet test
|
|
85
|
+
file_pattern: '*Test.cs;*Tests.cs'
|
|
86
|
+
- id: item_011
|
|
87
|
+
test_framework: MSTest
|
|
88
|
+
language: C#
|
|
89
|
+
detection_file: '*.csproj'
|
|
90
|
+
detection_pattern: MSTest.TestFramework PackageReference
|
|
91
|
+
run_command: dotnet test
|
|
92
|
+
file_pattern: '*Test.cs;*Tests.cs'
|
|
93
|
+
- id: item_012
|
|
94
|
+
test_framework: Google Test
|
|
95
|
+
language: C++
|
|
96
|
+
detection_file: CMakeLists.txt
|
|
97
|
+
detection_pattern: find_package(GTest)
|
|
98
|
+
run_command: ctest --output-on-failure
|
|
99
|
+
file_pattern: '*_test.cpp;*_test.cc'
|
|
100
|
+
- id: item_013
|
|
101
|
+
test_framework: Catch2
|
|
102
|
+
language: C++
|
|
103
|
+
detection_file: CMakeLists.txt
|
|
104
|
+
detection_pattern: find_package(Catch2)
|
|
105
|
+
run_command: ctest --output-on-failure
|
|
106
|
+
file_pattern: '*_test.cpp'
|
|
107
|
+
- id: item_014
|
|
108
|
+
test_framework: Boost.Test
|
|
109
|
+
language: C++
|
|
110
|
+
detection_file: CMakeLists.txt
|
|
111
|
+
detection_pattern: Boost::unit_test_framework
|
|
112
|
+
run_command: ctest;./test_runner
|
|
113
|
+
file_pattern: '*_test.cpp'
|
|
114
|
+
- id: item_015
|
|
115
|
+
test_framework: JUnit 5
|
|
116
|
+
language: Java
|
|
117
|
+
detection_file: pom.xml
|
|
118
|
+
detection_pattern: junit-jupiter in dependency
|
|
119
|
+
run_command: mvn test
|
|
120
|
+
file_pattern: '*Test.java;*Tests.java'
|
|
121
|
+
- id: item_016
|
|
122
|
+
test_framework: JUnit 4
|
|
123
|
+
language: Java
|
|
124
|
+
detection_file: pom.xml
|
|
125
|
+
detection_pattern: junit:junit in dependency
|
|
126
|
+
run_command: mvn test
|
|
127
|
+
file_pattern: '*Test.java'
|
|
128
|
+
- id: item_017
|
|
129
|
+
test_framework: TestNG
|
|
130
|
+
language: Java
|
|
131
|
+
detection_file: pom.xml
|
|
132
|
+
detection_pattern: testng in dependency
|
|
133
|
+
run_command: mvn test
|
|
134
|
+
file_pattern: '*Test.java'
|
|
135
|
+
- id: item_018
|
|
136
|
+
test_framework: Spock
|
|
137
|
+
language: Groovy/Java
|
|
138
|
+
detection_file: build.gradle
|
|
139
|
+
detection_pattern: spock-core
|
|
140
|
+
run_command: ./gradlew test
|
|
141
|
+
file_pattern: '*Spec.groovy'
|
|
142
|
+
- id: item_019
|
|
143
|
+
test_framework: Go testing
|
|
144
|
+
language: Go
|
|
145
|
+
detection_file: '*_test.go'
|
|
146
|
+
detection_pattern: import "testing"
|
|
147
|
+
run_command: go test ./...
|
|
148
|
+
file_pattern: '*_test.go'
|
|
149
|
+
- id: item_020
|
|
150
|
+
test_framework: Cargo test
|
|
151
|
+
language: Rust
|
|
152
|
+
detection_file: '*.rs'
|
|
153
|
+
detection_pattern: '#[test]'
|
|
154
|
+
run_command: cargo test
|
|
155
|
+
file_pattern: '*.rs'
|
|
156
|
+
- id: item_021
|
|
157
|
+
test_framework: ExUnit
|
|
158
|
+
language: Elixir
|
|
159
|
+
detection_file: mix.exs
|
|
160
|
+
detection_pattern: ExUnit.start()
|
|
161
|
+
run_command: mix test
|
|
162
|
+
file_pattern: '*_test.exs'
|
|
163
|
+
- id: item_022
|
|
164
|
+
test_framework: RSpec
|
|
165
|
+
language: Ruby
|
|
166
|
+
detection_file: Gemfile
|
|
167
|
+
detection_pattern: gem 'rspec'
|
|
168
|
+
run_command: bundle exec rspec
|
|
169
|
+
file_pattern: '*_spec.rb'
|
|
170
|
+
- id: item_023
|
|
171
|
+
test_framework: PHPUnit
|
|
172
|
+
language: PHP
|
|
173
|
+
detection_file: composer.json
|
|
174
|
+
detection_pattern: phpunit/phpunit
|
|
175
|
+
run_command: ./vendor/bin/phpunit
|
|
176
|
+
file_pattern: '*Test.php'
|
|
177
|
+
- id: item_024
|
|
178
|
+
test_framework: flutter_test
|
|
179
|
+
language: Dart
|
|
180
|
+
detection_file: pubspec.yaml
|
|
181
|
+
detection_pattern: flutter_test in dev_dependencies
|
|
182
|
+
run_command: flutter test
|
|
183
|
+
file_pattern: '*_test.dart'
|
|
@@ -0,0 +1,465 @@
|
|
|
1
|
+
# Database — Advanced Patterns
|
|
2
|
+
|
|
3
|
+
> DOMYH Awesome Code — Tier 3 Reference
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Query Optimization Deep Dive](#query-optimization-deep-dive)
|
|
8
|
+
- [Advanced Indexing](#advanced-indexing)
|
|
9
|
+
- [Partitioning Strategies](#partitioning-strategies)
|
|
10
|
+
- [Replication & High Availability](#replication--high-availability)
|
|
11
|
+
- [Time-Series Data](#time-series-data)
|
|
12
|
+
- [Full-Text Search](#full-text-search)
|
|
13
|
+
- [Database Migrations](#database-migrations)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Query Optimization Deep Dive
|
|
18
|
+
|
|
19
|
+
### EXPLAIN ANALYZE Interpretation
|
|
20
|
+
|
|
21
|
+
```sql
|
|
22
|
+
-- Full analysis with buffers and timing
|
|
23
|
+
EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT)
|
|
24
|
+
SELECT u.id, u.name, COUNT(o.id) as order_count
|
|
25
|
+
FROM users u
|
|
26
|
+
LEFT JOIN orders o ON o.user_id = u.id
|
|
27
|
+
WHERE u.created_at > NOW() - INTERVAL '30 days'
|
|
28
|
+
GROUP BY u.id
|
|
29
|
+
ORDER BY order_count DESC
|
|
30
|
+
LIMIT 100;
|
|
31
|
+
|
|
32
|
+
-- Key metrics to watch:
|
|
33
|
+
-- • "Seq Scan" → Consider adding index
|
|
34
|
+
-- • "Nested Loop" with high rows → Consider HASH JOIN
|
|
35
|
+
-- • "Rows Removed by Filter" high → Index not selective enough
|
|
36
|
+
-- • "Buffers: read" → Disk I/O (cache miss)
|
|
37
|
+
-- • "Buffers: hit" → Memory cache hit
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### CTE Materialization Control
|
|
41
|
+
|
|
42
|
+
```sql
|
|
43
|
+
-- MATERIALIZED: Force materialization (temporary table)
|
|
44
|
+
-- Use when CTE is used multiple times
|
|
45
|
+
WITH active_users AS MATERIALIZED (
|
|
46
|
+
SELECT id, email FROM users WHERE status = 'active'
|
|
47
|
+
)
|
|
48
|
+
SELECT * FROM active_users
|
|
49
|
+
UNION ALL
|
|
50
|
+
SELECT * FROM active_users WHERE email LIKE '%@company.com';
|
|
51
|
+
|
|
52
|
+
-- NOT MATERIALIZED: Inline into main query
|
|
53
|
+
-- Use when CTE is used once, optimizer can push predicates
|
|
54
|
+
WITH recent_orders AS NOT MATERIALIZED (
|
|
55
|
+
SELECT user_id, SUM(total) as total
|
|
56
|
+
FROM orders
|
|
57
|
+
WHERE created_at > NOW() - INTERVAL '7 days'
|
|
58
|
+
GROUP BY user_id
|
|
59
|
+
)
|
|
60
|
+
SELECT u.email, COALESCE(o.total, 0)
|
|
61
|
+
FROM users u
|
|
62
|
+
LEFT JOIN recent_orders o ON o.user_id = u.id
|
|
63
|
+
WHERE u.id = 123; -- Predicate can be pushed down
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Batch Processing Patterns
|
|
67
|
+
|
|
68
|
+
```sql
|
|
69
|
+
-- Process large tables in batches (avoid locks)
|
|
70
|
+
DO $$
|
|
71
|
+
DECLARE
|
|
72
|
+
batch_size INT := 1000;
|
|
73
|
+
affected INT;
|
|
74
|
+
BEGIN
|
|
75
|
+
LOOP
|
|
76
|
+
WITH batch AS (
|
|
77
|
+
SELECT id FROM large_table
|
|
78
|
+
WHERE processed = FALSE
|
|
79
|
+
LIMIT batch_size
|
|
80
|
+
FOR UPDATE SKIP LOCKED
|
|
81
|
+
)
|
|
82
|
+
UPDATE large_table
|
|
83
|
+
SET processed = TRUE,
|
|
84
|
+
processed_at = NOW()
|
|
85
|
+
WHERE id IN (SELECT id FROM batch);
|
|
86
|
+
|
|
87
|
+
GET DIAGNOSTICS affected = ROW_COUNT;
|
|
88
|
+
|
|
89
|
+
COMMIT;
|
|
90
|
+
|
|
91
|
+
IF affected = 0 THEN EXIT; END IF;
|
|
92
|
+
|
|
93
|
+
PERFORM pg_sleep(0.1); -- Brief pause
|
|
94
|
+
END LOOP;
|
|
95
|
+
END $$;
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Advanced Indexing
|
|
101
|
+
|
|
102
|
+
### Index Type Selection
|
|
103
|
+
|
|
104
|
+
| Index Type | Best For | Example |
|
|
105
|
+
| ----------- | ------------------------------ | -------------------- |
|
|
106
|
+
| **B-tree** | Equality, range, ORDER BY | `id = ?`, `date > ?` |
|
|
107
|
+
| **Hash** | Equality only (rarely needed) | `id = ?` |
|
|
108
|
+
| **GIN** | Arrays, JSONB, full-text | `tags @> '{a,b}'` |
|
|
109
|
+
| **GiST** | Geometric, range, full-text | Spatial queries |
|
|
110
|
+
| **BRIN** | Time-series, naturally ordered | Large tables by date |
|
|
111
|
+
| **SP-GiST** | Non-balanced structures | IP ranges |
|
|
112
|
+
|
|
113
|
+
### Composite Index Design
|
|
114
|
+
|
|
115
|
+
```sql
|
|
116
|
+
-- Index column order matters!
|
|
117
|
+
-- Rule: Most selective → Equality → Range → ORDER BY
|
|
118
|
+
|
|
119
|
+
-- Good: user_id (equality) then created_at (range/sort)
|
|
120
|
+
CREATE INDEX idx_orders_optimal
|
|
121
|
+
ON orders(user_id, created_at DESC);
|
|
122
|
+
|
|
123
|
+
-- Works for:
|
|
124
|
+
-- WHERE user_id = ? ORDER BY created_at DESC ✅
|
|
125
|
+
-- WHERE user_id = ? ✅
|
|
126
|
+
-- WHERE user_id = ? AND created_at > ? ✅
|
|
127
|
+
|
|
128
|
+
-- Does NOT work for:
|
|
129
|
+
-- WHERE created_at > ? ❌ (skips first column)
|
|
130
|
+
-- ORDER BY created_at DESC ❌ (skips first column)
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Covering Indexes (INCLUDE)
|
|
134
|
+
|
|
135
|
+
```sql
|
|
136
|
+
-- Include columns to avoid table lookup (Index-Only Scan)
|
|
137
|
+
CREATE INDEX idx_orders_covering
|
|
138
|
+
ON orders(user_id, status)
|
|
139
|
+
INCLUDE (total, created_at);
|
|
140
|
+
|
|
141
|
+
-- This query uses Index-Only Scan (no table access needed)
|
|
142
|
+
SELECT user_id, status, total, created_at
|
|
143
|
+
FROM orders
|
|
144
|
+
WHERE user_id = 123 AND status = 'completed';
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Partial Indexes
|
|
148
|
+
|
|
149
|
+
```sql
|
|
150
|
+
-- Index only specific rows (smaller, faster)
|
|
151
|
+
CREATE INDEX idx_orders_pending
|
|
152
|
+
ON orders(user_id, created_at)
|
|
153
|
+
WHERE status = 'pending';
|
|
154
|
+
|
|
155
|
+
-- Great for:
|
|
156
|
+
-- • Status flags (only active records)
|
|
157
|
+
-- • Recent data (last 30 days)
|
|
158
|
+
-- • Soft deletes (WHERE deleted_at IS NULL)
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Expression Indexes
|
|
162
|
+
|
|
163
|
+
```sql
|
|
164
|
+
-- Index computed values
|
|
165
|
+
CREATE INDEX idx_users_email_lower
|
|
166
|
+
ON users (LOWER(email));
|
|
167
|
+
|
|
168
|
+
-- Query must match expression exactly
|
|
169
|
+
SELECT * FROM users WHERE LOWER(email) = 'alice@example.com';
|
|
170
|
+
|
|
171
|
+
-- JSON path expression
|
|
172
|
+
CREATE INDEX idx_events_type
|
|
173
|
+
ON events ((data->>'type'));
|
|
174
|
+
|
|
175
|
+
SELECT * FROM events WHERE data->>'type' = 'purchase';
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Partitioning Strategies
|
|
181
|
+
|
|
182
|
+
### Range Partitioning (Time-Series)
|
|
183
|
+
|
|
184
|
+
```sql
|
|
185
|
+
-- Create partitioned table
|
|
186
|
+
CREATE TABLE events (
|
|
187
|
+
id BIGINT GENERATED ALWAYS AS IDENTITY,
|
|
188
|
+
event_type TEXT NOT NULL,
|
|
189
|
+
data JSONB,
|
|
190
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
191
|
+
) PARTITION BY RANGE (created_at);
|
|
192
|
+
|
|
193
|
+
-- Create partitions (monthly)
|
|
194
|
+
CREATE TABLE events_2025_01 PARTITION OF events
|
|
195
|
+
FOR VALUES FROM ('2025-01-01') TO ('2025-02-01');
|
|
196
|
+
|
|
197
|
+
CREATE TABLE events_2025_02 PARTITION OF events
|
|
198
|
+
FOR VALUES FROM ('2025-02-01') TO ('2025-03-01');
|
|
199
|
+
|
|
200
|
+
-- Automatic partition creation (pg_partman or scheduled job)
|
|
201
|
+
-- Or use DEFAULT partition for overflow
|
|
202
|
+
CREATE TABLE events_default PARTITION OF events DEFAULT;
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### List Partitioning (Multi-Tenant)
|
|
206
|
+
|
|
207
|
+
```sql
|
|
208
|
+
-- Partition by tenant
|
|
209
|
+
CREATE TABLE orders (
|
|
210
|
+
id BIGINT GENERATED ALWAYS AS IDENTITY,
|
|
211
|
+
tenant_id TEXT NOT NULL,
|
|
212
|
+
total NUMERIC(10,2),
|
|
213
|
+
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
214
|
+
) PARTITION BY LIST (tenant_id);
|
|
215
|
+
|
|
216
|
+
CREATE TABLE orders_tenant_a PARTITION OF orders
|
|
217
|
+
FOR VALUES IN ('tenant_a');
|
|
218
|
+
|
|
219
|
+
CREATE TABLE orders_tenant_b PARTITION OF orders
|
|
220
|
+
FOR VALUES IN ('tenant_b');
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### PostgreSQL 17: MERGE PARTITIONS
|
|
224
|
+
|
|
225
|
+
```sql
|
|
226
|
+
-- PG 17: Merge partitions
|
|
227
|
+
ALTER TABLE events MERGE PARTITIONS (
|
|
228
|
+
events_2024_01, events_2024_02, events_2024_03
|
|
229
|
+
) INTO events_2024_q1;
|
|
230
|
+
|
|
231
|
+
-- PG 17: Split partition
|
|
232
|
+
ALTER TABLE events SPLIT PARTITION events_2024_q1 INTO (
|
|
233
|
+
PARTITION events_2024_01 FOR VALUES FROM ('2024-01-01') TO ('2024-02-01'),
|
|
234
|
+
PARTITION events_2024_02 FOR VALUES FROM ('2024-02-01') TO ('2024-03-01'),
|
|
235
|
+
PARTITION events_2024_03 FOR VALUES FROM ('2024-03-01') TO ('2024-04-01')
|
|
236
|
+
);
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Replication & High Availability
|
|
242
|
+
|
|
243
|
+
### Logical Replication Setup
|
|
244
|
+
|
|
245
|
+
```sql
|
|
246
|
+
-- Publisher (source)
|
|
247
|
+
CREATE PUBLICATION my_publication FOR TABLE users, orders;
|
|
248
|
+
|
|
249
|
+
-- Subscriber (target)
|
|
250
|
+
CREATE SUBSCRIPTION my_subscription
|
|
251
|
+
CONNECTION 'host=source dbname=mydb user=repl password=xxx'
|
|
252
|
+
PUBLICATION my_publication;
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### Read Replica Pattern
|
|
256
|
+
|
|
257
|
+
```typescript
|
|
258
|
+
// Prisma with read replicas
|
|
259
|
+
const prisma = new PrismaClient({
|
|
260
|
+
datasources: {
|
|
261
|
+
db: {
|
|
262
|
+
url: process.env.DATABASE_URL,
|
|
263
|
+
},
|
|
264
|
+
},
|
|
265
|
+
});
|
|
266
|
+
|
|
267
|
+
// Extension for read replicas
|
|
268
|
+
import { PrismaClient as ReplicaClient } from "@prisma/client";
|
|
269
|
+
|
|
270
|
+
const readReplica = new ReplicaClient({
|
|
271
|
+
datasources: {
|
|
272
|
+
db: { url: process.env.DATABASE_REPLICA_URL },
|
|
273
|
+
},
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
// Use primary for writes, replica for reads
|
|
277
|
+
async function getUser(id: string) {
|
|
278
|
+
return readReplica.user.findUnique({ where: { id } });
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
async function updateUser(id: string, data: UpdateUserDto) {
|
|
282
|
+
return prisma.user.update({ where: { id }, data });
|
|
283
|
+
}
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### PgBouncer Configuration
|
|
287
|
+
|
|
288
|
+
```ini
|
|
289
|
+
; /etc/pgbouncer/pgbouncer.ini
|
|
290
|
+
|
|
291
|
+
[databases]
|
|
292
|
+
mydb = host=127.0.0.1 port=5432 dbname=mydb
|
|
293
|
+
|
|
294
|
+
[pgbouncer]
|
|
295
|
+
listen_addr = 0.0.0.0
|
|
296
|
+
listen_port = 6432
|
|
297
|
+
auth_type = scram-sha-256
|
|
298
|
+
auth_file = /etc/pgbouncer/userlist.txt
|
|
299
|
+
|
|
300
|
+
; Pool modes: session, transaction, statement
|
|
301
|
+
pool_mode = transaction
|
|
302
|
+
|
|
303
|
+
; Connection limits
|
|
304
|
+
max_client_conn = 1000
|
|
305
|
+
default_pool_size = 25
|
|
306
|
+
min_pool_size = 5
|
|
307
|
+
reserve_pool_size = 5
|
|
308
|
+
reserve_pool_timeout = 3
|
|
309
|
+
|
|
310
|
+
; Connection lifecycle
|
|
311
|
+
server_lifetime = 3600
|
|
312
|
+
server_idle_timeout = 600
|
|
313
|
+
server_connect_timeout = 5
|
|
314
|
+
|
|
315
|
+
; Logging
|
|
316
|
+
log_connections = 1
|
|
317
|
+
log_disconnections = 1
|
|
318
|
+
log_pooler_errors = 1
|
|
319
|
+
|
|
320
|
+
; Stats
|
|
321
|
+
stats_period = 60
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
## Time-Series Data
|
|
327
|
+
|
|
328
|
+
### TimescaleDB Pattern
|
|
329
|
+
|
|
330
|
+
```sql
|
|
331
|
+
-- Enable TimescaleDB extension
|
|
332
|
+
CREATE EXTENSION IF NOT EXISTS timescaledb;
|
|
333
|
+
|
|
334
|
+
-- Create hypertable
|
|
335
|
+
CREATE TABLE metrics (
|
|
336
|
+
time TIMESTAMPTZ NOT NULL,
|
|
337
|
+
device_id TEXT NOT NULL,
|
|
338
|
+
temperature DOUBLE PRECISION,
|
|
339
|
+
humidity DOUBLE PRECISION
|
|
340
|
+
);
|
|
341
|
+
|
|
342
|
+
-- Convert to hypertable (auto-partitions by time)
|
|
343
|
+
SELECT create_hypertable('metrics', 'time');
|
|
344
|
+
|
|
345
|
+
-- Add compression (for old data)
|
|
346
|
+
ALTER TABLE metrics SET (
|
|
347
|
+
timescaledb.compress,
|
|
348
|
+
timescaledb.compress_segmentby = 'device_id'
|
|
349
|
+
);
|
|
350
|
+
|
|
351
|
+
-- Continuous aggregates (pre-computed rollups)
|
|
352
|
+
CREATE MATERIALIZED VIEW metrics_hourly
|
|
353
|
+
WITH (timescaledb.continuous) AS
|
|
354
|
+
SELECT
|
|
355
|
+
time_bucket('1 hour', time) AS bucket,
|
|
356
|
+
device_id,
|
|
357
|
+
AVG(temperature) AS avg_temp,
|
|
358
|
+
MAX(temperature) AS max_temp,
|
|
359
|
+
MIN(temperature) AS min_temp
|
|
360
|
+
FROM metrics
|
|
361
|
+
GROUP BY bucket, device_id;
|
|
362
|
+
|
|
363
|
+
-- Refresh policy
|
|
364
|
+
SELECT add_continuous_aggregate_policy('metrics_hourly',
|
|
365
|
+
start_offset => INTERVAL '1 week',
|
|
366
|
+
end_offset => INTERVAL '1 hour',
|
|
367
|
+
schedule_interval => INTERVAL '1 hour');
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
---
|
|
371
|
+
|
|
372
|
+
## Full-Text Search
|
|
373
|
+
|
|
374
|
+
### PostgreSQL Full-Text Search
|
|
375
|
+
|
|
376
|
+
```sql
|
|
377
|
+
-- Create tsvector column
|
|
378
|
+
ALTER TABLE products ADD COLUMN search_vector TSVECTOR;
|
|
379
|
+
|
|
380
|
+
-- Populate with weighted search content
|
|
381
|
+
UPDATE products SET search_vector =
|
|
382
|
+
setweight(to_tsvector('english', COALESCE(name, '')), 'A') ||
|
|
383
|
+
setweight(to_tsvector('english', COALESCE(description, '')), 'B') ||
|
|
384
|
+
setweight(to_tsvector('english', COALESCE(tags::TEXT, '')), 'C');
|
|
385
|
+
|
|
386
|
+
-- Create GIN index
|
|
387
|
+
CREATE INDEX idx_products_search ON products USING GIN(search_vector);
|
|
388
|
+
|
|
389
|
+
-- Trigger to maintain
|
|
390
|
+
CREATE OR REPLACE FUNCTION products_search_trigger() RETURNS TRIGGER AS $$
|
|
391
|
+
BEGIN
|
|
392
|
+
NEW.search_vector :=
|
|
393
|
+
setweight(to_tsvector('english', COALESCE(NEW.name, '')), 'A') ||
|
|
394
|
+
setweight(to_tsvector('english', COALESCE(NEW.description, '')), 'B');
|
|
395
|
+
RETURN NEW;
|
|
396
|
+
END $$ LANGUAGE plpgsql;
|
|
397
|
+
|
|
398
|
+
CREATE TRIGGER products_search_update
|
|
399
|
+
BEFORE INSERT OR UPDATE ON products
|
|
400
|
+
FOR EACH ROW EXECUTE FUNCTION products_search_trigger();
|
|
401
|
+
|
|
402
|
+
-- Search query with ranking
|
|
403
|
+
SELECT id, name, ts_rank(search_vector, query) AS rank
|
|
404
|
+
FROM products,
|
|
405
|
+
plainto_tsquery('english', 'gaming laptop') AS query
|
|
406
|
+
WHERE search_vector @@ query
|
|
407
|
+
ORDER BY rank DESC
|
|
408
|
+
LIMIT 20;
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
---
|
|
412
|
+
|
|
413
|
+
## Database Migrations
|
|
414
|
+
|
|
415
|
+
### Migration Best Practices
|
|
416
|
+
|
|
417
|
+
```sql
|
|
418
|
+
-- ✅ Safe migration patterns
|
|
419
|
+
|
|
420
|
+
-- 1. Add column (non-blocking)
|
|
421
|
+
ALTER TABLE users ADD COLUMN phone TEXT;
|
|
422
|
+
|
|
423
|
+
-- 2. Add NOT NULL with default (PG 11+, instant)
|
|
424
|
+
ALTER TABLE users ADD COLUMN status TEXT NOT NULL DEFAULT 'active';
|
|
425
|
+
|
|
426
|
+
-- 3. Add index concurrently (non-blocking)
|
|
427
|
+
CREATE INDEX CONCURRENTLY idx_users_phone ON users(phone);
|
|
428
|
+
|
|
429
|
+
-- ⚠️ Careful migration patterns
|
|
430
|
+
|
|
431
|
+
-- 4. Add NOT NULL to existing column (PG 18+ with NOT VALID)
|
|
432
|
+
ALTER TABLE users ADD CONSTRAINT users_phone_not_null
|
|
433
|
+
CHECK (phone IS NOT NULL) NOT VALID;
|
|
434
|
+
-- Later, validate without exclusive lock:
|
|
435
|
+
ALTER TABLE users VALIDATE CONSTRAINT users_phone_not_null;
|
|
436
|
+
|
|
437
|
+
-- 5. Rename column (requires code change coordination)
|
|
438
|
+
-- Use alias approach:
|
|
439
|
+
ALTER TABLE users RENAME COLUMN old_name TO new_name;
|
|
440
|
+
-- Update application in parallel
|
|
441
|
+
|
|
442
|
+
-- ❌ Dangerous patterns (avoid in production)
|
|
443
|
+
|
|
444
|
+
-- Lock entire table (blocks all operations)
|
|
445
|
+
ALTER TABLE users ALTER COLUMN status TYPE VARCHAR(100);
|
|
446
|
+
|
|
447
|
+
-- Rewrite entire table
|
|
448
|
+
ALTER TABLE orders SET (autovacuum_enabled = false);
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
### Zero-Downtime Migration Strategy
|
|
452
|
+
|
|
453
|
+
```
|
|
454
|
+
1. Deploy new code that reads BOTH old and new columns
|
|
455
|
+
2. Run migration to add new column
|
|
456
|
+
3. Backfill new column from old column
|
|
457
|
+
4. Deploy code that writes to BOTH columns
|
|
458
|
+
5. Verify data consistency
|
|
459
|
+
6. Deploy code that reads ONLY from new column
|
|
460
|
+
7. Remove old column (optional, can defer)
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
---
|
|
464
|
+
|
|
465
|
+
_DOMYH Awesome Code — Database Advanced Patterns — 2025-2026_
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
name: database
|
|
2
|
+
version: "6.2.0"
|
|
3
|
+
display: Database Patterns
|
|
4
|
+
category: infrastructure
|
|
5
|
+
tier: 1
|
|
6
|
+
priority: 1
|
|
7
|
+
|
|
8
|
+
desc: "SQL/NoSQL database patterns - PostgreSQL 17/18, MySQL, MongoDB, Redis. Covers ORMs (Prisma, Drizzle, TypeORM), query optimization, migrations."
|
|
9
|
+
|
|
10
|
+
related_skills:
|
|
11
|
+
- typescript
|
|
12
|
+
- python
|
|
13
|
+
- go
|
|
14
|
+
- docker
|
|
15
|
+
|
|
16
|
+
caps:
|
|
17
|
+
- PostgreSQL 17/18
|
|
18
|
+
- MongoDB patterns
|
|
19
|
+
- Redis caching
|
|
20
|
+
- ORM comparison
|
|
21
|
+
- Query optimization
|
|
22
|
+
- Connection pooling
|