best_practices
best_practices
¶
Best-practice validation checks.
Detects common configuration pitfalls and suggests improvements for reliability, correctness, and performance.
Attributes¶
Classes¶
JinjaInValidationPathCheck
¶
Check for Jinja syntax in validation paths (V201).
Validation paths use Python .format() syntax ({workspace}),
not Jinja ({{ workspace }}). Using Jinja syntax causes paths to
render literally with braces intact.
Functions¶
check
¶
Check validation paths for {{ markers.
Source code in src/marianne/validation/checks/best_practices.py
FormatSyntaxInTemplateCheck
¶
Check for format-string syntax in Jinja templates (V202).
Prompt templates use Jinja ({{ name }}), not Python format strings
({name}). Only flags known built-in names to avoid false positives.
Functions¶
check
¶
Scan prompt template for {builtin_name} patterns.
Source code in src/marianne/validation/checks/best_practices.py
NoValidationsCheck
¶
Check that at least one validation rule exists (V203).
Without validations, sheets always "pass" and you learn nothing about execution quality.
Functions¶
check
¶
Fire when no validations are configured.
Source code in src/marianne/validation/checks/best_practices.py
MissingSkipPermissionsCheck
¶
Check that skip_permissions is enabled for Claude CLI (V204).
Claude CLI will prompt for permission approval, which hangs in unattended mode.
Functions¶
check
¶
Fire when Claude CLI backend lacks skip_permissions.
Source code in src/marianne/validation/checks/best_practices.py
FileExistsOnlyCheck
¶
Check for file_exists-only validations (V205).
file_exists alone cannot detect stale files left from a
previous run. Adding file_modified or content checks is
recommended.
Functions¶
check
¶
Fire when every validation is file_exists.
Source code in src/marianne/validation/checks/best_practices.py
FanOutWithoutDependenciesCheck
¶
Check fan-out configs have dependencies (V206).
When fan-out stages are configured without dependencies, stages may execute out of order.
Functions¶
check
¶
Fire when fan-out is configured without dependencies.
Source code in src/marianne/validation/checks/best_practices.py
FanOutWithoutParallelCheck
¶
Check fan-out configs enable parallel execution (V207).
Fan-out instances are designed to run concurrently, but will execute sequentially if parallel mode is disabled.
Functions¶
check
¶
Fire when fan-out is configured without parallel.
Source code in src/marianne/validation/checks/best_practices.py
VariableShadowingCheck
¶
Check for user variables that shadow built-ins (V208).
User-defined prompt variables that share names with Marianne's built-in variables will override the real values, causing unexpected behavior.
Functions¶
check
¶
Fire when prompt.variables shadows a built-in name.
Source code in src/marianne/validation/checks/best_practices.py
SkipWhenSheetRangeCheck
¶
Check that skip_when and skip_when_command keys are in-range (V212).
Each key in skip_when/skip_when_command must satisfy 1 ≤ k ≤ total_sheets. Out-of-range keys are silently ignored at runtime — they will never fire. This is a WARNING (non-blocking) because the config is executable, just suspicious.
Functions¶
check
¶
Warn when skip_when or skip_when_command keys are out of range.
Source code in src/marianne/validation/checks/best_practices.py
MissingDisableMcpCheck
¶
Check that disable_mcp is enabled for Claude CLI (V209).
MCP servers can cause deadlocks in unattended orchestration. Disabling MCP provides faster, more reliable execution.
Functions¶
check
¶
Fire when Claude CLI backend lacks disable_mcp.