moai-adk 0.34.0__py3-none-any.whl → 1.1.0__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.
- moai_adk/__main__.py +136 -5
- moai_adk/astgrep/__init__.py +37 -0
- moai_adk/astgrep/analyzer.py +522 -0
- moai_adk/astgrep/models.py +124 -0
- moai_adk/astgrep/rules.py +179 -0
- moai_adk/cli/commands/analyze.py +11 -2
- moai_adk/cli/commands/doctor.py +7 -1
- moai_adk/cli/commands/init.py +321 -11
- moai_adk/cli/commands/language.py +7 -1
- moai_adk/cli/commands/rank.py +449 -0
- moai_adk/cli/commands/status.py +7 -1
- moai_adk/cli/commands/switch.py +325 -0
- moai_adk/cli/commands/update.py +296 -23
- moai_adk/cli/prompts/init_prompts.py +362 -66
- moai_adk/cli/prompts/translations/__init__.py +573 -0
- moai_adk/cli/ui/prompts.py +61 -2
- moai_adk/cli/worktree/cli.py +106 -1
- moai_adk/cli/worktree/manager.py +155 -0
- moai_adk/core/config/unified.py +244 -63
- moai_adk/core/credentials.py +264 -0
- moai_adk/core/error_recovery_system.py +22 -4
- moai_adk/core/git/conflict_detector.py +10 -1
- moai_adk/core/git/event_detector.py +16 -5
- moai_adk/core/integration/engine.py +2 -2
- moai_adk/core/integration/integration_tester.py +5 -5
- moai_adk/core/language_config_resolver.py +9 -3
- moai_adk/core/merge/analyzer.py +509 -324
- moai_adk/core/migration/alfred_to_moai_migrator.py +7 -1
- moai_adk/core/migration/backup_manager.py +54 -4
- moai_adk/core/migration/file_migrator.py +174 -2
- moai_adk/core/migration/interactive_checkbox_ui.py +42 -31
- moai_adk/core/migration/version_detector.py +123 -19
- moai_adk/core/migration/version_migrator.py +44 -9
- moai_adk/core/model_allocator.py +241 -0
- moai_adk/core/project/backup_utils.py +12 -2
- moai_adk/core/project/initializer.py +44 -87
- moai_adk/core/project/phase_executor.py +95 -33
- moai_adk/core/project/validator.py +16 -1
- moai_adk/core/quality/trust_checker.py +30 -10
- moai_adk/core/rollback_manager.py +60 -25
- moai_adk/core/template/backup.py +88 -6
- moai_adk/core/template/config.py +33 -9
- moai_adk/core/template/merger.py +34 -8
- moai_adk/core/template/processor.py +334 -11
- moai_adk/core/template_engine.py +10 -1
- moai_adk/core/template_variable_synchronizer.py +16 -2
- moai_adk/core/version_sync.py +54 -6
- moai_adk/foundation/__init__.py +1 -20
- moai_adk/foundation/testing.py +1 -1
- moai_adk/loop/__init__.py +54 -0
- moai_adk/loop/controller.py +305 -0
- moai_adk/loop/feedback.py +230 -0
- moai_adk/loop/state.py +209 -0
- moai_adk/loop/storage.py +220 -0
- moai_adk/lsp/__init__.py +70 -0
- moai_adk/lsp/client.py +320 -0
- moai_adk/lsp/models.py +261 -0
- moai_adk/lsp/protocol.py +404 -0
- moai_adk/lsp/server_manager.py +248 -0
- moai_adk/project/configuration.py +8 -1
- moai_adk/py.typed +0 -0
- moai_adk/ralph/__init__.py +37 -0
- moai_adk/ralph/engine.py +307 -0
- moai_adk/rank/__init__.py +21 -0
- moai_adk/rank/auth.py +425 -0
- moai_adk/rank/client.py +557 -0
- moai_adk/rank/config.py +147 -0
- moai_adk/rank/hook.py +1503 -0
- moai_adk/rank/py.typed +0 -0
- moai_adk/statusline/__init__.py +3 -0
- moai_adk/statusline/enhanced_output_style_detector.py +5 -5
- moai_adk/statusline/main.py +20 -1
- moai_adk/statusline/memory_collector.py +268 -0
- moai_adk/statusline/renderer.py +54 -38
- moai_adk/tag_system/__init__.py +48 -0
- moai_adk/tag_system/atomic_ops.py +117 -0
- moai_adk/tag_system/linkage.py +335 -0
- moai_adk/tag_system/parser.py +176 -0
- moai_adk/tag_system/validator.py +200 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +19 -3
- moai_adk/templates/.claude/agents/moai/builder-command.md +62 -16
- moai_adk/templates/.claude/agents/moai/builder-plugin.md +763 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +21 -5
- moai_adk/templates/.claude/agents/moai/expert-backend.md +103 -39
- moai_adk/templates/.claude/agents/moai/expert-debug.md +9 -3
- moai_adk/templates/.claude/agents/moai/expert-devops.md +16 -14
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +45 -31
- moai_adk/templates/.claude/agents/moai/expert-performance.md +13 -9
- moai_adk/templates/.claude/agents/moai/expert-refactoring.md +228 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +19 -3
- moai_adk/templates/.claude/agents/moai/expert-testing.md +13 -9
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +8 -2
- moai_adk/templates/.claude/agents/moai/manager-docs.md +10 -5
- moai_adk/templates/.claude/agents/moai/manager-git.md +99 -27
- moai_adk/templates/.claude/agents/moai/manager-project.md +87 -7
- moai_adk/templates/.claude/agents/moai/manager-quality.md +22 -5
- moai_adk/templates/.claude/agents/moai/manager-spec.md +8 -2
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +45 -14
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +16 -3
- moai_adk/templates/.claude/commands/moai/0-project.md +239 -1185
- moai_adk/templates/.claude/commands/moai/1-plan.md +383 -363
- moai_adk/templates/.claude/commands/moai/2-run.md +254 -347
- moai_adk/templates/.claude/commands/moai/3-sync.md +174 -100
- moai_adk/templates/.claude/commands/moai/9-feedback.md +49 -33
- moai_adk/templates/.claude/commands/moai/alfred.md +339 -0
- moai_adk/templates/.claude/commands/moai/cancel-loop.md +163 -0
- moai_adk/templates/.claude/commands/moai/fix.md +264 -0
- moai_adk/templates/.claude/commands/moai/loop.md +363 -0
- moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +37 -81
- moai_adk/templates/.claude/hooks/moai/lib/alfred_detector.py +105 -0
- moai_adk/templates/.claude/hooks/moai/lib/atomic_write.py +122 -0
- moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +4 -1
- moai_adk/templates/.claude/hooks/moai/lib/common.py +35 -5
- moai_adk/templates/.claude/hooks/moai/lib/config.py +376 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +24 -28
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +14 -14
- moai_adk/templates/.claude/hooks/moai/lib/enhanced_output_style_detector.py +372 -0
- moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
- moai_adk/templates/.claude/hooks/moai/lib/file_utils.py +95 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_collector.py +190 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +15 -13
- moai_adk/templates/.claude/hooks/moai/lib/language_detector.py +298 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +125 -25
- moai_adk/templates/.claude/hooks/moai/lib/main.py +341 -0
- moai_adk/templates/.claude/hooks/moai/lib/memory_collector.py +268 -0
- moai_adk/templates/.claude/hooks/moai/lib/metrics_tracker.py +78 -0
- moai_adk/templates/.claude/hooks/moai/lib/models.py +9 -7
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +204 -13
- moai_adk/templates/.claude/hooks/moai/lib/project.py +23 -14
- moai_adk/templates/.claude/hooks/moai/lib/renderer.py +359 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_linkage.py +333 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_parser.py +176 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_validator.py +200 -0
- moai_adk/templates/.claude/hooks/moai/lib/timeout.py +5 -5
- moai_adk/templates/.claude/hooks/moai/lib/tool_registry.py +896 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +30 -18
- moai_adk/templates/.claude/hooks/moai/lib/update_checker.py +129 -0
- moai_adk/templates/.claude/hooks/moai/lib/version_reader.py +741 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +276 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +255 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__coverage_guard.py +325 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +315 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__lsp_diagnostic.py +508 -0
- moai_adk/templates/.claude/hooks/moai/pre_commit__tag_validator.py +287 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +268 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__tdd_enforcer.py +208 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +93 -61
- moai_adk/templates/.claude/hooks/moai/session_end__rank_submit.py +69 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +165 -70
- moai_adk/templates/.claude/hooks/moai/shared/utils/announcement_translator.py +206 -0
- moai_adk/templates/.claude/hooks/moai/stop__loop_controller.py +621 -0
- moai_adk/templates/.claude/output-styles/moai/alfred.md +758 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +86 -3
- moai_adk/templates/.claude/output-styles/moai/yoda.md +2 -2
- moai_adk/templates/.claude/settings.json +154 -77
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +252 -198
- moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +169 -323
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +39 -27
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +115 -125
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +150 -150
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +182 -175
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +198 -138
- moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +226 -320
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +43 -222
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +75 -219
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +103 -463
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/component-architecture.md +723 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/nextjs16-patterns.md +713 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/performance-optimization.md +694 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/react19-patterns.md +591 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/state-management.md +680 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/vue35-patterns.md +802 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +118 -339
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +74 -377
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +299 -70
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +205 -182
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/advanced-agent-patterns.md +370 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-cli-reference-official.md +420 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +32 -22
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-devcontainers-official.md +381 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-discover-plugins-official.md +379 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-headless-official.md +378 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +110 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugin-marketplaces-official.md +308 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugins-official.md +640 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sandboxing-official.md +282 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +425 -71
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-statusline-official.md +293 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +325 -143
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +96 -316
- moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +116 -294
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-advanced.md +279 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-implementation.md +267 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +121 -650
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/patterns.md +22 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-ears-format.md +200 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +37 -730
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-tdd-implementation.md +275 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +77 -819
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-implementation.md +244 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-validation.md +219 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +14 -18
- moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +86 -270
- moai_adk/templates/.claude/skills/moai-framework-electron/SKILL.md +288 -0
- moai_adk/templates/.claude/skills/moai-framework-electron/examples.md +2082 -0
- moai_adk/templates/.claude/skills/moai-framework-electron/reference.md +1649 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +76 -582
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +1239 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/modules/advanced-patterns.md +401 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +1136 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +82 -436
- moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +585 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/aspnet-core.md +627 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/blazor-components.md +767 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/cqrs-validation.md +626 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/csharp12-features.md +580 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/efcore-patterns.md +622 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +403 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +65 -542
- moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +1171 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/modules/advanced-patterns.md +531 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +889 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +32 -405
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +114 -293
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +83 -307
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +179 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +973 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +1543 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +42 -279
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +94 -556
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +1608 -0
- moai_adk/templates/.claude/skills/moai-lang-php/modules/advanced-patterns.md +538 -0
- moai_adk/templates/.claude/skills/moai-lang-php/reference.md +1323 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +108 -358
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +84 -482
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +1154 -0
- moai_adk/templates/.claude/skills/moai-lang-r/modules/advanced-patterns.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-r/reference.md +1087 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +106 -610
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +1106 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/modules/advanced-patterns.md +309 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/modules/testing-patterns.md +306 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +1024 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +51 -265
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +106 -442
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/akka-actors.md +479 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/cats-effect.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/functional-programming.md +460 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/spark-data.md +498 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/zio-patterns.md +541 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +88 -457
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/combine-reactive.md +256 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/concurrency.md +270 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/swift6-features.md +265 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/swiftui-patterns.md +314 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +75 -283
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +97 -252
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +64 -240
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +331 -12
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +330 -37
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +90 -287
- moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +200 -206
- moai_adk/templates/.claude/skills/moai-platform-auth0/examples.md +2446 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/adaptive-mfa.md +233 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/akamai-integration.md +214 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/application-credentials.md +280 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-log-events.md +224 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-overview.md +140 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/bot-detection.md +144 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/breached-password-detection.md +187 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/brute-force-protection.md +189 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/certifications.md +282 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/compliance-overview.md +263 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/continuous-session-protection.md +307 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/customize-mfa.md +177 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/dpop-implementation.md +283 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/fapi-implementation.md +259 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/gdpr-compliance.md +313 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/guardian-configuration.md +269 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/highly-regulated-identity.md +272 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/jwt-fundamentals.md +248 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mdl-verification.md +210 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-api-management.md +278 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-factors.md +226 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-overview.md +174 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mtls-sender-constraining.md +316 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/ropg-flow-mfa.md +216 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-center.md +325 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-guidance.md +277 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/state-parameters.md +177 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/step-up-authentication.md +251 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/suspicious-ip-throttling.md +240 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/tenant-access-control.md +179 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/webauthn-fido.md +235 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/reference.md +224 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +75 -330
- moai_adk/templates/.claude/skills/moai-platform-clerk/examples.md +1426 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/modules/advanced-patterns.md +417 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/reference.md +273 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +100 -340
- moai_adk/templates/.claude/skills/moai-platform-convex/examples.md +506 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/auth-integration.md +421 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/file-storage.md +474 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/reactive-queries.md +302 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/server-functions.md +452 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/reference.md +385 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +113 -326
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/examples.md +514 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/custom-claims.md +374 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/phone-auth.md +372 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/social-auth.md +339 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/reference.md +382 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +71 -302
- moai_adk/templates/.claude/skills/moai-platform-firestore/examples.md +445 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/offline-cache.md +392 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/realtime-listeners.md +441 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/security-rules.md +352 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/transactions.md +452 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/reference.md +322 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +101 -412
- moai_adk/templates/.claude/skills/moai-platform-neon/examples.md +470 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/auto-scaling.md +349 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/branching-workflows.md +354 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/connection-pooling.md +412 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/pitr-backups.md +458 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/reference.md +272 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +96 -327
- moai_adk/templates/.claude/skills/moai-platform-railway/examples.md +539 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/docker-deployment.md +261 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/multi-service.md +291 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/networking-domains.md +338 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/volumes-storage.md +353 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/reference.md +374 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +103 -428
- moai_adk/templates/.claude/skills/moai-platform-supabase/examples.md +502 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/auth-integration.md +384 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/edge-functions.md +371 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/postgresql-pgvector.md +231 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/realtime-presence.md +354 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/row-level-security.md +286 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/storage-cdn.md +319 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/typescript-patterns.md +453 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/reference.md +284 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +96 -446
- moai_adk/templates/.claude/skills/moai-platform-vercel/examples.md +502 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/analytics-speed.md +348 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/deployment-config.md +344 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/edge-functions.md +222 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/isr-caching.md +306 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/kv-storage.md +399 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/reference.md +360 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +193 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/examples.md +1099 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/language-specific.md +307 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/pattern-syntax.md +237 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/refactoring-patterns.md +260 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/security-rules.md +239 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/reference.md +288 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/go.yml +90 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/python.yml +101 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/typescript.yml +83 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/complexity-check.yml +94 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/deprecated-apis.yml +84 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/secrets-detection.yml +89 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/sql-injection.yml +45 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/xss-prevention.yml +50 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/sgconfig.yml +54 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +225 -423
- moai_adk/templates/.claude/skills/moai-workflow-loop/SKILL.md +197 -0
- moai_adk/templates/.claude/skills/moai-workflow-loop/examples.md +1063 -0
- moai_adk/templates/.claude/skills/moai-workflow-loop/reference.md +1414 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +211 -314
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +15 -43
- moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +119 -316
- moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +96 -203
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +201 -388
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +52 -3
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +263 -806
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/context7-integration.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/review-workflows.md +500 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/relevance-analysis.md +154 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/safety-analysis.md +148 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/scoring-algorithms.md +196 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/timeliness-analysis.md +168 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/truthfulness-analysis.md +136 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/usability-analysis.md +153 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework.md +257 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +191 -1344
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/analysis-patterns.md +340 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/core-classes.md +299 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/tool-integration.md +380 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/debugging-workflows.md +451 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/error-analysis.md +442 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/optimization-patterns.md +473 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/profiling-techniques.md +481 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/ai-optimization.md +241 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/bottleneck-detection.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/optimization-plan.md +315 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/profiler-core.md +277 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/real-time-monitoring.md +187 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +287 -1194
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/quality-metrics.md +415 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/ai-workflows.md +620 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/patterns.md +692 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/security-analysis.md +429 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +262 -1192
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/static-analysis.md +438 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd/core-classes.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/advanced-features.md +494 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/red-green-refactor.md +316 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-generation.md +471 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-patterns.md +371 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +227 -1222
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/trust5-validation.md +428 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/SKILL.md +228 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/integration-patterns.md +149 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/moai-adk-integration.md +245 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-advanced.md +310 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-development.md +202 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-workflows.md +302 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/registry-architecture.md +271 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/resource-optimization.md +300 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/tools-integration.md +280 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/troubleshooting.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-commands.md +296 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-management.md +217 -0
- moai_adk/templates/.git-hooks/pre-push +162 -59
- moai_adk/templates/.github/workflows/ci-universal.yml +934 -133
- moai_adk/templates/.gitignore +65 -107
- moai_adk/templates/.lsp.json +152 -0
- moai_adk/templates/.mcp.json +2 -20
- moai_adk/templates/.moai/announcements/en.json +18 -0
- moai_adk/templates/.moai/announcements/ja.json +18 -0
- moai_adk/templates/.moai/announcements/ko.json +18 -0
- moai_adk/templates/.moai/announcements/zh.json +18 -0
- moai_adk/templates/.moai/config/config.yaml +8 -2
- moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
- moai_adk/templates/.moai/config/sections/language.yaml +2 -2
- moai_adk/templates/.moai/config/sections/llm.yaml +41 -0
- moai_adk/templates/.moai/config/sections/pricing.yaml +30 -0
- moai_adk/templates/.moai/config/sections/project.yaml +2 -2
- moai_adk/templates/.moai/config/sections/quality.yaml +43 -5
- moai_adk/templates/.moai/config/sections/ralph.yaml +55 -0
- moai_adk/templates/.moai/config/sections/system.yaml +46 -1
- moai_adk/templates/.moai/config/sections/user.yaml +1 -1
- moai_adk/templates/.moai/config/statusline-config.yaml +2 -2
- moai_adk/templates/.moai/llm-configs/glm.json +22 -0
- moai_adk/templates/CLAUDE.ja.md +343 -0
- moai_adk/templates/CLAUDE.ko.md +343 -0
- moai_adk/templates/CLAUDE.md +200 -499
- moai_adk/templates/CLAUDE.zh.md +343 -0
- moai_adk/utils/common.py +37 -0
- moai_adk/version.py +1 -1
- moai_adk-1.1.0.dist-info/METADATA +2443 -0
- moai_adk-1.1.0.dist-info/RECORD +701 -0
- {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/entry_points.txt +2 -0
- moai_adk-1.1.0.dist-info/licenses/LICENSE +99 -0
- moai_adk/core/config/auto_spec_config.py +0 -340
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +0 -901
- moai_adk/core/spec/confidence_scoring.py +0 -680
- moai_adk/core/spec/ears_template_engine.py +0 -1247
- moai_adk/core/spec/quality_validator.py +0 -687
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +0 -670
- moai_adk/templates/.claude/agents/moai/expert-database.md +0 -777
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +0 -1041
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +0 -458
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +0 -1607
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +0 -789
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +0 -469
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +0 -1032
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +0 -438
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +0 -431
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +0 -405
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +0 -336
- moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +0 -402
- moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +0 -607
- moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +0 -300
- moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +0 -537
- moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +0 -520
- moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +0 -574
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +0 -317
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +0 -663
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +0 -190
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +0 -175
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +0 -196
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +0 -17
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +0 -158
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +0 -340
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +0 -713
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +0 -538
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +0 -1336
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +0 -730
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +0 -608
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +0 -1005
- moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +0 -436
- moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +0 -411
- moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +0 -982
- moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +0 -778
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +0 -646
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +0 -782
- moai_adk/templates/.moai/config/questions/_schema.yaml +0 -151
- moai_adk/templates/.moai/config/questions/tab0-init.yaml +0 -251
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +0 -108
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +0 -81
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +0 -634
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +0 -170
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +0 -87
- moai_adk/templates/.moai/scripts/setup-glm.py +0 -136
- moai_adk-0.34.0.dist-info/METADATA +0 -2999
- moai_adk-0.34.0.dist-info/RECORD +0 -463
- moai_adk-0.34.0.dist-info/licenses/LICENSE +0 -21
- /moai_adk/foundation/{git.py → git/__init__.py} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-mermaid/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-mermaid/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-nextra/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-testing/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-testing/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/examples.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/reference.md +0 -0
- {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/WHEEL +0 -0
|
@@ -1,497 +1,161 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: moai-lang-scala
|
|
3
|
-
description: Scala 3.4+ development specialist covering Akka, Cats Effect, ZIO, and Spark patterns. Use when building distributed systems, big data pipelines, or functional programming applications.
|
|
4
|
-
version: 1.0
|
|
5
|
-
category: language
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
- /apache/spark
|
|
18
|
-
related-skills:
|
|
19
|
-
- moai-lang-java
|
|
20
|
-
- moai-domain-database
|
|
21
|
-
updated: 2025-12-07
|
|
22
|
-
status: active
|
|
2
|
+
name: "moai-lang-scala"
|
|
3
|
+
description: "Scala 3.4+ development specialist covering Akka, Cats Effect, ZIO, and Spark patterns. Use when building distributed systems, big data pipelines, or functional programming applications."
|
|
4
|
+
version: 2.1.0
|
|
5
|
+
category: "language"
|
|
6
|
+
modularized: true
|
|
7
|
+
user-invocable: false
|
|
8
|
+
tags: ["language", "scala", "akka", "cats-effect", "zio", "spark", "sbt"]
|
|
9
|
+
status: "active"
|
|
10
|
+
updated: 2026-01-11
|
|
11
|
+
allowed-tools:
|
|
12
|
+
- Read
|
|
13
|
+
- Grep
|
|
14
|
+
- Glob
|
|
15
|
+
- mcp__context7__resolve-library-id
|
|
16
|
+
- mcp__context7__get-library-docs
|
|
23
17
|
---
|
|
24
18
|
|
|
25
|
-
|
|
19
|
+
# Scala 3.4+ Development Specialist
|
|
26
20
|
|
|
27
|
-
|
|
21
|
+
Functional programming, effect systems, and big data processing for JVM applications.
|
|
28
22
|
|
|
29
|
-
|
|
23
|
+
## Quick Reference
|
|
24
|
+
|
|
25
|
+
Auto-Triggers: Scala files (.scala, .sc), build files (build.sbt, project/build.properties)
|
|
30
26
|
|
|
31
27
|
Core Capabilities:
|
|
28
|
+
|
|
32
29
|
- Scala 3.4: Given/using, extension methods, enums, opaque types, match types
|
|
33
30
|
- Akka 2.9: Typed actors, streams, clustering, persistence
|
|
34
31
|
- Cats Effect 3.5: Pure FP runtime, fibers, concurrent structures
|
|
35
32
|
- ZIO 2.1: Effect system, layers, streaming, error handling
|
|
36
33
|
- Apache Spark 3.5: DataFrame API, SQL, structured streaming
|
|
37
|
-
- Testing: ScalaTest, Specs2, MUnit, Weaver
|
|
38
34
|
|
|
39
35
|
Key Ecosystem Libraries:
|
|
36
|
+
|
|
40
37
|
- HTTP: Http4s 0.24, Tapir 1.10
|
|
41
38
|
- JSON: Circe 0.15, ZIO JSON 0.6
|
|
42
39
|
- Database: Doobie 1.0, Slick 3.5, Quill 4.8
|
|
43
40
|
- Streaming: FS2 3.10, ZIO Streams 2.1
|
|
41
|
+
- Testing: ScalaTest, Specs2, MUnit, Weaver
|
|
44
42
|
|
|
45
43
|
---
|
|
46
44
|
|
|
47
|
-
##
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
Given and Using (Context Parameters):
|
|
65
|
-
```scala
|
|
66
|
-
trait JsonEncoder[A]:
|
|
67
|
-
def encode(value: A): String
|
|
68
|
-
|
|
69
|
-
given JsonEncoder[String] with
|
|
70
|
-
def encode(value: String): String = s"\"$value\""
|
|
71
|
-
|
|
72
|
-
given JsonEncoder[Int] with
|
|
73
|
-
def encode(value: Int): String = value.toString
|
|
74
|
-
|
|
75
|
-
given [A](using encoder: JsonEncoder[A]): JsonEncoder[List[A]] with
|
|
76
|
-
def encode(value: List[A]): String =
|
|
77
|
-
value.map(encoder.encode).mkString("[", ",", "]")
|
|
78
|
-
|
|
79
|
-
def toJson[A](value: A)(using encoder: JsonEncoder[A]): String =
|
|
80
|
-
encoder.encode(value)
|
|
81
|
-
|
|
82
|
-
// Usage
|
|
83
|
-
val json = toJson(List(1, 2, 3)) // "[1,2,3]"
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
Enum Types and ADTs:
|
|
87
|
-
```scala
|
|
88
|
-
enum Color(val hex: String):
|
|
89
|
-
case Red extends Color("#FF0000")
|
|
90
|
-
case Green extends Color("#00FF00")
|
|
91
|
-
case Blue extends Color("#0000FF")
|
|
92
|
-
case Custom(override val hex: String) extends Color(hex)
|
|
93
|
-
|
|
94
|
-
enum Result[+E, +A]:
|
|
95
|
-
case Success(value: A)
|
|
96
|
-
case Failure(error: E)
|
|
97
|
-
|
|
98
|
-
def map[B](f: A => B): Result[E, B] = this match
|
|
99
|
-
case Success(a) => Success(f(a))
|
|
100
|
-
case Failure(e) => Failure(e)
|
|
101
|
-
|
|
102
|
-
def flatMap[E2 >: E, B](f: A => Result[E2, B]): Result[E2, B] = this match
|
|
103
|
-
case Success(a) => f(a)
|
|
104
|
-
case Failure(e) => Failure(e)
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
Opaque Types:
|
|
108
|
-
```scala
|
|
109
|
-
object UserId:
|
|
110
|
-
opaque type UserId = Long
|
|
111
|
-
def apply(id: Long): UserId = id
|
|
112
|
-
def fromString(s: String): Option[UserId] = s.toLongOption
|
|
113
|
-
extension (id: UserId)
|
|
114
|
-
def value: Long = id
|
|
115
|
-
def asString: String = id.toString
|
|
116
|
-
|
|
117
|
-
export UserId.UserId
|
|
118
|
-
|
|
119
|
-
object Email:
|
|
120
|
-
opaque type Email = String
|
|
121
|
-
def apply(email: String): Either[String, Email] =
|
|
122
|
-
if email.contains("@") && email.contains(".") then Right(email)
|
|
123
|
-
else Left(s"Invalid email: $email")
|
|
124
|
-
extension (email: Email)
|
|
125
|
-
def value: String = email
|
|
126
|
-
def domain: String = email.split("@").last
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
Union and Intersection Types:
|
|
130
|
-
```scala
|
|
131
|
-
// Union types
|
|
132
|
-
type StringOrInt = String | Int
|
|
133
|
-
|
|
134
|
-
def describe(value: StringOrInt): String = value match
|
|
135
|
-
case s: String => s"String: $s"
|
|
136
|
-
case i: Int => s"Int: $i"
|
|
137
|
-
|
|
138
|
-
// Intersection types
|
|
139
|
-
trait HasName:
|
|
140
|
-
def name: String
|
|
141
|
-
|
|
142
|
-
trait HasAge:
|
|
143
|
-
def age: Int
|
|
144
|
-
|
|
145
|
-
type Person = HasName & HasAge
|
|
146
|
-
|
|
147
|
-
def greet(person: Person): String =
|
|
148
|
-
s"Hello ${person.name}, age ${person.age}"
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
### Cats Effect 3.5
|
|
152
|
-
|
|
153
|
-
Basic IO Operations:
|
|
154
|
-
```scala
|
|
155
|
-
import cats.effect.*
|
|
156
|
-
import cats.syntax.all.*
|
|
157
|
-
|
|
158
|
-
def program: IO[Unit] =
|
|
159
|
-
for
|
|
160
|
-
_ <- IO.println("Enter your name:")
|
|
161
|
-
name <- IO.readLine
|
|
162
|
-
_ <- IO.println(s"Hello, $name!")
|
|
163
|
-
yield ()
|
|
164
|
-
|
|
165
|
-
// Resource management
|
|
166
|
-
def withFile[A](path: String)(use: BufferedReader => IO[A]): IO[A] =
|
|
167
|
-
Resource
|
|
168
|
-
.make(IO(new BufferedReader(new FileReader(path))))(r => IO(r.close()))
|
|
169
|
-
.use(use)
|
|
170
|
-
|
|
171
|
-
// Error handling
|
|
172
|
-
def fetchUser(id: Long): IO[User] =
|
|
173
|
-
IO.fromOption(repository.findById(id))(UserNotFound(id))
|
|
174
|
-
.handleErrorWith {
|
|
175
|
-
case _: UserNotFound => IO.raiseError(new Exception(s"User $id not found"))
|
|
176
|
-
}
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
Concurrent Programming:
|
|
180
|
-
```scala
|
|
181
|
-
import cats.effect.std.*
|
|
182
|
-
|
|
183
|
-
// Parallel execution
|
|
184
|
-
def fetchUserData(userId: Long): IO[UserData] =
|
|
185
|
-
(fetchUser(userId), fetchOrders(userId), fetchPreferences(userId))
|
|
186
|
-
.parMapN(UserData.apply)
|
|
187
|
-
|
|
188
|
-
// Fibers for background processing
|
|
189
|
-
def processInBackground(task: IO[Unit]): IO[Unit] =
|
|
190
|
-
task.start.flatMap(fiber =>
|
|
191
|
-
IO.println("Task started") *> fiber.join.void
|
|
192
|
-
)
|
|
193
|
-
|
|
194
|
-
// Semaphore for rate limiting
|
|
195
|
-
def rateLimitedRequests[A](tasks: List[IO[A]], max: Int): IO[List[A]] =
|
|
196
|
-
Semaphore[IO](max).flatMap { sem =>
|
|
197
|
-
tasks.parTraverse(task => sem.permit.use(_ => task))
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
// Ref for shared state
|
|
201
|
-
def counter: IO[Ref[IO, Int]] = Ref.of[IO, Int](0)
|
|
202
|
-
def increment(ref: Ref[IO, Int]): IO[Int] = ref.updateAndGet(_ + 1)
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
Streaming with FS2:
|
|
206
|
-
```scala
|
|
207
|
-
import fs2.*
|
|
208
|
-
import fs2.io.file.*
|
|
209
|
-
|
|
210
|
-
def processLargeFile(path: Path): Stream[IO, String] =
|
|
211
|
-
Files[IO].readUtf8Lines(path)
|
|
212
|
-
.filter(_.nonEmpty)
|
|
213
|
-
.map(_.toLowerCase)
|
|
214
|
-
.evalTap(line => IO.println(s"Processing: $line"))
|
|
215
|
-
|
|
216
|
-
def writeResults(path: Path, lines: Stream[IO, String]): IO[Unit] =
|
|
217
|
-
lines.intersperse("\n")
|
|
218
|
-
.through(text.utf8.encode)
|
|
219
|
-
.through(Files[IO].writeAll(path))
|
|
220
|
-
.compile.drain
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
### ZIO 2.1
|
|
224
|
-
|
|
225
|
-
Basic ZIO Operations:
|
|
226
|
-
```scala
|
|
227
|
-
import zio.*
|
|
228
|
-
|
|
229
|
-
val program: ZIO[Any, Nothing, Unit] =
|
|
230
|
-
for
|
|
231
|
-
_ <- Console.printLine("Enter your name:")
|
|
232
|
-
name <- Console.readLine
|
|
233
|
-
_ <- Console.printLine(s"Hello, $name!")
|
|
234
|
-
yield ()
|
|
235
|
-
|
|
236
|
-
def fetchUser(id: Long): ZIO[UserRepository, UserError, User] =
|
|
237
|
-
for
|
|
238
|
-
repo <- ZIO.service[UserRepository]
|
|
239
|
-
user <- ZIO.fromOption(repo.findById(id)).orElseFail(UserNotFound(id))
|
|
240
|
-
yield user
|
|
241
|
-
|
|
242
|
-
// Resource management
|
|
243
|
-
def withFile[A](path: String): ZIO[Scope, IOException, BufferedReader] =
|
|
244
|
-
ZIO.acquireRelease(
|
|
245
|
-
ZIO.attempt(new BufferedReader(new FileReader(path))).refineToOrDie[IOException]
|
|
246
|
-
)(reader => ZIO.succeed(reader.close()))
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
ZIO Layers (Dependency Injection):
|
|
250
|
-
```scala
|
|
251
|
-
trait UserRepository:
|
|
252
|
-
def findById(id: Long): Task[Option[User]]
|
|
253
|
-
def save(user: User): Task[User]
|
|
254
|
-
|
|
255
|
-
trait EmailService:
|
|
256
|
-
def sendEmail(to: String, subject: String, body: String): Task[Unit]
|
|
257
|
-
|
|
258
|
-
case class UserRepositoryLive(db: Database) extends UserRepository:
|
|
259
|
-
def findById(id: Long): Task[Option[User]] =
|
|
260
|
-
ZIO.attempt(db.query(s"SELECT * FROM users WHERE id = $id")).map(_.headOption)
|
|
261
|
-
def save(user: User): Task[User] =
|
|
262
|
-
ZIO.attempt(db.insert("users", user)).as(user)
|
|
263
|
-
|
|
264
|
-
object UserRepositoryLive:
|
|
265
|
-
val layer: ZLayer[Database, Nothing, UserRepository] =
|
|
266
|
-
ZLayer.fromFunction(UserRepositoryLive.apply)
|
|
267
|
-
|
|
268
|
-
// Composing layers
|
|
269
|
-
val appLayer = Database.layer >>> UserRepositoryLive.layer ++ EmailServiceLive.layer
|
|
270
|
-
|
|
271
|
-
object Main extends ZIOAppDefault:
|
|
272
|
-
def run = program.provide(appLayer)
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
ZIO Streaming:
|
|
276
|
-
```scala
|
|
277
|
-
import zio.stream.*
|
|
278
|
-
|
|
279
|
-
def processEvents: ZStream[Any, Throwable, ProcessedEvent] =
|
|
280
|
-
ZStream.fromQueue(eventQueue)
|
|
281
|
-
.filter(_.isValid)
|
|
282
|
-
.mapZIO(enrichEvent)
|
|
283
|
-
.grouped(100)
|
|
284
|
-
.mapZIO(batchProcess)
|
|
285
|
-
.flattenIterables
|
|
286
|
-
```
|
|
287
|
-
|
|
288
|
-
### Akka Typed Actors
|
|
289
|
-
|
|
290
|
-
Actor Definition:
|
|
291
|
-
```scala
|
|
292
|
-
import akka.actor.typed.*
|
|
293
|
-
import akka.actor.typed.scaladsl.*
|
|
294
|
-
|
|
295
|
-
object UserActor:
|
|
296
|
-
sealed trait Command
|
|
297
|
-
case class GetUser(id: Long, replyTo: ActorRef[Option[User]]) extends Command
|
|
298
|
-
case class CreateUser(request: CreateUserRequest, replyTo: ActorRef[User]) extends Command
|
|
299
|
-
case class UpdateUser(id: Long, name: String, replyTo: ActorRef[Option[User]]) extends Command
|
|
300
|
-
|
|
301
|
-
def apply(repository: UserRepository): Behavior[Command] =
|
|
302
|
-
Behaviors.receiveMessage {
|
|
303
|
-
case GetUser(id, replyTo) =>
|
|
304
|
-
replyTo ! repository.findById(id)
|
|
305
|
-
Behaviors.same
|
|
306
|
-
case CreateUser(request, replyTo) =>
|
|
307
|
-
replyTo ! repository.save(User.from(request))
|
|
308
|
-
Behaviors.same
|
|
309
|
-
case UpdateUser(id, name, replyTo) =>
|
|
310
|
-
val updated = repository.findById(id).map(u => repository.save(u.copy(name = name)))
|
|
311
|
-
replyTo ! updated
|
|
312
|
-
Behaviors.same
|
|
313
|
-
}
|
|
314
|
-
```
|
|
315
|
-
|
|
316
|
-
Akka Streams:
|
|
317
|
-
```scala
|
|
318
|
-
import akka.stream.*
|
|
319
|
-
import akka.stream.scaladsl.*
|
|
320
|
-
|
|
321
|
-
val source: Source[Int, NotUsed] = Source(1 to 1000)
|
|
322
|
-
val flow: Flow[Int, String, NotUsed] =
|
|
323
|
-
Flow[Int].filter(_ % 2 == 0).map(_ * 2).map(_.toString)
|
|
324
|
-
val sink: Sink[String, Future[Done]] = Sink.foreach(println)
|
|
325
|
-
|
|
326
|
-
val graph = source.via(flow).toMat(sink)(Keep.right)
|
|
327
|
-
|
|
328
|
-
// Backpressure handling
|
|
329
|
-
val throttledSource = source
|
|
330
|
-
.throttle(100, 1.second)
|
|
331
|
-
.buffer(1000, OverflowStrategy.backpressure)
|
|
332
|
-
```
|
|
333
|
-
|
|
334
|
-
### Apache Spark 3.5
|
|
335
|
-
|
|
336
|
-
DataFrame Operations:
|
|
337
|
-
```scala
|
|
338
|
-
import org.apache.spark.sql.{DataFrame, SparkSession}
|
|
339
|
-
import org.apache.spark.sql.functions.*
|
|
340
|
-
|
|
341
|
-
val spark = SparkSession.builder()
|
|
342
|
-
.appName("Data Analysis")
|
|
343
|
-
.config("spark.sql.adaptive.enabled", "true")
|
|
344
|
-
.getOrCreate()
|
|
345
|
-
|
|
346
|
-
import spark.implicits.*
|
|
347
|
-
|
|
348
|
-
val userMetrics = orders
|
|
349
|
-
.groupBy("user_id")
|
|
350
|
-
.agg(
|
|
351
|
-
sum("amount").as("total_spent"),
|
|
352
|
-
count("*").as("order_count"),
|
|
353
|
-
avg("amount").as("avg_order_value")
|
|
354
|
-
)
|
|
355
|
-
.join(users, Seq("user_id"), "left")
|
|
356
|
-
.withColumn("customer_tier",
|
|
357
|
-
when(col("total_spent") > 10000, "platinum")
|
|
358
|
-
.when(col("total_spent") > 1000, "gold")
|
|
359
|
-
.otherwise("standard")
|
|
360
|
-
)
|
|
361
|
-
```
|
|
362
|
-
|
|
363
|
-
Structured Streaming:
|
|
364
|
-
```scala
|
|
365
|
-
val streamingOrders = spark.readStream
|
|
366
|
-
.format("kafka")
|
|
367
|
-
.option("kafka.bootstrap.servers", "localhost:9092")
|
|
368
|
-
.option("subscribe", "orders")
|
|
369
|
-
.load()
|
|
370
|
-
.selectExpr("CAST(value AS STRING)")
|
|
371
|
-
.as[String]
|
|
372
|
-
.map(parseOrder)
|
|
373
|
-
|
|
374
|
-
val aggregated = streamingOrders
|
|
375
|
-
.withWatermark("timestamp", "10 minutes")
|
|
376
|
-
.groupBy(window($"timestamp", "1 hour"), $"product_category")
|
|
377
|
-
.agg(sum("amount").as("hourly_sales"))
|
|
378
|
-
|
|
379
|
-
aggregated.writeStream
|
|
380
|
-
.format("delta")
|
|
381
|
-
.outputMode("append")
|
|
382
|
-
.option("checkpointLocation", "/checkpoints/sales")
|
|
383
|
-
.start("/output/hourly-sales")
|
|
384
|
-
```
|
|
45
|
+
## Module Index
|
|
46
|
+
|
|
47
|
+
This skill uses progressive disclosure with specialized modules:
|
|
48
|
+
|
|
49
|
+
### Core Language
|
|
50
|
+
|
|
51
|
+
- [functional-programming.md](modules/functional-programming.md) - Scala 3.4 features: Given/Using, Type Classes, Enums, Opaque Types, Extension Methods
|
|
52
|
+
|
|
53
|
+
### Effect Systems
|
|
54
|
+
|
|
55
|
+
- [cats-effect.md](modules/cats-effect.md) - Cats Effect 3.5: IO monad, Resources, Fibers, FS2 Streaming
|
|
56
|
+
- [zio-patterns.md](modules/zio-patterns.md) - ZIO 2.1: Effects, Layers, ZIO Streams, Error handling
|
|
57
|
+
|
|
58
|
+
### Frameworks
|
|
59
|
+
|
|
60
|
+
- [akka-actors.md](modules/akka-actors.md) - Akka Typed Actors 2.9: Actors, Streams, Clustering patterns
|
|
61
|
+
- [spark-data.md](modules/spark-data.md) - Apache Spark 3.5: DataFrame API, SQL, Structured Streaming
|
|
385
62
|
|
|
386
63
|
---
|
|
387
64
|
|
|
388
|
-
##
|
|
389
|
-
|
|
390
|
-
###
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
"org.typelevel" %% "cats-effect" % "3.5.4",
|
|
402
|
-
"org.typelevel" %% "cats-core" % "2.10.0",
|
|
403
|
-
"co.fs2" %% "fs2-core" % "3.10.0",
|
|
404
|
-
"dev.zio" %% "zio" % "2.1.0",
|
|
405
|
-
"com.typesafe.akka" %% "akka-actor-typed" % "2.9.0",
|
|
406
|
-
"org.http4s" %% "http4s-ember-server" % "0.24.0",
|
|
407
|
-
"io.circe" %% "circe-generic" % "0.15.0",
|
|
408
|
-
"org.tpolecat" %% "doobie-core" % "1.0.0-RC4",
|
|
409
|
-
"org.scalatest" %% "scalatest" % "3.2.18" % Test,
|
|
410
|
-
"org.typelevel" %% "munit-cats-effect" % "2.0.0" % Test
|
|
411
|
-
),
|
|
412
|
-
scalacOptions ++= Seq("-deprecation", "-feature", "-Xfatal-warnings")
|
|
413
|
-
)
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
### Testing Quick Reference
|
|
417
|
-
|
|
418
|
-
ScalaTest:
|
|
419
|
-
```scala
|
|
420
|
-
class UserServiceSpec extends AnyFlatSpec with Matchers:
|
|
421
|
-
"UserService" should "create user successfully" in {
|
|
422
|
-
val result = service.createUser(CreateUserRequest("John", "john@example.com"))
|
|
423
|
-
result.name shouldBe "John"
|
|
424
|
-
}
|
|
425
|
-
```
|
|
426
|
-
|
|
427
|
-
MUnit with Cats Effect:
|
|
428
|
-
```scala
|
|
429
|
-
class UserServiceSuite extends CatsEffectSuite:
|
|
430
|
-
test("should fetch user") {
|
|
431
|
-
UserService.findById(1L).map { result =>
|
|
432
|
-
assertEquals(result.name, "John")
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
```
|
|
436
|
-
|
|
437
|
-
ZIO Test:
|
|
438
|
-
```scala
|
|
439
|
-
object UserServiceSpec extends ZIOSpecDefault:
|
|
440
|
-
def spec = suite("UserService")(
|
|
441
|
-
test("should find user") {
|
|
442
|
-
for result <- UserService.findById(1L)
|
|
443
|
-
yield assertTrue(result.name == "John")
|
|
444
|
-
}
|
|
445
|
-
)
|
|
446
|
-
```
|
|
65
|
+
## Implementation Guide
|
|
66
|
+
|
|
67
|
+
### Project Setup (SBT 1.10)
|
|
68
|
+
|
|
69
|
+
In build.sbt, set ThisBuild / scalaVersion to "3.4.2" and organization. Define lazy val root project with settings including name and libraryDependencies. Add dependencies for cats-effect, zio, akka-actor-typed, http4s-ember-server, circe-generic, and scalatest for test scope. Include scalacOptions for deprecation, feature warnings, and Xfatal-warnings.
|
|
70
|
+
|
|
71
|
+
### Quick Examples
|
|
72
|
+
|
|
73
|
+
Extension Methods: Use extension keyword with parameter in parentheses. Define methods like words splitting on whitespace and truncate checking length before taking characters and appending ellipsis.
|
|
74
|
+
|
|
75
|
+
Given and Using: Define trait with abstract method signature. Create given instance with with keyword and implement the method. Create functions with using parameter clause for implicit resolution.
|
|
76
|
+
|
|
77
|
+
Enum Types: Define enum with generic type parameters and plus variance annotations. Create case entries with parameters. Define methods on enum using match expression to handle each case, returning appropriate results.
|
|
447
78
|
|
|
448
79
|
---
|
|
449
80
|
|
|
450
81
|
## Context7 Integration
|
|
451
82
|
|
|
452
83
|
Library mappings for latest documentation:
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
-
|
|
457
|
-
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
84
|
+
|
|
85
|
+
Core Scala:
|
|
86
|
+
|
|
87
|
+
- /scala/scala3 - Scala 3.4 language reference
|
|
88
|
+
- /scala/scala-library - Standard library
|
|
89
|
+
|
|
90
|
+
Effect Systems:
|
|
91
|
+
|
|
92
|
+
- /typelevel/cats-effect - Cats Effect 3.5 documentation
|
|
93
|
+
- /typelevel/cats - Cats 2.10 functional abstractions
|
|
94
|
+
- /zio/zio - ZIO 2.1 documentation
|
|
95
|
+
- /zio/zio-streams - ZIO Streams 2.1
|
|
96
|
+
|
|
97
|
+
Akka Ecosystem:
|
|
98
|
+
|
|
99
|
+
- /akka/akka - Akka 2.9 typed actors and streams
|
|
100
|
+
- /akka/akka-http - Akka HTTP REST APIs
|
|
101
|
+
- /akka/alpakka - Akka connectors
|
|
102
|
+
|
|
103
|
+
HTTP and Web:
|
|
104
|
+
|
|
105
|
+
- /http4s/http4s - Functional HTTP server/client
|
|
106
|
+
- /softwaremill/tapir - API-first design
|
|
107
|
+
|
|
108
|
+
Big Data:
|
|
109
|
+
|
|
110
|
+
- /apache/spark - Spark 3.5 DataFrame and SQL
|
|
111
|
+
- /apache/flink - Flink 1.19 streaming
|
|
112
|
+
- /apache/kafka - Kafka clients 3.7
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Testing Quick Reference
|
|
117
|
+
|
|
118
|
+
ScalaTest: Extend AnyFlatSpec with Matchers. Use string description with should in for behavior. Make assertions with shouldBe for equality checks.
|
|
119
|
+
|
|
120
|
+
MUnit with Cats Effect: Extend CatsEffectSuite. Define test with string name. Return IO containing assertEquals assertions.
|
|
121
|
+
|
|
122
|
+
ZIO Test: Extend ZIOSpecDefault. Define spec as suite with test entries. Use for-comprehension to run effects and yield assertTrue assertions.
|
|
461
123
|
|
|
462
124
|
---
|
|
463
125
|
|
|
464
126
|
## Troubleshooting
|
|
465
127
|
|
|
466
128
|
Common Issues:
|
|
467
|
-
|
|
129
|
+
|
|
130
|
+
- Implicit resolution: Use scalac -explain for detailed error messages
|
|
468
131
|
- Type inference: Add explicit type annotations when inference fails
|
|
469
|
-
- SBT slow compilation: Enable
|
|
132
|
+
- SBT slow compilation: Enable Global / concurrentRestrictions in build.sbt
|
|
470
133
|
|
|
471
134
|
Effect System Issues:
|
|
472
|
-
|
|
473
|
-
-
|
|
135
|
+
|
|
136
|
+
- Cats Effect: Check for missing import cats.effect._ or import cats.syntax.all._
|
|
137
|
+
- ZIO: Verify layer composition with ZIO.serviceWith and ZIO.serviceWithZIO
|
|
474
138
|
- Akka: Review actor hierarchy and supervision strategies
|
|
475
139
|
|
|
476
140
|
---
|
|
477
141
|
|
|
478
142
|
## Works Well With
|
|
479
143
|
|
|
480
|
-
-
|
|
481
|
-
-
|
|
482
|
-
-
|
|
483
|
-
-
|
|
484
|
-
- `moai-infra-kubernetes` - Scala application deployment
|
|
144
|
+
- moai-lang-java - JVM interoperability, Spring Boot integration
|
|
145
|
+
- moai-domain-backend - REST API, GraphQL, microservices patterns
|
|
146
|
+
- moai-domain-database - Doobie, Slick, database patterns
|
|
147
|
+
- moai-workflow-testing - ScalaTest, MUnit, property-based testing
|
|
485
148
|
|
|
486
149
|
---
|
|
487
150
|
|
|
488
|
-
##
|
|
151
|
+
## Additional Resources
|
|
489
152
|
|
|
490
153
|
For comprehensive reference materials:
|
|
154
|
+
|
|
491
155
|
- [reference.md](reference.md) - Complete Scala 3.4 coverage, Context7 mappings, performance
|
|
492
156
|
- [examples.md](examples.md) - Production-ready code: Http4s, Akka, Spark patterns
|
|
493
157
|
|
|
494
158
|
---
|
|
495
159
|
|
|
496
|
-
Last Updated:
|
|
497
|
-
Status: Production Ready (
|
|
160
|
+
Last Updated: 2026-01-11
|
|
161
|
+
Status: Production Ready (v2.1.0)
|