Skip to content
tezvyn:

Design a CI/CD step to auto-lint application content

Source: netlify.comHardHow cards are made

Design a CI/CD step to auto-lint application content
Summary

Operationalizing content quality gates in CI/CD.

Key points

rule types (terminology, placeholders, i18n), tools (TextLint, Vale, AST), and failure mode (block vs warn).

Watch out for

Treating it as post-deploy check or spell-check.

What's really being asked

This question tests whether you can translate code-quality CI/CD practices into content-quality gates. Interviewers want to see that you treat UI copy, error messages, and documentation as production assets that require automated validation before deploy, not after. The signal is architectural thinking about rule design, tool selection, and failure handling.

The full answer

A strong answer walks through four decisions in order. First, define the rule taxonomy: terminology consistency like brand casing and banned words, structural checks like placeholder key completeness and i18n token coverage, and semantic checks like hardcoded user-facing strings in source files. Second, match the tool to the content format: use TextLint for Markdown documentation to enforce terminology casing as Netlify does, Vale or Write Good for prose style guides, and custom AST-based scripts or linters for JSX or template files to catch hardcoded strings. Third, integrate the step as a blocking CI job that runs in under a minute on changed files only, emitting annotated PR comments so writers and developers see exact line violations. Fourth, define severity levels: block deploy on missing i18n keys or broken placeholders, warn on style deviations, and provide a bypass mechanism for intentional exceptions.

The mistakes people make

Red flags include suggesting manual proofreading instead of automation, proposing a single generic spell-checker without domain-specific rules, or running linting post-deploy. Another weak pattern is failing to distinguish fatal errors from warnings, which trains teams to ignore the linter. Saying you would write everything from scratch without mentioning existing tools like Vale or TextLint also signals ignorance of the ecosystem.

What usually comes next

Expect the interviewer to ask how you would handle false positives from an aggressive terminology rule, how to enforce consistency across micro-frontends owned by different teams, or how you would version and share linting rules across repositories. They may also probe performance on large codebases and ask whether you would gate the main branch or every pull request.

A concrete example

Suppose your application uses React with Markdown-based help docs. Your pipeline step runs TextLint with a custom terminology rule that enforces Sign in over Log in and validates that all JSX Button components use an i18n key rather than a raw string. The job executes via GitHub Actions on pull requests, fails the build if TextLint finds casing violations or if a custom ESLint plugin detects untranslated strings, and posts a summary comment to the PR. If the linter detects violations, the pipeline stops so flawed content never reaches users, matching the Netlify approach of preventing bad docs from publishing.

Interview question

When designing a CI/CD content-linting step for a React application with Markdown docs, which strategy best treats UI copy as a production asset?

  • a.Apply TextLint to Markdown for terminology casing, use AST-based scripts to catch hardcoded strings in JSX, run on changed files in PRs, block on missing i18n keys, and warn on style issues.Correct
  • b.Run Vale on Markdown and JSX for terminology consistency, execute the job post-deploy on the main branch, and block deployment on style-guide deviations.
  • c.Use a single custom script to scan all file types for banned words, run it on every pull request, and fail the build for any violation without bypass options.
  • d.Require manual proofreading for all pull requests, run a generic grammar checker after merge, and treat every finding as a non-blocking warning.
Why?

The correct answer pairs each content format with an appropriate tool—TextLint for Markdown and AST-based linters for JSX—while gating at the PR level and distinguishing fatal structural errors from style warnings. Option B is tempting because Vale is a legitimate ecosystem tool, but misapplying it to JSX and blocking deploy on style deviations violates the architectural separation of prose versus code tooling and severity levels described in the card.

Just read this? Test yourself on what you have been reading.

Read the original → netlify.com

You just looked this up. Could you explain it out loud?

That is the part interviews actually test. Tezvyn takes questions like this one and gives you what the interviewer is really checking, the answer that lands, and the mistake that ends the conversation, in the four minutes before your next meeting.

The iPhone app is on the way

We are building it. Until it lands, nothing here is held back from you: every interview card, your saved cards, streaks and the job board all work in Safari, plus hundreds of free practice quizzes of thirty questions each. Sign in and it all carries over to the app the day it arrives.

Want it as an icon? Tap Share at the bottom of Safari, then Add to Home Screen. It opens full screen and the cards you have read stay available offline.

Get it on Google PlayiPhone app coming soon

We are hiring for this. Open roles that interview on ci/cd — each one lists the topics its interview covers.

See open roles