moai-adk 0.34.0__py3-none-any.whl → 1.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- moai_adk/__main__.py +136 -5
- moai_adk/astgrep/__init__.py +37 -0
- moai_adk/astgrep/analyzer.py +522 -0
- moai_adk/astgrep/models.py +124 -0
- moai_adk/astgrep/rules.py +179 -0
- moai_adk/cli/commands/analyze.py +11 -2
- moai_adk/cli/commands/doctor.py +7 -1
- moai_adk/cli/commands/init.py +321 -11
- moai_adk/cli/commands/language.py +7 -1
- moai_adk/cli/commands/rank.py +449 -0
- moai_adk/cli/commands/status.py +7 -1
- moai_adk/cli/commands/switch.py +325 -0
- moai_adk/cli/commands/update.py +296 -23
- moai_adk/cli/prompts/init_prompts.py +362 -66
- moai_adk/cli/prompts/translations/__init__.py +573 -0
- moai_adk/cli/ui/prompts.py +61 -2
- moai_adk/cli/worktree/cli.py +106 -1
- moai_adk/cli/worktree/manager.py +155 -0
- moai_adk/core/config/unified.py +244 -63
- moai_adk/core/credentials.py +264 -0
- moai_adk/core/error_recovery_system.py +22 -4
- moai_adk/core/git/conflict_detector.py +10 -1
- moai_adk/core/git/event_detector.py +16 -5
- moai_adk/core/integration/engine.py +2 -2
- moai_adk/core/integration/integration_tester.py +5 -5
- moai_adk/core/language_config_resolver.py +9 -3
- moai_adk/core/merge/analyzer.py +509 -324
- moai_adk/core/migration/alfred_to_moai_migrator.py +7 -1
- moai_adk/core/migration/backup_manager.py +54 -4
- moai_adk/core/migration/file_migrator.py +174 -2
- moai_adk/core/migration/interactive_checkbox_ui.py +42 -31
- moai_adk/core/migration/version_detector.py +123 -19
- moai_adk/core/migration/version_migrator.py +44 -9
- moai_adk/core/model_allocator.py +241 -0
- moai_adk/core/project/backup_utils.py +12 -2
- moai_adk/core/project/initializer.py +44 -87
- moai_adk/core/project/phase_executor.py +95 -33
- moai_adk/core/project/validator.py +16 -1
- moai_adk/core/quality/trust_checker.py +30 -10
- moai_adk/core/rollback_manager.py +60 -25
- moai_adk/core/template/backup.py +88 -6
- moai_adk/core/template/config.py +33 -9
- moai_adk/core/template/merger.py +34 -8
- moai_adk/core/template/processor.py +334 -11
- moai_adk/core/template_engine.py +10 -1
- moai_adk/core/template_variable_synchronizer.py +16 -2
- moai_adk/core/version_sync.py +54 -6
- moai_adk/foundation/__init__.py +1 -20
- moai_adk/foundation/testing.py +1 -1
- moai_adk/loop/__init__.py +54 -0
- moai_adk/loop/controller.py +305 -0
- moai_adk/loop/feedback.py +230 -0
- moai_adk/loop/state.py +209 -0
- moai_adk/loop/storage.py +220 -0
- moai_adk/lsp/__init__.py +70 -0
- moai_adk/lsp/client.py +320 -0
- moai_adk/lsp/models.py +261 -0
- moai_adk/lsp/protocol.py +404 -0
- moai_adk/lsp/server_manager.py +248 -0
- moai_adk/project/configuration.py +8 -1
- moai_adk/py.typed +0 -0
- moai_adk/ralph/__init__.py +37 -0
- moai_adk/ralph/engine.py +307 -0
- moai_adk/rank/__init__.py +21 -0
- moai_adk/rank/auth.py +425 -0
- moai_adk/rank/client.py +557 -0
- moai_adk/rank/config.py +147 -0
- moai_adk/rank/hook.py +1503 -0
- moai_adk/rank/py.typed +0 -0
- moai_adk/statusline/__init__.py +3 -0
- moai_adk/statusline/enhanced_output_style_detector.py +5 -5
- moai_adk/statusline/main.py +20 -1
- moai_adk/statusline/memory_collector.py +268 -0
- moai_adk/statusline/renderer.py +54 -38
- moai_adk/tag_system/__init__.py +48 -0
- moai_adk/tag_system/atomic_ops.py +117 -0
- moai_adk/tag_system/linkage.py +335 -0
- moai_adk/tag_system/parser.py +176 -0
- moai_adk/tag_system/validator.py +200 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +19 -3
- moai_adk/templates/.claude/agents/moai/builder-command.md +62 -16
- moai_adk/templates/.claude/agents/moai/builder-plugin.md +763 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +21 -5
- moai_adk/templates/.claude/agents/moai/expert-backend.md +103 -39
- moai_adk/templates/.claude/agents/moai/expert-debug.md +9 -3
- moai_adk/templates/.claude/agents/moai/expert-devops.md +16 -14
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +45 -31
- moai_adk/templates/.claude/agents/moai/expert-performance.md +13 -9
- moai_adk/templates/.claude/agents/moai/expert-refactoring.md +228 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +19 -3
- moai_adk/templates/.claude/agents/moai/expert-testing.md +13 -9
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +8 -2
- moai_adk/templates/.claude/agents/moai/manager-docs.md +10 -5
- moai_adk/templates/.claude/agents/moai/manager-git.md +99 -27
- moai_adk/templates/.claude/agents/moai/manager-project.md +87 -7
- moai_adk/templates/.claude/agents/moai/manager-quality.md +22 -5
- moai_adk/templates/.claude/agents/moai/manager-spec.md +8 -2
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +45 -14
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +16 -3
- moai_adk/templates/.claude/commands/moai/0-project.md +239 -1185
- moai_adk/templates/.claude/commands/moai/1-plan.md +383 -363
- moai_adk/templates/.claude/commands/moai/2-run.md +254 -347
- moai_adk/templates/.claude/commands/moai/3-sync.md +174 -100
- moai_adk/templates/.claude/commands/moai/9-feedback.md +49 -33
- moai_adk/templates/.claude/commands/moai/alfred.md +339 -0
- moai_adk/templates/.claude/commands/moai/cancel-loop.md +163 -0
- moai_adk/templates/.claude/commands/moai/fix.md +264 -0
- moai_adk/templates/.claude/commands/moai/loop.md +363 -0
- moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +37 -81
- moai_adk/templates/.claude/hooks/moai/lib/alfred_detector.py +105 -0
- moai_adk/templates/.claude/hooks/moai/lib/atomic_write.py +122 -0
- moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +4 -1
- moai_adk/templates/.claude/hooks/moai/lib/common.py +35 -5
- moai_adk/templates/.claude/hooks/moai/lib/config.py +376 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +24 -28
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +14 -14
- moai_adk/templates/.claude/hooks/moai/lib/enhanced_output_style_detector.py +372 -0
- moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
- moai_adk/templates/.claude/hooks/moai/lib/file_utils.py +95 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_collector.py +190 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +15 -13
- moai_adk/templates/.claude/hooks/moai/lib/language_detector.py +298 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +125 -25
- moai_adk/templates/.claude/hooks/moai/lib/main.py +341 -0
- moai_adk/templates/.claude/hooks/moai/lib/memory_collector.py +268 -0
- moai_adk/templates/.claude/hooks/moai/lib/metrics_tracker.py +78 -0
- moai_adk/templates/.claude/hooks/moai/lib/models.py +9 -7
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +204 -13
- moai_adk/templates/.claude/hooks/moai/lib/project.py +23 -14
- moai_adk/templates/.claude/hooks/moai/lib/renderer.py +359 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_linkage.py +333 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_parser.py +176 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_validator.py +200 -0
- moai_adk/templates/.claude/hooks/moai/lib/timeout.py +5 -5
- moai_adk/templates/.claude/hooks/moai/lib/tool_registry.py +896 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +30 -18
- moai_adk/templates/.claude/hooks/moai/lib/update_checker.py +129 -0
- moai_adk/templates/.claude/hooks/moai/lib/version_reader.py +741 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +276 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +255 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__coverage_guard.py +325 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +315 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__lsp_diagnostic.py +508 -0
- moai_adk/templates/.claude/hooks/moai/pre_commit__tag_validator.py +287 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +268 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__tdd_enforcer.py +208 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +93 -61
- moai_adk/templates/.claude/hooks/moai/session_end__rank_submit.py +69 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +165 -70
- moai_adk/templates/.claude/hooks/moai/shared/utils/announcement_translator.py +206 -0
- moai_adk/templates/.claude/hooks/moai/stop__loop_controller.py +621 -0
- moai_adk/templates/.claude/output-styles/moai/alfred.md +758 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +86 -3
- moai_adk/templates/.claude/output-styles/moai/yoda.md +2 -2
- moai_adk/templates/.claude/settings.json +154 -77
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +252 -198
- moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +169 -323
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +39 -27
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +115 -125
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +150 -150
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +182 -175
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +198 -138
- moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +226 -320
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +43 -222
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +75 -219
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +103 -463
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/component-architecture.md +723 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/nextjs16-patterns.md +713 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/performance-optimization.md +694 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/react19-patterns.md +591 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/state-management.md +680 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/vue35-patterns.md +802 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +118 -339
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +74 -377
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +299 -70
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +205 -182
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/advanced-agent-patterns.md +370 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-cli-reference-official.md +420 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +32 -22
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-devcontainers-official.md +381 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-discover-plugins-official.md +379 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-headless-official.md +378 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +110 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugin-marketplaces-official.md +308 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugins-official.md +640 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sandboxing-official.md +282 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +425 -71
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-statusline-official.md +293 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +325 -143
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +96 -316
- moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +116 -294
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-advanced.md +279 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-implementation.md +267 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +121 -650
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/patterns.md +22 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-ears-format.md +200 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +37 -730
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-tdd-implementation.md +275 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +77 -819
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-implementation.md +244 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-validation.md +219 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +14 -18
- moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +86 -270
- moai_adk/templates/.claude/skills/moai-framework-electron/SKILL.md +288 -0
- moai_adk/templates/.claude/skills/moai-framework-electron/examples.md +2082 -0
- moai_adk/templates/.claude/skills/moai-framework-electron/reference.md +1649 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +76 -582
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +1239 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/modules/advanced-patterns.md +401 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +1136 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +82 -436
- moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +585 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/aspnet-core.md +627 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/blazor-components.md +767 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/cqrs-validation.md +626 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/csharp12-features.md +580 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/efcore-patterns.md +622 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +403 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +65 -542
- moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +1171 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/modules/advanced-patterns.md +531 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +889 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +32 -405
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +114 -293
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +83 -307
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +179 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +973 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +1543 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +42 -279
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +94 -556
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +1608 -0
- moai_adk/templates/.claude/skills/moai-lang-php/modules/advanced-patterns.md +538 -0
- moai_adk/templates/.claude/skills/moai-lang-php/reference.md +1323 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +108 -358
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +84 -482
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +1154 -0
- moai_adk/templates/.claude/skills/moai-lang-r/modules/advanced-patterns.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-r/reference.md +1087 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +106 -610
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +1106 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/modules/advanced-patterns.md +309 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/modules/testing-patterns.md +306 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +1024 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +51 -265
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +106 -442
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/akka-actors.md +479 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/cats-effect.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/functional-programming.md +460 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/spark-data.md +498 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/zio-patterns.md +541 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +88 -457
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/combine-reactive.md +256 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/concurrency.md +270 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/swift6-features.md +265 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/swiftui-patterns.md +314 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +75 -283
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +97 -252
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +64 -240
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +331 -12
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +330 -37
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +90 -287
- moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +200 -206
- moai_adk/templates/.claude/skills/moai-platform-auth0/examples.md +2446 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/adaptive-mfa.md +233 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/akamai-integration.md +214 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/application-credentials.md +280 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-log-events.md +224 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-overview.md +140 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/bot-detection.md +144 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/breached-password-detection.md +187 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/brute-force-protection.md +189 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/certifications.md +282 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/compliance-overview.md +263 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/continuous-session-protection.md +307 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/customize-mfa.md +177 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/dpop-implementation.md +283 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/fapi-implementation.md +259 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/gdpr-compliance.md +313 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/guardian-configuration.md +269 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/highly-regulated-identity.md +272 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/jwt-fundamentals.md +248 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mdl-verification.md +210 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-api-management.md +278 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-factors.md +226 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-overview.md +174 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mtls-sender-constraining.md +316 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/ropg-flow-mfa.md +216 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-center.md +325 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-guidance.md +277 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/state-parameters.md +177 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/step-up-authentication.md +251 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/suspicious-ip-throttling.md +240 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/tenant-access-control.md +179 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/webauthn-fido.md +235 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/reference.md +224 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +75 -330
- moai_adk/templates/.claude/skills/moai-platform-clerk/examples.md +1426 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/modules/advanced-patterns.md +417 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/reference.md +273 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +100 -340
- moai_adk/templates/.claude/skills/moai-platform-convex/examples.md +506 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/auth-integration.md +421 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/file-storage.md +474 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/reactive-queries.md +302 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/server-functions.md +452 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/reference.md +385 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +113 -326
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/examples.md +514 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/custom-claims.md +374 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/phone-auth.md +372 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/social-auth.md +339 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/reference.md +382 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +71 -302
- moai_adk/templates/.claude/skills/moai-platform-firestore/examples.md +445 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/offline-cache.md +392 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/realtime-listeners.md +441 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/security-rules.md +352 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/transactions.md +452 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/reference.md +322 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +101 -412
- moai_adk/templates/.claude/skills/moai-platform-neon/examples.md +470 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/auto-scaling.md +349 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/branching-workflows.md +354 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/connection-pooling.md +412 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/pitr-backups.md +458 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/reference.md +272 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +96 -327
- moai_adk/templates/.claude/skills/moai-platform-railway/examples.md +539 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/docker-deployment.md +261 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/multi-service.md +291 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/networking-domains.md +338 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/volumes-storage.md +353 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/reference.md +374 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +103 -428
- moai_adk/templates/.claude/skills/moai-platform-supabase/examples.md +502 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/auth-integration.md +384 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/edge-functions.md +371 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/postgresql-pgvector.md +231 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/realtime-presence.md +354 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/row-level-security.md +286 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/storage-cdn.md +319 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/typescript-patterns.md +453 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/reference.md +284 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +96 -446
- moai_adk/templates/.claude/skills/moai-platform-vercel/examples.md +502 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/analytics-speed.md +348 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/deployment-config.md +344 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/edge-functions.md +222 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/isr-caching.md +306 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/kv-storage.md +399 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/reference.md +360 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +193 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/examples.md +1099 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/language-specific.md +307 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/pattern-syntax.md +237 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/refactoring-patterns.md +260 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/security-rules.md +239 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/reference.md +288 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/go.yml +90 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/python.yml +101 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/typescript.yml +83 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/complexity-check.yml +94 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/deprecated-apis.yml +84 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/secrets-detection.yml +89 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/sql-injection.yml +45 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/xss-prevention.yml +50 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/sgconfig.yml +54 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +225 -423
- moai_adk/templates/.claude/skills/moai-workflow-loop/SKILL.md +197 -0
- moai_adk/templates/.claude/skills/moai-workflow-loop/examples.md +1063 -0
- moai_adk/templates/.claude/skills/moai-workflow-loop/reference.md +1414 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +211 -314
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +15 -43
- moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +119 -316
- moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +96 -203
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +201 -388
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +52 -3
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +263 -806
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/context7-integration.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/review-workflows.md +500 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/relevance-analysis.md +154 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/safety-analysis.md +148 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/scoring-algorithms.md +196 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/timeliness-analysis.md +168 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/truthfulness-analysis.md +136 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/usability-analysis.md +153 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework.md +257 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +191 -1344
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/analysis-patterns.md +340 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/core-classes.md +299 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/tool-integration.md +380 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/debugging-workflows.md +451 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/error-analysis.md +442 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/optimization-patterns.md +473 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/profiling-techniques.md +481 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/ai-optimization.md +241 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/bottleneck-detection.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/optimization-plan.md +315 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/profiler-core.md +277 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/real-time-monitoring.md +187 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +287 -1194
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/quality-metrics.md +415 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/ai-workflows.md +620 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/patterns.md +692 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/security-analysis.md +429 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +262 -1192
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/static-analysis.md +438 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd/core-classes.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/advanced-features.md +494 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/red-green-refactor.md +316 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-generation.md +471 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-patterns.md +371 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +227 -1222
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/trust5-validation.md +428 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/SKILL.md +228 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/integration-patterns.md +149 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/moai-adk-integration.md +245 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-advanced.md +310 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-development.md +202 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-workflows.md +302 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/registry-architecture.md +271 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/resource-optimization.md +300 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/tools-integration.md +280 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/troubleshooting.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-commands.md +296 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-management.md +217 -0
- moai_adk/templates/.git-hooks/pre-push +162 -59
- moai_adk/templates/.github/workflows/ci-universal.yml +934 -133
- moai_adk/templates/.gitignore +65 -107
- moai_adk/templates/.lsp.json +152 -0
- moai_adk/templates/.mcp.json +2 -20
- moai_adk/templates/.moai/announcements/en.json +18 -0
- moai_adk/templates/.moai/announcements/ja.json +18 -0
- moai_adk/templates/.moai/announcements/ko.json +18 -0
- moai_adk/templates/.moai/announcements/zh.json +18 -0
- moai_adk/templates/.moai/config/config.yaml +8 -2
- moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
- moai_adk/templates/.moai/config/sections/language.yaml +2 -2
- moai_adk/templates/.moai/config/sections/llm.yaml +41 -0
- moai_adk/templates/.moai/config/sections/pricing.yaml +30 -0
- moai_adk/templates/.moai/config/sections/project.yaml +2 -2
- moai_adk/templates/.moai/config/sections/quality.yaml +43 -5
- moai_adk/templates/.moai/config/sections/ralph.yaml +55 -0
- moai_adk/templates/.moai/config/sections/system.yaml +46 -1
- moai_adk/templates/.moai/config/sections/user.yaml +1 -1
- moai_adk/templates/.moai/config/statusline-config.yaml +2 -2
- moai_adk/templates/.moai/llm-configs/glm.json +22 -0
- moai_adk/templates/CLAUDE.ja.md +343 -0
- moai_adk/templates/CLAUDE.ko.md +343 -0
- moai_adk/templates/CLAUDE.md +200 -499
- moai_adk/templates/CLAUDE.zh.md +343 -0
- moai_adk/utils/common.py +37 -0
- moai_adk/version.py +1 -1
- moai_adk-1.1.0.dist-info/METADATA +2443 -0
- moai_adk-1.1.0.dist-info/RECORD +701 -0
- {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/entry_points.txt +2 -0
- moai_adk-1.1.0.dist-info/licenses/LICENSE +99 -0
- moai_adk/core/config/auto_spec_config.py +0 -340
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +0 -901
- moai_adk/core/spec/confidence_scoring.py +0 -680
- moai_adk/core/spec/ears_template_engine.py +0 -1247
- moai_adk/core/spec/quality_validator.py +0 -687
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +0 -670
- moai_adk/templates/.claude/agents/moai/expert-database.md +0 -777
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +0 -1041
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +0 -458
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +0 -1607
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +0 -789
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +0 -469
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +0 -1032
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +0 -438
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +0 -431
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +0 -405
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +0 -336
- moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +0 -402
- moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +0 -607
- moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +0 -300
- moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +0 -537
- moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +0 -520
- moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +0 -574
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +0 -317
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +0 -663
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +0 -190
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +0 -175
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +0 -196
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +0 -17
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +0 -158
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +0 -340
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +0 -713
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +0 -538
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +0 -1336
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +0 -730
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +0 -608
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +0 -1005
- moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +0 -436
- moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +0 -411
- moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +0 -982
- moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +0 -778
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +0 -646
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +0 -782
- moai_adk/templates/.moai/config/questions/_schema.yaml +0 -151
- moai_adk/templates/.moai/config/questions/tab0-init.yaml +0 -251
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +0 -108
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +0 -81
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +0 -634
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +0 -170
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +0 -87
- moai_adk/templates/.moai/scripts/setup-glm.py +0 -136
- moai_adk-0.34.0.dist-info/METADATA +0 -2999
- moai_adk-0.34.0.dist-info/RECORD +0 -463
- moai_adk-0.34.0.dist-info/licenses/LICENSE +0 -21
- /moai_adk/foundation/{git.py → git/__init__.py} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-mermaid/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-mermaid/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-nextra/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-testing/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-testing/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/examples.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/reference.md +0 -0
- {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,1099 @@
|
|
|
1
|
+
# AST-Grep Examples
|
|
2
|
+
|
|
3
|
+
Practical code examples for AST-Grep (sg) across multiple languages and use cases.
|
|
4
|
+
|
|
5
|
+
## Installation and Quick Start
|
|
6
|
+
|
|
7
|
+
### Install AST-Grep
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# macOS
|
|
11
|
+
brew install ast-grep
|
|
12
|
+
|
|
13
|
+
# npm (cross-platform)
|
|
14
|
+
npm install -g @ast-grep/cli
|
|
15
|
+
|
|
16
|
+
# Cargo (Rust)
|
|
17
|
+
cargo install ast-grep
|
|
18
|
+
|
|
19
|
+
# Verify installation
|
|
20
|
+
sg --version
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Basic Usage
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Search for pattern
|
|
27
|
+
sg run --pattern 'console.log($MSG)' --lang javascript src/
|
|
28
|
+
|
|
29
|
+
# Transform code
|
|
30
|
+
sg run --pattern 'oldFunc($A)' --rewrite 'newFunc($A)' --lang python src/
|
|
31
|
+
|
|
32
|
+
# Scan with rules
|
|
33
|
+
sg scan --config sgconfig.yml
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 1. Basic Pattern Search
|
|
39
|
+
|
|
40
|
+
### JavaScript/TypeScript
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# Find all console.log calls
|
|
44
|
+
sg run --pattern 'console.log($$$ARGS)' --lang javascript
|
|
45
|
+
|
|
46
|
+
# Find all variable declarations
|
|
47
|
+
sg run --pattern 'const $NAME = $VALUE' --lang typescript
|
|
48
|
+
|
|
49
|
+
# Find function definitions
|
|
50
|
+
sg run --pattern 'function $NAME($$$PARAMS) { $$$BODY }' --lang javascript
|
|
51
|
+
|
|
52
|
+
# Find arrow functions
|
|
53
|
+
sg run --pattern 'const $NAME = ($$$PARAMS) => $BODY' --lang typescript
|
|
54
|
+
|
|
55
|
+
# Find React useEffect hooks
|
|
56
|
+
sg run --pattern 'useEffect($$$ARGS)' --lang typescriptreact
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Python
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Find function definitions
|
|
63
|
+
sg run --pattern 'def $NAME($$$ARGS): $$$BODY' --lang python
|
|
64
|
+
|
|
65
|
+
# Find class definitions
|
|
66
|
+
sg run --pattern 'class $NAME($$$BASES): $$$BODY' --lang python
|
|
67
|
+
|
|
68
|
+
# Find print statements
|
|
69
|
+
sg run --pattern 'print($$$ARGS)' --lang python
|
|
70
|
+
|
|
71
|
+
# Find decorators
|
|
72
|
+
sg run --pattern '@$DECORATOR' --lang python
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Go
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# Find function definitions
|
|
79
|
+
sg run --pattern 'func $NAME($$$PARAMS) $$$RET { $$$BODY }' --lang go
|
|
80
|
+
|
|
81
|
+
# Find struct definitions
|
|
82
|
+
sg run --pattern 'type $NAME struct { $$$FIELDS }' --lang go
|
|
83
|
+
|
|
84
|
+
# Find goroutines
|
|
85
|
+
sg run --pattern 'go $FUNC($$$ARGS)' --lang go
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Rust
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# Find function definitions
|
|
92
|
+
sg run --pattern 'fn $NAME($$$PARAMS) -> $RET { $$$BODY }' --lang rust
|
|
93
|
+
|
|
94
|
+
# Find macro invocations
|
|
95
|
+
sg run --pattern '$MACRO!($$$ARGS)' --lang rust
|
|
96
|
+
|
|
97
|
+
# Find struct definitions
|
|
98
|
+
sg run --pattern 'struct $NAME { $$$FIELDS }' --lang rust
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## 2. Relational Patterns (inside, has, follows, not)
|
|
104
|
+
|
|
105
|
+
### Inside Rule - Scoped Search
|
|
106
|
+
|
|
107
|
+
```yaml
|
|
108
|
+
# rules/no-console-in-production.js
|
|
109
|
+
id: no-console-in-production
|
|
110
|
+
language: javascript
|
|
111
|
+
severity: warning
|
|
112
|
+
message: 'Remove console.log from production code'
|
|
113
|
+
rule:
|
|
114
|
+
pattern: 'console.log($$$ARGS)'
|
|
115
|
+
inside:
|
|
116
|
+
pattern: 'function $NAME($$$PARAMS) { $$$BODY }'
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Usage
|
|
121
|
+
sg scan --rule rules/no-console-in-production.js src/
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Has Rule - Contains Check
|
|
125
|
+
|
|
126
|
+
```yaml
|
|
127
|
+
# rules/async-without-await.yml
|
|
128
|
+
id: async-without-await
|
|
129
|
+
language: javascript
|
|
130
|
+
severity: warning
|
|
131
|
+
message: 'Async function declared but never uses await'
|
|
132
|
+
rule:
|
|
133
|
+
pattern: 'async function $NAME($$$PARAMS) { $$$BODY }'
|
|
134
|
+
not:
|
|
135
|
+
has:
|
|
136
|
+
pattern: 'await $EXPR'
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Follows Rule - Sequential Check
|
|
140
|
+
|
|
141
|
+
```yaml
|
|
142
|
+
# rules/missing-error-check.yml
|
|
143
|
+
id: missing-error-check
|
|
144
|
+
language: go
|
|
145
|
+
severity: error
|
|
146
|
+
message: 'Function call may return error but error is not checked'
|
|
147
|
+
rule:
|
|
148
|
+
pattern: '$_, $ERR := $CALL()'
|
|
149
|
+
not:
|
|
150
|
+
follows:
|
|
151
|
+
pattern: 'if $ERR != nil { $$$BODY }'
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Precedes Rule - Preceding Check
|
|
155
|
+
|
|
156
|
+
```yaml
|
|
157
|
+
# rules/missing-initialization.yml
|
|
158
|
+
id: missing-initialization
|
|
159
|
+
language: python
|
|
160
|
+
severity: error
|
|
161
|
+
message: 'Variable used before initialization'
|
|
162
|
+
rule:
|
|
163
|
+
pattern: '$VAR = $VALUE'
|
|
164
|
+
not:
|
|
165
|
+
precedes:
|
|
166
|
+
pattern: 'print($VAR)'
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Not Rule - Negation
|
|
170
|
+
|
|
171
|
+
```yaml
|
|
172
|
+
# rules/no-direct-state-mutation.yml
|
|
173
|
+
id: no-direct-state-mutation
|
|
174
|
+
language: javascript
|
|
175
|
+
severity: warning
|
|
176
|
+
message: 'Use setState instead of direct mutation'
|
|
177
|
+
rule:
|
|
178
|
+
pattern: 'this.state.$PROP = $VALUE'
|
|
179
|
+
not:
|
|
180
|
+
has:
|
|
181
|
+
pattern: 'setState'
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Combined Relational Rules
|
|
185
|
+
|
|
186
|
+
```yaml
|
|
187
|
+
# rules/react-hooks-order.yml
|
|
188
|
+
id: react-hooks-order
|
|
189
|
+
language: typescriptreact
|
|
190
|
+
severity: error
|
|
191
|
+
message: 'React hooks must be called in the same order'
|
|
192
|
+
rule:
|
|
193
|
+
all:
|
|
194
|
+
- pattern: 'useState($$$ARGS)'
|
|
195
|
+
- inside:
|
|
196
|
+
pattern: 'function $COMPONENT($$$PROPS) { $$$BODY }'
|
|
197
|
+
- not:
|
|
198
|
+
follows:
|
|
199
|
+
pattern: 'useEffect($$$ARGS)'
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## 3. String Pattern Search
|
|
205
|
+
|
|
206
|
+
### Exact String Match
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
# Find exact string literals
|
|
210
|
+
sg run --pattern '"TODO"' --lang python
|
|
211
|
+
|
|
212
|
+
# Find template literals
|
|
213
|
+
sg run --pattern '`$STRING`' --lang javascript
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### String Pattern with Wildcards
|
|
217
|
+
|
|
218
|
+
```yaml
|
|
219
|
+
# rules/hardcoded-secrets.yml
|
|
220
|
+
id: hardcoded-secrets
|
|
221
|
+
language: python
|
|
222
|
+
severity: error
|
|
223
|
+
message: 'Hardcoded secret detected. Use environment variables.'
|
|
224
|
+
rule:
|
|
225
|
+
any:
|
|
226
|
+
- pattern: 'api_key = "$SECRET"'
|
|
227
|
+
- pattern: 'password = "$SECRET"'
|
|
228
|
+
- pattern: 'token = "$SECRET"'
|
|
229
|
+
not:
|
|
230
|
+
has:
|
|
231
|
+
pattern: 'os.getenv'
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### String in Specific Context
|
|
235
|
+
|
|
236
|
+
```yaml
|
|
237
|
+
# rules/sql-string-concat.yml
|
|
238
|
+
id: sql-string-concat
|
|
239
|
+
language: python
|
|
240
|
+
severity: error
|
|
241
|
+
message: 'SQL query constructed via string concatenation'
|
|
242
|
+
rule:
|
|
243
|
+
pattern: 'cursor.execute("$SQL" + $MORE)'
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### Multi-line String Patterns
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
# Find multi-line strings
|
|
250
|
+
sg run --pattern '"""$CONTENT"""' --lang python
|
|
251
|
+
|
|
252
|
+
# Find template literals with expressions
|
|
253
|
+
sg run --pattern '`$PREFIX ${$EXPR} $SUFFIX`' --lang javascript
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## 4. Code Transformation (Codemod) Patterns
|
|
259
|
+
|
|
260
|
+
### Simple Rename
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
# Rename function globally
|
|
264
|
+
sg run --pattern 'oldFunc($ARGS)' --rewrite 'newFunc($ARGS)' --lang python src/
|
|
265
|
+
|
|
266
|
+
# Rename variable
|
|
267
|
+
sg run --pattern 'var $NAME = $VALUE' --rewrite 'let $NAME = $VALUE' --lang javascript src/
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### API Migration
|
|
271
|
+
|
|
272
|
+
```yaml
|
|
273
|
+
# rules/migrate-axios-to-fetch.yml
|
|
274
|
+
id: migrate-axios-to-fetch
|
|
275
|
+
language: typescript
|
|
276
|
+
rule:
|
|
277
|
+
pattern: 'axios.get($URL)'
|
|
278
|
+
fix: |
|
|
279
|
+
fetch($URL)
|
|
280
|
+
.then(res => res.json())
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### Convert Callback to Promise
|
|
284
|
+
|
|
285
|
+
```yaml
|
|
286
|
+
# rules/callback-to-promise.yml
|
|
287
|
+
id: callback-to-promise
|
|
288
|
+
language: javascript
|
|
289
|
+
rule:
|
|
290
|
+
pattern: |
|
|
291
|
+
fs.readFile($PATH, function($ERR, $DATA) {
|
|
292
|
+
$$$BODY
|
|
293
|
+
})
|
|
294
|
+
fix: |
|
|
295
|
+
fs.promises.readFile($PATH)
|
|
296
|
+
.then($DATA => {
|
|
297
|
+
$$$BODY
|
|
298
|
+
})
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
### Add Error Handling
|
|
302
|
+
|
|
303
|
+
```yaml
|
|
304
|
+
# rules/add-try-catch.yml
|
|
305
|
+
id: add-try-catch
|
|
306
|
+
language: python
|
|
307
|
+
rule:
|
|
308
|
+
pattern: |
|
|
309
|
+
$CALL()
|
|
310
|
+
inside:
|
|
311
|
+
pattern: 'def $FUNC($$$ARGS): $$$BODY'
|
|
312
|
+
fix: |
|
|
313
|
+
try:
|
|
314
|
+
$CALL()
|
|
315
|
+
except Exception as e:
|
|
316
|
+
logger.error(f"Error in $FUNC: {e}")
|
|
317
|
+
raise
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
### Extract Common Pattern
|
|
321
|
+
|
|
322
|
+
```yaml
|
|
323
|
+
# rules/extract-logger.yml
|
|
324
|
+
id: extract-logger
|
|
325
|
+
language: python
|
|
326
|
+
rule:
|
|
327
|
+
pattern: |
|
|
328
|
+
print("DEBUG: $MSG")
|
|
329
|
+
fix: |
|
|
330
|
+
logger.debug($MSG)
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### Convert ES5 to ES6
|
|
334
|
+
|
|
335
|
+
```yaml
|
|
336
|
+
# rules/var-to-const.yml
|
|
337
|
+
id: var-to-const
|
|
338
|
+
language: javascript
|
|
339
|
+
rule:
|
|
340
|
+
pattern: 'var $NAME = $VALUE'
|
|
341
|
+
fix: 'const $NAME = $VALUE'
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### Add Type Annotations
|
|
345
|
+
|
|
346
|
+
```yaml
|
|
347
|
+
# rules/add-type-hints.yml
|
|
348
|
+
id: add-type-hints
|
|
349
|
+
language: python
|
|
350
|
+
rule:
|
|
351
|
+
pattern: 'def $NAME($$$ARGS):'
|
|
352
|
+
fix: 'def $NAME($$$ARGS) -> None:'
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## 5. Refactoring Patterns
|
|
358
|
+
|
|
359
|
+
### Function Extraction
|
|
360
|
+
|
|
361
|
+
```yaml
|
|
362
|
+
# rules/extract-validation.yml
|
|
363
|
+
id: extract-validation
|
|
364
|
+
language: python
|
|
365
|
+
severity: suggestion
|
|
366
|
+
message: 'Consider extracting validation logic'
|
|
367
|
+
rule:
|
|
368
|
+
pattern: |
|
|
369
|
+
if $COND1 and $COND2:
|
|
370
|
+
$$$BODY
|
|
371
|
+
inside:
|
|
372
|
+
pattern: 'def $FUNC($$$ARGS):'
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
### Variable Renaming
|
|
376
|
+
|
|
377
|
+
```bash
|
|
378
|
+
# Rename poorly named variables
|
|
379
|
+
sg run --pattern '$OBJ.doSomething()' --rewrite '$OBJ.performAction()' --lang javascript
|
|
380
|
+
|
|
381
|
+
# Rename to snake_case (Python)
|
|
382
|
+
sg run --pattern '$myVariable' --rewrite '$my_variable' --lang python
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
### Extract Magic Numbers
|
|
386
|
+
|
|
387
|
+
```yaml
|
|
388
|
+
# rules/magic-number.yml
|
|
389
|
+
id: magic-number
|
|
390
|
+
language: python
|
|
391
|
+
severity: warning
|
|
392
|
+
message: 'Magic number detected. Use named constant.'
|
|
393
|
+
rule:
|
|
394
|
+
pattern: 'timeout = $NUM'
|
|
395
|
+
not:
|
|
396
|
+
has:
|
|
397
|
+
pattern: 'CONST_'
|
|
398
|
+
where:
|
|
399
|
+
NUM:
|
|
400
|
+
regex: '^[0-9]+$'
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
### Simplify Conditional
|
|
404
|
+
|
|
405
|
+
```yaml
|
|
406
|
+
# rules/simplify-boolean.yml
|
|
407
|
+
id: simplify-boolean
|
|
408
|
+
language: javascript
|
|
409
|
+
severity: suggestion
|
|
410
|
+
message: 'Simplify boolean expression'
|
|
411
|
+
rule:
|
|
412
|
+
pattern: 'if ($COND == true) { $BODY }'
|
|
413
|
+
fix: 'if ($COND) { $BODY }'
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
### Remove Dead Code
|
|
417
|
+
|
|
418
|
+
```yaml
|
|
419
|
+
# rules/dead-import.yml
|
|
420
|
+
id: dead-import
|
|
421
|
+
language: python
|
|
422
|
+
severity: warning
|
|
423
|
+
message: 'Imported module never used'
|
|
424
|
+
rule:
|
|
425
|
+
pattern: 'import $MODULE'
|
|
426
|
+
not:
|
|
427
|
+
has:
|
|
428
|
+
pattern: '$MODULE.'
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
### Convert to Modern Syntax
|
|
432
|
+
|
|
433
|
+
```yaml
|
|
434
|
+
# rules/convert-to-f-string.yml
|
|
435
|
+
id: convert-to-f-string
|
|
436
|
+
language: python
|
|
437
|
+
severity: suggestion
|
|
438
|
+
message: 'Use f-string instead of format()'
|
|
439
|
+
rule:
|
|
440
|
+
pattern: '"{} ".format($$$ARGS)'
|
|
441
|
+
fix: 'f"{$$$ARGS}"'
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
---
|
|
445
|
+
|
|
446
|
+
## 6. AST-Based Code Exploration
|
|
447
|
+
|
|
448
|
+
### Find All Call Sites of a Function
|
|
449
|
+
|
|
450
|
+
```bash
|
|
451
|
+
# Find all calls to specific function
|
|
452
|
+
sg run --pattern 'myFunction($$$ARGS)' --lang python
|
|
453
|
+
|
|
454
|
+
# Find all method calls on specific object
|
|
455
|
+
sg run --pattern '$OBJ.method($$$ARGS)' --lang javascript
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
### Find Function Return Patterns
|
|
459
|
+
|
|
460
|
+
```yaml
|
|
461
|
+
# rules/early-return.yml
|
|
462
|
+
id: early-return
|
|
463
|
+
language: python
|
|
464
|
+
severity: info
|
|
465
|
+
message: 'Early return pattern detected'
|
|
466
|
+
rule:
|
|
467
|
+
pattern: |
|
|
468
|
+
if $COND:
|
|
469
|
+
return $VALUE
|
|
470
|
+
$$$REST
|
|
471
|
+
inside:
|
|
472
|
+
pattern: 'def $FUNC($$$ARGS):'
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
### Find Nested Functions
|
|
476
|
+
|
|
477
|
+
```bash
|
|
478
|
+
# Find nested function definitions
|
|
479
|
+
sg run --pattern 'def outer($$$ARGS): { def inner($$$ARGS): $$$BODY }' --lang python
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
### Find Class Hierarchy
|
|
483
|
+
|
|
484
|
+
```yaml
|
|
485
|
+
# rules/find-override.yml
|
|
486
|
+
id: find-override
|
|
487
|
+
language: python
|
|
488
|
+
severity: info
|
|
489
|
+
message: 'Method override detected'
|
|
490
|
+
rule:
|
|
491
|
+
pattern: |
|
|
492
|
+
class $CLASS($BASE):
|
|
493
|
+
def $METHOD($$$ARGS):
|
|
494
|
+
$$$BODY
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
### Find Async Patterns
|
|
498
|
+
|
|
499
|
+
```bash
|
|
500
|
+
# Find all async/await patterns
|
|
501
|
+
sg run --pattern 'async function $NAME($$$ARGS) { $$$BODY }' --lang javascript
|
|
502
|
+
|
|
503
|
+
# Find Promise chains
|
|
504
|
+
sg run --pattern '$PROMISE.then($$$ARGS).catch($$$CATCH)' --lang typescript
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
---
|
|
508
|
+
|
|
509
|
+
## 7. Security Scanning (OWASP Top 10)
|
|
510
|
+
|
|
511
|
+
### SQL Injection
|
|
512
|
+
|
|
513
|
+
```yaml
|
|
514
|
+
# rules/security/sql-injection.yml
|
|
515
|
+
id: sql-injection
|
|
516
|
+
language: python
|
|
517
|
+
severity: error
|
|
518
|
+
message: 'Potential SQL injection vulnerability. Use parameterized queries.'
|
|
519
|
+
rule:
|
|
520
|
+
any:
|
|
521
|
+
- pattern: 'cursor.execute($QUERY % $ARGS)'
|
|
522
|
+
- pattern: 'cursor.execute($QUERY.format($$$ARGS))'
|
|
523
|
+
- pattern: 'cursor.execute(f"$$$SQL")'
|
|
524
|
+
- pattern: 'cursor.execute("$SQL" + $MORE)'
|
|
525
|
+
fix: 'cursor.execute($QUERY, $ARGS)'
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
### XSS (Cross-Site Scripting)
|
|
529
|
+
|
|
530
|
+
```yaml
|
|
531
|
+
# rules/security/xss-risk.yml
|
|
532
|
+
id: xss-risk
|
|
533
|
+
language: javascript
|
|
534
|
+
severity: error
|
|
535
|
+
message: 'Potential XSS vulnerability. Sanitize user input.'
|
|
536
|
+
rule:
|
|
537
|
+
pattern: 'innerHTML = $USER_INPUT'
|
|
538
|
+
inside:
|
|
539
|
+
pattern: 'function $FUNC($$$ARGS):'
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
### Hardcoded Credentials
|
|
543
|
+
|
|
544
|
+
```yaml
|
|
545
|
+
# rules/security/hardcoded-credentials.yml
|
|
546
|
+
id: hardcoded-credentials
|
|
547
|
+
language: python
|
|
548
|
+
severity: error
|
|
549
|
+
message: 'Hardcoded credentials detected. Use environment variables.'
|
|
550
|
+
rule:
|
|
551
|
+
any:
|
|
552
|
+
- pattern: 'password = "$Creds"'
|
|
553
|
+
- pattern: 'api_key = "$Creds"'
|
|
554
|
+
- pattern: 'secret = "$Creds"'
|
|
555
|
+
- pattern: 'token = "$Creds"'
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
### Command Injection
|
|
559
|
+
|
|
560
|
+
```yaml
|
|
561
|
+
# rules/security/command-injection.yml
|
|
562
|
+
id: command-injection
|
|
563
|
+
language: python
|
|
564
|
+
severity: error
|
|
565
|
+
message: 'Potential command injection. Use subprocess.run with list args.'
|
|
566
|
+
rule:
|
|
567
|
+
pattern: 'os.system($CMD)'
|
|
568
|
+
not:
|
|
569
|
+
has:
|
|
570
|
+
pattern: 'shlex.quote'
|
|
571
|
+
```
|
|
572
|
+
|
|
573
|
+
### Insecure Deserialization
|
|
574
|
+
|
|
575
|
+
```yaml
|
|
576
|
+
# rules/security/insecure-deserialize.yml
|
|
577
|
+
id: insecure-deserialize
|
|
578
|
+
language: python
|
|
579
|
+
severity: error
|
|
580
|
+
message: 'Insecure deserialization detected. Use safe alternatives.'
|
|
581
|
+
rule:
|
|
582
|
+
pattern: 'pickle.loads($DATA)'
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
### Weak Cryptography
|
|
586
|
+
|
|
587
|
+
```yaml
|
|
588
|
+
# rules/security/weak-crypto.yml
|
|
589
|
+
id: weak-crypto
|
|
590
|
+
language: python
|
|
591
|
+
severity: error
|
|
592
|
+
message: 'Weak cryptography algorithm detected. Use AES-256.'
|
|
593
|
+
rule:
|
|
594
|
+
any:
|
|
595
|
+
- pattern: 'Cipher.algorithms_ecb($$$ARGS)'
|
|
596
|
+
- pattern: 'DES.new($$$ARGS)'
|
|
597
|
+
- pattern: 'MD5.new($$$ARGS)'
|
|
598
|
+
```
|
|
599
|
+
|
|
600
|
+
### Path Traversal
|
|
601
|
+
|
|
602
|
+
```yaml
|
|
603
|
+
# rules/security/path-traversal.yml
|
|
604
|
+
id: path-traversal
|
|
605
|
+
language: python
|
|
606
|
+
severity: error
|
|
607
|
+
message: 'Path traversal vulnerability. Validate user input.'
|
|
608
|
+
rule:
|
|
609
|
+
pattern: 'open($USER_INPUT)'
|
|
610
|
+
not:
|
|
611
|
+
has:
|
|
612
|
+
pattern: 'os.path.abspath'
|
|
613
|
+
```
|
|
614
|
+
|
|
615
|
+
### Sensitive Data Exposure
|
|
616
|
+
|
|
617
|
+
```yaml
|
|
618
|
+
# rules/security/log-sensitive-data.yml
|
|
619
|
+
id: log-sensitive-data
|
|
620
|
+
language: javascript
|
|
621
|
+
severity: warning
|
|
622
|
+
message: 'Logging sensitive data detected. Remove before production.'
|
|
623
|
+
rule:
|
|
624
|
+
pattern: 'console.log($$$SENSITIVE)'
|
|
625
|
+
has:
|
|
626
|
+
pattern: 'password'
|
|
627
|
+
```
|
|
628
|
+
|
|
629
|
+
### Missing Authentication
|
|
630
|
+
|
|
631
|
+
```yaml
|
|
632
|
+
# rules/security/missing-auth.yml
|
|
633
|
+
id: missing-auth
|
|
634
|
+
language: javascript
|
|
635
|
+
severity: error
|
|
636
|
+
message: 'Public endpoint without authentication check'
|
|
637
|
+
rule:
|
|
638
|
+
pattern: |
|
|
639
|
+
app.get($ROUTE, function($REQ, $RES) {
|
|
640
|
+
$$$BODY
|
|
641
|
+
})
|
|
642
|
+
not:
|
|
643
|
+
has:
|
|
644
|
+
pattern: 'authenticate'
|
|
645
|
+
```
|
|
646
|
+
|
|
647
|
+
### CSRF Protection
|
|
648
|
+
|
|
649
|
+
```yaml
|
|
650
|
+
# rules/security/csrf-protection.yml
|
|
651
|
+
id: csrf-protection
|
|
652
|
+
language: javascript
|
|
653
|
+
severity: error
|
|
654
|
+
message: 'State-changing operation without CSRF token'
|
|
655
|
+
rule:
|
|
656
|
+
pattern: |
|
|
657
|
+
app.post($ROUTE, function($REQ, $RES) {
|
|
658
|
+
$$$BODY
|
|
659
|
+
})
|
|
660
|
+
not:
|
|
661
|
+
has:
|
|
662
|
+
pattern: 'csrfToken'
|
|
663
|
+
```
|
|
664
|
+
|
|
665
|
+
---
|
|
666
|
+
|
|
667
|
+
## 8. Language-Specific Examples
|
|
668
|
+
|
|
669
|
+
### Python
|
|
670
|
+
|
|
671
|
+
```yaml
|
|
672
|
+
# Find context managers
|
|
673
|
+
pattern: 'with $CTX as $VAR: $$$BODY'
|
|
674
|
+
|
|
675
|
+
# Find list comprehensions
|
|
676
|
+
pattern: '[$EXPR for $VAR in $ITER]'
|
|
677
|
+
|
|
678
|
+
# Find type hints
|
|
679
|
+
pattern: 'def $FUNC($ARGS) -> $RET: $$$BODY'
|
|
680
|
+
|
|
681
|
+
# Find dataclass definitions
|
|
682
|
+
pattern: '@dataclass class $NAME: $$$BODY'
|
|
683
|
+
```
|
|
684
|
+
|
|
685
|
+
### JavaScript/TypeScript
|
|
686
|
+
|
|
687
|
+
```yaml
|
|
688
|
+
# Find React components
|
|
689
|
+
pattern: 'function $NAME($$$PROPS) { return $$$JSX }'
|
|
690
|
+
|
|
691
|
+
# Find class components
|
|
692
|
+
pattern: 'class $NAME extends React.Component { render() { return $$$JSX } }'
|
|
693
|
+
|
|
694
|
+
# Find JSX elements
|
|
695
|
+
pattern: '<$TAG $$$PROPS>$CHILDREN</$TAG>'
|
|
696
|
+
|
|
697
|
+
# Find TypeScript interfaces
|
|
698
|
+
pattern: 'interface $NAME { $$$MEMBERS }'
|
|
699
|
+
```
|
|
700
|
+
|
|
701
|
+
### Go
|
|
702
|
+
|
|
703
|
+
```yaml
|
|
704
|
+
# Find interface implementations
|
|
705
|
+
pattern: 'func ($SELF *$TYPE) $METHOD($$$ARGS) $$$RET { $$$BODY }'
|
|
706
|
+
|
|
707
|
+
# Find channel operations
|
|
708
|
+
pattern: '$CHAN <- $VALUE'
|
|
709
|
+
|
|
710
|
+
# Find select statements
|
|
711
|
+
pattern: 'select { $$$CASES }'
|
|
712
|
+
|
|
713
|
+
# Find goroutines
|
|
714
|
+
pattern: 'go $FUNC($$$ARGS)'
|
|
715
|
+
```
|
|
716
|
+
|
|
717
|
+
### Rust
|
|
718
|
+
|
|
719
|
+
```yaml
|
|
720
|
+
# Find trait implementations
|
|
721
|
+
pattern: 'impl $TRAIT for $TYPE { $$$METHODS }'
|
|
722
|
+
|
|
723
|
+
# Find match expressions
|
|
724
|
+
pattern: 'match $EXPR { $$$ARMS }'
|
|
725
|
+
|
|
726
|
+
# Find closures
|
|
727
|
+
pattern: '|$CAPTURE| $BODY'
|
|
728
|
+
|
|
729
|
+
# Find async functions
|
|
730
|
+
pattern: 'async fn $NAME($$$ARGS) -> $RET { $$$BODY }'
|
|
731
|
+
```
|
|
732
|
+
|
|
733
|
+
### Java
|
|
734
|
+
|
|
735
|
+
```yaml
|
|
736
|
+
# Find class definitions
|
|
737
|
+
pattern: 'class $NAME $$$EXTENDS $$$IMPLEMENTS { $$$BODY }'
|
|
738
|
+
|
|
739
|
+
# Find method definitions
|
|
740
|
+
pattern: 'public $RET $NAME($$$ARGS) { $$$BODY }'
|
|
741
|
+
|
|
742
|
+
# Find annotations
|
|
743
|
+
pattern: '@$ANNOTATION'
|
|
744
|
+
|
|
745
|
+
# Find lambda expressions
|
|
746
|
+
pattern: '($$$PARAMS) -> $EXPR'
|
|
747
|
+
```
|
|
748
|
+
|
|
749
|
+
### C++
|
|
750
|
+
|
|
751
|
+
```yaml
|
|
752
|
+
# Find class definitions
|
|
753
|
+
pattern: 'class $NAME { $$$MEMBERS }'
|
|
754
|
+
|
|
755
|
+
# Find template functions
|
|
756
|
+
pattern: 'template<$$$PARAMS> $RET $FUNC($$$ARGS)'
|
|
757
|
+
|
|
758
|
+
# Find lambda expressions
|
|
759
|
+
pattern: '[$$$CAPTURE]($$$ARGS) { $$$BODY }'
|
|
760
|
+
|
|
761
|
+
# Find smart pointers
|
|
762
|
+
pattern: 'std::unique_ptr<$TYPE>'
|
|
763
|
+
```
|
|
764
|
+
|
|
765
|
+
---
|
|
766
|
+
|
|
767
|
+
## 9. CI/CD Integration
|
|
768
|
+
|
|
769
|
+
### GitHub Actions
|
|
770
|
+
|
|
771
|
+
```yaml
|
|
772
|
+
# .github/workflows/ast-grep-scan.yml
|
|
773
|
+
name: AST-Grep Security Scan
|
|
774
|
+
|
|
775
|
+
on: [push, pull_request]
|
|
776
|
+
|
|
777
|
+
jobs:
|
|
778
|
+
ast-grep:
|
|
779
|
+
runs-on: ubuntu-latest
|
|
780
|
+
steps:
|
|
781
|
+
- uses: actions/checkout@v3
|
|
782
|
+
|
|
783
|
+
- name: Install AST-Grep
|
|
784
|
+
run: npm install -g @ast-grep/cli
|
|
785
|
+
|
|
786
|
+
- name: Run Security Scan
|
|
787
|
+
run: sg scan --config .claude/skills/moai-tool-ast-grep/rules/sgconfig.yml --format github
|
|
788
|
+
|
|
789
|
+
- name: Upload Results
|
|
790
|
+
if: always()
|
|
791
|
+
uses: actions/upload-artifact@v3
|
|
792
|
+
with:
|
|
793
|
+
name: ast-grep-results
|
|
794
|
+
path: sg-report.json
|
|
795
|
+
```
|
|
796
|
+
|
|
797
|
+
### Pre-commit Hook
|
|
798
|
+
|
|
799
|
+
```bash
|
|
800
|
+
# .git/hooks/pre-commit
|
|
801
|
+
#!/bin/bash
|
|
802
|
+
echo "Running AST-Grep security scan..."
|
|
803
|
+
|
|
804
|
+
sg scan --config .claude/skills/moai-tool-ast-grep/rules/sgconfig.yml --format compact
|
|
805
|
+
|
|
806
|
+
if [ $? -ne 0 ]; then
|
|
807
|
+
echo "AST-Grep found issues. Please fix before committing."
|
|
808
|
+
exit 1
|
|
809
|
+
fi
|
|
810
|
+
|
|
811
|
+
echo "AST-Grep scan passed."
|
|
812
|
+
```
|
|
813
|
+
|
|
814
|
+
### GitLab CI
|
|
815
|
+
|
|
816
|
+
```yaml
|
|
817
|
+
# .gitlab-ci.yml
|
|
818
|
+
ast-grep-scan:
|
|
819
|
+
stage: test
|
|
820
|
+
image: node:latest
|
|
821
|
+
script:
|
|
822
|
+
- npm install -g @ast-grep/cli
|
|
823
|
+
- sg scan --config sgconfig.yml --json > sg-report.json
|
|
824
|
+
artifacts:
|
|
825
|
+
reports:
|
|
826
|
+
sast: sg-report.json
|
|
827
|
+
only:
|
|
828
|
+
- merge_requests
|
|
829
|
+
- main
|
|
830
|
+
```
|
|
831
|
+
|
|
832
|
+
### Jenkins Pipeline
|
|
833
|
+
|
|
834
|
+
```groovy
|
|
835
|
+
// Jenkinsfile
|
|
836
|
+
pipeline {
|
|
837
|
+
agent any
|
|
838
|
+
stages {
|
|
839
|
+
stage('AST-Grep Scan') {
|
|
840
|
+
steps {
|
|
841
|
+
sh 'npm install -g @ast-grep/cli'
|
|
842
|
+
sh 'sg scan --config sgconfig.yml --format json > sg-report.json'
|
|
843
|
+
}
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
post {
|
|
847
|
+
always {
|
|
848
|
+
archiveArtifacts artifacts: 'sg-report.json'
|
|
849
|
+
}
|
|
850
|
+
}
|
|
851
|
+
}
|
|
852
|
+
```
|
|
853
|
+
|
|
854
|
+
---
|
|
855
|
+
|
|
856
|
+
## 10. CLI Usage Examples
|
|
857
|
+
|
|
858
|
+
### Search Operations
|
|
859
|
+
|
|
860
|
+
```bash
|
|
861
|
+
# Basic search
|
|
862
|
+
sg run --pattern 'console.log($MSG)' --lang javascript
|
|
863
|
+
|
|
864
|
+
# Recursive search in directory
|
|
865
|
+
sg run --pattern 'def $FUNC($$$ARGS):' --lang python src/
|
|
866
|
+
|
|
867
|
+
# Search with JSON output
|
|
868
|
+
sg run --pattern 'useState($$$ARGS)' --lang typescriptreact --json
|
|
869
|
+
|
|
870
|
+
# Search with file filter
|
|
871
|
+
sg run --pattern 'TODO:' --lang python --glob '**/*.py'
|
|
872
|
+
|
|
873
|
+
# Interactive search
|
|
874
|
+
sg run --pattern 'fetch($$$ARGS)' --lang javascript --interactive
|
|
875
|
+
```
|
|
876
|
+
|
|
877
|
+
### Transform Operations
|
|
878
|
+
|
|
879
|
+
```bash
|
|
880
|
+
# Simple rename
|
|
881
|
+
sg run --pattern 'foo($A)' --rewrite 'bar($A)' --lang python
|
|
882
|
+
|
|
883
|
+
# Complex transformation with YAML
|
|
884
|
+
sg run --rule convert-to-arrow-function.yml src/
|
|
885
|
+
|
|
886
|
+
# Dry run (preview changes)
|
|
887
|
+
sg run --pattern 'var $X = $Y' --rewrite 'let $X = $Y' --lang javascript --dry-run
|
|
888
|
+
|
|
889
|
+
# Backup before transformation
|
|
890
|
+
sg run --pattern 'oldAPI($$$ARGS)' --rewrite 'newAPI($$$ARGS)' --lang javascript --backup
|
|
891
|
+
```
|
|
892
|
+
|
|
893
|
+
### Scan Operations
|
|
894
|
+
|
|
895
|
+
```bash
|
|
896
|
+
# Scan with configuration
|
|
897
|
+
sg scan --config sgconfig.yml
|
|
898
|
+
|
|
899
|
+
# Scan specific directory
|
|
900
|
+
sg scan --config sgconfig.yml src/
|
|
901
|
+
|
|
902
|
+
# Scan with severity filter
|
|
903
|
+
sg scan --config sgconfig.yml --severity error
|
|
904
|
+
|
|
905
|
+
# JSON output
|
|
906
|
+
sg scan --config sgconfig.yml --json > results.json
|
|
907
|
+
|
|
908
|
+
# SARIF format for CI/CD
|
|
909
|
+
sg scan --config sgconfig.yml --format sarif -o results.sarif
|
|
910
|
+
```
|
|
911
|
+
|
|
912
|
+
### Test Operations
|
|
913
|
+
|
|
914
|
+
```bash
|
|
915
|
+
# Test all rules
|
|
916
|
+
sg test
|
|
917
|
+
|
|
918
|
+
# Test specific rule
|
|
919
|
+
sg test rules/security/sql-injection.yml
|
|
920
|
+
|
|
921
|
+
# Verbose test output
|
|
922
|
+
sg test --verbose
|
|
923
|
+
|
|
924
|
+
# Watch mode (auto-run on file change)
|
|
925
|
+
sg test --watch
|
|
926
|
+
```
|
|
927
|
+
|
|
928
|
+
### Utility Commands
|
|
929
|
+
|
|
930
|
+
```bash
|
|
931
|
+
# Check version
|
|
932
|
+
sg --version
|
|
933
|
+
|
|
934
|
+
# Help for specific command
|
|
935
|
+
sg run --help
|
|
936
|
+
|
|
937
|
+
# Generate configuration template
|
|
938
|
+
sg init
|
|
939
|
+
|
|
940
|
+
# Validate configuration
|
|
941
|
+
sg validate sgconfig.yml
|
|
942
|
+
|
|
943
|
+
# List supported languages
|
|
944
|
+
sg lang list
|
|
945
|
+
```
|
|
946
|
+
|
|
947
|
+
---
|
|
948
|
+
|
|
949
|
+
## Common Workflows
|
|
950
|
+
|
|
951
|
+
### Find and Replace Function Name
|
|
952
|
+
|
|
953
|
+
```bash
|
|
954
|
+
# Step 1: Find all usages
|
|
955
|
+
sg run --pattern 'oldFunc($$$ARGS)' --lang javascript --json > usages.json
|
|
956
|
+
|
|
957
|
+
# Step 2: Preview changes
|
|
958
|
+
sg run --pattern 'oldFunc($$$ARGS)' --rewrite 'newFunc($$$ARGS)' --lang javascript --dry-run
|
|
959
|
+
|
|
960
|
+
# Step 3: Apply changes
|
|
961
|
+
sg run --pattern 'oldFunc($$$ARGS)' --rewrite 'newFunc($$$ARGS)' --lang javascript
|
|
962
|
+
```
|
|
963
|
+
|
|
964
|
+
### Security Audit
|
|
965
|
+
|
|
966
|
+
```bash
|
|
967
|
+
# Scan for security issues
|
|
968
|
+
sg scan --config .claude/skills/moai-tool-ast-grep/rules/sgconfig.yml --severity error
|
|
969
|
+
|
|
970
|
+
# Generate SARIF report for GitHub Security
|
|
971
|
+
sg scan --config sgconfig.yml --format sarif -o security-report.sarif
|
|
972
|
+
|
|
973
|
+
# View results in GitHub
|
|
974
|
+
# Upload security-report.sarif to GitHub Security tab
|
|
975
|
+
```
|
|
976
|
+
|
|
977
|
+
### Code Quality Check
|
|
978
|
+
|
|
979
|
+
```bash
|
|
980
|
+
# Run all quality rules
|
|
981
|
+
sg scan --config sgconfig.yml --severity warning
|
|
982
|
+
|
|
983
|
+
# Generate HTML report
|
|
984
|
+
sg scan --config sgconfig.yml --format html -o quality-report.html
|
|
985
|
+
|
|
986
|
+
# Filter by rule ID
|
|
987
|
+
sg scan --config sgconfig.yml --rule sql-injection
|
|
988
|
+
```
|
|
989
|
+
|
|
990
|
+
### Refactoring Session
|
|
991
|
+
|
|
992
|
+
```bash
|
|
993
|
+
# Step 1: Identify patterns
|
|
994
|
+
sg run --pattern 'var $NAME = $VALUE' --lang javascript
|
|
995
|
+
|
|
996
|
+
# Step 2: Create transformation rule
|
|
997
|
+
# Edit refactoring-rule.yml
|
|
998
|
+
|
|
999
|
+
# Step 3: Test rule
|
|
1000
|
+
sg test refactoring-rule.yml
|
|
1001
|
+
|
|
1002
|
+
# Step 4: Apply transformation
|
|
1003
|
+
sg run --rule refactoring-rule.yml src/
|
|
1004
|
+
|
|
1005
|
+
# Step 5: Verify with tests
|
|
1006
|
+
pytest tests/
|
|
1007
|
+
```
|
|
1008
|
+
|
|
1009
|
+
---
|
|
1010
|
+
|
|
1011
|
+
## Performance Tips
|
|
1012
|
+
|
|
1013
|
+
### Optimize Search Speed
|
|
1014
|
+
|
|
1015
|
+
```bash
|
|
1016
|
+
# Use language filter
|
|
1017
|
+
sg run --pattern 'function($$$ARGS)' --lang javascript
|
|
1018
|
+
|
|
1019
|
+
# Use glob pattern for file filtering
|
|
1020
|
+
sg run --pattern 'import $MODULE' --lang python --glob '**/models/*.py'
|
|
1021
|
+
|
|
1022
|
+
# Exclude directories
|
|
1023
|
+
sg run --pattern 'const $X = $Y' --lang javascript --exclude-dir node_modules
|
|
1024
|
+
|
|
1025
|
+
# Parallel execution (default)
|
|
1026
|
+
sg run --pattern 'TODO:' --lang python -j 4
|
|
1027
|
+
```
|
|
1028
|
+
|
|
1029
|
+
### Memory Management
|
|
1030
|
+
|
|
1031
|
+
```bash
|
|
1032
|
+
# Limit file size
|
|
1033
|
+
sg scan --config sgconfig.yml --max-file-size 1MB
|
|
1034
|
+
|
|
1035
|
+
# Process files in batches
|
|
1036
|
+
sg run --pattern 'TODO:' --lang python --batch-size 100
|
|
1037
|
+
|
|
1038
|
+
# Use incremental scanning
|
|
1039
|
+
sg scan --config sgconfig.yml --incremental
|
|
1040
|
+
```
|
|
1041
|
+
|
|
1042
|
+
---
|
|
1043
|
+
|
|
1044
|
+
## Troubleshooting
|
|
1045
|
+
|
|
1046
|
+
### Pattern Not Matching
|
|
1047
|
+
|
|
1048
|
+
```bash
|
|
1049
|
+
# Check AST structure
|
|
1050
|
+
sg parse --lang python file.py
|
|
1051
|
+
|
|
1052
|
+
# Test pattern interactively
|
|
1053
|
+
sg run --pattern 'def $FUNC($$$ARGS):' --lang python --interactive
|
|
1054
|
+
|
|
1055
|
+
# Verify language support
|
|
1056
|
+
sg lang list | grep python
|
|
1057
|
+
```
|
|
1058
|
+
|
|
1059
|
+
### Transformation Issues
|
|
1060
|
+
|
|
1061
|
+
```bash
|
|
1062
|
+
# Dry run first
|
|
1063
|
+
sg run --pattern 'foo($A)' --rewrite 'bar($A)' --lang python --dry-run
|
|
1064
|
+
|
|
1065
|
+
# Check rewrite syntax
|
|
1066
|
+
sg test --rule rule.yml
|
|
1067
|
+
|
|
1068
|
+
# Backup before apply
|
|
1069
|
+
sg run --pattern 'foo($A)' --rewrite 'bar($A)' --lang python --backup
|
|
1070
|
+
```
|
|
1071
|
+
|
|
1072
|
+
### Configuration Problems
|
|
1073
|
+
|
|
1074
|
+
```bash
|
|
1075
|
+
# Validate configuration
|
|
1076
|
+
sg validate sgconfig.yml
|
|
1077
|
+
|
|
1078
|
+
# Check rule syntax
|
|
1079
|
+
sg test --rule rule.yml --verbose
|
|
1080
|
+
|
|
1081
|
+
# Debug mode
|
|
1082
|
+
sg scan --config sgconfig.yml --debug
|
|
1083
|
+
```
|
|
1084
|
+
|
|
1085
|
+
---
|
|
1086
|
+
|
|
1087
|
+
## Reference
|
|
1088
|
+
|
|
1089
|
+
- [AST-Grep Official Documentation](https://ast-grep.github.io/)
|
|
1090
|
+
- [Pattern Syntax Reference](https://ast-grep.github.io/reference/pattern.html)
|
|
1091
|
+
- [Rule Configuration](https://ast-grep.github.io/reference/yaml.html)
|
|
1092
|
+
- [Pattern Playground](https://ast-grep.github.io/playground.html)
|
|
1093
|
+
- [GitHub Repository](https://github.com/ast-grep/ast-grep)
|
|
1094
|
+
|
|
1095
|
+
---
|
|
1096
|
+
|
|
1097
|
+
**Version**: 1.0.0
|
|
1098
|
+
**Last Updated**: 2026-01-06
|
|
1099
|
+
**Skill**: moai-tool-ast-grep
|