moai-adk 0.35.1__py3-none-any.whl
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.
Potentially problematic release.
This version of moai-adk might be problematic. Click here for more details.
- moai_adk/__init__.py +10 -0
- moai_adk/__main__.py +199 -0
- moai_adk/cli/__init__.py +6 -0
- moai_adk/cli/commands/__init__.py +17 -0
- moai_adk/cli/commands/analyze.py +116 -0
- moai_adk/cli/commands/doctor.py +272 -0
- moai_adk/cli/commands/init.py +372 -0
- moai_adk/cli/commands/language.py +248 -0
- moai_adk/cli/commands/status.py +104 -0
- moai_adk/cli/commands/update.py +2686 -0
- moai_adk/cli/main.py +13 -0
- moai_adk/cli/prompts/__init__.py +5 -0
- moai_adk/cli/prompts/init_prompts.py +219 -0
- moai_adk/cli/spec_status.py +263 -0
- moai_adk/cli/ui/__init__.py +44 -0
- moai_adk/cli/ui/progress.py +422 -0
- moai_adk/cli/ui/prompts.py +389 -0
- moai_adk/cli/ui/theme.py +129 -0
- moai_adk/cli/worktree/__init__.py +27 -0
- moai_adk/cli/worktree/__main__.py +31 -0
- moai_adk/cli/worktree/cli.py +683 -0
- moai_adk/cli/worktree/exceptions.py +89 -0
- moai_adk/cli/worktree/manager.py +493 -0
- moai_adk/cli/worktree/models.py +65 -0
- moai_adk/cli/worktree/registry.py +422 -0
- moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
- moai_adk/core/__init__.py +1 -0
- moai_adk/core/analysis/__init__.py +9 -0
- moai_adk/core/analysis/session_analyzer.py +400 -0
- moai_adk/core/claude_integration.py +393 -0
- moai_adk/core/command_helpers.py +270 -0
- moai_adk/core/comprehensive_monitoring_system.py +1183 -0
- moai_adk/core/config/__init__.py +19 -0
- moai_adk/core/config/auto_spec_config.py +340 -0
- moai_adk/core/config/migration.py +244 -0
- moai_adk/core/config/unified.py +436 -0
- moai_adk/core/context_manager.py +273 -0
- moai_adk/core/diagnostics/__init__.py +19 -0
- moai_adk/core/diagnostics/slash_commands.py +159 -0
- moai_adk/core/enterprise_features.py +1404 -0
- moai_adk/core/error_recovery_system.py +1902 -0
- moai_adk/core/event_driven_hook_system.py +1371 -0
- moai_adk/core/git/__init__.py +31 -0
- moai_adk/core/git/branch.py +25 -0
- moai_adk/core/git/branch_manager.py +129 -0
- moai_adk/core/git/checkpoint.py +134 -0
- moai_adk/core/git/commit.py +67 -0
- moai_adk/core/git/conflict_detector.py +413 -0
- moai_adk/core/git/event_detector.py +79 -0
- moai_adk/core/git/manager.py +216 -0
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +901 -0
- moai_adk/core/input_validation_middleware.py +1006 -0
- moai_adk/core/integration/__init__.py +22 -0
- moai_adk/core/integration/engine.py +157 -0
- moai_adk/core/integration/integration_tester.py +226 -0
- moai_adk/core/integration/models.py +88 -0
- moai_adk/core/integration/utils.py +211 -0
- moai_adk/core/issue_creator.py +305 -0
- moai_adk/core/jit_context_loader.py +956 -0
- moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
- moai_adk/core/language_config.py +202 -0
- moai_adk/core/language_config_resolver.py +572 -0
- moai_adk/core/language_validator.py +543 -0
- moai_adk/core/mcp/setup.py +116 -0
- moai_adk/core/merge/__init__.py +9 -0
- moai_adk/core/merge/analyzer.py +605 -0
- moai_adk/core/migration/__init__.py +18 -0
- moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
- moai_adk/core/migration/backup_manager.py +277 -0
- moai_adk/core/migration/custom_element_scanner.py +358 -0
- moai_adk/core/migration/file_migrator.py +209 -0
- moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
- moai_adk/core/migration/selective_restorer.py +470 -0
- moai_adk/core/migration/template_utils.py +74 -0
- moai_adk/core/migration/user_selection_ui.py +338 -0
- moai_adk/core/migration/version_detector.py +139 -0
- moai_adk/core/migration/version_migrator.py +228 -0
- moai_adk/core/performance/__init__.py +6 -0
- moai_adk/core/performance/cache_system.py +316 -0
- moai_adk/core/performance/parallel_processor.py +116 -0
- moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
- moai_adk/core/project/__init__.py +1 -0
- moai_adk/core/project/backup_utils.py +70 -0
- moai_adk/core/project/checker.py +300 -0
- moai_adk/core/project/detector.py +293 -0
- moai_adk/core/project/initializer.py +387 -0
- moai_adk/core/project/phase_executor.py +716 -0
- moai_adk/core/project/validator.py +139 -0
- moai_adk/core/quality/__init__.py +6 -0
- moai_adk/core/quality/trust_checker.py +377 -0
- moai_adk/core/quality/validators/__init__.py +6 -0
- moai_adk/core/quality/validators/base_validator.py +19 -0
- moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
- moai_adk/core/robust_json_parser.py +611 -0
- moai_adk/core/rollback_manager.py +918 -0
- moai_adk/core/session_manager.py +651 -0
- moai_adk/core/skill_loading_system.py +579 -0
- moai_adk/core/spec/confidence_scoring.py +680 -0
- moai_adk/core/spec/ears_template_engine.py +1247 -0
- moai_adk/core/spec/quality_validator.py +687 -0
- moai_adk/core/spec_status_manager.py +478 -0
- moai_adk/core/template/__init__.py +7 -0
- moai_adk/core/template/backup.py +174 -0
- moai_adk/core/template/config.py +191 -0
- moai_adk/core/template/languages.py +43 -0
- moai_adk/core/template/merger.py +233 -0
- moai_adk/core/template/processor.py +1200 -0
- moai_adk/core/template_engine.py +310 -0
- moai_adk/core/template_variable_synchronizer.py +417 -0
- moai_adk/core/unified_permission_manager.py +745 -0
- moai_adk/core/user_behavior_analytics.py +851 -0
- moai_adk/core/version_sync.py +429 -0
- moai_adk/foundation/__init__.py +56 -0
- moai_adk/foundation/backend.py +1027 -0
- moai_adk/foundation/database.py +1115 -0
- moai_adk/foundation/devops.py +1585 -0
- moai_adk/foundation/ears.py +431 -0
- moai_adk/foundation/frontend.py +870 -0
- moai_adk/foundation/git/commit_templates.py +557 -0
- moai_adk/foundation/git.py +376 -0
- moai_adk/foundation/langs.py +484 -0
- moai_adk/foundation/ml_ops.py +1162 -0
- moai_adk/foundation/testing.py +1524 -0
- moai_adk/foundation/trust/trust_principles.py +676 -0
- moai_adk/foundation/trust/validation_checklist.py +1573 -0
- moai_adk/project/__init__.py +0 -0
- moai_adk/project/configuration.py +1084 -0
- moai_adk/project/documentation.py +566 -0
- moai_adk/project/schema.py +447 -0
- moai_adk/statusline/__init__.py +38 -0
- moai_adk/statusline/alfred_detector.py +105 -0
- moai_adk/statusline/config.py +376 -0
- moai_adk/statusline/enhanced_output_style_detector.py +372 -0
- moai_adk/statusline/git_collector.py +190 -0
- moai_adk/statusline/main.py +322 -0
- moai_adk/statusline/metrics_tracker.py +78 -0
- moai_adk/statusline/renderer.py +343 -0
- moai_adk/statusline/update_checker.py +129 -0
- moai_adk/statusline/version_reader.py +741 -0
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +714 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +474 -0
- moai_adk/templates/.claude/agents/moai/builder-command.md +1172 -0
- moai_adk/templates/.claude/agents/moai/builder-plugin.md +637 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +666 -0
- moai_adk/templates/.claude/agents/moai/expert-backend.md +899 -0
- moai_adk/templates/.claude/agents/moai/expert-database.md +777 -0
- moai_adk/templates/.claude/agents/moai/expert-debug.md +401 -0
- moai_adk/templates/.claude/agents/moai/expert-devops.md +720 -0
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +734 -0
- moai_adk/templates/.claude/agents/moai/expert-performance.md +657 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +513 -0
- moai_adk/templates/.claude/agents/moai/expert-testing.md +733 -0
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +1041 -0
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +432 -0
- moai_adk/templates/.claude/agents/moai/manager-docs.md +573 -0
- moai_adk/templates/.claude/agents/moai/manager-git.md +1060 -0
- moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
- moai_adk/templates/.claude/agents/moai/manager-quality.md +624 -0
- moai_adk/templates/.claude/agents/moai/manager-spec.md +809 -0
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +780 -0
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +784 -0
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +458 -0
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +1607 -0
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +789 -0
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +469 -0
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +1032 -0
- moai_adk/templates/.claude/commands/moai/0-project.md +1386 -0
- moai_adk/templates/.claude/commands/moai/1-plan.md +1427 -0
- moai_adk/templates/.claude/commands/moai/2-run.md +943 -0
- moai_adk/templates/.claude/commands/moai/3-sync.md +1324 -0
- moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
- moai_adk/templates/.claude/hooks/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
- moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +244 -0
- moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
- moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
- moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
- moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
- moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
- moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +1083 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +560 -0
- moai_adk/templates/.claude/output-styles/moai/yoda.md +359 -0
- moai_adk/templates/.claude/settings.json +172 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +307 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/batch_generate.py +560 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/generate_image.py +362 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +249 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +406 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +328 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +320 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +718 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +464 -0
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +323 -0
- moai_adk/templates/.claude/skills/moai-domain-database/examples.md +830 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
- moai_adk/templates/.claude/skills/moai-domain-database/reference.md +545 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +497 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +968 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +664 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +455 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +492 -0
- moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
- moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +202 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference.md +209 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +441 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/examples.md +1048 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/reference.md +246 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +420 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +359 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/reference.md +478 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +315 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/examples.md +228 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/assumption-matrix.md +80 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/cognitive-bias.md +199 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/first-principles.md +140 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/trade-off-analysis.md +154 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/reference.md +157 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +364 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +649 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +478 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +612 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +477 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/examples.md +1090 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/reference.md +686 -0
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +376 -0
- moai_adk/templates/.claude/skills/moai-lang-go/examples.md +919 -0
- moai_adk/templates/.claude/skills/moai-lang-go/reference.md +737 -0
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +385 -0
- moai_adk/templates/.claude/skills/moai-lang-java/examples.md +864 -0
- moai_adk/templates/.claude/skills/moai-lang-java/reference.md +291 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +382 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +1006 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +562 -0
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +644 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +481 -0
- moai_adk/templates/.claude/skills/moai-lang-python/examples.md +977 -0
- moai_adk/templates/.claude/skills/moai-lang-python/reference.md +804 -0
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +579 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +687 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +372 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +659 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +504 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +497 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +633 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +423 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +497 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +918 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +672 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +368 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1089 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +731 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +300 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +319 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +372 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
- moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +402 -0
- moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +607 -0
- moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +300 -0
- moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +537 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +291 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +390 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +398 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +379 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +358 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +467 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +377 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +466 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +482 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/SKILL.md +474 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/examples.md +621 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/migration.md +341 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/reference.md +463 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/validation.md +373 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/SKILL.md +275 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/adaptive-mfa.md +233 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/akamai-integration.md +215 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/application-credentials.md +280 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/attack-protection-log-events.md +225 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/attack-protection-overview.md +140 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/bot-detection.md +144 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/breached-password-detection.md +187 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/brute-force-protection.md +189 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/certifications.md +282 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/compliance-overview.md +263 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/continuous-session-protection.md +307 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/customize-mfa.md +178 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/dpop-implementation.md +283 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/fapi-implementation.md +259 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/gdpr-compliance.md +313 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/guardian-configuration.md +269 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/highly-regulated-identity.md +272 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/jwt-fundamentals.md +248 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mdl-verification.md +211 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-api-management.md +278 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-factors.md +226 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-overview.md +174 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mtls-sender-constraining.md +316 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/ropg-flow-mfa.md +217 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/security-center.md +325 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/security-guidance.md +277 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/state-parameters.md +178 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/step-up-authentication.md +251 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/suspicious-ip-throttling.md +240 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/tenant-access-control.md +180 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/webauthn-fido.md +235 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +449 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +390 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +175 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1434 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +92 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +534 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +377 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +456 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
- moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +411 -0
- moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
- moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
- moai_adk/templates/.git-hooks/pre-commit +128 -0
- moai_adk/templates/.git-hooks/pre-push +365 -0
- moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
- moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
- moai_adk/templates/.github/workflows/spec-issue-sync.yml +337 -0
- moai_adk/templates/.gitignore +222 -0
- moai_adk/templates/.mcp.json +13 -0
- moai_adk/templates/.moai/config/config.yaml +58 -0
- moai_adk/templates/.moai/config/questions/_schema.yaml +174 -0
- moai_adk/templates/.moai/config/questions/tab0-init.yaml +251 -0
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +107 -0
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +79 -0
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +632 -0
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +182 -0
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +96 -0
- moai_adk/templates/.moai/config/sections/git-strategy.yaml +116 -0
- moai_adk/templates/.moai/config/sections/language.yaml +11 -0
- moai_adk/templates/.moai/config/sections/project.yaml +13 -0
- moai_adk/templates/.moai/config/sections/quality.yaml +17 -0
- moai_adk/templates/.moai/config/sections/system.yaml +24 -0
- moai_adk/templates/.moai/config/sections/user.yaml +5 -0
- moai_adk/templates/.moai/config/statusline-config.yaml +92 -0
- moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
- moai_adk/templates/CLAUDE.md +642 -0
- moai_adk/utils/__init__.py +30 -0
- moai_adk/utils/banner.py +38 -0
- moai_adk/utils/common.py +294 -0
- moai_adk/utils/link_validator.py +241 -0
- moai_adk/utils/logger.py +147 -0
- moai_adk/utils/safe_file_reader.py +206 -0
- moai_adk/utils/timeout.py +160 -0
- moai_adk/utils/toon_utils.py +256 -0
- moai_adk/version.py +22 -0
- moai_adk-0.35.1.dist-info/METADATA +3018 -0
- moai_adk-0.35.1.dist-info/RECORD +502 -0
- moai_adk-0.35.1.dist-info/WHEEL +4 -0
- moai_adk-0.35.1.dist-info/entry_points.txt +3 -0
- moai_adk-0.35.1.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
# Java 21 LTS Reference Guide
|
|
2
|
+
|
|
3
|
+
## Language Features Overview
|
|
4
|
+
|
|
5
|
+
### Java 21 LTS (Long-Term Support)
|
|
6
|
+
|
|
7
|
+
Version Information:
|
|
8
|
+
- Latest: 21.0.5 (LTS, support until September 2031)
|
|
9
|
+
- Key JEPs: 444 (Virtual Threads), 441 (Pattern Matching), 440 (Record Patterns)
|
|
10
|
+
- JVM: HotSpot, GraalVM Native Image support
|
|
11
|
+
|
|
12
|
+
Core Features Summary:
|
|
13
|
+
|
|
14
|
+
| Feature | Status | JEP | Description |
|
|
15
|
+
|---------|--------|-----|-------------|
|
|
16
|
+
| Virtual Threads | Final | 444 | Lightweight threads for high-concurrency |
|
|
17
|
+
| Pattern Matching for switch | Final | 441 | Type patterns with guards |
|
|
18
|
+
| Record Patterns | Final | 440 | Destructuring in pattern matching |
|
|
19
|
+
| Sealed Classes | Final | 409 | Restrict class hierarchies |
|
|
20
|
+
| Sequenced Collections | Final | 431 | Ordered collection interfaces |
|
|
21
|
+
| String Templates | Preview | 430 | Embedded expressions in strings |
|
|
22
|
+
| Structured Concurrency | Preview | 453 | Scope-based concurrency |
|
|
23
|
+
| Scoped Values | Preview | 446 | Immutable inherited values |
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Enterprise Ecosystem
|
|
28
|
+
|
|
29
|
+
### Spring Boot 3.3
|
|
30
|
+
|
|
31
|
+
Key Features:
|
|
32
|
+
- Native GraalVM compilation support
|
|
33
|
+
- Virtual Threads integration
|
|
34
|
+
- Observability with Micrometer
|
|
35
|
+
- Problem Details for HTTP APIs (RFC 7807)
|
|
36
|
+
- SSL Bundle support
|
|
37
|
+
|
|
38
|
+
Configuration:
|
|
39
|
+
```properties
|
|
40
|
+
# application.properties
|
|
41
|
+
spring.threads.virtual.enabled=true
|
|
42
|
+
spring.datasource.url=jdbc:postgresql://localhost:5432/db
|
|
43
|
+
spring.datasource.hikari.maximum-pool-size=10
|
|
44
|
+
spring.jpa.hibernate.ddl-auto=validate
|
|
45
|
+
spring.jpa.show-sql=false
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Spring Security 6
|
|
49
|
+
|
|
50
|
+
Key Features:
|
|
51
|
+
- Lambda DSL configuration
|
|
52
|
+
- OAuth2 Resource Server
|
|
53
|
+
- JWT token validation
|
|
54
|
+
- Method security with annotations
|
|
55
|
+
|
|
56
|
+
### Hibernate 7 / Jakarta Persistence
|
|
57
|
+
|
|
58
|
+
Key Features:
|
|
59
|
+
- Java 21 record support
|
|
60
|
+
- Improved batch processing
|
|
61
|
+
- StatelessSession for bulk operations
|
|
62
|
+
- Native SQL result mapping
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Context7 Library Mappings
|
|
67
|
+
|
|
68
|
+
### Spring Ecosystem
|
|
69
|
+
```
|
|
70
|
+
/spring-projects/spring-boot - Spring Boot framework
|
|
71
|
+
/spring-projects/spring-framework - Spring Core framework
|
|
72
|
+
/spring-projects/spring-security - Security framework
|
|
73
|
+
/spring-projects/spring-data-jpa - JPA repositories
|
|
74
|
+
/spring-projects/spring-data-r2dbc - Reactive database access
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Persistence
|
|
78
|
+
```
|
|
79
|
+
/hibernate/hibernate-orm - Hibernate ORM
|
|
80
|
+
/querydsl/querydsl - Type-safe queries
|
|
81
|
+
/flyway/flyway - Database migrations
|
|
82
|
+
/liquibase/liquibase - Database change management
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Testing
|
|
86
|
+
```
|
|
87
|
+
/junit-team/junit5 - JUnit 5 testing
|
|
88
|
+
/mockito/mockito - Mocking framework
|
|
89
|
+
/testcontainers/testcontainers-java - Container testing
|
|
90
|
+
/assertj/assertj - Fluent assertions
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Build Tools
|
|
94
|
+
```
|
|
95
|
+
/gradle/gradle - Build automation
|
|
96
|
+
/apache/maven - Project management
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Utilities
|
|
100
|
+
```
|
|
101
|
+
/resilience4j/resilience4j - Fault tolerance
|
|
102
|
+
/open-telemetry/opentelemetry-java - Observability
|
|
103
|
+
/micrometer-metrics/micrometer - Application metrics
|
|
104
|
+
/mapstruct/mapstruct - Object mapping
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Performance Characteristics
|
|
110
|
+
|
|
111
|
+
### JVM Startup and Memory
|
|
112
|
+
|
|
113
|
+
| Runtime | Cold Start | Warm Start | Base Memory | With GraalVM Native |
|
|
114
|
+
|---------|------------|------------|-------------|---------------------|
|
|
115
|
+
| Java 21 (HotSpot) | 2-5s | <100ms | 256MB+ | 50-100ms, 64MB |
|
|
116
|
+
| Spring Boot 3.3 | 3-6s | <100ms | 512MB+ | 100-200ms, 128MB |
|
|
117
|
+
|
|
118
|
+
### Throughput Benchmarks
|
|
119
|
+
|
|
120
|
+
| Framework | Requests/sec | Latency P99 | Memory Usage |
|
|
121
|
+
|-----------|-------------|-------------|--------------|
|
|
122
|
+
| Spring Boot 3.3 (Virtual Threads) | 150K | 2ms | 512MB |
|
|
123
|
+
| Spring WebFlux | 180K | 1.5ms | 384MB |
|
|
124
|
+
| Spring MVC (Thread Pool) | 80K | 5ms | 768MB |
|
|
125
|
+
|
|
126
|
+
### Compilation Times
|
|
127
|
+
|
|
128
|
+
| Build Tool | Clean Build | Incremental | With Cache |
|
|
129
|
+
|------------|------------|-------------|------------|
|
|
130
|
+
| Maven 3.9 | 30-60s | 5-10s | 15-30s |
|
|
131
|
+
| Gradle 8.5 | 20-40s | 3-8s | 10-20s |
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Development Environment
|
|
136
|
+
|
|
137
|
+
### IDE Support
|
|
138
|
+
|
|
139
|
+
| IDE | Java Support | Spring Support | Best For |
|
|
140
|
+
|-----|--------------|----------------|----------|
|
|
141
|
+
| IntelliJ IDEA | Excellent | Excellent | Enterprise development |
|
|
142
|
+
| VS Code | Good | Good | Lightweight editing |
|
|
143
|
+
| Eclipse | Good | Good | Legacy projects |
|
|
144
|
+
|
|
145
|
+
### Recommended IntelliJ Plugins
|
|
146
|
+
- Spring Boot Assistant
|
|
147
|
+
- JPA Buddy
|
|
148
|
+
- TestContainers
|
|
149
|
+
- Key Promoter X
|
|
150
|
+
- Lombok
|
|
151
|
+
|
|
152
|
+
### Linters and Formatters
|
|
153
|
+
|
|
154
|
+
| Tool | Purpose | Config File |
|
|
155
|
+
|------|---------|-------------|
|
|
156
|
+
| Checkstyle | Code style | checkstyle.xml |
|
|
157
|
+
| SpotBugs | Bug detection | spotbugs-exclude.xml |
|
|
158
|
+
| PMD | Code analysis | ruleset.xml |
|
|
159
|
+
| google-java-format | Formatting | N/A (convention) |
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Container Optimization
|
|
164
|
+
|
|
165
|
+
### Docker Multi-Stage Build
|
|
166
|
+
|
|
167
|
+
```dockerfile
|
|
168
|
+
FROM eclipse-temurin:21-jdk-alpine AS builder
|
|
169
|
+
WORKDIR /app
|
|
170
|
+
COPY . .
|
|
171
|
+
RUN ./gradlew bootJar --no-daemon
|
|
172
|
+
|
|
173
|
+
FROM eclipse-temurin:21-jre-alpine
|
|
174
|
+
RUN addgroup -g 1000 app && adduser -u 1000 -G app -s /bin/sh -D app
|
|
175
|
+
WORKDIR /app
|
|
176
|
+
COPY --from=builder /app/build/libs/*.jar app.jar
|
|
177
|
+
USER app
|
|
178
|
+
EXPOSE 8080
|
|
179
|
+
ENTRYPOINT ["java", "-jar", "app.jar"]
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### GraalVM Native Image
|
|
183
|
+
|
|
184
|
+
```dockerfile
|
|
185
|
+
FROM ghcr.io/graalvm/native-image-community:21 AS builder
|
|
186
|
+
WORKDIR /app
|
|
187
|
+
COPY . .
|
|
188
|
+
RUN ./gradlew nativeCompile
|
|
189
|
+
|
|
190
|
+
FROM gcr.io/distroless/base-debian12
|
|
191
|
+
COPY --from=builder /app/build/native/nativeCompile/app /app
|
|
192
|
+
ENTRYPOINT ["/app"]
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### JVM Tuning for Containers
|
|
196
|
+
|
|
197
|
+
```yaml
|
|
198
|
+
# Kubernetes deployment
|
|
199
|
+
containers:
|
|
200
|
+
- name: app
|
|
201
|
+
image: myapp:latest
|
|
202
|
+
resources:
|
|
203
|
+
requests:
|
|
204
|
+
memory: "512Mi"
|
|
205
|
+
cpu: "500m"
|
|
206
|
+
limits:
|
|
207
|
+
memory: "1Gi"
|
|
208
|
+
cpu: "1000m"
|
|
209
|
+
env:
|
|
210
|
+
- name: JAVA_OPTS
|
|
211
|
+
value: >-
|
|
212
|
+
-XX:+UseContainerSupport
|
|
213
|
+
-XX:MaxRAMPercentage=75.0
|
|
214
|
+
-XX:+UseG1GC
|
|
215
|
+
-XX:+UseStringDeduplication
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Migration Guide: Java 17 to 21
|
|
221
|
+
|
|
222
|
+
### Key Changes
|
|
223
|
+
|
|
224
|
+
1. Virtual Threads:
|
|
225
|
+
- Replace `Executors.newFixedThreadPool()` with `Executors.newVirtualThreadPerTaskExecutor()`
|
|
226
|
+
- Consider structured concurrency for complex concurrent tasks
|
|
227
|
+
|
|
228
|
+
2. Pattern Matching:
|
|
229
|
+
- Refactor `instanceof` checks to pattern matching
|
|
230
|
+
- Use guarded patterns with `when` clause
|
|
231
|
+
|
|
232
|
+
3. Record Patterns:
|
|
233
|
+
- Use destructuring in switch expressions
|
|
234
|
+
- Combine with sealed classes for exhaustive matching
|
|
235
|
+
|
|
236
|
+
4. Sequenced Collections:
|
|
237
|
+
- Use `SequencedCollection.getFirst()` and `getLast()`
|
|
238
|
+
- Replace iteration with sequence methods
|
|
239
|
+
|
|
240
|
+
### Gradle Configuration Update
|
|
241
|
+
|
|
242
|
+
```kotlin
|
|
243
|
+
// Before (Java 17)
|
|
244
|
+
java { toolchain { languageVersion = JavaLanguageVersion.of(17) } }
|
|
245
|
+
|
|
246
|
+
// After (Java 21)
|
|
247
|
+
java { toolchain { languageVersion = JavaLanguageVersion.of(21) } }
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### Maven Configuration Update
|
|
251
|
+
|
|
252
|
+
```xml
|
|
253
|
+
<!-- Before -->
|
|
254
|
+
<java.version>17</java.version>
|
|
255
|
+
|
|
256
|
+
<!-- After -->
|
|
257
|
+
<java.version>21</java.version>
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Best Practices
|
|
263
|
+
|
|
264
|
+
### Code Style
|
|
265
|
+
- Use records for DTOs and value objects
|
|
266
|
+
- Prefer sealed interfaces for type hierarchies
|
|
267
|
+
- Use pattern matching in switch expressions
|
|
268
|
+
- Apply virtual threads for I/O-bound operations
|
|
269
|
+
|
|
270
|
+
### Spring Boot
|
|
271
|
+
- Use constructor injection (no @Autowired on constructors)
|
|
272
|
+
- Apply @Transactional at service layer
|
|
273
|
+
- Use records for request/response DTOs
|
|
274
|
+
- Configure proper connection pooling
|
|
275
|
+
|
|
276
|
+
### Testing
|
|
277
|
+
- Use JUnit 5 nested tests for organization
|
|
278
|
+
- Apply @DisplayName for readable test names
|
|
279
|
+
- Use TestContainers for integration tests
|
|
280
|
+
- Mock external dependencies with Mockito
|
|
281
|
+
|
|
282
|
+
### Security
|
|
283
|
+
- Never store passwords in plain text
|
|
284
|
+
- Use BCrypt for password hashing
|
|
285
|
+
- Validate all input data
|
|
286
|
+
- Apply principle of least privilege
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
Last Updated: 2025-12-07
|
|
291
|
+
Version: 1.0.0
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: moai-lang-kotlin
|
|
3
|
+
description: Kotlin 2.0+ development specialist covering Ktor, coroutines, Compose Multiplatform, and Kotlin-idiomatic patterns. Use when building Kotlin server apps, Android apps, or multiplatform projects.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
category: language
|
|
6
|
+
tags: kotlin, ktor, coroutines, compose, android, multiplatform
|
|
7
|
+
context7-libraries: /ktorio/ktor, /jetbrains/compose-multiplatform, /jetbrains/exposed
|
|
8
|
+
related-skills: moai-lang-java, moai-lang-swift
|
|
9
|
+
updated: 2025-12-07
|
|
10
|
+
status: active
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Quick Reference (30 seconds)
|
|
14
|
+
|
|
15
|
+
Kotlin 2.0+ Expert - K2 compiler, coroutines, Ktor, Compose Multiplatform with Context7 integration.
|
|
16
|
+
|
|
17
|
+
Auto-Triggers: Kotlin files (`.kt`, `.kts`), Gradle Kotlin DSL (`build.gradle.kts`, `settings.gradle.kts`)
|
|
18
|
+
|
|
19
|
+
Core Capabilities:
|
|
20
|
+
- Kotlin 2.0: K2 compiler, coroutines, Flow, sealed classes, value classes
|
|
21
|
+
- Ktor 3.0: Async HTTP server/client, WebSocket, JWT authentication
|
|
22
|
+
- Exposed 0.55: Kotlin SQL framework with coroutines support
|
|
23
|
+
- Spring Boot (Kotlin): Kotlin-idiomatic Spring with WebFlux
|
|
24
|
+
- Compose Multiplatform: Desktop, iOS, Web, Android UI
|
|
25
|
+
- Testing: JUnit 5, MockK, Kotest, Turbine for Flow testing
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Implementation Guide (5 minutes)
|
|
30
|
+
|
|
31
|
+
### Kotlin 2.0 Features
|
|
32
|
+
|
|
33
|
+
Coroutines and Flow:
|
|
34
|
+
```kotlin
|
|
35
|
+
// Structured concurrency with async/await
|
|
36
|
+
suspend fun fetchUserWithOrders(userId: Long): UserWithOrders = coroutineScope {
|
|
37
|
+
val userDeferred = async { userRepository.findById(userId) }
|
|
38
|
+
val ordersDeferred = async { orderRepository.findByUserId(userId) }
|
|
39
|
+
UserWithOrders(userDeferred.await(), ordersDeferred.await())
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Flow for reactive streams
|
|
43
|
+
fun observeUsers(): Flow<User> = flow {
|
|
44
|
+
while (true) {
|
|
45
|
+
emit(userRepository.findLatest())
|
|
46
|
+
delay(1000)
|
|
47
|
+
}
|
|
48
|
+
}.flowOn(Dispatchers.IO)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Sealed Classes and Value Classes:
|
|
52
|
+
```kotlin
|
|
53
|
+
sealed interface Result<out T> {
|
|
54
|
+
data class Success<T>(val data: T) : Result<T>
|
|
55
|
+
data class Error(val exception: Throwable) : Result<Nothing>
|
|
56
|
+
data object Loading : Result<Nothing>
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@JvmInline
|
|
60
|
+
value class UserId(val value: Long) {
|
|
61
|
+
init { require(value > 0) { "UserId must be positive" } }
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@JvmInline
|
|
65
|
+
value class Email(val value: String) {
|
|
66
|
+
init { require(value.contains("@")) { "Invalid email format" } }
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Ktor 3.0 Server
|
|
71
|
+
|
|
72
|
+
Application Setup:
|
|
73
|
+
```kotlin
|
|
74
|
+
fun main() {
|
|
75
|
+
embeddedServer(Netty, port = 8080, host = "0.0.0.0") {
|
|
76
|
+
configureKoin()
|
|
77
|
+
configureSecurity()
|
|
78
|
+
configureRouting()
|
|
79
|
+
configureContentNegotiation()
|
|
80
|
+
}.start(wait = true)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
fun Application.configureKoin() {
|
|
84
|
+
install(Koin) { modules(appModule) }
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
val appModule = module {
|
|
88
|
+
single<Database> { DatabaseFactory.create() }
|
|
89
|
+
single<UserRepository> { UserRepositoryImpl(get()) }
|
|
90
|
+
single<UserService> { UserServiceImpl(get()) }
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
fun Application.configureSecurity() {
|
|
94
|
+
install(Authentication) {
|
|
95
|
+
jwt("auth-jwt") {
|
|
96
|
+
realm = "User API"
|
|
97
|
+
verifier(JwtConfig.verifier)
|
|
98
|
+
validate { credential ->
|
|
99
|
+
if (credential.payload.audience.contains("api"))
|
|
100
|
+
JWTPrincipal(credential.payload) else null
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
fun Application.configureContentNegotiation() {
|
|
107
|
+
install(ContentNegotiation) {
|
|
108
|
+
json(Json { prettyPrint = true; ignoreUnknownKeys = true })
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Routing with Authentication:
|
|
114
|
+
```kotlin
|
|
115
|
+
fun Application.configureRouting() {
|
|
116
|
+
val userService by inject<UserService>()
|
|
117
|
+
|
|
118
|
+
routing {
|
|
119
|
+
route("/api/v1") {
|
|
120
|
+
post("/auth/register") {
|
|
121
|
+
val request = call.receive<CreateUserRequest>()
|
|
122
|
+
val user = userService.create(request)
|
|
123
|
+
call.respond(HttpStatusCode.Created, user.toDto())
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
authenticate("auth-jwt") {
|
|
127
|
+
route("/users") {
|
|
128
|
+
get {
|
|
129
|
+
val page = call.parameters["page"]?.toIntOrNull() ?: 0
|
|
130
|
+
val size = call.parameters["size"]?.toIntOrNull() ?: 20
|
|
131
|
+
call.respond(userService.findAll(page, size).map { it.toDto() })
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
get("/{id}") {
|
|
135
|
+
val id = call.parameters["id"]?.toLongOrNull()
|
|
136
|
+
?: return@get call.respond(HttpStatusCode.BadRequest)
|
|
137
|
+
userService.findById(id)?.let { call.respond(it.toDto()) }
|
|
138
|
+
?: call.respond(HttpStatusCode.NotFound)
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Exposed SQL Framework
|
|
148
|
+
|
|
149
|
+
Table and Entity:
|
|
150
|
+
```kotlin
|
|
151
|
+
object Users : LongIdTable("users") {
|
|
152
|
+
val name = varchar("name", 100)
|
|
153
|
+
val email = varchar("email", 255).uniqueIndex()
|
|
154
|
+
val passwordHash = varchar("password_hash", 255)
|
|
155
|
+
val status = enumerationByName<UserStatus>("status", 20)
|
|
156
|
+
val createdAt = timestamp("created_at").defaultExpression(CurrentTimestamp())
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
class UserEntity(id: EntityID<Long>) : LongEntity(id) {
|
|
160
|
+
companion object : LongEntityClass<UserEntity>(Users)
|
|
161
|
+
var name by Users.name
|
|
162
|
+
var email by Users.email
|
|
163
|
+
var passwordHash by Users.passwordHash
|
|
164
|
+
var status by Users.status
|
|
165
|
+
var createdAt by Users.createdAt
|
|
166
|
+
|
|
167
|
+
fun toModel() = User(id.value, name, email, passwordHash, status, createdAt)
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Repository with Coroutines:
|
|
172
|
+
```kotlin
|
|
173
|
+
class UserRepositoryImpl(private val database: Database) : UserRepository {
|
|
174
|
+
override suspend fun findById(id: Long): User? = dbQuery {
|
|
175
|
+
UserEntity.findById(id)?.toModel()
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
override suspend fun save(user: User): User = dbQuery {
|
|
179
|
+
UserEntity.new {
|
|
180
|
+
name = user.name
|
|
181
|
+
email = user.email
|
|
182
|
+
passwordHash = user.passwordHash
|
|
183
|
+
status = user.status
|
|
184
|
+
}.toModel()
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
private suspend fun <T> dbQuery(block: suspend () -> T): T =
|
|
188
|
+
newSuspendedTransaction(Dispatchers.IO, database) { block() }
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Spring Boot with Kotlin
|
|
193
|
+
|
|
194
|
+
WebFlux Controller:
|
|
195
|
+
```kotlin
|
|
196
|
+
@RestController
|
|
197
|
+
@RequestMapping("/api/users")
|
|
198
|
+
class UserController(private val userService: UserService) {
|
|
199
|
+
|
|
200
|
+
@GetMapping
|
|
201
|
+
suspend fun listUsers(
|
|
202
|
+
@RequestParam(defaultValue = "0") page: Int,
|
|
203
|
+
@RequestParam(defaultValue = "20") size: Int
|
|
204
|
+
): Flow<UserDto> = userService.findAll(page, size).map { it.toDto() }
|
|
205
|
+
|
|
206
|
+
@GetMapping("/{id}")
|
|
207
|
+
suspend fun getUser(@PathVariable id: Long): ResponseEntity<UserDto> =
|
|
208
|
+
userService.findById(id)?.let { ResponseEntity.ok(it.toDto()) }
|
|
209
|
+
?: ResponseEntity.notFound().build()
|
|
210
|
+
|
|
211
|
+
@PostMapping
|
|
212
|
+
suspend fun createUser(@Valid @RequestBody request: CreateUserRequest): ResponseEntity<UserDto> {
|
|
213
|
+
val user = userService.create(request)
|
|
214
|
+
return ResponseEntity.created(URI.create("/api/users/${user.id}")).body(user.toDto())
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Advanced Patterns
|
|
222
|
+
|
|
223
|
+
### Compose Multiplatform
|
|
224
|
+
|
|
225
|
+
Shared UI Component:
|
|
226
|
+
```kotlin
|
|
227
|
+
@Composable
|
|
228
|
+
fun UserListScreen(viewModel: UserListViewModel, onUserClick: (Long) -> Unit) {
|
|
229
|
+
val uiState by viewModel.uiState.collectAsState()
|
|
230
|
+
|
|
231
|
+
when (val state = uiState) {
|
|
232
|
+
is UiState.Loading -> LoadingIndicator()
|
|
233
|
+
is UiState.Success -> UserList(state.users, onUserClick)
|
|
234
|
+
is UiState.Error -> ErrorMessage(state.message, onRetry = viewModel::retry)
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
@Composable
|
|
239
|
+
fun UserCard(user: User, onClick: () -> Unit) {
|
|
240
|
+
Card(
|
|
241
|
+
modifier = Modifier.fillMaxWidth().clickable(onClick = onClick),
|
|
242
|
+
elevation = CardDefaults.cardElevation(4.dp)
|
|
243
|
+
) {
|
|
244
|
+
Row(modifier = Modifier.padding(16.dp)) {
|
|
245
|
+
AsyncImage(model = user.avatarUrl, contentDescription = user.name,
|
|
246
|
+
modifier = Modifier.size(48.dp).clip(CircleShape))
|
|
247
|
+
Spacer(Modifier.width(16.dp))
|
|
248
|
+
Column {
|
|
249
|
+
Text(user.name, style = MaterialTheme.typography.titleMedium)
|
|
250
|
+
Text(user.email, style = MaterialTheme.typography.bodySmall)
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### Testing with MockK
|
|
258
|
+
|
|
259
|
+
```kotlin
|
|
260
|
+
class UserServiceTest {
|
|
261
|
+
private val userRepository = mockk<UserRepository>()
|
|
262
|
+
private val userService = UserService(userRepository)
|
|
263
|
+
|
|
264
|
+
@Test
|
|
265
|
+
fun `should fetch user concurrently`() = runTest {
|
|
266
|
+
val testUser = User(1L, "John", "john@example.com")
|
|
267
|
+
coEvery { userRepository.findById(1L) } coAnswers { delay(100); testUser }
|
|
268
|
+
|
|
269
|
+
val result = userService.findById(1L)
|
|
270
|
+
assertThat(result).isEqualTo(testUser)
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
@Test
|
|
274
|
+
fun `should handle Flow emissions`() = runTest {
|
|
275
|
+
val users = listOf(User(1L, "John", "john@example.com"))
|
|
276
|
+
coEvery { userRepository.findAllAsFlow() } returns users.asFlow()
|
|
277
|
+
|
|
278
|
+
userService.streamUsers().toList().also { result ->
|
|
279
|
+
assertThat(result).hasSize(1)
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
### Gradle Build Configuration
|
|
286
|
+
|
|
287
|
+
```kotlin
|
|
288
|
+
plugins {
|
|
289
|
+
kotlin("jvm") version "2.0.20"
|
|
290
|
+
kotlin("plugin.serialization") version "2.0.20"
|
|
291
|
+
id("io.ktor.plugin") version "3.0.0"
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
kotlin { jvmToolchain(21) }
|
|
295
|
+
|
|
296
|
+
dependencies {
|
|
297
|
+
implementation("io.ktor:ktor-server-core-jvm")
|
|
298
|
+
implementation("io.ktor:ktor-server-netty-jvm")
|
|
299
|
+
implementation("io.ktor:ktor-server-content-negotiation-jvm")
|
|
300
|
+
implementation("io.ktor:ktor-server-auth-jwt-jvm")
|
|
301
|
+
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0")
|
|
302
|
+
implementation("org.jetbrains.exposed:exposed-core:0.55.0")
|
|
303
|
+
implementation("org.jetbrains.exposed:exposed-dao:0.55.0")
|
|
304
|
+
implementation("org.postgresql:postgresql:42.7.3")
|
|
305
|
+
|
|
306
|
+
testImplementation("io.mockk:mockk:1.13.12")
|
|
307
|
+
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0")
|
|
308
|
+
testImplementation("app.cash.turbine:turbine:1.1.0")
|
|
309
|
+
}
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
## Context7 Integration
|
|
315
|
+
|
|
316
|
+
Library mappings for latest documentation:
|
|
317
|
+
- `/ktorio/ktor` - Ktor 3.0 server/client documentation
|
|
318
|
+
- `/jetbrains/exposed` - Exposed SQL framework
|
|
319
|
+
- `/JetBrains/kotlin` - Kotlin 2.0 language reference
|
|
320
|
+
- `/Kotlin/kotlinx.coroutines` - Coroutines library
|
|
321
|
+
- `/jetbrains/compose-multiplatform` - Compose Multiplatform
|
|
322
|
+
- `/arrow-kt/arrow` - Arrow functional programming
|
|
323
|
+
|
|
324
|
+
Usage:
|
|
325
|
+
```python
|
|
326
|
+
docs = await mcp__context7__get_library_docs(
|
|
327
|
+
context7CompatibleLibraryID="/ktorio/ktor",
|
|
328
|
+
topic="routing authentication jwt",
|
|
329
|
+
tokens=8000
|
|
330
|
+
)
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## When to Use Kotlin
|
|
336
|
+
|
|
337
|
+
Use Kotlin When:
|
|
338
|
+
- Developing Android applications (official language)
|
|
339
|
+
- Building modern server applications with Ktor
|
|
340
|
+
- Preferring concise, expressive syntax
|
|
341
|
+
- Building reactive services with coroutines and Flow
|
|
342
|
+
- Creating multiplatform applications (iOS, Desktop, Web)
|
|
343
|
+
- Full Java interoperability required
|
|
344
|
+
|
|
345
|
+
Consider Alternatives When:
|
|
346
|
+
- Legacy Java codebase requiring minimal changes
|
|
347
|
+
- Big data pipelines (prefer Scala with Spark)
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## Works Well With
|
|
352
|
+
|
|
353
|
+
- `moai-lang-java` - Java interoperability and Spring Boot patterns
|
|
354
|
+
- `moai-domain-backend` - REST API, GraphQL, microservices architecture
|
|
355
|
+
- `moai-domain-database` - JPA, Exposed, R2DBC patterns
|
|
356
|
+
- `moai-quality-testing` - JUnit 5, MockK, TestContainers integration
|
|
357
|
+
- `moai-infra-docker` - JVM container optimization
|
|
358
|
+
|
|
359
|
+
---
|
|
360
|
+
|
|
361
|
+
## Troubleshooting
|
|
362
|
+
|
|
363
|
+
K2 Compiler: Add `kotlin.experimental.tryK2=true` to gradle.properties; clear `.gradle` for rebuild
|
|
364
|
+
|
|
365
|
+
Coroutines: Avoid `runBlocking` in suspend contexts; use `Dispatchers.IO` for blocking operations
|
|
366
|
+
|
|
367
|
+
Ktor: Ensure `ContentNegotiation` installed; check JWT verifier configuration; verify routing hierarchy
|
|
368
|
+
|
|
369
|
+
Exposed: Ensure all DB operations in transaction; be aware of entity loading outside transaction
|
|
370
|
+
|
|
371
|
+
---
|
|
372
|
+
|
|
373
|
+
## Advanced Documentation
|
|
374
|
+
|
|
375
|
+
For comprehensive reference materials:
|
|
376
|
+
- [reference.md](reference.md) - Complete ecosystem, Context7 mappings, testing patterns, performance
|
|
377
|
+
- [examples.md](examples.md) - Production-ready code examples, Ktor, Compose, Android patterns
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
381
|
+
Last Updated: 2025-12-07
|
|
382
|
+
Status: Production Ready (v1.0.0)
|