Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Command-line usage

intern has three subcommands: check reports violations, fix repairs the ones it can, and ignore writes a suppression directive into a slide’s speaker notes. check is the default action, so these two are equivalent:

intern deck.pptx
intern check deck.pptx

Every check and fix command accepts multiple files and directories - a directory is expanded to the .pptx files directly inside it:

intern check slides/ extra.pptx

No configuration is required to get started.

intern check

Reads each presentation and prints its violations. Exits 0 when every deck is clean or has only warnings, and 1 when an error-severity violation is found (see severity).

FlagDefaultDescription
--rules RULE_ID,...allRun only the specified rules
--disable RULE_ID,...noneSkip specific rules
--threshold <px>2Alignment tolerance in pixels
--slide <n>allAnalyze only slide n (1-based)
--output table|text|jsontableOutput format
--group-by slide|ruleslideGroup violations
--config <path>autoLoad settings from a specific file (Configuration)

An unknown rule id passed to --rules or --disable is rejected with an error rather than silently ignored.

intern fix

Applies the suggested fix for every fixable violation, writing each file in place. The original is backed up next to it as <file>.bak.

FlagDefaultDescription
--rules RULE_ID,...allRun only the specified rules
--disable RULE_ID,...noneSkip specific rules
--threshold <px>2Alignment tolerance in pixels
--slide <n>allFix only slide n (1-based)
--dry-runoffPrint what would change without writing

Not every rule is auto-fixable. Alignment, font-size, and whitespace rules carry a concrete fix; the remaining text-quality and structural rules report the problem but leave the change to you. See the rules reference.

intern ignore

Writes a suppression directive into a slide’s speaker notes without opening PowerPoint. Backs the original up to <file>.bak before writing.

intern ignore <file> -s <slide> -r <rule> [-e <element>]
FlagDescription
-s, --slide <n>Slide number (1-based, matches the Slide column in check output)
-r, --rule <ID>Rule ID to suppress (e.g. EMPTY_TEXTBOX)
-e, --element <id>Element id (Id column) - omit to suppress the rule for the whole slide

Suppress EMPTY_TEXTBOX for element 42 on slide 3:

intern ignore deck.pptx -s 3 -e 42 -r EMPTY_TEXTBOX
# appends: intern: disable(42) EMPTY_TEXTBOX

Suppress TITLE_Y for the whole of slide 1 (a title slide with a non-standard layout):

intern ignore deck.pptx -s 1 -r TITLE_Y
# appends: intern: disable TITLE_Y

The rule ID is validated; an unknown ID is rejected with an error. If the slide has no speaker-notes part, intern ignore creates one automatically.

Skipping checks

Skip an entire slide

To exclude a slide from every check - a title slide, a section divider, a deliberately different layout - add this line to its speaker notes:

intern: disable

To exclude it from only specific rules, list their ids:

intern: disable TITLE_Y, DUPLICATE_TITLE

Either way the slide is dropped before those rules run, so it affects neither the report nor their baselines (such as the median title position the other slides are compared against).

Skip a single element

The easiest way is intern ignore deck.pptx -s <slide> -r <rule> -e <element> - it writes the directive automatically. To add it by hand, put the element id (shown as Id in the table output) in parentheses:

intern: disable(42) EMPTY_TEXTBOX

Omit the rule list to suppress every rule for that element:

intern: disable(42)

Both syntaxes can appear on the same line as a slide-level directive:

intern: disable TITLE_Y
intern: disable(42) EMPTY_TEXTBOX

Multiple lines in the same slide’s speaker notes are all processed independently.

Use in CI

intern check exits 0 when every deck is clean and 1 when it finds an error-severity violation - wire that exit code straight into a pipeline. Point it at a directory to gate a whole folder of decks:

intern check slides/

JSON output is available for further processing:

intern check deck.pptx --output json > violations.json