← All skills

moongrep

Use moongrep to structurally search and perform taint analysis on MoonBit source code. Use when an agent needs syntax-aware MoonBit structural code search.

$ files
SKILL.md
SKILL.md

moongrep

moongrep is an experimental MoonBit structural search and taint-analysis tool. Matching rules are declared as YAML files.

Scan

Run the scanner with a rule directory and an optional scan target directory or .mbt file:

moon runwasm moonbit-community/moongrep -- scan --rules path/to/rules path/to/src moon runwasm moonbit-community/moongrep -- scan --pattern 'target()' path/to/src

Synopsis:

moon runwasm moonbit-community/moongrep -- scan [--verbose] ((--rules <rules-root> | --rules=<rules-root> | -r <rules-root>) | --pattern <pattern>)... [scan-root]

The scanner is available through the scan subcommand. --rules / -r is optional when at least one --pattern <pattern> is supplied. The long rules option accepts both --rules <rules-root> and --rules=<rules-root> forms. Inline patterns are treated as anonymous structural rules whose rule id is the pattern string itself. One optional positional scan-root may appear in the scan argument list and defaults to .. If the rules option appears multiple times, the last value wins. Repeated --pattern values are appended as separate anonymous rules.

Usage errors print a message and exit with code 2: missing scan command, missing both rules and pattern options, missing option value, unknown options, or more than one scan root. Non-usage errors, including unreadable paths, an empty rules directory, invalid YAML/schema/shape, or source read failures, abort the run; the CLI prints the error and exits with code 1.

Pass --verbose to print the directory traversal progress before warnings and match results.

Each match result prints the source line covered by the finding plus up to two lines of surrounding source context. Surrounding context lines are rendered in gray; matched source lines are rendered without gray styling.

If scan-root is omitted, moongrep scans the current directory:

moon runwasm moonbit-community/moongrep -- scan --rules path/to/rules moon runwasm moonbit-community/moongrep -- scan -r path/to/rules moon runwasm moonbit-community/moongrep -- scan --pattern 'target()'

The scanner recursively reads .mbt files. When descending from scan-root, child entries named .git, _build, .mooncakes, or target are skipped; if one of those directories is passed explicitly as scan-root, it is scanned.

Symbolic links encountered during recursive source or rule traversal are followed. Files that fail to parse are reported as warnings and skipped; other files continue to be scanned.

Dump

MoonBit AST JSON dumps are available through the dump subcommand:

moon runwasm moonbit-community/moongrep -- dump --impl 'fn answer { 42 }' moon runwasm moonbit-community/moongrep -- dump --expr 'x + 1'

Synopsis:

moon runwasm moonbit-community/moongrep -- dump (--impl <impl> | --expr <expr>)

Use --impl <impl> to parse exactly one MoonBit top-level implementation item and print its AST JSON. Use --expr <expr> to parse a MoonBit expression and print its AST JSON. The options are mutually exclusive, and one of them is required.

Usage errors, including missing both dump modes or combining --impl with --expr, print a message and exit with code 2. Parse or lexical failures print a message and exit with code 1.

Document

Embedded documentation is available through the docs subcommand:

moon runwasm moonbit-community/moongrep -- docs --list moon runwasm moonbit-community/moongrep -- docs RuleSpec

Skill
Name
moonbit-community/moongrep
Version
0.1.8
Published
4 months ago
Download
Download ZIP

SHA-256

053f563c52d1dd5f91a54521bc157ade3ee85a978b44d62685807d96ab00e99a

Powered by MoonBit

Site sourceReport issueModulesSkillsBuild queueStatistics

© 2026 mooncakes.io