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,17 +1,30 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: moai-lang-cpp
|
|
3
|
-
description: Modern C++ (C++23/C++20) development specialist covering RAII, smart pointers, concepts, ranges, modules, and CMake. Use when developing high-performance applications, games, system software, or embedded systems.
|
|
4
|
-
version: 1.
|
|
5
|
-
category: language
|
|
2
|
+
name: "moai-lang-cpp"
|
|
3
|
+
description: "Modern C++ (C++23/C++20) development specialist covering RAII, smart pointers, concepts, ranges, modules, and CMake. Use when developing high-performance applications, games, system software, or embedded systems."
|
|
4
|
+
version: 1.1.0
|
|
5
|
+
category: "language"
|
|
6
|
+
modularized: true
|
|
7
|
+
user-invocable: false
|
|
6
8
|
tags:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
[
|
|
10
|
+
"language",
|
|
11
|
+
"cpp",
|
|
12
|
+
"c++23",
|
|
13
|
+
"c++20",
|
|
14
|
+
"cmake",
|
|
15
|
+
"raii",
|
|
16
|
+
"smart-pointers",
|
|
17
|
+
"concepts",
|
|
18
|
+
]
|
|
19
|
+
updated: 2026-01-11
|
|
20
|
+
status: "active"
|
|
21
|
+
allowed-tools:
|
|
22
|
+
- Read
|
|
23
|
+
- Grep
|
|
24
|
+
- Glob
|
|
25
|
+
- Bash
|
|
26
|
+
- mcp__context7__resolve-library-id
|
|
27
|
+
- mcp__context7__get-library-docs
|
|
15
28
|
---
|
|
16
29
|
|
|
17
30
|
## Quick Reference (30 seconds)
|
|
@@ -21,6 +34,7 @@ Modern C++ (C++23/C++20) Development Specialist - RAII, smart pointers, concepts
|
|
|
21
34
|
Auto-Triggers: `.cpp`, `.hpp`, `.h`, `CMakeLists.txt`, `vcpkg.json`, `conanfile.txt`, modern C++ discussions
|
|
22
35
|
|
|
23
36
|
Core Capabilities:
|
|
37
|
+
|
|
24
38
|
- C++23 Features: std::expected, std::print, std::generator, deducing this
|
|
25
39
|
- C++20 Features: Concepts, Ranges, Modules, Coroutines, std::format
|
|
26
40
|
- Memory Safety: RAII, Rule of 5, smart pointers (unique_ptr, shared_ptr, weak_ptr)
|
|
@@ -32,46 +46,11 @@ Core Capabilities:
|
|
|
32
46
|
|
|
33
47
|
### Quick Patterns
|
|
34
48
|
|
|
35
|
-
Smart Pointer Factory:
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
public:
|
|
41
|
-
static auto create(int value) -> std::unique_ptr<Widget> {
|
|
42
|
-
return std::make_unique<Widget>(value);
|
|
43
|
-
}
|
|
44
|
-
explicit Widget(int v) : value_(v) {}
|
|
45
|
-
private:
|
|
46
|
-
int value_;
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
auto widget = Widget::create(42);
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
Concepts Constraint:
|
|
53
|
-
```cpp
|
|
54
|
-
#include <concepts>
|
|
55
|
-
|
|
56
|
-
template<typename T>
|
|
57
|
-
concept Numeric = std::integral<T> || std::floating_point<T>;
|
|
58
|
-
|
|
59
|
-
template<Numeric T>
|
|
60
|
-
auto square(T value) -> T {
|
|
61
|
-
return value * value;
|
|
62
|
-
}
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
Ranges Pipeline:
|
|
66
|
-
```cpp
|
|
67
|
-
#include <ranges>
|
|
68
|
-
#include <vector>
|
|
69
|
-
|
|
70
|
-
auto result = std::views::iota(1, 100)
|
|
71
|
-
| std::views::filter([](int n) { return n % 2 == 0; })
|
|
72
|
-
| std::views::transform([](int n) { return n * n; })
|
|
73
|
-
| std::views::take(10);
|
|
74
|
-
```
|
|
49
|
+
Smart Pointer Factory Pattern: Create a class with a static factory method that returns std::unique_ptr. Include a header for memory, define a Widget class with a static create method taking an int value parameter. The create method uses std::make_unique to instantiate and return the Widget. The constructor should be explicit and take the value parameter, storing it in a private member variable.
|
|
50
|
+
|
|
51
|
+
Concepts Constraint Pattern: Define a concept named Numeric that combines std::integral or std::floating_point constraints. Create a template function square that requires T to satisfy the Numeric concept, taking a value parameter and returning value multiplied by itself.
|
|
52
|
+
|
|
53
|
+
Ranges Pipeline Pattern: Use std::views::iota to create a range from 1 to 100, pipe it through a filter to select even numbers, then transform by squaring each value, and finally take the first 10 results.
|
|
75
54
|
|
|
76
55
|
---
|
|
77
56
|
|
|
@@ -79,526 +58,64 @@ auto result = std::views::iota(1, 100)
|
|
|
79
58
|
|
|
80
59
|
### C++23 New Features
|
|
81
60
|
|
|
82
|
-
std::expected for Error Handling:
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
enum class ParseError { InvalidFormat, OutOfRange };
|
|
88
|
-
|
|
89
|
-
auto parse_int(std::string_view str) -> std::expected<int, ParseError> {
|
|
90
|
-
try {
|
|
91
|
-
int value = std::stoi(std::string(str));
|
|
92
|
-
return value;
|
|
93
|
-
} catch (const std::invalid_argument&) {
|
|
94
|
-
return std::unexpected(ParseError::InvalidFormat);
|
|
95
|
-
} catch (const std::out_of_range&) {
|
|
96
|
-
return std::unexpected(ParseError::OutOfRange);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// Usage
|
|
101
|
-
auto result = parse_int("42");
|
|
102
|
-
if (result) {
|
|
103
|
-
std::println("Value: {}", *result);
|
|
104
|
-
} else {
|
|
105
|
-
std::println("Error occurred");
|
|
106
|
-
}
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
std::print for Type-Safe Output:
|
|
110
|
-
```cpp
|
|
111
|
-
#include <print>
|
|
112
|
-
|
|
113
|
-
int main() {
|
|
114
|
-
std::println("Hello, {}!", "World");
|
|
115
|
-
std::print("Value: {}, Hex: {:#x}\n", 255, 255);
|
|
116
|
-
std::println("Formatted: {:.2f}", 3.14159);
|
|
117
|
-
}
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
Deducing This (Explicit Object Parameter):
|
|
121
|
-
```cpp
|
|
122
|
-
class Builder {
|
|
123
|
-
std::string data_;
|
|
124
|
-
public:
|
|
125
|
-
// Deducing this for perfect forwarding
|
|
126
|
-
template<typename Self>
|
|
127
|
-
auto append(this Self&& self, std::string_view s) -> Self&& {
|
|
128
|
-
self.data_ += s;
|
|
129
|
-
return std::forward<Self>(self);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
auto build() const -> std::string { return data_; }
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
// Enables chaining with move semantics
|
|
136
|
-
auto result = Builder{}.append("Hello").append(" World").build();
|
|
137
|
-
```
|
|
61
|
+
std::expected for Error Handling: Create an enum class ParseError with InvalidFormat and OutOfRange values. Define a parse_int function that takes std::string_view and returns std::expected containing either int or ParseError. Inside, use a try-catch block to call std::stoi. Catch std::invalid_argument and return std::unexpected with InvalidFormat, catch std::out_of_range and return std::unexpected with OutOfRange. On success, return the parsed value directly. Usage involves checking the result with if(result) and accessing the value with asterisk operator or handling the error case.
|
|
62
|
+
|
|
63
|
+
std::print for Type-Safe Output: Include the print header and use std::println for formatted output with curly brace placeholders. Supports format specifiers like colon followed by hash x for hexadecimal or colon followed by .2f for floating point precision.
|
|
64
|
+
|
|
65
|
+
Deducing This (Explicit Object Parameter): Define a Builder class with a data_ member string. Create a template method append with template parameter Self that takes this Self and and a string_view parameter. Forward self with std::forward and return Self and and. This enables chaining on both lvalue and rvalue objects.
|
|
138
66
|
|
|
139
67
|
### C++20 Features
|
|
140
68
|
|
|
141
|
-
Concepts and Constraints:
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
// Custom concept
|
|
147
|
-
template<typename T>
|
|
148
|
-
concept Hashable = requires(T a) {
|
|
149
|
-
{ std::hash<T>{}(a) } -> std::convertible_to<std::size_t>;
|
|
150
|
-
};
|
|
151
|
-
|
|
152
|
-
// Requires clause
|
|
153
|
-
template<typename Container>
|
|
154
|
-
requires std::ranges::range<Container> &&
|
|
155
|
-
std::default_initializable<std::ranges::range_value_t<Container>>
|
|
156
|
-
auto make_default_filled(std::size_t count) -> Container {
|
|
157
|
-
Container c;
|
|
158
|
-
c.resize(count);
|
|
159
|
-
return c;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
// Abbreviated function template
|
|
163
|
-
void process(std::integral auto value) {
|
|
164
|
-
// value is constrained to integral types
|
|
165
|
-
}
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
Modules (C++20):
|
|
169
|
-
```cpp
|
|
170
|
-
// math.cppm - Module interface
|
|
171
|
-
export module math;
|
|
172
|
-
|
|
173
|
-
export namespace math {
|
|
174
|
-
template<typename T>
|
|
175
|
-
concept Arithmetic = std::is_arithmetic_v<T>;
|
|
176
|
-
|
|
177
|
-
template<Arithmetic T>
|
|
178
|
-
constexpr auto add(T a, T b) -> T {
|
|
179
|
-
return a + b;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
template<Arithmetic T>
|
|
183
|
-
constexpr auto multiply(T a, T b) -> T {
|
|
184
|
-
return a * b;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
// main.cpp - Consumer
|
|
189
|
-
import math;
|
|
190
|
-
import std; // C++23 standard library module
|
|
191
|
-
|
|
192
|
-
int main() {
|
|
193
|
-
auto result = math::add(10, 20);
|
|
194
|
-
std::println("Result: {}", result);
|
|
195
|
-
}
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
Ranges Library:
|
|
199
|
-
```cpp
|
|
200
|
-
#include <ranges>
|
|
201
|
-
#include <vector>
|
|
202
|
-
#include <algorithm>
|
|
203
|
-
|
|
204
|
-
struct Person {
|
|
205
|
-
std::string name;
|
|
206
|
-
int age;
|
|
207
|
-
};
|
|
208
|
-
|
|
209
|
-
void process_people(std::vector<Person>& people) {
|
|
210
|
-
// Range adaptors
|
|
211
|
-
auto adults = people
|
|
212
|
-
| std::views::filter([](const Person& p) { return p.age >= 18; })
|
|
213
|
-
| std::views::transform([](const Person& p) { return p.name; });
|
|
214
|
-
|
|
215
|
-
for (const auto& name : adults) {
|
|
216
|
-
std::println("{}", name);
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
// Range algorithms
|
|
220
|
-
std::ranges::sort(people, {}, &Person::age);
|
|
221
|
-
|
|
222
|
-
// Projection
|
|
223
|
-
auto it = std::ranges::find(people, "Alice", &Person::name);
|
|
224
|
-
|
|
225
|
-
// Views
|
|
226
|
-
auto chunked = people | std::views::chunk(3);
|
|
227
|
-
auto sliding = people | std::views::slide(2);
|
|
228
|
-
}
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
Coroutines:
|
|
232
|
-
```cpp
|
|
233
|
-
#include <coroutine>
|
|
234
|
-
#include <optional>
|
|
235
|
-
|
|
236
|
-
template<typename T>
|
|
237
|
-
class Generator {
|
|
238
|
-
public:
|
|
239
|
-
struct promise_type {
|
|
240
|
-
T current_value;
|
|
241
|
-
|
|
242
|
-
auto get_return_object() -> Generator {
|
|
243
|
-
return Generator{Handle::from_promise(*this)};
|
|
244
|
-
}
|
|
245
|
-
auto initial_suspend() -> std::suspend_always { return {}; }
|
|
246
|
-
auto final_suspend() noexcept -> std::suspend_always { return {}; }
|
|
247
|
-
auto yield_value(T value) -> std::suspend_always {
|
|
248
|
-
current_value = std::move(value);
|
|
249
|
-
return {};
|
|
250
|
-
}
|
|
251
|
-
void return_void() {}
|
|
252
|
-
void unhandled_exception() { std::terminate(); }
|
|
253
|
-
};
|
|
254
|
-
|
|
255
|
-
using Handle = std::coroutine_handle<promise_type>;
|
|
256
|
-
|
|
257
|
-
explicit Generator(Handle h) : handle_(h) {}
|
|
258
|
-
~Generator() { if (handle_) handle_.destroy(); }
|
|
259
|
-
|
|
260
|
-
auto next() -> std::optional<T> {
|
|
261
|
-
if (!handle_ || handle_.done()) return std::nullopt;
|
|
262
|
-
handle_.resume();
|
|
263
|
-
if (handle_.done()) return std::nullopt;
|
|
264
|
-
return handle_.promise().current_value;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
private:
|
|
268
|
-
Handle handle_;
|
|
269
|
-
};
|
|
270
|
-
|
|
271
|
-
auto fibonacci() -> Generator<int> {
|
|
272
|
-
int a = 0, b = 1;
|
|
273
|
-
while (true) {
|
|
274
|
-
co_yield a;
|
|
275
|
-
auto next = a + b;
|
|
276
|
-
a = b;
|
|
277
|
-
b = next;
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
```
|
|
69
|
+
Concepts and Constraints: Define a Hashable concept using requires expression that checks if std::hash can produce a std::size_t. Create template functions with requires clauses to constrain Container types to std::ranges::range. Use abbreviated syntax with std::integral auto for simple constraints on individual parameters.
|
|
70
|
+
|
|
71
|
+
Modules: Create a module interface file with .cppm extension. Use export module followed by the module name. Define an export namespace containing template functions. In consumer files, use import statements instead of include directives. Import std for standard library access in module-aware compilers.
|
|
72
|
+
|
|
73
|
+
Ranges Library: Define structs for data types like Person with name and age fields. Use pipe operator to chain views::filter with a lambda checking conditions, then views::transform to extract fields. Iterate with range-based for loops. Use std::ranges::sort with projections for sorting by member fields.
|
|
281
74
|
|
|
282
75
|
### RAII and Resource Management
|
|
283
76
|
|
|
284
|
-
Rule of Five:
|
|
285
|
-
|
|
286
|
-
class
|
|
287
|
-
int* data_;
|
|
288
|
-
std::size_t size_;
|
|
289
|
-
|
|
290
|
-
public:
|
|
291
|
-
// Constructor
|
|
292
|
-
explicit Resource(std::size_t size)
|
|
293
|
-
: data_(new int[size]), size_(size) {}
|
|
294
|
-
|
|
295
|
-
// Destructor
|
|
296
|
-
~Resource() { delete[] data_; }
|
|
297
|
-
|
|
298
|
-
// Copy constructor
|
|
299
|
-
Resource(const Resource& other)
|
|
300
|
-
: data_(new int[other.size_]), size_(other.size_) {
|
|
301
|
-
std::copy(other.data_, other.data_ + size_, data_);
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
// Copy assignment
|
|
305
|
-
auto operator=(const Resource& other) -> Resource& {
|
|
306
|
-
if (this != &other) {
|
|
307
|
-
Resource temp(other);
|
|
308
|
-
swap(temp);
|
|
309
|
-
}
|
|
310
|
-
return *this;
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
// Move constructor
|
|
314
|
-
Resource(Resource&& other) noexcept
|
|
315
|
-
: data_(std::exchange(other.data_, nullptr))
|
|
316
|
-
, size_(std::exchange(other.size_, 0)) {}
|
|
317
|
-
|
|
318
|
-
// Move assignment
|
|
319
|
-
auto operator=(Resource&& other) noexcept -> Resource& {
|
|
320
|
-
if (this != &other) {
|
|
321
|
-
delete[] data_;
|
|
322
|
-
data_ = std::exchange(other.data_, nullptr);
|
|
323
|
-
size_ = std::exchange(other.size_, 0);
|
|
324
|
-
}
|
|
325
|
-
return *this;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
void swap(Resource& other) noexcept {
|
|
329
|
-
std::swap(data_, other.data_);
|
|
330
|
-
std::swap(size_, other.size_);
|
|
331
|
-
}
|
|
332
|
-
};
|
|
333
|
-
```
|
|
334
|
-
|
|
335
|
-
Smart Pointer Patterns:
|
|
336
|
-
```cpp
|
|
337
|
-
#include <memory>
|
|
338
|
-
|
|
339
|
-
// Factory with unique_ptr
|
|
340
|
-
class Connection {
|
|
341
|
-
public:
|
|
342
|
-
static auto create(std::string_view host) -> std::unique_ptr<Connection> {
|
|
343
|
-
return std::make_unique<Connection>(host);
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
explicit Connection(std::string_view host) : host_(host) {}
|
|
347
|
-
|
|
348
|
-
private:
|
|
349
|
-
std::string host_;
|
|
350
|
-
};
|
|
351
|
-
|
|
352
|
-
// Shared ownership with weak_ptr for breaking cycles
|
|
353
|
-
class Node : public std::enable_shared_from_this<Node> {
|
|
354
|
-
public:
|
|
355
|
-
std::vector<std::shared_ptr<Node>> children;
|
|
356
|
-
std::weak_ptr<Node> parent; // Weak to break cycle
|
|
357
|
-
|
|
358
|
-
void add_child(std::shared_ptr<Node> child) {
|
|
359
|
-
child->parent = weak_from_this();
|
|
360
|
-
children.push_back(std::move(child));
|
|
361
|
-
}
|
|
362
|
-
};
|
|
363
|
-
|
|
364
|
-
// Custom deleter
|
|
365
|
-
auto file = std::unique_ptr<FILE, decltype(&fclose)>(
|
|
366
|
-
fopen("data.txt", "r"), &fclose);
|
|
367
|
-
```
|
|
77
|
+
Rule of Five: Implement a Resource class managing a raw pointer and size. The constructor allocates with new array syntax. The destructor calls delete array. Copy constructor allocates new memory and uses std::copy. Copy assignment uses copy-and-swap idiom by creating a temp and calling swap. Move constructor uses std::exchange to take ownership and null the source. Move assignment deletes current data and uses std::exchange. The swap member swaps both pointer and size members.
|
|
78
|
+
|
|
79
|
+
Smart Pointer Patterns: For unique ownership, create static factory methods returning std::unique_ptr via std::make_unique. For shared ownership with cycles, use std::enable_shared_from_this as a base class. Store children in std::vector of shared_ptr and parent as std::weak_ptr to break reference cycles. Use weak_from_this when setting parent relationships.
|
|
368
80
|
|
|
369
81
|
### CMake Modern Patterns
|
|
370
82
|
|
|
371
|
-
CMakeLists.txt
|
|
372
|
-
```cmake
|
|
373
|
-
cmake_minimum_required(VERSION 3.28)
|
|
374
|
-
project(MyProject VERSION 1.0.0 LANGUAGES CXX)
|
|
375
|
-
|
|
376
|
-
set(CMAKE_CXX_STANDARD 23)
|
|
377
|
-
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
378
|
-
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
379
|
-
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
380
|
-
|
|
381
|
-
# Compiler warnings
|
|
382
|
-
add_compile_options(
|
|
383
|
-
$<$<CXX_COMPILER_ID:GNU,Clang>:-Wall -Wextra -Wpedantic>
|
|
384
|
-
$<$<CXX_COMPILER_ID:MSVC>:/W4>
|
|
385
|
-
)
|
|
386
|
-
|
|
387
|
-
# FetchContent for dependencies
|
|
388
|
-
include(FetchContent)
|
|
389
|
-
|
|
390
|
-
FetchContent_Declare(
|
|
391
|
-
fmt
|
|
392
|
-
GIT_REPOSITORY https://github.com/fmtlib/fmt
|
|
393
|
-
GIT_TAG 10.2.1
|
|
394
|
-
)
|
|
395
|
-
|
|
396
|
-
FetchContent_Declare(
|
|
397
|
-
googletest
|
|
398
|
-
GIT_REPOSITORY https://github.com/google/googletest
|
|
399
|
-
GIT_TAG v1.14.0
|
|
400
|
-
)
|
|
401
|
-
|
|
402
|
-
FetchContent_MakeAvailable(fmt googletest)
|
|
403
|
-
|
|
404
|
-
# Main library
|
|
405
|
-
add_library(mylib STATIC
|
|
406
|
-
src/core.cpp
|
|
407
|
-
src/utils.cpp
|
|
408
|
-
)
|
|
409
|
-
|
|
410
|
-
target_include_directories(mylib PUBLIC include)
|
|
411
|
-
target_link_libraries(mylib PUBLIC fmt::fmt)
|
|
412
|
-
|
|
413
|
-
# Executable
|
|
414
|
-
add_executable(myapp src/main.cpp)
|
|
415
|
-
target_link_libraries(myapp PRIVATE mylib)
|
|
416
|
-
|
|
417
|
-
# Tests
|
|
418
|
-
enable_testing()
|
|
419
|
-
add_executable(mylib_tests tests/core_test.cpp)
|
|
420
|
-
target_link_libraries(mylib_tests PRIVATE mylib GTest::gtest_main)
|
|
421
|
-
include(GoogleTest)
|
|
422
|
-
gtest_discover_tests(mylib_tests)
|
|
423
|
-
```
|
|
424
|
-
|
|
425
|
-
CMake Presets (CMakePresets.json):
|
|
426
|
-
```json
|
|
427
|
-
{
|
|
428
|
-
"version": 6,
|
|
429
|
-
"configurePresets": [
|
|
430
|
-
{
|
|
431
|
-
"name": "base",
|
|
432
|
-
"hidden": true,
|
|
433
|
-
"generator": "Ninja",
|
|
434
|
-
"binaryDir": "${sourceDir}/build/${presetName}",
|
|
435
|
-
"cacheVariables": {
|
|
436
|
-
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
|
|
437
|
-
}
|
|
438
|
-
},
|
|
439
|
-
{
|
|
440
|
-
"name": "debug",
|
|
441
|
-
"inherits": "base",
|
|
442
|
-
"cacheVariables": {
|
|
443
|
-
"CMAKE_BUILD_TYPE": "Debug"
|
|
444
|
-
}
|
|
445
|
-
},
|
|
446
|
-
{
|
|
447
|
-
"name": "release",
|
|
448
|
-
"inherits": "base",
|
|
449
|
-
"cacheVariables": {
|
|
450
|
-
"CMAKE_BUILD_TYPE": "Release"
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
],
|
|
454
|
-
"buildPresets": [
|
|
455
|
-
{"name": "debug", "configurePreset": "debug"},
|
|
456
|
-
{"name": "release", "configurePreset": "release"}
|
|
457
|
-
],
|
|
458
|
-
"testPresets": [
|
|
459
|
-
{"name": "debug", "configurePreset": "debug", "output": {"outputOnFailure": true}}
|
|
460
|
-
]
|
|
461
|
-
}
|
|
462
|
-
```
|
|
83
|
+
CMakeLists.txt Structure for C++23: Begin with cmake_minimum_required VERSION 3.28 and project declaration. Set CMAKE_CXX_STANDARD to 23 with STANDARD_REQUIRED ON. Enable CMAKE_EXPORT_COMPILE_COMMANDS. Use generator expressions for compiler-specific warning flags, checking CXX_COMPILER_ID for GNU, Clang, or MSVC. Use FetchContent to declare dependencies with GIT_REPOSITORY and GIT_TAG parameters. Call FetchContent_MakeAvailable to download and configure. Create libraries with add_library, set include directories with target_include_directories, and link with target_link_libraries. For testing, enable_testing, add test executables, link GTest::gtest_main, and use gtest_discover_tests.
|
|
463
84
|
|
|
464
85
|
### Concurrency
|
|
465
86
|
|
|
466
|
-
std::jthread and Stop Tokens:
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
#include <stop_token>
|
|
470
|
-
|
|
471
|
-
void worker(std::stop_token stoken) {
|
|
472
|
-
while (!stoken.stop_requested()) {
|
|
473
|
-
// Do work
|
|
474
|
-
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
|
475
|
-
}
|
|
476
|
-
// Cleanup
|
|
477
|
-
}
|
|
478
|
-
|
|
479
|
-
int main() {
|
|
480
|
-
std::jthread worker_thread(worker);
|
|
481
|
-
|
|
482
|
-
std::this_thread::sleep_for(std::chrono::seconds(1));
|
|
483
|
-
worker_thread.request_stop(); // Signal stop
|
|
484
|
-
// jthread automatically joins in destructor
|
|
485
|
-
}
|
|
486
|
-
```
|
|
487
|
-
|
|
488
|
-
Synchronization Primitives:
|
|
489
|
-
```cpp
|
|
490
|
-
#include <latch>
|
|
491
|
-
#include <barrier>
|
|
492
|
-
#include <semaphore>
|
|
493
|
-
|
|
494
|
-
// Latch for one-time synchronization
|
|
495
|
-
void parallel_init(std::latch& ready, int id) {
|
|
496
|
-
// Initialize component
|
|
497
|
-
ready.count_down(); // Signal completion
|
|
498
|
-
}
|
|
499
|
-
|
|
500
|
-
// Barrier for cyclic synchronization
|
|
501
|
-
void parallel_compute(std::barrier<>& sync, int id) {
|
|
502
|
-
for (int i = 0; i < 10; ++i) {
|
|
503
|
-
// Compute phase
|
|
504
|
-
sync.arrive_and_wait(); // Sync all threads
|
|
505
|
-
}
|
|
506
|
-
}
|
|
507
|
-
|
|
508
|
-
// Counting semaphore for resource limiting
|
|
509
|
-
std::counting_semaphore<4> pool(4); // Max 4 concurrent
|
|
510
|
-
|
|
511
|
-
void limited_resource() {
|
|
512
|
-
pool.acquire();
|
|
513
|
-
// Use limited resource
|
|
514
|
-
pool.release();
|
|
515
|
-
}
|
|
516
|
-
```
|
|
87
|
+
std::jthread and Stop Tokens: Define worker functions taking std::stop_token parameter. Loop while stop_requested returns false, performing work and sleeping. Create std::jthread objects passing the worker function. Call request_stop to signal termination. The thread destructor automatically joins.
|
|
88
|
+
|
|
89
|
+
Synchronization Primitives: Use std::latch for one-time synchronization by calling count_down. Use std::barrier for repeated synchronization with arrive_and_wait. Use std::counting_semaphore for resource pools with acquire and release calls.
|
|
517
90
|
|
|
518
91
|
---
|
|
519
92
|
|
|
520
|
-
## Advanced
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
}
|
|
535
|
-
```
|
|
536
|
-
|
|
537
|
-
SFINAE and if constexpr:
|
|
538
|
-
```cpp
|
|
539
|
-
template<typename T>
|
|
540
|
-
auto to_string(const T& value) -> std::string {
|
|
541
|
-
if constexpr (std::is_arithmetic_v<T>) {
|
|
542
|
-
return std::to_string(value);
|
|
543
|
-
} else if constexpr (requires { value.to_string(); }) {
|
|
544
|
-
return value.to_string();
|
|
545
|
-
} else {
|
|
546
|
-
return "unknown";
|
|
547
|
-
}
|
|
548
|
-
}
|
|
549
|
-
```
|
|
550
|
-
|
|
551
|
-
### Testing with Google Test
|
|
552
|
-
|
|
553
|
-
```cpp
|
|
554
|
-
#include <gtest/gtest.h>
|
|
555
|
-
|
|
556
|
-
class CalculatorTest : public ::testing::Test {
|
|
557
|
-
protected:
|
|
558
|
-
Calculator calc;
|
|
559
|
-
|
|
560
|
-
void SetUp() override {
|
|
561
|
-
calc = Calculator{};
|
|
562
|
-
}
|
|
563
|
-
};
|
|
564
|
-
|
|
565
|
-
TEST_F(CalculatorTest, Addition) {
|
|
566
|
-
EXPECT_EQ(calc.add(2, 3), 5);
|
|
567
|
-
}
|
|
568
|
-
|
|
569
|
-
TEST_F(CalculatorTest, DivisionByZero) {
|
|
570
|
-
EXPECT_THROW(calc.divide(1, 0), std::invalid_argument);
|
|
571
|
-
}
|
|
572
|
-
|
|
573
|
-
// Parameterized test
|
|
574
|
-
class AdditionTest : public ::testing::TestWithParam<std::tuple<int, int, int>> {};
|
|
575
|
-
|
|
576
|
-
TEST_P(AdditionTest, Works) {
|
|
577
|
-
auto [a, b, expected] = GetParam();
|
|
578
|
-
EXPECT_EQ(Calculator{}.add(a, b), expected);
|
|
579
|
-
}
|
|
580
|
-
|
|
581
|
-
INSTANTIATE_TEST_SUITE_P(Basics, AdditionTest,
|
|
582
|
-
::testing::Values(
|
|
583
|
-
std::make_tuple(1, 1, 2),
|
|
584
|
-
std::make_tuple(0, 0, 0),
|
|
585
|
-
std::make_tuple(-1, 1, 0)
|
|
586
|
-
));
|
|
587
|
-
```
|
|
93
|
+
## Advanced Implementation (10+ minutes)
|
|
94
|
+
|
|
95
|
+
For comprehensive coverage including:
|
|
96
|
+
|
|
97
|
+
- Template metaprogramming patterns
|
|
98
|
+
- Advanced concurrency (thread pools, lock-free data structures)
|
|
99
|
+
- Memory management and custom allocators
|
|
100
|
+
- Performance optimization (SIMD, cache-friendly patterns)
|
|
101
|
+
- Production patterns (dependency injection, factories)
|
|
102
|
+
- Extended testing with Google Test and Catch2
|
|
103
|
+
|
|
104
|
+
See:
|
|
105
|
+
|
|
106
|
+
- [Advanced Patterns](modules/advanced-patterns.md) - Complete advanced patterns guide
|
|
588
107
|
|
|
589
108
|
---
|
|
590
109
|
|
|
591
110
|
## Context7 Library Mappings
|
|
592
111
|
|
|
593
|
-
|
|
594
|
-
/
|
|
595
|
-
|
|
596
|
-
/
|
|
597
|
-
/
|
|
598
|
-
/
|
|
599
|
-
/
|
|
600
|
-
/gabime/spdlog - Fast logging library
|
|
601
|
-
```
|
|
112
|
+
- /microsoft/vcpkg - Package manager
|
|
113
|
+
- /conan-io/conan - Conan package manager
|
|
114
|
+
- /google/googletest - Google Test framework
|
|
115
|
+
- /catchorg/Catch2 - Catch2 testing framework
|
|
116
|
+
- /fmtlib/fmt - fmt formatting library
|
|
117
|
+
- /nlohmann/json - JSON for Modern C++
|
|
118
|
+
- /gabime/spdlog - Fast logging library
|
|
602
119
|
|
|
603
120
|
---
|
|
604
121
|
|
|
@@ -606,44 +123,21 @@ INSTANTIATE_TEST_SUITE_P(Basics, AdditionTest,
|
|
|
606
123
|
|
|
607
124
|
- `moai-lang-rust` - Systems programming comparison and interop
|
|
608
125
|
- `moai-domain-backend` - Backend service architecture
|
|
609
|
-
- `moai-
|
|
126
|
+
- `moai-workflow-testing` - TDD and testing strategies
|
|
610
127
|
- `moai-essentials-debug` - Debugging and profiling
|
|
611
|
-
- `moai-foundation-
|
|
128
|
+
- `moai-foundation-quality` - TRUST 5 quality principles
|
|
612
129
|
|
|
613
130
|
---
|
|
614
131
|
|
|
615
132
|
## Troubleshooting
|
|
616
133
|
|
|
617
|
-
Version Check:
|
|
618
|
-
```bash
|
|
619
|
-
g++ --version # GCC 13+ for C++23
|
|
620
|
-
clang++ --version # Clang 17+ for C++23
|
|
621
|
-
cmake --version # CMake 3.28+
|
|
622
|
-
```
|
|
623
|
-
|
|
624
|
-
Common Compilation Flags:
|
|
625
|
-
```bash
|
|
626
|
-
# C++23 with full warnings
|
|
627
|
-
g++ -std=c++23 -Wall -Wextra -Wpedantic -O2 main.cpp -o main
|
|
628
|
-
|
|
629
|
-
# With sanitizers
|
|
630
|
-
g++ -std=c++23 -fsanitize=address,undefined -g main.cpp -o main
|
|
631
|
-
```
|
|
632
|
-
|
|
633
|
-
vcpkg Integration:
|
|
634
|
-
```bash
|
|
635
|
-
# Install vcpkg
|
|
636
|
-
git clone https://github.com/microsoft/vcpkg
|
|
637
|
-
./vcpkg/bootstrap-vcpkg.sh
|
|
134
|
+
Version Check: Run g++ --version to verify GCC 13+ for C++23 support, clang++ --version for Clang 17+, and cmake --version for CMake 3.28+.
|
|
638
135
|
|
|
639
|
-
|
|
640
|
-
./vcpkg/vcpkg install fmt nlohmann-json gtest
|
|
136
|
+
Common Compilation Flags: Use -std=c++23 with -Wall -Wextra -Wpedantic -O2 for standard builds. Add -fsanitize=address,undefined -g for debugging builds.
|
|
641
137
|
|
|
642
|
-
|
|
643
|
-
cmake -B build -DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake
|
|
644
|
-
```
|
|
138
|
+
vcpkg Integration: Clone the vcpkg repository from GitHub, run bootstrap-vcpkg.sh, then install packages like fmt, nlohmann-json, and gtest using vcpkg install. Configure CMake with -DCMAKE_TOOLCHAIN_FILE pointing to vcpkg's buildsystems/vcpkg.cmake.
|
|
645
139
|
|
|
646
140
|
---
|
|
647
141
|
|
|
648
|
-
Last Updated:
|
|
649
|
-
Status: Active (v1.
|
|
142
|
+
Last Updated: 2026-01-11
|
|
143
|
+
Status: Active (v1.1.0)
|