tribunal-kit 9.2.4 → 9.2.5
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/.manifest.json +78 -78
- package/.agent/.shared/ui-ux-pro-max/README.md +4 -4
- package/.agent/.tribunal/session.jsonl +15 -15
- package/.agent/ADRs/ADR-001-system-architecture-intelligence.md +49 -0
- package/.agent/ARCHITECTURE.md +63 -63
- package/.agent/agents/accessibility-reviewer.md +109 -109
- package/.agent/agents/agent-shield-auditor.md +18 -18
- package/.agent/agents/ai-code-reviewer.md +223 -223
- package/.agent/agents/anti-pattern-reviewer.md +104 -104
- package/.agent/agents/api-architect.md +89 -89
- package/.agent/agents/architecture-auditor.md +195 -0
- package/.agent/agents/backend-specialist.md +242 -242
- package/.agent/agents/cloud-engineer.md +120 -120
- package/.agent/agents/code-archaeologist.md +186 -186
- package/.agent/agents/complexity-reviewer.md +76 -76
- package/.agent/agents/database-architect.md +206 -206
- package/.agent/agents/db-latency-auditor.md +237 -237
- package/.agent/agents/debugger.md +215 -215
- package/.agent/agents/dependency-reviewer.md +124 -124
- package/.agent/agents/devops-engineer.md +240 -240
- package/.agent/agents/documentation-writer.md +228 -228
- package/.agent/agents/explorer-agent.md +186 -186
- package/.agent/agents/frontend-reviewer.md +195 -195
- package/.agent/agents/frontend-specialist.md +122 -122
- package/.agent/agents/game-developer.md +68 -68
- package/.agent/agents/harness-manager.md +49 -49
- package/.agent/agents/human-gate-negotiator.md +22 -22
- package/.agent/agents/interaction-reviewer.md +123 -123
- package/.agent/agents/kernel-scheduler.md +56 -56
- package/.agent/agents/logic-reviewer.md +147 -147
- package/.agent/agents/memory-archivist.md +37 -37
- package/.agent/agents/minimalist-reviewer.md +104 -104
- package/.agent/agents/mobile-developer.md +216 -216
- package/.agent/agents/mobile-reviewer.md +180 -180
- package/.agent/agents/orchestrator.md +268 -268
- package/.agent/agents/penetration-tester.md +180 -180
- package/.agent/agents/performance-optimizer.md +202 -202
- package/.agent/agents/performance-reviewer.md +180 -180
- package/.agent/agents/pipeline-reviewer.md +144 -144
- package/.agent/agents/precedence-reviewer.md +266 -266
- package/.agent/agents/product-manager.md +167 -167
- package/.agent/agents/product-owner.md +103 -103
- package/.agent/agents/product-reviewer.md +103 -103
- package/.agent/agents/project-planner.md +181 -181
- package/.agent/agents/qa-automation-engineer.md +244 -244
- package/.agent/agents/resilience-reviewer.md +108 -108
- package/.agent/agents/schema-reviewer.md +87 -87
- package/.agent/agents/security-auditor.md +204 -204
- package/.agent/agents/seo-specialist.md +213 -213
- package/.agent/agents/sql-reviewer.md +180 -180
- package/.agent/agents/supervisor-agent.md +202 -202
- package/.agent/agents/swarm-worker-contracts.md +170 -170
- package/.agent/agents/swarm-worker-registry.md +99 -99
- package/.agent/agents/system-architect.md +260 -105
- package/.agent/agents/test-coverage-reviewer.md +181 -181
- package/.agent/agents/test-engineer.md +138 -138
- package/.agent/agents/throughput-optimizer.md +316 -316
- package/.agent/agents/type-safety-reviewer.md +202 -202
- package/.agent/agents/ui-ux-auditor.md +80 -80
- package/.agent/agents/ui-visual-auditor.md +102 -102
- package/.agent/agents/ux-reviewer.md +109 -109
- package/.agent/agents/visual-reviewer.md +103 -103
- package/.agent/agents/vitals-reviewer.md +245 -245
- package/.agent/config/claude.json +18 -18
- package/.agent/config/plugin.json +102 -102
- package/.agent/config/slash-commands.json +115 -115
- package/.agent/config/specialist-registry.json +415 -415
- package/.agent/config/system-prompt.md +258 -258
- package/.agent/history/arch-mapper-cache.json +6712 -0
- package/.agent/history/architecture.idx.json +5746 -0
- package/.agent/mcp_config.json +32 -32
- package/.agent/patterns/generator.md +11 -11
- package/.agent/patterns/inversion.md +14 -14
- package/.agent/patterns/pipeline.md +11 -11
- package/.agent/patterns/reviewer.md +15 -15
- package/.agent/patterns/tool-wrapper.md +11 -11
- package/.agent/plans/implementation_plan.md +48 -0
- package/.agent/plans/task.md +35 -0
- package/.agent/routing_index.json +2060 -2060
- package/.agent/rules/GEMINI.md +437 -437
- package/.agent/rules/GEMINI_PLANNER.md +82 -82
- package/.agent/rules/kernel.md +86 -86
- package/.agent/scripts/_colors.js +210 -210
- package/.agent/scripts/_utils.js +373 -377
- package/.agent/scripts/architecture_mapper.js +625 -0
- package/.agent/scripts/ast_context_loader.js +137 -137
- package/.agent/scripts/auto_preview.js +203 -203
- package/.agent/scripts/browser_audit.js +102 -102
- package/.agent/scripts/bundle_analyzer.js +287 -287
- package/.agent/scripts/case_law_manager.js +887 -887
- package/.agent/scripts/checklist.js +300 -300
- package/.agent/scripts/cicd_validator.js +305 -305
- package/.agent/scripts/context_broker.js +962 -962
- package/.agent/scripts/context_compiler.js +1143 -1112
- package/.agent/scripts/contract_engine.js +402 -402
- package/.agent/scripts/dependency_analyzer.js +313 -313
- package/.agent/scripts/graph_builder.js +384 -384
- package/.agent/scripts/graph_visualizer.js +390 -390
- package/.agent/scripts/graph_zoom.js +181 -181
- package/.agent/scripts/guardrail_engine.js +785 -785
- package/.agent/scripts/harness_manager.js +60 -60
- package/.agent/scripts/impact_classifier.js +192 -192
- package/.agent/scripts/inner_loop_validator.js +472 -472
- package/.agent/scripts/integrity_manifest.js +484 -484
- package/.agent/scripts/lint_runner.js +218 -218
- package/.agent/scripts/marathon_harness.js +986 -986
- package/.agent/scripts/mcp_server.js +181 -181
- package/.agent/scripts/memory_archivist.js +97 -97
- package/.agent/scripts/memory_consolidator.js +37 -37
- package/.agent/scripts/memory_engine.js +782 -782
- package/.agent/scripts/minify_context.js +111 -111
- package/.agent/scripts/minimal_change_engine.js +445 -445
- package/.agent/scripts/mutation_runner.js +307 -305
- package/.agent/scripts/payload_schemas.js +164 -164
- package/.agent/scripts/pipeline_engine.js +906 -906
- package/.agent/scripts/prompt_compiler.js +272 -272
- package/.agent/scripts/schema_validator.js +326 -326
- package/.agent/scripts/security_scan.js +390 -390
- package/.agent/scripts/session_logger.js +115 -115
- package/.agent/scripts/session_manager.js +299 -299
- package/.agent/scripts/signal_detector.js +175 -175
- package/.agent/scripts/skill_evolution.js +997 -997
- package/.agent/scripts/skill_integrator.js +304 -304
- package/.agent/scripts/socratic_gate_policy.js +63 -63
- package/.agent/scripts/strengthen_skills.js +199 -199
- package/.agent/scripts/swarm_dispatcher.js +983 -979
- package/.agent/scripts/syscall_registry.js +105 -105
- package/.agent/scripts/test_runner.js +209 -209
- package/.agent/scripts/token_budget_broker.js +165 -165
- package/.agent/scripts/trace_engine.js +126 -126
- package/.agent/scripts/verify_all.js +276 -276
- package/.agent/scripts/visual_audit.js +87 -87
- package/.agent/skill_topic_map.json +314 -314
- package/.agent/skills/12-principles-of-animation/SKILL.md +51 -51
- package/.agent/skills/60fps-animation/SKILL.md +91 -91
- package/.agent/skills/accessible-animation/SKILL.md +189 -189
- package/.agent/skills/adapt/SKILL.md +56 -56
- package/.agent/skills/adr-generation/SKILL.md +57 -0
- package/.agent/skills/advanced-rag-pipelines/SKILL.md +94 -94
- package/.agent/skills/agent-organizer/SKILL.md +117 -117
- package/.agent/skills/agent-syscall-guidelines/SKILL.md +25 -25
- package/.agent/skills/agentic-patterns/SKILL.md +281 -281
- package/.agent/skills/agentic-workflows-2026/SKILL.md +91 -91
- package/.agent/skills/agentshield-security/SKILL.md +26 -26
- package/.agent/skills/ai-app-hardening/SKILL.md +51 -51
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +162 -162
- package/.agent/skills/animation-on-scroll/SKILL.md +196 -196
- package/.agent/skills/animation-systems/SKILL.md +198 -198
- package/.agent/skills/antfu-conventions/SKILL.md +54 -54
- package/.agent/skills/api-patterns/SKILL.md +218 -218
- package/.agent/skills/api-security-auditor/SKILL.md +155 -155
- package/.agent/skills/app-builder/SKILL.md +535 -535
- package/.agent/skills/app-builder/templates/SKILL.md +108 -108
- package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -76
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -92
- package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -88
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -88
- package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -83
- package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -90
- package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -90
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +126 -126
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +127 -127
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +172 -172
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +139 -139
- package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -83
- package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +122 -122
- package/.agent/skills/appflow-wireframe/SKILL.md +96 -96
- package/.agent/skills/apple-design/SKILL.md +89 -89
- package/.agent/skills/architecture/SKILL.md +188 -188
- package/.agent/skills/architecture-drift/SKILL.md +45 -0
- package/.agent/skills/audit-and-fix/SKILL.md +100 -100
- package/.agent/skills/authentication-best-practices/SKILL.md +157 -157
- package/.agent/skills/autonomous-execution/SKILL.md +76 -0
- package/.agent/skills/backend-security-expert/SKILL.md +73 -73
- package/.agent/skills/baseline-ui/SKILL.md +55 -55
- package/.agent/skills/bash-linux/SKILL.md +139 -139
- package/.agent/skills/behavioral-modes/SKILL.md +200 -200
- package/.agent/skills/better-colors/SKILL.md +116 -116
- package/.agent/skills/better-typography/SKILL.md +90 -90
- package/.agent/skills/better-ui/SKILL.md +130 -130
- package/.agent/skills/bolder/SKILL.md +49 -49
- package/.agent/skills/brainstorming/SKILL.md +460 -460
- package/.agent/skills/browser-audit/SKILL.md +102 -102
- package/.agent/skills/browser-native-ai/SKILL.md +72 -72
- package/.agent/skills/build-primitive/SKILL.md +50 -50
- package/.agent/skills/building-native-ui/SKILL.md +162 -162
- package/.agent/skills/cicd-pro/SKILL.md +412 -412
- package/.agent/skills/clarify/SKILL.md +55 -55
- package/.agent/skills/clean-code/SKILL.md +367 -367
- package/.agent/skills/cloud-architect/SKILL.md +409 -409
- package/.agent/skills/cobejs/SKILL.md +70 -70
- package/.agent/skills/code-review-checklist/SKILL.md +163 -163
- package/.agent/skills/codebase-design/SKILL.md +76 -76
- package/.agent/skills/colorize/SKILL.md +57 -57
- package/.agent/skills/compact-landing/SKILL.md +50 -50
- package/.agent/skills/company-logos/SKILL.md +54 -54
- package/.agent/skills/config-validator/SKILL.md +125 -125
- package/.agent/skills/containerization-pro/SKILL.md +422 -422
- package/.agent/skills/context-engineering-pro/SKILL.md +69 -69
- package/.agent/skills/create-design-md/SKILL.md +92 -92
- package/.agent/skills/critique/SKILL.md +79 -79
- package/.agent/skills/csharp-developer/SKILL.md +478 -478
- package/.agent/skills/data-validation-schemas/SKILL.md +297 -297
- package/.agent/skills/database-design/SKILL.md +219 -219
- package/.agent/skills/delight/SKILL.md +46 -46
- package/.agent/skills/deployment-procedures/SKILL.md +132 -132
- package/.agent/skills/design-lab/SKILL.md +42 -42
- package/.agent/skills/devops-engineer/SKILL.md +305 -305
- package/.agent/skills/devops-incident-responder/SKILL.md +103 -103
- package/.agent/skills/diagnosing-bugs/SKILL.md +172 -172
- package/.agent/skills/distill/SKILL.md +45 -45
- package/.agent/skills/documentation-templates/SKILL.md +251 -251
- package/.agent/skills/domain-modeling/SKILL.md +61 -61
- package/.agent/skills/duckdb-analytical-sql/SKILL.md +51 -51
- package/.agent/skills/edge-ai-mobile/SKILL.md +42 -42
- package/.agent/skills/edge-computing/SKILL.md +143 -143
- package/.agent/skills/emil-design-eng/SKILL.md +134 -134
- package/.agent/skills/error-resilience/SKILL.md +403 -403
- package/.agent/skills/expo-router-v4/SKILL.md +72 -72
- package/.agent/skills/extract-design-system/SKILL.md +120 -120
- package/.agent/skills/fabel-protocol/SKILL.md +282 -282
- package/.agent/skills/failure-mode-analysis/SKILL.md +48 -0
- package/.agent/skills/fixing-accessibility/SKILL.md +87 -87
- package/.agent/skills/fixing-metadata/SKILL.md +83 -83
- package/.agent/skills/fixing-motion-performance/SKILL.md +78 -78
- package/.agent/skills/framer-motion-expert/SKILL.md +237 -237
- package/.agent/skills/frontend-design/SKILL.md +103 -103
- package/.agent/skills/frontend-security-expert/SKILL.md +56 -56
- package/.agent/skills/game-design-expert/SKILL.md +92 -92
- package/.agent/skills/game-engineering-expert/SKILL.md +108 -108
- package/.agent/skills/generative-ui-expert/SKILL.md +100 -100
- package/.agent/skills/geo-fundamentals/SKILL.md +108 -108
- package/.agent/skills/git-pro/SKILL.md +401 -401
- package/.agent/skills/github-operations/SKILL.md +295 -295
- package/.agent/skills/gpt-taste/SKILL.md +50 -50
- package/.agent/skills/graph-engineering/SKILL.md +28 -28
- package/.agent/skills/gsap-core/SKILL.md +277 -277
- package/.agent/skills/gsap-frameworks/SKILL.md +168 -168
- package/.agent/skills/gsap-performance/SKILL.md +94 -94
- package/.agent/skills/gsap-plugins/SKILL.md +441 -441
- package/.agent/skills/gsap-react/SKILL.md +213 -213
- package/.agent/skills/gsap-scrolltrigger/SKILL.md +312 -312
- package/.agent/skills/gsap-timeline/SKILL.md +122 -122
- package/.agent/skills/gsap-utils/SKILL.md +299 -299
- package/.agent/skills/harden/SKILL.md +55 -55
- package/.agent/skills/harness-protocol/SKILL.md +48 -48
- package/.agent/skills/huggingface-spaces/SKILL.md +1 -1
- package/.agent/skills/human-gate-negotiation/SKILL.md +30 -30
- package/.agent/skills/i18n-localization/SKILL.md +134 -134
- package/.agent/skills/impeccable/SKILL.md +52 -52
- package/.agent/skills/improve-codebase-architecture/SKILL.md +48 -48
- package/.agent/skills/improve-ui/SKILL.md +70 -70
- package/.agent/skills/intelligent-routing/SKILL.md +204 -204
- package/.agent/skills/knowledge-graph/SKILL.md +71 -71
- package/.agent/skills/landing-page/SKILL.md +65 -65
- package/.agent/skills/lint-and-validate/SKILL.md +224 -224
- package/.agent/skills/llm-engineering/SKILL.md +360 -360
- package/.agent/skills/local-first/SKILL.md +138 -138
- package/.agent/skills/local-first-architecture/SKILL.md +62 -62
- package/.agent/skills/lottie-animation/SKILL.md +62 -62
- package/.agent/skills/marquee-loop/SKILL.md +72 -72
- package/.agent/skills/masked-reveal/SKILL.md +230 -230
- package/.agent/skills/mcp-builder/SKILL.md +105 -105
- package/.agent/skills/micro-interaction/SKILL.md +253 -253
- package/.agent/skills/mobile-design/SKILL.md +245 -245
- package/.agent/skills/monorepo-management/SKILL.md +295 -295
- package/.agent/skills/morphing-icons/SKILL.md +348 -348
- package/.agent/skills/motion-engineering/SKILL.md +197 -197
- package/.agent/skills/nextjs-react-expert/SKILL.md +218 -218
- package/.agent/skills/nodejs-best-practices/SKILL.md +542 -542
- package/.agent/skills/observability/SKILL.md +303 -303
- package/.agent/skills/opentelemetry-observability/SKILL.md +51 -51
- package/.agent/skills/page-transition-animation/SKILL.md +86 -86
- package/.agent/skills/parallel-agents/SKILL.md +110 -110
- package/.agent/skills/performance-profiling/SKILL.md +230 -230
- package/.agent/skills/plan-writing/SKILL.md +127 -127
- package/.agent/skills/platform-engineer/SKILL.md +108 -108
- package/.agent/skills/platform-engineering-opentofu/SKILL.md +59 -59
- package/.agent/skills/playwright-ai-e2e/SKILL.md +52 -52
- package/.agent/skills/playwright-best-practices/SKILL.md +149 -149
- package/.agent/skills/polish/SKILL.md +39 -39
- package/.agent/skills/powershell-windows/SKILL.md +122 -122
- package/.agent/skills/pricing-page/SKILL.md +48 -48
- package/.agent/skills/product-aware-heuristics/SKILL.md +390 -390
- package/.agent/skills/progressive-blur/SKILL.md +80 -80
- package/.agent/skills/project-idioms/SKILL.md +91 -91
- package/.agent/skills/property-based-testing/SKILL.md +50 -50
- package/.agent/skills/python-patterns/SKILL.md +220 -220
- package/.agent/skills/python-pro/SKILL.md +305 -305
- package/.agent/skills/quieter/SKILL.md +49 -49
- package/.agent/skills/react-doctor/SKILL.md +51 -51
- package/.agent/skills/react-specialist/SKILL.md +280 -280
- package/.agent/skills/readme-builder/SKILL.md +270 -270
- package/.agent/skills/realtime-patterns/SKILL.md +283 -283
- package/.agent/skills/red-team-tactics/SKILL.md +191 -191
- package/.agent/skills/redesign-skill/SKILL.md +46 -46
- package/.agent/skills/review-animations/SKILL.md +45 -45
- package/.agent/skills/review-animations/STANDARDS.md +87 -87
- package/.agent/skills/rust-pro/SKILL.md +652 -652
- package/.agent/skills/semantic-filesystem-navigation/SKILL.md +24 -24
- package/.agent/skills/seo-fundamentals/SKILL.md +139 -139
- package/.agent/skills/server-management/SKILL.md +178 -178
- package/.agent/skills/session-log-interrogation/SKILL.md +29 -29
- package/.agent/skills/shadcn-ui-expert/SKILL.md +196 -196
- package/.agent/skills/shape/SKILL.md +56 -56
- package/.agent/skills/skill-creator/SKILL.md +177 -177
- package/.agent/skills/soft-skill/SKILL.md +53 -53
- package/.agent/skills/sounds-on-the-web/SKILL.md +76 -76
- package/.agent/skills/sql-pro/SKILL.md +624 -624
- package/.agent/skills/subagent-driven-development/SKILL.md +32 -32
- package/.agent/skills/supabase-postgres-best-practices/SKILL.md +57 -57
- package/.agent/skills/svg-animation/SKILL.md +356 -356
- package/.agent/skills/swiftui-expert/SKILL.md +164 -164
- package/.agent/skills/swiss-design/SKILL.md +44 -44
- package/.agent/skills/system-design-pro/SKILL.md +188 -318
- package/.agent/skills/systematic-debugging/SKILL.md +129 -129
- package/.agent/skills/systematic-debugging/condition-based-waiting.md +120 -120
- package/.agent/skills/systematic-debugging/defense-in-depth.md +128 -128
- package/.agent/skills/systematic-debugging/root-cause-tracing.md +183 -183
- package/.agent/skills/tailwind-patterns/SKILL.md +583 -583
- package/.agent/skills/taste-skill/SKILL.md +52 -52
- package/.agent/skills/tdd-workflow/SKILL.md +105 -105
- package/.agent/skills/test-result-analyzer/SKILL.md +270 -270
- package/.agent/skills/testing-patterns/SKILL.md +534 -534
- package/.agent/skills/thermo-nuclear-code-quality-review/SKILL.md +62 -62
- package/.agent/skills/thinking-protocol/SKILL.md +21 -21
- package/.agent/skills/to-spring-or-not-to-spring/SKILL.md +43 -43
- package/.agent/skills/transformers-js/references/CONFIGURATION.md +1 -1
- package/.agent/skills/transitions-dev/SKILL.md +90 -90
- package/.agent/skills/trend-researcher/SKILL.md +198 -198
- package/.agent/skills/tribunal-instincts-memory/SKILL.md +31 -31
- package/.agent/skills/typescript-advanced/SKILL.md +306 -306
- package/.agent/skills/typeset/SKILL.md +60 -60
- package/.agent/skills/ui-reasoning-engine/SKILL.md +155 -155
- package/.agent/skills/ui-skill-packs/SKILL.md +57 -57
- package/.agent/skills/ui-skills-root/SKILL.md +69 -69
- package/.agent/skills/ui-ux-pro-max/SKILL.md +110 -110
- package/.agent/skills/ui-ux-researcher/SKILL.md +199 -199
- package/.agent/skills/vector-search-pgvector/SKILL.md +70 -70
- package/.agent/skills/verification-before-completion/SKILL.md +107 -107
- package/.agent/skills/vue-expert/SKILL.md +259 -259
- package/.agent/skills/vulnerability-scanner/SKILL.md +378 -378
- package/.agent/skills/web-accessibility-auditor/SKILL.md +179 -179
- package/.agent/skills/web-design-guidelines/SKILL.md +49 -49
- package/.agent/skills/web-quality-audit/SKILL.md +47 -47
- package/.agent/skills/webapp-testing/SKILL.md +128 -128
- package/.agent/skills/webgpu-performance/SKILL.md +88 -88
- package/.agent/skills/whimsy-injector/SKILL.md +305 -305
- package/.agent/skills/workflow-optimizer/SKILL.md +188 -188
- package/.agent/skills/zero-trust-passkeys/SKILL.md +82 -82
- package/.agent/templates/DESIGN.md +843 -843
- package/.agent/templates/design-tokens.json +140 -140
- package/.agent/templates/sdd/implementer-prompt.md +62 -62
- package/.agent/templates/sdd/re-review-prompt.md +36 -36
- package/.agent/templates/sdd/task-reviewer-prompt.md +78 -78
- package/.agent/workflows/acf.md +153 -153
- package/.agent/workflows/api-tester.md +189 -189
- package/.agent/workflows/assimilate.md +21 -21
- package/.agent/workflows/audit-live.md +53 -53
- package/.agent/workflows/audit.md +172 -172
- package/.agent/workflows/brainstorm.md +157 -157
- package/.agent/workflows/changelog.md +152 -152
- package/.agent/workflows/compare-web.md +35 -35
- package/.agent/workflows/context.md +102 -102
- package/.agent/workflows/contract.md +79 -79
- package/.agent/workflows/create.md +182 -182
- package/.agent/workflows/debug.md +201 -201
- package/.agent/workflows/deploy.md +215 -215
- package/.agent/workflows/enhance.md +165 -165
- package/.agent/workflows/fix-ci.md +94 -94
- package/.agent/workflows/fix.md +149 -149
- package/.agent/workflows/generate.md +216 -216
- package/.agent/workflows/htop.md +22 -22
- package/.agent/workflows/marathon.md +291 -291
- package/.agent/workflows/migrate.md +198 -198
- package/.agent/workflows/minimal.md +101 -101
- package/.agent/workflows/orchestrate.md +205 -205
- package/.agent/workflows/performance-benchmarker.md +148 -148
- package/.agent/workflows/pipeline.md +165 -165
- package/.agent/workflows/plan.md +206 -206
- package/.agent/workflows/preview.md +116 -116
- package/.agent/workflows/refactor.md +207 -207
- package/.agent/workflows/resume.md +20 -20
- package/.agent/workflows/review-ai.md +139 -139
- package/.agent/workflows/review.md +155 -155
- package/.agent/workflows/sdd.md +137 -137
- package/.agent/workflows/session.md +135 -135
- package/.agent/workflows/skill-enhancement-engine.md +84 -84
- package/.agent/workflows/status.md +112 -112
- package/.agent/workflows/strengthen-skills.md +174 -174
- package/.agent/workflows/super-prompt.md +146 -146
- package/.agent/workflows/swarm.md +218 -218
- package/.agent/workflows/team-mode.md +22 -22
- package/.agent/workflows/test.md +224 -224
- package/.agent/workflows/tribunal-backend.md +149 -149
- package/.agent/workflows/tribunal-cicd.md +109 -109
- package/.agent/workflows/tribunal-database.md +142 -142
- package/.agent/workflows/tribunal-frontend.md +157 -157
- package/.agent/workflows/tribunal-full.md +156 -156
- package/.agent/workflows/tribunal-mobile.md +142 -142
- package/.agent/workflows/tribunal-performance.md +149 -149
- package/.agent/workflows/tribunal-speed.md +222 -222
- package/.agent/workflows/tribunal-ui.md +97 -97
- package/.agent/workflows/ui-ux-pro-max.md +103 -103
- package/.agents/skills/12-principles-of-animation/SKILL.md +51 -51
- package/.agents/skills/60fps-animation/SKILL.md +91 -91
- package/.agents/skills/accessible-animation/SKILL.md +189 -189
- package/.agents/skills/adapt/SKILL.md +56 -56
- package/.agents/skills/adr-generation/SKILL.md +57 -0
- package/.agents/skills/advanced-rag-pipelines/SKILL.md +94 -94
- package/.agents/skills/agent-organizer/SKILL.md +117 -117
- package/.agents/skills/agent-syscall-guidelines/SKILL.md +25 -25
- package/.agents/skills/agentic-patterns/SKILL.md +281 -281
- package/.agents/skills/agentic-workflows-2026/SKILL.md +91 -91
- package/.agents/skills/agentshield-security/SKILL.md +26 -26
- package/.agents/skills/ai-app-hardening/SKILL.md +51 -51
- package/.agents/skills/ai-prompt-injection-defense/SKILL.md +162 -162
- package/.agents/skills/animation-on-scroll/SKILL.md +196 -196
- package/.agents/skills/animation-systems/SKILL.md +198 -198
- package/.agents/skills/antfu-conventions/SKILL.md +54 -54
- package/.agents/skills/api-patterns/SKILL.md +218 -218
- package/.agents/skills/api-security-auditor/SKILL.md +155 -155
- package/.agents/skills/app-builder/SKILL.md +535 -535
- package/.agents/skills/app-builder/templates/SKILL.md +108 -108
- package/.agents/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -76
- package/.agents/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -92
- package/.agents/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -88
- package/.agents/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -88
- package/.agents/skills/app-builder/templates/express-api/TEMPLATE.md +83 -83
- package/.agents/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -90
- package/.agents/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -90
- package/.agents/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +126 -126
- package/.agents/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +127 -127
- package/.agents/skills/app-builder/templates/nextjs-static/TEMPLATE.md +172 -172
- package/.agents/skills/app-builder/templates/nuxt-app/TEMPLATE.md +139 -139
- package/.agents/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -83
- package/.agents/skills/app-builder/templates/react-native-app/TEMPLATE.md +122 -122
- package/.agents/skills/appflow-wireframe/SKILL.md +96 -96
- package/.agents/skills/apple-design/SKILL.md +89 -89
- package/.agents/skills/architecture/SKILL.md +188 -188
- package/.agents/skills/architecture-drift/SKILL.md +45 -0
- package/.agents/skills/audit-and-fix/SKILL.md +100 -100
- package/.agents/skills/authentication-best-practices/SKILL.md +157 -157
- package/.agents/skills/autonomous-execution/SKILL.md +76 -0
- package/.agents/skills/backend-security-expert/SKILL.md +73 -73
- package/.agents/skills/baseline-ui/SKILL.md +55 -55
- package/.agents/skills/bash-linux/SKILL.md +139 -139
- package/.agents/skills/behavioral-modes/SKILL.md +200 -200
- package/.agents/skills/better-colors/SKILL.md +116 -116
- package/.agents/skills/better-typography/SKILL.md +90 -90
- package/.agents/skills/better-ui/SKILL.md +130 -130
- package/.agents/skills/bolder/SKILL.md +49 -49
- package/.agents/skills/brainstorming/SKILL.md +460 -460
- package/.agents/skills/browser-audit/SKILL.md +102 -102
- package/.agents/skills/browser-native-ai/SKILL.md +72 -72
- package/.agents/skills/build-primitive/SKILL.md +50 -50
- package/.agents/skills/building-native-ui/SKILL.md +162 -162
- package/.agents/skills/cicd-pro/SKILL.md +412 -412
- package/.agents/skills/clarify/SKILL.md +55 -55
- package/.agents/skills/clean-code/SKILL.md +367 -367
- package/.agents/skills/cloud-architect/SKILL.md +409 -409
- package/.agents/skills/cobejs/SKILL.md +70 -70
- package/.agents/skills/code-review-checklist/SKILL.md +163 -163
- package/.agents/skills/codebase-design/SKILL.md +76 -76
- package/.agents/skills/colorize/SKILL.md +57 -57
- package/.agents/skills/compact-landing/SKILL.md +50 -50
- package/.agents/skills/company-logos/SKILL.md +54 -54
- package/.agents/skills/config-validator/SKILL.md +125 -125
- package/.agents/skills/containerization-pro/SKILL.md +422 -422
- package/.agents/skills/context-engineering-pro/SKILL.md +69 -69
- package/.agents/skills/create-design-md/SKILL.md +92 -92
- package/.agents/skills/critique/SKILL.md +79 -79
- package/.agents/skills/csharp-developer/SKILL.md +478 -478
- package/.agents/skills/data-validation-schemas/SKILL.md +297 -297
- package/.agents/skills/database-design/SKILL.md +219 -219
- package/.agents/skills/delight/SKILL.md +46 -46
- package/.agents/skills/deployment-procedures/SKILL.md +132 -132
- package/.agents/skills/design-lab/SKILL.md +42 -42
- package/.agents/skills/devops-engineer/SKILL.md +305 -305
- package/.agents/skills/devops-incident-responder/SKILL.md +103 -103
- package/.agents/skills/diagnosing-bugs/SKILL.md +172 -172
- package/.agents/skills/distill/SKILL.md +45 -45
- package/.agents/skills/documentation-templates/SKILL.md +251 -251
- package/.agents/skills/domain-modeling/SKILL.md +61 -61
- package/.agents/skills/duckdb-analytical-sql/SKILL.md +51 -51
- package/.agents/skills/edge-ai-mobile/SKILL.md +42 -42
- package/.agents/skills/edge-computing/SKILL.md +143 -143
- package/.agents/skills/emil-design-eng/SKILL.md +134 -134
- package/.agents/skills/error-resilience/SKILL.md +403 -403
- package/.agents/skills/expo-router-v4/SKILL.md +72 -72
- package/.agents/skills/extract-design-system/SKILL.md +120 -120
- package/.agents/skills/fabel-protocol/SKILL.md +282 -282
- package/.agents/skills/failure-mode-analysis/SKILL.md +48 -0
- package/.agents/skills/fixing-accessibility/SKILL.md +87 -87
- package/.agents/skills/fixing-metadata/SKILL.md +83 -83
- package/.agents/skills/fixing-motion-performance/SKILL.md +78 -78
- package/.agents/skills/framer-motion-expert/SKILL.md +237 -237
- package/.agents/skills/frontend-design/SKILL.md +103 -103
- package/.agents/skills/frontend-security-expert/SKILL.md +56 -56
- package/.agents/skills/game-design-expert/SKILL.md +92 -92
- package/.agents/skills/game-engineering-expert/SKILL.md +108 -108
- package/.agents/skills/generative-ui-expert/SKILL.md +100 -100
- package/.agents/skills/geo-fundamentals/SKILL.md +108 -108
- package/.agents/skills/git-pro/SKILL.md +401 -401
- package/.agents/skills/github-operations/SKILL.md +295 -295
- package/.agents/skills/gpt-taste/SKILL.md +50 -50
- package/.agents/skills/graph-engineering/SKILL.md +28 -28
- package/.agents/skills/gsap-core/SKILL.md +277 -277
- package/.agents/skills/gsap-frameworks/SKILL.md +168 -168
- package/.agents/skills/gsap-performance/SKILL.md +94 -94
- package/.agents/skills/gsap-plugins/SKILL.md +441 -441
- package/.agents/skills/gsap-react/SKILL.md +213 -213
- package/.agents/skills/gsap-scrolltrigger/SKILL.md +312 -312
- package/.agents/skills/gsap-timeline/SKILL.md +122 -122
- package/.agents/skills/gsap-utils/SKILL.md +299 -299
- package/.agents/skills/harden/SKILL.md +55 -55
- package/.agents/skills/harness-protocol/SKILL.md +48 -48
- package/.agents/skills/huggingface-spaces/SKILL.md +1 -1
- package/.agents/skills/human-gate-negotiation/SKILL.md +30 -30
- package/.agents/skills/i18n-localization/SKILL.md +134 -134
- package/.agents/skills/impeccable/SKILL.md +52 -52
- package/.agents/skills/improve-codebase-architecture/SKILL.md +48 -48
- package/.agents/skills/improve-ui/SKILL.md +70 -70
- package/.agents/skills/intelligent-routing/SKILL.md +204 -204
- package/.agents/skills/knowledge-graph/SKILL.md +71 -71
- package/.agents/skills/landing-page/SKILL.md +65 -65
- package/.agents/skills/lint-and-validate/SKILL.md +224 -224
- package/.agents/skills/llm-engineering/SKILL.md +360 -360
- package/.agents/skills/local-first/SKILL.md +138 -138
- package/.agents/skills/local-first-architecture/SKILL.md +62 -62
- package/.agents/skills/lottie-animation/SKILL.md +62 -62
- package/.agents/skills/marquee-loop/SKILL.md +72 -72
- package/.agents/skills/masked-reveal/SKILL.md +230 -230
- package/.agents/skills/mcp-builder/SKILL.md +105 -105
- package/.agents/skills/micro-interaction/SKILL.md +253 -253
- package/.agents/skills/mobile-design/SKILL.md +245 -245
- package/.agents/skills/monorepo-management/SKILL.md +295 -295
- package/.agents/skills/morphing-icons/SKILL.md +348 -348
- package/.agents/skills/motion-engineering/SKILL.md +197 -197
- package/.agents/skills/nextjs-react-expert/SKILL.md +218 -218
- package/.agents/skills/nodejs-best-practices/SKILL.md +542 -542
- package/.agents/skills/observability/SKILL.md +303 -303
- package/.agents/skills/opentelemetry-observability/SKILL.md +51 -51
- package/.agents/skills/page-transition-animation/SKILL.md +86 -86
- package/.agents/skills/parallel-agents/SKILL.md +110 -110
- package/.agents/skills/performance-profiling/SKILL.md +230 -230
- package/.agents/skills/plan-writing/SKILL.md +127 -127
- package/.agents/skills/platform-engineer/SKILL.md +108 -108
- package/.agents/skills/platform-engineering-opentofu/SKILL.md +59 -59
- package/.agents/skills/playwright-ai-e2e/SKILL.md +52 -52
- package/.agents/skills/playwright-best-practices/SKILL.md +149 -149
- package/.agents/skills/polish/SKILL.md +39 -39
- package/.agents/skills/powershell-windows/SKILL.md +122 -122
- package/.agents/skills/pricing-page/SKILL.md +48 -48
- package/.agents/skills/product-aware-heuristics/SKILL.md +390 -390
- package/.agents/skills/progressive-blur/SKILL.md +80 -80
- package/.agents/skills/project-idioms/SKILL.md +91 -91
- package/.agents/skills/property-based-testing/SKILL.md +50 -50
- package/.agents/skills/python-patterns/SKILL.md +220 -220
- package/.agents/skills/python-pro/SKILL.md +305 -305
- package/.agents/skills/quieter/SKILL.md +49 -49
- package/.agents/skills/react-doctor/SKILL.md +51 -51
- package/.agents/skills/react-specialist/SKILL.md +280 -280
- package/.agents/skills/readme-builder/SKILL.md +270 -270
- package/.agents/skills/realtime-patterns/SKILL.md +283 -283
- package/.agents/skills/red-team-tactics/SKILL.md +191 -191
- package/.agents/skills/redesign-skill/SKILL.md +46 -46
- package/.agents/skills/review-animations/SKILL.md +45 -45
- package/.agents/skills/review-animations/STANDARDS.md +87 -87
- package/.agents/skills/rust-pro/SKILL.md +652 -652
- package/.agents/skills/semantic-filesystem-navigation/SKILL.md +24 -24
- package/.agents/skills/seo-fundamentals/SKILL.md +139 -139
- package/.agents/skills/server-management/SKILL.md +178 -178
- package/.agents/skills/session-log-interrogation/SKILL.md +29 -29
- package/.agents/skills/shadcn-ui-expert/SKILL.md +196 -196
- package/.agents/skills/shape/SKILL.md +56 -56
- package/.agents/skills/skill-creator/SKILL.md +177 -177
- package/.agents/skills/soft-skill/SKILL.md +53 -53
- package/.agents/skills/sounds-on-the-web/SKILL.md +76 -76
- package/.agents/skills/sql-pro/SKILL.md +624 -624
- package/.agents/skills/subagent-driven-development/SKILL.md +32 -32
- package/.agents/skills/supabase-postgres-best-practices/SKILL.md +57 -57
- package/.agents/skills/svg-animation/SKILL.md +356 -356
- package/.agents/skills/swiftui-expert/SKILL.md +164 -164
- package/.agents/skills/swiss-design/SKILL.md +44 -44
- package/.agents/skills/system-design-pro/SKILL.md +188 -318
- package/.agents/skills/systematic-debugging/SKILL.md +129 -129
- package/.agents/skills/systematic-debugging/condition-based-waiting.md +120 -120
- package/.agents/skills/systematic-debugging/defense-in-depth.md +128 -128
- package/.agents/skills/systematic-debugging/root-cause-tracing.md +183 -183
- package/.agents/skills/tailwind-patterns/SKILL.md +583 -583
- package/.agents/skills/taste-skill/SKILL.md +52 -52
- package/.agents/skills/tdd-workflow/SKILL.md +105 -105
- package/.agents/skills/test-result-analyzer/SKILL.md +270 -270
- package/.agents/skills/testing-patterns/SKILL.md +534 -534
- package/.agents/skills/thermo-nuclear-code-quality-review/SKILL.md +62 -62
- package/.agents/skills/thinking-protocol/SKILL.md +21 -21
- package/.agents/skills/to-spring-or-not-to-spring/SKILL.md +43 -43
- package/.agents/skills/transformers-js/references/CONFIGURATION.md +1 -1
- package/.agents/skills/transitions-dev/SKILL.md +90 -90
- package/.agents/skills/trend-researcher/SKILL.md +198 -198
- package/.agents/skills/tribunal-instincts-memory/SKILL.md +31 -31
- package/.agents/skills/typescript-advanced/SKILL.md +306 -306
- package/.agents/skills/typeset/SKILL.md +60 -60
- package/.agents/skills/ui-reasoning-engine/SKILL.md +155 -155
- package/.agents/skills/ui-skill-packs/SKILL.md +57 -57
- package/.agents/skills/ui-skills-root/SKILL.md +69 -69
- package/.agents/skills/ui-ux-pro-max/SKILL.md +110 -110
- package/.agents/skills/ui-ux-researcher/SKILL.md +199 -199
- package/.agents/skills/vector-search-pgvector/SKILL.md +70 -70
- package/.agents/skills/verification-before-completion/SKILL.md +107 -107
- package/.agents/skills/vue-expert/SKILL.md +259 -259
- package/.agents/skills/vulnerability-scanner/SKILL.md +378 -378
- package/.agents/skills/web-accessibility-auditor/SKILL.md +179 -179
- package/.agents/skills/web-design-guidelines/SKILL.md +49 -49
- package/.agents/skills/web-quality-audit/SKILL.md +47 -47
- package/.agents/skills/webapp-testing/SKILL.md +128 -128
- package/.agents/skills/webgpu-performance/SKILL.md +88 -88
- package/.agents/skills/whimsy-injector/SKILL.md +305 -305
- package/.agents/skills/workflow-optimizer/SKILL.md +188 -188
- package/.agents/skills/zero-trust-passkeys/SKILL.md +82 -82
- package/AGENTS.md +93 -93
- package/CLAUDE.md +444 -444
- package/CONTRIBUTING.md +134 -134
- package/README.md +242 -242
- package/SECURITY.md +58 -52
- package/bin/adapter-install.js +264 -264
- package/bin/global-store.js +48 -48
- package/bin/mcp-server.js +1653 -1653
- package/bin/proxy-server.js +122 -122
- package/bin/spawn-agent.js +45 -45
- package/bin/tk-proxy.js +34 -34
- package/bin/tribunal-kit.js +113 -113
- package/bin/wrapper.js +209 -211
- package/hooks/hooks-cursor.json +10 -10
- package/hooks/hooks.json +10 -10
- package/hooks/session-start.js +77 -77
- package/mcp_config.json +18 -18
- package/package.json +169 -179
- package/{.claude-plugin → plugins/claude}/marketplace.json +14 -14
- package/{.claude-plugin → plugins/claude}/plugin.json +26 -26
- package/{.codex-plugin → plugins/codex}/plugin.json +41 -41
- package/{plugin.json → plugins/core-plugin.json} +26 -26
- package/{.cursor-plugin → plugins/cursor}/plugin.json +26 -26
- package/{.devin-plugin → plugins/devin}/plugin.json +14 -14
- package/{gemini-extension.json → plugins/gemini/extension.json} +6 -6
- package/{.hermes-plugin → plugins/hermes}/__init__.py +102 -102
- package/{.hermes-plugin → plugins/hermes}/plugin.yaml +6 -6
- package/{.kimi-plugin → plugins/kimi}/plugin.json +34 -34
- package/{marketplace.json → plugins/marketplace.json} +14 -14
- package/{.opencode → plugins/opencode}/INSTALL.md +42 -42
- package/{.opencode → plugins/opencode}/plugins/tribunal.js +110 -110
- package/{.opencode → plugins/opencode}/rules.md +258 -258
- package/{.pi → plugins/pi}/extensions/tribunal.ts +130 -130
- package/scripts/apply-version.js +57 -57
- package/scripts/audit_skill_sdo.js +89 -89
- package/scripts/benchmark.js +231 -231
- package/scripts/build-graph.js +71 -71
- package/scripts/changelog.js +190 -190
- package/scripts/clean-pycache.js +42 -42
- package/scripts/context_compiler.js +1143 -1117
- package/scripts/fix-vbc.js +96 -96
- package/scripts/fix-vbc.ps1 +3 -3
- package/scripts/modernize_skills.js +268 -268
- package/scripts/package-cores.js +116 -116
- package/scripts/skill_enhancement_engine.js +608 -608
- package/scripts/stress_benchmark.js +358 -358
- package/scripts/sync-skills.js +61 -61
- package/scripts/sync-version.js +177 -177
- package/scripts/telemetry_gc.js +156 -156
- package/scripts/validate-payload.js +73 -73
- package/scripts/visual_audit.js +136 -136
- package/skills/12-principles-of-animation/SKILL.md +51 -51
- package/skills/60fps-animation/SKILL.md +91 -91
- package/skills/accessible-animation/SKILL.md +189 -189
- package/skills/adapt/SKILL.md +56 -56
- package/skills/adr-generation/SKILL.md +57 -0
- package/skills/advanced-rag-pipelines/SKILL.md +94 -94
- package/skills/agent-organizer/SKILL.md +117 -117
- package/skills/agent-syscall-guidelines/SKILL.md +25 -25
- package/skills/agentic-patterns/SKILL.md +281 -281
- package/skills/agentic-workflows-2026/SKILL.md +91 -91
- package/skills/agentshield-security/SKILL.md +26 -26
- package/skills/ai-app-hardening/SKILL.md +51 -51
- package/skills/ai-prompt-injection-defense/SKILL.md +162 -162
- package/skills/animation-on-scroll/SKILL.md +196 -196
- package/skills/animation-systems/SKILL.md +198 -198
- package/skills/antfu-conventions/SKILL.md +54 -54
- package/skills/api-patterns/SKILL.md +218 -218
- package/skills/api-security-auditor/SKILL.md +155 -155
- package/skills/app-builder/SKILL.md +535 -535
- package/skills/app-builder/templates/SKILL.md +108 -108
- package/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -76
- package/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -92
- package/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -88
- package/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -88
- package/skills/app-builder/templates/express-api/TEMPLATE.md +83 -83
- package/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -90
- package/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -90
- package/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +126 -126
- package/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +127 -127
- package/skills/app-builder/templates/nextjs-static/TEMPLATE.md +172 -172
- package/skills/app-builder/templates/nuxt-app/TEMPLATE.md +139 -139
- package/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -83
- package/skills/app-builder/templates/react-native-app/TEMPLATE.md +122 -122
- package/skills/appflow-wireframe/SKILL.md +96 -96
- package/skills/apple-design/SKILL.md +89 -89
- package/skills/architecture/SKILL.md +188 -188
- package/skills/architecture-drift/SKILL.md +45 -0
- package/skills/audit-and-fix/SKILL.md +100 -100
- package/skills/authentication-best-practices/SKILL.md +157 -157
- package/skills/autonomous-execution/SKILL.md +76 -0
- package/skills/backend-security-expert/SKILL.md +73 -73
- package/skills/baseline-ui/SKILL.md +55 -55
- package/skills/bash-linux/SKILL.md +139 -139
- package/skills/behavioral-modes/SKILL.md +200 -200
- package/skills/better-colors/SKILL.md +116 -116
- package/skills/better-typography/SKILL.md +90 -90
- package/skills/better-ui/SKILL.md +130 -130
- package/skills/bolder/SKILL.md +49 -49
- package/skills/brainstorming/SKILL.md +460 -460
- package/skills/browser-audit/SKILL.md +102 -102
- package/skills/browser-native-ai/SKILL.md +72 -72
- package/skills/build-primitive/SKILL.md +50 -50
- package/skills/building-native-ui/SKILL.md +162 -162
- package/skills/cicd-pro/SKILL.md +412 -412
- package/skills/clarify/SKILL.md +55 -55
- package/skills/clean-code/SKILL.md +367 -367
- package/skills/cloud-architect/SKILL.md +409 -409
- package/skills/cobejs/SKILL.md +70 -70
- package/skills/code-review-checklist/SKILL.md +163 -163
- package/skills/codebase-design/SKILL.md +76 -76
- package/skills/colorize/SKILL.md +57 -57
- package/skills/compact-landing/SKILL.md +50 -50
- package/skills/company-logos/SKILL.md +54 -54
- package/skills/config-validator/SKILL.md +125 -125
- package/skills/containerization-pro/SKILL.md +422 -422
- package/skills/context-engineering-pro/SKILL.md +69 -69
- package/skills/create-design-md/SKILL.md +92 -92
- package/skills/critique/SKILL.md +79 -79
- package/skills/csharp-developer/SKILL.md +478 -478
- package/skills/data-validation-schemas/SKILL.md +297 -297
- package/skills/database-design/SKILL.md +219 -219
- package/skills/delight/SKILL.md +46 -46
- package/skills/deployment-procedures/SKILL.md +132 -132
- package/skills/design-lab/SKILL.md +42 -42
- package/skills/devops-engineer/SKILL.md +305 -305
- package/skills/devops-incident-responder/SKILL.md +103 -103
- package/skills/diagnosing-bugs/SKILL.md +172 -172
- package/skills/distill/SKILL.md +45 -45
- package/skills/documentation-templates/SKILL.md +251 -251
- package/skills/domain-modeling/SKILL.md +61 -61
- package/skills/duckdb-analytical-sql/SKILL.md +51 -51
- package/skills/edge-ai-mobile/SKILL.md +42 -42
- package/skills/edge-computing/SKILL.md +143 -143
- package/skills/emil-design-eng/SKILL.md +134 -134
- package/skills/error-resilience/SKILL.md +403 -403
- package/skills/expo-router-v4/SKILL.md +72 -72
- package/skills/extract-design-system/SKILL.md +120 -120
- package/skills/fabel-protocol/SKILL.md +282 -282
- package/skills/failure-mode-analysis/SKILL.md +48 -0
- package/skills/fixing-accessibility/SKILL.md +87 -87
- package/skills/fixing-metadata/SKILL.md +83 -83
- package/skills/fixing-motion-performance/SKILL.md +78 -78
- package/skills/framer-motion-expert/SKILL.md +237 -237
- package/skills/frontend-design/SKILL.md +103 -103
- package/skills/frontend-security-expert/SKILL.md +56 -56
- package/skills/game-design-expert/SKILL.md +92 -92
- package/skills/game-engineering-expert/SKILL.md +108 -108
- package/skills/generative-ui-expert/SKILL.md +100 -100
- package/skills/geo-fundamentals/SKILL.md +108 -108
- package/skills/git-pro/SKILL.md +401 -401
- package/skills/github-operations/SKILL.md +295 -295
- package/skills/gpt-taste/SKILL.md +50 -50
- package/skills/graph-engineering/SKILL.md +28 -28
- package/skills/gsap-core/SKILL.md +277 -277
- package/skills/gsap-frameworks/SKILL.md +168 -168
- package/skills/gsap-performance/SKILL.md +94 -94
- package/skills/gsap-plugins/SKILL.md +441 -441
- package/skills/gsap-react/SKILL.md +213 -213
- package/skills/gsap-scrolltrigger/SKILL.md +312 -312
- package/skills/gsap-timeline/SKILL.md +122 -122
- package/skills/gsap-utils/SKILL.md +299 -299
- package/skills/harden/SKILL.md +55 -55
- package/skills/harness-protocol/SKILL.md +48 -48
- package/skills/huggingface-spaces/SKILL.md +1 -1
- package/skills/human-gate-negotiation/SKILL.md +30 -30
- package/skills/i18n-localization/SKILL.md +134 -134
- package/skills/impeccable/SKILL.md +52 -52
- package/skills/improve-codebase-architecture/SKILL.md +48 -48
- package/skills/improve-ui/SKILL.md +70 -70
- package/skills/intelligent-routing/SKILL.md +204 -204
- package/skills/knowledge-graph/SKILL.md +71 -71
- package/skills/landing-page/SKILL.md +65 -65
- package/skills/lint-and-validate/SKILL.md +224 -224
- package/skills/llm-engineering/SKILL.md +360 -360
- package/skills/local-first/SKILL.md +138 -138
- package/skills/local-first-architecture/SKILL.md +62 -62
- package/skills/lottie-animation/SKILL.md +62 -62
- package/skills/marquee-loop/SKILL.md +72 -72
- package/skills/masked-reveal/SKILL.md +230 -230
- package/skills/mcp-builder/SKILL.md +105 -105
- package/skills/micro-interaction/SKILL.md +253 -253
- package/skills/mobile-design/SKILL.md +245 -245
- package/skills/monorepo-management/SKILL.md +295 -295
- package/skills/morphing-icons/SKILL.md +348 -348
- package/skills/motion-engineering/SKILL.md +197 -197
- package/skills/nextjs-react-expert/SKILL.md +218 -218
- package/skills/nodejs-best-practices/SKILL.md +542 -542
- package/skills/observability/SKILL.md +303 -303
- package/skills/opentelemetry-observability/SKILL.md +51 -51
- package/skills/page-transition-animation/SKILL.md +86 -86
- package/skills/parallel-agents/SKILL.md +110 -110
- package/skills/performance-profiling/SKILL.md +230 -230
- package/skills/plan-writing/SKILL.md +127 -127
- package/skills/platform-engineer/SKILL.md +108 -108
- package/skills/platform-engineering-opentofu/SKILL.md +59 -59
- package/skills/playwright-ai-e2e/SKILL.md +52 -52
- package/skills/playwright-best-practices/SKILL.md +149 -149
- package/skills/polish/SKILL.md +39 -39
- package/skills/powershell-windows/SKILL.md +122 -122
- package/skills/pricing-page/SKILL.md +48 -48
- package/skills/product-aware-heuristics/SKILL.md +390 -390
- package/skills/progressive-blur/SKILL.md +80 -80
- package/skills/project-idioms/SKILL.md +91 -91
- package/skills/property-based-testing/SKILL.md +50 -50
- package/skills/python-patterns/SKILL.md +220 -220
- package/skills/python-pro/SKILL.md +305 -305
- package/skills/quieter/SKILL.md +49 -49
- package/skills/react-doctor/SKILL.md +51 -51
- package/skills/react-specialist/SKILL.md +280 -280
- package/skills/readme-builder/SKILL.md +270 -270
- package/skills/realtime-patterns/SKILL.md +283 -283
- package/skills/red-team-tactics/SKILL.md +191 -191
- package/skills/redesign-skill/SKILL.md +46 -46
- package/skills/review-animations/SKILL.md +45 -45
- package/skills/review-animations/STANDARDS.md +87 -87
- package/skills/rust-pro/SKILL.md +652 -652
- package/skills/semantic-filesystem-navigation/SKILL.md +24 -24
- package/skills/seo-fundamentals/SKILL.md +139 -139
- package/skills/server-management/SKILL.md +178 -178
- package/skills/session-log-interrogation/SKILL.md +29 -29
- package/skills/shadcn-ui-expert/SKILL.md +196 -196
- package/skills/shape/SKILL.md +56 -56
- package/skills/skill-creator/SKILL.md +177 -177
- package/skills/soft-skill/SKILL.md +53 -53
- package/skills/sounds-on-the-web/SKILL.md +76 -76
- package/skills/sql-pro/SKILL.md +624 -624
- package/skills/subagent-driven-development/SKILL.md +32 -32
- package/skills/supabase-postgres-best-practices/SKILL.md +57 -57
- package/skills/svg-animation/SKILL.md +356 -356
- package/skills/swiftui-expert/SKILL.md +164 -164
- package/skills/swiss-design/SKILL.md +44 -44
- package/skills/system-design-pro/SKILL.md +188 -318
- package/skills/systematic-debugging/SKILL.md +129 -129
- package/skills/systematic-debugging/condition-based-waiting.md +120 -120
- package/skills/systematic-debugging/defense-in-depth.md +128 -128
- package/skills/systematic-debugging/root-cause-tracing.md +183 -183
- package/skills/tailwind-patterns/SKILL.md +583 -583
- package/skills/taste-skill/SKILL.md +52 -52
- package/skills/tdd-workflow/SKILL.md +105 -105
- package/skills/test-result-analyzer/SKILL.md +270 -270
- package/skills/testing-patterns/SKILL.md +534 -534
- package/skills/thermo-nuclear-code-quality-review/SKILL.md +62 -62
- package/skills/thinking-protocol/SKILL.md +21 -21
- package/skills/to-spring-or-not-to-spring/SKILL.md +43 -43
- package/skills/transformers-js/references/CONFIGURATION.md +1 -1
- package/skills/transitions-dev/SKILL.md +90 -90
- package/skills/trend-researcher/SKILL.md +198 -198
- package/skills/tribunal-instincts-memory/SKILL.md +31 -31
- package/skills/typescript-advanced/SKILL.md +306 -306
- package/skills/typeset/SKILL.md +60 -60
- package/skills/ui-reasoning-engine/SKILL.md +155 -155
- package/skills/ui-skill-packs/SKILL.md +57 -57
- package/skills/ui-skills-root/SKILL.md +69 -69
- package/skills/ui-ux-pro-max/SKILL.md +110 -110
- package/skills/ui-ux-researcher/SKILL.md +199 -199
- package/skills/vector-search-pgvector/SKILL.md +70 -70
- package/skills/verification-before-completion/SKILL.md +107 -107
- package/skills/vue-expert/SKILL.md +259 -259
- package/skills/vulnerability-scanner/SKILL.md +378 -378
- package/skills/web-accessibility-auditor/SKILL.md +179 -179
- package/skills/web-design-guidelines/SKILL.md +49 -49
- package/skills/web-quality-audit/SKILL.md +47 -47
- package/skills/webapp-testing/SKILL.md +128 -128
- package/skills/webgpu-performance/SKILL.md +88 -88
- package/skills/whimsy-injector/SKILL.md +305 -305
- package/skills/workflow-optimizer/SKILL.md +188 -188
- package/skills/zero-trust-passkeys/SKILL.md +82 -82
- package/{dist → src}/browser/audit.js +229 -229
- package/{dist → src}/browser/case_bridge.js +189 -189
- package/{dist → src}/browser/cdp.js +513 -513
- package/{dist → src}/browser/compare.js +110 -110
- package/{dist → src}/browser/discovery.js +140 -140
- package/{dist → src}/browser/idpi.js +142 -142
- package/{dist → src}/browser/index.js +89 -89
- package/{dist → src}/browser/launcher.js +154 -154
- package/{dist → src}/browser/sentinel.js +202 -202
- package/{dist → src}/browser/synapse.js +251 -251
- package/{dist → src}/browser/trimmer.js +210 -210
- package/{dist → src}/commands/align.js +201 -201
- package/{dist → src}/commands/audit-web.js +112 -112
- package/{dist → src}/commands/browse.js +56 -56
- package/{dist → src}/commands/case.js +71 -73
- package/{dist → src}/commands/compare-web.js +61 -61
- package/{dist → src}/commands/compile.js +91 -91
- package/{dist → src}/commands/context.js +71 -71
- package/{dist → src}/commands/contract.js +440 -440
- package/{dist → src}/commands/deconstruct.js +58 -58
- package/{dist → src}/commands/graph.js +44 -44
- package/{dist → src}/commands/guardrail.js +275 -275
- package/{dist → src}/commands/heal.js +99 -99
- package/{dist → src}/commands/hook.js +28 -28
- package/{dist → src}/commands/init.js +393 -393
- package/{dist → src}/commands/learn.js +119 -117
- package/{dist → src}/commands/marathon.js +45 -45
- package/{dist → src}/commands/memory.js +508 -508
- package/{dist → src}/commands/minimal.js +71 -71
- package/{dist → src}/commands/mutate.js +30 -30
- package/{dist → src}/commands/native.js +264 -264
- package/{dist → src}/commands/optimize.js +332 -328
- package/{dist → src}/commands/sdd.js +265 -229
- package/{dist → src}/commands/status.js +66 -66
- package/{dist → src}/commands/sync.js +25 -25
- package/{dist → src}/commands/uninstall.js +54 -54
- package/{dist → src}/commands/update.js +37 -37
- package/{dist → src}/commands/validate.js +58 -58
- package/{dist → src}/esm/index.mjs +1 -1
- package/{dist → src}/mcp/server.js +8 -8
- package/{dist → src}/tui/banner.js +1 -1
- package/{dist → src}/tui/index.js +21 -21
- package/{dist → src}/tui/reviewer-grid.js +90 -90
- package/{dist → src}/tui/shimmer.js +91 -91
- package/{dist → src}/tui/theme.js +130 -130
- package/{dist → src}/tui/tree.js +93 -93
- package/{dist → src}/tui/wizard.js +148 -148
- package/{dist → src}/types.js +8 -8
- package/{dist → src}/utils/fs.js +102 -102
- package/{dist → src}/utils/hasher.js +142 -142
- package/{dist → src}/utils/helpers.js +53 -53
- package/{dist → src}/utils/logger.js +54 -54
- package/{dist → src}/utils/version.js +157 -157
- package/.agent/history/README.md +0 -53
- package/.agent/history/architecture-explorer.html +0 -352
- package/.agent/history/architecture-graph.yaml +0 -619
- package/.agent/history/case-law/cases/template-case.json +0 -19
- package/.agent/history/graph-cache.json +0 -1042
- package/.agent/history/integrity_manifest.json +0 -4694
- package/.agent/history/memory/.memory.idx +0 -7596
- package/.agent/history/memory/MEMORY.md +0 -512
- package/.agent/history/memory.db +0 -0
- package/.agent/history/snapshots/.opencode__plugins__tribunal.js.json +0 -12
- package/.agent/history/snapshots/.pi__extensions__tribunal.ts.json +0 -12
- package/.agent/history/snapshots/bin__adapter-install.js.json +0 -13
- package/.agent/history/snapshots/bin__global-store.js.json +0 -15
- package/.agent/history/snapshots/bin__mcp-server.js.json +0 -21
- package/.agent/history/snapshots/bin__proxy-server.js.json +0 -20
- package/.agent/history/snapshots/bin__spawn-agent.js.json +0 -12
- package/.agent/history/snapshots/bin__tk-proxy.js.json +0 -21
- package/.agent/history/snapshots/bin__tribunal-kit.js.json +0 -21
- package/.agent/history/snapshots/bin__wrapper.js.json +0 -14
- package/.agent/history/snapshots/eslint.config.js.json +0 -8
- package/.agent/history/snapshots/hooks__session-start.js.json +0 -11
- package/.agent/history/snapshots/scripts__apply-version.js.json +0 -11
- package/.agent/history/snapshots/scripts__audit_skill_sdo.js.json +0 -11
- package/.agent/history/snapshots/scripts__benchmark.js.json +0 -14
- package/.agent/history/snapshots/scripts__changelog.js.json +0 -12
- package/.agent/history/snapshots/scripts__clean-pycache.js.json +0 -11
- package/.agent/history/snapshots/scripts__context_compiler.js.json +0 -17
- package/.agent/history/snapshots/scripts__fix-vbc.js.json +0 -11
- package/.agent/history/snapshots/scripts__modernize_skills.js.json +0 -11
- package/.agent/history/snapshots/scripts__package-cores.js.json +0 -12
- package/.agent/history/snapshots/scripts__skill_enhancement_engine.js.json +0 -11
- package/.agent/history/snapshots/scripts__stress_benchmark.js.json +0 -15
- package/.agent/history/snapshots/scripts__sync-skills.js.json +0 -11
- package/.agent/history/snapshots/scripts__sync-version.js.json +0 -11
- package/.agent/history/snapshots/scripts__telemetry_gc.js.json +0 -11
- package/.agent/history/snapshots/scripts__validate-payload.js.json +0 -11
- package/.agent/history/snapshots/scripts__visual_audit.js.json +0 -11
- package/.agent/history/snapshots/test__integration__bridges.test.js.json +0 -13
- package/.agent/history/snapshots/test__integration__browser_cli.test.js.json +0 -12
- package/.agent/history/snapshots/test__integration__graceful_degradation.test.js.json +0 -12
- package/.agent/history/snapshots/test__integration__init.test.js.json +0 -13
- package/.agent/history/snapshots/test__integration__minimal_change_pipeline.test.js.json +0 -13
- package/.agent/history/snapshots/test__integration__parallel_tribunal.test.js.json +0 -12
- package/.agent/history/snapshots/test__integration__routing.test.js.json +0 -11
- package/.agent/history/snapshots/test__integration__swarm_dispatcher.test.js.json +0 -13
- package/.agent/history/snapshots/test__integration__sync_status.test.js.json +0 -13
- package/.agent/history/snapshots/test__integration__wave2.test.js.json +0 -13
- package/.agent/history/snapshots/test__integration__wrapper.test.js.json +0 -13
- package/.agent/history/snapshots/test__unit__align.test.js.json +0 -10
- package/.agent/history/snapshots/test__unit__args.test.js.json +0 -20
- package/.agent/history/snapshots/test__unit__ast_context_loader.test.js.json +0 -12
- package/.agent/history/snapshots/test__unit__audit_release.test.js.json +0 -16
- package/.agent/history/snapshots/test__unit__browser_case_bridge.test.js.json +0 -11
- package/.agent/history/snapshots/test__unit__browser_discovery.test.js.json +0 -10
- package/.agent/history/snapshots/test__unit__browser_idpi.test.js.json +0 -10
- package/.agent/history/snapshots/test__unit__browser_sentinel.test.js.json +0 -11
- package/.agent/history/snapshots/test__unit__browser_synapse.test.js.json +0 -10
- package/.agent/history/snapshots/test__unit__browser_trimmer.test.js.json +0 -10
- package/.agent/history/snapshots/test__unit__case_law_manager.test.js.json +0 -10
- package/.agent/history/snapshots/test__unit__cicd_validator.test.js.json +0 -12
- package/.agent/history/snapshots/test__unit__compile.test.js.json +0 -10
- package/.agent/history/snapshots/test__unit__context_broker.test.js.json +0 -10
- package/.agent/history/snapshots/test__unit__context_compiler.test.js.json +0 -26
- package/.agent/history/snapshots/test__unit__contract_engine.test.js.json +0 -13
- package/.agent/history/snapshots/test__unit__copyDir.test.js.json +0 -23
- package/.agent/history/snapshots/test__unit__graph_tools.test.js.json +0 -11
- package/.agent/history/snapshots/test__unit__guardrail_engine.test.js.json +0 -10
- package/.agent/history/snapshots/test__unit__impact_classifier.test.js.json +0 -12
- package/.agent/history/snapshots/test__unit__init.test.js.json +0 -14
- package/.agent/history/snapshots/test__unit__inner_loop_validator.test.js.json +0 -10
- package/.agent/history/snapshots/test__unit__integrity_manifest.test.js.json +0 -13
- package/.agent/history/snapshots/test__unit__learn.test.js.json +0 -11
- package/.agent/history/snapshots/test__unit__marathon.test.js.json +0 -22
- package/.agent/history/snapshots/test__unit__mcp_server.test.js.json +0 -16
- package/.agent/history/snapshots/test__unit__memory.test.js.json +0 -13
- package/.agent/history/snapshots/test__unit__minimal_change.test.js.json +0 -10
- package/.agent/history/snapshots/test__unit__native.test.js.json +0 -10
- package/.agent/history/snapshots/test__unit__optimize.test.js.json +0 -13
- package/.agent/history/snapshots/test__unit__path_resolution.test.js.json +0 -14
- package/.agent/history/snapshots/test__unit__platform_download_audit.test.js.json +0 -11
- package/.agent/history/snapshots/test__unit__production_readiness_evidence.test.js.json +0 -21
- package/.agent/history/snapshots/test__unit__prompt_compiler.test.js.json +0 -10
- package/.agent/history/snapshots/test__unit__sdd_integration.test.js.json +0 -12
- package/.agent/history/snapshots/test__unit__selfInstall.test.js.json +0 -23
- package/.agent/history/snapshots/test__unit__semver.test.js.json +0 -20
- package/.agent/history/snapshots/test__unit__skill_evolution.test.js.json +0 -11
- package/.agent/history/snapshots/test__unit__stress.test.js.json +0 -15
- package/.agent/history/snapshots/test__unit__swarm_dispatcher.test.js.json +0 -12
- package/.agent/history/snapshots/test__unit__token_budget_broker.test.js.json +0 -10
- package/.agent/history/snapshots/test__unit__tui.test.js.json +0 -10
- package/.agent/history/snapshots/test__unit__utils.test.js.json +0 -10
- package/.agents/plugins/marketplace.json +0 -20
- package/.claude/CLAUDE.md +0 -442
- /package/{dist → src}/cli.js +0 -0
- /package/{dist → src}/index.d.ts +0 -0
|
@@ -1,306 +1,306 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: typescript-advanced
|
|
3
|
-
description: "Use when Advanced TypeScript mastery. Generics with constraints, conditional types, mapped types, template literal types, the satisfies operator, discriminated unions, branded/nominal types, type-level programming, utility type internals, variance annotations, module augmentation, and declaration merging. Use when writing complex type definitions, building type-safe libraries, or solving \"how do I type this?\" problems."
|
|
4
|
-
version: 5.0.0
|
|
5
|
-
last-updated: 2026-09-13
|
|
6
|
-
skills:
|
|
7
|
-
- clean-code
|
|
8
|
-
- data-validation-schemas
|
|
9
|
-
- lint-and-validate
|
|
10
|
-
tools: Read, Grep, Glob, Bash, Edit, Write
|
|
11
|
-
scripts-binding:
|
|
12
|
-
- .agent/scripts/lint_runner.js
|
|
13
|
-
- .agent/scripts/verify_all.js
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
# Advanced TypeScript — Type-Level Mastery
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## 🛠️ Technical Architecture & Reference Recipes
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
## 2026 TypeScript Performance & Compiler Invariants
|
|
25
|
-
|
|
26
|
-
1. **Explicit Return Types on Exports (`isolatedDeclarations`)**: Always add explicit return types to exported functions/methods for fast, parallel build compilation.
|
|
27
|
-
2. **Interface Extension Over Deep Intersections**: Use `interface B extends A` instead of `type B = A & { ... }`. Interfaces are cached by TS compiler's internal type-checker, preventing quadratic build slowdowns.
|
|
28
|
-
3. **Safe Indexed Access**: Handle `undefined` when reading objects/arrays under `noUncheckedIndexedAccess`.
|
|
29
|
-
4. **Const Type Parameters**: Use `function parse<const T>(val: T)` to preserve literal types without requiring the caller to write `as const`.
|
|
30
|
-
|
|
31
|
-
## Hallucination Traps (Read First)
|
|
32
|
-
|
|
33
|
-
- ❌ Using `as any` to silence type errors -> ✅ Fix the type or use `unknown` + type guard; `as any` masks runtime errors
|
|
34
|
-
- ❌ Using deep recursive conditional types that trigger `Type instantiation is excessively deep` -> ✅ Use iteration or flat lookup tables
|
|
35
|
-
- ❌ Overusing `type X = A & B & C & D` -> ✅ Use `interface` extension to preserve compiler performance
|
|
36
|
-
- ❌ Manual `x is T` when TS 5.5+ infers the predicate -> ✅ Write natural predicate functions without unnecessary type assertion casts
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## Generics with Constraints
|
|
41
|
-
|
|
42
|
-
```typescript
|
|
43
|
-
// ✅ Constrained generics — T must have an id
|
|
44
|
-
function findById<T extends { id: string }>(items: T[], id: string): T | undefined {
|
|
45
|
-
return items.find(item => item.id === id);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// ✅ Multiple constraints
|
|
49
|
-
function merge<T extends object, U extends object>(a: T, b: U): T & U {
|
|
50
|
-
return { ...a, ...b };
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// ✅ keyof constraint — K must be a key of T
|
|
54
|
-
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
|
|
55
|
-
return obj[key];
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const user = { name: 'Alice', age: 30 };
|
|
59
|
-
const name = getProperty(user, 'name'); // type: string
|
|
60
|
-
const age = getProperty(user, 'age'); // type: number
|
|
61
|
-
// getProperty(user, "email"); // ❌ Compile error — "email" not in keyof
|
|
62
|
-
|
|
63
|
-
// ✅ Default generic parameters
|
|
64
|
-
function createState<T = string>(initial: T): { value: T; set: (v: T) => void } {
|
|
65
|
-
let value = initial;
|
|
66
|
-
return {
|
|
67
|
-
value,
|
|
68
|
-
set: v => {
|
|
69
|
-
value = v;
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
## Discriminated Unions (The Most Useful Pattern)
|
|
78
|
-
|
|
79
|
-
```typescript
|
|
80
|
-
// ✅ Tagged unions — TypeScript narrows automatically
|
|
81
|
-
type Result<T, E = Error> =
|
|
82
|
-
| { success: true; data: T }
|
|
83
|
-
| { success: false; error: E };
|
|
84
|
-
|
|
85
|
-
function divide(a: number, b: number): Result<number, string> {
|
|
86
|
-
if (b === 0) return { success: false, error: "Division by zero" };
|
|
87
|
-
return { success: true, data: a / b };
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
const result = divide(10, 3);
|
|
91
|
-
if (result.success) {
|
|
92
|
-
console.log(result.data); // TypeScript KNOWS data exists
|
|
93
|
-
} else {
|
|
94
|
-
console.log(result.error); // TypeScript KNOWS error exists
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// ✅ State machines with discriminated unions
|
|
98
|
-
type RequestState<T> =
|
|
99
|
-
| { status: "idle" }
|
|
100
|
-
| { status: "loading" }
|
|
101
|
-
| { status: "success"; data: T }
|
|
102
|
-
| { status: "error"; error: Error };
|
|
103
|
-
|
|
104
|
-
function renderUser(state: RequestState<User>) {
|
|
105
|
-
switch (state.status) {
|
|
106
|
-
case "idle": return <p>Click to load</p>;
|
|
107
|
-
case "loading": return <Spinner />;
|
|
108
|
-
case "success": return <UserCard user={state.data} />;
|
|
109
|
-
case "error": return <ErrorBanner error={state.error} />;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
// ✅ TypeScript ensures ALL cases are handled (exhaustive checking)
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
## Conditional Types
|
|
118
|
-
|
|
119
|
-
```typescript
|
|
120
|
-
// ✅ Type-level if/else
|
|
121
|
-
type IsString<T> = T extends string ? true : false;
|
|
122
|
-
|
|
123
|
-
type A = IsString<'hello'>; // true
|
|
124
|
-
type B = IsString<42>; // false
|
|
125
|
-
|
|
126
|
-
// ✅ Extract return type of async functions
|
|
127
|
-
type UnwrapPromise<T> = T extends Promise<infer U> ? U : T;
|
|
128
|
-
|
|
129
|
-
type UserData = UnwrapPromise<Promise<{ name: string }>>;
|
|
130
|
-
// → { name: string }
|
|
131
|
-
|
|
132
|
-
// ✅ Practical: API response type extraction
|
|
133
|
-
type ApiResponse<T> = T extends (...args: any[]) => Promise<infer R> ? R : never;
|
|
134
|
-
|
|
135
|
-
declare function getUsers(): Promise<User[]>;
|
|
136
|
-
type Users = ApiResponse<typeof getUsers>; // User[]
|
|
137
|
-
|
|
138
|
-
// ✅ Distributive conditional types
|
|
139
|
-
type NonNullable<T> = T extends null | undefined ? never : T;
|
|
140
|
-
|
|
141
|
-
type Clean = NonNullable<string | null | undefined>; // string
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
## Mapped Types
|
|
147
|
-
|
|
148
|
-
```typescript
|
|
149
|
-
// ✅ Transform every property of a type
|
|
150
|
-
type Readonly<T> = { readonly [K in keyof T]: T[K] };
|
|
151
|
-
type Partial<T> = { [K in keyof T]?: T[K] };
|
|
152
|
-
type Required<T> = { [K in keyof T]-?: T[K] };
|
|
153
|
-
|
|
154
|
-
// ✅ Practical: Create a "form touched" state
|
|
155
|
-
type TouchedFields<T> = { [K in keyof T]: boolean };
|
|
156
|
-
|
|
157
|
-
interface LoginForm {
|
|
158
|
-
email: string;
|
|
159
|
-
password: string;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
type LoginTouched = TouchedFields<LoginForm>;
|
|
163
|
-
// → { email: boolean; password: boolean }
|
|
164
|
-
|
|
165
|
-
// ✅ Key remapping with `as`
|
|
166
|
-
type Getters<T> = {
|
|
167
|
-
[K in keyof T as `get${Capitalize<string & K>}`]: () => T[K];
|
|
168
|
-
};
|
|
169
|
-
|
|
170
|
-
type UserGetters = Getters<{ name: string; age: number }>;
|
|
171
|
-
// → { getName: () => string; getAge: () => number }
|
|
172
|
-
|
|
173
|
-
// ✅ Filter keys by value type
|
|
174
|
-
type StringKeys<T> = {
|
|
175
|
-
[K in keyof T as T[K] extends string ? K : never]: T[K];
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
type OnlyStrings = StringKeys<{ name: string; age: number; email: string }>;
|
|
179
|
-
// → { name: string; email: string }
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
---
|
|
183
|
-
|
|
184
|
-
## Template Literal Types
|
|
185
|
-
|
|
186
|
-
```typescript
|
|
187
|
-
// ✅ Type-safe string patterns
|
|
188
|
-
type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';
|
|
189
|
-
type APIRoute = `/api/${string}`;
|
|
190
|
-
type EventName = `on${Capitalize<string>}`;
|
|
191
|
-
|
|
192
|
-
// ✅ Practical: CSS unit types
|
|
193
|
-
type CSSUnit = 'px' | 'rem' | 'em' | 'vh' | 'vw' | '%';
|
|
194
|
-
type CSSValue = `${number}${CSSUnit}`;
|
|
195
|
-
|
|
196
|
-
const width: CSSValue = '100px'; // ✅
|
|
197
|
-
// const bad: CSSValue = "100"; // ❌ Compile error
|
|
198
|
-
|
|
199
|
-
// ✅ Route parameter extraction
|
|
200
|
-
type ExtractParams<T extends string> = T extends `${string}:${infer Param}/${infer Rest}`
|
|
201
|
-
? Param | ExtractParams<Rest>
|
|
202
|
-
: T extends `${string}:${infer Param}`
|
|
203
|
-
? Param
|
|
204
|
-
: never;
|
|
205
|
-
|
|
206
|
-
type UserRouteParams = ExtractParams<'/users/:userId/posts/:postId'>;
|
|
207
|
-
// → "userId" | "postId"
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
---
|
|
211
|
-
|
|
212
|
-
## The `satisfies` Operator (TS 5.0+)
|
|
213
|
-
|
|
214
|
-
```typescript
|
|
215
|
-
// ✅ satisfies checks the type WITHOUT widening it
|
|
216
|
-
type ColorMap = Record<string, [number, number, number] | string>;
|
|
217
|
-
|
|
218
|
-
// With `as` — loses specificity
|
|
219
|
-
const colorsAs = {
|
|
220
|
-
red: [255, 0, 0],
|
|
221
|
-
green: '#00ff00',
|
|
222
|
-
} as ColorMap;
|
|
223
|
-
colorsAs.red.map(x => x); // ❌ Error: string | number[] has no .map
|
|
224
|
-
|
|
225
|
-
// With `satisfies` — keeps literal types
|
|
226
|
-
const colors = {
|
|
227
|
-
red: [255, 0, 0],
|
|
228
|
-
green: '#00ff00',
|
|
229
|
-
} satisfies ColorMap;
|
|
230
|
-
colors.red.map(x => x); // ✅ TypeScript knows it's a tuple
|
|
231
|
-
colors.green.toUpperCase(); // ✅ TypeScript knows it's a string
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
---
|
|
235
|
-
|
|
236
|
-
## Branded / Nominal Types
|
|
237
|
-
|
|
238
|
-
```typescript
|
|
239
|
-
// ✅ Prevent accidental mixing of same-shaped types
|
|
240
|
-
type UserId = string & { readonly __brand: "UserId" };
|
|
241
|
-
type OrderId = string & { readonly __brand: "OrderId" };
|
|
242
|
-
|
|
243
|
-
function createUserId(id: string): UserId { return id as UserId; }
|
|
244
|
-
function createOrderId(id: string): OrderId { return id as OrderId; }
|
|
245
|
-
|
|
246
|
-
function getUser(id: UserId): Promise<User> { ... }
|
|
247
|
-
|
|
248
|
-
const userId = createUserId("user_123");
|
|
249
|
-
const orderId = createOrderId("order_456");
|
|
250
|
-
|
|
251
|
-
getUser(userId); // ✅ Correct
|
|
252
|
-
// getUser(orderId); // ❌ Compile error — OrderId is not UserId
|
|
253
|
-
|
|
254
|
-
// ✅ Branded number types
|
|
255
|
-
type Cents = number & { readonly __brand: "Cents" };
|
|
256
|
-
type Dollars = number & { readonly __brand: "Dollars" };
|
|
257
|
-
|
|
258
|
-
function centsToDollars(cents: Cents): Dollars {
|
|
259
|
-
return (cents / 100) as Dollars;
|
|
260
|
-
}
|
|
261
|
-
```
|
|
262
|
-
|
|
263
|
-
---
|
|
264
|
-
|
|
265
|
-
## Utility Types (Know the Built-ins)
|
|
266
|
-
|
|
267
|
-
```typescript
|
|
268
|
-
// Don't reimplement what TypeScript provides
|
|
269
|
-
|
|
270
|
-
Pick<T, K>; // Select specific keys
|
|
271
|
-
Omit<T, K>; // Remove specific keys
|
|
272
|
-
Partial<T>; // All properties optional
|
|
273
|
-
Required<T>; // All properties required
|
|
274
|
-
Readonly<T>; // All properties readonly
|
|
275
|
-
Record<K, V>; // Object with keys K and values V
|
|
276
|
-
Extract<T, U>; // Members of T assignable to U
|
|
277
|
-
Exclude<T, U>; // Members of T NOT assignable to U
|
|
278
|
-
NonNullable<T>; // Remove null and undefined
|
|
279
|
-
ReturnType<T>; // Return type of a function
|
|
280
|
-
Parameters<T>; // Parameter types of a function as tuple
|
|
281
|
-
Awaited<T>; // Unwrap Promise<T> recursively
|
|
282
|
-
```
|
|
283
|
-
|
|
284
|
-
---
|
|
285
|
-
|
|
286
|
-
## Anti-Patterns
|
|
287
|
-
|
|
288
|
-
```
|
|
289
|
-
❌ `as any` — hides runtime crashes. Fix the type or use `as unknown as T` with a comment.
|
|
290
|
-
❌ `// @ts-ignore` — use `// @ts-expect-error` with a reason comment instead.
|
|
291
|
-
❌ `interface` for unions — interfaces can't express `A | B`. Use `type`.
|
|
292
|
-
❌ Overusing generics — if <T> is only used once, you probably don't need it.
|
|
293
|
-
❌ `enum` for new code — use `as const` objects or union types instead.
|
|
294
|
-
❌ Type assertions in tests — use proper type guards or schema validation.
|
|
295
|
-
❌ `!` (non-null assertion) — it's a lie. Use optional chaining or narrowing.
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
```typescript
|
|
299
|
-
// ❌ BAD: Non-null assertion
|
|
300
|
-
const element = document.getElementById('app')!;
|
|
301
|
-
|
|
302
|
-
// ✅ GOOD: Narrowing
|
|
303
|
-
const element = document.getElementById('app');
|
|
304
|
-
if (!element) throw new Error('Missing #app element');
|
|
305
|
-
// element is now guaranteed non-null
|
|
306
|
-
```
|
|
1
|
+
---
|
|
2
|
+
name: typescript-advanced
|
|
3
|
+
description: "Use when Advanced TypeScript mastery. Generics with constraints, conditional types, mapped types, template literal types, the satisfies operator, discriminated unions, branded/nominal types, type-level programming, utility type internals, variance annotations, module augmentation, and declaration merging. Use when writing complex type definitions, building type-safe libraries, or solving \"how do I type this?\" problems."
|
|
4
|
+
version: 5.0.0
|
|
5
|
+
last-updated: 2026-09-13
|
|
6
|
+
skills:
|
|
7
|
+
- clean-code
|
|
8
|
+
- data-validation-schemas
|
|
9
|
+
- lint-and-validate
|
|
10
|
+
tools: Read, Grep, Glob, Bash, Edit, Write
|
|
11
|
+
scripts-binding:
|
|
12
|
+
- .agent/scripts/lint_runner.js
|
|
13
|
+
- .agent/scripts/verify_all.js
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Advanced TypeScript — Type-Level Mastery
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 🛠️ Technical Architecture & Reference Recipes
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 2026 TypeScript Performance & Compiler Invariants
|
|
25
|
+
|
|
26
|
+
1. **Explicit Return Types on Exports (`isolatedDeclarations`)**: Always add explicit return types to exported functions/methods for fast, parallel build compilation.
|
|
27
|
+
2. **Interface Extension Over Deep Intersections**: Use `interface B extends A` instead of `type B = A & { ... }`. Interfaces are cached by TS compiler's internal type-checker, preventing quadratic build slowdowns.
|
|
28
|
+
3. **Safe Indexed Access**: Handle `undefined` when reading objects/arrays under `noUncheckedIndexedAccess`.
|
|
29
|
+
4. **Const Type Parameters**: Use `function parse<const T>(val: T)` to preserve literal types without requiring the caller to write `as const`.
|
|
30
|
+
|
|
31
|
+
## Hallucination Traps (Read First)
|
|
32
|
+
|
|
33
|
+
- ❌ Using `as any` to silence type errors -> ✅ Fix the type or use `unknown` + type guard; `as any` masks runtime errors
|
|
34
|
+
- ❌ Using deep recursive conditional types that trigger `Type instantiation is excessively deep` -> ✅ Use iteration or flat lookup tables
|
|
35
|
+
- ❌ Overusing `type X = A & B & C & D` -> ✅ Use `interface` extension to preserve compiler performance
|
|
36
|
+
- ❌ Manual `x is T` when TS 5.5+ infers the predicate -> ✅ Write natural predicate functions without unnecessary type assertion casts
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Generics with Constraints
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
// ✅ Constrained generics — T must have an id
|
|
44
|
+
function findById<T extends { id: string }>(items: T[], id: string): T | undefined {
|
|
45
|
+
return items.find(item => item.id === id);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// ✅ Multiple constraints
|
|
49
|
+
function merge<T extends object, U extends object>(a: T, b: U): T & U {
|
|
50
|
+
return { ...a, ...b };
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// ✅ keyof constraint — K must be a key of T
|
|
54
|
+
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
|
|
55
|
+
return obj[key];
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const user = { name: 'Alice', age: 30 };
|
|
59
|
+
const name = getProperty(user, 'name'); // type: string
|
|
60
|
+
const age = getProperty(user, 'age'); // type: number
|
|
61
|
+
// getProperty(user, "email"); // ❌ Compile error — "email" not in keyof
|
|
62
|
+
|
|
63
|
+
// ✅ Default generic parameters
|
|
64
|
+
function createState<T = string>(initial: T): { value: T; set: (v: T) => void } {
|
|
65
|
+
let value = initial;
|
|
66
|
+
return {
|
|
67
|
+
value,
|
|
68
|
+
set: v => {
|
|
69
|
+
value = v;
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Discriminated Unions (The Most Useful Pattern)
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
// ✅ Tagged unions — TypeScript narrows automatically
|
|
81
|
+
type Result<T, E = Error> =
|
|
82
|
+
| { success: true; data: T }
|
|
83
|
+
| { success: false; error: E };
|
|
84
|
+
|
|
85
|
+
function divide(a: number, b: number): Result<number, string> {
|
|
86
|
+
if (b === 0) return { success: false, error: "Division by zero" };
|
|
87
|
+
return { success: true, data: a / b };
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const result = divide(10, 3);
|
|
91
|
+
if (result.success) {
|
|
92
|
+
console.log(result.data); // TypeScript KNOWS data exists
|
|
93
|
+
} else {
|
|
94
|
+
console.log(result.error); // TypeScript KNOWS error exists
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// ✅ State machines with discriminated unions
|
|
98
|
+
type RequestState<T> =
|
|
99
|
+
| { status: "idle" }
|
|
100
|
+
| { status: "loading" }
|
|
101
|
+
| { status: "success"; data: T }
|
|
102
|
+
| { status: "error"; error: Error };
|
|
103
|
+
|
|
104
|
+
function renderUser(state: RequestState<User>) {
|
|
105
|
+
switch (state.status) {
|
|
106
|
+
case "idle": return <p>Click to load</p>;
|
|
107
|
+
case "loading": return <Spinner />;
|
|
108
|
+
case "success": return <UserCard user={state.data} />;
|
|
109
|
+
case "error": return <ErrorBanner error={state.error} />;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// ✅ TypeScript ensures ALL cases are handled (exhaustive checking)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Conditional Types
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
// ✅ Type-level if/else
|
|
121
|
+
type IsString<T> = T extends string ? true : false;
|
|
122
|
+
|
|
123
|
+
type A = IsString<'hello'>; // true
|
|
124
|
+
type B = IsString<42>; // false
|
|
125
|
+
|
|
126
|
+
// ✅ Extract return type of async functions
|
|
127
|
+
type UnwrapPromise<T> = T extends Promise<infer U> ? U : T;
|
|
128
|
+
|
|
129
|
+
type UserData = UnwrapPromise<Promise<{ name: string }>>;
|
|
130
|
+
// → { name: string }
|
|
131
|
+
|
|
132
|
+
// ✅ Practical: API response type extraction
|
|
133
|
+
type ApiResponse<T> = T extends (...args: any[]) => Promise<infer R> ? R : never;
|
|
134
|
+
|
|
135
|
+
declare function getUsers(): Promise<User[]>;
|
|
136
|
+
type Users = ApiResponse<typeof getUsers>; // User[]
|
|
137
|
+
|
|
138
|
+
// ✅ Distributive conditional types
|
|
139
|
+
type NonNullable<T> = T extends null | undefined ? never : T;
|
|
140
|
+
|
|
141
|
+
type Clean = NonNullable<string | null | undefined>; // string
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Mapped Types
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
// ✅ Transform every property of a type
|
|
150
|
+
type Readonly<T> = { readonly [K in keyof T]: T[K] };
|
|
151
|
+
type Partial<T> = { [K in keyof T]?: T[K] };
|
|
152
|
+
type Required<T> = { [K in keyof T]-?: T[K] };
|
|
153
|
+
|
|
154
|
+
// ✅ Practical: Create a "form touched" state
|
|
155
|
+
type TouchedFields<T> = { [K in keyof T]: boolean };
|
|
156
|
+
|
|
157
|
+
interface LoginForm {
|
|
158
|
+
email: string;
|
|
159
|
+
password: string;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
type LoginTouched = TouchedFields<LoginForm>;
|
|
163
|
+
// → { email: boolean; password: boolean }
|
|
164
|
+
|
|
165
|
+
// ✅ Key remapping with `as`
|
|
166
|
+
type Getters<T> = {
|
|
167
|
+
[K in keyof T as `get${Capitalize<string & K>}`]: () => T[K];
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
type UserGetters = Getters<{ name: string; age: number }>;
|
|
171
|
+
// → { getName: () => string; getAge: () => number }
|
|
172
|
+
|
|
173
|
+
// ✅ Filter keys by value type
|
|
174
|
+
type StringKeys<T> = {
|
|
175
|
+
[K in keyof T as T[K] extends string ? K : never]: T[K];
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
type OnlyStrings = StringKeys<{ name: string; age: number; email: string }>;
|
|
179
|
+
// → { name: string; email: string }
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Template Literal Types
|
|
185
|
+
|
|
186
|
+
```typescript
|
|
187
|
+
// ✅ Type-safe string patterns
|
|
188
|
+
type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';
|
|
189
|
+
type APIRoute = `/api/${string}`;
|
|
190
|
+
type EventName = `on${Capitalize<string>}`;
|
|
191
|
+
|
|
192
|
+
// ✅ Practical: CSS unit types
|
|
193
|
+
type CSSUnit = 'px' | 'rem' | 'em' | 'vh' | 'vw' | '%';
|
|
194
|
+
type CSSValue = `${number}${CSSUnit}`;
|
|
195
|
+
|
|
196
|
+
const width: CSSValue = '100px'; // ✅
|
|
197
|
+
// const bad: CSSValue = "100"; // ❌ Compile error
|
|
198
|
+
|
|
199
|
+
// ✅ Route parameter extraction
|
|
200
|
+
type ExtractParams<T extends string> = T extends `${string}:${infer Param}/${infer Rest}`
|
|
201
|
+
? Param | ExtractParams<Rest>
|
|
202
|
+
: T extends `${string}:${infer Param}`
|
|
203
|
+
? Param
|
|
204
|
+
: never;
|
|
205
|
+
|
|
206
|
+
type UserRouteParams = ExtractParams<'/users/:userId/posts/:postId'>;
|
|
207
|
+
// → "userId" | "postId"
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## The `satisfies` Operator (TS 5.0+)
|
|
213
|
+
|
|
214
|
+
```typescript
|
|
215
|
+
// ✅ satisfies checks the type WITHOUT widening it
|
|
216
|
+
type ColorMap = Record<string, [number, number, number] | string>;
|
|
217
|
+
|
|
218
|
+
// With `as` — loses specificity
|
|
219
|
+
const colorsAs = {
|
|
220
|
+
red: [255, 0, 0],
|
|
221
|
+
green: '#00ff00',
|
|
222
|
+
} as ColorMap;
|
|
223
|
+
colorsAs.red.map(x => x); // ❌ Error: string | number[] has no .map
|
|
224
|
+
|
|
225
|
+
// With `satisfies` — keeps literal types
|
|
226
|
+
const colors = {
|
|
227
|
+
red: [255, 0, 0],
|
|
228
|
+
green: '#00ff00',
|
|
229
|
+
} satisfies ColorMap;
|
|
230
|
+
colors.red.map(x => x); // ✅ TypeScript knows it's a tuple
|
|
231
|
+
colors.green.toUpperCase(); // ✅ TypeScript knows it's a string
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## Branded / Nominal Types
|
|
237
|
+
|
|
238
|
+
```typescript
|
|
239
|
+
// ✅ Prevent accidental mixing of same-shaped types
|
|
240
|
+
type UserId = string & { readonly __brand: "UserId" };
|
|
241
|
+
type OrderId = string & { readonly __brand: "OrderId" };
|
|
242
|
+
|
|
243
|
+
function createUserId(id: string): UserId { return id as UserId; }
|
|
244
|
+
function createOrderId(id: string): OrderId { return id as OrderId; }
|
|
245
|
+
|
|
246
|
+
function getUser(id: UserId): Promise<User> { ... }
|
|
247
|
+
|
|
248
|
+
const userId = createUserId("user_123");
|
|
249
|
+
const orderId = createOrderId("order_456");
|
|
250
|
+
|
|
251
|
+
getUser(userId); // ✅ Correct
|
|
252
|
+
// getUser(orderId); // ❌ Compile error — OrderId is not UserId
|
|
253
|
+
|
|
254
|
+
// ✅ Branded number types
|
|
255
|
+
type Cents = number & { readonly __brand: "Cents" };
|
|
256
|
+
type Dollars = number & { readonly __brand: "Dollars" };
|
|
257
|
+
|
|
258
|
+
function centsToDollars(cents: Cents): Dollars {
|
|
259
|
+
return (cents / 100) as Dollars;
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## Utility Types (Know the Built-ins)
|
|
266
|
+
|
|
267
|
+
```typescript
|
|
268
|
+
// Don't reimplement what TypeScript provides
|
|
269
|
+
|
|
270
|
+
Pick<T, K>; // Select specific keys
|
|
271
|
+
Omit<T, K>; // Remove specific keys
|
|
272
|
+
Partial<T>; // All properties optional
|
|
273
|
+
Required<T>; // All properties required
|
|
274
|
+
Readonly<T>; // All properties readonly
|
|
275
|
+
Record<K, V>; // Object with keys K and values V
|
|
276
|
+
Extract<T, U>; // Members of T assignable to U
|
|
277
|
+
Exclude<T, U>; // Members of T NOT assignable to U
|
|
278
|
+
NonNullable<T>; // Remove null and undefined
|
|
279
|
+
ReturnType<T>; // Return type of a function
|
|
280
|
+
Parameters<T>; // Parameter types of a function as tuple
|
|
281
|
+
Awaited<T>; // Unwrap Promise<T> recursively
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## Anti-Patterns
|
|
287
|
+
|
|
288
|
+
```
|
|
289
|
+
❌ `as any` — hides runtime crashes. Fix the type or use `as unknown as T` with a comment.
|
|
290
|
+
❌ `// @ts-ignore` — use `// @ts-expect-error` with a reason comment instead.
|
|
291
|
+
❌ `interface` for unions — interfaces can't express `A | B`. Use `type`.
|
|
292
|
+
❌ Overusing generics — if <T> is only used once, you probably don't need it.
|
|
293
|
+
❌ `enum` for new code — use `as const` objects or union types instead.
|
|
294
|
+
❌ Type assertions in tests — use proper type guards or schema validation.
|
|
295
|
+
❌ `!` (non-null assertion) — it's a lie. Use optional chaining or narrowing.
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
```typescript
|
|
299
|
+
// ❌ BAD: Non-null assertion
|
|
300
|
+
const element = document.getElementById('app')!;
|
|
301
|
+
|
|
302
|
+
// ✅ GOOD: Narrowing
|
|
303
|
+
const element = document.getElementById('app');
|
|
304
|
+
if (!element) throw new Error('Missing #app element');
|
|
305
|
+
// element is now guaranteed non-null
|
|
306
|
+
```
|