The Rise of AI Writing Tells

The proliferation of AI writing tools has introduced a new set of linguistic artifacts into digital communication. These are the subtle, often unconscious, patterns that signal a text was likely generated or heavily edited by artificial intelligence. Developers, in particular, have begun to recognize these tells, treating them as a signal to disengage or scrutinize the content more closely. These patterns, such as the overuse of em dashes, bolded labels in lists, or a generic closing like 'Let me know if you need anything else,' have become so prevalent that readers have learned to spot them, often leading to an immediate loss of trust or attention.

This phenomenon prompted Efe Genc, a developer, to create a tool to automatically detect these AI writing artifacts. The surprising outcome was not just the identification of AI-generated content, but the linter's flagging of Genc's own README file for a project, assigning it a grade of 'C.' This unexpected result highlights how even human writers, consciously or unconsciously, can adopt patterns that mimic AI output, particularly in technical documentation where conciseness and specific formatting are often prioritized.

Command-line interface showing the ai-slop-linter detecting errors in a README file

Introducing the `ai-slop-linter`

Genc developed the `ai-slop-linter` as a practical solution to this growing problem. The tool is a zero-dependency Node.js application, requiring only Node.js 20 or newer to run. It operates by scanning text for common AI writing patterns. The primary use case is to prevent these tells from appearing in important communication, such as pull request descriptions, commit messages, or project documentation like README files. By automating the detection process, developers can ensure their communications are perceived as more authentic and less like generic AI output.

The linter can be invoked in several ways:

  • npx ai-slop-linter README.md: Analyzes a single file and exits with a non-zero status code if errors are found.
  • npx ai-slop-linter --commit: Checks the last commit message for AI writing tells.
  • npx ai-slop-linter README.md --fix: Attempts to apply safe, automated fixes to the detected issues directly within the file.

The open-source nature of the project, released under the MIT license, encourages community contribution and transparency. The source code is available on GitHub, allowing users to inspect its logic and suggest improvements. This approach ensures the linter can adapt as AI writing styles evolve and as new common patterns emerge.

The Personal Discovery: A 'C' Grade for a README

The most revealing aspect of Genc's experience was the linter's assessment of his own README file. Receiving a 'C' grade meant that the tool identified multiple instances of AI-like writing patterns within content he had personally authored. This is not a failure of the linter, but rather a testament to how pervasive these patterns have become, or how easily human writers can inadvertently adopt them. For instance, a common AI tell is the use of an em dash at the start of a sentence, or the inclusion of a polite, somewhat generic closing phrase. These might be stylistic choices made for perceived clarity or professionalism, but they can now be interpreted by readers as indicators of AI authorship.

Genc's manual deletion of these phrases from his own pull request descriptions, as described in his initial post, indicates a conscious effort to avoid these signals. Yet, the linter's findings suggest that such patterns can creep into other forms of written communication, like READMEs, even when the intent is purely human-driven. This raises a broader question about the nature of writing styles and how easily human communication can converge on patterns that are statistically common, whether generated by humans or machines.

Implications for Developers and Technical Writing

The `ai-slop-linter` addresses a growing concern within the developer community: maintaining authenticity and trust in technical communication. As AI tools become more integrated into workflows, from code generation to documentation assistance, the lines between human and machine-generated content blur. For developers, this linter offers a practical way to police their own output and that of their tools, ensuring that their commit messages, PR descriptions, and project documentation remain clear, direct, and human-sounding.

The tool's ability to flag human-written content also serves as a valuable educational resource. It forces writers to confront their own stylistic habits and consider how they might be perceived. In technical writing, where clarity, precision, and a direct voice are paramount, avoiding generic or formulaic phrasing is key. The `ai-slop-linter` provides an objective mechanism to identify and correct these potentially detrimental stylistic choices, helping to preserve the human element in technical communication.

Ultimately, the `ai-slop-linter` is more than just a code quality tool; it's a signal of a maturing digital landscape where the origin and authenticity of text are increasingly important. Its creator's own 'C' grade serves as a potent reminder that staying ahead of AI tells requires constant vigilance, even for those actively trying to avoid them.