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,1266 @@
|
|
|
1
|
+
# Enterprise Code Quality Reference
|
|
2
|
+
|
|
3
|
+
Complete API reference and technical documentation for the moai-foundation-quality skill.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
|
|
9
|
+
1. [Core Classes](#core-classes)
|
|
10
|
+
2. [TRUST 5 Framework](#trust-5-framework)
|
|
11
|
+
3. [Quality Analysis APIs](#quality-analysis-apis)
|
|
12
|
+
4. [Proactive Analysis](#proactive-analysis)
|
|
13
|
+
5. [Best Practices Engine](#best-practices-engine)
|
|
14
|
+
6. [Configuration Reference](#configuration-reference)
|
|
15
|
+
7. [Context7 Integration](#context7-integration)
|
|
16
|
+
8. [Quality Metrics](#quality-metrics)
|
|
17
|
+
9. [Integration APIs](#integration-apis)
|
|
18
|
+
10. [Error Handling](#error-handling)
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Core Classes
|
|
23
|
+
|
|
24
|
+
### QualityOrchestrator
|
|
25
|
+
|
|
26
|
+
Main orchestrator class for enterprise code quality management.
|
|
27
|
+
|
|
28
|
+
```python
|
|
29
|
+
class QualityOrchestrator:
|
|
30
|
+
"""Enterprise quality orchestration engine"""
|
|
31
|
+
|
|
32
|
+
def __init__(self, config: Optional[QualityConfig] = None):
|
|
33
|
+
self.config = config or QualityConfig.default()
|
|
34
|
+
self.trust5_validator = TRUST5Validator()
|
|
35
|
+
self.proactive_scanner = ProactiveScanner()
|
|
36
|
+
self.best_practices_engine = BestPracticesEngine()
|
|
37
|
+
self.context7_client = Context7Client()
|
|
38
|
+
self.metrics_collector = QualityMetricsCollector()
|
|
39
|
+
|
|
40
|
+
async def analyze_codebase(
|
|
41
|
+
self,
|
|
42
|
+
path: str,
|
|
43
|
+
languages: List[str],
|
|
44
|
+
quality_threshold: float = 0.85,
|
|
45
|
+
focus_areas: Optional[List[str]] = None
|
|
46
|
+
) -> QualityResult:
|
|
47
|
+
"""
|
|
48
|
+
Comprehensive codebase quality analysis
|
|
49
|
+
|
|
50
|
+
Args:
|
|
51
|
+
path: Path to codebase directory
|
|
52
|
+
languages: List of programming languages
|
|
53
|
+
quality_threshold: Minimum acceptable quality score
|
|
54
|
+
focus_areas: Specific areas to focus analysis on
|
|
55
|
+
|
|
56
|
+
Returns:
|
|
57
|
+
QualityResult: Comprehensive quality analysis results
|
|
58
|
+
|
|
59
|
+
Example:
|
|
60
|
+
orchestrator = QualityOrchestrator()
|
|
61
|
+
result = await orchestrator.analyze_codebase(
|
|
62
|
+
path="src/",
|
|
63
|
+
languages=["python", "typescript"],
|
|
64
|
+
quality_threshold=0.90
|
|
65
|
+
)
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
async def generate_report(
|
|
69
|
+
self,
|
|
70
|
+
result: QualityResult,
|
|
71
|
+
output_path: str,
|
|
72
|
+
format: str = "html"
|
|
73
|
+
) -> None:
|
|
74
|
+
"""
|
|
75
|
+
Generate comprehensive quality report
|
|
76
|
+
|
|
77
|
+
Args:
|
|
78
|
+
result: Quality analysis results
|
|
79
|
+
output_path: Output file path
|
|
80
|
+
format: Report format (html, pdf, json, sarif)
|
|
81
|
+
"""
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### QualityConfig
|
|
85
|
+
|
|
86
|
+
Configuration class for quality analysis settings.
|
|
87
|
+
|
|
88
|
+
```python
|
|
89
|
+
@dataclass
|
|
90
|
+
class QualityConfig:
|
|
91
|
+
"""Configuration for quality analysis"""
|
|
92
|
+
|
|
93
|
+
# Core settings
|
|
94
|
+
trust5_enabled: bool = True
|
|
95
|
+
proactive_analysis: bool = True
|
|
96
|
+
best_practices_enforcement: bool = True
|
|
97
|
+
context7_integration: bool = True
|
|
98
|
+
|
|
99
|
+
# Quality thresholds
|
|
100
|
+
quality_threshold: float = 0.85
|
|
101
|
+
test_coverage_threshold: float = 0.85
|
|
102
|
+
security_threshold: float = 0.90
|
|
103
|
+
complexity_threshold: int = 10
|
|
104
|
+
|
|
105
|
+
# Analysis settings
|
|
106
|
+
languages: List[str] = field(default_factory=lambda: ["python", "javascript"])
|
|
107
|
+
focus_areas: List[str] = field(default_factory=lambda: [
|
|
108
|
+
"security", "performance", "maintainability", "testing"
|
|
109
|
+
])
|
|
110
|
+
|
|
111
|
+
# Output settings
|
|
112
|
+
generate_reports: bool = True
|
|
113
|
+
output_formats: List[str] = field(default_factory=lambda: ["html", "json"])
|
|
114
|
+
output_directory: str = ".moai/reports/quality"
|
|
115
|
+
|
|
116
|
+
@classmethod
|
|
117
|
+
def default(cls) -> "QualityConfig:
|
|
118
|
+
"""Create default configuration"""
|
|
119
|
+
return cls()
|
|
120
|
+
|
|
121
|
+
@classmethod
|
|
122
|
+
def from_file(cls, config_path: str) -> "QualityConfig:
|
|
123
|
+
"""Load configuration from file"""
|
|
124
|
+
with open(config_path) as f:
|
|
125
|
+
data = yaml.safe_load(f)
|
|
126
|
+
return cls(data)
|
|
127
|
+
|
|
128
|
+
def to_dict(self) -> Dict:
|
|
129
|
+
"""Convert configuration to dictionary"""
|
|
130
|
+
return asdict(self)
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## TRUST 5 Framework
|
|
136
|
+
|
|
137
|
+
### TRUST5Validator
|
|
138
|
+
|
|
139
|
+
Comprehensive validation framework implementing TRUST 5 principles.
|
|
140
|
+
|
|
141
|
+
```python
|
|
142
|
+
class TRUST5Validator:
|
|
143
|
+
"""TRUST 5 quality framework validator"""
|
|
144
|
+
|
|
145
|
+
VALIDATORS = {
|
|
146
|
+
"testable": TestableValidator(),
|
|
147
|
+
"readable": ReadableValidator(),
|
|
148
|
+
"unified": UnifiedValidator(),
|
|
149
|
+
"secured": SecuredValidator(),
|
|
150
|
+
"trackable": TrackableValidator()
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
async def validate(
|
|
154
|
+
self,
|
|
155
|
+
codebase: str,
|
|
156
|
+
thresholds: Optional[Dict[str, float]] = None
|
|
157
|
+
) -> TRUST5Result:
|
|
158
|
+
"""
|
|
159
|
+
Validate codebase against TRUST 5 principles
|
|
160
|
+
|
|
161
|
+
Args:
|
|
162
|
+
codebase: Path to codebase
|
|
163
|
+
thresholds: Custom thresholds for each principle
|
|
164
|
+
|
|
165
|
+
Returns:
|
|
166
|
+
TRUST5Result: Comprehensive validation results
|
|
167
|
+
|
|
168
|
+
Example:
|
|
169
|
+
validator = TRUST5Validator()
|
|
170
|
+
result = await validator.validate(
|
|
171
|
+
codebase="src/",
|
|
172
|
+
thresholds={
|
|
173
|
+
"testable": 0.90,
|
|
174
|
+
"secured": 0.95,
|
|
175
|
+
"overall": 0.85
|
|
176
|
+
}
|
|
177
|
+
)
|
|
178
|
+
"""
|
|
179
|
+
|
|
180
|
+
async def validate_principle(
|
|
181
|
+
self,
|
|
182
|
+
principle: str,
|
|
183
|
+
codebase: str,
|
|
184
|
+
threshold: float
|
|
185
|
+
) -> ValidationResult:
|
|
186
|
+
"""Validate specific TRUST 5 principle"""
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### Principle Validators
|
|
190
|
+
|
|
191
|
+
#### TestableValidator
|
|
192
|
+
|
|
193
|
+
```python
|
|
194
|
+
class TestableValidator:
|
|
195
|
+
"""Test-first principle validation"""
|
|
196
|
+
|
|
197
|
+
async def validate(
|
|
198
|
+
self,
|
|
199
|
+
codebase: str,
|
|
200
|
+
threshold: float = 0.85
|
|
201
|
+
) -> ValidationResult:
|
|
202
|
+
"""Validate test coverage and quality"""
|
|
203
|
+
|
|
204
|
+
async def _analyze_test_coverage(self, codebase: str) -> CoverageResult:
|
|
205
|
+
"""Analyze test coverage metrics"""
|
|
206
|
+
|
|
207
|
+
async def _analyze_test_quality(self, codebase: str) -> TestQualityResult:
|
|
208
|
+
"""Analyze test quality and effectiveness"""
|
|
209
|
+
|
|
210
|
+
async def _validate_test_structure(self, codebase: str) -> StructureResult:
|
|
211
|
+
"""Validate test structure and organization"""
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
#### SecuredValidator
|
|
215
|
+
|
|
216
|
+
```python
|
|
217
|
+
class SecuredValidator:
|
|
218
|
+
"""Security principle validation with OWASP compliance"""
|
|
219
|
+
|
|
220
|
+
async def validate(
|
|
221
|
+
self,
|
|
222
|
+
codebase: str,
|
|
223
|
+
threshold: float = 0.90
|
|
224
|
+
) -> ValidationResult:
|
|
225
|
+
"""Validate security compliance"""
|
|
226
|
+
|
|
227
|
+
async def _validate_owasp_compliance(self, codebase: str) -> OWASPResult:
|
|
228
|
+
"""Validate OWASP Top 10 compliance"""
|
|
229
|
+
|
|
230
|
+
async def _scan_dependency_vulnerabilities(self, codebase: str) -> DependencyResult:
|
|
231
|
+
"""Scan for dependency vulnerabilities"""
|
|
232
|
+
|
|
233
|
+
async def _analyze_code_security(self, codebase: str) -> CodeSecurityResult:
|
|
234
|
+
"""Analyze code-level security patterns"""
|
|
235
|
+
|
|
236
|
+
def _calculate_security_level(self, score: float) -> str:
|
|
237
|
+
"""Calculate security level based on score"""
|
|
238
|
+
if score >= 0.95:
|
|
239
|
+
return "excellent"
|
|
240
|
+
elif score >= 0.85:
|
|
241
|
+
return "good"
|
|
242
|
+
elif score >= 0.70:
|
|
243
|
+
return "adequate"
|
|
244
|
+
else:
|
|
245
|
+
return "inadequate"
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## Quality Analysis APIs
|
|
251
|
+
|
|
252
|
+
### ProactiveScanner
|
|
253
|
+
|
|
254
|
+
```python
|
|
255
|
+
class ProactiveScanner:
|
|
256
|
+
"""Proactive code quality issue detection"""
|
|
257
|
+
|
|
258
|
+
SCAN_TYPES = [
|
|
259
|
+
"performance",
|
|
260
|
+
"maintainability",
|
|
261
|
+
"security",
|
|
262
|
+
"duplication",
|
|
263
|
+
"technical_debt",
|
|
264
|
+
"complexity"
|
|
265
|
+
]
|
|
266
|
+
|
|
267
|
+
async def scan(
|
|
268
|
+
self,
|
|
269
|
+
codebase: str,
|
|
270
|
+
focus_areas: List[str],
|
|
271
|
+
severity_filter: Optional[str] = None
|
|
272
|
+
) -> ProactiveResult:
|
|
273
|
+
"""
|
|
274
|
+
Scan codebase for quality issues
|
|
275
|
+
|
|
276
|
+
Args:
|
|
277
|
+
codebase: Path to codebase
|
|
278
|
+
focus_areas: Areas to focus on
|
|
279
|
+
severity_filter: Filter by severity level
|
|
280
|
+
|
|
281
|
+
Returns:
|
|
282
|
+
ProactiveResult: Scan results with recommendations
|
|
283
|
+
"""
|
|
284
|
+
|
|
285
|
+
async def scan_performance_issues(self, codebase: str) -> PerformanceResult:
|
|
286
|
+
"""Scan for performance-related issues"""
|
|
287
|
+
|
|
288
|
+
async def scan_maintainability_issues(self, codebase: str) -> MaintainabilityResult:
|
|
289
|
+
"""Scan for maintainability issues"""
|
|
290
|
+
|
|
291
|
+
async def scan_security_issues(self, codebase: str) -> SecurityScanResult:
|
|
292
|
+
"""Scan for security vulnerabilities"""
|
|
293
|
+
|
|
294
|
+
async def scan_code_duplication(self, codebase: str) -> DuplicationResult:
|
|
295
|
+
"""Scan for code duplication"""
|
|
296
|
+
|
|
297
|
+
async def analyze_technical_debt(self, codebase: str) -> TechnicalDebtResult:
|
|
298
|
+
"""Analyze technical debt"""
|
|
299
|
+
|
|
300
|
+
async def analyze_complexity(self, codebase: str) -> ComplexityResult:
|
|
301
|
+
"""Analyze code complexity"""
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### QualityMetricsCollector
|
|
305
|
+
|
|
306
|
+
```python
|
|
307
|
+
class QualityMetricsCollector:
|
|
308
|
+
"""Comprehensive quality metrics collection"""
|
|
309
|
+
|
|
310
|
+
METRIC_CATEGORIES = [
|
|
311
|
+
"code_quality",
|
|
312
|
+
"test_metrics",
|
|
313
|
+
"security_metrics",
|
|
314
|
+
"performance_metrics",
|
|
315
|
+
"maintainability_metrics"
|
|
316
|
+
]
|
|
317
|
+
|
|
318
|
+
async def collect_comprehensive_metrics(
|
|
319
|
+
self,
|
|
320
|
+
codebase: str,
|
|
321
|
+
languages: List[str]
|
|
322
|
+
) -> QualityMetrics:
|
|
323
|
+
"""Collect all quality metrics"""
|
|
324
|
+
|
|
325
|
+
async def collect_code_quality_metrics(
|
|
326
|
+
self,
|
|
327
|
+
codebase: str
|
|
328
|
+
) -> CodeQualityMetrics:
|
|
329
|
+
"""Collect code quality specific metrics"""
|
|
330
|
+
|
|
331
|
+
async def collect_test_metrics(self, codebase: str) -> TestMetrics:
|
|
332
|
+
"""Collect testing metrics"""
|
|
333
|
+
|
|
334
|
+
async def collect_security_metrics(self, codebase: str) -> SecurityMetrics:
|
|
335
|
+
"""Collect security metrics"""
|
|
336
|
+
|
|
337
|
+
def calculate_quality_trend(
|
|
338
|
+
self,
|
|
339
|
+
historical_metrics: List[QualityMetrics]
|
|
340
|
+
) -> QualityTrend:
|
|
341
|
+
"""Calculate quality trends from historical data"""
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
---
|
|
345
|
+
|
|
346
|
+
## Best Practices Engine
|
|
347
|
+
|
|
348
|
+
### BestPracticesEngine
|
|
349
|
+
|
|
350
|
+
```python
|
|
351
|
+
class BestPracticesEngine:
|
|
352
|
+
"""Context7-powered best practices validation"""
|
|
353
|
+
|
|
354
|
+
def __init__(self, context7_client: Context7Client):
|
|
355
|
+
self.context7_client = context7_client
|
|
356
|
+
self.language_rules = self._load_language_rules()
|
|
357
|
+
self.practice_validators = self._initialize_validators()
|
|
358
|
+
|
|
359
|
+
async def validate(
|
|
360
|
+
self,
|
|
361
|
+
codebase: str,
|
|
362
|
+
languages: List[str],
|
|
363
|
+
context7_docs: bool = True
|
|
364
|
+
) -> PracticesResult:
|
|
365
|
+
"""
|
|
366
|
+
Validate coding best practices
|
|
367
|
+
|
|
368
|
+
Args:
|
|
369
|
+
codebase: Path to codebase
|
|
370
|
+
languages: List of programming languages
|
|
371
|
+
context7_docs: Whether to use Context7 documentation
|
|
372
|
+
|
|
373
|
+
Returns:
|
|
374
|
+
PracticesResult: Best practices validation results
|
|
375
|
+
"""
|
|
376
|
+
|
|
377
|
+
async def validate_language_practices(
|
|
378
|
+
self,
|
|
379
|
+
codebase: str,
|
|
380
|
+
language: str
|
|
381
|
+
) -> LanguageValidationResult:
|
|
382
|
+
"""Validate language-specific best practices"""
|
|
383
|
+
|
|
384
|
+
async def validate_cross_language_practices(
|
|
385
|
+
self,
|
|
386
|
+
codebase: str
|
|
387
|
+
) -> CrossLanguageResult:
|
|
388
|
+
"""Validate cross-language consistency"""
|
|
389
|
+
|
|
390
|
+
async def _validate_against_latest_standards(
|
|
391
|
+
self,
|
|
392
|
+
codebase: str,
|
|
393
|
+
language: str,
|
|
394
|
+
latest_docs: str
|
|
395
|
+
) -> LanguageValidationResult:
|
|
396
|
+
"""Validate against latest standards from Context7"""
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
### Language-Specific Validators
|
|
400
|
+
|
|
401
|
+
```python
|
|
402
|
+
class PythonPracticesValidator:
|
|
403
|
+
"""Python-specific best practices validation"""
|
|
404
|
+
|
|
405
|
+
PRACTICES = [
|
|
406
|
+
"pep8_compliance",
|
|
407
|
+
"type_hints",
|
|
408
|
+
"docstring_conventions",
|
|
409
|
+
"import_organization",
|
|
410
|
+
"exception_handling",
|
|
411
|
+
"testing_patterns"
|
|
412
|
+
]
|
|
413
|
+
|
|
414
|
+
async def validate_naming_conventions(
|
|
415
|
+
self,
|
|
416
|
+
codebase: str
|
|
417
|
+
) -> NamingValidationResult:
|
|
418
|
+
"""Validate Python naming conventions"""
|
|
419
|
+
|
|
420
|
+
async def validate_docstring_standards(
|
|
421
|
+
self,
|
|
422
|
+
codebase: str
|
|
423
|
+
) -> DocstringValidationResult:
|
|
424
|
+
"""Validate docstring standards"""
|
|
425
|
+
|
|
426
|
+
async def validate_type_hints_usage(
|
|
427
|
+
self,
|
|
428
|
+
codebase: str
|
|
429
|
+
) -> TypeHintsValidationResult:
|
|
430
|
+
"""Validate type hints usage"""
|
|
431
|
+
|
|
432
|
+
class TypeScriptPracticesValidator:
|
|
433
|
+
"""TypeScript-specific best practices validation"""
|
|
434
|
+
|
|
435
|
+
PRACTICES = [
|
|
436
|
+
"typescript_strict_mode",
|
|
437
|
+
"interface_definitions",
|
|
438
|
+
"error_handling",
|
|
439
|
+
"async_patterns",
|
|
440
|
+
"module_organization"
|
|
441
|
+
]
|
|
442
|
+
|
|
443
|
+
async def validate_typescript_practices(
|
|
444
|
+
self,
|
|
445
|
+
codebase: str
|
|
446
|
+
) -> TypeScriptValidationResult:
|
|
447
|
+
"""Validate TypeScript best practices"""
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
---
|
|
451
|
+
|
|
452
|
+
## Configuration Reference
|
|
453
|
+
|
|
454
|
+
### Quality Thresholds
|
|
455
|
+
|
|
456
|
+
```python
|
|
457
|
+
QUALITY_THRESHOLDS = {
|
|
458
|
+
"overall_quality": {
|
|
459
|
+
"excellent": 0.90,
|
|
460
|
+
"good": 0.80,
|
|
461
|
+
"adequate": 0.70,
|
|
462
|
+
"minimum": 0.60
|
|
463
|
+
},
|
|
464
|
+
"test_coverage": {
|
|
465
|
+
"excellent": 0.95,
|
|
466
|
+
"good": 0.85,
|
|
467
|
+
"adequate": 0.75,
|
|
468
|
+
"minimum": 0.65
|
|
469
|
+
},
|
|
470
|
+
"security_score": {
|
|
471
|
+
"excellent": 0.95,
|
|
472
|
+
"good": 0.85,
|
|
473
|
+
"adequate": 0.75,
|
|
474
|
+
"minimum": 0.65
|
|
475
|
+
},
|
|
476
|
+
"maintainability": {
|
|
477
|
+
"excellent": 0.90,
|
|
478
|
+
"good": 0.80,
|
|
479
|
+
"adequate": 0.70,
|
|
480
|
+
"minimum": 0.60
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
### Language Configurations
|
|
486
|
+
|
|
487
|
+
```python
|
|
488
|
+
LANGUAGE_CONFIGURATIONS = {
|
|
489
|
+
"python": {
|
|
490
|
+
"style_guide": "pep8",
|
|
491
|
+
"linter": "ruff",
|
|
492
|
+
"formatter": "black",
|
|
493
|
+
"type_checker": "mypy",
|
|
494
|
+
"test_framework": "pytest",
|
|
495
|
+
"security_tools": ["bandit", "safety"],
|
|
496
|
+
"extensions": [".py"],
|
|
497
|
+
"ignore_patterns": ["__pycache__", "*.pyc", ".venv"]
|
|
498
|
+
},
|
|
499
|
+
"typescript": {
|
|
500
|
+
"style_guide": "google",
|
|
501
|
+
"linter": "eslint",
|
|
502
|
+
"formatter": "prettier",
|
|
503
|
+
"type_checker": "tsc",
|
|
504
|
+
"test_framework": "jest",
|
|
505
|
+
"security_tools": ["tslint-security"],
|
|
506
|
+
"extensions": [".ts", ".tsx"],
|
|
507
|
+
"ignore_patterns": ["node_modules", "dist", "build"]
|
|
508
|
+
},
|
|
509
|
+
"javascript": {
|
|
510
|
+
"style_guide": "airbnb",
|
|
511
|
+
"linter": "eslint",
|
|
512
|
+
"formatter": "prettier",
|
|
513
|
+
"test_framework": "jest",
|
|
514
|
+
"security_tools": ["eslint-plugin-security"],
|
|
515
|
+
"extensions": [".js", ".jsx"],
|
|
516
|
+
"ignore_patterns": ["node_modules", "dist", "build"]
|
|
517
|
+
},
|
|
518
|
+
"go": {
|
|
519
|
+
"style_guide": "gofmt",
|
|
520
|
+
"linter": "golangci-lint",
|
|
521
|
+
"formatter": "gofmt",
|
|
522
|
+
"test_framework": "go test",
|
|
523
|
+
"security_tools": ["gosec"],
|
|
524
|
+
"extensions": [".go"],
|
|
525
|
+
"ignore_patterns": ["vendor"]
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
### Analysis Focus Areas
|
|
531
|
+
|
|
532
|
+
```python
|
|
533
|
+
FOCUS_AREA_CONFIGURATIONS = {
|
|
534
|
+
"security": {
|
|
535
|
+
"enabled": True,
|
|
536
|
+
"severity_threshold": "medium",
|
|
537
|
+
"tools": ["bandit", "safety", "snyk"],
|
|
538
|
+
"owasp_categories": [
|
|
539
|
+
"A01: Broken Access Control",
|
|
540
|
+
"A02: Cryptographic Failures",
|
|
541
|
+
"A03: Injection",
|
|
542
|
+
"A04: Insecure Design",
|
|
543
|
+
"A05: Security Misconfiguration"
|
|
544
|
+
]
|
|
545
|
+
},
|
|
546
|
+
"performance": {
|
|
547
|
+
"enabled": True,
|
|
548
|
+
"severity_threshold": "medium",
|
|
549
|
+
"analysis_types": [
|
|
550
|
+
"algorithm_complexity",
|
|
551
|
+
"database_queries",
|
|
552
|
+
"memory_usage",
|
|
553
|
+
"concurrency_issues"
|
|
554
|
+
]
|
|
555
|
+
},
|
|
556
|
+
"maintainability": {
|
|
557
|
+
"enabled": True,
|
|
558
|
+
"severity_threshold": "low",
|
|
559
|
+
"metrics": [
|
|
560
|
+
"cyclomatic_complexity",
|
|
561
|
+
"code_duplication",
|
|
562
|
+
"method_length",
|
|
563
|
+
"class_size"
|
|
564
|
+
]
|
|
565
|
+
},
|
|
566
|
+
"testing": {
|
|
567
|
+
"enabled": True,
|
|
568
|
+
"severity_threshold": "medium",
|
|
569
|
+
"requirements": [
|
|
570
|
+
"unit_test_coverage",
|
|
571
|
+
"integration_tests",
|
|
572
|
+
"test_quality",
|
|
573
|
+
"test_structure"
|
|
574
|
+
]
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
```
|
|
578
|
+
|
|
579
|
+
---
|
|
580
|
+
|
|
581
|
+
## Context7 Integration
|
|
582
|
+
|
|
583
|
+
### Context7Client
|
|
584
|
+
|
|
585
|
+
```python
|
|
586
|
+
class Context7Client:
|
|
587
|
+
"""Context7 MCP client for real-time documentation access"""
|
|
588
|
+
|
|
589
|
+
def __init__(self, cache_ttl: int = 3600):
|
|
590
|
+
self.cache = {}
|
|
591
|
+
self.cache_ttl = cache_ttl
|
|
592
|
+
self.client = None
|
|
593
|
+
|
|
594
|
+
async def resolve_library_id(
|
|
595
|
+
self,
|
|
596
|
+
library_name: str
|
|
597
|
+
) -> str:
|
|
598
|
+
"""
|
|
599
|
+
Resolve library name to Context7 ID
|
|
600
|
+
|
|
601
|
+
Args:
|
|
602
|
+
library_name: Name of the library
|
|
603
|
+
|
|
604
|
+
Returns:
|
|
605
|
+
str: Context7-compatible library ID
|
|
606
|
+
|
|
607
|
+
Example:
|
|
608
|
+
client = Context7Client()
|
|
609
|
+
library_id = await client.resolve_library_id("react")
|
|
610
|
+
# Returns: "/facebook/react"
|
|
611
|
+
"""
|
|
612
|
+
|
|
613
|
+
async def get_library_docs(
|
|
614
|
+
self,
|
|
615
|
+
context7CompatibleLibraryID: str,
|
|
616
|
+
topic: str = "best-practices",
|
|
617
|
+
tokens: int = 5000
|
|
618
|
+
) -> str:
|
|
619
|
+
"""
|
|
620
|
+
Get latest documentation from Context7
|
|
621
|
+
|
|
622
|
+
Args:
|
|
623
|
+
context7CompatibleLibraryID: Library ID from resolve_library_id
|
|
624
|
+
topic: Specific topic to focus on
|
|
625
|
+
tokens: Maximum tokens to retrieve
|
|
626
|
+
|
|
627
|
+
Returns:
|
|
628
|
+
str: Documentation content
|
|
629
|
+
"""
|
|
630
|
+
|
|
631
|
+
async def get_best_practices(
|
|
632
|
+
self,
|
|
633
|
+
language: str,
|
|
634
|
+
framework: Optional[str] = None
|
|
635
|
+
) -> str:
|
|
636
|
+
"""Get latest best practices for language/framework"""
|
|
637
|
+
|
|
638
|
+
async def get_security_guidelines(
|
|
639
|
+
self,
|
|
640
|
+
language: str
|
|
641
|
+
) -> str:
|
|
642
|
+
"""Get latest security guidelines"""
|
|
643
|
+
|
|
644
|
+
async def get_performance_patterns(
|
|
645
|
+
self,
|
|
646
|
+
language: str
|
|
647
|
+
) -> str:
|
|
648
|
+
"""Get latest performance optimization patterns"""
|
|
649
|
+
```
|
|
650
|
+
|
|
651
|
+
### Library Mappings
|
|
652
|
+
|
|
653
|
+
```python
|
|
654
|
+
CONTEXT7_LIBRARY_MAPPINGS = {
|
|
655
|
+
# Frontend Libraries
|
|
656
|
+
"react": "/facebook/react",
|
|
657
|
+
"vue": "/vuejs/vue",
|
|
658
|
+
"angular": "/angular/angular",
|
|
659
|
+
"typescript": "/microsoft/TypeScript",
|
|
660
|
+
"javascript": "/nodejs/node",
|
|
661
|
+
"eslint": "/eslint/eslint",
|
|
662
|
+
"prettier": "/prettier/prettier",
|
|
663
|
+
|
|
664
|
+
# Backend Libraries
|
|
665
|
+
"python": "/python/cpython",
|
|
666
|
+
"fastapi": "/tiangolo/fastapi",
|
|
667
|
+
"django": "/django/django",
|
|
668
|
+
"flask": "/pallets/flask",
|
|
669
|
+
"express": "/expressjs/express",
|
|
670
|
+
"nestjs": "/nestjs/nest",
|
|
671
|
+
|
|
672
|
+
# Database Libraries
|
|
673
|
+
"postgresql": "/postgresql/postgres",
|
|
674
|
+
"mongodb": "/mongodb/mongo",
|
|
675
|
+
"redis": "/redis/redis",
|
|
676
|
+
"prisma": "/prisma/prisma",
|
|
677
|
+
"sequelize": "/sequelize/sequelize",
|
|
678
|
+
|
|
679
|
+
# Testing Libraries
|
|
680
|
+
"jest": "/facebook/jest",
|
|
681
|
+
"pytest": "/pytest-dev/pytest",
|
|
682
|
+
"mocha": "/mochajs/mocha",
|
|
683
|
+
"junit": "/junit-team/junit5",
|
|
684
|
+
"cypress": "/cypress-io/cypress",
|
|
685
|
+
|
|
686
|
+
# Security Libraries
|
|
687
|
+
"owasp": "/owasp/owasp-top-ten",
|
|
688
|
+
"bandit": "/PyCQA/bandit",
|
|
689
|
+
"snyk": "/snyk/snyk",
|
|
690
|
+
"sonarqube": "/SonarSource/sonarqube",
|
|
691
|
+
|
|
692
|
+
# Development Tools
|
|
693
|
+
"black": "/psf/black",
|
|
694
|
+
"ruff": "/astral-sh/ruff",
|
|
695
|
+
"mypy": "/python/mypy",
|
|
696
|
+
"pylint": "/pylint-dev/pylint",
|
|
697
|
+
"golangci-lint": "/golangci/golangci-lint"
|
|
698
|
+
}
|
|
699
|
+
```
|
|
700
|
+
|
|
701
|
+
---
|
|
702
|
+
|
|
703
|
+
## Quality Metrics
|
|
704
|
+
|
|
705
|
+
### Core Quality Metrics
|
|
706
|
+
|
|
707
|
+
```python
|
|
708
|
+
@dataclass
|
|
709
|
+
class QualityMetrics:
|
|
710
|
+
"""Comprehensive quality metrics"""
|
|
711
|
+
|
|
712
|
+
# Overall metrics
|
|
713
|
+
overall_score: float
|
|
714
|
+
quality_grade: str # A, B, C, D, F
|
|
715
|
+
trend_direction: str # improving, declining, stable
|
|
716
|
+
|
|
717
|
+
# TRUST 5 metrics
|
|
718
|
+
testable_score: float
|
|
719
|
+
readable_score: float
|
|
720
|
+
unified_score: float
|
|
721
|
+
secured_score: float
|
|
722
|
+
trackable_score: float
|
|
723
|
+
|
|
724
|
+
# Coverage metrics
|
|
725
|
+
test_coverage: float
|
|
726
|
+
branch_coverage: float
|
|
727
|
+
line_coverage: float
|
|
728
|
+
|
|
729
|
+
# Complexity metrics
|
|
730
|
+
cyclomatic_complexity: float
|
|
731
|
+
cognitive_complexity: float
|
|
732
|
+
maintainability_index: float
|
|
733
|
+
|
|
734
|
+
# Security metrics
|
|
735
|
+
security_score: float
|
|
736
|
+
vulnerability_count: int
|
|
737
|
+
critical_vulnerabilities: int
|
|
738
|
+
|
|
739
|
+
# Performance metrics
|
|
740
|
+
performance_score: float
|
|
741
|
+
performance_issues: int
|
|
742
|
+
bottlenecks: List[str]
|
|
743
|
+
|
|
744
|
+
# Technical debt metrics
|
|
745
|
+
technical_debt_hours: float
|
|
746
|
+
debt_ratio: float
|
|
747
|
+
debt_interest_rate: float
|
|
748
|
+
|
|
749
|
+
# Code metrics
|
|
750
|
+
lines_of_code: int
|
|
751
|
+
duplicated_lines: int
|
|
752
|
+
code_duplication_percentage: float
|
|
753
|
+
|
|
754
|
+
def calculate_quality_grade(self) -> str:
|
|
755
|
+
"""Calculate letter grade from overall score"""
|
|
756
|
+
if self.overall_score >= 0.90:
|
|
757
|
+
return "A"
|
|
758
|
+
elif self.overall_score >= 0.80:
|
|
759
|
+
return "B"
|
|
760
|
+
elif self.overall_score >= 0.70:
|
|
761
|
+
return "C"
|
|
762
|
+
elif self.overall_score >= 0.60:
|
|
763
|
+
return "D"
|
|
764
|
+
else:
|
|
765
|
+
return "F"
|
|
766
|
+
|
|
767
|
+
def is_production_ready(self) -> bool:
|
|
768
|
+
"""Determine if code is production ready"""
|
|
769
|
+
return (
|
|
770
|
+
self.overall_score >= 0.85 and
|
|
771
|
+
self.test_coverage >= 0.80 and
|
|
772
|
+
self.critical_vulnerabilities == 0 and
|
|
773
|
+
self.security_score >= 0.85
|
|
774
|
+
)
|
|
775
|
+
```
|
|
776
|
+
|
|
777
|
+
### Detailed Metrics Breakdown
|
|
778
|
+
|
|
779
|
+
```python
|
|
780
|
+
@dataclass
|
|
781
|
+
class TestMetrics:
|
|
782
|
+
"""Detailed testing metrics"""
|
|
783
|
+
|
|
784
|
+
# Coverage metrics
|
|
785
|
+
line_coverage: float
|
|
786
|
+
branch_coverage: float
|
|
787
|
+
function_coverage: float
|
|
788
|
+
statement_coverage: float
|
|
789
|
+
|
|
790
|
+
# Test quality metrics
|
|
791
|
+
test_count: int
|
|
792
|
+
passing_tests: int
|
|
793
|
+
failing_tests: int
|
|
794
|
+
skipped_tests: int
|
|
795
|
+
test_success_rate: float
|
|
796
|
+
|
|
797
|
+
# Test type distribution
|
|
798
|
+
unit_test_count: int
|
|
799
|
+
integration_test_count: int
|
|
800
|
+
end_to_end_test_count: int
|
|
801
|
+
performance_test_count: int
|
|
802
|
+
|
|
803
|
+
# Test complexity
|
|
804
|
+
average_test_length: float
|
|
805
|
+
complex_tests: int
|
|
806
|
+
flaky_tests: int
|
|
807
|
+
|
|
808
|
+
@dataclass
|
|
809
|
+
class SecurityMetrics:
|
|
810
|
+
"""Detailed security metrics"""
|
|
811
|
+
|
|
812
|
+
# Vulnerability metrics
|
|
813
|
+
total_vulnerabilities: int
|
|
814
|
+
critical_vulnerabilities: int
|
|
815
|
+
high_vulnerabilities: int
|
|
816
|
+
medium_vulnerabilities: int
|
|
817
|
+
low_vulnerabilities: int
|
|
818
|
+
|
|
819
|
+
# OWASP Top 10 compliance
|
|
820
|
+
owasp_compliance_score: float
|
|
821
|
+
owasp_violations: Dict[str, int]
|
|
822
|
+
|
|
823
|
+
# Security practices
|
|
824
|
+
secure_coding_score: float
|
|
825
|
+
dependency_vulnerabilities: int
|
|
826
|
+
hardcoded_secrets: int
|
|
827
|
+
insecure_configs: int
|
|
828
|
+
|
|
829
|
+
@dataclass
|
|
830
|
+
class PerformanceMetrics:
|
|
831
|
+
"""Detailed performance metrics"""
|
|
832
|
+
|
|
833
|
+
# Algorithm performance
|
|
834
|
+
algorithm_efficiency_score: float
|
|
835
|
+
time_complexity_violations: int
|
|
836
|
+
space_complexity_violations: int
|
|
837
|
+
|
|
838
|
+
# Database performance
|
|
839
|
+
query_efficiency_score: float
|
|
840
|
+
n_plus_one_queries: int
|
|
841
|
+
missing_indexes: int
|
|
842
|
+
slow_queries: int
|
|
843
|
+
|
|
844
|
+
# Memory performance
|
|
845
|
+
memory_efficiency_score: float
|
|
846
|
+
memory_leaks: int
|
|
847
|
+
high_memory_usage: int
|
|
848
|
+
|
|
849
|
+
# Concurrency performance
|
|
850
|
+
concurrency_score: float
|
|
851
|
+
race_conditions: int
|
|
852
|
+
deadlocks: int
|
|
853
|
+
resource_contention: int
|
|
854
|
+
```
|
|
855
|
+
|
|
856
|
+
---
|
|
857
|
+
|
|
858
|
+
## Integration APIs
|
|
859
|
+
|
|
860
|
+
### CI/CD Integration
|
|
861
|
+
|
|
862
|
+
```python
|
|
863
|
+
class CIIntegration:
|
|
864
|
+
"""CI/CD pipeline integration"""
|
|
865
|
+
|
|
866
|
+
async def generate_pipeline_outputs(
|
|
867
|
+
self,
|
|
868
|
+
result: QualityResult,
|
|
869
|
+
output_dir: str,
|
|
870
|
+
formats: List[str]
|
|
871
|
+
) -> None:
|
|
872
|
+
"""Generate outputs for CI/CD pipelines"""
|
|
873
|
+
|
|
874
|
+
async def generate_junit_xml(
|
|
875
|
+
self,
|
|
876
|
+
result: QualityResult,
|
|
877
|
+
output_path: str
|
|
878
|
+
) -> None:
|
|
879
|
+
"""Generate JUnit XML for test results"""
|
|
880
|
+
|
|
881
|
+
async def generate_sarif_report(
|
|
882
|
+
self,
|
|
883
|
+
result: QualityResult,
|
|
884
|
+
output_path: str
|
|
885
|
+
) -> None:
|
|
886
|
+
"""Generate SARIF report for GitHub Actions"""
|
|
887
|
+
|
|
888
|
+
async def generate_quality_badge(
|
|
889
|
+
self,
|
|
890
|
+
score: float,
|
|
891
|
+
output_path: str
|
|
892
|
+
) -> None:
|
|
893
|
+
"""Generate quality badge for README"""
|
|
894
|
+
|
|
895
|
+
def get_exit_code(
|
|
896
|
+
self,
|
|
897
|
+
result: QualityResult,
|
|
898
|
+
threshold: float
|
|
899
|
+
) -> int:
|
|
900
|
+
"""Determine appropriate exit code for CI/CD"""
|
|
901
|
+
```
|
|
902
|
+
|
|
903
|
+
### REST API Integration
|
|
904
|
+
|
|
905
|
+
```python
|
|
906
|
+
from fastapi import FastAPI, HTTPException
|
|
907
|
+
from pydantic import BaseModel
|
|
908
|
+
|
|
909
|
+
class QualityAnalysisRequest(BaseModel):
|
|
910
|
+
repository_url: str
|
|
911
|
+
branch: str = "main"
|
|
912
|
+
languages: List[str]
|
|
913
|
+
quality_threshold: float = 0.85
|
|
914
|
+
focus_areas: List[str] = []
|
|
915
|
+
|
|
916
|
+
class QualityAnalysisResponse(BaseModel):
|
|
917
|
+
analysis_id: str
|
|
918
|
+
overall_score: float
|
|
919
|
+
quality_grade: str
|
|
920
|
+
trust5_validation: Dict[str, Any]
|
|
921
|
+
recommendations: List[Dict[str, Any]]
|
|
922
|
+
analysis_duration: float
|
|
923
|
+
timestamp: datetime
|
|
924
|
+
|
|
925
|
+
app = FastAPI(title="Code Quality Analysis API")
|
|
926
|
+
|
|
927
|
+
@app.post("/api/quality/analyze", response_model=QualityAnalysisResponse)
|
|
928
|
+
async def analyze_quality(request: QualityAnalysisRequest):
|
|
929
|
+
"""API endpoint for quality analysis"""
|
|
930
|
+
|
|
931
|
+
@app.get("/api/quality/result/{analysis_id}")
|
|
932
|
+
async def get_analysis_result(analysis_id: str):
|
|
933
|
+
"""Get analysis result by ID"""
|
|
934
|
+
|
|
935
|
+
@app.post("/api/quality/webhook")
|
|
936
|
+
async def quality_webhook(payload: Dict):
|
|
937
|
+
"""Handle quality alerts via webhook"""
|
|
938
|
+
```
|
|
939
|
+
|
|
940
|
+
### Dashboard Integration
|
|
941
|
+
|
|
942
|
+
```python
|
|
943
|
+
class QualityDashboard:
|
|
944
|
+
"""Quality metrics dashboard integration"""
|
|
945
|
+
|
|
946
|
+
async def generate_dashboard_data(
|
|
947
|
+
self,
|
|
948
|
+
historical_data: List[QualityMetrics]
|
|
949
|
+
) -> DashboardData:
|
|
950
|
+
"""Generate data for quality dashboard"""
|
|
951
|
+
|
|
952
|
+
async def create_executive_summary(
|
|
953
|
+
self,
|
|
954
|
+
results: List[QualityResult]
|
|
955
|
+
) -> ExecutiveSummary:
|
|
956
|
+
"""Create executive summary of quality metrics"""
|
|
957
|
+
|
|
958
|
+
async def generate_trend_analysis(
|
|
959
|
+
self,
|
|
960
|
+
time_range: str,
|
|
961
|
+
project_filter: Optional[str] = None
|
|
962
|
+
) -> TrendAnalysis:
|
|
963
|
+
"""Generate quality trend analysis"""
|
|
964
|
+
|
|
965
|
+
def create_alert_config(
|
|
966
|
+
self,
|
|
967
|
+
thresholds: Dict[str, float],
|
|
968
|
+
notification_channels: List[str]
|
|
969
|
+
) -> AlertConfig:
|
|
970
|
+
"""Create alert configuration for monitoring"""
|
|
971
|
+
```
|
|
972
|
+
|
|
973
|
+
---
|
|
974
|
+
|
|
975
|
+
## Error Handling
|
|
976
|
+
|
|
977
|
+
### Exception Classes
|
|
978
|
+
|
|
979
|
+
```python
|
|
980
|
+
class QualityAnalysisError(Exception):
|
|
981
|
+
"""Base exception for quality analysis errors"""
|
|
982
|
+
pass
|
|
983
|
+
|
|
984
|
+
class Context7IntegrationError(QualityAnalysisError):
|
|
985
|
+
"""Context7 integration errors"""
|
|
986
|
+
pass
|
|
987
|
+
|
|
988
|
+
class QualityThresholdError(QualityAnalysisError):
|
|
989
|
+
"""Quality threshold validation errors"""
|
|
990
|
+
pass
|
|
991
|
+
|
|
992
|
+
class ValidationError(QualityAnalysisError):
|
|
993
|
+
"""Validation process errors"""
|
|
994
|
+
pass
|
|
995
|
+
|
|
996
|
+
class MetricsCollectionError(QualityAnalysisError):
|
|
997
|
+
"""Metrics collection errors"""
|
|
998
|
+
pass
|
|
999
|
+
|
|
1000
|
+
class ReportGenerationError(QualityAnalysisError):
|
|
1001
|
+
"""Report generation errors"""
|
|
1002
|
+
pass
|
|
1003
|
+
```
|
|
1004
|
+
|
|
1005
|
+
### Error Recovery
|
|
1006
|
+
|
|
1007
|
+
```python
|
|
1008
|
+
class ErrorRecoveryManager:
|
|
1009
|
+
"""Error recovery and retry management"""
|
|
1010
|
+
|
|
1011
|
+
def __init__(self, max_retries: int = 3):
|
|
1012
|
+
self.max_retries = max_retries
|
|
1013
|
+
self.retry_strategies = {
|
|
1014
|
+
"context7_timeout": self._retry_context7_request,
|
|
1015
|
+
"file_access_error": self._retry_file_operation,
|
|
1016
|
+
"network_error": self._retry_network_request,
|
|
1017
|
+
"validation_error": self._retry_validation
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
async def handle_error(
|
|
1021
|
+
self,
|
|
1022
|
+
error: Exception,
|
|
1023
|
+
context: Dict[str, Any]
|
|
1024
|
+
) -> ErrorRecoveryResult:
|
|
1025
|
+
"""Handle and recover from errors"""
|
|
1026
|
+
|
|
1027
|
+
async def _retry_context7_request(
|
|
1028
|
+
self,
|
|
1029
|
+
request_func: Callable,
|
|
1030
|
+
*args,
|
|
1031
|
+
kwargs
|
|
1032
|
+
) -> Any:
|
|
1033
|
+
"""Retry Context7 request with exponential backoff"""
|
|
1034
|
+
|
|
1035
|
+
async def _retry_file_operation(
|
|
1036
|
+
self,
|
|
1037
|
+
file_operation: Callable,
|
|
1038
|
+
*args,
|
|
1039
|
+
kwargs
|
|
1040
|
+
) -> Any:
|
|
1041
|
+
"""Retry file operation"""
|
|
1042
|
+
|
|
1043
|
+
def create_fallback_strategy(
|
|
1044
|
+
self,
|
|
1045
|
+
primary_operation: str
|
|
1046
|
+
) -> Callable:
|
|
1047
|
+
"""Create fallback strategy for failed operations"""
|
|
1048
|
+
```
|
|
1049
|
+
|
|
1050
|
+
### Logging and Monitoring
|
|
1051
|
+
|
|
1052
|
+
```python
|
|
1053
|
+
class QualityAnalysisLogger:
|
|
1054
|
+
"""Structured logging for quality analysis"""
|
|
1055
|
+
|
|
1056
|
+
def __init__(self, log_level: str = "INFO"):
|
|
1057
|
+
self.logger = self._setup_logger(log_level)
|
|
1058
|
+
|
|
1059
|
+
def log_analysis_start(
|
|
1060
|
+
self,
|
|
1061
|
+
codebase: str,
|
|
1062
|
+
languages: List[str],
|
|
1063
|
+
config: QualityConfig
|
|
1064
|
+
) -> None:
|
|
1065
|
+
"""Log analysis start"""
|
|
1066
|
+
|
|
1067
|
+
def log_analysis_completion(
|
|
1068
|
+
self,
|
|
1069
|
+
result: QualityResult,
|
|
1070
|
+
duration: float
|
|
1071
|
+
) -> None:
|
|
1072
|
+
"""Log analysis completion"""
|
|
1073
|
+
|
|
1074
|
+
def log_error(
|
|
1075
|
+
self,
|
|
1076
|
+
error: Exception,
|
|
1077
|
+
context: Dict[str, Any]
|
|
1078
|
+
) -> None:
|
|
1079
|
+
"""Log error with context"""
|
|
1080
|
+
|
|
1081
|
+
def log_performance_metrics(
|
|
1082
|
+
self,
|
|
1083
|
+
metrics: Dict[str, float]
|
|
1084
|
+
) -> None:
|
|
1085
|
+
"""Log performance metrics"""
|
|
1086
|
+
|
|
1087
|
+
def log_quality_trend(
|
|
1088
|
+
self,
|
|
1089
|
+
current_score: float,
|
|
1090
|
+
previous_score: float,
|
|
1091
|
+
time_period: str
|
|
1092
|
+
) -> None:
|
|
1093
|
+
"""Log quality trend information"""
|
|
1094
|
+
```
|
|
1095
|
+
|
|
1096
|
+
---
|
|
1097
|
+
|
|
1098
|
+
## Data Models
|
|
1099
|
+
|
|
1100
|
+
### Result Models
|
|
1101
|
+
|
|
1102
|
+
```python
|
|
1103
|
+
@dataclass
|
|
1104
|
+
class QualityResult:
|
|
1105
|
+
"""Comprehensive quality analysis result"""
|
|
1106
|
+
|
|
1107
|
+
trust5_validation: TRUST5Result
|
|
1108
|
+
proactive_analysis: ProactiveResult
|
|
1109
|
+
best_practices: PracticesResult
|
|
1110
|
+
metrics: QualityMetrics
|
|
1111
|
+
overall_score: float
|
|
1112
|
+
analysis_metadata: AnalysisMetadata
|
|
1113
|
+
|
|
1114
|
+
def is_passed(self, threshold: float = 0.85) -> bool:
|
|
1115
|
+
"""Check if quality gate passed"""
|
|
1116
|
+
|
|
1117
|
+
def get_recommendations(
|
|
1118
|
+
self,
|
|
1119
|
+
severity_filter: Optional[str] = None,
|
|
1120
|
+
limit: int = 10
|
|
1121
|
+
) -> List[Recommendation]:
|
|
1122
|
+
"""Get prioritized recommendations"""
|
|
1123
|
+
|
|
1124
|
+
@dataclass
|
|
1125
|
+
class TRUST5Result:
|
|
1126
|
+
"""TRUST 5 validation result"""
|
|
1127
|
+
|
|
1128
|
+
principles: Dict[str, ValidationResult]
|
|
1129
|
+
overall_score: float
|
|
1130
|
+
passed: bool
|
|
1131
|
+
recommendations: List[str]
|
|
1132
|
+
|
|
1133
|
+
@dataclass
|
|
1134
|
+
class ValidationResult:
|
|
1135
|
+
"""Individual validation result"""
|
|
1136
|
+
|
|
1137
|
+
score: float
|
|
1138
|
+
passed: bool
|
|
1139
|
+
details: Dict[str, Any]
|
|
1140
|
+
recommendations: List[str]
|
|
1141
|
+
severity: str
|
|
1142
|
+
|
|
1143
|
+
@dataclass
|
|
1144
|
+
class ProactiveResult:
|
|
1145
|
+
"""Proactive analysis result"""
|
|
1146
|
+
|
|
1147
|
+
scan_results: Dict[str, Any]
|
|
1148
|
+
recommendations: List[Recommendation]
|
|
1149
|
+
priority_issues: List[PriorityIssue]
|
|
1150
|
+
estimated_effort: float
|
|
1151
|
+
```
|
|
1152
|
+
|
|
1153
|
+
### Recommendation Models
|
|
1154
|
+
|
|
1155
|
+
```python
|
|
1156
|
+
@dataclass
|
|
1157
|
+
class Recommendation:
|
|
1158
|
+
"""Quality improvement recommendation"""
|
|
1159
|
+
|
|
1160
|
+
title: str
|
|
1161
|
+
description: str
|
|
1162
|
+
category: str
|
|
1163
|
+
severity: str
|
|
1164
|
+
priority: str
|
|
1165
|
+
estimated_effort: float
|
|
1166
|
+
estimated_impact: float
|
|
1167
|
+
roi_score: float
|
|
1168
|
+
files_affected: List[str]
|
|
1169
|
+
implementation_steps: List[str]
|
|
1170
|
+
prerequisites: List[str]
|
|
1171
|
+
references: List[str]
|
|
1172
|
+
|
|
1173
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
1174
|
+
"""Convert to dictionary for JSON serialization"""
|
|
1175
|
+
|
|
1176
|
+
@dataclass
|
|
1177
|
+
class PriorityIssue:
|
|
1178
|
+
"""High-priority quality issue"""
|
|
1179
|
+
|
|
1180
|
+
title: str
|
|
1181
|
+
file: str
|
|
1182
|
+
line: int
|
|
1183
|
+
severity: str
|
|
1184
|
+
category: str
|
|
1185
|
+
description: str
|
|
1186
|
+
recommended_fix: str
|
|
1187
|
+
estimated_effort: float
|
|
1188
|
+
security_impact: bool
|
|
1189
|
+
business_impact: str
|
|
1190
|
+
```
|
|
1191
|
+
|
|
1192
|
+
---
|
|
1193
|
+
|
|
1194
|
+
## Performance Optimization
|
|
1195
|
+
|
|
1196
|
+
### Caching Strategies
|
|
1197
|
+
|
|
1198
|
+
```python
|
|
1199
|
+
class QualityAnalysisCache:
|
|
1200
|
+
"""Caching for quality analysis results"""
|
|
1201
|
+
|
|
1202
|
+
def __init__(self, cache_backend: str = "memory"):
|
|
1203
|
+
self.cache_backend = cache_backend
|
|
1204
|
+
self.cache = self._initialize_cache()
|
|
1205
|
+
|
|
1206
|
+
async def get_cached_result(
|
|
1207
|
+
self,
|
|
1208
|
+
cache_key: str
|
|
1209
|
+
) -> Optional[QualityResult]:
|
|
1210
|
+
"""Get cached analysis result"""
|
|
1211
|
+
|
|
1212
|
+
async def cache_result(
|
|
1213
|
+
self,
|
|
1214
|
+
cache_key: str,
|
|
1215
|
+
result: QualityResult,
|
|
1216
|
+
ttl: int = 3600
|
|
1217
|
+
) -> None:
|
|
1218
|
+
"""Cache analysis result"""
|
|
1219
|
+
|
|
1220
|
+
def generate_cache_key(
|
|
1221
|
+
self,
|
|
1222
|
+
codebase: str,
|
|
1223
|
+
config: QualityConfig
|
|
1224
|
+
) -> str:
|
|
1225
|
+
"""Generate cache key for analysis"""
|
|
1226
|
+
|
|
1227
|
+
async def invalidate_cache(
|
|
1228
|
+
self,
|
|
1229
|
+
pattern: str
|
|
1230
|
+
) -> None:
|
|
1231
|
+
"""Invalidate cache entries matching pattern"""
|
|
1232
|
+
```
|
|
1233
|
+
|
|
1234
|
+
### Parallel Processing
|
|
1235
|
+
|
|
1236
|
+
```python
|
|
1237
|
+
class ParallelQualityAnalyzer:
|
|
1238
|
+
"""Parallel quality analysis for large codebases"""
|
|
1239
|
+
|
|
1240
|
+
def __init__(self, max_workers: int = 4):
|
|
1241
|
+
self.max_workers = max_workers
|
|
1242
|
+
self.executor = ThreadPoolExecutor(max_workers=max_workers)
|
|
1243
|
+
|
|
1244
|
+
async def analyze_parallel(
|
|
1245
|
+
self,
|
|
1246
|
+
codebase: str,
|
|
1247
|
+
config: QualityConfig
|
|
1248
|
+
) -> QualityResult:
|
|
1249
|
+
"""Analyze codebase in parallel"""
|
|
1250
|
+
|
|
1251
|
+
async def _analyze_directory_parallel(
|
|
1252
|
+
self,
|
|
1253
|
+
directory: str,
|
|
1254
|
+
config: QualityConfig
|
|
1255
|
+
) -> List[AnalysisResult]:
|
|
1256
|
+
"""Analyze directory contents in parallel"""
|
|
1257
|
+
|
|
1258
|
+
def _split_analysis_tasks(
|
|
1259
|
+
self,
|
|
1260
|
+
codebase: str,
|
|
1261
|
+
config: QualityConfig
|
|
1262
|
+
) -> List[AnalysisTask]:
|
|
1263
|
+
"""Split analysis into parallel tasks"""
|
|
1264
|
+
```
|
|
1265
|
+
|
|
1266
|
+
This comprehensive reference documentation provides complete API coverage for the moai-foundation-quality skill, including all classes, methods, configuration options, and integration patterns needed for enterprise code quality management.
|