moai-adk 0.25.4__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 -5
- moai_adk/__main__.py +114 -82
- moai_adk/cli/__init__.py +6 -1
- moai_adk/cli/commands/__init__.py +1 -3
- moai_adk/cli/commands/analyze.py +5 -16
- moai_adk/cli/commands/doctor.py +6 -18
- moai_adk/cli/commands/init.py +56 -125
- moai_adk/cli/commands/language.py +14 -35
- moai_adk/cli/commands/status.py +9 -15
- moai_adk/cli/commands/update.py +1555 -190
- moai_adk/cli/prompts/init_prompts.py +112 -56
- 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/analysis/session_analyzer.py +17 -56
- moai_adk/core/claude_integration.py +26 -54
- moai_adk/core/command_helpers.py +10 -10
- moai_adk/core/comprehensive_monitoring_system.py +1183 -0
- moai_adk/core/config/auto_spec_config.py +5 -11
- moai_adk/core/config/migration.py +19 -9
- moai_adk/core/config/unified.py +436 -0
- moai_adk/core/context_manager.py +6 -12
- moai_adk/core/enterprise_features.py +1404 -0
- moai_adk/core/error_recovery_system.py +725 -112
- moai_adk/core/event_driven_hook_system.py +1371 -0
- moai_adk/core/git/__init__.py +8 -0
- moai_adk/core/git/branch_manager.py +3 -11
- moai_adk/core/git/checkpoint.py +1 -3
- moai_adk/core/git/conflict_detector.py +413 -0
- moai_adk/core/git/manager.py +91 -1
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +56 -80
- moai_adk/core/input_validation_middleware.py +1006 -0
- moai_adk/core/integration/engine.py +6 -18
- moai_adk/core/integration/integration_tester.py +10 -9
- moai_adk/core/integration/utils.py +1 -1
- moai_adk/core/issue_creator.py +10 -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_resolver.py +485 -0
- moai_adk/core/language_validator.py +28 -41
- moai_adk/core/mcp/setup.py +15 -12
- moai_adk/core/merge/__init__.py +9 -0
- moai_adk/core/merge/analyzer.py +481 -0
- moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
- moai_adk/core/migration/backup_manager.py +78 -9
- moai_adk/core/migration/custom_element_scanner.py +358 -0
- moai_adk/core/migration/file_migrator.py +8 -17
- 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 +6 -10
- moai_adk/core/migration/version_migrator.py +3 -3
- moai_adk/core/performance/cache_system.py +8 -10
- moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
- moai_adk/core/project/checker.py +2 -4
- moai_adk/core/project/detector.py +1 -3
- moai_adk/core/project/initializer.py +135 -23
- moai_adk/core/project/phase_executor.py +54 -81
- moai_adk/core/project/validator.py +6 -12
- moai_adk/core/quality/trust_checker.py +9 -27
- moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
- moai_adk/core/robust_json_parser.py +611 -0
- moai_adk/core/rollback_manager.py +73 -148
- moai_adk/core/session_manager.py +10 -26
- moai_adk/core/skill_loading_system.py +579 -0
- moai_adk/core/spec/confidence_scoring.py +31 -100
- moai_adk/core/spec/ears_template_engine.py +351 -286
- moai_adk/core/spec/quality_validator.py +35 -69
- moai_adk/core/spec_status_manager.py +64 -74
- moai_adk/core/template/backup.py +45 -20
- moai_adk/core/template/config.py +112 -39
- moai_adk/core/template/merger.py +11 -19
- moai_adk/core/template/processor.py +253 -149
- moai_adk/core/template_engine.py +73 -40
- 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 +4 -12
- 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 +23 -72
- moai_adk/foundation/trust/validation_checklist.py +57 -162
- 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/alfred_detector.py +1 -3
- moai_adk/statusline/config.py +13 -4
- moai_adk/statusline/enhanced_output_style_detector.py +23 -15
- moai_adk/statusline/main.py +51 -15
- moai_adk/statusline/renderer.py +104 -48
- moai_adk/statusline/update_checker.py +3 -9
- moai_adk/statusline/version_reader.py +140 -46
- 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/moai/lib/checkpoint.py +244 -0
- moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
- moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
- moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
- moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
- moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
- moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +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 +172 -0
- 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 +319 -0
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +320 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +496 -0
- 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 +103 -41
- moai_adk/templates/.git-hooks/pre-push +116 -21
- moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
- moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
- moai_adk/templates/.gitignore +184 -44
- moai_adk/templates/.mcp.json +7 -9
- 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 +382 -501
- moai_adk/utils/__init__.py +24 -1
- moai_adk/utils/banner.py +7 -10
- moai_adk/utils/common.py +16 -30
- moai_adk/utils/link_validator.py +4 -12
- moai_adk/utils/safe_file_reader.py +2 -6
- moai_adk/utils/timeout.py +160 -0
- 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.25.4.dist-info → moai_adk-0.32.8.dist-info}/WHEEL +1 -1
- {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/entry_points.txt +1 -0
- moai_adk/cli/commands/backup.py +0 -82
- moai_adk/cli/commands/improve_user_experience.py +0 -348
- moai_adk/cli/commands/migrate.py +0 -158
- moai_adk/cli/commands/validate_links.py +0 -118
- moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -413
- moai_adk/templates/.github/workflows/moai-release-create.yml +0 -100
- moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -188
- moai_adk/utils/user_experience.py +0 -531
- moai_adk-0.25.4.dist-info/METADATA +0 -2279
- moai_adk-0.25.4.dist-info/RECORD +0 -112
- {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,665 @@
|
|
|
1
|
+
# Modular System - File Organization
|
|
2
|
+
|
|
3
|
+
Purpose: Scalable file structure enabling unlimited content depth while maintaining clean, navigable, and maintainable skill architecture.
|
|
4
|
+
|
|
5
|
+
Version: 1.0.0
|
|
6
|
+
Last Updated: 2025-11-25
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Quick Reference (30 seconds)
|
|
11
|
+
|
|
12
|
+
Modular System = Organized file structure for scalable skills and documentation.
|
|
13
|
+
|
|
14
|
+
Standard Structure:
|
|
15
|
+
```
|
|
16
|
+
.claude/skills/skill-name/
|
|
17
|
+
SKILL.md # Core entry (≤500 lines, mandatory)
|
|
18
|
+
modules/ # Extended content (unlimited, optional)
|
|
19
|
+
pattern-a.md
|
|
20
|
+
pattern-b.md
|
|
21
|
+
pattern-c.md
|
|
22
|
+
examples.md # Working code samples (optional)
|
|
23
|
+
reference.md # External links/API docs (optional)
|
|
24
|
+
scripts/ # Utility scripts (optional)
|
|
25
|
+
helper.sh
|
|
26
|
+
templates/ # Templates (optional)
|
|
27
|
+
template.md
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
File Principles:
|
|
31
|
+
1. SKILL.md ≤500 lines (hard limit)
|
|
32
|
+
2. modules/ = Topic-focused, self-contained
|
|
33
|
+
3. examples.md = Copy-paste ready
|
|
34
|
+
4. reference.md = External resources
|
|
35
|
+
|
|
36
|
+
Cross-Reference Syntax:
|
|
37
|
+
```markdown
|
|
38
|
+
Details: [Module](modules/patterns.md)
|
|
39
|
+
Examples: [Examples](examples.md#auth)
|
|
40
|
+
External: [Reference](reference.md#api)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Implementation Guide (5 minutes)
|
|
46
|
+
|
|
47
|
+
### Standard File Structure
|
|
48
|
+
|
|
49
|
+
Tier 1: Mandatory Files
|
|
50
|
+
|
|
51
|
+
.claude/skills/skill-name/SKILL.md (Required, ≤500 lines):
|
|
52
|
+
|
|
53
|
+
```markdown
|
|
54
|
+
---
|
|
55
|
+
name: skill-name
|
|
56
|
+
description: Brief description (max 1024 chars)
|
|
57
|
+
tools: Read, Bash, Grep, Glob
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
# Skill Name
|
|
61
|
+
|
|
62
|
+
Entry point with progressive disclosure structure.
|
|
63
|
+
|
|
64
|
+
## Quick Reference (30s)
|
|
65
|
+
[Core principles]
|
|
66
|
+
|
|
67
|
+
## Implementation Guide (5min)
|
|
68
|
+
[Practical patterns with cross-references]
|
|
69
|
+
|
|
70
|
+
## Advanced Patterns (10+min)
|
|
71
|
+
[Brief intros with links to modules/]
|
|
72
|
+
|
|
73
|
+
## Works Well With
|
|
74
|
+
[Integration points]
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Tier 2: Extended Content (Optional)
|
|
78
|
+
|
|
79
|
+
modules/ Directory:
|
|
80
|
+
- Purpose: Deep dives on specific topics
|
|
81
|
+
- Structure: Self-contained, topic-focused
|
|
82
|
+
- Limits: No line limits (can be 1000+ lines)
|
|
83
|
+
- Naming: Descriptive kebab-case (e.g., `advanced-patterns.md`)
|
|
84
|
+
|
|
85
|
+
Example modules/ structure:
|
|
86
|
+
```
|
|
87
|
+
modules/
|
|
88
|
+
trust-5-framework.md # Quality assurance deep dive
|
|
89
|
+
spec-first-tdd.md # TDD workflow detailed guide
|
|
90
|
+
delegation-patterns.md # Agent orchestration patterns
|
|
91
|
+
token-optimization.md # Budget management strategies
|
|
92
|
+
progressive-disclosure.md # Content architecture
|
|
93
|
+
modular-system.md # File organization (this file)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Tier 3: Supporting Files (Optional)
|
|
97
|
+
|
|
98
|
+
examples.md:
|
|
99
|
+
```markdown
|
|
100
|
+
# Working Examples
|
|
101
|
+
|
|
102
|
+
## Example 1: Basic Usage
|
|
103
|
+
```python
|
|
104
|
+
# Copy-paste ready code
|
|
105
|
+
def basic_example():
|
|
106
|
+
result = skill_function()
|
|
107
|
+
return result
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Example 2: Advanced Usage
|
|
111
|
+
```python
|
|
112
|
+
# Complex scenario
|
|
113
|
+
def advanced_example():
|
|
114
|
+
# Detailed implementation
|
|
115
|
+
pass
|
|
116
|
+
```
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
reference.md:
|
|
120
|
+
```markdown
|
|
121
|
+
# External Resources
|
|
122
|
+
|
|
123
|
+
## Official Documentation
|
|
124
|
+
- [Library Docs](https://docs.example.com)
|
|
125
|
+
- [API Reference](https://api.example.com)
|
|
126
|
+
|
|
127
|
+
## Related Standards
|
|
128
|
+
- [RFC 5322](https://tools.ietf.org/html/rfc5322)
|
|
129
|
+
- [OWASP Top 10](https://owasp.org/Top10/)
|
|
130
|
+
|
|
131
|
+
## Tools and Libraries
|
|
132
|
+
- [pytest](https://docs.pytest.org/)
|
|
133
|
+
- [black](https://black.readthedocs.io/)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
scripts/ Directory:
|
|
137
|
+
```bash
|
|
138
|
+
# scripts/helper.sh
|
|
139
|
+
#!/bin/bash
|
|
140
|
+
# Utility script for skill operations
|
|
141
|
+
|
|
142
|
+
function validate_skill() {
|
|
143
|
+
# Validation logic
|
|
144
|
+
echo "Validating skill structure..."
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
templates/ Directory:
|
|
149
|
+
```markdown
|
|
150
|
+
<!-- templates/template.md -->
|
|
151
|
+
# Template Name
|
|
152
|
+
|
|
153
|
+
[Template content with placeholders]
|
|
154
|
+
|
|
155
|
+
Variables:
|
|
156
|
+
- {{skill_name}}
|
|
157
|
+
- {{description}}
|
|
158
|
+
- {{tools}}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
### File Splitting Strategy
|
|
164
|
+
|
|
165
|
+
When to Split SKILL.md:
|
|
166
|
+
|
|
167
|
+
```python
|
|
168
|
+
class FileSplittingDecision:
|
|
169
|
+
"""Determine when and how to split SKILL.md."""
|
|
170
|
+
|
|
171
|
+
MAX_SKILL_LINES = 500
|
|
172
|
+
|
|
173
|
+
def should_split(self, skill_md_path: str) -> dict:
|
|
174
|
+
"""Analyze if SKILL.md needs splitting."""
|
|
175
|
+
|
|
176
|
+
with open(skill_md_path) as f:
|
|
177
|
+
lines = f.readlines()
|
|
178
|
+
|
|
179
|
+
line_count = len(lines)
|
|
180
|
+
|
|
181
|
+
if line_count <= self.MAX_SKILL_LINES:
|
|
182
|
+
return {
|
|
183
|
+
"split_needed": False,
|
|
184
|
+
"line_count": line_count,
|
|
185
|
+
"remaining": self.MAX_SKILL_LINES - line_count
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
# Analyze sections for splitting
|
|
189
|
+
sections = self._analyze_sections(lines)
|
|
190
|
+
|
|
191
|
+
split_recommendations = []
|
|
192
|
+
|
|
193
|
+
# Advanced Patterns → modules/advanced-patterns.md
|
|
194
|
+
if sections["advanced_patterns"] > 100:
|
|
195
|
+
split_recommendations.append({
|
|
196
|
+
"source": "Advanced Patterns section",
|
|
197
|
+
"target": "modules/advanced-patterns.md",
|
|
198
|
+
"lines": sections["advanced_patterns"],
|
|
199
|
+
"keep_intro": 20 # Keep brief intro in SKILL.md
|
|
200
|
+
})
|
|
201
|
+
|
|
202
|
+
# Code Examples → examples.md
|
|
203
|
+
if sections["code_examples"] > 80:
|
|
204
|
+
split_recommendations.append({
|
|
205
|
+
"source": "Code examples",
|
|
206
|
+
"target": "examples.md",
|
|
207
|
+
"lines": sections["code_examples"],
|
|
208
|
+
"keep_intro": 10 # Keep key example in SKILL.md
|
|
209
|
+
})
|
|
210
|
+
|
|
211
|
+
# References → reference.md
|
|
212
|
+
if sections["references"] > 50:
|
|
213
|
+
split_recommendations.append({
|
|
214
|
+
"source": "References section",
|
|
215
|
+
"target": "reference.md",
|
|
216
|
+
"lines": sections["references"],
|
|
217
|
+
"keep_intro": 5
|
|
218
|
+
})
|
|
219
|
+
|
|
220
|
+
# Topic-specific deep dives → modules/[topic].md
|
|
221
|
+
for topic, topic_lines in sections["topics"].items():
|
|
222
|
+
if topic_lines > 150:
|
|
223
|
+
split_recommendations.append({
|
|
224
|
+
"source": f"{topic} section",
|
|
225
|
+
"target": f"modules/{topic}.md",
|
|
226
|
+
"lines": topic_lines,
|
|
227
|
+
"keep_intro": 30
|
|
228
|
+
})
|
|
229
|
+
|
|
230
|
+
return {
|
|
231
|
+
"split_needed": True,
|
|
232
|
+
"line_count": line_count,
|
|
233
|
+
"overflow": line_count - self.MAX_SKILL_LINES,
|
|
234
|
+
"recommendations": split_recommendations,
|
|
235
|
+
"estimated_final_size": line_count - sum(
|
|
236
|
+
r["lines"] - r["keep_intro"] for r in split_recommendations
|
|
237
|
+
)
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
def execute_split(self, skill_path: str, recommendations: list):
|
|
241
|
+
"""Execute file splitting based on recommendations."""
|
|
242
|
+
|
|
243
|
+
skill_md_path = f"{skill_path}/SKILL.md"
|
|
244
|
+
|
|
245
|
+
with open(skill_md_path) as f:
|
|
246
|
+
content = f.read()
|
|
247
|
+
|
|
248
|
+
for rec in recommendations:
|
|
249
|
+
# Extract content for splitting
|
|
250
|
+
section_content = self._extract_section_content(
|
|
251
|
+
content,
|
|
252
|
+
rec["source"]
|
|
253
|
+
)
|
|
254
|
+
|
|
255
|
+
# Create target file
|
|
256
|
+
target_path = f"{skill_path}/{rec['target']}"
|
|
257
|
+
os.makedirs(os.path.dirname(target_path), exist_ok=True)
|
|
258
|
+
|
|
259
|
+
with open(target_path, 'w') as f:
|
|
260
|
+
f.write(section_content)
|
|
261
|
+
|
|
262
|
+
# Replace in SKILL.md with brief intro + cross-reference
|
|
263
|
+
brief_intro = section_content[:rec["keep_intro"]] + "\n\n"
|
|
264
|
+
cross_ref = f"[Full details]({rec['target']})\n"
|
|
265
|
+
|
|
266
|
+
content = content.replace(
|
|
267
|
+
section_content,
|
|
268
|
+
brief_intro + cross_ref
|
|
269
|
+
)
|
|
270
|
+
|
|
271
|
+
# Write updated SKILL.md
|
|
272
|
+
with open(skill_md_path, 'w') as f:
|
|
273
|
+
f.write(content)
|
|
274
|
+
|
|
275
|
+
# Usage
|
|
276
|
+
splitter = FileSplittingDecision()
|
|
277
|
+
|
|
278
|
+
decision = splitter.should_split(".claude/skills/moai-foundation-core/SKILL.md")
|
|
279
|
+
|
|
280
|
+
if decision["split_needed"]:
|
|
281
|
+
print(f" SKILL.md needs splitting: {decision['line_count']} lines")
|
|
282
|
+
print(f" Overflow: {decision['overflow']} lines")
|
|
283
|
+
|
|
284
|
+
for rec in decision["recommendations"]:
|
|
285
|
+
print(f" → Split '{rec['source']}' to {rec['target']}")
|
|
286
|
+
|
|
287
|
+
# Execute splitting
|
|
288
|
+
splitter.execute_split(
|
|
289
|
+
".claude/skills/moai-foundation-core",
|
|
290
|
+
decision["recommendations"]
|
|
291
|
+
)
|
|
292
|
+
|
|
293
|
+
print(f" Final SKILL.md size: {decision['estimated_final_size']} lines")
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
### Cross-Reference Patterns
|
|
299
|
+
|
|
300
|
+
Effective Cross-Linking Strategy:
|
|
301
|
+
|
|
302
|
+
Pattern 1: Module Cross-References:
|
|
303
|
+
```markdown
|
|
304
|
+
<!-- In SKILL.md -->
|
|
305
|
+
## Implementation Guide (5 minutes)
|
|
306
|
+
|
|
307
|
+
### Pattern 1: Quality Framework
|
|
308
|
+
|
|
309
|
+
Quick overview of TRUST 5 framework.
|
|
310
|
+
|
|
311
|
+
Detailed Implementation: [TRUST 5 Module](modules/trust-5-framework.md)
|
|
312
|
+
|
|
313
|
+
Key principles:
|
|
314
|
+
- Test-first ≥85%
|
|
315
|
+
- Readable code
|
|
316
|
+
- Unified patterns
|
|
317
|
+
- Secured (OWASP)
|
|
318
|
+
- Trackable commits
|
|
319
|
+
|
|
320
|
+
For advanced patterns, validation frameworks, and CI/CD integration, see the [full module](modules/trust-5-framework.md#advanced-implementation).
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
Pattern 2: Section Anchors:
|
|
324
|
+
```markdown
|
|
325
|
+
<!-- In SKILL.md -->
|
|
326
|
+
Quick Access:
|
|
327
|
+
- Quality framework → [TRUST 5](modules/trust-5-framework.md#quick-reference)
|
|
328
|
+
- TDD workflow → [SPEC-First](modules/spec-first-tdd.md#phase-2-test-driven-development)
|
|
329
|
+
- Agent patterns → [Delegation](modules/delegation-patterns.md#pattern-1-sequential-delegation)
|
|
330
|
+
|
|
331
|
+
<!-- In module -->
|
|
332
|
+
## Advanced Implementation (10+ minutes)
|
|
333
|
+
|
|
334
|
+
### Pattern Optimization {#pattern-optimization}
|
|
335
|
+
|
|
336
|
+
[Content accessible via anchor link]
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
Pattern 3: Example Links:
|
|
340
|
+
```markdown
|
|
341
|
+
<!-- In SKILL.md -->
|
|
342
|
+
## Implementation Guide
|
|
343
|
+
|
|
344
|
+
```python
|
|
345
|
+
# Basic example
|
|
346
|
+
def basic_usage():
|
|
347
|
+
result = process()
|
|
348
|
+
return result
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
More Examples: [examples.md](examples.md)
|
|
352
|
+
- [Authentication Example](examples.md#auth-example)
|
|
353
|
+
- [API Integration](examples.md#api-integration)
|
|
354
|
+
- [Error Handling](examples.md#error-handling)
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
Pattern 4: External References:
|
|
358
|
+
```markdown
|
|
359
|
+
<!-- In SKILL.md -->
|
|
360
|
+
## Quick Reference
|
|
361
|
+
|
|
362
|
+
Official Documentation: [reference.md](reference.md#official-docs)
|
|
363
|
+
Related Standards: [reference.md](reference.md#standards)
|
|
364
|
+
Tools: [reference.md](reference.md#tools)
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
## Advanced Implementation (10+ minutes)
|
|
370
|
+
|
|
371
|
+
### Automated File Organization
|
|
372
|
+
|
|
373
|
+
Skill Organizer Tool:
|
|
374
|
+
|
|
375
|
+
```python
|
|
376
|
+
from pathlib import Path
|
|
377
|
+
import os
|
|
378
|
+
import re
|
|
379
|
+
|
|
380
|
+
class SkillOrganizer:
|
|
381
|
+
"""Organize skill files according to modular system standards."""
|
|
382
|
+
|
|
383
|
+
def __init__(self, skill_path: Path):
|
|
384
|
+
self.skill_path = Path(skill_path)
|
|
385
|
+
self.structure = {
|
|
386
|
+
"SKILL.md": True, # Mandatory
|
|
387
|
+
"modules/": False,
|
|
388
|
+
"examples.md": False,
|
|
389
|
+
"reference.md": False,
|
|
390
|
+
"scripts/": False,
|
|
391
|
+
"templates/": False
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
def validate_structure(self) -> dict:
|
|
395
|
+
"""Validate skill directory structure."""
|
|
396
|
+
|
|
397
|
+
validation = {}
|
|
398
|
+
|
|
399
|
+
# Check mandatory files
|
|
400
|
+
skill_md = self.skill_path / "SKILL.md"
|
|
401
|
+
if not skill_md.exists():
|
|
402
|
+
validation["SKILL.md"] = {
|
|
403
|
+
"status": "MISSING",
|
|
404
|
+
"severity": "ERROR",
|
|
405
|
+
"action": "Create SKILL.md file"
|
|
406
|
+
}
|
|
407
|
+
else:
|
|
408
|
+
# Validate SKILL.md content
|
|
409
|
+
with open(skill_md) as f:
|
|
410
|
+
lines = f.readlines()
|
|
411
|
+
|
|
412
|
+
line_count = len(lines)
|
|
413
|
+
|
|
414
|
+
validation["SKILL.md"] = {
|
|
415
|
+
"status": "OK" if line_count <= 500 else "OVERFLOW",
|
|
416
|
+
"severity": "WARNING" if line_count > 500 else "OK",
|
|
417
|
+
"line_count": line_count,
|
|
418
|
+
"action": "Split to modules" if line_count > 500 else None
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
# Check optional directories
|
|
422
|
+
for dir_name in ["modules", "scripts", "templates"]:
|
|
423
|
+
dir_path = self.skill_path / dir_name
|
|
424
|
+
if dir_path.exists():
|
|
425
|
+
validation[f"{dir_name}/"] = {
|
|
426
|
+
"status": "PRESENT",
|
|
427
|
+
"files": list(dir_path.glob("*"))
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
# Check optional files
|
|
431
|
+
for file_name in ["examples.md", "reference.md"]:
|
|
432
|
+
file_path = self.skill_path / file_name
|
|
433
|
+
if file_path.exists():
|
|
434
|
+
validation[file_name] = {
|
|
435
|
+
"status": "PRESENT",
|
|
436
|
+
"size": file_path.stat().st_size
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
return validation
|
|
440
|
+
|
|
441
|
+
def organize_skill(self):
|
|
442
|
+
"""Organize skill files according to standards."""
|
|
443
|
+
|
|
444
|
+
# Create modules/ directory if needed
|
|
445
|
+
modules_dir = self.skill_path / "modules"
|
|
446
|
+
if not modules_dir.exists():
|
|
447
|
+
modules_dir.mkdir()
|
|
448
|
+
|
|
449
|
+
# Move advanced content to modules/
|
|
450
|
+
self._move_advanced_content_to_modules()
|
|
451
|
+
|
|
452
|
+
# Extract examples to examples.md
|
|
453
|
+
self._extract_examples()
|
|
454
|
+
|
|
455
|
+
# Extract references to reference.md
|
|
456
|
+
self._extract_references()
|
|
457
|
+
|
|
458
|
+
# Create scripts/ if utility scripts exist
|
|
459
|
+
self._organize_scripts()
|
|
460
|
+
|
|
461
|
+
# Validate final structure
|
|
462
|
+
return self.validate_structure()
|
|
463
|
+
|
|
464
|
+
def _move_advanced_content_to_modules(self):
|
|
465
|
+
"""Move advanced patterns to modules/."""
|
|
466
|
+
|
|
467
|
+
skill_md = self.skill_path / "SKILL.md"
|
|
468
|
+
|
|
469
|
+
with open(skill_md) as f:
|
|
470
|
+
content = f.read()
|
|
471
|
+
|
|
472
|
+
# Extract Advanced Patterns section
|
|
473
|
+
advanced_match = re.search(
|
|
474
|
+
r'## Advanced (Implementation|Patterns).*?(?=##|$)',
|
|
475
|
+
content,
|
|
476
|
+
re.DOTALL
|
|
477
|
+
)
|
|
478
|
+
|
|
479
|
+
if advanced_match and len(advanced_match.group(0)) > 500:
|
|
480
|
+
advanced_content = advanced_match.group(0)
|
|
481
|
+
|
|
482
|
+
# Save to module
|
|
483
|
+
module_path = self.skill_path / "modules" / "advanced-patterns.md"
|
|
484
|
+
with open(module_path, 'w') as f:
|
|
485
|
+
f.write(f"# Advanced Patterns\n\n{advanced_content}")
|
|
486
|
+
|
|
487
|
+
# Replace with brief intro in SKILL.md
|
|
488
|
+
brief_intro = advanced_content[:200] + "\n\n"
|
|
489
|
+
cross_ref = "[Full advanced patterns](modules/advanced-patterns.md)\n"
|
|
490
|
+
|
|
491
|
+
content = content.replace(
|
|
492
|
+
advanced_content,
|
|
493
|
+
brief_intro + cross_ref
|
|
494
|
+
)
|
|
495
|
+
|
|
496
|
+
# Write updated SKILL.md
|
|
497
|
+
with open(skill_md, 'w') as f:
|
|
498
|
+
f.write(content)
|
|
499
|
+
|
|
500
|
+
def generate_navigation(self) -> str:
|
|
501
|
+
"""Generate navigation structure for skill."""
|
|
502
|
+
|
|
503
|
+
navigation = []
|
|
504
|
+
navigation.append("# Skill Navigation\n")
|
|
505
|
+
|
|
506
|
+
# SKILL.md sections
|
|
507
|
+
navigation.append("## Core Content (SKILL.md)\n")
|
|
508
|
+
navigation.append("- [Quick Reference](SKILL.md#quick-reference)\n")
|
|
509
|
+
navigation.append("- [Implementation Guide](SKILL.md#implementation-guide)\n")
|
|
510
|
+
navigation.append("- [Advanced Patterns](SKILL.md#advanced-patterns)\n\n")
|
|
511
|
+
|
|
512
|
+
# Modules
|
|
513
|
+
modules_dir = self.skill_path / "modules"
|
|
514
|
+
if modules_dir.exists():
|
|
515
|
+
navigation.append("## Extended Content (modules/)\n")
|
|
516
|
+
for module in sorted(modules_dir.glob("*.md")):
|
|
517
|
+
module_name = module.stem.replace("-", " ").title()
|
|
518
|
+
navigation.append(f"- [{module_name}](modules/{module.name})\n")
|
|
519
|
+
navigation.append("\n")
|
|
520
|
+
|
|
521
|
+
# Examples
|
|
522
|
+
if (self.skill_path / "examples.md").exists():
|
|
523
|
+
navigation.append("## Working Examples\n")
|
|
524
|
+
navigation.append("- [examples.md](examples.md)\n\n")
|
|
525
|
+
|
|
526
|
+
# Reference
|
|
527
|
+
if (self.skill_path / "reference.md").exists():
|
|
528
|
+
navigation.append("## External Resources\n")
|
|
529
|
+
navigation.append("- [reference.md](reference.md)\n\n")
|
|
530
|
+
|
|
531
|
+
return "".join(navigation)
|
|
532
|
+
|
|
533
|
+
# Usage
|
|
534
|
+
organizer = SkillOrganizer(".claude/skills/moai-foundation-core")
|
|
535
|
+
|
|
536
|
+
# Validate current structure
|
|
537
|
+
validation = organizer.validate_structure()
|
|
538
|
+
for file, result in validation.items():
|
|
539
|
+
print(f"{file}: {result}")
|
|
540
|
+
|
|
541
|
+
# Organize skill files
|
|
542
|
+
organizer.organize_skill()
|
|
543
|
+
|
|
544
|
+
# Generate navigation
|
|
545
|
+
navigation = organizer.generate_navigation()
|
|
546
|
+
with open(".claude/skills/moai-foundation-core/NAVIGATION.md", 'w') as f:
|
|
547
|
+
f.write(navigation)
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
### Module Discovery and Loading
|
|
551
|
+
|
|
552
|
+
Dynamic Module Loader:
|
|
553
|
+
|
|
554
|
+
```python
|
|
555
|
+
class ModuleDiscovery:
|
|
556
|
+
"""Discover and load skill modules dynamically."""
|
|
557
|
+
|
|
558
|
+
def __init__(self, skill_path: Path):
|
|
559
|
+
self.skill_path = Path(skill_path)
|
|
560
|
+
self.modules_cache = {}
|
|
561
|
+
|
|
562
|
+
def discover_modules(self) -> dict:
|
|
563
|
+
"""Discover all available modules."""
|
|
564
|
+
|
|
565
|
+
modules_dir = self.skill_path / "modules"
|
|
566
|
+
|
|
567
|
+
if not modules_dir.exists():
|
|
568
|
+
return {}
|
|
569
|
+
|
|
570
|
+
modules = {}
|
|
571
|
+
|
|
572
|
+
for module_file in modules_dir.glob("*.md"):
|
|
573
|
+
module_name = module_file.stem
|
|
574
|
+
|
|
575
|
+
# Extract module metadata
|
|
576
|
+
with open(module_file) as f:
|
|
577
|
+
content = f.read()
|
|
578
|
+
|
|
579
|
+
# Parse frontmatter if exists
|
|
580
|
+
metadata = self._parse_frontmatter(content)
|
|
581
|
+
|
|
582
|
+
modules[module_name] = {
|
|
583
|
+
"path": module_file,
|
|
584
|
+
"size": module_file.stat().st_size,
|
|
585
|
+
"metadata": metadata,
|
|
586
|
+
"topics": self._extract_topics(content)
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
return modules
|
|
590
|
+
|
|
591
|
+
def load_module(self, module_name: str) -> str:
|
|
592
|
+
"""Load specific module content."""
|
|
593
|
+
|
|
594
|
+
if module_name in self.modules_cache:
|
|
595
|
+
return self.modules_cache[module_name]
|
|
596
|
+
|
|
597
|
+
module_path = self.skill_path / "modules" / f"{module_name}.md"
|
|
598
|
+
|
|
599
|
+
if not module_path.exists():
|
|
600
|
+
raise FileNotFoundError(f"Module not found: {module_name}")
|
|
601
|
+
|
|
602
|
+
with open(module_path) as f:
|
|
603
|
+
content = f.read()
|
|
604
|
+
|
|
605
|
+
self.modules_cache[module_name] = content
|
|
606
|
+
return content
|
|
607
|
+
|
|
608
|
+
def search_modules(self, query: str) -> list:
|
|
609
|
+
"""Search for topic across all modules."""
|
|
610
|
+
|
|
611
|
+
modules = self.discover_modules()
|
|
612
|
+
results = []
|
|
613
|
+
|
|
614
|
+
for module_name, module_info in modules.items():
|
|
615
|
+
if query.lower() in module_info["topics"]:
|
|
616
|
+
results.append({
|
|
617
|
+
"module": module_name,
|
|
618
|
+
"path": module_info["path"],
|
|
619
|
+
"relevance": self._calculate_relevance(query, module_info)
|
|
620
|
+
})
|
|
621
|
+
|
|
622
|
+
return sorted(results, key=lambda x: x["relevance"], reverse=True)
|
|
623
|
+
|
|
624
|
+
# Usage
|
|
625
|
+
discovery = ModuleDiscovery(".claude/skills/moai-foundation-core")
|
|
626
|
+
|
|
627
|
+
# Discover all modules
|
|
628
|
+
modules = discovery.discover_modules()
|
|
629
|
+
print(f"Found {len(modules)} modules")
|
|
630
|
+
|
|
631
|
+
# Load specific module
|
|
632
|
+
trust5_content = discovery.load_module("trust-5-framework")
|
|
633
|
+
|
|
634
|
+
# Search for topic
|
|
635
|
+
results = discovery.search_modules("security")
|
|
636
|
+
for result in results:
|
|
637
|
+
print(f"Found in: {result['module']} (relevance: {result['relevance']})")
|
|
638
|
+
```
|
|
639
|
+
|
|
640
|
+
---
|
|
641
|
+
|
|
642
|
+
## Works Well With
|
|
643
|
+
|
|
644
|
+
Skills:
|
|
645
|
+
- moai-foundation-progressive-disclosure - Content structuring
|
|
646
|
+
- moai-cc-skill-factory - Skill creation with modular structure
|
|
647
|
+
- moai-foundation-token-optimization - File loading efficiency
|
|
648
|
+
|
|
649
|
+
Agents:
|
|
650
|
+
- skill-factory - Create skills with standard file structure
|
|
651
|
+
- docs-manager - Generate documentation following modular pattern
|
|
652
|
+
|
|
653
|
+
Commands:
|
|
654
|
+
- /moai:1-plan - SPEC generation with modular docs
|
|
655
|
+
- /moai:3-sync - Documentation sync to modular structure
|
|
656
|
+
|
|
657
|
+
Memory:
|
|
658
|
+
- @.claude/skills/ - Standard skill location
|
|
659
|
+
- Skill("moai-foundation-core") modules/ - Memory files following modular pattern
|
|
660
|
+
|
|
661
|
+
---
|
|
662
|
+
|
|
663
|
+
Version: 1.0.0
|
|
664
|
+
Last Updated: 2025-11-25
|
|
665
|
+
Status: Production Ready
|