moai-adk 0.15.1__py3-none-any.whl → 0.32.8__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 +2 -6
- moai_adk/__main__.py +136 -21
- moai_adk/cli/__init__.py +6 -2
- moai_adk/cli/commands/__init__.py +1 -4
- moai_adk/cli/commands/analyze.py +116 -0
- moai_adk/cli/commands/doctor.py +17 -5
- moai_adk/cli/commands/init.py +105 -47
- moai_adk/cli/commands/language.py +248 -0
- moai_adk/cli/commands/status.py +8 -13
- moai_adk/cli/commands/update.py +1734 -65
- moai_adk/cli/main.py +3 -2
- moai_adk/cli/prompts/init_prompts.py +144 -91
- 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 +672 -0
- moai_adk/cli/worktree/exceptions.py +89 -0
- moai_adk/cli/worktree/manager.py +490 -0
- moai_adk/cli/worktree/models.py +65 -0
- moai_adk/cli/worktree/registry.py +128 -0
- moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
- moai_adk/core/__init__.py +0 -1
- 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 +6 -0
- moai_adk/core/config/auto_spec_config.py +340 -0
- moai_adk/core/config/migration.py +147 -16
- moai_adk/core/config/unified.py +436 -0
- moai_adk/core/context_manager.py +273 -0
- moai_adk/core/diagnostics/slash_commands.py +0 -1
- 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 +8 -1
- moai_adk/core/git/branch.py +0 -1
- moai_adk/core/git/branch_manager.py +2 -10
- moai_adk/core/git/checkpoint.py +1 -7
- moai_adk/core/git/commit.py +0 -1
- moai_adk/core/git/conflict_detector.py +413 -0
- moai_adk/core/git/event_detector.py +3 -5
- moai_adk/core/git/manager.py +91 -2
- 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 +20 -28
- 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 +485 -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 +481 -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 +0 -1
- moai_adk/core/project/backup_utils.py +2 -7
- moai_adk/core/project/checker.py +2 -4
- moai_adk/core/project/detector.py +17 -39
- moai_adk/core/project/initializer.py +170 -33
- moai_adk/core/project/phase_executor.py +398 -68
- moai_adk/core/project/validator.py +7 -32
- moai_adk/core/quality/__init__.py +1 -1
- moai_adk/core/quality/trust_checker.py +37 -101
- moai_adk/core/quality/validators/__init__.py +1 -1
- moai_adk/core/quality/validators/base_validator.py +1 -1
- 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 +0 -1
- moai_adk/core/template/backup.py +82 -17
- moai_adk/core/template/config.py +112 -40
- moai_adk/core/template/languages.py +0 -1
- moai_adk/core/template/merger.py +75 -26
- moai_adk/core/template/processor.py +750 -72
- moai_adk/core/template_engine.py +90 -48
- 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 +373 -0
- moai_adk/statusline/enhanced_output_style_detector.py +372 -0
- moai_adk/statusline/git_collector.py +190 -0
- moai_adk/statusline/main.py +264 -0
- moai_adk/statusline/metrics_tracker.py +78 -0
- moai_adk/statusline/renderer.py +383 -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 +549 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +445 -0
- moai_adk/templates/.claude/agents/moai/builder-command.md +1132 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +601 -0
- moai_adk/templates/.claude/agents/moai/expert-backend.md +831 -0
- moai_adk/templates/.claude/agents/moai/expert-database.md +774 -0
- moai_adk/templates/.claude/agents/moai/expert-debug.md +396 -0
- moai_adk/templates/.claude/agents/moai/expert-devops.md +711 -0
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +666 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +474 -0
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +1038 -0
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +429 -0
- moai_adk/templates/.claude/agents/moai/manager-docs.md +570 -0
- moai_adk/templates/.claude/agents/moai/manager-git.md +937 -0
- moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
- moai_adk/templates/.claude/agents/moai/manager-quality.md +598 -0
- moai_adk/templates/.claude/agents/moai/manager-spec.md +713 -0
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +600 -0
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +603 -0
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +369 -0
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +1567 -0
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +749 -0
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +427 -0
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +994 -0
- moai_adk/templates/.claude/commands/moai/0-project.md +1143 -0
- moai_adk/templates/.claude/commands/moai/1-plan.md +1435 -0
- moai_adk/templates/.claude/commands/moai/2-run.md +883 -0
- moai_adk/templates/.claude/commands/moai/3-sync.md +993 -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/{alfred/shared/core → moai/lib}/checkpoint.py +9 -36
- 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/{alfred/shared/core → moai/lib}/project.py +63 -44
- moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
- moai_adk/templates/.claude/hooks/{alfred/core → moai/lib}/timeout.py +40 -16
- 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 +921 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +380 -0
- moai_adk/templates/.claude/output-styles/moai/yoda.md +338 -0
- moai_adk/templates/.claude/settings.json +78 -50
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +247 -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-domain-backend/SKILL.md +312 -283
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +291 -94
- 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-frontend/SKILL.md +469 -101
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +453 -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/design-system-tokens.md +405 -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 +491 -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-foundation-claude/SKILL.md +201 -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-context/SKILL.md +438 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +515 -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 +346 -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-quality/SKILL.md +362 -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-integration-mcp/SKILL.md +352 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/README.md +52 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/error-handling.md +334 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/integration-patterns.md +310 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/security-authentication.md +256 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/server-architecture.md +253 -0
- moai_adk/templates/.claude/skills/moai-lang-unified/README.md +133 -0
- moai_adk/templates/.claude/skills/moai-lang-unified/SKILL.md +296 -0
- moai_adk/templates/.claude/skills/moai-lang-unified/examples.md +1269 -0
- moai_adk/templates/.claude/skills/moai-lang-unified/reference.md +331 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +298 -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 +316 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -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-shadcn/SKILL.md +370 -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-platform-baas/README.md +186 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/SKILL.md +290 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/examples.md +1225 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/reference.md +567 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/scripts/provider-selector.py +323 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/templates/stack-config.yaml +204 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +446 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +387 -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 +135 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -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/schemas/config-schema.json +316 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1362 -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 +71 -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-templates/SKILL.md +374 -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-testing/LICENSE.txt +202 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +453 -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/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/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 +410 -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 +220 -13
- 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 +0 -1
- moai_adk/templates/.gitignore +197 -13
- moai_adk/templates/.mcp.json +20 -0
- moai_adk/templates/.moai/cache/personalization.json +10 -0
- moai_adk/templates/.moai/config/config.yaml +344 -0
- moai_adk/templates/.moai/config/presets/manual.yaml +28 -0
- moai_adk/templates/.moai/config/presets/personal.yaml +30 -0
- moai_adk/templates/.moai/config/presets/team.yaml +33 -0
- moai_adk/templates/.moai/config/questions/_schema.yaml +79 -0
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +108 -0
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +122 -0
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +542 -0
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +167 -0
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +152 -0
- moai_adk/templates/.moai/config/sections/git-strategy.yaml +40 -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 +15 -0
- moai_adk/templates/.moai/config/sections/system.yaml +14 -0
- moai_adk/templates/.moai/config/sections/user.yaml +5 -0
- moai_adk/templates/.moai/config/statusline-config.yaml +86 -0
- moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
- moai_adk/templates/CLAUDE.md +310 -1050
- moai_adk/utils/__init__.py +24 -2
- moai_adk/utils/banner.py +7 -11
- moai_adk/utils/common.py +294 -0
- moai_adk/utils/link_validator.py +241 -0
- moai_adk/utils/logger.py +4 -9
- moai_adk/utils/safe_file_reader.py +206 -0
- moai_adk/{templates/.claude/hooks/alfred/utils → utils}/timeout.py +8 -9
- moai_adk/utils/toon_utils.py +256 -0
- moai_adk/version.py +22 -0
- moai_adk-0.32.8.dist-info/METADATA +2478 -0
- moai_adk-0.32.8.dist-info/RECORD +396 -0
- {moai_adk-0.15.1.dist-info → moai_adk-0.32.8.dist-info}/WHEEL +1 -1
- {moai_adk-0.15.1.dist-info → moai_adk-0.32.8.dist-info}/entry_points.txt +1 -0
- moai_adk/cli/commands/backup.py +0 -80
- moai_adk/core/tags/__init__.py +0 -86
- moai_adk/core/tags/ci_validator.py +0 -463
- moai_adk/core/tags/cli.py +0 -283
- moai_adk/core/tags/generator.py +0 -109
- moai_adk/core/tags/inserter.py +0 -99
- moai_adk/core/tags/mapper.py +0 -126
- moai_adk/core/tags/parser.py +0 -76
- moai_adk/core/tags/pre_commit_validator.py +0 -393
- moai_adk/core/tags/reporter.py +0 -956
- moai_adk/core/tags/tags.py +0 -149
- moai_adk/core/tags/validator.py +0 -897
- moai_adk/templates/.claude/agents/alfred/backend-expert.md +0 -319
- moai_adk/templates/.claude/agents/alfred/cc-manager.md +0 -316
- moai_adk/templates/.claude/agents/alfred/debug-helper.md +0 -208
- moai_adk/templates/.claude/agents/alfred/devops-expert.md +0 -464
- moai_adk/templates/.claude/agents/alfred/doc-syncer.md +0 -214
- moai_adk/templates/.claude/agents/alfred/frontend-expert.md +0 -357
- moai_adk/templates/.claude/agents/alfred/git-manager.md +0 -406
- moai_adk/templates/.claude/agents/alfred/implementation-planner.md +0 -423
- moai_adk/templates/.claude/agents/alfred/project-manager.md +0 -312
- moai_adk/templates/.claude/agents/alfred/quality-gate.md +0 -343
- moai_adk/templates/.claude/agents/alfred/skill-factory.md +0 -865
- moai_adk/templates/.claude/agents/alfred/spec-builder.md +0 -426
- moai_adk/templates/.claude/agents/alfred/tag-agent.md +0 -361
- moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +0 -428
- moai_adk/templates/.claude/agents/alfred/trust-checker.md +0 -375
- moai_adk/templates/.claude/agents/alfred/ui-ux-expert.md +0 -571
- moai_adk/templates/.claude/commands/alfred/0-project.md +0 -1854
- moai_adk/templates/.claude/commands/alfred/1-plan.md +0 -880
- moai_adk/templates/.claude/commands/alfred/2-run.md +0 -793
- moai_adk/templates/.claude/commands/alfred/3-sync.md +0 -1084
- moai_adk/templates/.claude/commands/alfred/9-feedback.md +0 -149
- moai_adk/templates/.claude/hooks/alfred/core/project.py +0 -748
- moai_adk/templates/.claude/hooks/alfred/core/ttl_cache.py +0 -108
- moai_adk/templates/.claude/hooks/alfred/core/version_cache.py +0 -198
- moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +0 -29
- moai_adk/templates/.claude/hooks/alfred/post_tool__log_changes.py +0 -94
- moai_adk/templates/.claude/hooks/alfred/pre_tool__auto_checkpoint.py +0 -100
- moai_adk/templates/.claude/hooks/alfred/session_end__cleanup.py +0 -94
- moai_adk/templates/.claude/hooks/alfred/session_start__show_project_info.py +0 -94
- moai_adk/templates/.claude/hooks/alfred/shared/core/__init__.py +0 -170
- moai_adk/templates/.claude/hooks/alfred/shared/core/context.py +0 -67
- moai_adk/templates/.claude/hooks/alfred/shared/core/tags.py +0 -230
- moai_adk/templates/.claude/hooks/alfred/shared/core/version_cache.py +0 -198
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/__init__.py +0 -21
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/notification.py +0 -154
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/session.py +0 -174
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/tool.py +0 -87
- moai_adk/templates/.claude/hooks/alfred/shared/handlers/user.py +0 -61
- moai_adk/templates/.claude/hooks/alfred/user_prompt__jit_load_docs.py +0 -112
- moai_adk/templates/.claude/hooks/alfred/utils/__init__.py +0 -1
- moai_adk/templates/.claude/skills/moai-alfred-agent-guide/SKILL.md +0 -70
- moai_adk/templates/.claude/skills/moai-alfred-agent-guide/examples.md +0 -62
- moai_adk/templates/.claude/skills/moai-alfred-agent-guide/reference.md +0 -242
- moai_adk/templates/.claude/skills/moai-alfred-config-schema/SKILL.md +0 -56
- moai_adk/templates/.claude/skills/moai-alfred-config-schema/examples.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-config-schema/reference.md +0 -444
- moai_adk/templates/.claude/skills/moai-alfred-context-budget/SKILL.md +0 -62
- moai_adk/templates/.claude/skills/moai-alfred-context-budget/examples.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-context-budget/reference.md +0 -405
- moai_adk/templates/.claude/skills/moai-alfred-dev-guide/SKILL.md +0 -51
- moai_adk/templates/.claude/skills/moai-alfred-dev-guide/examples.md +0 -355
- moai_adk/templates/.claude/skills/moai-alfred-dev-guide/reference.md +0 -239
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/SKILL.md +0 -323
- moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/examples.md +0 -286
- moai_adk/templates/.claude/skills/moai-alfred-expertise-detection/reference.md +0 -126
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +0 -122
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/reference.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/SKILL.md +0 -74
- moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/examples.md +0 -4
- moai_adk/templates/.claude/skills/moai-alfred-gitflow-policy/reference.md +0 -269
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/SKILL.md +0 -237
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/examples.md +0 -615
- moai_adk/templates/.claude/skills/moai-alfred-interactive-questions/reference.md +0 -653
- moai_adk/templates/.claude/skills/moai-alfred-issue-labels/SKILL.md +0 -19
- moai_adk/templates/.claude/skills/moai-alfred-issue-labels/examples.md +0 -4
- moai_adk/templates/.claude/skills/moai-alfred-issue-labels/reference.md +0 -150
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-persona-roles/SKILL.md +0 -198
- moai_adk/templates/.claude/skills/moai-alfred-persona-roles/examples.md +0 -431
- moai_adk/templates/.claude/skills/moai-alfred-persona-roles/reference.md +0 -141
- moai_adk/templates/.claude/skills/moai-alfred-practices/SKILL.md +0 -89
- moai_adk/templates/.claude/skills/moai-alfred-practices/examples.md +0 -122
- moai_adk/templates/.claude/skills/moai-alfred-practices/reference.md +0 -369
- moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/SKILL.md +0 -508
- moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/examples.md +0 -481
- moai_adk/templates/.claude/skills/moai-alfred-proactive-suggestions/reference.md +0 -100
- moai_adk/templates/.claude/skills/moai-alfred-reporting/SKILL.md +0 -273
- moai_adk/templates/.claude/skills/moai-alfred-rules/SKILL.md +0 -77
- moai_adk/templates/.claude/skills/moai-alfred-rules/examples.md +0 -265
- moai_adk/templates/.claude/skills/moai-alfred-rules/reference.md +0 -539
- moai_adk/templates/.claude/skills/moai-alfred-session-state/SKILL.md +0 -19
- moai_adk/templates/.claude/skills/moai-alfred-session-state/examples.md +0 -4
- moai_adk/templates/.claude/skills/moai-alfred-session-state/reference.md +0 -84
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/README.md +0 -137
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/SKILL.md +0 -219
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples/validate-spec.sh +0 -161
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/examples.md +0 -541
- moai_adk/templates/.claude/skills/moai-alfred-spec-authoring/reference.md +0 -622
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/SKILL.md +0 -115
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/examples.md +0 -4
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-extended/reference.md +0 -348
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/SKILL.md +0 -19
- moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/examples.md +0 -4
- moai_adk/templates/.claude/skills/moai-alfred-todowrite-pattern/reference.md +0 -211
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-alfred-workflow/SKILL.md +0 -288
- moai_adk/templates/.claude/skills/moai-cc-agents/SKILL.md +0 -269
- moai_adk/templates/.claude/skills/moai-cc-agents/templates/agent-template.md +0 -32
- moai_adk/templates/.claude/skills/moai-cc-claude-md/SKILL.md +0 -298
- moai_adk/templates/.claude/skills/moai-cc-claude-md/templates/CLAUDE-template.md +0 -26
- moai_adk/templates/.claude/skills/moai-cc-commands/SKILL.md +0 -307
- moai_adk/templates/.claude/skills/moai-cc-commands/templates/command-template.md +0 -21
- moai_adk/templates/.claude/skills/moai-cc-hooks/SKILL.md +0 -252
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/pre-bash-check.sh +0 -19
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/preserve-permissions.sh +0 -19
- moai_adk/templates/.claude/skills/moai-cc-hooks/scripts/validate-bash-command.py +0 -24
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/SKILL.md +0 -199
- moai_adk/templates/.claude/skills/moai-cc-mcp-plugins/templates/settings-mcp-template.json +0 -39
- moai_adk/templates/.claude/skills/moai-cc-memory/SKILL.md +0 -316
- moai_adk/templates/.claude/skills/moai-cc-memory/templates/session-summary-template.md +0 -18
- moai_adk/templates/.claude/skills/moai-cc-settings/SKILL.md +0 -263
- moai_adk/templates/.claude/skills/moai-cc-settings/templates/settings-complete-template.json +0 -30
- moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/SKILL.md +0 -19
- moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/examples.md +0 -4
- moai_adk/templates/.claude/skills/moai-cc-skill-descriptions/reference.md +0 -218
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/CHECKLIST.md +0 -482
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/EXAMPLES.md +0 -278
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/INTERACTIVE-DISCOVERY.md +0 -524
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/METADATA.md +0 -477
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/PARALLEL-ANALYSIS-REPORT.md +0 -429
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/PYTHON-VERSION-MATRIX.md +0 -391
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-FACTORY-WORKFLOW.md +0 -431
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL-UPDATE-ADVISOR.md +0 -577
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/SKILL.md +0 -271
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/STEP-BY-STEP-GUIDE.md +0 -466
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/STRUCTURE.md +0 -583
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/WEB-RESEARCH.md +0 -526
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/reference.md +0 -465
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/generate-structure.sh +0 -328
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/scripts/validate-skill.sh +0 -312
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/SKILL_TEMPLATE.md +0 -245
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/examples-template.md +0 -285
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/reference-template.md +0 -278
- moai_adk/templates/.claude/skills/moai-cc-skill-factory/templates/scripts-template.sh +0 -303
- moai_adk/templates/.claude/skills/moai-cc-skills/SKILL.md +0 -291
- moai_adk/templates/.claude/skills/moai-cc-skills/templates/SKILL-template.md +0 -15
- moai_adk/templates/.claude/skills/moai-design-systems/SKILL.md +0 -802
- moai_adk/templates/.claude/skills/moai-design-systems/examples.md +0 -1238
- moai_adk/templates/.claude/skills/moai-design-systems/reference.md +0 -673
- moai_adk/templates/.claude/skills/moai-domain-backend/examples.md +0 -1633
- moai_adk/templates/.claude/skills/moai-domain-backend/reference.md +0 -660
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-domain-data-science/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-data-science/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-domain-database/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-database/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +0 -124
- moai_adk/templates/.claude/skills/moai-domain-devops/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-devops/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-domain-frontend/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-frontend/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-domain-ml/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-ml/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-domain-security/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-security/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-domain-web-api/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-domain-web-api/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +0 -303
- moai_adk/templates/.claude/skills/moai-essentials-debug/examples.md +0 -1064
- moai_adk/templates/.claude/skills/moai-essentials-debug/reference.md +0 -1047
- moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-essentials-perf/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-essentials-perf/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-essentials-refactor/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-essentials-refactor/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-essentials-review/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-essentials-review/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +0 -116
- moai_adk/templates/.claude/skills/moai-foundation-ears/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-foundation-ears/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +0 -122
- moai_adk/templates/.claude/skills/moai-foundation-git/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-foundation-git/reference.md +0 -29
- moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-foundation-langs/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-foundation-langs/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-foundation-specs/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-foundation-specs/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +0 -113
- moai_adk/templates/.claude/skills/moai-foundation-tags/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-foundation-tags/reference.md +0 -28
- moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +0 -307
- moai_adk/templates/.claude/skills/moai-foundation-trust/examples.md +0 -0
- moai_adk/templates/.claude/skills/moai-foundation-trust/reference.md +0 -1099
- moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +0 -124
- moai_adk/templates/.claude/skills/moai-lang-c/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-c/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +0 -124
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-lang-dart/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-dart/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +0 -127
- moai_adk/templates/.claude/skills/moai-lang-go/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-go/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +0 -126
- moai_adk/templates/.claude/skills/moai-lang-java/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-java/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +0 -125
- moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +0 -32
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +0 -124
- moai_adk/templates/.claude/skills/moai-lang-kotlin/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-kotlin/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +0 -126
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-php/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +0 -433
- moai_adk/templates/.claude/skills/moai-lang-python/examples.md +0 -624
- moai_adk/templates/.claude/skills/moai-lang-python/reference.md +0 -316
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-r/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +0 -124
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +0 -127
- moai_adk/templates/.claude/skills/moai-lang-rust/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-rust/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +0 -125
- moai_adk/templates/.claude/skills/moai-lang-scala/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-scala/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-lang-shell/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-shell/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +0 -124
- moai_adk/templates/.claude/skills/moai-lang-sql/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-sql/reference.md +0 -31
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +0 -123
- moai_adk/templates/.claude/skills/moai-lang-swift/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-swift/reference.md +0 -30
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +0 -133
- moai_adk/templates/.claude/skills/moai-lang-typescript/examples.md +0 -29
- moai_adk/templates/.claude/skills/moai-lang-typescript/reference.md +0 -34
- moai_adk/templates/.claude/skills/moai-project-documentation.md +0 -622
- moai_adk/templates/.github/workflows/c-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/cpp-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/csharp-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/dart-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/go-tag-validation.yml +0 -130
- moai_adk/templates/.github/workflows/java-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/javascript-tag-validation.yml +0 -135
- moai_adk/templates/.github/workflows/kotlin-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -419
- moai_adk/templates/.github/workflows/moai-release-create.yml +0 -100
- moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -188
- moai_adk/templates/.github/workflows/php-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/python-tag-validation.yml +0 -118
- moai_adk/templates/.github/workflows/release.yml +0 -118
- moai_adk/templates/.github/workflows/ruby-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/rust-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/shell-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/swift-tag-validation.yml +0 -11
- moai_adk/templates/.github/workflows/tag-report.yml +0 -269
- moai_adk/templates/.github/workflows/tag-validation.yml +0 -186
- moai_adk/templates/.github/workflows/typescript-tag-validation.yml +0 -154
- moai_adk/templates/.moai/config.json +0 -115
- moai_adk/templates/workflows/go-tag-validation.yml +0 -30
- moai_adk/templates/workflows/javascript-tag-validation.yml +0 -41
- moai_adk/templates/workflows/python-tag-validation.yml +0 -42
- moai_adk/templates/workflows/typescript-tag-validation.yml +0 -31
- moai_adk-0.15.1.dist-info/METADATA +0 -3094
- moai_adk-0.15.1.dist-info/RECORD +0 -365
- {moai_adk-0.15.1.dist-info → moai_adk-0.32.8.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,1232 @@
|
|
|
1
|
+
# Enterprise Code Quality Examples
|
|
2
|
+
|
|
3
|
+
Comprehensive examples demonstrating the moai-foundation-quality skill in action across various scenarios and use cases.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Example 1: Basic Quality Gate Validation
|
|
8
|
+
|
|
9
|
+
Scenario: Validate code quality before deployment
|
|
10
|
+
|
|
11
|
+
```python
|
|
12
|
+
from moai_core_quality import QualityOrchestrator, QualityConfig
|
|
13
|
+
|
|
14
|
+
# Initialize quality orchestrator with TRUST 5 validation
|
|
15
|
+
config = QualityConfig(
|
|
16
|
+
trust5_enabled=True,
|
|
17
|
+
quality_threshold=0.85,
|
|
18
|
+
languages=["python", "typescript"]
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
quality_orchestrator = QualityOrchestrator(config)
|
|
22
|
+
|
|
23
|
+
# Run comprehensive quality analysis
|
|
24
|
+
result = await quality_orchestrator.analyze_codebase(
|
|
25
|
+
path="src/",
|
|
26
|
+
languages=["python", "typescript"],
|
|
27
|
+
quality_threshold=0.85
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
print(f"Overall Quality Score: {result.overall_score:.2f}")
|
|
31
|
+
print(f"TRUST 5 Validation: {' PASSED' if result.trust5_validation.passed else ' FAILED'}")
|
|
32
|
+
|
|
33
|
+
# Check individual TRUST 5 principles
|
|
34
|
+
for principle, validation in result.trust5_validation.principles.items():
|
|
35
|
+
status = "" if validation.passed else ""
|
|
36
|
+
print(f"{status} {principle.title()}: {validation.score:.2f}")
|
|
37
|
+
|
|
38
|
+
# Generate quality report
|
|
39
|
+
await quality_orchestrator.generate_report(
|
|
40
|
+
result=result,
|
|
41
|
+
output_path="quality-report.html",
|
|
42
|
+
format="html"
|
|
43
|
+
)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Output:
|
|
47
|
+
```
|
|
48
|
+
Overall Quality Score: 0.87
|
|
49
|
+
TRUST 5 Validation: PASSED
|
|
50
|
+
Testable: 0.92
|
|
51
|
+
Readable: 0.84
|
|
52
|
+
Unified: 0.88
|
|
53
|
+
Secured: 0.91
|
|
54
|
+
Trackable: 0.80
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Example 2: Proactive Security Analysis
|
|
60
|
+
|
|
61
|
+
Scenario: Identify and fix security vulnerabilities in web application
|
|
62
|
+
|
|
63
|
+
```python
|
|
64
|
+
from moai_core_quality import ProactiveSecurityScanner
|
|
65
|
+
|
|
66
|
+
security_scanner = ProactiveSecurityScanner(
|
|
67
|
+
context7_integration=True,
|
|
68
|
+
owasp_compliance=True
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
# Focus on security vulnerabilities
|
|
72
|
+
security_issues = await security_scanner.scan_security_issues(
|
|
73
|
+
codebase="src/web_application/",
|
|
74
|
+
scan_types=[
|
|
75
|
+
"sql_injection",
|
|
76
|
+
"xss_vulnerabilities",
|
|
77
|
+
"authentication_bypass",
|
|
78
|
+
"sensitive_data_exposure",
|
|
79
|
+
"dependency_vulnerabilities"
|
|
80
|
+
]
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
print(f"Found {len(security_issues.critical_issues)} critical security issues:")
|
|
84
|
+
for issue in security_issues.critical_issues:
|
|
85
|
+
print(f" {issue.title}")
|
|
86
|
+
print(f" Location: {issue.file}:{issue.line}")
|
|
87
|
+
print(f" Description: {issue.description}")
|
|
88
|
+
print(f" Fix: {issue.recommended_fix}")
|
|
89
|
+
print()
|
|
90
|
+
|
|
91
|
+
# Auto-fix low-risk issues
|
|
92
|
+
auto_fixed = await security_scanner.auto_fix_issues(
|
|
93
|
+
issues=security_issues.low_risk_issues,
|
|
94
|
+
backup=True
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
print(f"Auto-fixed {len(auto_fixed)} security issues")
|
|
98
|
+
|
|
99
|
+
# Generate security report
|
|
100
|
+
await security_scanner.generate_security_report(
|
|
101
|
+
issues=security_issues,
|
|
102
|
+
output_path="security-analysis.json",
|
|
103
|
+
format="sarif" # GitHub Actions compatible
|
|
104
|
+
)
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Sample Security Issues Found:
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"critical_issues": [
|
|
111
|
+
{
|
|
112
|
+
"title": "SQL Injection in User Authentication",
|
|
113
|
+
"file": "src/auth/user_service.py",
|
|
114
|
+
"line": 45,
|
|
115
|
+
"severity": "critical",
|
|
116
|
+
"description": "Direct SQL query construction with user input",
|
|
117
|
+
"recommended_fix": "Use parameterized queries or ORM",
|
|
118
|
+
"owasp_category": "A03:2021 – Injection"
|
|
119
|
+
}
|
|
120
|
+
],
|
|
121
|
+
"medium_issues": [
|
|
122
|
+
{
|
|
123
|
+
"title": "Missing Rate Limiting",
|
|
124
|
+
"file": "src/api/endpoints.py",
|
|
125
|
+
"line": 120,
|
|
126
|
+
"severity": "medium",
|
|
127
|
+
"description": "API endpoint lacks rate limiting protection",
|
|
128
|
+
"recommended_fix": "Implement rate limiting middleware"
|
|
129
|
+
}
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Example 3: Performance Optimization Analysis
|
|
137
|
+
|
|
138
|
+
Scenario: Identify performance bottlenecks and optimization opportunities
|
|
139
|
+
|
|
140
|
+
```python
|
|
141
|
+
from moai_core_quality import PerformanceAnalyzer
|
|
142
|
+
|
|
143
|
+
performance_analyzer = PerformanceAnalyzer(
|
|
144
|
+
context7_integration=True,
|
|
145
|
+
benchmark_comparison=True
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
# Analyze performance issues
|
|
149
|
+
performance_result = await performance_analyzer.analyze_performance(
|
|
150
|
+
codebase="src/",
|
|
151
|
+
focus_areas=[
|
|
152
|
+
"database_queries",
|
|
153
|
+
"algorithm_complexity",
|
|
154
|
+
"memory_usage",
|
|
155
|
+
"api_response_time",
|
|
156
|
+
"concurrent_operations"
|
|
157
|
+
]
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
print("Performance Analysis Results:")
|
|
161
|
+
print(f"Overall Performance Score: {performance_result.overall_score:.2f}")
|
|
162
|
+
|
|
163
|
+
# Performance hotspots
|
|
164
|
+
print("\n Performance Hotspots:")
|
|
165
|
+
for hotspot in performance_result.hotspots:
|
|
166
|
+
print(f" {hotspot.file}:{hotspot.line} - {hotspot.issue}")
|
|
167
|
+
print(f" Impact: {hotspot.performance_impact}")
|
|
168
|
+
print(f" Suggested Fix: {hotspot.optimization}")
|
|
169
|
+
|
|
170
|
+
# Benchmark comparison
|
|
171
|
+
if performance_result.benchmark_comparison:
|
|
172
|
+
print(f"\n Benchmark Percentiles:")
|
|
173
|
+
for metric, percentile in performance_result.benchmark_comparison.items():
|
|
174
|
+
print(f" {metric}: {percentile}th percentile")
|
|
175
|
+
|
|
176
|
+
# Generate optimization recommendations
|
|
177
|
+
recommendations = await performance_analyzer.generate_optimization_plan(
|
|
178
|
+
issues=performance_result.issues,
|
|
179
|
+
priority="high",
|
|
180
|
+
estimated_impact=True
|
|
181
|
+
)
|
|
182
|
+
|
|
183
|
+
print(f"\n Optimization Plan:")
|
|
184
|
+
for i, rec in enumerate(recommendations, 1):
|
|
185
|
+
print(f"{i}. {rec.title}")
|
|
186
|
+
print(f" Priority: {rec.priority}")
|
|
187
|
+
print(f" Estimated Impact: {rec.estimated_impact}")
|
|
188
|
+
print(f" Effort: {rec.estimated_effort}")
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Performance Issues Identified:
|
|
192
|
+
```python
|
|
193
|
+
# Example output
|
|
194
|
+
Performance Analysis Results:
|
|
195
|
+
Overall Performance Score: 0.73
|
|
196
|
+
|
|
197
|
+
Performance Hotspots:
|
|
198
|
+
src/database/user_repository.py:89 - N+1 query problem
|
|
199
|
+
Impact: High (200ms+ additional queries per request)
|
|
200
|
+
Suggested Fix: Implement eager loading or batch queries
|
|
201
|
+
|
|
202
|
+
src/algorithms/sort_service.py:34 - O(n²) algorithm
|
|
203
|
+
Impact: Medium (exponential time complexity)
|
|
204
|
+
Suggested Fix: Use built-in sort or implement O(n log n) algorithm
|
|
205
|
+
|
|
206
|
+
Benchmark Percentiles:
|
|
207
|
+
database_efficiency: 45th percentile
|
|
208
|
+
algorithm_efficiency: 78th percentile
|
|
209
|
+
memory_usage: 62nd percentile
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Example 4: Multi-Language Project Quality Analysis
|
|
215
|
+
|
|
216
|
+
Scenario: Analyze quality across Python, TypeScript, and Go codebase
|
|
217
|
+
|
|
218
|
+
```python
|
|
219
|
+
from moai_core_quality import MultiLanguageQualityAnalyzer
|
|
220
|
+
|
|
221
|
+
multi_lang_analyzer = MultiLanguageQualityAnalyzer(
|
|
222
|
+
languages=["python", "typescript", "go"],
|
|
223
|
+
context7_integration=True
|
|
224
|
+
)
|
|
225
|
+
|
|
226
|
+
# Analyze each language with specific rules
|
|
227
|
+
language_configs = {
|
|
228
|
+
"python": {
|
|
229
|
+
"style_guide": "pep8",
|
|
230
|
+
"linter": "ruff",
|
|
231
|
+
"formatter": "black",
|
|
232
|
+
"type_checker": "mypy",
|
|
233
|
+
"test_framework": "pytest"
|
|
234
|
+
},
|
|
235
|
+
"typescript": {
|
|
236
|
+
"style_guide": "google",
|
|
237
|
+
"linter": "eslint",
|
|
238
|
+
"formatter": "prettier",
|
|
239
|
+
"type_checker": "tsc",
|
|
240
|
+
"test_framework": "jest"
|
|
241
|
+
},
|
|
242
|
+
"go": {
|
|
243
|
+
"style_guide": "gofmt",
|
|
244
|
+
"linter": "golangci-lint",
|
|
245
|
+
"formatter": "gofmt",
|
|
246
|
+
"type_checker": "go vet",
|
|
247
|
+
"test_framework": "go test"
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
results = await multi_lang_analyzer.analyze_multilang_project(
|
|
252
|
+
project_root="src/",
|
|
253
|
+
language_configs=language_configs
|
|
254
|
+
)
|
|
255
|
+
|
|
256
|
+
print("Multi-Language Quality Report:")
|
|
257
|
+
print("=" * 50)
|
|
258
|
+
|
|
259
|
+
for lang, result in results.items():
|
|
260
|
+
print(f"\n {lang.upper()}:")
|
|
261
|
+
print(f" Quality Score: {result.overall_score:.2f}")
|
|
262
|
+
print(f" Test Coverage: {result.test_coverage:.1%}")
|
|
263
|
+
print(f" Code Issues: {len(result.issues)}")
|
|
264
|
+
|
|
265
|
+
# Language-specific issues
|
|
266
|
+
if result.language_specific_issues:
|
|
267
|
+
print(" Language-Specific Issues:")
|
|
268
|
+
for issue in result.language_specific_issues[:3]: # Show top 3
|
|
269
|
+
print(f" - {issue.title} ({issue.severity})")
|
|
270
|
+
|
|
271
|
+
# Cross-language consistency analysis
|
|
272
|
+
consistency = await multi_lang_analyzer.analyze_consistency(results)
|
|
273
|
+
print(f"\n Cross-Language Consistency: {consistency.overall_score:.2f}")
|
|
274
|
+
|
|
275
|
+
if consistency.inconsistencies:
|
|
276
|
+
print("Inconsistencies Found:")
|
|
277
|
+
for inconsistency in consistency.inconsistencies:
|
|
278
|
+
print(f" - {inconsistency.description}")
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
Sample Multi-Language Output:
|
|
282
|
+
```
|
|
283
|
+
Multi-Language Quality Report:
|
|
284
|
+
==================================================
|
|
285
|
+
|
|
286
|
+
PYTHON:
|
|
287
|
+
Quality Score: 0.86
|
|
288
|
+
Test Coverage: 92.3%
|
|
289
|
+
Code Issues: 15
|
|
290
|
+
Language-Specific Issues:
|
|
291
|
+
- Unused imports (low)
|
|
292
|
+
- Missing type hints (medium)
|
|
293
|
+
- Long parameter lists (medium)
|
|
294
|
+
|
|
295
|
+
TYPESCRIPT:
|
|
296
|
+
Quality Score: 0.89
|
|
297
|
+
Test Coverage: 87.1%
|
|
298
|
+
Code Issues: 8
|
|
299
|
+
Language-Specific Issues:
|
|
300
|
+
- Any types used (medium)
|
|
301
|
+
- Missing null checks (high)
|
|
302
|
+
|
|
303
|
+
GO:
|
|
304
|
+
Quality Score: 0.91
|
|
305
|
+
Test Coverage: 85.7%
|
|
306
|
+
Code Issues: 5
|
|
307
|
+
Language-Specific Issues:
|
|
308
|
+
- Unhandled errors (medium)
|
|
309
|
+
- Inefficient string concatenation (low)
|
|
310
|
+
|
|
311
|
+
Cross-Language Consistency: 0.78
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
## Example 5: CI/CD Pipeline Integration
|
|
317
|
+
|
|
318
|
+
Scenario: Integrate quality gates into GitHub Actions pipeline
|
|
319
|
+
|
|
320
|
+
```yaml
|
|
321
|
+
# .github/workflows/quality-gate.yml
|
|
322
|
+
name: Quality Gate
|
|
323
|
+
|
|
324
|
+
on:
|
|
325
|
+
pull_request:
|
|
326
|
+
branches: [ main ]
|
|
327
|
+
push:
|
|
328
|
+
branches: [ main ]
|
|
329
|
+
|
|
330
|
+
jobs:
|
|
331
|
+
quality-analysis:
|
|
332
|
+
runs-on: ubuntu-latest
|
|
333
|
+
|
|
334
|
+
steps:
|
|
335
|
+
- uses: actions/checkout@v3
|
|
336
|
+
|
|
337
|
+
- name: Setup Python
|
|
338
|
+
uses: actions/setup-python@v4
|
|
339
|
+
with:
|
|
340
|
+
python-version: '3.11'
|
|
341
|
+
|
|
342
|
+
- name: Install dependencies
|
|
343
|
+
run: |
|
|
344
|
+
pip install moai-foundation-quality
|
|
345
|
+
npm install -g eslint prettier
|
|
346
|
+
|
|
347
|
+
- name: Run Quality Analysis
|
|
348
|
+
run: |
|
|
349
|
+
python -c "
|
|
350
|
+
import asyncio
|
|
351
|
+
from moai_core_quality import QualityOrchestrator
|
|
352
|
+
|
|
353
|
+
async def run_quality_analysis():
|
|
354
|
+
orchestrator = QualityOrchestrator()
|
|
355
|
+
result = await orchestrator.analyze_codebase(
|
|
356
|
+
path='src/',
|
|
357
|
+
languages=['python', 'typescript'],
|
|
358
|
+
quality_threshold=0.85
|
|
359
|
+
)
|
|
360
|
+
|
|
361
|
+
# Set GitHub Actions outputs
|
|
362
|
+
with open('quality_output.txt', 'w') as f:
|
|
363
|
+
f.write(f'quality_score={result.overall_score:.2f}\n')
|
|
364
|
+
f.write(f'quality_passed={result.trust5_validation.passed}\n')
|
|
365
|
+
f.write(f'test_coverage={result.trust5_validation.principles[\"testable\"].score:.2f}\n')
|
|
366
|
+
|
|
367
|
+
# Generate detailed report
|
|
368
|
+
await orchestrator.generate_report(
|
|
369
|
+
result=result,
|
|
370
|
+
output_path='quality-report.html',
|
|
371
|
+
format='html'
|
|
372
|
+
)
|
|
373
|
+
|
|
374
|
+
# Exit with error if quality gate fails
|
|
375
|
+
if not result.trust5_validation.passed:
|
|
376
|
+
print(' Quality gate failed!')
|
|
377
|
+
exit(1)
|
|
378
|
+
print(' Quality gate passed!')
|
|
379
|
+
|
|
380
|
+
asyncio.run(run_quality_analysis())
|
|
381
|
+
"
|
|
382
|
+
|
|
383
|
+
- name: Upload Quality Report
|
|
384
|
+
uses: actions/upload-artifact@v3
|
|
385
|
+
with:
|
|
386
|
+
name: quality-report
|
|
387
|
+
path: quality-report.html
|
|
388
|
+
|
|
389
|
+
- name: Set Quality Outputs
|
|
390
|
+
run: |
|
|
391
|
+
while read line; do
|
|
392
|
+
echo "::set-output name=${line%%=*}::${line#*=}"
|
|
393
|
+
done < quality_output.txt
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
Python Quality Analysis Script:
|
|
397
|
+
```python
|
|
398
|
+
# quality_pipeline.py
|
|
399
|
+
import asyncio
|
|
400
|
+
import json
|
|
401
|
+
import sys
|
|
402
|
+
from pathlib import Path
|
|
403
|
+
from moai_core_quality import QualityOrchestrator, CIIntegration
|
|
404
|
+
|
|
405
|
+
async def run_pipeline_quality_check():
|
|
406
|
+
"""Run quality check for CI/CD pipeline"""
|
|
407
|
+
|
|
408
|
+
# Configuration
|
|
409
|
+
config = {
|
|
410
|
+
"codebase_path": "src/",
|
|
411
|
+
"languages": ["python", "typescript"],
|
|
412
|
+
"quality_threshold": 0.85,
|
|
413
|
+
"fail_on_threshold": True,
|
|
414
|
+
"generate_reports": True,
|
|
415
|
+
"output_formats": ["json", "html", "junit"]
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
# Initialize quality orchestrator
|
|
419
|
+
orchestrator = QualityOrchestrator()
|
|
420
|
+
ci_integration = CIIntegration()
|
|
421
|
+
|
|
422
|
+
print(" Starting quality analysis...")
|
|
423
|
+
|
|
424
|
+
# Run quality analysis
|
|
425
|
+
result = await orchestrator.analyze_codebase(
|
|
426
|
+
path=config["codebase_path"],
|
|
427
|
+
languages=config["languages"],
|
|
428
|
+
quality_threshold=config["quality_threshold"]
|
|
429
|
+
)
|
|
430
|
+
|
|
431
|
+
# Generate CI/CD outputs
|
|
432
|
+
await ci_integration.generate_pipeline_outputs(
|
|
433
|
+
result=result,
|
|
434
|
+
output_dir="quality-reports/",
|
|
435
|
+
formats=config["output_formats"]
|
|
436
|
+
)
|
|
437
|
+
|
|
438
|
+
# Quality gate validation
|
|
439
|
+
if not result.trust5_validation.passed:
|
|
440
|
+
print(" Quality gate failed!")
|
|
441
|
+
|
|
442
|
+
# Print failed principles
|
|
443
|
+
failed_principles = [
|
|
444
|
+
name for name, validation in result.trust5_validation.principles.items()
|
|
445
|
+
if not validation.passed
|
|
446
|
+
]
|
|
447
|
+
|
|
448
|
+
print(f"Failed principles: {', '.join(failed_principles)}")
|
|
449
|
+
|
|
450
|
+
# Exit with error if configured
|
|
451
|
+
if config["fail_on_threshold"]:
|
|
452
|
+
sys.exit(1)
|
|
453
|
+
|
|
454
|
+
print(f" Quality gate passed! Score: {result.overall_score:.2f}")
|
|
455
|
+
|
|
456
|
+
# Create summary for CI/CD dashboard
|
|
457
|
+
summary = {
|
|
458
|
+
"quality_score": result.overall_score,
|
|
459
|
+
"quality_passed": result.trust5_validation.passed,
|
|
460
|
+
"test_coverage": result.trust5_validation.principles["testable"].score,
|
|
461
|
+
"security_score": result.trust5_validation.principles["secured"].score,
|
|
462
|
+
"issues_found": len(result.proactive_analysis.recommendations),
|
|
463
|
+
"critical_issues": len([
|
|
464
|
+
r for r in result.proactive_analysis.recommendations
|
|
465
|
+
if r.severity == "critical"
|
|
466
|
+
])
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
# Save summary for dashboard
|
|
470
|
+
with open("quality-summary.json", "w") as f:
|
|
471
|
+
json.dump(summary, f, indent=2)
|
|
472
|
+
|
|
473
|
+
print(" Quality summary saved to quality-summary.json")
|
|
474
|
+
|
|
475
|
+
if __name__ == "__main__":
|
|
476
|
+
asyncio.run(run_pipeline_quality_check())
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
---
|
|
480
|
+
|
|
481
|
+
## Example 6: Custom Quality Rules and Policies
|
|
482
|
+
|
|
483
|
+
Scenario: Define project-specific quality rules and policies
|
|
484
|
+
|
|
485
|
+
```python
|
|
486
|
+
from moai_core_quality import QualityOrchestrator, CustomQualityRule, QualityPolicy
|
|
487
|
+
|
|
488
|
+
# Define custom quality rules for enterprise project
|
|
489
|
+
class EnterpriseNamingRule(CustomQualityRule):
|
|
490
|
+
"""Enterprise naming convention rule"""
|
|
491
|
+
|
|
492
|
+
def __init__(self):
|
|
493
|
+
super().__init__(
|
|
494
|
+
name="enterprise_naming_conventions",
|
|
495
|
+
description="Enforce enterprise naming standards",
|
|
496
|
+
severity="medium"
|
|
497
|
+
)
|
|
498
|
+
|
|
499
|
+
async def validate(self, codebase: str):
|
|
500
|
+
patterns = {
|
|
501
|
+
"api_endpoints": r"^[a-z]+_[a-z_]+$", # get_user_profile
|
|
502
|
+
"database_models": r"^[A-Z][a-zA-Z]*Model$", # UserProfileModel
|
|
503
|
+
"service_classes": r"^[A-Z][a-zA-Z]*Service$", # UserService
|
|
504
|
+
"constants": r"^[A-Z][A-Z_]*$" # MAX_RETRY_COUNT
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
violations = []
|
|
508
|
+
for pattern_name, pattern in patterns.items():
|
|
509
|
+
pattern_violations = await self._check_pattern(
|
|
510
|
+
codebase, pattern, pattern_name
|
|
511
|
+
)
|
|
512
|
+
violations.extend(pattern_violations)
|
|
513
|
+
|
|
514
|
+
return self.create_result(
|
|
515
|
+
passed=len(violations) == 0,
|
|
516
|
+
details={"violations": violations},
|
|
517
|
+
recommendations=[
|
|
518
|
+
f"Fix {len(violations)} naming convention violations"
|
|
519
|
+
]
|
|
520
|
+
)
|
|
521
|
+
|
|
522
|
+
class SecurityPolicyRule(CustomQualityRule):
|
|
523
|
+
"""Enterprise security policy rule"""
|
|
524
|
+
|
|
525
|
+
def __init__(self):
|
|
526
|
+
super().__init__(
|
|
527
|
+
name="enterprise_security_policy",
|
|
528
|
+
description="Enforce enterprise security standards",
|
|
529
|
+
severity="high"
|
|
530
|
+
)
|
|
531
|
+
|
|
532
|
+
async def validate(self, codebase: str):
|
|
533
|
+
security_violations = []
|
|
534
|
+
|
|
535
|
+
# Check for hardcoded secrets
|
|
536
|
+
secret_violations = await self._detect_hardcoded_secrets(codebase)
|
|
537
|
+
security_violations.extend(secret_violations)
|
|
538
|
+
|
|
539
|
+
# Check for insecure direct object references
|
|
540
|
+
idor_violations = await self._detect_idor_patterns(codebase)
|
|
541
|
+
security_violations.extend(idor_violations)
|
|
542
|
+
|
|
543
|
+
# Check for missing authentication
|
|
544
|
+
auth_violations = await self._detect_missing_auth(codebase)
|
|
545
|
+
security_violations.extend(auth_violations)
|
|
546
|
+
|
|
547
|
+
return self.create_result(
|
|
548
|
+
passed=len(security_violations) == 0,
|
|
549
|
+
details={"security_violations": security_violations},
|
|
550
|
+
recommendations=[
|
|
551
|
+
"Fix security policy violations immediately"
|
|
552
|
+
]
|
|
553
|
+
)
|
|
554
|
+
|
|
555
|
+
# Create enterprise quality policy
|
|
556
|
+
enterprise_policy = QualityPolicy(
|
|
557
|
+
name="enterprise_quality_policy",
|
|
558
|
+
description="Enterprise-grade quality standards",
|
|
559
|
+
custom_rules=[
|
|
560
|
+
EnterpriseNamingRule(),
|
|
561
|
+
SecurityPolicyRule()
|
|
562
|
+
],
|
|
563
|
+
quality_thresholds={
|
|
564
|
+
"overall": 0.90,
|
|
565
|
+
"testable": 0.95,
|
|
566
|
+
"secured": 0.95,
|
|
567
|
+
"readable": 0.85,
|
|
568
|
+
"unified": 0.90,
|
|
569
|
+
"trackable": 0.85
|
|
570
|
+
}
|
|
571
|
+
)
|
|
572
|
+
|
|
573
|
+
# Apply policy to quality analysis
|
|
574
|
+
orchestrator = QualityOrchestrator()
|
|
575
|
+
orchestrator.apply_policy(enterprise_policy)
|
|
576
|
+
|
|
577
|
+
result = await orchestrator.analyze_codebase(
|
|
578
|
+
path="enterprise_app/",
|
|
579
|
+
languages=["python", "typescript"],
|
|
580
|
+
policy=enterprise_policy
|
|
581
|
+
)
|
|
582
|
+
|
|
583
|
+
print(f"Enterprise Quality Score: {result.overall_score:.2f}")
|
|
584
|
+
print(f"Policy Compliance: {' COMPLIANT' if result.policy_compliance.passed else ' NON-COMPLIANT'}")
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
---
|
|
588
|
+
|
|
589
|
+
## Example 7: Technical Debt Analysis and Management
|
|
590
|
+
|
|
591
|
+
Scenario: Analyze and manage technical debt across codebase
|
|
592
|
+
|
|
593
|
+
```python
|
|
594
|
+
from moai_core_quality import TechnicalDebtAnalyzer
|
|
595
|
+
|
|
596
|
+
debt_analyzer = TechnicalDebtAnalyzer(
|
|
597
|
+
context7_integration=True,
|
|
598
|
+
debt_categories=[
|
|
599
|
+
"code_complexity",
|
|
600
|
+
"code_duplication",
|
|
601
|
+
"lack_of_testing",
|
|
602
|
+
"outdated_dependencies",
|
|
603
|
+
"poor_documentation",
|
|
604
|
+
"performance_issues"
|
|
605
|
+
]
|
|
606
|
+
)
|
|
607
|
+
|
|
608
|
+
# Comprehensive technical debt analysis
|
|
609
|
+
debt_analysis = await debt_analyzer.analyze_technical_debt(
|
|
610
|
+
codebase="src/",
|
|
611
|
+
languages=["python", "javascript"],
|
|
612
|
+
include_historical_trends=True
|
|
613
|
+
)
|
|
614
|
+
|
|
615
|
+
print("Technical Debt Analysis")
|
|
616
|
+
print("=" * 40)
|
|
617
|
+
|
|
618
|
+
# Overall debt metrics
|
|
619
|
+
print(f"Total Technical Debt: {debt_analysis.total_debt_hours} hours")
|
|
620
|
+
print(f"Debt Ratio: {debt_analysis.debt_ratio:.2%}")
|
|
621
|
+
print(f"Debt Interest: {debt_analysis.monthly_debt_interest} hours/month")
|
|
622
|
+
|
|
623
|
+
# Debt by category
|
|
624
|
+
print("\n Debt by Category:")
|
|
625
|
+
for category, debt in debt_analysis.debt_by_category.items():
|
|
626
|
+
print(f" {category}: {debt.hours} hours ({debt.percentage:.1f}%)")
|
|
627
|
+
print(f" Files affected: {debt.files_affected}")
|
|
628
|
+
print(f" Priority: {debt.priority}")
|
|
629
|
+
|
|
630
|
+
# Hotspots (files with most debt)
|
|
631
|
+
print("\n Technical Debt Hotspots:")
|
|
632
|
+
for hotspot in debt_analysis.debt_hotspots[:5]:
|
|
633
|
+
print(f" {hotspot.file}: {hotspot.total_debt} hours")
|
|
634
|
+
print(f" Issues: {len(hotspot.issues)}")
|
|
635
|
+
print(f" Main issue: {hotspot.primary_issue.title}")
|
|
636
|
+
|
|
637
|
+
# Debt repayment roadmap
|
|
638
|
+
repayment_plan = await debt_analyzer.create_repayment_plan(
|
|
639
|
+
total_budget=80, # 80 hours per sprint
|
|
640
|
+
priority_strategy="highest_roi"
|
|
641
|
+
)
|
|
642
|
+
|
|
643
|
+
print("\n Debt Repayment Plan:")
|
|
644
|
+
for i, item in enumerate(repayment_plan.items[:10], 1):
|
|
645
|
+
print(f"{i}. {item.title}")
|
|
646
|
+
print(f" Effort: {item.estimated_hours} hours")
|
|
647
|
+
print(f" ROI: {item.roi_score}")
|
|
648
|
+
print(f" Files: {', '.join(item.files)}")
|
|
649
|
+
|
|
650
|
+
# Generate technical debt report
|
|
651
|
+
await debt_analyzer.generate_debt_report(
|
|
652
|
+
analysis=debt_analysis,
|
|
653
|
+
output_path="technical-debt-report.html",
|
|
654
|
+
include_roadmap=True,
|
|
655
|
+
format="html"
|
|
656
|
+
)
|
|
657
|
+
|
|
658
|
+
# Track debt over time
|
|
659
|
+
if debt_analysis.historical_data:
|
|
660
|
+
print("\n Debt Trend:")
|
|
661
|
+
for period in debt_analysis.historical_data[-6:]: # Last 6 periods
|
|
662
|
+
print(f" {period.date}: {period.total_debt} hours")
|
|
663
|
+
```
|
|
664
|
+
|
|
665
|
+
Sample Technical Debt Output:
|
|
666
|
+
```
|
|
667
|
+
Technical Debt Analysis
|
|
668
|
+
========================================
|
|
669
|
+
Total Technical Debt: 245 hours
|
|
670
|
+
Debt Ratio: 12.3%
|
|
671
|
+
Debt Interest: 18 hours/month
|
|
672
|
+
|
|
673
|
+
Debt by Category:
|
|
674
|
+
code_complexity: 78 hours (31.8%)
|
|
675
|
+
Files affected: 23
|
|
676
|
+
Priority: high
|
|
677
|
+
lack_of_testing: 65 hours (26.5%)
|
|
678
|
+
Files affected: 15
|
|
679
|
+
Priority: high
|
|
680
|
+
code_duplication: 42 hours (17.1%)
|
|
681
|
+
Files affected: 8
|
|
682
|
+
Priority: medium
|
|
683
|
+
outdated_dependencies: 35 hours (14.3%)
|
|
684
|
+
Files affected: 12
|
|
685
|
+
Priority: medium
|
|
686
|
+
performance_issues: 25 hours (10.2%)
|
|
687
|
+
Files affected: 6
|
|
688
|
+
Priority: low
|
|
689
|
+
|
|
690
|
+
Technical Debt Hotspots:
|
|
691
|
+
src/services/user_service.py: 45 hours
|
|
692
|
+
Issues: 8
|
|
693
|
+
Main issue: Complex method with high cyclomatic complexity
|
|
694
|
+
src/utils/data_processor.py: 32 hours
|
|
695
|
+
Issues: 5
|
|
696
|
+
Main issue: Duplicate code blocks
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
---
|
|
700
|
+
|
|
701
|
+
## Example 8: Real-time Quality Monitoring
|
|
702
|
+
|
|
703
|
+
Scenario: Set up real-time quality monitoring with alerts
|
|
704
|
+
|
|
705
|
+
```python
|
|
706
|
+
from moai_core_quality import RealTimeQualityMonitor, AlertConfiguration
|
|
707
|
+
|
|
708
|
+
# Configure real-time monitoring
|
|
709
|
+
alert_config = AlertConfiguration(
|
|
710
|
+
webhook_url="https://hooks.slack.com/services/...",
|
|
711
|
+
email_recipients=["dev-team@company.com"],
|
|
712
|
+
alert_thresholds={
|
|
713
|
+
"quality_degradation": 0.05, # 5% drop triggers alert
|
|
714
|
+
"security_score": 0.85,
|
|
715
|
+
"test_coverage": 0.80,
|
|
716
|
+
"critical_vulnerabilities": 0
|
|
717
|
+
},
|
|
718
|
+
notification_channels=["slack", "email", "dashboard"]
|
|
719
|
+
)
|
|
720
|
+
|
|
721
|
+
# Initialize real-time monitor
|
|
722
|
+
quality_monitor = RealTimeQualityMonitor(
|
|
723
|
+
codebase_path="src/",
|
|
724
|
+
check_interval=300, # 5 minutes
|
|
725
|
+
alert_config=alert_config,
|
|
726
|
+
context7_integration=True
|
|
727
|
+
)
|
|
728
|
+
|
|
729
|
+
print(" Starting real-time quality monitoring...")
|
|
730
|
+
|
|
731
|
+
# Start monitoring in background
|
|
732
|
+
import asyncio
|
|
733
|
+
monitoring_task = asyncio.create_task(
|
|
734
|
+
quality_monitor.start_monitoring()
|
|
735
|
+
)
|
|
736
|
+
|
|
737
|
+
try:
|
|
738
|
+
# Monitor for 24 hours
|
|
739
|
+
await asyncio.sleep(86400)
|
|
740
|
+
except KeyboardInterrupt:
|
|
741
|
+
print("\n⏹ Stopping quality monitoring...")
|
|
742
|
+
monitoring_task.cancel()
|
|
743
|
+
await monitoring_task
|
|
744
|
+
|
|
745
|
+
# Generate monitoring report
|
|
746
|
+
monitoring_report = await quality_monitor.generate_monitoring_report(
|
|
747
|
+
duration_hours=24
|
|
748
|
+
)
|
|
749
|
+
|
|
750
|
+
print(f"Monitoring Summary:")
|
|
751
|
+
print(f" Quality checks performed: {monitoring_report.total_checks}")
|
|
752
|
+
print(f" Alerts triggered: {monitoring_report.alerts_triggered}")
|
|
753
|
+
print(f" Average quality score: {monitoring_report.avg_quality_score:.2f}")
|
|
754
|
+
print(f" Quality trends: {monitoring_report.quality_trend}")
|
|
755
|
+
```
|
|
756
|
+
|
|
757
|
+
Custom Alert Handler:
|
|
758
|
+
```python
|
|
759
|
+
class CustomQualityAlertHandler:
|
|
760
|
+
"""Custom handler for quality alerts"""
|
|
761
|
+
|
|
762
|
+
def __init__(self, slack_webhook: str, jira_api: str):
|
|
763
|
+
self.slack_webhook = slack_webhook
|
|
764
|
+
self.jira_api = jira_api
|
|
765
|
+
|
|
766
|
+
async def handle_quality_alert(self, alert: QualityAlert):
|
|
767
|
+
"""Handle quality alerts with custom logic"""
|
|
768
|
+
|
|
769
|
+
# Create JIRA ticket for critical issues
|
|
770
|
+
if alert.severity == "critical":
|
|
771
|
+
jira_ticket = await self.create_jira_ticket(alert)
|
|
772
|
+
print(f" Created JIRA ticket: {jira_ticket}")
|
|
773
|
+
|
|
774
|
+
# Send Slack notification with rich formatting
|
|
775
|
+
slack_message = self.format_slack_message(alert)
|
|
776
|
+
await self.send_slack_notification(slack_message)
|
|
777
|
+
|
|
778
|
+
# Log to quality dashboard
|
|
779
|
+
await self.log_to_dashboard(alert)
|
|
780
|
+
|
|
781
|
+
def format_slack_message(self, alert: QualityAlert) -> dict:
|
|
782
|
+
"""Format alert for Slack notification"""
|
|
783
|
+
|
|
784
|
+
colors = {
|
|
785
|
+
"critical": "#ff0000",
|
|
786
|
+
"high": "#ff9900",
|
|
787
|
+
"medium": "#ffff00",
|
|
788
|
+
"low": "#00ff00"
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
return {
|
|
792
|
+
"attachments": [{
|
|
793
|
+
"color": colors.get(alert.severity, "#808080"),
|
|
794
|
+
"title": f" Quality Alert: {alert.title}",
|
|
795
|
+
"text": alert.description,
|
|
796
|
+
"fields": [
|
|
797
|
+
{"title": "Severity", "value": alert.severity.upper(), "short": True},
|
|
798
|
+
{"title": "Quality Score", "value": f"{alert.current_score:.2f}", "short": True},
|
|
799
|
+
{"title": "File", "value": alert.location, "short": True}
|
|
800
|
+
],
|
|
801
|
+
"footer": "Quality Monitor",
|
|
802
|
+
"ts": alert.timestamp.timestamp()
|
|
803
|
+
}]
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
# Register custom alert handler
|
|
807
|
+
quality_monitor.register_alert_handler(
|
|
808
|
+
CustomQualityAlertHandler(
|
|
809
|
+
slack_webhook="...",
|
|
810
|
+
jira_api="..."
|
|
811
|
+
)
|
|
812
|
+
)
|
|
813
|
+
```
|
|
814
|
+
|
|
815
|
+
---
|
|
816
|
+
|
|
817
|
+
## Example 9: Quality Benchmarking and Comparison
|
|
818
|
+
|
|
819
|
+
Scenario: Benchmark project quality against industry standards
|
|
820
|
+
|
|
821
|
+
```python
|
|
822
|
+
from moai_core_quality import QualityBenchmarking
|
|
823
|
+
|
|
824
|
+
# Initialize benchmarking service
|
|
825
|
+
benchmarking = QualityBenchmarking(
|
|
826
|
+
industry_database="enterprise_web_apps",
|
|
827
|
+
comparison_criteria=["project_size", "team_size", "industry"]
|
|
828
|
+
)
|
|
829
|
+
|
|
830
|
+
# Analyze current project quality
|
|
831
|
+
project_metadata = {
|
|
832
|
+
"language": ["python", "typescript"],
|
|
833
|
+
"project_type": "web_application",
|
|
834
|
+
"team_size": 8,
|
|
835
|
+
"industry": "fintech",
|
|
836
|
+
"lines_of_code": 50000
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
benchmark_result = await benchmarking.benchmark_project(
|
|
840
|
+
codebase="src/",
|
|
841
|
+
project_metadata=project_metadata
|
|
842
|
+
)
|
|
843
|
+
|
|
844
|
+
print(" Quality Benchmarking Results")
|
|
845
|
+
print("=" * 40)
|
|
846
|
+
|
|
847
|
+
# Current project metrics
|
|
848
|
+
print(f"Current Project Quality Score: {benchmark_result.project_metrics.overall_score:.2f}")
|
|
849
|
+
|
|
850
|
+
# Industry comparison
|
|
851
|
+
print(f"\n Industry Percentiles:")
|
|
852
|
+
for metric, percentile in benchmark_result.industry_percentiles.items():
|
|
853
|
+
percentile_emoji = "" if percentile >= 90 else "" if percentile >= 75 else "" if percentile >= 50 else ""
|
|
854
|
+
print(f" {percentile_emoji} {metric}: {percentile}th percentile")
|
|
855
|
+
|
|
856
|
+
# Competitive analysis
|
|
857
|
+
print(f"\n Competitive Position:")
|
|
858
|
+
competitive_pos = benchmark_result.competitive_analysis
|
|
859
|
+
print(f" Overall Rank: {competitive_pos.overall_rank}/100")
|
|
860
|
+
print(f" Top Quartile: {'' if competitive_pos.is_top_quartile else ''}")
|
|
861
|
+
print(f" Industry Leader: {'' if competitive_pos.is_industry_leader else ''}")
|
|
862
|
+
|
|
863
|
+
# Improvement roadmap based on top performers
|
|
864
|
+
print(f"\n Improvement Roadmap:")
|
|
865
|
+
for i, recommendation in enumerate(benchmark_result.improvement_roadmap[:5], 1):
|
|
866
|
+
print(f"{i}. {recommendation.area}")
|
|
867
|
+
print(f" Target: {recommendation.target_score}")
|
|
868
|
+
print(f" Top Performer Score: {recommendation.top_performer_score}")
|
|
869
|
+
print(f" Key Actions: {', '.join(recommendation.key_actions[:3])}")
|
|
870
|
+
|
|
871
|
+
# Generate comprehensive benchmark report
|
|
872
|
+
await benchmarking.generate_benchmark_report(
|
|
873
|
+
result=benchmark_result,
|
|
874
|
+
output_path="quality-benchmark.html",
|
|
875
|
+
include_industry_trends=True,
|
|
876
|
+
format="html"
|
|
877
|
+
)
|
|
878
|
+
```
|
|
879
|
+
|
|
880
|
+
---
|
|
881
|
+
|
|
882
|
+
## Example 10: Automated Code Refactoring Suggestions
|
|
883
|
+
|
|
884
|
+
Scenario: Generate and apply automated refactoring suggestions
|
|
885
|
+
|
|
886
|
+
```python
|
|
887
|
+
from moai_core_quality import RefactoringSuggester
|
|
888
|
+
|
|
889
|
+
refactoring_engine = RefactoringSuggester(
|
|
890
|
+
auto_apply_safe_refactors=True,
|
|
891
|
+
context7_integration=True,
|
|
892
|
+
backup_before_changes=True
|
|
893
|
+
)
|
|
894
|
+
|
|
895
|
+
# Analyze code for refactoring opportunities
|
|
896
|
+
refactoring_opportunities = await refactoring_engine.analyze_refactoring_opportunities(
|
|
897
|
+
codebase="src/",
|
|
898
|
+
languages=["python"],
|
|
899
|
+
focus_areas=[
|
|
900
|
+
"code_duplication",
|
|
901
|
+
"long_methods",
|
|
902
|
+
"large_classes",
|
|
903
|
+
"complex_conditionals",
|
|
904
|
+
"magic_numbers",
|
|
905
|
+
"unused_variables"
|
|
906
|
+
]
|
|
907
|
+
)
|
|
908
|
+
|
|
909
|
+
print(" Refactoring Opportunities Analysis")
|
|
910
|
+
print("=" * 45)
|
|
911
|
+
|
|
912
|
+
# Group opportunities by type and priority
|
|
913
|
+
opportunity_groups = refactoring_engine.group_opportunities(
|
|
914
|
+
refactoring_opportunities
|
|
915
|
+
)
|
|
916
|
+
|
|
917
|
+
for category, opportunities in opportunity_groups.items():
|
|
918
|
+
print(f"\n {category.title()}:")
|
|
919
|
+
|
|
920
|
+
high_priority = [opp for opp in opportunities if opp.priority == "high"]
|
|
921
|
+
medium_priority = [opp for opp in opportunities if opp.priority == "medium"]
|
|
922
|
+
|
|
923
|
+
if high_priority:
|
|
924
|
+
print(f" High Priority ({len(high_priority)}):")
|
|
925
|
+
for opp in high_priority[:3]: # Show top 3
|
|
926
|
+
print(f" - {opp.description}")
|
|
927
|
+
print(f" File: {opp.file}:{opp.line}")
|
|
928
|
+
print(f" Effort: {opp.estimated_effort} minutes")
|
|
929
|
+
print(f" Impact: {opp.estimated_impact}")
|
|
930
|
+
|
|
931
|
+
if medium_priority:
|
|
932
|
+
print(f" 🟡 Medium Priority ({len(medium_priority)}):")
|
|
933
|
+
for opp in medium_priority[:3]:
|
|
934
|
+
print(f" - {opp.description}")
|
|
935
|
+
|
|
936
|
+
# Generate refactoring plan
|
|
937
|
+
refactoring_plan = await refactoring_engine.create_refactoring_plan(
|
|
938
|
+
opportunities=refactoring_opportunities,
|
|
939
|
+
budget_hours=8, # 8 hours allocated for refactoring
|
|
940
|
+
risk_tolerance="medium"
|
|
941
|
+
)
|
|
942
|
+
|
|
943
|
+
print(f"\n Refactoring Plan:")
|
|
944
|
+
print(f"Total planned refactors: {len(refactoring_plan.planned_refactors)}")
|
|
945
|
+
print(f"Estimated time: {refactoring_plan.total_estimated_hours} hours")
|
|
946
|
+
print(f"Expected quality improvement: +{refactoring_plan.quality_improvement:.2f}")
|
|
947
|
+
|
|
948
|
+
# Apply safe refactoring automatically
|
|
949
|
+
safe_refactors = [
|
|
950
|
+
opp for opp in refactoring_opportunities
|
|
951
|
+
if opp.risk_level == "low" and opp.auto_safe
|
|
952
|
+
]
|
|
953
|
+
|
|
954
|
+
if safe_refactors:
|
|
955
|
+
print(f"\n Applying {len(safe_refactors)} safe refactoring operations...")
|
|
956
|
+
|
|
957
|
+
applied_refactors = await refactoring_engine.apply_refactoring(
|
|
958
|
+
refactors=safe_refactors,
|
|
959
|
+
create_backup=True,
|
|
960
|
+
dry_run=False
|
|
961
|
+
)
|
|
962
|
+
|
|
963
|
+
print(f"Successfully applied {len(applied_refactors)} refactoring operations:")
|
|
964
|
+
|
|
965
|
+
for refactor in applied_refactors:
|
|
966
|
+
print(f" {refactor.description}")
|
|
967
|
+
print(f" File: {refactor.file}")
|
|
968
|
+
print(f" Lines changed: {refactor.lines_changed}")
|
|
969
|
+
else:
|
|
970
|
+
print("\n No safe automatic refactoring opportunities found")
|
|
971
|
+
|
|
972
|
+
# Generate before/after quality comparison
|
|
973
|
+
if safe_refactors:
|
|
974
|
+
quality_comparison = await refactoring_engine.compare_quality(
|
|
975
|
+
before_path="src/",
|
|
976
|
+
after_path="src/", # Same path after refactoring
|
|
977
|
+
refactors=applied_refactors
|
|
978
|
+
)
|
|
979
|
+
|
|
980
|
+
print(f"\n Quality Impact:")
|
|
981
|
+
print(f"Before: {quality_comparison.before_score:.2f}")
|
|
982
|
+
print(f"After: {quality_comparison.after_score:.2f}")
|
|
983
|
+
print(f"Improvement: +{quality_comparison.improvement:.2f}")
|
|
984
|
+
```
|
|
985
|
+
|
|
986
|
+
---
|
|
987
|
+
|
|
988
|
+
## Example 11: Quality Metrics Dashboard
|
|
989
|
+
|
|
990
|
+
Scenario: Create comprehensive quality metrics dashboard
|
|
991
|
+
|
|
992
|
+
```python
|
|
993
|
+
from moai_core_quality import QualityDashboard, MetricsCollector
|
|
994
|
+
|
|
995
|
+
# Initialize metrics collector
|
|
996
|
+
metrics_collector = MetricsCollector(
|
|
997
|
+
collection_interval=3600, # 1 hour
|
|
998
|
+
historical_retention_days=90
|
|
999
|
+
)
|
|
1000
|
+
|
|
1001
|
+
# Collect comprehensive quality metrics
|
|
1002
|
+
metrics_data = await metrics_collector.collect_comprehensive_metrics(
|
|
1003
|
+
codebase="src/",
|
|
1004
|
+
languages=["python", "typescript"],
|
|
1005
|
+
include_historical_trends=True
|
|
1006
|
+
)
|
|
1007
|
+
|
|
1008
|
+
# Create quality dashboard
|
|
1009
|
+
dashboard = QualityDashboard(
|
|
1010
|
+
title="Enterprise Quality Dashboard",
|
|
1011
|
+
refresh_interval=300, # 5 minutes
|
|
1012
|
+
theme="enterprise"
|
|
1013
|
+
)
|
|
1014
|
+
|
|
1015
|
+
# Configure dashboard widgets
|
|
1016
|
+
dashboard.add_widget(
|
|
1017
|
+
widget_type="overview",
|
|
1018
|
+
title="Quality Overview",
|
|
1019
|
+
metrics=["overall_score", "test_coverage", "security_score"],
|
|
1020
|
+
visualization="gauge"
|
|
1021
|
+
)
|
|
1022
|
+
|
|
1023
|
+
dashboard.add_widget(
|
|
1024
|
+
widget_type="trend",
|
|
1025
|
+
title="Quality Trend (30 days)",
|
|
1026
|
+
metrics=["overall_score"],
|
|
1027
|
+
visualization="line_chart",
|
|
1028
|
+
time_range="30d"
|
|
1029
|
+
)
|
|
1030
|
+
|
|
1031
|
+
dashboard.add_widget(
|
|
1032
|
+
widget_type="distribution",
|
|
1033
|
+
title="Issues by Severity",
|
|
1034
|
+
metrics=["issue_count"],
|
|
1035
|
+
group_by="severity",
|
|
1036
|
+
visualization="pie_chart"
|
|
1037
|
+
)
|
|
1038
|
+
|
|
1039
|
+
dashboard.add_widget(
|
|
1040
|
+
widget_type="comparison",
|
|
1041
|
+
title="Language Comparison",
|
|
1042
|
+
metrics=["quality_score"],
|
|
1043
|
+
group_by="language",
|
|
1044
|
+
visualization="bar_chart"
|
|
1045
|
+
)
|
|
1046
|
+
|
|
1047
|
+
dashboard.add_widget(
|
|
1048
|
+
widget_type="hotspot",
|
|
1049
|
+
title="Quality Hotspots",
|
|
1050
|
+
metrics=["issue_density"],
|
|
1051
|
+
visualization="heatmap"
|
|
1052
|
+
)
|
|
1053
|
+
|
|
1054
|
+
# Generate dashboard HTML
|
|
1055
|
+
dashboard_html = await dashboard.generate_dashboard(
|
|
1056
|
+
metrics_data=metrics_data,
|
|
1057
|
+
output_path="quality-dashboard.html",
|
|
1058
|
+
interactive=True
|
|
1059
|
+
)
|
|
1060
|
+
|
|
1061
|
+
print(" Quality Dashboard Generated:")
|
|
1062
|
+
print(f" Location: quality-dashboard.html")
|
|
1063
|
+
print(f" Widgets: {len(dashboard.widgets)}")
|
|
1064
|
+
print(f" Metrics tracked: {len(metrics_data.metrics)}")
|
|
1065
|
+
print(f" Time range: 30 days")
|
|
1066
|
+
```
|
|
1067
|
+
|
|
1068
|
+
Dashboard Widget Examples:
|
|
1069
|
+
```python
|
|
1070
|
+
# Custom widget for executive summary
|
|
1071
|
+
executive_widget = {
|
|
1072
|
+
"type": "executive_summary",
|
|
1073
|
+
"title": "Executive Quality Summary",
|
|
1074
|
+
"metrics": {
|
|
1075
|
+
"overall_health": "excellent", # Based on score ranges
|
|
1076
|
+
"trend": "improving",
|
|
1077
|
+
"critical_issues": 2,
|
|
1078
|
+
"technical_debt_hours": 125,
|
|
1079
|
+
"quality_investment_roi": "3.2x"
|
|
1080
|
+
},
|
|
1081
|
+
"alerts": [
|
|
1082
|
+
{"type": "warning", "message": "Test coverage decreased by 3%"},
|
|
1083
|
+
{"type": "info", "message": "New security policies implemented"}
|
|
1084
|
+
]
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1087
|
+
# Real-time widget for live monitoring
|
|
1088
|
+
live_monitoring_widget = {
|
|
1089
|
+
"type": "real_time_monitor",
|
|
1090
|
+
"title": "Live Quality Monitoring",
|
|
1091
|
+
"refresh_rate": 60, # seconds
|
|
1092
|
+
"metrics": [
|
|
1093
|
+
{"name": "active_developers", "current": 8},
|
|
1094
|
+
{"name": "commits_today", "current": 15},
|
|
1095
|
+
{"name": "quality_checks_passed", "current": 142},
|
|
1096
|
+
{"name": "quality_checks_failed", "current": 3}
|
|
1097
|
+
]
|
|
1098
|
+
}
|
|
1099
|
+
```
|
|
1100
|
+
|
|
1101
|
+
---
|
|
1102
|
+
|
|
1103
|
+
## Example 12: Enterprise Quality Governance
|
|
1104
|
+
|
|
1105
|
+
Scenario: Implement enterprise-wide quality governance policies
|
|
1106
|
+
|
|
1107
|
+
```python
|
|
1108
|
+
from moai_core_quality import EnterpriseQualityGovernance, QualityPolicy, ComplianceReporter
|
|
1109
|
+
|
|
1110
|
+
# Define enterprise quality governance framework
|
|
1111
|
+
governance = EnterpriseQualityGovernance(
|
|
1112
|
+
organization_name="Acme Corporation",
|
|
1113
|
+
quality_standards="ISO/IEC 25010",
|
|
1114
|
+
compliance_requirements=["SOC2", "GDPR", "OWASP"]
|
|
1115
|
+
)
|
|
1116
|
+
|
|
1117
|
+
# Define quality policies for different project tiers
|
|
1118
|
+
policies = {
|
|
1119
|
+
"critical": QualityPolicy(
|
|
1120
|
+
name="Critical Systems Policy",
|
|
1121
|
+
quality_threshold=0.95,
|
|
1122
|
+
mandatory_requirements=[
|
|
1123
|
+
"100% test coverage for critical paths",
|
|
1124
|
+
"Zero critical security vulnerabilities",
|
|
1125
|
+
"Code review by senior architect",
|
|
1126
|
+
"Performance testing with 99.9% SLA"
|
|
1127
|
+
],
|
|
1128
|
+
approved_tools=["sonarqube", "coveralls", "snyk"],
|
|
1129
|
+
audit_frequency="weekly"
|
|
1130
|
+
),
|
|
1131
|
+
|
|
1132
|
+
"standard": QualityPolicy(
|
|
1133
|
+
name="Standard Systems Policy",
|
|
1134
|
+
quality_threshold=0.85,
|
|
1135
|
+
mandatory_requirements=[
|
|
1136
|
+
"85% test coverage",
|
|
1137
|
+
"No critical security vulnerabilities",
|
|
1138
|
+
"Code review by peer",
|
|
1139
|
+
"Basic performance testing"
|
|
1140
|
+
],
|
|
1141
|
+
approved_tools=["eslint", "pytest", "bandit"],
|
|
1142
|
+
audit_frequency="monthly"
|
|
1143
|
+
),
|
|
1144
|
+
|
|
1145
|
+
"internal": QualityPolicy(
|
|
1146
|
+
name="Internal Tools Policy",
|
|
1147
|
+
quality_threshold=0.75,
|
|
1148
|
+
mandatory_requirements=[
|
|
1149
|
+
"70% test coverage",
|
|
1150
|
+
"Basic security review",
|
|
1151
|
+
"Documentation required"
|
|
1152
|
+
],
|
|
1153
|
+
approved_tools=["pylint", "black"],
|
|
1154
|
+
audit_frequency="quarterly"
|
|
1155
|
+
)
|
|
1156
|
+
}
|
|
1157
|
+
|
|
1158
|
+
# Register policies with governance framework
|
|
1159
|
+
for tier, policy in policies.items():
|
|
1160
|
+
governance.register_policy(tier, policy)
|
|
1161
|
+
|
|
1162
|
+
# Project classification and policy application
|
|
1163
|
+
projects = [
|
|
1164
|
+
{"name": "payment-processor", "tier": "critical", "path": "src/payment/"},
|
|
1165
|
+
{"name": "user-dashboard", "tier": "standard", "path": "src/dashboard/"},
|
|
1166
|
+
{"name": "internal-tools", "tier": "internal", "path": "src/tools/"}
|
|
1167
|
+
]
|
|
1168
|
+
|
|
1169
|
+
compliance_results = []
|
|
1170
|
+
|
|
1171
|
+
for project in projects:
|
|
1172
|
+
# Apply appropriate policy
|
|
1173
|
+
policy = governance.get_policy_for_tier(project["tier"])
|
|
1174
|
+
|
|
1175
|
+
# Check compliance
|
|
1176
|
+
compliance_check = await governance.check_compliance(
|
|
1177
|
+
codebase=project["path"],
|
|
1178
|
+
policy=policy,
|
|
1179
|
+
generate_report=True
|
|
1180
|
+
)
|
|
1181
|
+
|
|
1182
|
+
compliance_results.append({
|
|
1183
|
+
"project": project["name"],
|
|
1184
|
+
"tier": project["tier"],
|
|
1185
|
+
"compliant": compliance_check.is_compliant,
|
|
1186
|
+
"score": compliance_check.quality_score,
|
|
1187
|
+
"violations": compliance_check.policy_violations,
|
|
1188
|
+
"remediation_plan": compliance_check.remediation_plan
|
|
1189
|
+
})
|
|
1190
|
+
|
|
1191
|
+
print(f"\n {project['name']} ({project['tier'].upper()}):")
|
|
1192
|
+
print(f" Compliance: {' COMPLIANT' if compliance_check.is_compliant else ' NON-COMPLIANT'}")
|
|
1193
|
+
print(f" Quality Score: {compliance_check.quality_score:.2f}")
|
|
1194
|
+
print(f" Policy Threshold: {policy.quality_threshold}")
|
|
1195
|
+
|
|
1196
|
+
if not compliance_check.is_compliant:
|
|
1197
|
+
print(f" Violations: {len(compliance_check.policy_violations)}")
|
|
1198
|
+
for violation in compliance_check.policy_violations[:3]:
|
|
1199
|
+
print(f" - {violation.requirement}: {violation.status}")
|
|
1200
|
+
|
|
1201
|
+
# Generate enterprise compliance report
|
|
1202
|
+
compliance_reporter = ComplianceReporter()
|
|
1203
|
+
enterprise_report = await compliance_reporter.generate_enterprise_report(
|
|
1204
|
+
compliance_results=compliance_results,
|
|
1205
|
+
governance_framework=governance,
|
|
1206
|
+
output_path="enterprise-compliance-report.html",
|
|
1207
|
+
include_executive_summary=True
|
|
1208
|
+
)
|
|
1209
|
+
|
|
1210
|
+
print(f"\n Enterprise Compliance Summary:")
|
|
1211
|
+
total_projects = len(compliance_results)
|
|
1212
|
+
compliant_projects = sum(1 for r in compliance_results if r["compliant"])
|
|
1213
|
+
compliance_rate = (compliant_projects / total_projects) * 100
|
|
1214
|
+
|
|
1215
|
+
print(f" Total Projects: {total_projects}")
|
|
1216
|
+
print(f" Compliant Projects: {compliant_projects}")
|
|
1217
|
+
print(f" Overall Compliance Rate: {compliance_rate:.1f}%")
|
|
1218
|
+
print(f" Report Generated: enterprise-compliance-report.html")
|
|
1219
|
+
|
|
1220
|
+
# Schedule regular compliance audits
|
|
1221
|
+
await governance.schedule_compliance_audits(
|
|
1222
|
+
frequency="monthly",
|
|
1223
|
+
notification_channels=["email", "slack"],
|
|
1224
|
+
auto_remediation=False
|
|
1225
|
+
)
|
|
1226
|
+
|
|
1227
|
+
print(" Monthly compliance audits scheduled")
|
|
1228
|
+
```
|
|
1229
|
+
|
|
1230
|
+
---
|
|
1231
|
+
|
|
1232
|
+
These examples demonstrate the comprehensive capabilities of the moai-foundation-quality skill across various enterprise scenarios, from basic quality validation to complex governance frameworks. Each example includes practical implementation details, output samples, and integration patterns suitable for production environments.
|