skills/ai-anti-patterns/SKILL.md
This skill should be used when reviewing AI-generated text, checking for AI writing patterns, detecting undisclosed AI content, or before finalizing any written content.
npx skillsauth add edwinhu/workflows ai-anti-patternsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Field guide for detecting and revising AI-generated content indicators based on Wikipedia's "Signs of AI writing" guide.
Invoke this skill:
Check every piece of AI-assisted writing against these patterns before submission.
This is not optional. AI writing patterns are detectable and undermine credibility.
Start with the most objective indicators:
| Priority | Section | What to Check |
|----------|---------|---------------|
| 1 | ChatGPT Artifacts | turn0search0, oaicite, contentReference |
| 2 | Citation Problems | Hallucinated DOIs, dead links, non-existent sources |
| 3 | Prompt Refusals | "As an AI language model...", "I hope this helps" |
| 4 | Puffery | "stands as", "plays a vital role", "rich tapestry" |
| 5 | Structure | Section summaries, "Despite challenges", rule of three |
These patterns are unambiguous AI artifacts:
ChatGPT-Specific Artifacts:
turn0search0, turn1search2 (internal search references)oaicite:X (citation placeholders)contentReference[oaicite:X] (unresolved references)Prompt Refusals:
Puffery and Exaggeration:
Promotional Language:
Structural Patterns:
Stylistic Quirks:
Words/phrases the model reaches for that don't match the user's voice:
To be sure,):
admittedly, granted,, of course,, that said,, to be clear,,
no doubt,, we acknowledge that. Use To be sure, only when the
next sentence rebuts the concession (concede-then-rebut). If the next
sentence extends the disclaimer or frames scope, leave the original
phrasing or rewrite without a caveat word at all.writing-review/scripts/bridge_repetition_check.py for the detector.| AI Pattern | Human Alternative | |------------|-------------------| | "stands as a testament to" | "shows" or "demonstrates" | | "plays a vital role in" | "affects" or just state the effect | | "rich tapestry of" | describe specifically what it contains | | "nestled in the heart of" | "in" or "located in" | | "delves into" | "examines" or "covers" |
| AI Pattern | Human Alternative | |------------|-------------------| | Section summary of heading | Start with substance, not meta-commentary | | "Despite challenges..." | State the reality directly without formula | | Exactly three examples | Use the number that fits: 2, 4, 5, or just 1 | | "It's important to note" | Just state the important thing |
| AI Pattern | Human Alternative | |------------|-------------------| | "groundbreaking" | describe what it actually does | | "revolutionary" | compare to what came before | | "cutting-edge" | specify the technology | | "transformative" | show the transformation with evidence |
For detailed patterns and extensive examples, consult:
| File | Contents |
|------|----------|
| references/_index.md | Overview and quick screening guide |
| references/01-puffery-and-exaggeration.md | "Stands as", superficial analyses |
| references/02-promotional-language.md | "Rich tapestry", disclaimers |
| references/03-structural-patterns.md | Section summaries, negative parallelisms |
| references/04-stylistic-quirks.md | Elegant variation, false ranges |
| references/05-formatting-and-typography.md | Boldface, em dashes, emojis |
| references/06-communication-patterns.md | Subject lines, "I hope this helps" |
| references/07-template-artifacts.md | Mad Libs patterns, placeholders |
| references/08-markup-issues.md | Markdown vs wikitext confusion |
| references/09-chatgpt-specific-artifacts.md | turn0search, oaicite |
| references/10-citation-problems.md | Hallucinated DOIs, dead links |
| references/11-meta-indicators.md | Abrupt cutoffs, style discrepancies |
This plugin includes PostToolUse hooks that automatically scan Write/Edit output for anti-patterns. When patterns are detected:
The hook checks for all CRITICAL and HIGH severity patterns automatically.
From Wikipedia's guide:
/writing - Core writing principles from Elements of Style/writing-legal - Legal writing (Phase 2)/writing-econ - Economics writing (Phase 2)development
Build the meeting-level proxy-voting × ownership panel on the WRDS SGE grid — ISS N-PX fund votes reduced to (item × block) direction cells, joined to institutional and mutual-fund ownership. Use when working with risk.voteanalysis_npx, N-PX fund-level votes, ISS→CRSP fund linking, index/passive/active voting blocks, or a proxy-voting panel that needs ownership attached.
development
Use when "CRSP CIZ", "CRSP v2", "CRSP flat file format 2.0", "crsp.dsf_v2 / msf_v2", "StkDlySecurityData", "StkMthSecurityData", "StkSecurityInfoHist", "stocknames_v2", "DlyRet / MthRet / DlyPrc / MthPrc", "SHRCD or EXCHCD equivalent in new CRSP", "SIZ to CIZ migration", "CRSP data after 2024", "CRSP delisting returns", "CRSP cumulative adjustment factors", "CRSP index INDNO / INDFAM", or any CRSP stock/index query where the legacy SIZ column names no longer exist.
development
Use when linking or deduping datasets by entity name rather than a shared key — 'fuzzy match', 'fuzzy name matching', 'entity resolution', 'record linkage', 'match company/person names', 'dedupe entity names', 'name-based join', 'bridge identifiers' (CIK ↔ permno ↔ gvkey ↔ wficn ↔ EIN ↔ personid), or any use of char n-gram TF-IDF, cosine similarity on names, `sparse_dot_topn`, or RapidFuzz at scale.
development
Use when building a publication-quality table in Python — 'regression table', 'results table', 'summary statistics table', 'etable', 'coefplot', 'great_tables', 'GT', 'gt table', 'format a table for the paper', 'export table to LaTeX/HTML', significance stars, spanners, or column formatting for a table headed into a paper, slide deck, or notebook.