moai-adk 0.35.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of moai-adk might be problematic. Click here for more details.
- moai_adk/__init__.py +10 -0
- moai_adk/__main__.py +199 -0
- moai_adk/cli/__init__.py +6 -0
- moai_adk/cli/commands/__init__.py +17 -0
- moai_adk/cli/commands/analyze.py +116 -0
- moai_adk/cli/commands/doctor.py +272 -0
- moai_adk/cli/commands/init.py +372 -0
- moai_adk/cli/commands/language.py +248 -0
- moai_adk/cli/commands/status.py +104 -0
- moai_adk/cli/commands/update.py +2686 -0
- moai_adk/cli/main.py +13 -0
- moai_adk/cli/prompts/__init__.py +5 -0
- moai_adk/cli/prompts/init_prompts.py +219 -0
- moai_adk/cli/spec_status.py +263 -0
- moai_adk/cli/ui/__init__.py +44 -0
- moai_adk/cli/ui/progress.py +422 -0
- moai_adk/cli/ui/prompts.py +389 -0
- moai_adk/cli/ui/theme.py +129 -0
- moai_adk/cli/worktree/__init__.py +27 -0
- moai_adk/cli/worktree/__main__.py +31 -0
- moai_adk/cli/worktree/cli.py +683 -0
- moai_adk/cli/worktree/exceptions.py +89 -0
- moai_adk/cli/worktree/manager.py +493 -0
- moai_adk/cli/worktree/models.py +65 -0
- moai_adk/cli/worktree/registry.py +422 -0
- moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
- moai_adk/core/__init__.py +1 -0
- moai_adk/core/analysis/__init__.py +9 -0
- moai_adk/core/analysis/session_analyzer.py +400 -0
- moai_adk/core/claude_integration.py +393 -0
- moai_adk/core/command_helpers.py +270 -0
- moai_adk/core/comprehensive_monitoring_system.py +1183 -0
- moai_adk/core/config/__init__.py +19 -0
- moai_adk/core/config/auto_spec_config.py +340 -0
- moai_adk/core/config/migration.py +244 -0
- moai_adk/core/config/unified.py +436 -0
- moai_adk/core/context_manager.py +273 -0
- moai_adk/core/diagnostics/__init__.py +19 -0
- moai_adk/core/diagnostics/slash_commands.py +159 -0
- moai_adk/core/enterprise_features.py +1404 -0
- moai_adk/core/error_recovery_system.py +1902 -0
- moai_adk/core/event_driven_hook_system.py +1371 -0
- moai_adk/core/git/__init__.py +31 -0
- moai_adk/core/git/branch.py +25 -0
- moai_adk/core/git/branch_manager.py +129 -0
- moai_adk/core/git/checkpoint.py +134 -0
- moai_adk/core/git/commit.py +67 -0
- moai_adk/core/git/conflict_detector.py +413 -0
- moai_adk/core/git/event_detector.py +79 -0
- moai_adk/core/git/manager.py +216 -0
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +901 -0
- moai_adk/core/input_validation_middleware.py +1006 -0
- moai_adk/core/integration/__init__.py +22 -0
- moai_adk/core/integration/engine.py +157 -0
- moai_adk/core/integration/integration_tester.py +226 -0
- moai_adk/core/integration/models.py +88 -0
- moai_adk/core/integration/utils.py +211 -0
- moai_adk/core/issue_creator.py +305 -0
- moai_adk/core/jit_context_loader.py +956 -0
- moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
- moai_adk/core/language_config.py +202 -0
- moai_adk/core/language_config_resolver.py +572 -0
- moai_adk/core/language_validator.py +543 -0
- moai_adk/core/mcp/setup.py +116 -0
- moai_adk/core/merge/__init__.py +9 -0
- moai_adk/core/merge/analyzer.py +605 -0
- moai_adk/core/migration/__init__.py +18 -0
- moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
- moai_adk/core/migration/backup_manager.py +277 -0
- moai_adk/core/migration/custom_element_scanner.py +358 -0
- moai_adk/core/migration/file_migrator.py +209 -0
- moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
- moai_adk/core/migration/selective_restorer.py +470 -0
- moai_adk/core/migration/template_utils.py +74 -0
- moai_adk/core/migration/user_selection_ui.py +338 -0
- moai_adk/core/migration/version_detector.py +139 -0
- moai_adk/core/migration/version_migrator.py +228 -0
- moai_adk/core/performance/__init__.py +6 -0
- moai_adk/core/performance/cache_system.py +316 -0
- moai_adk/core/performance/parallel_processor.py +116 -0
- moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
- moai_adk/core/project/__init__.py +1 -0
- moai_adk/core/project/backup_utils.py +70 -0
- moai_adk/core/project/checker.py +300 -0
- moai_adk/core/project/detector.py +293 -0
- moai_adk/core/project/initializer.py +387 -0
- moai_adk/core/project/phase_executor.py +716 -0
- moai_adk/core/project/validator.py +139 -0
- moai_adk/core/quality/__init__.py +6 -0
- moai_adk/core/quality/trust_checker.py +377 -0
- moai_adk/core/quality/validators/__init__.py +6 -0
- moai_adk/core/quality/validators/base_validator.py +19 -0
- moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
- moai_adk/core/robust_json_parser.py +611 -0
- moai_adk/core/rollback_manager.py +918 -0
- moai_adk/core/session_manager.py +651 -0
- moai_adk/core/skill_loading_system.py +579 -0
- moai_adk/core/spec/confidence_scoring.py +680 -0
- moai_adk/core/spec/ears_template_engine.py +1247 -0
- moai_adk/core/spec/quality_validator.py +687 -0
- moai_adk/core/spec_status_manager.py +478 -0
- moai_adk/core/template/__init__.py +7 -0
- moai_adk/core/template/backup.py +174 -0
- moai_adk/core/template/config.py +191 -0
- moai_adk/core/template/languages.py +43 -0
- moai_adk/core/template/merger.py +233 -0
- moai_adk/core/template/processor.py +1200 -0
- moai_adk/core/template_engine.py +310 -0
- moai_adk/core/template_variable_synchronizer.py +417 -0
- moai_adk/core/unified_permission_manager.py +745 -0
- moai_adk/core/user_behavior_analytics.py +851 -0
- moai_adk/core/version_sync.py +429 -0
- moai_adk/foundation/__init__.py +56 -0
- moai_adk/foundation/backend.py +1027 -0
- moai_adk/foundation/database.py +1115 -0
- moai_adk/foundation/devops.py +1585 -0
- moai_adk/foundation/ears.py +431 -0
- moai_adk/foundation/frontend.py +870 -0
- moai_adk/foundation/git/commit_templates.py +557 -0
- moai_adk/foundation/git.py +376 -0
- moai_adk/foundation/langs.py +484 -0
- moai_adk/foundation/ml_ops.py +1162 -0
- moai_adk/foundation/testing.py +1524 -0
- moai_adk/foundation/trust/trust_principles.py +676 -0
- moai_adk/foundation/trust/validation_checklist.py +1573 -0
- moai_adk/project/__init__.py +0 -0
- moai_adk/project/configuration.py +1084 -0
- moai_adk/project/documentation.py +566 -0
- moai_adk/project/schema.py +447 -0
- moai_adk/statusline/__init__.py +38 -0
- moai_adk/statusline/alfred_detector.py +105 -0
- moai_adk/statusline/config.py +376 -0
- moai_adk/statusline/enhanced_output_style_detector.py +372 -0
- moai_adk/statusline/git_collector.py +190 -0
- moai_adk/statusline/main.py +322 -0
- moai_adk/statusline/metrics_tracker.py +78 -0
- moai_adk/statusline/renderer.py +343 -0
- moai_adk/statusline/update_checker.py +129 -0
- moai_adk/statusline/version_reader.py +741 -0
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +714 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +474 -0
- moai_adk/templates/.claude/agents/moai/builder-command.md +1172 -0
- moai_adk/templates/.claude/agents/moai/builder-plugin.md +637 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +666 -0
- moai_adk/templates/.claude/agents/moai/expert-backend.md +899 -0
- moai_adk/templates/.claude/agents/moai/expert-database.md +777 -0
- moai_adk/templates/.claude/agents/moai/expert-debug.md +401 -0
- moai_adk/templates/.claude/agents/moai/expert-devops.md +720 -0
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +734 -0
- moai_adk/templates/.claude/agents/moai/expert-performance.md +657 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +513 -0
- moai_adk/templates/.claude/agents/moai/expert-testing.md +733 -0
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +1041 -0
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +432 -0
- moai_adk/templates/.claude/agents/moai/manager-docs.md +573 -0
- moai_adk/templates/.claude/agents/moai/manager-git.md +1060 -0
- moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
- moai_adk/templates/.claude/agents/moai/manager-quality.md +624 -0
- moai_adk/templates/.claude/agents/moai/manager-spec.md +809 -0
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +780 -0
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +784 -0
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +458 -0
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +1607 -0
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +789 -0
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +469 -0
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +1032 -0
- moai_adk/templates/.claude/commands/moai/0-project.md +1386 -0
- moai_adk/templates/.claude/commands/moai/1-plan.md +1427 -0
- moai_adk/templates/.claude/commands/moai/2-run.md +943 -0
- moai_adk/templates/.claude/commands/moai/3-sync.md +1324 -0
- moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
- moai_adk/templates/.claude/hooks/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
- moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +244 -0
- moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
- moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
- moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
- moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
- moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
- moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +1083 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +560 -0
- moai_adk/templates/.claude/output-styles/moai/yoda.md +359 -0
- moai_adk/templates/.claude/settings.json +172 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +307 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +431 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/batch_generate.py +560 -0
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/scripts/generate_image.py +362 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +249 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +406 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +328 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +320 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +718 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +464 -0
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +323 -0
- moai_adk/templates/.claude/skills/moai-domain-database/examples.md +830 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
- moai_adk/templates/.claude/skills/moai-domain-database/reference.md +545 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +497 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +968 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +664 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +455 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +492 -0
- moai_adk/templates/.claude/skills/moai-formats-data/examples.md +804 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
- moai_adk/templates/.claude/skills/moai-formats-data/reference.md +585 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +202 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/examples.md +732 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference.md +209 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +441 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/examples.md +1048 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/reference.md +246 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +420 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/examples.md +358 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +359 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/reference.md +478 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +315 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/examples.md +228 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/assumption-matrix.md +80 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/cognitive-bias.md +199 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/first-principles.md +140 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/modules/trade-off-analysis.md +154 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/reference.md +157 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +364 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +649 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +478 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +612 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +477 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/examples.md +1090 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/reference.md +686 -0
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +376 -0
- moai_adk/templates/.claude/skills/moai-lang-go/examples.md +919 -0
- moai_adk/templates/.claude/skills/moai-lang-go/reference.md +737 -0
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +385 -0
- moai_adk/templates/.claude/skills/moai-lang-java/examples.md +864 -0
- moai_adk/templates/.claude/skills/moai-lang-java/reference.md +291 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +382 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +1006 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +562 -0
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +644 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +481 -0
- moai_adk/templates/.claude/skills/moai-lang-python/examples.md +977 -0
- moai_adk/templates/.claude/skills/moai-lang-python/reference.md +804 -0
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +579 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +687 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +372 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +659 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +504 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +497 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +633 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +423 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +497 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +918 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +672 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +368 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +1089 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +731 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +300 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +319 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/examples.md +592 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/reference.md +379 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +372 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
- moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +402 -0
- moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +607 -0
- moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +300 -0
- moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +537 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +291 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +390 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +398 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +379 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +358 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +467 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +377 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +466 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +482 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/SKILL.md +474 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/examples.md +621 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/migration.md +341 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/reference.md +463 -0
- moai_adk/templates/.claude/skills/moai-plugin-builder/validation.md +373 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/SKILL.md +275 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/adaptive-mfa.md +233 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/akamai-integration.md +215 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/application-credentials.md +280 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/attack-protection-log-events.md +225 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/attack-protection-overview.md +140 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/bot-detection.md +144 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/breached-password-detection.md +187 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/brute-force-protection.md +189 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/certifications.md +282 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/compliance-overview.md +263 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/continuous-session-protection.md +307 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/customize-mfa.md +178 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/dpop-implementation.md +283 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/fapi-implementation.md +259 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/gdpr-compliance.md +313 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/guardian-configuration.md +269 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/highly-regulated-identity.md +272 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/jwt-fundamentals.md +248 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mdl-verification.md +211 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-api-management.md +278 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-factors.md +226 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mfa-overview.md +174 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/mtls-sender-constraining.md +316 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/ropg-flow-mfa.md +217 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/security-center.md +325 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/security-guidance.md +277 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/state-parameters.md +178 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/step-up-authentication.md +251 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/suspicious-ip-throttling.md +240 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/tenant-access-control.md +180 -0
- moai_adk/templates/.claude/skills/moai-security-auth0/modules/webauthn-fido.md +235 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +449 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/examples.md +544 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/reference.md +307 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +390 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +175 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples.md +547 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/reference.md +275 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1434 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +92 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +534 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/examples.md +900 -0
- moai_adk/templates/.claude/skills/moai-workflow-spec/reference.md +704 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +377 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/examples.md +552 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/reference.md +346 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +456 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples.md +672 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/reference.md +440 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
- moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +411 -0
- moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
- moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
- moai_adk/templates/.git-hooks/pre-commit +128 -0
- moai_adk/templates/.git-hooks/pre-push +365 -0
- moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
- moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
- moai_adk/templates/.github/workflows/spec-issue-sync.yml +337 -0
- moai_adk/templates/.gitignore +222 -0
- moai_adk/templates/.mcp.json +13 -0
- moai_adk/templates/.moai/config/config.yaml +58 -0
- moai_adk/templates/.moai/config/questions/_schema.yaml +174 -0
- moai_adk/templates/.moai/config/questions/tab0-init.yaml +251 -0
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +107 -0
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +79 -0
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +632 -0
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +182 -0
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +96 -0
- moai_adk/templates/.moai/config/sections/git-strategy.yaml +116 -0
- moai_adk/templates/.moai/config/sections/language.yaml +11 -0
- moai_adk/templates/.moai/config/sections/project.yaml +13 -0
- moai_adk/templates/.moai/config/sections/quality.yaml +17 -0
- moai_adk/templates/.moai/config/sections/system.yaml +24 -0
- moai_adk/templates/.moai/config/sections/user.yaml +5 -0
- moai_adk/templates/.moai/config/statusline-config.yaml +92 -0
- moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
- moai_adk/templates/CLAUDE.md +642 -0
- moai_adk/utils/__init__.py +30 -0
- moai_adk/utils/banner.py +38 -0
- moai_adk/utils/common.py +294 -0
- moai_adk/utils/link_validator.py +241 -0
- moai_adk/utils/logger.py +147 -0
- moai_adk/utils/safe_file_reader.py +206 -0
- moai_adk/utils/timeout.py +160 -0
- moai_adk/utils/toon_utils.py +256 -0
- moai_adk/version.py +22 -0
- moai_adk-0.35.1.dist-info/METADATA +3018 -0
- moai_adk-0.35.1.dist-info/RECORD +502 -0
- moai_adk-0.35.1.dist-info/WHEEL +4 -0
- moai_adk-0.35.1.dist-info/entry_points.txt +3 -0
- moai_adk-0.35.1.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Nano Banana Pro - Single Image Generation Script
|
|
4
|
+
|
|
5
|
+
Generates images using the gemini-3-pro-image-preview model (Nano Banana Pro).
|
|
6
|
+
This script is the canonical implementation for single image generation tasks.
|
|
7
|
+
|
|
8
|
+
Features:
|
|
9
|
+
- 1K, 2K, 4K resolution support
|
|
10
|
+
- 10 aspect ratios (1:1, 16:9, etc.)
|
|
11
|
+
- Style prefix support for consistent aesthetics
|
|
12
|
+
- Exponential backoff retry for API quota errors
|
|
13
|
+
- Google Search grounding integration
|
|
14
|
+
|
|
15
|
+
Usage:
|
|
16
|
+
python generate_image.py -p "A futuristic cityscape" -o city.png
|
|
17
|
+
python generate_image.py -p "Dashboard UI" -o ui.png -r 4K -a 16:9
|
|
18
|
+
python generate_image.py -p "Logo design" -o logo.png --style "minimalist, vector"
|
|
19
|
+
|
|
20
|
+
Environment Variables Required:
|
|
21
|
+
GOOGLE_API_KEY - Your Google AI Studio API key
|
|
22
|
+
|
|
23
|
+
Model: gemini-3-pro-image-preview (hardcoded)
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
import argparse
|
|
27
|
+
import os
|
|
28
|
+
import random
|
|
29
|
+
import sys
|
|
30
|
+
import time
|
|
31
|
+
from datetime import datetime
|
|
32
|
+
from pathlib import Path
|
|
33
|
+
from typing import Optional
|
|
34
|
+
|
|
35
|
+
try:
|
|
36
|
+
from google import genai
|
|
37
|
+
from google.genai import types
|
|
38
|
+
except ImportError:
|
|
39
|
+
print("Error: google-genai package not installed.")
|
|
40
|
+
print("Install with: pip install google-genai")
|
|
41
|
+
sys.exit(1)
|
|
42
|
+
|
|
43
|
+
try:
|
|
44
|
+
from dotenv import load_dotenv
|
|
45
|
+
|
|
46
|
+
load_dotenv()
|
|
47
|
+
except ImportError:
|
|
48
|
+
pass # dotenv is optional
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
# Fixed model - Nano Banana Pro
|
|
52
|
+
MODEL_NAME = "gemini-3-pro-image-preview"
|
|
53
|
+
|
|
54
|
+
# Supported configurations
|
|
55
|
+
SUPPORTED_ASPECT_RATIOS = ["1:1", "2:3", "3:2", "3:4", "4:3", "4:5", "5:4", "9:16", "16:9", "21:9"]
|
|
56
|
+
SUPPORTED_RESOLUTIONS = ["1K", "2K", "4K"] # Must be uppercase
|
|
57
|
+
|
|
58
|
+
# Retry configuration
|
|
59
|
+
MAX_RETRIES = 5
|
|
60
|
+
BASE_DELAY = 2.0
|
|
61
|
+
MAX_DELAY = 60.0
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def get_api_key() -> str:
|
|
65
|
+
"""Get API key from environment variable."""
|
|
66
|
+
api_key = os.getenv("GOOGLE_API_KEY")
|
|
67
|
+
if not api_key:
|
|
68
|
+
print("Error: GOOGLE_API_KEY environment variable not set.")
|
|
69
|
+
print("Set up your API key:")
|
|
70
|
+
print(" 1. Get your key from https://aistudio.google.com/apikey")
|
|
71
|
+
print(" 2. Create .env file with: GOOGLE_API_KEY=your_key_here")
|
|
72
|
+
print(" 3. Or set environment variable: export GOOGLE_API_KEY=your_key_here")
|
|
73
|
+
sys.exit(1)
|
|
74
|
+
return api_key
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def validate_aspect_ratio(ratio: str) -> str:
|
|
78
|
+
"""Validate and normalize aspect ratio."""
|
|
79
|
+
if ratio not in SUPPORTED_ASPECT_RATIOS:
|
|
80
|
+
print(f"Warning: '{ratio}' is not a standard aspect ratio.")
|
|
81
|
+
print(f"Supported ratios: {', '.join(SUPPORTED_ASPECT_RATIOS)}")
|
|
82
|
+
print("Using default: 16:9")
|
|
83
|
+
return "16:9"
|
|
84
|
+
return ratio
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def validate_resolution(resolution: str) -> str:
|
|
88
|
+
"""Validate and normalize resolution (must be uppercase K)."""
|
|
89
|
+
normalized = resolution.upper()
|
|
90
|
+
if normalized not in SUPPORTED_RESOLUTIONS:
|
|
91
|
+
print(f"Warning: '{resolution}' is not a valid resolution.")
|
|
92
|
+
print(f"Supported resolutions: {', '.join(SUPPORTED_RESOLUTIONS)}")
|
|
93
|
+
print("Using default: 2K")
|
|
94
|
+
return "2K"
|
|
95
|
+
return normalized
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def build_prompt_with_style(prompt: str, style: Optional[str] = None) -> str:
|
|
99
|
+
"""Build final prompt with optional style prefix."""
|
|
100
|
+
if style:
|
|
101
|
+
return f"{style}: {prompt}"
|
|
102
|
+
return prompt
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def calculate_backoff_delay(attempt: int, jitter: bool = True) -> float:
|
|
106
|
+
"""Calculate exponential backoff delay with optional jitter."""
|
|
107
|
+
delay = min(BASE_DELAY * (2**attempt), MAX_DELAY)
|
|
108
|
+
if jitter:
|
|
109
|
+
delay = delay * (0.5 + random.random())
|
|
110
|
+
return delay
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def generate_image(
|
|
114
|
+
prompt: str,
|
|
115
|
+
output_path: str,
|
|
116
|
+
aspect_ratio: str = "16:9",
|
|
117
|
+
resolution: str = "2K",
|
|
118
|
+
style: Optional[str] = None,
|
|
119
|
+
enable_grounding: bool = False,
|
|
120
|
+
max_retries: int = MAX_RETRIES,
|
|
121
|
+
verbose: bool = False,
|
|
122
|
+
) -> dict:
|
|
123
|
+
"""
|
|
124
|
+
Generate an image using Nano Banana Pro (gemini-3-pro-image-preview).
|
|
125
|
+
|
|
126
|
+
Args:
|
|
127
|
+
prompt: The image generation prompt
|
|
128
|
+
output_path: Path to save the generated image
|
|
129
|
+
aspect_ratio: Image aspect ratio (default: 16:9)
|
|
130
|
+
resolution: Image resolution - 1K, 2K, or 4K (default: 2K)
|
|
131
|
+
style: Optional style prefix (e.g., "photorealistic", "minimalist")
|
|
132
|
+
enable_grounding: Enable Google Search grounding (default: False)
|
|
133
|
+
max_retries: Maximum retry attempts for transient errors (default: 5)
|
|
134
|
+
verbose: Print detailed progress information
|
|
135
|
+
|
|
136
|
+
Returns:
|
|
137
|
+
dict with generation metadata including success status, file path, and timing
|
|
138
|
+
"""
|
|
139
|
+
# Validate inputs
|
|
140
|
+
aspect_ratio = validate_aspect_ratio(aspect_ratio)
|
|
141
|
+
resolution = validate_resolution(resolution)
|
|
142
|
+
final_prompt = build_prompt_with_style(prompt, style)
|
|
143
|
+
|
|
144
|
+
# Get API key
|
|
145
|
+
api_key = get_api_key()
|
|
146
|
+
|
|
147
|
+
if verbose:
|
|
148
|
+
print(f" Model: {MODEL_NAME}")
|
|
149
|
+
print(f" Final Prompt: {final_prompt[:100]}{'...' if len(final_prompt) > 100 else ''}")
|
|
150
|
+
print(f" Style: {style or 'None'}")
|
|
151
|
+
print("-" * 50)
|
|
152
|
+
|
|
153
|
+
# Initialize client
|
|
154
|
+
client = genai.Client(api_key=api_key)
|
|
155
|
+
|
|
156
|
+
# Build configuration
|
|
157
|
+
config_params = {
|
|
158
|
+
"response_modalities": ["TEXT", "IMAGE"],
|
|
159
|
+
"image_config": types.ImageConfig(aspect_ratio=aspect_ratio, image_size=resolution),
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
# Optionally enable Google Search grounding
|
|
163
|
+
if enable_grounding:
|
|
164
|
+
config_params["tools"] = [{"google_search": {}}]
|
|
165
|
+
|
|
166
|
+
config = types.GenerateContentConfig(**config_params)
|
|
167
|
+
|
|
168
|
+
# Retry logic with exponential backoff
|
|
169
|
+
last_error = None
|
|
170
|
+
for attempt in range(max_retries):
|
|
171
|
+
try:
|
|
172
|
+
if verbose:
|
|
173
|
+
print(f" Attempt {attempt + 1}/{max_retries}...")
|
|
174
|
+
|
|
175
|
+
start_time = time.time()
|
|
176
|
+
|
|
177
|
+
# Generate image
|
|
178
|
+
response = client.models.generate_content(model=MODEL_NAME, contents=final_prompt, config=config)
|
|
179
|
+
|
|
180
|
+
generation_time = time.time() - start_time
|
|
181
|
+
|
|
182
|
+
# Ensure output directory exists
|
|
183
|
+
output_dir = Path(output_path).parent
|
|
184
|
+
if output_dir and str(output_dir) != "." and not output_dir.exists():
|
|
185
|
+
output_dir.mkdir(parents=True, exist_ok=True)
|
|
186
|
+
|
|
187
|
+
# Save image
|
|
188
|
+
image_saved = False
|
|
189
|
+
text_response = ""
|
|
190
|
+
|
|
191
|
+
for part in response.candidates[0].content.parts:
|
|
192
|
+
if part.inline_data is not None:
|
|
193
|
+
with open(output_path, "wb") as f:
|
|
194
|
+
f.write(part.inline_data.data)
|
|
195
|
+
image_saved = True
|
|
196
|
+
elif hasattr(part, "text") and part.text:
|
|
197
|
+
text_response = part.text
|
|
198
|
+
|
|
199
|
+
if not image_saved:
|
|
200
|
+
raise RuntimeError("No image data in response. The model may have returned text-only response.")
|
|
201
|
+
|
|
202
|
+
# Return success metadata
|
|
203
|
+
return {
|
|
204
|
+
"success": True,
|
|
205
|
+
"model": MODEL_NAME,
|
|
206
|
+
"prompt": prompt,
|
|
207
|
+
"final_prompt": final_prompt,
|
|
208
|
+
"style": style,
|
|
209
|
+
"output_path": str(Path(output_path).absolute()),
|
|
210
|
+
"aspect_ratio": aspect_ratio,
|
|
211
|
+
"resolution": resolution,
|
|
212
|
+
"generation_time_seconds": round(generation_time, 2),
|
|
213
|
+
"timestamp": datetime.now().isoformat(),
|
|
214
|
+
"text_response": text_response if text_response else None,
|
|
215
|
+
"grounding_enabled": enable_grounding,
|
|
216
|
+
"attempts": attempt + 1,
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
except Exception as e:
|
|
220
|
+
last_error = e
|
|
221
|
+
error_str = str(e).lower()
|
|
222
|
+
|
|
223
|
+
# Check for non-retryable errors
|
|
224
|
+
if "permission" in error_str or "api_key" in error_str or "invalid_api_key" in error_str:
|
|
225
|
+
print(f"Error: API key issue - {e}")
|
|
226
|
+
print("Check your GOOGLE_API_KEY in .env file or environment variable.")
|
|
227
|
+
break
|
|
228
|
+
|
|
229
|
+
if "invalid" in error_str and "argument" in error_str:
|
|
230
|
+
print(f"Error: Invalid argument - {e}")
|
|
231
|
+
print(f"Check aspect_ratio ({aspect_ratio}) and resolution ({resolution}).")
|
|
232
|
+
break
|
|
233
|
+
|
|
234
|
+
# Check for quota/rate limit errors - apply exponential backoff
|
|
235
|
+
is_quota_error = any(kw in error_str for kw in ["quota", "rate", "429", "resource_exhausted", "too_many"])
|
|
236
|
+
|
|
237
|
+
if attempt < max_retries - 1:
|
|
238
|
+
delay = calculate_backoff_delay(attempt, jitter=is_quota_error)
|
|
239
|
+
if is_quota_error:
|
|
240
|
+
print(f" Rate limit hit (attempt {attempt + 1}). Waiting {delay:.1f}s...")
|
|
241
|
+
else:
|
|
242
|
+
print(f" Attempt {attempt + 1} failed: {e}")
|
|
243
|
+
print(f" Retrying in {delay:.1f}s...")
|
|
244
|
+
time.sleep(delay)
|
|
245
|
+
else:
|
|
246
|
+
print(f" All {max_retries} attempts failed.")
|
|
247
|
+
|
|
248
|
+
# Return failure metadata
|
|
249
|
+
return {
|
|
250
|
+
"success": False,
|
|
251
|
+
"model": MODEL_NAME,
|
|
252
|
+
"prompt": prompt,
|
|
253
|
+
"final_prompt": final_prompt,
|
|
254
|
+
"style": style,
|
|
255
|
+
"error": str(last_error),
|
|
256
|
+
"timestamp": datetime.now().isoformat(),
|
|
257
|
+
"attempts": max_retries,
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
def main():
|
|
262
|
+
"""Main entry point for CLI usage."""
|
|
263
|
+
parser = argparse.ArgumentParser(
|
|
264
|
+
description="Generate images using Nano Banana Pro (gemini-3-pro-image-preview)",
|
|
265
|
+
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
266
|
+
epilog="""
|
|
267
|
+
Examples:
|
|
268
|
+
# Basic usage
|
|
269
|
+
python generate_image.py -p "A fluffy cat eating a banana" -o cat.png
|
|
270
|
+
|
|
271
|
+
# High resolution with specific aspect ratio
|
|
272
|
+
python generate_image.py -p "Modern dashboard UI" -o dashboard.png -a 16:9 -r 4K
|
|
273
|
+
|
|
274
|
+
# With style prefix
|
|
275
|
+
python generate_image.py -p "Mountain landscape" -o landscape.png \\
|
|
276
|
+
--style "photorealistic, dramatic lighting"
|
|
277
|
+
|
|
278
|
+
# With Google Search grounding for factual content
|
|
279
|
+
python generate_image.py -p "Mount Fuji at sunset" -o fuji.png -g
|
|
280
|
+
|
|
281
|
+
# Verbose mode with all options
|
|
282
|
+
python generate_image.py -p "Tech company logo" -o logo.png \\
|
|
283
|
+
-r 4K -a 1:1 --style "minimalist, vector art" -v
|
|
284
|
+
|
|
285
|
+
Style Prefix Examples:
|
|
286
|
+
- "photorealistic, 8K, detailed"
|
|
287
|
+
- "minimalist, vector art, clean"
|
|
288
|
+
- "watercolor painting, soft colors"
|
|
289
|
+
- "3D render, cinematic lighting"
|
|
290
|
+
- "anime style, vibrant colors"
|
|
291
|
+
|
|
292
|
+
Environment:
|
|
293
|
+
GOOGLE_API_KEY - Required. Get from https://aistudio.google.com/apikey
|
|
294
|
+
""",
|
|
295
|
+
)
|
|
296
|
+
|
|
297
|
+
parser.add_argument("-p", "--prompt", required=True, help="Image generation prompt (descriptive text)")
|
|
298
|
+
|
|
299
|
+
parser.add_argument("-o", "--output", required=True, help="Output file path for the generated image (PNG format)")
|
|
300
|
+
|
|
301
|
+
parser.add_argument(
|
|
302
|
+
"-a", "--aspect-ratio", default="16:9", choices=SUPPORTED_ASPECT_RATIOS, help="Aspect ratio (default: 16:9)"
|
|
303
|
+
)
|
|
304
|
+
|
|
305
|
+
parser.add_argument(
|
|
306
|
+
"-r",
|
|
307
|
+
"--resolution",
|
|
308
|
+
default="2K",
|
|
309
|
+
choices=SUPPORTED_RESOLUTIONS,
|
|
310
|
+
help="Resolution: 1K, 2K, or 4K (default: 2K)",
|
|
311
|
+
)
|
|
312
|
+
|
|
313
|
+
parser.add_argument("--style", help="Style prefix to prepend to prompt (e.g., 'photorealistic', 'minimalist')")
|
|
314
|
+
|
|
315
|
+
parser.add_argument(
|
|
316
|
+
"-g", "--enable-grounding", action="store_true", help="Enable Google Search grounding for factual content"
|
|
317
|
+
)
|
|
318
|
+
|
|
319
|
+
parser.add_argument(
|
|
320
|
+
"--max-retries",
|
|
321
|
+
type=int,
|
|
322
|
+
default=MAX_RETRIES,
|
|
323
|
+
help=f"Maximum retry attempts for transient errors (default: {MAX_RETRIES})",
|
|
324
|
+
)
|
|
325
|
+
|
|
326
|
+
parser.add_argument("-v", "--verbose", action="store_true", help="Print detailed progress information")
|
|
327
|
+
|
|
328
|
+
args = parser.parse_args()
|
|
329
|
+
|
|
330
|
+
print(f"Generating image with {MODEL_NAME}...")
|
|
331
|
+
print(f" Prompt: {args.prompt[:80]}{'...' if len(args.prompt) > 80 else ''}")
|
|
332
|
+
if args.style:
|
|
333
|
+
print(f" Style: {args.style}")
|
|
334
|
+
print(f" Aspect Ratio: {args.aspect_ratio}")
|
|
335
|
+
print(f" Resolution: {args.resolution}")
|
|
336
|
+
print(f" Output: {args.output}")
|
|
337
|
+
|
|
338
|
+
result = generate_image(
|
|
339
|
+
prompt=args.prompt,
|
|
340
|
+
output_path=args.output,
|
|
341
|
+
aspect_ratio=args.aspect_ratio,
|
|
342
|
+
resolution=args.resolution,
|
|
343
|
+
style=args.style,
|
|
344
|
+
enable_grounding=args.enable_grounding,
|
|
345
|
+
max_retries=args.max_retries,
|
|
346
|
+
verbose=args.verbose,
|
|
347
|
+
)
|
|
348
|
+
|
|
349
|
+
if result["success"]:
|
|
350
|
+
print("\nSuccess!")
|
|
351
|
+
print(f" File: {result['output_path']}")
|
|
352
|
+
print(f" Time: {result['generation_time_seconds']}s")
|
|
353
|
+
print(f" Attempts: {result['attempts']}")
|
|
354
|
+
if result.get("text_response"):
|
|
355
|
+
print(f" Model Note: {result['text_response'][:200]}")
|
|
356
|
+
else:
|
|
357
|
+
print(f"\nFailed: {result['error']}")
|
|
358
|
+
sys.exit(1)
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
if __name__ == "__main__":
|
|
362
|
+
main()
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: moai-docs-generation
|
|
3
|
+
description: Automated documentation generation specialist for technical specs, API docs, user guides, and knowledge bases with multi-format output
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
category: workflow
|
|
6
|
+
allowed-tools: Read, Write, Edit, Grep, Glob
|
|
7
|
+
tags:
|
|
8
|
+
- documentation
|
|
9
|
+
- generation
|
|
10
|
+
- automation
|
|
11
|
+
- markdown
|
|
12
|
+
- html
|
|
13
|
+
- api-docs
|
|
14
|
+
updated: 2025-12-06
|
|
15
|
+
status: active
|
|
16
|
+
author: MoAI-ADK Team
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Documentation Generation Specialist
|
|
20
|
+
|
|
21
|
+
## Quick Reference (30 seconds)
|
|
22
|
+
|
|
23
|
+
Automated Documentation Generation - Comprehensive documentation automation covering technical specs, API documentation, user guides, and knowledge base creation with multi-format output capabilities.
|
|
24
|
+
|
|
25
|
+
Core Capabilities:
|
|
26
|
+
- Technical Documentation: API docs, architecture specs, code documentation
|
|
27
|
+
- User Guides: Tutorials, getting started guides, best practices
|
|
28
|
+
- API Documentation: OpenAPI/Swagger generation, endpoint documentation
|
|
29
|
+
- Multi-Format Output: Markdown, HTML, PDF, static sites
|
|
30
|
+
- AI-Powered Generation: Context-aware content creation and enhancement
|
|
31
|
+
- Continuous Updates: Auto-sync documentation with code changes
|
|
32
|
+
|
|
33
|
+
When to Use:
|
|
34
|
+
- Generating API documentation from code
|
|
35
|
+
- Creating technical specifications and architecture docs
|
|
36
|
+
- Building user guides and tutorials
|
|
37
|
+
- Automating knowledge base creation
|
|
38
|
+
- Maintaining up-to-date project documentation
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Implementation Guide (5 minutes)
|
|
43
|
+
|
|
44
|
+
### Quick Start Workflow
|
|
45
|
+
|
|
46
|
+
Basic Documentation Generation:
|
|
47
|
+
```python
|
|
48
|
+
from moai_docs_generation import DocumentationGenerator
|
|
49
|
+
|
|
50
|
+
# Initialize generator
|
|
51
|
+
doc_gen = DocumentationGenerator()
|
|
52
|
+
|
|
53
|
+
# Generate API documentation
|
|
54
|
+
api_docs = doc_gen.generate_api_docs("path/to/your/app.py")
|
|
55
|
+
|
|
56
|
+
# Create user guide
|
|
57
|
+
user_guide = doc_gen.generate_user_guide(project_info)
|
|
58
|
+
|
|
59
|
+
# Export to multiple formats
|
|
60
|
+
doc_gen.export_to_formats(api_docs, formats=["html", "pdf", "markdown"])
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Single Command Documentation:
|
|
64
|
+
```bash
|
|
65
|
+
# Generate complete documentation
|
|
66
|
+
moai generate-docs --source ./src --output ./docs --formats html,pdf
|
|
67
|
+
|
|
68
|
+
# Update API docs from code
|
|
69
|
+
moai update-api-docs --app-file app.py --format openapi
|
|
70
|
+
|
|
71
|
+
# Create tutorial from feature
|
|
72
|
+
moai create-tutorial --feature authentication --output docs/tutorials/
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Core Components
|
|
76
|
+
|
|
77
|
+
1. API Documentation (`modules/api-documentation.md`)
|
|
78
|
+
- OpenAPI/Swagger specification generation
|
|
79
|
+
- Interactive HTML documentation
|
|
80
|
+
- Code example generation
|
|
81
|
+
- Request/response documentation
|
|
82
|
+
|
|
83
|
+
2. Code Documentation (`modules/code-documentation.md`)
|
|
84
|
+
- AST-based code analysis
|
|
85
|
+
- AI-powered docstring enhancement
|
|
86
|
+
- Automatic documentation structure extraction
|
|
87
|
+
- Multi-format documentation generation
|
|
88
|
+
|
|
89
|
+
3. User Guides (`modules/user-guides.md`)
|
|
90
|
+
- Getting started guides
|
|
91
|
+
- Feature tutorials
|
|
92
|
+
- Cookbook generation
|
|
93
|
+
- Step-by-step instructions
|
|
94
|
+
|
|
95
|
+
4. Multi-Format Output (`modules/multi-format-output.md`)
|
|
96
|
+
- HTML site generation
|
|
97
|
+
- PDF documentation
|
|
98
|
+
- Static site export
|
|
99
|
+
- Responsive design templates
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Advanced Patterns (10+ minutes)
|
|
104
|
+
|
|
105
|
+
### Continuous Documentation Integration
|
|
106
|
+
|
|
107
|
+
Git Hooks for Auto-Documentation:
|
|
108
|
+
```python
|
|
109
|
+
# .git/hooks/pre-commit
|
|
110
|
+
#!/bin/bash
|
|
111
|
+
# Auto-update documentation before commits
|
|
112
|
+
|
|
113
|
+
python -c "
|
|
114
|
+
from moai_docs_generation import DocumentationGenerator
|
|
115
|
+
doc_gen = DocumentationGenerator()
|
|
116
|
+
doc_gen.update_documentation_for_changed_files()
|
|
117
|
+
"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
CI/CD Pipeline Integration:
|
|
121
|
+
```yaml
|
|
122
|
+
# .github/workflows/docs.yml
|
|
123
|
+
name: Generate Documentation
|
|
124
|
+
on:
|
|
125
|
+
push:
|
|
126
|
+
branches: [main]
|
|
127
|
+
|
|
128
|
+
jobs:
|
|
129
|
+
docs:
|
|
130
|
+
runs-on: ubuntu-latest
|
|
131
|
+
steps:
|
|
132
|
+
- uses: actions/checkout@v2
|
|
133
|
+
- name: Generate Documentation
|
|
134
|
+
run: |
|
|
135
|
+
moai generate-docs --source ./src --output ./docs
|
|
136
|
+
moai deploy-docs --platform github-pages
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### AI-Enhanced Documentation
|
|
140
|
+
|
|
141
|
+
Smart Content Generation:
|
|
142
|
+
```python
|
|
143
|
+
# AI-powered example generation
|
|
144
|
+
ai_enhanced_docs = doc_gen.generate_with_ai(
|
|
145
|
+
source_code="path/to/code",
|
|
146
|
+
enhancement_level="comprehensive",
|
|
147
|
+
include_examples=True,
|
|
148
|
+
include_troubleshooting=True
|
|
149
|
+
)
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Documentation Quality Automation
|
|
153
|
+
|
|
154
|
+
Automated Quality Checks:
|
|
155
|
+
```python
|
|
156
|
+
# Validate documentation quality
|
|
157
|
+
quality_report = doc_gen.validate_documentation(
|
|
158
|
+
completeness_threshold=0.9,
|
|
159
|
+
include_example_validation=True,
|
|
160
|
+
check_link_integrity=True
|
|
161
|
+
)
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Works Well With
|
|
167
|
+
|
|
168
|
+
Complementary Skills:
|
|
169
|
+
- `moai-foundation-core` - SPEC-first documentation approach
|
|
170
|
+
- `moai-workflow-project` - Project documentation integration
|
|
171
|
+
- `moai-lang-python` - Python code documentation patterns
|
|
172
|
+
- `moai-lang-typescript` - TypeScript code documentation patterns
|
|
173
|
+
- `moai-mcp-notion` - Notion documentation sync and knowledge management
|
|
174
|
+
|
|
175
|
+
Technology Integration:
|
|
176
|
+
- FastAPI/Flask applications
|
|
177
|
+
- Sphinx/MkDocs documentation
|
|
178
|
+
- GitHub/GitLab wikis
|
|
179
|
+
- Confluence knowledge bases
|
|
180
|
+
- Static site generators (Hugo, Jekyll)
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Usage Examples
|
|
185
|
+
|
|
186
|
+
### Command Line Interface
|
|
187
|
+
```bash
|
|
188
|
+
# Complete documentation suite
|
|
189
|
+
moai docs:generate --project ./my-project --output ./docs
|
|
190
|
+
|
|
191
|
+
# API documentation only
|
|
192
|
+
moai docs:api --source ./app.py --format openapi,html
|
|
193
|
+
|
|
194
|
+
# User guide creation
|
|
195
|
+
moai docs:guide --features auth,user-management --template getting-started
|
|
196
|
+
|
|
197
|
+
# Documentation updates
|
|
198
|
+
moai docs:update --sync-with-code --validate-links
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Python API
|
|
202
|
+
```python
|
|
203
|
+
from moai_docs_generation import DocumentationGenerator
|
|
204
|
+
|
|
205
|
+
# Complete workflow
|
|
206
|
+
generator = DocumentationGenerator()
|
|
207
|
+
docs = generator.generate_comprehensive_docs(
|
|
208
|
+
source_directory="./src",
|
|
209
|
+
include_api_docs=True,
|
|
210
|
+
include_user_guides=True,
|
|
211
|
+
output_formats=["html", "pdf", "markdown"]
|
|
212
|
+
)
|
|
213
|
+
|
|
214
|
+
# Individual components
|
|
215
|
+
api_gen = API Documentation Generation()
|
|
216
|
+
api_spec = api_gen.generate_openapi_spec(fastapi_app)
|
|
217
|
+
|
|
218
|
+
code_gen = Code Documentation Enhancement()
|
|
219
|
+
enhanced_docs = code_gen.analyze_and_enhance("./src/")
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## Technology Stack
|
|
225
|
+
|
|
226
|
+
Core Technologies:
|
|
227
|
+
- Python 3.8+ (main implementation)
|
|
228
|
+
- FastAPI/Flask (API documentation)
|
|
229
|
+
- Jinja2 (HTML templating)
|
|
230
|
+
- Markdown (content formatting)
|
|
231
|
+
- WeasyPrint (PDF generation)
|
|
232
|
+
|
|
233
|
+
Optional Integrations:
|
|
234
|
+
- AI services (content enhancement)
|
|
235
|
+
- Git hooks (auto-updates)
|
|
236
|
+
- CI/CD platforms (continuous deployment)
|
|
237
|
+
- Static site generators (hosting)
|
|
238
|
+
- Documentation platforms (confluence)
|
|
239
|
+
|
|
240
|
+
Output Formats:
|
|
241
|
+
- HTML (responsive sites)
|
|
242
|
+
- PDF (print-ready documents)
|
|
243
|
+
- Markdown (version control friendly)
|
|
244
|
+
- OpenAPI/Swagger (API specifications)
|
|
245
|
+
- Static sites (hosting platforms)
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
*For detailed implementation patterns and advanced configurations, see the `modules/` directory.*
|