mondoohq/cnspec/mql
- community
Checking that the SKILL.md file is still in the repository.
Use when writing MQL (Mondoo Query Language) queries, working with Mondoo MCP tools, or developing security policies
Install
npx vskill@latest install mondoohq/cnspec/mqlSKILL.md
MQL Development Skill
Overview
This skill provides guidance for writing MQL (Mondoo Query Language) queries and validating them using either the cnspec CLI or Mondoo's MCP tools.
Two-tier knowledge system:
- Reference Files (static): MQL syntax docs, platform-specific examples
- Schema Tools (live): Real-time schema lookup and query validation via cnspec CLI or MCP
When to Use
- Writing MQL queries or policies
- Validating MQL syntax before deployment
- Exploring available MQL resources and fields
- Platform-specific query development (AWS, Azure, Linux, Windows, Microsoft 365)
Reference Materials
Located within this skill directory:
| File | Purpose | |
|---|---|---|
| mql-reference.md | Complete MQL syntax and patterns | |
| samples/general.md | General MQL patterns | |
| samples/aws.md | AWS resource patterns | |
| samples/azure.md | Azure resource patterns | |
| samples/linux.md | Linux system patterns | |
| samples/windows.md | Windows system patterns | |
| samples/ms365.md | Microsoft 365 patterns |
Schema Discovery & Query Validation
Two equivalent interfaces are available for real-time schema lookup and query validation. Use whichever is available in your environment — they provide the same data.
cnspec CLI (recommended — works everywhere)
The cnspec CLI provides structured JSON output for all schema operations. No MCP server required.
List all providers
Returns an array of providers with name, version, and connectors:
Get provider details (connectors and flags)
Returns connector details including available flags for each connection type.
List resources in a provider
Returns all resources with name, title, and field count:
Get resource field details
Returns all fields with types and descriptions:
Validate MQL queries
Important: --parse accepts syntactically valid but semantically wrong queries (e.g., invalid.bogus.thing parses with exit 0). Use --ast to catch invalid resource or field names.
Execute queries
Policy management
Mondoo MCP Server Tools (alternative)
If the Mondoo MCP server is available, you can use these tools instead of the CLI.
| MCP Tool | CLI Equivalent | |
|---|---|---|
mcp__mondoo-mcp-http__mql-schema-providers | cnspec providers list --json | |
mcp__mondoo-mcp-http__mql-schema-overview | cnspec providers resources <provider> --json | |
mcp__mondoo-mcp-http__mql-schema-resource | cnspec providers resources <provider> <resource> --json | |
mcp__mondoo-mcp-http__mql-schema-suggestion | No CLI equivalent (use LSP) | |
mcp__mondoo-mcp-http__mql-compiler | cnspec run local -c "query" --ast | |
mcp__mondoo-mcp-http__mql-bundle-lint | cnspec policy lint file.mql.yaml -o sarif | |
mcp__mondoo-mcp-http__mql-bundle-format | cnspec policy format file.mql.yaml | |
mcp__mondoo-mcp-http__mql-policy-bundle | cnspec policy init file.mql.yaml |
When to Use What
| Need | Best Option | |
|---|---|---|
| MQL syntax patterns | mql-reference.md | |
| Platform-specific examples | samples/*.md | |
| Resource availability check | cnspec providers resources <provider> --json | |
| Field types and descriptions | cnspec providers resources <provider> <resource> --json | |
| Query compilation validation | cnspec run local -c "query" --ast | |
| Policy structure validation | cnspec policy lint file.mql.yaml -o sarif |
Wiring Policies into Content Validation
cnspec policy lint proves a policy compiles. It does not prove a check reaches the verdict you claim, that an IaC variant ever matches an asset, or that a remediation snippet is well-formed and actually fixes the thing it documents. Those live in a separate suite.
When you are authoring or editing policies inside the cnspec repository, every one of those checks lives in content/validation/, and `content/validation/README.md` is the reference for all of it. Authoring rules are in `content/AGENTS.md`.
A new policy has to be registered, or nothing validates it. Every validator except the shell one and the compliance suites is allowlist-driven: it iterates a TARGETS dict or a policy slice. A bundle absent from those lists is not reported as unvalidated, it is never visited, so it merges with its variants untested and its remediation unlinted while CI stays green. Register the policy in the same change that adds it:
| Add the policy to | When | |
|---|---|---|
content/README.md | always — the user-facing catalog | |
tfVariantPolicies in content/validation/scans/iac_variants_test.go | it has -terraform-hcl / -terraform-plan / -terraform-state / -cloudformation / -bicep variants | |
TARGETS in content/validation/remediation/code/<language>.py | it ships that language's remediation. Terraform also needs a PROVIDER_MAP entry per resource prefix | |
a registry under content/validation/remediation/commands/ | it ships id: cli / id: api blocks, or audit: steps that invoke a CLI or REST call |
Every IaC variant needs pass and fail fixtures under content/validation/scans/fixtures/iac-variants/<policy>/<variant-uid>/{pass,fail}/<scenario>/, and a coverage gate enforces it at 100%. A variant that asserts exactly what its own filters: require has no possible failing input; record that with a fail/IMPOSSIBLE.md explaining why, which is the only sanctioned way to ship without a fail fixture.
Scope a run to one check rather than running the whole suite — the trailing slash is what makes it work:
Three outcomes are distinguished, and the third matters most: passed, failed, and skipped — the check never ran because no asset matched its filters:. A skipped check is a fixture bug, not a pass. It looks identical to a passing one in every report, forever.
A policy with IaC variants leaves its groups unfiltered. A group filter is evaluated before the check's own filter, so a group carrying filters: asset.platform == "<api-platform>" means a Terraform asset never reaches the variant underneath it and every fixture reports as skipped. Let each variant's own filters: select its asset instead, and convert the groups in the same change that adds the first variant.
MQL Quick Reference
Core Syntax
List Operations
Common Patterns
Anti-Patterns to Avoid
Workflow
- Understand requirements - What resources need to be checked?
- Explore schema - Use
cnspec providers resources <provider> --json - Check samples - Look for similar patterns in
samples/*.md - Write query - Follow patterns from
mql-reference.md - Validate - Use
cnspec run local -c "query" --astto verify syntax - Test - Run with
cnspec runagainst target systems - Wire up validation - For policies in the cnspec repository, add fixtures for any IaC variant and register the policy with the validators that cover its remediation, in the same change. See Wiring Policies into Content Validation
Platform-Specific Guidance
AWS
- Use
aws.*resources - Check
samples/aws.mdfor IAM, EC2, S3 patterns - Explore:
cnspec providers resources aws --json
Azure
- Use
azure.subscription.*resources - Check
samples/azure.mdfor VM, storage, security patterns - Both full subscription and single resource scan patterns
Linux
- Use
file,service,package,users,kernelresources - Check
samples/linux.mdfor common patterns - Handle platform variants (debian, redhat, etc.)
Windows
- Use
registrykey,secpol,auditpol,windowsresources - Check
samples/windows.mdfor registry and policy patterns - Handle server vs workstation differences
Microsoft 365
- Use
microsoft.*resources - Check
samples/ms365.mdfor domain patterns
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/mql/SKILL.md
Popularity
- Repository stars
- 431
- Repository forks
- 38
- 7-day trend score
- 30
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/mondoohq/cnspec/mql)