agent-skill-kit 3.9.135
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/global.d.ts +80 -0
- package/.agent/rules/GEMINI.md +210 -0
- package/.agent/rules/autopilot.md +287 -0
- package/.agent/rules/code-rules.md +227 -0
- package/.agent/scripts/audit_workflows.ts +23 -0
- package/.agent/scripts/auto_preview.ts +170 -0
- package/.agent/scripts/checklist.ts +180 -0
- package/.agent/scripts/compile-agents.ts +237 -0
- package/.agent/scripts/fix_skills.ts +49 -0
- package/.agent/scripts/session_manager.ts +222 -0
- package/.agent/scripts/skill-audit.ts +255 -0
- package/.agent/scripts/sync_workflows.ts +54 -0
- package/.agent/scripts/utils/colors.ts +58 -0
- package/.agent/scripts/utils/process-manager.ts +131 -0
- package/.agent/scripts/utils/reporter.ts +192 -0
- package/.agent/scripts/utils/runner.ts +128 -0
- package/.agent/scripts/verify_all.ts +243 -0
- package/.agent/scripts/version-sync.ts +256 -0
- package/.agent/skills/SKILL_INDEX.md +129 -0
- package/.agent/skills/agent-browser/AGENTS.md +728 -0
- package/.agent/skills/agent-browser/SKILL.md +193 -0
- package/.agent/skills/agent-browser/rules/_sections.md +15 -0
- package/.agent/skills/agent-browser/rules/_template.md +32 -0
- package/.agent/skills/agent-browser/rules/engineering-spec.md +528 -0
- package/.agent/skills/agent-browser/scripts/browser_cli.ts +52 -0
- package/.agent/skills/agent-browser/scripts/session_manager.ts +166 -0
- package/.agent/skills/ai-artist/AGENTS.md +1082 -0
- package/.agent/skills/ai-artist/SKILL.md +186 -0
- package/.agent/skills/ai-artist/rules/_sections.md +30 -0
- package/.agent/skills/ai-artist/rules/_template.md +32 -0
- package/.agent/skills/ai-artist/rules/domain-code.md +118 -0
- package/.agent/skills/ai-artist/rules/domain-marketing.md +105 -0
- package/.agent/skills/ai-artist/rules/engineering-spec.md +519 -0
- package/.agent/skills/ai-artist/rules/image-prompts.md +195 -0
- package/.agent/skills/ai-artist/rules/model-syntax.md +115 -0
- package/.agent/skills/ai-artist/scripts/prompt_compiler.ts +72 -0
- package/.agent/skills/ai-artist/templates/image-core.txt +1 -0
- package/.agent/skills/ai-artist/templates/llm-core.txt +6 -0
- package/.agent/skills/api-architect/AGENTS.md +1896 -0
- package/.agent/skills/api-architect/SKILL.md +173 -0
- package/.agent/skills/api-architect/rules/_sections.md +35 -0
- package/.agent/skills/api-architect/rules/_template.md +32 -0
- package/.agent/skills/api-architect/rules/api-style.md +115 -0
- package/.agent/skills/api-architect/rules/auth.md +134 -0
- package/.agent/skills/api-architect/rules/documentation.md +131 -0
- package/.agent/skills/api-architect/rules/engineering-spec.md +505 -0
- package/.agent/skills/api-architect/rules/graphql.md +154 -0
- package/.agent/skills/api-architect/rules/rate-limiting.md +76 -0
- package/.agent/skills/api-architect/rules/response.md +138 -0
- package/.agent/skills/api-architect/rules/rest.md +113 -0
- package/.agent/skills/api-architect/rules/security-testing.md +146 -0
- package/.agent/skills/api-architect/rules/trpc.md +129 -0
- package/.agent/skills/api-architect/rules/versioning.md +100 -0
- package/.agent/skills/api-architect/scripts/api_validator.ts +413 -0
- package/.agent/skills/auth-patterns/AGENTS.md +1830 -0
- package/.agent/skills/auth-patterns/SKILL.md +163 -0
- package/.agent/skills/auth-patterns/rules/_sections.md +30 -0
- package/.agent/skills/auth-patterns/rules/_template.md +32 -0
- package/.agent/skills/auth-patterns/rules/engineering-spec.md +515 -0
- package/.agent/skills/auth-patterns/rules/jwt-deep.md +196 -0
- package/.agent/skills/auth-patterns/rules/mfa.md +174 -0
- package/.agent/skills/auth-patterns/rules/oauth2.md +134 -0
- package/.agent/skills/auth-patterns/rules/passkey.md +243 -0
- package/.agent/skills/auth-patterns/rules/rbac-abac.md +206 -0
- package/.agent/skills/auth-patterns/rules/session.md +183 -0
- package/.agent/skills/auth-patterns/scripts/auth_validator.ts +121 -0
- package/.agent/skills/chrome-devtools/AGENTS.md +952 -0
- package/.agent/skills/chrome-devtools/SKILL.md +160 -0
- package/.agent/skills/chrome-devtools/rules/_sections.md +25 -0
- package/.agent/skills/chrome-devtools/rules/_template.md +32 -0
- package/.agent/skills/chrome-devtools/rules/aria-snapshot.md +95 -0
- package/.agent/skills/chrome-devtools/rules/engineering-spec.md +510 -0
- package/.agent/skills/chrome-devtools/rules/scripts-guide.md +174 -0
- package/.agent/skills/chrome-devtools/scripts/aria-snapshot.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/click.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/console.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/core_cli.ts +79 -0
- package/.agent/skills/chrome-devtools/scripts/evaluate.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/fill.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/navigate.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/network.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/performance.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/screenshot.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/select-ref.ts +3 -0
- package/.agent/skills/cicd-pipeline/AGENTS.md +809 -0
- package/.agent/skills/cicd-pipeline/SKILL.md +164 -0
- package/.agent/skills/cicd-pipeline/rules/_sections.md +15 -0
- package/.agent/skills/cicd-pipeline/rules/_template.md +32 -0
- package/.agent/skills/cicd-pipeline/rules/engineering-spec.md +477 -0
- package/.agent/skills/cicd-pipeline/scripts/flag-manager.ts +253 -0
- package/.agent/skills/cicd-pipeline/scripts/pipeline_validator.ts +133 -0
- package/.agent/skills/code-constitution/AGENTS.md +597 -0
- package/.agent/skills/code-constitution/CHANGELOG.md +216 -0
- package/.agent/skills/code-constitution/SKILL.md +191 -0
- package/.agent/skills/code-constitution/VERSION +3 -0
- package/.agent/skills/code-constitution/examples/violation-backend-mutation/after.tsx +59 -0
- package/.agent/skills/code-constitution/examples/violation-backend-mutation/before.tsx +42 -0
- package/.agent/skills/code-constitution/examples/violation-backend-mutation/explanation.md +91 -0
- package/.agent/skills/code-constitution/examples/violation-chart-injection/after.tsx +99 -0
- package/.agent/skills/code-constitution/examples/violation-chart-injection/before.tsx +57 -0
- package/.agent/skills/code-constitution/examples/violation-chart-injection/explanation.md +120 -0
- package/.agent/skills/code-constitution/knowledge/lessons-learned.yaml +3 -0
- package/.agent/skills/code-constitution/metadata/precedence.yaml +117 -0
- package/.agent/skills/code-constitution/metadata/scope-map.yaml +156 -0
- package/.agent/skills/code-constitution/proposals/v1.1-change-proposal-template.md +201 -0
- package/.agent/skills/code-constitution/resources/AUTHORITY_MODEL.md +115 -0
- package/.agent/skills/code-constitution/resources/ENFORCEMENT_GUIDE.md +246 -0
- package/.agent/skills/code-constitution/resources/LOAD_ORDER.md +86 -0
- package/.agent/skills/code-constitution/rules/_sections.md +15 -0
- package/.agent/skills/code-constitution/rules/_template.md +32 -0
- package/.agent/skills/code-constitution/rules/constitution/master-constitution.md +210 -0
- package/.agent/skills/code-constitution/rules/doctrines/architecture/architecture-doctrine.md +188 -0
- package/.agent/skills/code-constitution/rules/doctrines/backend/backend-data-engine-doctrine.md +218 -0
- package/.agent/skills/code-constitution/rules/doctrines/commercial/commercial-guardrails-doctrine.md +196 -0
- package/.agent/skills/code-constitution/rules/doctrines/data/data-integrity-doctrine.md +202 -0
- package/.agent/skills/code-constitution/rules/doctrines/frontend/frontend-mobile-doctrine.md +169 -0
- package/.agent/skills/code-constitution/rules/doctrines/frontend/interaction-patterns-doctrine.md +176 -0
- package/.agent/skills/code-constitution/rules/doctrines/learning/learning-engine-doctrine.md +192 -0
- package/.agent/skills/code-constitution/rules/doctrines/performance/performance-doctrine.md +180 -0
- package/.agent/skills/code-constitution/rules/doctrines/review/code-review-doctrine.md +174 -0
- package/.agent/skills/code-constitution/rules/enforcement/agents/agent-enforcement-protocol.md +218 -0
- package/.agent/skills/code-constitution/rules/enforcement/agents/agent-system-prompt.md +196 -0
- package/.agent/skills/code-constitution/rules/enforcement/checklists/backend-api-review-checklist.md +131 -0
- package/.agent/skills/code-constitution/rules/enforcement/checklists/chart-component-review-checklist.md +147 -0
- package/.agent/skills/code-constitution/rules/enforcement/checklists/frontend-review-checklist.md +194 -0
- package/.agent/skills/code-constitution/rules/enforcement/playbooks/doctrine-violation-playbook.md +236 -0
- package/.agent/skills/code-constitution/rules/engineering-spec.md +561 -0
- package/.agent/skills/code-constitution/scripts/audit_pr.ts +219 -0
- package/.agent/skills/code-constitution/scripts/check_boundaries.ts +134 -0
- package/.agent/skills/code-constitution/scripts/learn.ts +202 -0
- package/.agent/skills/code-constitution/scripts/validate_doctrine.ts +287 -0
- package/.agent/skills/code-craft/AGENTS.md +803 -0
- package/.agent/skills/code-craft/SKILL.md +170 -0
- package/.agent/skills/code-craft/rules/_sections.md +20 -0
- package/.agent/skills/code-craft/rules/_template.md +32 -0
- package/.agent/skills/code-craft/rules/engineering-spec.md +447 -0
- package/.agent/skills/code-craft/rules/verification-scripts.md +83 -0
- package/.agent/skills/code-craft/scripts/code_quality_checker.ts +193 -0
- package/.agent/skills/code-review/AGENTS.md +1664 -0
- package/.agent/skills/code-review/SKILL.md +152 -0
- package/.agent/skills/code-review/rules/_sections.md +15 -0
- package/.agent/skills/code-review/rules/_template.md +32 -0
- package/.agent/skills/code-review/rules/engineering-spec.md +466 -0
- package/.agent/skills/code-review/scripts/lint_runner.ts +213 -0
- package/.agent/skills/code-review/scripts/type_coverage.ts +118 -0
- package/.agent/skills/context-engineering/AGENTS.md +499 -0
- package/.agent/skills/context-engineering/SKILL.md +147 -0
- package/.agent/skills/context-engineering/rules/_sections.md +15 -0
- package/.agent/skills/context-engineering/rules/_template.md +32 -0
- package/.agent/skills/context-engineering/rules/engineering-spec.md +463 -0
- package/.agent/skills/context-engineering/scripts/context_analyzer.ts +127 -0
- package/.agent/skills/copywriting/AGENTS.md +501 -0
- package/.agent/skills/copywriting/SKILL.md +188 -0
- package/.agent/skills/copywriting/rules/_sections.md +15 -0
- package/.agent/skills/copywriting/rules/_template.md +32 -0
- package/.agent/skills/copywriting/rules/engineering-spec.md +465 -0
- package/.agent/skills/copywriting/scripts/copy_validator.ts +185 -0
- package/.agent/skills/data-modeler/AGENTS.md +814 -0
- package/.agent/skills/data-modeler/SKILL.md +195 -0
- package/.agent/skills/data-modeler/rules/_sections.md +15 -0
- package/.agent/skills/data-modeler/rules/_template.md +32 -0
- package/.agent/skills/data-modeler/rules/database-selection.md +124 -0
- package/.agent/skills/data-modeler/rules/engineering-spec.md +479 -0
- package/.agent/skills/data-modeler/rules/indexing.md +166 -0
- package/.agent/skills/data-modeler/rules/migrations.md +176 -0
- package/.agent/skills/data-modeler/rules/optimization.md +161 -0
- package/.agent/skills/data-modeler/rules/orm-selection.md +155 -0
- package/.agent/skills/data-modeler/rules/schema-design.md +162 -0
- package/.agent/skills/data-modeler/scripts/schema_validator.ts +357 -0
- package/.agent/skills/debug-pro/AGENTS.md +798 -0
- package/.agent/skills/debug-pro/SKILL.md +193 -0
- package/.agent/skills/debug-pro/defense-in-depth/SKILL.md +148 -0
- package/.agent/skills/debug-pro/root-cause-tracing/SKILL.md +196 -0
- package/.agent/skills/debug-pro/root-cause-tracing/find-polluter.sh +63 -0
- package/.agent/skills/debug-pro/rules/_sections.md +15 -0
- package/.agent/skills/debug-pro/rules/_template.md +32 -0
- package/.agent/skills/debug-pro/rules/engineering-spec.md +491 -0
- package/.agent/skills/debug-pro/scripts/debug_verifier.ts +148 -0
- package/.agent/skills/debug-pro/verification-before-completion/SKILL.md +160 -0
- package/.agent/skills/design-system/AGENTS.md +4216 -0
- package/.agent/skills/design-system/SKILL.md +186 -0
- package/.agent/skills/design-system/rules/_sections.md +65 -0
- package/.agent/skills/design-system/rules/_template.md +32 -0
- package/.agent/skills/design-system/rules/animation-guide.md +355 -0
- package/.agent/skills/design-system/rules/color-system.md +335 -0
- package/.agent/skills/design-system/rules/color-systems.md +133 -0
- package/.agent/skills/design-system/rules/decision-trees.md +442 -0
- package/.agent/skills/design-system/rules/design-extraction.md +152 -0
- package/.agent/skills/design-system/rules/engineering-spec.md +484 -0
- package/.agent/skills/design-system/rules/motion-design.md +161 -0
- package/.agent/skills/design-system/rules/motion-graphics.md +330 -0
- package/.agent/skills/design-system/rules/spatial-composition.md +184 -0
- package/.agent/skills/design-system/rules/typography-system.md +369 -0
- package/.agent/skills/design-system/rules/typography.md +124 -0
- package/.agent/skills/design-system/rules/ux-psychology.md +565 -0
- package/.agent/skills/design-system/rules/visual-effects.md +407 -0
- package/.agent/skills/design-system/scripts/accessibility_checker.ts +292 -0
- package/.agent/skills/design-system/scripts/ux_audit.ts +356 -0
- package/.agent/skills/doc-templates/AGENTS.md +820 -0
- package/.agent/skills/doc-templates/SKILL.md +260 -0
- package/.agent/skills/doc-templates/rules/_sections.md +20 -0
- package/.agent/skills/doc-templates/rules/_template.md +32 -0
- package/.agent/skills/doc-templates/rules/doc.md +355 -0
- package/.agent/skills/doc-templates/rules/engineering-spec.md +422 -0
- package/.agent/skills/doc-templates/scripts/editor-server.ts +162 -0
- package/.agent/skills/doc-templates/scripts/inject_otel.ts +22 -0
- package/.agent/skills/doc-templates/scripts/kanban-server.ts +171 -0
- package/.agent/skills/doc-templates/scripts/markdown-server.ts +185 -0
- package/.agent/skills/e2e-automation/AGENTS.md +882 -0
- package/.agent/skills/e2e-automation/SKILL.md +175 -0
- package/.agent/skills/e2e-automation/rules/_sections.md +20 -0
- package/.agent/skills/e2e-automation/rules/_template.md +32 -0
- package/.agent/skills/e2e-automation/rules/aria-snapshot.md +185 -0
- package/.agent/skills/e2e-automation/rules/engineering-spec.md +501 -0
- package/.agent/skills/e2e-automation/scripts/playwright_runner.ts +208 -0
- package/.agent/skills/execution-reporter/AGENTS.md +419 -0
- package/.agent/skills/execution-reporter/SKILL.md +152 -0
- package/.agent/skills/execution-reporter/rules/_sections.md +15 -0
- package/.agent/skills/execution-reporter/rules/_template.md +32 -0
- package/.agent/skills/execution-reporter/rules/engineering-spec.md +389 -0
- package/.agent/skills/game-development/2d-games/SKILL.md +140 -0
- package/.agent/skills/game-development/3d-games/SKILL.md +156 -0
- package/.agent/skills/game-development/AGENTS.md +783 -0
- package/.agent/skills/game-development/SKILL.md +178 -0
- package/.agent/skills/game-development/game-art/SKILL.md +207 -0
- package/.agent/skills/game-development/game-audio/SKILL.md +211 -0
- package/.agent/skills/game-development/game-design/SKILL.md +151 -0
- package/.agent/skills/game-development/mobile-games/SKILL.md +130 -0
- package/.agent/skills/game-development/multiplayer/SKILL.md +154 -0
- package/.agent/skills/game-development/pc-games/SKILL.md +167 -0
- package/.agent/skills/game-development/rules/_sections.md +15 -0
- package/.agent/skills/game-development/rules/_template.md +32 -0
- package/.agent/skills/game-development/rules/engineering-spec.md +480 -0
- package/.agent/skills/game-development/vr-ar/SKILL.md +144 -0
- package/.agent/skills/game-development/web-games/SKILL.md +173 -0
- package/.agent/skills/git-workflow/AGENTS.md +554 -0
- package/.agent/skills/git-workflow/SKILL.md +181 -0
- package/.agent/skills/git-workflow/rules/_sections.md +15 -0
- package/.agent/skills/git-workflow/rules/_template.md +32 -0
- package/.agent/skills/git-workflow/rules/engineering-spec.md +518 -0
- package/.agent/skills/gitops/AGENTS.md +921 -0
- package/.agent/skills/gitops/SKILL.md +163 -0
- package/.agent/skills/gitops/rules/_sections.md +25 -0
- package/.agent/skills/gitops/rules/_template.md +32 -0
- package/.agent/skills/gitops/rules/argocd-setup.md +148 -0
- package/.agent/skills/gitops/rules/engineering-spec.md +450 -0
- package/.agent/skills/gitops/rules/sync-policies.md +145 -0
- package/.agent/skills/google-adk-python/AGENTS.md +1054 -0
- package/.agent/skills/google-adk-python/SKILL.md +168 -0
- package/.agent/skills/google-adk-python/rules/_sections.md +25 -0
- package/.agent/skills/google-adk-python/rules/_template.md +32 -0
- package/.agent/skills/google-adk-python/rules/deployment.md +138 -0
- package/.agent/skills/google-adk-python/rules/engineering-spec.md +451 -0
- package/.agent/skills/google-adk-python/rules/multi-agent.md +146 -0
- package/.agent/skills/google-adk-python/rules/tools.md +131 -0
- package/.agent/skills/idea-storm/AGENTS.md +995 -0
- package/.agent/skills/idea-storm/SKILL.md +160 -0
- package/.agent/skills/idea-storm/rules/_sections.md +25 -0
- package/.agent/skills/idea-storm/rules/_template.md +32 -0
- package/.agent/skills/idea-storm/rules/architecture-debate.md +122 -0
- package/.agent/skills/idea-storm/rules/dynamic-questioning.md +374 -0
- package/.agent/skills/idea-storm/rules/engineering-spec.md +466 -0
- package/.agent/skills/knowledge-compiler/SKILL.md +320 -0
- package/.agent/skills/knowledge-graph/AGENTS.md +762 -0
- package/.agent/skills/knowledge-graph/SKILL.md +157 -0
- package/.agent/skills/knowledge-graph/rules/_sections.md +15 -0
- package/.agent/skills/knowledge-graph/rules/_template.md +32 -0
- package/.agent/skills/knowledge-graph/rules/engineering-spec.md +439 -0
- package/.agent/skills/knowledge-linter/SKILL.md +217 -0
- package/.agent/skills/lifecycle-orchestrator/AGENTS.md +989 -0
- package/.agent/skills/lifecycle-orchestrator/SKILL.md +169 -0
- package/.agent/skills/lifecycle-orchestrator/rules/_sections.md +15 -0
- package/.agent/skills/lifecycle-orchestrator/rules/_template.md +32 -0
- package/.agent/skills/lifecycle-orchestrator/rules/engineering-spec.md +525 -0
- package/.agent/skills/lifecycle-orchestrator/scripts/state_manager.ts +189 -0
- package/.agent/skills/mcp-builder/AGENTS.md +1653 -0
- package/.agent/skills/mcp-builder/SKILL.md +166 -0
- package/.agent/skills/mcp-builder/rules/_sections.md +40 -0
- package/.agent/skills/mcp-builder/rules/_template.md +32 -0
- package/.agent/skills/mcp-builder/rules/best-practices.md +157 -0
- package/.agent/skills/mcp-builder/rules/design-principles.md +105 -0
- package/.agent/skills/mcp-builder/rules/engineering-spec.md +473 -0
- package/.agent/skills/mcp-builder/rules/evaluation.md +103 -0
- package/.agent/skills/mcp-builder/rules/python-implementation.md +249 -0
- package/.agent/skills/mcp-builder/rules/quickstart.md +111 -0
- package/.agent/skills/mcp-builder/rules/typescript-implementation.md +280 -0
- package/.agent/skills/mcp-management/AGENTS.md +837 -0
- package/.agent/skills/mcp-management/SKILL.md +164 -0
- package/.agent/skills/mcp-management/rules/_sections.md +25 -0
- package/.agent/skills/mcp-management/rules/_template.md +32 -0
- package/.agent/skills/mcp-management/rules/cli-usage.md +146 -0
- package/.agent/skills/mcp-management/rules/engineering-spec.md +501 -0
- package/.agent/skills/mcp-management/rules/protocol.md +159 -0
- package/.agent/skills/media-processing/AGENTS.md +479 -0
- package/.agent/skills/media-processing/SKILL.md +176 -0
- package/.agent/skills/media-processing/rules/_sections.md +15 -0
- package/.agent/skills/media-processing/rules/_template.md +32 -0
- package/.agent/skills/media-processing/rules/engineering-spec.md +452 -0
- package/.agent/skills/media-processing/scripts/convert-video.ts +155 -0
- package/.agent/skills/media-processing/scripts/optimize-image.ts +127 -0
- package/.agent/skills/mobile-design/AGENTS.md +6531 -0
- package/.agent/skills/mobile-design/SKILL.md +165 -0
- package/.agent/skills/mobile-design/rules/_sections.md +45 -0
- package/.agent/skills/mobile-design/rules/_template.md +32 -0
- package/.agent/skills/mobile-design/rules/decision-trees.md +540 -0
- package/.agent/skills/mobile-design/rules/engineering-spec.md +467 -0
- package/.agent/skills/mobile-design/rules/mobile-backend.md +516 -0
- package/.agent/skills/mobile-design/rules/mobile-color-system.md +436 -0
- package/.agent/skills/mobile-design/rules/mobile-debugging.md +146 -0
- package/.agent/skills/mobile-design/rules/mobile-design-thinking.md +381 -0
- package/.agent/skills/mobile-design/rules/mobile-navigation.md +474 -0
- package/.agent/skills/mobile-design/rules/mobile-performance.md +783 -0
- package/.agent/skills/mobile-design/rules/mobile-testing.md +380 -0
- package/.agent/skills/mobile-design/rules/mobile-typography.md +449 -0
- package/.agent/skills/mobile-design/rules/platform-android.md +682 -0
- package/.agent/skills/mobile-design/rules/platform-ios.md +577 -0
- package/.agent/skills/mobile-design/rules/touch-psychology.md +553 -0
- package/.agent/skills/mobile-design/scripts/mobile_audit.ts +309 -0
- package/.agent/skills/mobile-developer/AGENTS.md +904 -0
- package/.agent/skills/mobile-developer/SKILL.md +194 -0
- package/.agent/skills/mobile-developer/rules/_sections.md +75 -0
- package/.agent/skills/mobile-developer/rules/_template.md +32 -0
- package/.agent/skills/mobile-developer/rules/anti-patterns.md +70 -0
- package/.agent/skills/mobile-developer/rules/app-store-optimization.md +319 -0
- package/.agent/skills/mobile-developer/rules/decision-trees.md +545 -0
- package/.agent/skills/mobile-developer/rules/deep-linking.md +441 -0
- package/.agent/skills/mobile-developer/rules/engineering-spec.md +477 -0
- package/.agent/skills/mobile-developer/rules/flutter.md +475 -0
- package/.agent/skills/mobile-developer/rules/mobile-backend.md +516 -0
- package/.agent/skills/mobile-developer/rules/mobile-color-system.md +444 -0
- package/.agent/skills/mobile-developer/rules/mobile-debugging.md +428 -0
- package/.agent/skills/mobile-developer/rules/mobile-design-thinking.md +367 -0
- package/.agent/skills/mobile-developer/rules/mobile-navigation.md +483 -0
- package/.agent/skills/mobile-developer/rules/mobile-performance.md +778 -0
- package/.agent/skills/mobile-developer/rules/mobile-testing.md +382 -0
- package/.agent/skills/mobile-developer/rules/mobile-typography.md +457 -0
- package/.agent/skills/mobile-developer/rules/native.md +572 -0
- package/.agent/skills/mobile-developer/rules/platform-android.md +676 -0
- package/.agent/skills/mobile-developer/rules/platform-ios.md +571 -0
- package/.agent/skills/mobile-developer/rules/push-notifications.md +599 -0
- package/.agent/skills/mobile-developer/rules/react-native.md +422 -0
- package/.agent/skills/mobile-developer/rules/touch-psychology.md +547 -0
- package/.agent/skills/mobile-developer/scripts/mobile_audit.ts +701 -0
- package/.agent/skills/nextjs-pro/AGENTS.md +3932 -0
- package/.agent/skills/nextjs-pro/SKILL.md +171 -0
- package/.agent/skills/nextjs-pro/rules/_sections.md +50 -0
- package/.agent/skills/nextjs-pro/rules/_template.md +32 -0
- package/.agent/skills/nextjs-pro/rules/advanced-event-handler-refs.md +59 -0
- package/.agent/skills/nextjs-pro/rules/advanced-init-once.md +46 -0
- package/.agent/skills/nextjs-pro/rules/advanced-use-latest.md +43 -0
- package/.agent/skills/nextjs-pro/rules/async-api-routes.md +42 -0
- package/.agent/skills/nextjs-pro/rules/async-defer-await.md +84 -0
- package/.agent/skills/nextjs-pro/rules/async-dependencies.md +55 -0
- package/.agent/skills/nextjs-pro/rules/async-parallel.md +32 -0
- package/.agent/skills/nextjs-pro/rules/async-suspense-boundaries.md +103 -0
- package/.agent/skills/nextjs-pro/rules/bundle-barrel-imports.md +63 -0
- package/.agent/skills/nextjs-pro/rules/bundle-conditional.md +35 -0
- package/.agent/skills/nextjs-pro/rules/bundle-defer-third-party.md +53 -0
- package/.agent/skills/nextjs-pro/rules/bundle-dynamic-imports.md +39 -0
- package/.agent/skills/nextjs-pro/rules/bundle-preload.md +54 -0
- package/.agent/skills/nextjs-pro/rules/client-event-listeners.md +78 -0
- package/.agent/skills/nextjs-pro/rules/client-localstorage-schema.md +75 -0
- package/.agent/skills/nextjs-pro/rules/client-passive-event-listeners.md +52 -0
- package/.agent/skills/nextjs-pro/rules/client-swr-dedup.md +60 -0
- package/.agent/skills/nextjs-pro/rules/engineering-spec.md +440 -0
- package/.agent/skills/nextjs-pro/rules/js-batch-dom-css.md +111 -0
- package/.agent/skills/nextjs-pro/rules/js-cache-function-results.md +84 -0
- package/.agent/skills/nextjs-pro/rules/js-cache-property-access.md +32 -0
- package/.agent/skills/nextjs-pro/rules/js-cache-storage.md +74 -0
- package/.agent/skills/nextjs-pro/rules/js-combine-iterations.md +36 -0
- package/.agent/skills/nextjs-pro/rules/js-early-exit.md +54 -0
- package/.agent/skills/nextjs-pro/rules/js-hoist-regexp.md +49 -0
- package/.agent/skills/nextjs-pro/rules/js-index-maps.md +41 -0
- package/.agent/skills/nextjs-pro/rules/js-length-check-first.md +53 -0
- package/.agent/skills/nextjs-pro/rules/js-min-max-loop.md +86 -0
- package/.agent/skills/nextjs-pro/rules/js-set-map-lookups.md +28 -0
- package/.agent/skills/nextjs-pro/rules/js-tosorted-immutable.md +61 -0
- package/.agent/skills/nextjs-pro/rules/rendering-activity.md +30 -0
- package/.agent/skills/nextjs-pro/rules/rendering-animate-svg-wrapper.md +51 -0
- package/.agent/skills/nextjs-pro/rules/rendering-conditional-render.md +44 -0
- package/.agent/skills/nextjs-pro/rules/rendering-content-visibility.md +42 -0
- package/.agent/skills/nextjs-pro/rules/rendering-hoist-jsx.md +50 -0
- package/.agent/skills/nextjs-pro/rules/rendering-hydration-no-flicker.md +86 -0
- package/.agent/skills/nextjs-pro/rules/rendering-hydration-suppress-warning.md +34 -0
- package/.agent/skills/nextjs-pro/rules/rendering-svg-precision.md +32 -0
- package/.agent/skills/nextjs-pro/rules/rendering-usetransition-loading.md +79 -0
- package/.agent/skills/nextjs-pro/rules/rerender-defer-reads.md +43 -0
- package/.agent/skills/nextjs-pro/rules/rerender-dependencies.md +49 -0
- package/.agent/skills/nextjs-pro/rules/rerender-derived-state-no-effect.md +44 -0
- package/.agent/skills/nextjs-pro/rules/rerender-derived-state.md +33 -0
- package/.agent/skills/nextjs-pro/rules/rerender-functional-setstate.md +78 -0
- package/.agent/skills/nextjs-pro/rules/rerender-lazy-state-init.md +62 -0
- package/.agent/skills/nextjs-pro/rules/rerender-memo-with-default-value.md +42 -0
- package/.agent/skills/nextjs-pro/rules/rerender-memo.md +48 -0
- package/.agent/skills/nextjs-pro/rules/rerender-move-effect-to-event.md +49 -0
- package/.agent/skills/nextjs-pro/rules/rerender-simple-expression-in-memo.md +39 -0
- package/.agent/skills/nextjs-pro/rules/rerender-transitions.md +44 -0
- package/.agent/skills/nextjs-pro/rules/rerender-use-ref-transient-values.md +77 -0
- package/.agent/skills/nextjs-pro/rules/schema.json +34 -0
- package/.agent/skills/nextjs-pro/rules/server-after-nonblocking.md +77 -0
- package/.agent/skills/nextjs-pro/rules/server-auth-actions.md +100 -0
- package/.agent/skills/nextjs-pro/rules/server-cache-lru.md +45 -0
- package/.agent/skills/nextjs-pro/rules/server-cache-react.md +80 -0
- package/.agent/skills/nextjs-pro/rules/server-dedup-props.md +69 -0
- package/.agent/skills/nextjs-pro/rules/server-parallel-fetching.md +87 -0
- package/.agent/skills/nextjs-pro/rules/server-serialization.md +42 -0
- package/.agent/skills/nodejs-pro/AGENTS.md +866 -0
- package/.agent/skills/nodejs-pro/SKILL.md +172 -0
- package/.agent/skills/nodejs-pro/rules/_sections.md +50 -0
- package/.agent/skills/nodejs-pro/rules/_template.md +32 -0
- package/.agent/skills/nodejs-pro/rules/architecture-patterns.md +229 -0
- package/.agent/skills/nodejs-pro/rules/async-patterns.md +246 -0
- package/.agent/skills/nodejs-pro/rules/engineering-spec.md +438 -0
- package/.agent/skills/nodejs-pro/rules/error-handling.md +257 -0
- package/.agent/skills/nodejs-pro/rules/framework-selection.md +220 -0
- package/.agent/skills/nodejs-pro/rules/runtime-modules.md +176 -0
- package/.agent/skills/nodejs-pro/rules/testing-strategy.md +266 -0
- package/.agent/skills/nodejs-pro/rules/validation-security.md +205 -0
- package/.agent/skills/observability/AGENTS.md +607 -0
- package/.agent/skills/observability/SKILL.md +178 -0
- package/.agent/skills/observability/rules/_sections.md +15 -0
- package/.agent/skills/observability/rules/_template.md +32 -0
- package/.agent/skills/observability/rules/engineering-spec.md +440 -0
- package/.agent/skills/offensive-sec/AGENTS.md +849 -0
- package/.agent/skills/offensive-sec/SKILL.md +191 -0
- package/.agent/skills/offensive-sec/rules/_sections.md +15 -0
- package/.agent/skills/offensive-sec/rules/_template.md +32 -0
- package/.agent/skills/offensive-sec/rules/engineering-spec.md +470 -0
- package/.agent/skills/perf-optimizer/AGENTS.md +870 -0
- package/.agent/skills/perf-optimizer/SKILL.md +189 -0
- package/.agent/skills/perf-optimizer/rules/_sections.md +15 -0
- package/.agent/skills/perf-optimizer/rules/_template.md +32 -0
- package/.agent/skills/perf-optimizer/rules/backend-patterns.md +312 -0
- package/.agent/skills/perf-optimizer/rules/engineering-spec.md +428 -0
- package/.agent/skills/perf-optimizer/scripts/lighthouse_audit.ts +201 -0
- package/.agent/skills/problem-checker/AGENTS.md +519 -0
- package/.agent/skills/problem-checker/SKILL.md +189 -0
- package/.agent/skills/problem-checker/rules/_sections.md +15 -0
- package/.agent/skills/problem-checker/rules/_template.md +32 -0
- package/.agent/skills/problem-checker/rules/engineering-spec.md +483 -0
- package/.agent/skills/problem-checker/scripts/check_problems.ts +396 -0
- package/.agent/skills/project-planner/AGENTS.md +2698 -0
- package/.agent/skills/project-planner/SKILL.md +166 -0
- package/.agent/skills/project-planner/rules/_sections.md +15 -0
- package/.agent/skills/project-planner/rules/_template.md +32 -0
- package/.agent/skills/project-planner/rules/engineering-spec.md +420 -0
- package/.agent/skills/python-pro/AGENTS.md +1871 -0
- package/.agent/skills/python-pro/SKILL.md +182 -0
- package/.agent/skills/python-pro/rules/_sections.md +50 -0
- package/.agent/skills/python-pro/rules/_template.md +32 -0
- package/.agent/skills/python-pro/rules/async-patterns.md +168 -0
- package/.agent/skills/python-pro/rules/django-patterns.md +194 -0
- package/.agent/skills/python-pro/rules/engineering-spec.md +442 -0
- package/.agent/skills/python-pro/rules/fastapi-patterns.md +179 -0
- package/.agent/skills/python-pro/rules/framework-selection.md +167 -0
- package/.agent/skills/python-pro/rules/project-structure.md +181 -0
- package/.agent/skills/python-pro/rules/testing-patterns.md +212 -0
- package/.agent/skills/python-pro/rules/type-hints.md +159 -0
- package/.agent/skills/react-pro/AGENTS.md +963 -0
- package/.agent/skills/react-pro/SKILL.md +232 -0
- package/.agent/skills/react-pro/rules/_sections.md +40 -0
- package/.agent/skills/react-pro/rules/_template.md +32 -0
- package/.agent/skills/react-pro/rules/component-patterns.md +145 -0
- package/.agent/skills/react-pro/rules/composition-compound.md +82 -0
- package/.agent/skills/react-pro/rules/data-fetching.md +133 -0
- package/.agent/skills/react-pro/rules/engineering-spec.md +453 -0
- package/.agent/skills/react-pro/rules/error-boundary.md +61 -0
- package/.agent/skills/react-pro/rules/file-organization.md +158 -0
- package/.agent/skills/react-pro/rules/hooks-custom.md +61 -0
- package/.agent/skills/react-pro/rules/mui-styling.md +138 -0
- package/.agent/skills/react-pro/rules/patterns.md +24 -0
- package/.agent/skills/react-pro/rules/performance-optimization.md +65 -0
- package/.agent/skills/react-pro/rules/performance.md +137 -0
- package/.agent/skills/react-pro/rules/react19-hooks.md +85 -0
- package/.agent/skills/react-pro/rules/state-management.md +90 -0
- package/.agent/skills/react-pro/rules/testing-patterns.md +52 -0
- package/.agent/skills/registry.json +1251 -0
- package/.agent/skills/security-scanner/AGENTS.md +851 -0
- package/.agent/skills/security-scanner/SKILL.md +182 -0
- package/.agent/skills/security-scanner/rules/_sections.md +15 -0
- package/.agent/skills/security-scanner/rules/_template.md +32 -0
- package/.agent/skills/security-scanner/rules/auth-patterns.md +281 -0
- package/.agent/skills/security-scanner/rules/checklists.md +186 -0
- package/.agent/skills/security-scanner/rules/engineering-spec.md +440 -0
- package/.agent/skills/security-scanner/scripts/security_scan.ts +513 -0
- package/.agent/skills/seo-optimizer/AGENTS.md +839 -0
- package/.agent/skills/seo-optimizer/SKILL.md +180 -0
- package/.agent/skills/seo-optimizer/rules/_sections.md +15 -0
- package/.agent/skills/seo-optimizer/rules/_template.md +32 -0
- package/.agent/skills/seo-optimizer/rules/engineering-spec.md +433 -0
- package/.agent/skills/seo-optimizer/scripts/geo_checker.ts +109 -0
- package/.agent/skills/seo-optimizer/scripts/seo_checker.ts +308 -0
- package/.agent/skills/server-ops/AGENTS.md +643 -0
- package/.agent/skills/server-ops/SKILL.md +194 -0
- package/.agent/skills/server-ops/rules/_sections.md +15 -0
- package/.agent/skills/server-ops/rules/_template.md +32 -0
- package/.agent/skills/server-ops/rules/engineering-spec.md +450 -0
- package/.agent/skills/shell-script/AGENTS.md +499 -0
- package/.agent/skills/shell-script/SKILL.md +205 -0
- package/.agent/skills/shell-script/rules/_sections.md +15 -0
- package/.agent/skills/shell-script/rules/_template.md +32 -0
- package/.agent/skills/shell-script/rules/engineering-spec.md +463 -0
- package/.agent/skills/skill-generator/SKILL.md +147 -0
- package/.agent/skills/smart-router/SKILL.md +95 -0
- package/.agent/skills/studio/AGENTS.md +636 -0
- package/.agent/skills/studio/SKILL.md +178 -0
- package/.agent/skills/studio/data/charts.csv +26 -0
- package/.agent/skills/studio/data/colors.csv +97 -0
- package/.agent/skills/studio/data/icons.csv +101 -0
- package/.agent/skills/studio/data/landing.csv +31 -0
- package/.agent/skills/studio/data/products.csv +97 -0
- package/.agent/skills/studio/data/prompts.csv +24 -0
- package/.agent/skills/studio/data/react-performance.csv +45 -0
- package/.agent/skills/studio/data/stacks/flutter.csv +52 -0
- package/.agent/skills/studio/data/stacks/html-tailwind.csv +56 -0
- package/.agent/skills/studio/data/stacks/jetpack-compose.csv +53 -0
- package/.agent/skills/studio/data/stacks/nextjs.csv +53 -0
- package/.agent/skills/studio/data/stacks/nuxt-ui.csv +51 -0
- package/.agent/skills/studio/data/stacks/nuxtjs.csv +59 -0
- package/.agent/skills/studio/data/stacks/react-native.csv +52 -0
- package/.agent/skills/studio/data/stacks/react.csv +54 -0
- package/.agent/skills/studio/data/stacks/shadcn.csv +61 -0
- package/.agent/skills/studio/data/stacks/svelte.csv +54 -0
- package/.agent/skills/studio/data/stacks/swiftui.csv +51 -0
- package/.agent/skills/studio/data/stacks/vue.csv +50 -0
- package/.agent/skills/studio/data/styles.csv +59 -0
- package/.agent/skills/studio/data/typography.csv +58 -0
- package/.agent/skills/studio/data/ui-reasoning.csv +101 -0
- package/.agent/skills/studio/data/ux-guidelines.csv +100 -0
- package/.agent/skills/studio/data/web-interface.csv +31 -0
- package/.agent/skills/studio/rules/_sections.md +15 -0
- package/.agent/skills/studio/rules/_template.md +32 -0
- package/.agent/skills/studio/rules/engineering-spec.md +455 -0
- package/.agent/skills/studio/scripts/core.ts +345 -0
- package/.agent/skills/studio/scripts/design_system.ts +953 -0
- package/.agent/skills/studio/scripts/search.ts +197 -0
- package/.agent/skills/studio/scripts/types.ts +147 -0
- package/.agent/skills/studio/scripts/utils/component-specs.ts +154 -0
- package/.agent/skills/studio/scripts/utils/config-loader.ts +165 -0
- package/.agent/skills/studio/scripts/utils/css-templates.ts +169 -0
- package/.agent/skills/studio/scripts/utils/css-validator.ts +95 -0
- package/.agent/skills/studio/scripts/utils/csv-loader.ts +52 -0
- package/.agent/skills/studio/scripts/utils/intelligent-overrides.ts +129 -0
- package/.agent/skills/studio/scripts/utils/page-override-formatter.ts +143 -0
- package/.agent/skills/studio/scripts/utils/page-type-detector.ts +124 -0
- package/.agent/skills/studio/scripts/utils/search-cache.ts +165 -0
- package/.agent/skills/studio/scripts/utils/text-utils.ts +44 -0
- package/.agent/skills/system-design/AGENTS.md +597 -0
- package/.agent/skills/system-design/SKILL.md +153 -0
- package/.agent/skills/system-design/rules/_sections.md +15 -0
- package/.agent/skills/system-design/rules/_template.md +32 -0
- package/.agent/skills/system-design/rules/context-discovery.md +117 -0
- package/.agent/skills/system-design/rules/engineering-spec.md +437 -0
- package/.agent/skills/system-design/rules/examples.md +180 -0
- package/.agent/skills/system-design/rules/pattern-selection.md +130 -0
- package/.agent/skills/system-design/rules/patterns-reference.md +110 -0
- package/.agent/skills/system-design/rules/trade-off-analysis.md +169 -0
- package/.agent/skills/tailwind-kit/AGENTS.md +1135 -0
- package/.agent/skills/tailwind-kit/SKILL.md +171 -0
- package/.agent/skills/tailwind-kit/rules/_sections.md +20 -0
- package/.agent/skills/tailwind-kit/rules/_template.md +32 -0
- package/.agent/skills/tailwind-kit/rules/components.md +232 -0
- package/.agent/skills/tailwind-kit/rules/engineering-spec.md +435 -0
- package/.agent/skills/tailwind-kit/rules/responsive.md +221 -0
- package/.agent/skills/tailwind-kit/rules/v4-config.md +72 -0
- package/.agent/skills/test-architect/AGENTS.md +851 -0
- package/.agent/skills/test-architect/SKILL.md +176 -0
- package/.agent/skills/test-architect/rules/_sections.md +15 -0
- package/.agent/skills/test-architect/rules/_template.md +32 -0
- package/.agent/skills/test-architect/rules/engineering-spec.md +434 -0
- package/.agent/skills/test-architect/scripts/test_runner.ts +265 -0
- package/.agent/skills/typescript-expert/AGENTS.md +1045 -0
- package/.agent/skills/typescript-expert/SKILL.md +200 -0
- package/.agent/skills/typescript-expert/rules/_sections.md +20 -0
- package/.agent/skills/typescript-expert/rules/_template.md +32 -0
- package/.agent/skills/typescript-expert/rules/engineering-spec.md +433 -0
- package/.agent/skills/typescript-expert/rules/tsconfig-strict.json +92 -0
- package/.agent/skills/typescript-expert/rules/typescript-cheatsheet.md +407 -0
- package/.agent/skills/typescript-expert/rules/utility-types.ts +264 -0
- package/.agent/skills/typescript-expert/scripts/ts_diagnostic.ts +321 -0
- package/.agent/skills/vercel-deploy/AGENTS.md +490 -0
- package/.agent/skills/vercel-deploy/SKILL.md +175 -0
- package/.agent/skills/vercel-deploy/rules/_sections.md +15 -0
- package/.agent/skills/vercel-deploy/rules/_template.md +32 -0
- package/.agent/skills/vercel-deploy/rules/engineering-spec.md +463 -0
- package/.agent/skills/vercel-deploy/scripts/deploy.sh +310 -0
- package/.agent/workflows/api.md +377 -0
- package/.agent/workflows/autopilot.md +344 -0
- package/.agent/workflows/build.md +338 -0
- package/.agent/workflows/chronicle.md +279 -0
- package/.agent/workflows/cook.md +217 -0
- package/.agent/workflows/diagnose.md +302 -0
- package/.agent/workflows/fix.md +253 -0
- package/.agent/workflows/game.md +329 -0
- package/.agent/workflows/inspect.md +276 -0
- package/.agent/workflows/knowledge.md +212 -0
- package/.agent/workflows/launch.md +345 -0
- package/.agent/workflows/mobile.md +354 -0
- package/.agent/workflows/monitor.md +239 -0
- package/.agent/workflows/optimize.md +269 -0
- package/.agent/workflows/plan.md +278 -0
- package/.agent/workflows/stage.md +286 -0
- package/.agent/workflows/studio.md +276 -0
- package/.agent/workflows/think.md +262 -0
- package/.agent/workflows/validate.md +289 -0
- package/.agentignore +161 -0
- package/.gitattributes +16 -0
- package/CHANGELOG.md +198 -0
- package/LICENSE +40 -0
- package/README.md +173 -0
- package/docs/SKILL_DESIGN_GUIDE.md +561 -0
- package/docs/The-Complete-Guide-to-Building-Skills-for-Claude.md +1207 -0
- package/docs/WORKFLOW_DESIGN_GUIDE.md +325 -0
- package/package.json +33 -0
- package/tsconfig.json +28 -0
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: async-patterns
|
|
3
|
+
description: Async/await patterns, Promise utilities, AbortController, streams, worker threads, and event loop protection
|
|
4
|
+
title: "Node.js is async-first. The event loop is everything. Block it and your entire server stops."
|
|
5
|
+
impact: CRITICAL
|
|
6
|
+
impactDescription: "Significant performance or security impact"
|
|
7
|
+
tags: async, patterns
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Async Patterns
|
|
11
|
+
|
|
12
|
+
> Node.js is async-first. **The event loop is everything.** Block it and your entire server stops.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## When to Use Each
|
|
17
|
+
|
|
18
|
+
| Pattern | Use When | Example |
|
|
19
|
+
|---------|----------|---------|
|
|
20
|
+
| `async/await` | Sequential operations | Fetch user → fetch orders |
|
|
21
|
+
| `Promise.all` | Parallel, all must succeed | Fetch user AND orders simultaneously |
|
|
22
|
+
| `Promise.allSettled` | Parallel, some can fail | Send notifications to multiple channels |
|
|
23
|
+
| `Promise.race` | First response wins | Timeout pattern |
|
|
24
|
+
| `Promise.any` | First success wins | Try multiple CDNs |
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Code Examples
|
|
29
|
+
|
|
30
|
+
### Sequential (when order matters)
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
// ✅ Each step depends on the previous
|
|
34
|
+
async function processOrder(orderId: string) {
|
|
35
|
+
const order = await getOrder(orderId)
|
|
36
|
+
const payment = await chargePayment(order.total)
|
|
37
|
+
const confirmation = await sendConfirmation(order.email, payment.id)
|
|
38
|
+
return confirmation
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Parallel (independent operations)
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
// ❌ Waterfall — 3 sequential network calls
|
|
46
|
+
async function getDashboard(userId: string) {
|
|
47
|
+
const user = await getUser(userId) // 200ms
|
|
48
|
+
const orders = await getOrders(userId) // 300ms
|
|
49
|
+
const stats = await getStats(userId) // 150ms
|
|
50
|
+
return { user, orders, stats } // Total: 650ms
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// ✅ Parallel — all at once
|
|
54
|
+
async function getDashboard(userId: string) {
|
|
55
|
+
const [user, orders, stats] = await Promise.all([
|
|
56
|
+
getUser(userId), // 200ms
|
|
57
|
+
getOrders(userId), // 300ms } Total: 300ms (longest)
|
|
58
|
+
getStats(userId), // 150ms
|
|
59
|
+
])
|
|
60
|
+
return { user, orders, stats }
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Partial failure tolerance
|
|
65
|
+
|
|
66
|
+
```typescript
|
|
67
|
+
// ✅ Send to all channels, don't fail if one channel is down
|
|
68
|
+
async function notifyAll(userId: string, message: string) {
|
|
69
|
+
const results = await Promise.allSettled([
|
|
70
|
+
sendEmail(userId, message),
|
|
71
|
+
sendPush(userId, message),
|
|
72
|
+
sendSMS(userId, message),
|
|
73
|
+
])
|
|
74
|
+
|
|
75
|
+
const failures = results.filter(r => r.status === 'rejected')
|
|
76
|
+
if (failures.length > 0) {
|
|
77
|
+
logger.warn({ failures }, 'Some notifications failed')
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## AbortController (Timeouts + Cancellation)
|
|
85
|
+
|
|
86
|
+
```typescript
|
|
87
|
+
// Timeout a fetch request
|
|
88
|
+
async function fetchWithTimeout(url: string, timeoutMs = 5000) {
|
|
89
|
+
const controller = new AbortController()
|
|
90
|
+
const timeout = setTimeout(() => controller.abort(), timeoutMs)
|
|
91
|
+
|
|
92
|
+
try {
|
|
93
|
+
const response = await fetch(url, { signal: controller.signal })
|
|
94
|
+
return await response.json()
|
|
95
|
+
} catch (err) {
|
|
96
|
+
if (err instanceof DOMException && err.name === 'AbortError') {
|
|
97
|
+
throw new Error(`Request to ${url} timed out after ${timeoutMs}ms`)
|
|
98
|
+
}
|
|
99
|
+
throw err
|
|
100
|
+
} finally {
|
|
101
|
+
clearTimeout(timeout)
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Cancel on user disconnect (Fastify)
|
|
106
|
+
app.get('/long-operation', async (request, reply) => {
|
|
107
|
+
const result = await longOperation({ signal: request.raw.signal })
|
|
108
|
+
return result
|
|
109
|
+
// If client disconnects, signal is aborted → operation cancelled
|
|
110
|
+
})
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Streams (Large Data)
|
|
116
|
+
|
|
117
|
+
```typescript
|
|
118
|
+
// ❌ Load entire file into memory
|
|
119
|
+
const data = await fs.readFile('huge-file.csv', 'utf-8')
|
|
120
|
+
const lines = data.split('\n') // 2GB in memory!
|
|
121
|
+
|
|
122
|
+
// ✅ Stream line by line
|
|
123
|
+
import { createReadStream } from 'node:fs'
|
|
124
|
+
import { createInterface } from 'node:readline'
|
|
125
|
+
|
|
126
|
+
async function processCSV(filePath: string) {
|
|
127
|
+
const stream = createReadStream(filePath)
|
|
128
|
+
const rl = createInterface({ input: stream })
|
|
129
|
+
|
|
130
|
+
for await (const line of rl) {
|
|
131
|
+
await processLine(line) // Constant memory usage
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// ✅ Stream API response (Fastify)
|
|
136
|
+
app.get('/export', async (request, reply) => {
|
|
137
|
+
const cursor = db.query.users.findMany().cursor()
|
|
138
|
+
reply.type('application/json')
|
|
139
|
+
|
|
140
|
+
for await (const batch of cursor) {
|
|
141
|
+
reply.raw.write(JSON.stringify(batch))
|
|
142
|
+
}
|
|
143
|
+
reply.raw.end()
|
|
144
|
+
})
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Worker Threads (CPU-Bound Work)
|
|
150
|
+
|
|
151
|
+
```typescript
|
|
152
|
+
// ❌ Blocks event loop — entire server freezes
|
|
153
|
+
app.get('/hash', async (request) => {
|
|
154
|
+
const hash = computeExpensiveHash(request.body.data) // 2 seconds blocking
|
|
155
|
+
return { hash }
|
|
156
|
+
})
|
|
157
|
+
|
|
158
|
+
// ✅ Offload to worker thread
|
|
159
|
+
import { Worker } from 'node:worker_threads'
|
|
160
|
+
|
|
161
|
+
function runInWorker<T>(workerPath: string, data: unknown): Promise<T> {
|
|
162
|
+
return new Promise((resolve, reject) => {
|
|
163
|
+
const worker = new Worker(workerPath, { workerData: data })
|
|
164
|
+
worker.on('message', resolve)
|
|
165
|
+
worker.on('error', reject)
|
|
166
|
+
})
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
app.get('/hash', async (request) => {
|
|
170
|
+
const hash = await runInWorker('./workers/hash.ts', request.body.data)
|
|
171
|
+
return { hash } // Event loop stays free
|
|
172
|
+
})
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
```typescript
|
|
176
|
+
// workers/hash.ts
|
|
177
|
+
import { parentPort, workerData } from 'node:worker_threads'
|
|
178
|
+
|
|
179
|
+
const result = computeExpensiveHash(workerData)
|
|
180
|
+
parentPort?.postMessage(result)
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Event Loop Protection
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
I/O-bound (event loop handles well):
|
|
189
|
+
├── Database queries → async/await
|
|
190
|
+
├── HTTP requests → async/await
|
|
191
|
+
├── File system → fs.promises (never Sync!)
|
|
192
|
+
└── Network operations → async/await
|
|
193
|
+
|
|
194
|
+
CPU-bound (blocks event loop):
|
|
195
|
+
├── Crypto (hashing) → worker threads
|
|
196
|
+
├── Image processing → worker threads or external service
|
|
197
|
+
├── JSON parse (>1MB) → streaming parser
|
|
198
|
+
├── Complex calculations → worker threads
|
|
199
|
+
└── Compression → zlib.promises or worker
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Detect Blocking
|
|
203
|
+
|
|
204
|
+
```typescript
|
|
205
|
+
// Detect event loop lag (monitoring)
|
|
206
|
+
import { monitorEventLoopDelay } from 'node:perf_hooks'
|
|
207
|
+
|
|
208
|
+
const histogram = monitorEventLoopDelay({ resolution: 20 })
|
|
209
|
+
histogram.enable()
|
|
210
|
+
|
|
211
|
+
setInterval(() => {
|
|
212
|
+
const p99 = histogram.percentile(99) / 1e6 // Convert to ms
|
|
213
|
+
if (p99 > 100) {
|
|
214
|
+
logger.warn({ p99Ms: p99 }, 'Event loop lag detected')
|
|
215
|
+
}
|
|
216
|
+
histogram.reset()
|
|
217
|
+
}, 5000)
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Anti-Patterns
|
|
223
|
+
|
|
224
|
+
| ❌ Don't | ✅ Do |
|
|
225
|
+
|---------|-------|
|
|
226
|
+
| `fs.readFileSync` in production | `fs.promises.readFile` |
|
|
227
|
+
| Sequential awaits for independent data | `Promise.all` |
|
|
228
|
+
| No timeout on external calls | `AbortController` with timeout |
|
|
229
|
+
| Load large files into memory | Stream processing |
|
|
230
|
+
| CPU work on main thread | Worker threads |
|
|
231
|
+
| Ignore `unhandledRejection` | Handle or crash process |
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## 🔗 Related
|
|
236
|
+
|
|
237
|
+
| File | When to Read |
|
|
238
|
+
|------|-------------|
|
|
239
|
+
| [error-handling.md](error-handling.md) | Async error catching patterns |
|
|
240
|
+
| [architecture-patterns.md](architecture-patterns.md) | Where async code lives in layers |
|
|
241
|
+
| [testing-strategy.md](testing-strategy.md) | Testing async code |
|
|
242
|
+
| [runtime-modules.md](runtime-modules.md) | node: prefix for built-in modules |
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
⚡ PikaKit v3.9.134
|
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Node.js Pro — Engineering Specification
|
|
3
|
+
impact: MEDIUM
|
|
4
|
+
tags: nodejs-pro
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Node.js Pro — Engineering Specification
|
|
8
|
+
|
|
9
|
+
> Production-grade specification for Node.js development decision-making at FAANG scale.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Overview
|
|
14
|
+
|
|
15
|
+
Node.js Pro provides structured decision frameworks for Node.js backend development: framework selection (Hono, Fastify, Express, NestJS, Next.js API/tRPC), architecture pattern routing, async pattern guidance, error handling strategy, input validation, security practices, and testing strategy. The skill operates as an **Expert (decision tree)** — it produces framework decisions, architecture recommendations, and pattern guidance. It does not create projects, write server code, or deploy applications.
|
|
16
|
+
|
|
17
|
+
**Contract Version:** 2.0.0
|
|
18
|
+
**Backward Compatibility:** breaking (first hardened version)
|
|
19
|
+
**Breaking Changes:** None — new spec for first hardening
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 2. Problem Statement
|
|
24
|
+
|
|
25
|
+
Node.js development at scale faces four quantified problems:
|
|
26
|
+
|
|
27
|
+
| Problem | Measurement | Impact |
|
|
28
|
+
|---------|-------------|--------|
|
|
29
|
+
| Wrong framework for use case | 40% of projects use Express where Hono/Fastify fits better | Subpar cold starts and throughput |
|
|
30
|
+
| Sync methods in production | 25% of Node.js apps use blocking calls | Event loop starvation |
|
|
31
|
+
| Business logic in controllers | 45% of apps mix routing and domain logic | Untestable, unmaintainable code |
|
|
32
|
+
| Missing input validation | 35% of APIs skip schema validation | Injection attacks, crashes |
|
|
33
|
+
|
|
34
|
+
Node.js Pro eliminates these with deterministic framework selection (5 options by use case), layered architecture routing, async-first enforcement, and mandatory validation guidance.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 3. Design Goals
|
|
39
|
+
|
|
40
|
+
| ID | Goal | Measurable Constraint |
|
|
41
|
+
|----|------|-----------------------|
|
|
42
|
+
| G1 | Framework selection | 5 options: Hono (edge), Fastify (performance), NestJS (enterprise), Express (legacy), Next.js/tRPC (full-stack) |
|
|
43
|
+
| G2 | Framework comparison | Fixed table: cold start, TypeScript support, throughput tier |
|
|
44
|
+
| G3 | Architecture routing | Layered for growing projects; modular for large teams |
|
|
45
|
+
| G4 | Async enforcement | No sync methods in production code |
|
|
46
|
+
| G5 | Validation mandate | All inputs validated at boundary |
|
|
47
|
+
| G6 | 7 reference files | Framework, runtime, architecture, errors, async, security, testing |
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 4. Non-Goals
|
|
52
|
+
|
|
53
|
+
| ID | Excluded | Rationale |
|
|
54
|
+
|----|----------|-----------|
|
|
55
|
+
| NG1 | API design (REST/GraphQL) | Owned by `api-architect` skill |
|
|
56
|
+
| NG2 | Database/ORM selection | Owned by `data-modeler` skill |
|
|
57
|
+
| NG3 | TypeScript patterns | Owned by `typescript-expert` skill |
|
|
58
|
+
| NG4 | Performance profiling | Owned by `perf-optimizer` skill |
|
|
59
|
+
| NG5 | Deployment pipeline | Owned by `cicd-pipeline` skill |
|
|
60
|
+
| NG6 | Frontend framework | Owned by `nextjs-pro` / `react-architect` skills |
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 5. System Boundaries
|
|
65
|
+
|
|
66
|
+
| Boundary | Owned | Not Owned |
|
|
67
|
+
|----------|-------|-----------|
|
|
68
|
+
| Framework selection (5 options) | Decision criteria | Framework installation |
|
|
69
|
+
| Architecture patterns | Pattern selection | Pattern implementation |
|
|
70
|
+
| Async patterns | Pattern guidance | Async runtime |
|
|
71
|
+
| Error handling strategy | Strategy selection | Error implementation |
|
|
72
|
+
| Validation guidance | Validation rules | Validation library |
|
|
73
|
+
| Security practices | Security guidance | Security audit |
|
|
74
|
+
| Testing strategy | Strategy selection | Test execution |
|
|
75
|
+
|
|
76
|
+
**Side-effect boundary:** Node.js Pro produces decisions, recommendations, and pattern guidance. It does not create files, install packages, or execute commands.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 6. Integration Model
|
|
81
|
+
|
|
82
|
+
### 6.1 Agent Contract
|
|
83
|
+
|
|
84
|
+
#### Input Schema
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
Request_Type: string # "framework-select" | "architecture" | "async-patterns" |
|
|
88
|
+
# "error-handling" | "validation" | "security" | "testing" |
|
|
89
|
+
# "comparison" | "full-guide"
|
|
90
|
+
Context: {
|
|
91
|
+
deployment_target: string # "edge" | "serverless" | "container" | "vm" | "hybrid"
|
|
92
|
+
team_size: string # "solo" | "small" (2-5) | "large" (6+)
|
|
93
|
+
app_complexity: string # "simple" | "moderate" | "complex"
|
|
94
|
+
typescript: boolean # Whether TypeScript is required
|
|
95
|
+
existing_framework: string | null # Current framework if migrating
|
|
96
|
+
performance_critical: boolean # Whether throughput is primary concern
|
|
97
|
+
}
|
|
98
|
+
contract_version: string # "2.0.0"
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
#### Output Schema
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
Status: "success" | "error"
|
|
105
|
+
Data: {
|
|
106
|
+
framework: {
|
|
107
|
+
name: string # "hono" | "fastify" | "express" | "nestjs" | "nextjs-trpc"
|
|
108
|
+
rationale: string
|
|
109
|
+
cold_start_tier: string # "fastest" | "fast" | "moderate"
|
|
110
|
+
typescript_support: string # "native" | "excellent" | "good"
|
|
111
|
+
} | null
|
|
112
|
+
architecture: {
|
|
113
|
+
pattern: string # "layered" | "modular" | "clean"
|
|
114
|
+
rationale: string
|
|
115
|
+
} | null
|
|
116
|
+
reference_files: Array<string> | null
|
|
117
|
+
metadata: {
|
|
118
|
+
contract_version: string
|
|
119
|
+
backward_compatibility: string
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
Error: ErrorSchema | null
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
#### Error Schema
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
Code: string # From Error Taxonomy (Section 11)
|
|
129
|
+
Message: string
|
|
130
|
+
Request_Type: string
|
|
131
|
+
Recoverable: boolean
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
#### Deterministic Guarantees
|
|
135
|
+
|
|
136
|
+
- Framework selection is deterministic:
|
|
137
|
+
- edge/serverless → Hono (fastest cold starts)
|
|
138
|
+
- performance_critical AND container → Fastify (2-3x faster than Express)
|
|
139
|
+
- complex app AND large team → NestJS (structured, DI)
|
|
140
|
+
- legacy OR maximum ecosystem → Express
|
|
141
|
+
- full-stack → Next.js API Routes or tRPC
|
|
142
|
+
- Architecture routing is deterministic:
|
|
143
|
+
- simple app → flat structure
|
|
144
|
+
- moderate + growing team → layered architecture
|
|
145
|
+
- complex + large team → modular/clean architecture
|
|
146
|
+
- Async: always async/await; never sync methods in production.
|
|
147
|
+
- Validation: always at boundary layer; never trust client input.
|
|
148
|
+
|
|
149
|
+
#### What Agents May Assume
|
|
150
|
+
|
|
151
|
+
- Framework selection maps to deployment target deterministically.
|
|
152
|
+
- Architecture pattern matches complexity + team size.
|
|
153
|
+
- Reference files exist at documented paths.
|
|
154
|
+
- All recommendations follow Node.js 20+ LTS conventions.
|
|
155
|
+
|
|
156
|
+
#### What Agents Must NOT Assume
|
|
157
|
+
|
|
158
|
+
- Express is the default choice.
|
|
159
|
+
- Framework or tools are installed.
|
|
160
|
+
- Sync methods are acceptable in any context.
|
|
161
|
+
- Input is validated elsewhere.
|
|
162
|
+
|
|
163
|
+
#### Side-Effect Boundaries
|
|
164
|
+
|
|
165
|
+
| Operation | Side Effects |
|
|
166
|
+
|-----------|-------------|
|
|
167
|
+
| Framework select | None; recommendation |
|
|
168
|
+
| Architecture | None; pattern recommendation |
|
|
169
|
+
| Async patterns | None; pattern guidance |
|
|
170
|
+
| Error handling | None; strategy guidance |
|
|
171
|
+
| Validation | None; rule guidance |
|
|
172
|
+
| Security | None; practice guidance |
|
|
173
|
+
| Testing | None; strategy guidance |
|
|
174
|
+
| Comparison | None; table output |
|
|
175
|
+
| Full guide | None; combined output |
|
|
176
|
+
|
|
177
|
+
### 6.2 Workflow Contract
|
|
178
|
+
|
|
179
|
+
#### Invocation Pattern
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
1. Identify deployment target, team size, complexity
|
|
183
|
+
2. Invoke framework-select for technology decision
|
|
184
|
+
3. Invoke architecture for pattern selection
|
|
185
|
+
4. Read relevant reference files (caller's responsibility)
|
|
186
|
+
5. Implement patterns (caller's responsibility)
|
|
187
|
+
6. Invoke testing for verification strategy
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
#### Execution Guarantees
|
|
191
|
+
|
|
192
|
+
- Each invocation produces a complete recommendation.
|
|
193
|
+
- All decisions are independent (can be invoked in any order).
|
|
194
|
+
|
|
195
|
+
#### Failure Propagation Model
|
|
196
|
+
|
|
197
|
+
| Failure Severity | Propagation | Workflow Action |
|
|
198
|
+
|-----------------|-------------|-----------------|
|
|
199
|
+
| Invalid request type | Return error | Use supported type |
|
|
200
|
+
| Unknown deployment target | Return error | Specify valid target |
|
|
201
|
+
| Missing complexity | Default to "moderate" | Transparent |
|
|
202
|
+
|
|
203
|
+
#### Retry Boundaries
|
|
204
|
+
|
|
205
|
+
- Zero internal retries. Deterministic output.
|
|
206
|
+
|
|
207
|
+
#### Isolation Model
|
|
208
|
+
|
|
209
|
+
- Each invocation is stateless and independent.
|
|
210
|
+
|
|
211
|
+
#### Idempotency Expectations
|
|
212
|
+
|
|
213
|
+
| Operation | Idempotent | Notes |
|
|
214
|
+
|-----------|-----------|-------|
|
|
215
|
+
| Framework select | Yes | Same context = same framework |
|
|
216
|
+
| Architecture | Yes | Same complexity + team = same pattern |
|
|
217
|
+
| Async patterns | Yes | Fixed guidance |
|
|
218
|
+
| Error handling | Yes | Fixed strategy |
|
|
219
|
+
| Comparison | Yes | Fixed table |
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## 7. Execution Model
|
|
224
|
+
|
|
225
|
+
### 2-Phase Lifecycle
|
|
226
|
+
|
|
227
|
+
| Phase | Action | Output |
|
|
228
|
+
|-------|--------|--------|
|
|
229
|
+
| **Classify** | Validate context, determine request type | Classification |
|
|
230
|
+
| **Recommend** | Generate framework, architecture, or pattern guidance | Complete output |
|
|
231
|
+
|
|
232
|
+
All phases synchronous. No async pipeline.
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## 8. Deterministic Design Principles
|
|
237
|
+
|
|
238
|
+
| Principle | Enforcement |
|
|
239
|
+
|-----------|-------------|
|
|
240
|
+
| Fixed framework routing | 5 options with explicit selection criteria |
|
|
241
|
+
| Fixed comparison table | Cold start, TypeScript, throughput per framework |
|
|
242
|
+
| Architecture by context | Complexity + team size → pattern |
|
|
243
|
+
| Async-first | No sync methods in production; never `fs.readFileSync` in handlers |
|
|
244
|
+
| Validate at boundary | All inputs validated before reaching business logic |
|
|
245
|
+
| Environment secrets | Secrets via env vars; never hardcoded |
|
|
246
|
+
| Layered separation | Controllers → Services → Repositories; no business logic in routes |
|
|
247
|
+
| Event loop protection | No CPU-intensive work on main thread; use worker threads |
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## 9. State & Idempotency Model
|
|
252
|
+
|
|
253
|
+
Stateless. Fully idempotent. No persistent state.
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## 10. Failure Handling Strategy
|
|
258
|
+
|
|
259
|
+
| Failure Class | Behavior | Caller Recovery |
|
|
260
|
+
|---------------|----------|-----------------|
|
|
261
|
+
| Unknown deployment target | Return `ERR_UNKNOWN_TARGET` | Specify valid target |
|
|
262
|
+
| Invalid request type | Return `ERR_INVALID_REQUEST_TYPE` | Use supported type |
|
|
263
|
+
| Unknown framework | Return `ERR_UNKNOWN_FRAMEWORK` | Use one of 5 options |
|
|
264
|
+
|
|
265
|
+
**Invariant:** Every failure returns a structured error. No partial recommendations.
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## 11. Error Taxonomy
|
|
270
|
+
|
|
271
|
+
| Code | Category | Recoverable | Description |
|
|
272
|
+
|------|----------|-------------|-------------|
|
|
273
|
+
| `ERR_INVALID_REQUEST_TYPE` | Validation | No | Request type not supported |
|
|
274
|
+
| `ERR_UNKNOWN_TARGET` | Validation | Yes | Deployment target not recognized |
|
|
275
|
+
| `ERR_UNKNOWN_FRAMEWORK` | Validation | Yes | Framework not one of 5 |
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
## 12. Timeout & Retry Policy
|
|
280
|
+
|
|
281
|
+
| Parameter | Default | Maximum | Rationale |
|
|
282
|
+
|-----------|---------|---------|-----------|
|
|
283
|
+
| Decision generation | N/A | N/A | Synchronous; < 50ms |
|
|
284
|
+
| Internal retries | Zero | Zero | Deterministic output |
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
## 13. Observability & Logging Schema
|
|
289
|
+
|
|
290
|
+
### Log Entry Format
|
|
291
|
+
|
|
292
|
+
```json
|
|
293
|
+
{
|
|
294
|
+
"trace_id": "uuid",
|
|
295
|
+
"skill_name": "nodejs-pro",
|
|
296
|
+
"contract_version": "2.0.0",
|
|
297
|
+
"execution_id": "uuid",
|
|
298
|
+
"timestamp": "ISO-8601",
|
|
299
|
+
"request_type": "string",
|
|
300
|
+
"deployment_target": "string",
|
|
301
|
+
"framework_selected": "string|null",
|
|
302
|
+
"architecture_selected": "string|null",
|
|
303
|
+
"app_complexity": "string",
|
|
304
|
+
"team_size": "string",
|
|
305
|
+
"status": "success|error",
|
|
306
|
+
"error_code": "string|null",
|
|
307
|
+
"duration_ms": "number"
|
|
308
|
+
}
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
### Required Log Points
|
|
312
|
+
|
|
313
|
+
| Event | Log Level | Fields |
|
|
314
|
+
|-------|-----------|--------|
|
|
315
|
+
| Framework selected | INFO | framework_selected, deployment_target |
|
|
316
|
+
| Architecture selected | INFO | architecture_selected, complexity |
|
|
317
|
+
| Reference file recommended | INFO | reference_file |
|
|
318
|
+
| Decision failed | ERROR | error_code, message |
|
|
319
|
+
|
|
320
|
+
### Metrics
|
|
321
|
+
|
|
322
|
+
| Metric | Type | Unit |
|
|
323
|
+
|--------|------|------|
|
|
324
|
+
| `nodejspro.decision.duration` | Histogram | ms |
|
|
325
|
+
| `nodejspro.framework.distribution` | Counter | per framework |
|
|
326
|
+
| `nodejspro.target.distribution` | Counter | per deployment target |
|
|
327
|
+
| `nodejspro.request_type.distribution` | Counter | per type |
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## 14. Security & Trust Model
|
|
332
|
+
|
|
333
|
+
### Data Handling
|
|
334
|
+
|
|
335
|
+
- Node.js Pro processes no credentials, API keys, or PII.
|
|
336
|
+
- Security guidance references public standards (OWASP, Node.js Security WG).
|
|
337
|
+
- No network calls, no file access.
|
|
338
|
+
|
|
339
|
+
### Security Guidance Provided
|
|
340
|
+
|
|
341
|
+
| Practice | Enforcement |
|
|
342
|
+
|----------|-------------|
|
|
343
|
+
| Secrets via environment variables | Never hardcoded |
|
|
344
|
+
| Input validation at boundary | Before business logic |
|
|
345
|
+
| No `eval()` or `Function()` | Never in production |
|
|
346
|
+
| Helmet middleware for HTTP headers | Always recommended |
|
|
347
|
+
| Rate limiting | Always recommended for public APIs |
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## 15. Scalability Model
|
|
352
|
+
|
|
353
|
+
| Dimension | Constraint | Mitigation |
|
|
354
|
+
|-----------|-----------|------------|
|
|
355
|
+
| Throughput | CPU-bound decision tree | < 50ms; scales linearly |
|
|
356
|
+
| Concurrency | Stateless invocations | Unlimited parallel |
|
|
357
|
+
| Reference storage | 7 files (~30 KB total) | Static; no growth |
|
|
358
|
+
| Memory per invocation | < 1 MB | No accumulation |
|
|
359
|
+
| Network | Zero network calls | No external dependency |
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
## 16. Concurrency Model
|
|
364
|
+
|
|
365
|
+
Fully parallel. No shared state. No coordination required.
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
## 17. Resource Lifecycle Management
|
|
370
|
+
|
|
371
|
+
All resources scoped to invocation. No persistent handles.
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|
|
375
|
+
## 18. Performance Constraints
|
|
376
|
+
|
|
377
|
+
| Operation | P50 Target | P99 Target | Hard Limit |
|
|
378
|
+
|-----------|-----------|-----------|------------|
|
|
379
|
+
| Framework selection | < 2 ms | < 5 ms | 20 ms |
|
|
380
|
+
| Architecture selection | < 2 ms | < 5 ms | 20 ms |
|
|
381
|
+
| Full guide | < 10 ms | < 30 ms | 50 ms |
|
|
382
|
+
| Output size | ≤ 1,500 chars | ≤ 4,000 chars | 6,000 chars |
|
|
383
|
+
|
|
384
|
+
---
|
|
385
|
+
|
|
386
|
+
## 19. Operational Risks
|
|
387
|
+
|
|
388
|
+
| Risk | Likelihood | Impact | Mitigation |
|
|
389
|
+
|------|-----------|--------|------------|
|
|
390
|
+
| Node.js LTS version change | Medium | API deprecations | Track LTS releases |
|
|
391
|
+
| Framework ecosystem shift | Medium | Hono/Fastify adoption changes | Review annually |
|
|
392
|
+
| Express deprecation | Low | Large migration | Express still maintained; monitor |
|
|
393
|
+
| NestJS major version | Low | Breaking DI changes | Track NestJS releases |
|
|
394
|
+
| Deno/Bun competition | Low | Runtime alternatives | Node.js Pro scoped to Node.js |
|
|
395
|
+
|
|
396
|
+
---
|
|
397
|
+
|
|
398
|
+
## 20. Compliance with skill-design-guide.md
|
|
399
|
+
|
|
400
|
+
| Requirement | Status | Evidence |
|
|
401
|
+
|-------------|--------|----------|
|
|
402
|
+
| YAML frontmatter complete | ✅ | name, description, metadata with category, version, triggers, coordinates_with, success_metrics |
|
|
403
|
+
| SKILL.md < 200 lines | ✅ | Entry point under 200 lines |
|
|
404
|
+
| Prerequisites documented | ✅ | No external dependencies (knowledge skill) |
|
|
405
|
+
| When to Use section | ✅ | Situation-based routing table |
|
|
406
|
+
| Core content matches skill type | ✅ | Expert type: framework decision tree, comparison table |
|
|
407
|
+
| Troubleshooting section | ✅ | Anti-patterns table |
|
|
408
|
+
| Related section | ✅ | Cross-links to api-architect, data-modeler, typescript-expert |
|
|
409
|
+
| Content Map for multi-file | ✅ | Links to 7 reference files + engineering-spec.md |
|
|
410
|
+
| Contract versioning | ✅ | contract_version, backward_compatibility, breaking_changes |
|
|
411
|
+
| Compliance matrix structured | ✅ | This table with ✅/❌ + evidence |
|
|
412
|
+
|
|
413
|
+
---
|
|
414
|
+
|
|
415
|
+
## 21. Production Readiness Checklist
|
|
416
|
+
|
|
417
|
+
| Category | Check | Status |
|
|
418
|
+
|----------|-------|--------|
|
|
419
|
+
| **Functionality** | Framework selection (5 options with criteria) | ✅ |
|
|
420
|
+
| **Functionality** | Framework comparison (cold start, TS, throughput) | ✅ |
|
|
421
|
+
| **Functionality** | Architecture routing (complexity + team) | ✅ |
|
|
422
|
+
| **Functionality** | Async-first enforcement | ✅ |
|
|
423
|
+
| **Functionality** | 7 reference files covering all domains | ✅ |
|
|
424
|
+
| **Contracts** | Input/output/error schemas in pseudo-schema format | ✅ |
|
|
425
|
+
| **Contracts** | Contract versioning with semver | ✅ |
|
|
426
|
+
| **Failure** | Error taxonomy with 3 categorized codes | ✅ |
|
|
427
|
+
| **Failure** | Zero internal retries | ✅ |
|
|
428
|
+
| **Determinism** | Fixed framework routing, fixed comparison, async-first | ✅ |
|
|
429
|
+
| **Security** | No credentials, no PII, no file access | ✅ |
|
|
430
|
+
| **Observability** | Structured log schema with 5 mandatory fields | ✅ |
|
|
431
|
+
| **Observability** | 4 metrics defined | ✅ |
|
|
432
|
+
| **Performance** | P50/P99 targets for all operations | ✅ |
|
|
433
|
+
| **Scalability** | Stateless; unlimited parallel | ✅ |
|
|
434
|
+
| **Compliance** | All skill-design-guide.md sections mapped with evidence | ✅ |
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
⚡ PikaKit v3.9.134
|