Rule catalog

Shipmoor Team
June 11, 2026
3 min read

The complete catalog — 30 rules across four languages in 0.4.0, as listed by shipmoor rules. Severities follow the cross-language policy described in Findings & rules; any severity can be overridden (and any rule disabled) per project in .shipmoor.yaml.

shipmoor rules          # this list, with your overrides applied
shipmoor rules --json   # machine-readable, with full descriptions

Python (6 rules)

RuleSeverityWhat it flags
python.syntax_errorcriticalPython source cannot be parsed.
python.phantom_importhighImport cannot be resolved from the project or environment.
python.placeholder.empty_bodymediumFunction contains only placeholder body statements.
python.placeholder.constant_returnmediumFunction returns a placeholder constant.
python.quality.mutable_defaultmediumFunction uses a mutable default argument.
python.quality.bare_exceptlowException handler catches every exception.

TypeScript (8 rules)

RuleSeverityWhat it flags
typescript.phantom_dependencyhighImported package is not declared or resolvable locally.
typescript.placeholder.empty_functionmediumFunction body has no implementation.
typescript.placeholder.not_implementedmediumFunction throws a placeholder implementation error.
typescript.trust.any_boundarymediumExported function boundary uses any.
typescript.trust.as_anylowExpression is cast to any.
typescript.trust.ts_ignoremediumTypeScript error is ignored.
typescript.debug.consolelowConsole output remains in source.
typescript.control_flow.unreachable_codemediumStatement appears after return or throw.

JavaScript (8 rules)

RuleSeverityWhat it flags
javascript.phantom_dependencyhighImported package is not declared or resolvable locally.
javascript.placeholder.empty_functionmediumFunction body has no implementation.
javascript.placeholder.not_implementedmediumFunction throws a placeholder implementation error.
javascript.trust.any_boundarymediumExported function boundary uses any.
javascript.trust.as_anylowExpression is cast to any.
javascript.trust.ts_ignoremediumTypeScript error is ignored.
javascript.debug.consolelowConsole output remains in source.
javascript.control_flow.unreachable_codemediumStatement appears after return or throw.

Go (8 rules)

RuleSeverityWhat it flags
go.phantom_importhighImported Go package is not declared or resolvable.
go.placeholder.empty_functionmediumGo function body is empty.
go.placeholder.todo_commentlowGo source contains unresolved TODO/FIXME/HACK markers.
go.placeholder.todo_panichighGo code panics with TODO or not-implemented text.
go.error.ignored_errormediumCall result is discarded with the blank identifier.
go.error.panic_errormediumError is handled by panicking.
go.debug.fmt_printlowfmt.Print output remains in source.
go.structure.god_functionmediumGo function is very large.

Reading the severities

Severity is assigned by defect class, consistently across languages: hallucinated imports/dependencies are high everywhere (the code can’t run as authored), placeholder bodies and trust suppressions at boundaries are medium, debug output and catch-alls are low. The phantom-import rules additionally classify every finding by subtype (hallucinated_package, missing_manifest_entry, broken_relative_path, unresolved_local_module).

For any rule, shipmoor explain <rule_id> gives the why, the root cause, and the fix.

Next

Last updated on June 11, 2026

Was this article helpful?

Your response is saved on this device.