agentsmesh lint
Validate canonical files against target-specific constraints. Each target has its own linting rules — for example, Cursor requires .mdc format compliance, Claude Code validates settings.json schema, and all targets check for valid frontmatter.
Usage
agentsmesh lint [flags]Flags
| Flag | Description |
|---|---|
--global | Lint canonical home config under ~/.agentsmesh/. |
--targets <csv> | Limit linting to specific target IDs. |
Examples
Lint for all configured targets
agentsmesh lintLint for specific targets
agentsmesh lint --targets cursoragentsmesh lint --targets claude-code,gemini-cliLint home-level config
agentsmesh lint --global --targets claude-codeWhat lint checks
All targets
- Valid YAML frontmatter in all
.mdfiles - No duplicate rule/command/agent names
- Required fields present (
root: truein_root.md,descriptionin agents) - Valid
targetsvalues (must be known target IDs) - Valid
globspatterns (syntactically valid gitignore patterns)
Claude Code
settings.jsonschema validation- Valid
permissionModevalues (ask,default,none) - Valid tool names in
allowed-toolsandpermissions.yaml
Cursor
.mdcfrontmatter format compliance- Valid
triggervalues for Cursor rules
MCP servers
- Valid JSON in
mcp.json - Required fields per server type (
commandfor stdio,urlfor HTTP)
Hooks
- Valid hook event types (
PreToolUse,PostToolUse, etc.) - Required fields (
matcher,type) - Valid
typevalues (command,prompt)
Cross-target diagnostics (warnings)
These checks run against every configured target and are emitted as warnings — they do not fail lint’s exit code, but they surface contract gaps that would silently bite at generation time.
silent-drop-guard— flags canonical content (rules, commands, agents, skills, hooks, permissions, ignore) that a target would drop without trace because its capability for that feature isnone(orpartialin cases where the dropped subset is detectable). Lets you see what each target will actually emit before running generate.hook-script-references— when a hook command references a script path (e.g../scripts/pre-commit.sh), warns for every target that does not copy hook scripts into its generated tree (currently every target except Copilot). The script must already exist relative to the hook execution directory or the generated config will fail at runtime.rule-scope-inversion— flags canonical rules whose activation scope (globs:/alwaysApply:) contradicts a target whose projection rules force always-on (or vice versa), so you don’t end up with a rule that silently always activates on a target that should respect manual scoping (e.g. Cursormanualrules).
These run automatically. Existing configs may surface new warnings on first lint after upgrading — particularly hook-script-references for any non-Copilot target whose hook commands reference scripts.
Exit codes
| Code | Meaning |
|---|---|
0 | No lint errors found. |
1 | One or more lint errors. |
Integrating with CI
Add lint to your CI pipeline alongside check:
- name: Lint AgentsMesh config run: agentsmesh lint
- name: Check AgentsMesh sync run: agentsmesh checkThis catches both config errors and drift in the same pipeline.