{
  "repository": "brandonwise/humanizer",
  "commit": "4b9b9bee384aea139f599133d2de1e1ceaee71a3",
  "scannedAt": "2026-10-08T01:08:43.357Z",
  "policy": "tracked-prose-v1",
  "schemaVersion": 1,
  "tool": "style-doctor",
  "version": "0.4.2",
  "mode": "full",
  "project": "humanizer",
  "ok": true,
  "score": 76,
  "label": "Needs work",
  "words": 6826,
  "summary": {
    "issues": 324,
    "errors": 44,
    "warnings": 280,
    "filesWithIssues": 13,
    "byCategory": {
      "Grammar": {
        "errors": 0,
        "warnings": 17
      },
      "Filler": {
        "errors": 6,
        "warnings": 119
      },
      "LLM Tells": {
        "errors": 26,
        "warnings": 135
      },
      "AI Artifacts": {
        "errors": 12,
        "warnings": 0
      },
      "Formatting": {
        "errors": 0,
        "warnings": 9
      }
    }
  },
  "scannedFileCount": 15,
  "diagnostics": [
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "passive-voice",
      "severity": "warning",
      "category": "Grammar",
      "title": "Possible passive voice",
      "message": "Naive check for passive voice (no POS tagger).",
      "help": "Prefer active voice: name the actor. --ignore passive-voice if noisy.",
      "line": 165,
      "column": 31,
      "match": "are provided",
      "id": "README.md::165:31::style-doctor/passive-voice"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 249,
      "column": 57,
      "match": "pivotal",
      "id": "README.md::249:57::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 251,
      "column": 53,
      "match": "showcasing",
      "id": "README.md::251:53::style-doctor/superficial-ing"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 251,
      "column": 81,
      "match": "highlighting",
      "id": "README.md::251:81::style-doctor/superficial-ing"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "nestled",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Travel-brochure word \"nestled\"",
      "message": "\"nestled\" is travel-brochure prose.",
      "help": "Use \"in\" or \"near\".",
      "line": 252,
      "column": 45,
      "match": "nestled",
      "id": "README.md::252:45::style-doctor/nestled"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "vague-attribution",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Unsourced authority",
      "message": "This attributes a claim to an unnamed authority.",
      "help": "Cite the actual source or cut the claim.",
      "line": 253,
      "column": 43,
      "match": "Experts believe",
      "id": "README.md::253:43::style-doctor/vague-attribution"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "vague-attribution",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Unsourced authority",
      "message": "This attributes a claim to an unnamed authority.",
      "help": "Cite the actual source or cut the claim.",
      "line": 253,
      "column": 62,
      "match": "Studies show",
      "id": "README.md::253:62::style-doctor/vague-attribution"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "delve",
      "severity": "error",
      "category": "LLM Tells",
      "title": "Filler word \"delve\"",
      "message": "\"delve\" is a hallmark LLM word rarely used in natural writing.",
      "help": "Use \"look at\", \"go into\", or cut.",
      "line": 255,
      "column": 55,
      "match": "delve",
      "id": "README.md::255:55::style-doctor/delve"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "tapestry",
      "severity": "error",
      "category": "LLM Tells",
      "title": "\"Tapestry\" metaphor",
      "message": "\"tapestry\" as a metaphor is LLM boilerplate.",
      "help": "Name the actual thing.",
      "line": 255,
      "column": 64,
      "match": "tapestry",
      "id": "README.md::255:64::style-doctor/tapestry"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "connective-overload",
      "severity": "warning",
      "category": "Filler",
      "title": "Formal connective overload",
      "message": "Formal connectives pile up in LLM prose.",
      "help": "Use \"also\" or start a new sentence.",
      "line": 255,
      "column": 39,
      "match": "Additionally",
      "id": "README.md::255:39::style-doctor/connective-overload"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 256,
      "column": 42,
      "match": "serves as",
      "id": "README.md::256:42::style-doctor/copula-avoidance"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "its-not-x-its-y",
      "severity": "error",
      "category": "LLM Tells",
      "title": "\"It's not X, it's Y\" reversal",
      "message": "The \"It's not X, it's Y\" reversal reads as generated.",
      "help": "Make the claim once, plainly.",
      "line": 257,
      "column": 47,
      "match": "It's not just X, it's",
      "id": "README.md::257:47::style-doctor/its-not-x-its-y"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "ai-artifact",
      "severity": "error",
      "category": "AI Artifacts",
      "title": "Leftover AI-generation artifact",
      "message": "This is a chatbot sign-off or citation scrap left in from an unedited paste.",
      "help": "Remove it; it means the output was never read before publishing.",
      "line": 267,
      "column": 41,
      "match": "I hope this helps",
      "id": "README.md::267:41::style-doctor/ai-artifact"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 270,
      "column": 39,
      "match": "In order to",
      "id": "README.md::270:39::style-doctor/wordy-phrase"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 270,
      "column": 54,
      "match": "Due to the fact that",
      "id": "README.md::270:54::style-doctor/wordy-phrase"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "hedge-stack",
      "severity": "warning",
      "category": "Filler",
      "title": "Stacked hedge / confidence-calibration opener",
      "message": "Stacked hedges, or flagging your own \"noteworthy\" aside, is LLM throat-clearing.",
      "help": "Pick one hedge, or state the fact plainly.",
      "line": 271,
      "column": 42,
      "match": "could potentially",
      "id": "README.md::271:42::style-doctor/hedge-stack"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "delve",
      "severity": "error",
      "category": "LLM Tells",
      "title": "Filler word \"delve\"",
      "message": "\"delve\" is a hallmark LLM word rarely used in natural writing.",
      "help": "Use \"look at\", \"go into\", or cut.",
      "line": 276,
      "column": 104,
      "match": "delve",
      "id": "README.md::276:104::style-doctor/delve"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "tapestry",
      "severity": "error",
      "category": "LLM Tells",
      "title": "\"Tapestry\" metaphor",
      "message": "\"tapestry\" as a metaphor is LLM boilerplate.",
      "help": "Name the actual thing.",
      "line": 276,
      "column": 111,
      "match": "tapestry",
      "id": "README.md::276:111::style-doctor/tapestry"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 276,
      "column": 121,
      "match": "vibrant",
      "id": "README.md::276:121::style-doctor/ai-vocab"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 276,
      "column": 139,
      "match": "meticulous",
      "id": "README.md::276:139::style-doctor/ai-vocab"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 276,
      "column": 130,
      "match": "crucial",
      "id": "README.md::276:130::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "seamless",
      "severity": "warning",
      "category": "Filler",
      "title": "Marketing filler \"seamless\"",
      "message": "\"seamless\" is marketing filler.",
      "help": "Describe the actual flow.",
      "line": 276,
      "column": 151,
      "match": "seamless",
      "id": "README.md::276:151::style-doctor/seamless"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "connective-overload",
      "severity": "warning",
      "category": "Filler",
      "title": "Formal connective overload",
      "message": "Formal connectives pile up in LLM prose.",
      "help": "Use \"also\" or start a new sentence.",
      "line": 277,
      "column": 84,
      "match": "furthermore",
      "id": "README.md::277:84::style-doctor/connective-overload"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "todays-world",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"In today's world\" opener",
      "message": "\"in today's world\" is throat-clearing.",
      "help": "Cut it.",
      "line": 279,
      "column": 53,
      "match": "In today's digital age",
      "id": "README.md::279:53::style-doctor/todays-world"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 279,
      "column": 81,
      "match": "plays a crucial role",
      "id": "README.md::279:81::style-doctor/copula-avoidance"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 279,
      "column": 107,
      "match": "serves as",
      "id": "README.md::279:107::style-doctor/copula-avoidance"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 279,
      "column": 89,
      "match": "crucial",
      "id": "README.md::279:89::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "passive-voice",
      "severity": "warning",
      "category": "Grammar",
      "title": "Possible passive voice",
      "message": "Naive check for passive voice (no POS tagger).",
      "help": "Prefer active voice: name the actor. --ignore passive-voice if noisy.",
      "line": 283,
      "column": 82,
      "match": "are weighted",
      "id": "README.md::283:82::style-doctor/passive-voice"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "em-dash-density",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Em-dash overuse",
      "message": "A high em-dash rate is a common LLM tell.",
      "help": "Replace some with periods or commas.",
      "line": 1,
      "column": 1,
      "match": "21 em-dashes in 1185 words",
      "id": "README.md::1:1::style-doctor/em-dash-density"
    },
    {
      "filePath": "README.md",
      "plugin": "style-doctor",
      "rule": "bold-density",
      "severity": "warning",
      "category": "Formatting",
      "title": "Bold-text overuse",
      "message": "Frequent bolding is a common LLM formatting tell.",
      "help": "Reserve bold for genuine emphasis; use fewer spans.",
      "line": 1,
      "column": 1,
      "match": "37 bolded spans in 1185 words",
      "id": "README.md::1:1::style-doctor/bold-density"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "passive-voice",
      "severity": "warning",
      "category": "Grammar",
      "title": "Possible passive voice",
      "message": "Naive check for passive voice (no POS tagger).",
      "help": "Prefer active voice: name the actor. --ignore passive-voice if noisy.",
      "line": 18,
      "column": 156,
      "match": "was extruded",
      "id": "SKILL.md::18:156::style-doctor/passive-voice"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 37,
      "column": 53,
      "match": "pivotal",
      "id": "SKILL.md::37:53::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 39,
      "column": 49,
      "match": "showcasing",
      "id": "SKILL.md::39:49::style-doctor/superficial-ing"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 39,
      "column": 77,
      "match": "highlighting",
      "id": "SKILL.md::39:77::style-doctor/superficial-ing"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "nestled",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Travel-brochure word \"nestled\"",
      "message": "\"nestled\" is travel-brochure prose.",
      "help": "Use \"in\" or \"near\".",
      "line": 40,
      "column": 41,
      "match": "nestled",
      "id": "SKILL.md::40:41::style-doctor/nestled"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "vague-attribution",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Unsourced authority",
      "message": "This attributes a claim to an unnamed authority.",
      "help": "Cite the actual source or cut the claim.",
      "line": 41,
      "column": 39,
      "match": "Experts believe",
      "id": "SKILL.md::41:39::style-doctor/vague-attribution"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "vague-attribution",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Unsourced authority",
      "message": "This attributes a claim to an unnamed authority.",
      "help": "Cite the actual source or cut the claim.",
      "line": 41,
      "column": 58,
      "match": "Studies show",
      "id": "SKILL.md::41:58::style-doctor/vague-attribution"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "vague-attribution",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Unsourced authority",
      "message": "This attributes a claim to an unnamed authority.",
      "help": "Cite the actual source or cut the claim.",
      "line": 41,
      "column": 74,
      "match": "Industry reports",
      "id": "SKILL.md::41:74::style-doctor/vague-attribution"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "delve",
      "severity": "error",
      "category": "LLM Tells",
      "title": "Filler word \"delve\"",
      "message": "\"delve\" is a hallmark LLM word rarely used in natural writing.",
      "help": "Use \"look at\", \"go into\", or cut.",
      "line": 43,
      "column": 48,
      "match": "delve",
      "id": "SKILL.md::43:48::style-doctor/delve"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "tapestry",
      "severity": "error",
      "category": "LLM Tells",
      "title": "\"Tapestry\" metaphor",
      "message": "\"tapestry\" as a metaphor is LLM boilerplate.",
      "help": "Name the actual thing.",
      "line": 43,
      "column": 57,
      "match": "tapestry",
      "id": "SKILL.md::43:57::style-doctor/tapestry"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "seamless",
      "severity": "warning",
      "category": "Filler",
      "title": "Marketing filler \"seamless\"",
      "message": "\"seamless\" is marketing filler.",
      "help": "Describe the actual flow.",
      "line": 43,
      "column": 94,
      "match": "seamless",
      "id": "SKILL.md::43:94::style-doctor/seamless"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "boasts",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Ad-copy verb \"boasts\"",
      "message": "\"X boasts Y\" is product-page voice.",
      "help": "Use \"has\" or \"includes\".",
      "line": 44,
      "column": 51,
      "match": "boasts",
      "id": "SKILL.md::44:51::style-doctor/boasts"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 44,
      "column": 38,
      "match": "serves as",
      "id": "SKILL.md::44:38::style-doctor/copula-avoidance"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "its-not-x-its-y",
      "severity": "error",
      "category": "LLM Tells",
      "title": "\"It's not X, it's Y\" reversal",
      "message": "The \"It's not X, it's Y\" reversal reads as generated.",
      "help": "Make the claim once, plainly.",
      "line": 45,
      "column": 43,
      "match": "It's not just X, it's",
      "id": "SKILL.md::45:43::style-doctor/its-not-x-its-y"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "passive-voice",
      "severity": "warning",
      "category": "Grammar",
      "title": "Possible passive voice",
      "message": "Naive check for passive voice (no POS tagger).",
      "help": "Prefer active voice: name the actor. --ignore passive-voice if noisy.",
      "line": 51,
      "column": 58,
      "match": "is discussed",
      "id": "SKILL.md::51:58::style-doctor/passive-voice"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "ai-artifact",
      "severity": "error",
      "category": "AI Artifacts",
      "title": "Leftover AI-generation artifact",
      "message": "This is a chatbot sign-off or citation scrap left in from an unedited paste.",
      "help": "Remove it; it means the output was never read before publishing.",
      "line": 55,
      "column": 45,
      "match": "I hope this helps",
      "id": "SKILL.md::55:45::style-doctor/ai-artifact"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 58,
      "column": 35,
      "match": "In order to",
      "id": "SKILL.md::58:35::style-doctor/wordy-phrase"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 58,
      "column": 50,
      "match": "Due to the fact that",
      "id": "SKILL.md::58:50::style-doctor/wordy-phrase"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 58,
      "column": 74,
      "match": "At this point in time",
      "id": "SKILL.md::58:74::style-doctor/wordy-phrase"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "weasel-word",
      "severity": "warning",
      "category": "Filler",
      "title": "Weasel / hedge word",
      "message": "Hedge and intensifier words weaken the sentence.",
      "help": "Cut it or be specific.",
      "line": 59,
      "column": 74,
      "match": "arguably",
      "id": "SKILL.md::59:74::style-doctor/weasel-word"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "hedge-stack",
      "severity": "warning",
      "category": "Filler",
      "title": "Stacked hedge / confidence-calibration opener",
      "message": "Stacked hedges, or flagging your own \"noteworthy\" aside, is LLM throat-clearing.",
      "help": "Pick one hedge, or state the fact plainly.",
      "line": 59,
      "column": 38,
      "match": "could potentially",
      "id": "SKILL.md::59:38::style-doctor/hedge-stack"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "important-to-note",
      "severity": "error",
      "category": "Filler",
      "title": "\"It's important to note\" filler",
      "message": "\"it's important to note\" adds nothing.",
      "help": "Just state the note.",
      "line": 63,
      "column": 75,
      "match": "It's worth noting",
      "id": "SKILL.md::63:75::style-doctor/important-to-note"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "hedge-stack",
      "severity": "warning",
      "category": "Filler",
      "title": "Stacked hedge / confidence-calibration opener",
      "message": "Stacked hedges, or flagging your own \"noteworthy\" aside, is LLM throat-clearing.",
      "help": "Pick one hedge, or state the fact plainly.",
      "line": 63,
      "column": 75,
      "match": "It's worth noting",
      "id": "SKILL.md::63:75::style-doctor/hedge-stack"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "delve",
      "severity": "error",
      "category": "LLM Tells",
      "title": "Filler word \"delve\"",
      "message": "\"delve\" is a hallmark LLM word rarely used in natural writing.",
      "help": "Use \"look at\", \"go into\", or cut.",
      "line": 79,
      "column": 32,
      "match": "delve",
      "id": "SKILL.md::79:32::style-doctor/delve"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "tapestry",
      "severity": "error",
      "category": "LLM Tells",
      "title": "\"Tapestry\" metaphor",
      "message": "\"tapestry\" as a metaphor is LLM boilerplate.",
      "help": "Name the actual thing.",
      "line": 79,
      "column": 39,
      "match": "tapestry",
      "id": "SKILL.md::79:39::style-doctor/tapestry"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "deep-dive",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Deep dive\" filler opener",
      "message": "\"deep dive\" / \"let's dive in\" is a filler opener.",
      "help": "Just start.",
      "line": 79,
      "column": 293,
      "match": "deep dive",
      "id": "SKILL.md::79:293::style-doctor/deep-dive"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "nestled",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Travel-brochure word \"nestled\"",
      "message": "\"nestled\" is travel-brochure prose.",
      "help": "Use \"in\" or \"near\".",
      "line": 79,
      "column": 269,
      "match": "nestled",
      "id": "SKILL.md::79:269::style-doctor/nestled"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 79,
      "column": 49,
      "match": "vibrant",
      "id": "SKILL.md::79:49::style-doctor/ai-vocab"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 79,
      "column": 82,
      "match": "meticulous",
      "id": "SKILL.md::79:82::style-doctor/ai-vocab"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "inline-bold-bullet",
      "severity": "warning",
      "category": "Formatting",
      "title": "\"**Label:** text\" bullet",
      "message": "Bolded label-then-colon bullets are an LLM list default.",
      "help": "Write the point as a plain sentence, or drop the bold.",
      "line": 79,
      "column": 1,
      "match": "- **Tier 1 (Dead giveaways):**",
      "id": "SKILL.md::79:1::style-doctor/inline-bold-bullet"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 79,
      "column": 58,
      "match": "crucial",
      "id": "SKILL.md::79:58::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 79,
      "column": 171,
      "match": "paramount",
      "id": "SKILL.md::79:171::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "robust",
      "severity": "warning",
      "category": "Filler",
      "title": "Vague praise \"robust\"",
      "message": "\"robust\" is vague praise.",
      "help": "Say how it holds up.",
      "line": 79,
      "column": 102,
      "match": "robust",
      "id": "SKILL.md::79:102::style-doctor/robust"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "seamless",
      "severity": "warning",
      "category": "Filler",
      "title": "Marketing filler \"seamless\"",
      "message": "\"seamless\" is marketing filler.",
      "help": "Describe the actual flow.",
      "line": 79,
      "column": 110,
      "match": "seamless",
      "id": "SKILL.md::79:110::style-doctor/seamless"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "leverage",
      "severity": "warning",
      "category": "Filler",
      "title": "Corporate verb \"leverage\"",
      "message": "\"leverage\" as a verb is corporate-speak.",
      "help": "Use \"use\".",
      "line": 79,
      "column": 136,
      "match": "leverage",
      "id": "SKILL.md::79:136::style-doctor/leverage"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "myriad",
      "severity": "warning",
      "category": "Filler",
      "title": "Showy word \"myriad\"",
      "message": "\"myriad\" is showy.",
      "help": "Use \"many\" or a number.",
      "line": 79,
      "column": 196,
      "match": "myriad",
      "id": "SKILL.md::79:196::style-doctor/myriad"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "inline-bold-bullet",
      "severity": "warning",
      "category": "Formatting",
      "title": "\"**Label:** text\" bullet",
      "message": "Bolded label-then-colon bullets are an LLM list default.",
      "help": "Write the point as a plain sentence, or drop the bold.",
      "line": 80,
      "column": 1,
      "match": "- **Tier 2 (Suspicious in density):**",
      "id": "SKILL.md::80:1::style-doctor/inline-bold-bullet"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "connective-overload",
      "severity": "warning",
      "category": "Filler",
      "title": "Formal connective overload",
      "message": "Formal connectives pile up in LLM prose.",
      "help": "Use \"also\" or start a new sentence.",
      "line": 80,
      "column": 39,
      "match": "furthermore",
      "id": "SKILL.md::80:39::style-doctor/connective-overload"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "connective-overload",
      "severity": "warning",
      "category": "Filler",
      "title": "Formal connective overload",
      "message": "Formal connectives pile up in LLM prose.",
      "help": "Use \"also\" or start a new sentence.",
      "line": 80,
      "column": 52,
      "match": "moreover",
      "id": "SKILL.md::80:52::style-doctor/connective-overload"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "delve",
      "severity": "error",
      "category": "LLM Tells",
      "title": "Filler word \"delve\"",
      "message": "\"delve\" is a hallmark LLM word rarely used in natural writing.",
      "help": "Use \"look at\", \"go into\", or cut.",
      "line": 81,
      "column": 133,
      "match": "delve",
      "id": "SKILL.md::81:133::style-doctor/delve"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "realm",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"In the realm of\" padding",
      "message": "\"in the realm of\" is padding.",
      "help": "Use \"in\" or name the field.",
      "line": 81,
      "column": 114,
      "match": "in the realm of",
      "id": "SKILL.md::81:114::style-doctor/realm"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "deep-dive",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Deep dive\" filler opener",
      "message": "\"deep dive\" / \"let's dive in\" is a filler opener.",
      "help": "Just start.",
      "line": 81,
      "column": 217,
      "match": "let's dive in",
      "id": "SKILL.md::81:217::style-doctor/deep-dive"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "todays-world",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"In today's world\" opener",
      "message": "\"in today's world\" is throat-clearing.",
      "help": "Cut it.",
      "line": 81,
      "column": 17,
      "match": "In today's digital age",
      "id": "SKILL.md::81:17::style-doctor/todays-world"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 81,
      "column": 65,
      "match": "plays a crucial role",
      "id": "SKILL.md::81:65::style-doctor/copula-avoidance"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 81,
      "column": 89,
      "match": "serves as",
      "id": "SKILL.md::81:89::style-doctor/copula-avoidance"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "inline-bold-bullet",
      "severity": "warning",
      "category": "Formatting",
      "title": "\"**Label:** text\" bullet",
      "message": "Bolded label-then-colon bullets are an LLM list default.",
      "help": "Write the point as a plain sentence, or drop the bold.",
      "line": 81,
      "column": 1,
      "match": "- **Phrases:**",
      "id": "SKILL.md::81:1::style-doctor/inline-bold-bullet"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 81,
      "column": 73,
      "match": "crucial",
      "id": "SKILL.md::81:73::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 86,
      "column": 32,
      "match": "serves as",
      "id": "SKILL.md::86:32::style-doctor/copula-avoidance"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 98,
      "column": 4,
      "match": "In order to",
      "id": "SKILL.md::98:4::style-doctor/wordy-phrase"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 99,
      "column": 4,
      "match": "Due to the fact that",
      "id": "SKILL.md::99:4::style-doctor/wordy-phrase"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "important-to-note",
      "severity": "error",
      "category": "Filler",
      "title": "\"It's important to note\" filler",
      "message": "\"it's important to note\" adds nothing.",
      "help": "Just state the note.",
      "line": 100,
      "column": 4,
      "match": "It is important to note",
      "id": "SKILL.md::100:4::style-doctor/important-to-note"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "ai-artifact",
      "severity": "error",
      "category": "AI Artifacts",
      "title": "Leftover AI-generation artifact",
      "message": "This is a chatbot sign-off or citation scrap left in from an unedited paste.",
      "help": "Remove it; it means the output was never read before publishing.",
      "line": 101,
      "column": 27,
      "match": "I hope this helps",
      "id": "SKILL.md::101:27::style-doctor/ai-artifact"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "delve",
      "severity": "error",
      "category": "LLM Tells",
      "title": "Filler word \"delve\"",
      "message": "\"delve\" is a hallmark LLM word rarely used in natural writing.",
      "help": "Use \"look at\", \"go into\", or cut.",
      "line": 141,
      "column": 26,
      "match": "delve",
      "id": "SKILL.md::141:26::style-doctor/delve"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "tapestry",
      "severity": "error",
      "category": "LLM Tells",
      "title": "\"Tapestry\" metaphor",
      "message": "\"tapestry\" as a metaphor is LLM boilerplate.",
      "help": "Name the actual thing.",
      "line": 141,
      "column": 33,
      "match": "tapestry",
      "id": "SKILL.md::141:33::style-doctor/tapestry"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 141,
      "column": 43,
      "match": "vibrant",
      "id": "SKILL.md::141:43::style-doctor/ai-vocab"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 141,
      "column": 52,
      "match": "crucial",
      "id": "SKILL.md::141:52::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "robust",
      "severity": "warning",
      "category": "Filler",
      "title": "Vague praise \"robust\"",
      "message": "\"robust\" is vague praise.",
      "help": "Say how it holds up.",
      "line": 141,
      "column": 61,
      "match": "robust",
      "id": "SKILL.md::141:61::style-doctor/robust"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "seamless",
      "severity": "warning",
      "category": "Filler",
      "title": "Marketing filler \"seamless\"",
      "message": "\"seamless\" is marketing filler.",
      "help": "Describe the actual flow.",
      "line": 141,
      "column": 69,
      "match": "seamless",
      "id": "SKILL.md::141:69::style-doctor/seamless"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 142,
      "column": 25,
      "match": "In order to",
      "id": "SKILL.md::142:25::style-doctor/wordy-phrase"
    },
    {
      "filePath": "SKILL.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 142,
      "column": 47,
      "match": "Due to the fact that",
      "id": "SKILL.md::142:47::style-doctor/wordy-phrase"
    },
    {
      "filePath": "docs/CONTRIBUTING.md",
      "plugin": "style-doctor",
      "rule": "passive-voice",
      "severity": "warning",
      "category": "Grammar",
      "title": "Possible passive voice",
      "message": "Naive check for passive voice (no POS tagger).",
      "help": "Prefer active voice: name the actor. --ignore passive-voice if noisy.",
      "line": 66,
      "column": 17,
      "match": "was incorrectly flagged",
      "id": "docs/CONTRIBUTING.md::66:17::style-doctor/passive-voice"
    },
    {
      "filePath": "docs/CONTRIBUTING.md",
      "plugin": "style-doctor",
      "rule": "weasel-word",
      "severity": "warning",
      "category": "Filler",
      "title": "Weasel / hedge word",
      "message": "Hedge and intensifier words weaken the sentence.",
      "help": "Cut it or be specific.",
      "line": 69,
      "column": 8,
      "match": "actually",
      "id": "docs/CONTRIBUTING.md::69:8::style-doctor/weasel-word"
    },
    {
      "filePath": "docs/CONTRIBUTING.md",
      "plugin": "style-doctor",
      "rule": "em-dash-density",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Em-dash overuse",
      "message": "A high em-dash rate is a common LLM tell.",
      "help": "Replace some with periods or commas.",
      "line": 1,
      "column": 1,
      "match": "8 em-dashes in 262 words",
      "id": "docs/CONTRIBUTING.md::1:1::style-doctor/em-dash-density"
    },
    {
      "filePath": "docs/IMPROVEMENTS.md",
      "plugin": "style-doctor",
      "rule": "passive-voice",
      "severity": "warning",
      "category": "Grammar",
      "title": "Possible passive voice",
      "message": "Naive check for passive voice (no POS tagger).",
      "help": "Prefer active voice: name the actor. --ignore passive-voice if noisy.",
      "line": 78,
      "column": 113,
      "match": "is enabled",
      "id": "docs/IMPROVEMENTS.md::78:113::style-doctor/passive-voice"
    },
    {
      "filePath": "docs/IMPROVEMENTS.md",
      "plugin": "style-doctor",
      "rule": "weasel-word",
      "severity": "warning",
      "category": "Filler",
      "title": "Weasel / hedge word",
      "message": "Hedge and intensifier words weaken the sentence.",
      "help": "Cut it or be specific.",
      "line": 79,
      "column": 3,
      "match": "Very",
      "id": "docs/IMPROVEMENTS.md::79:3::style-doctor/weasel-word"
    },
    {
      "filePath": "docs/INTEGRATIONS.md",
      "plugin": "style-doctor",
      "rule": "title-case-heading",
      "severity": "warning",
      "category": "Formatting",
      "title": "Title Case Every Word heading",
      "message": "Capitalizing every word in a heading is an LLM formatting default.",
      "help": "Use sentence case.",
      "line": 89,
      "column": 1,
      "match": "## OpenAI Custom GPT",
      "id": "docs/INTEGRATIONS.md::89:1::style-doctor/title-case-heading"
    },
    {
      "filePath": "docs/INTEGRATIONS.md",
      "plugin": "style-doctor",
      "rule": "title-case-heading",
      "severity": "warning",
      "category": "Formatting",
      "title": "Title Case Every Word heading",
      "message": "Capitalizing every word in a heading is an LLM formatting default.",
      "help": "Use sentence case.",
      "line": 97,
      "column": 1,
      "match": "### With Actions API",
      "id": "docs/INTEGRATIONS.md::97:1::style-doctor/title-case-heading"
    },
    {
      "filePath": "docs/INTEGRATIONS.md",
      "plugin": "style-doctor",
      "rule": "em-dash-density",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Em-dash overuse",
      "message": "A high em-dash rate is a common LLM tell.",
      "help": "Replace some with periods or commas.",
      "line": 1,
      "column": 1,
      "match": "4 em-dashes in 326 words",
      "id": "docs/INTEGRATIONS.md::1:1::style-doctor/em-dash-density"
    },
    {
      "filePath": "docs/PATTERNS.md",
      "plugin": "style-doctor",
      "rule": "passive-voice",
      "severity": "warning",
      "category": "Grammar",
      "title": "Possible passive voice",
      "message": "Naive check for passive voice (no POS tagger).",
      "help": "Prefer active voice: name the actor. --ignore passive-voice if noisy.",
      "line": 15,
      "column": 10,
      "match": "are weighted",
      "id": "docs/PATTERNS.md::15:10::style-doctor/passive-voice"
    },
    {
      "filePath": "docs/PATTERNS.md",
      "plugin": "style-doctor",
      "rule": "bold-density",
      "severity": "warning",
      "category": "Formatting",
      "title": "Bold-text overuse",
      "message": "Frequent bolding is a common LLM formatting tell.",
      "help": "Reserve bold for genuine emphasis; use fewer spans.",
      "line": 1,
      "column": 1,
      "match": "6 bolded spans in 296 words",
      "id": "docs/PATTERNS.md::1:1::style-doctor/bold-density"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "passive-voice",
      "severity": "warning",
      "category": "Grammar",
      "title": "Possible passive voice",
      "message": "Naive check for passive voice (no POS tagger).",
      "help": "Prefer active voice: name the actor. --ignore passive-voice if noisy.",
      "line": 3,
      "column": 175,
      "match": "was extruded",
      "id": "openai-gpt/instructions.md::3:175::style-doctor/passive-voice"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 19,
      "column": 44,
      "match": "pivotal",
      "id": "openai-gpt/instructions.md::19:44::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 21,
      "column": 40,
      "match": "showcasing",
      "id": "openai-gpt/instructions.md::21:40::style-doctor/superficial-ing"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 21,
      "column": 68,
      "match": "highlighting",
      "id": "openai-gpt/instructions.md::21:68::style-doctor/superficial-ing"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "nestled",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Travel-brochure word \"nestled\"",
      "message": "\"nestled\" is travel-brochure prose.",
      "help": "Use \"in\" or \"near\".",
      "line": 22,
      "column": 32,
      "match": "nestled",
      "id": "openai-gpt/instructions.md::22:32::style-doctor/nestled"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "vague-attribution",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Unsourced authority",
      "message": "This attributes a claim to an unnamed authority.",
      "help": "Cite the actual source or cut the claim.",
      "line": 23,
      "column": 30,
      "match": "Experts believe",
      "id": "openai-gpt/instructions.md::23:30::style-doctor/vague-attribution"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "vague-attribution",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Unsourced authority",
      "message": "This attributes a claim to an unnamed authority.",
      "help": "Cite the actual source or cut the claim.",
      "line": 23,
      "column": 49,
      "match": "Studies show",
      "id": "openai-gpt/instructions.md::23:49::style-doctor/vague-attribution"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "vague-attribution",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Unsourced authority",
      "message": "This attributes a claim to an unnamed authority.",
      "help": "Cite the actual source or cut the claim.",
      "line": 23,
      "column": 65,
      "match": "Industry reports",
      "id": "openai-gpt/instructions.md::23:65::style-doctor/vague-attribution"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "delve",
      "severity": "error",
      "category": "LLM Tells",
      "title": "Filler word \"delve\"",
      "message": "\"delve\" is a hallmark LLM word rarely used in natural writing.",
      "help": "Use \"look at\", \"go into\", or cut.",
      "line": 27,
      "column": 24,
      "match": "delve",
      "id": "openai-gpt/instructions.md::27:24::style-doctor/delve"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "tapestry",
      "severity": "error",
      "category": "LLM Tells",
      "title": "\"Tapestry\" metaphor",
      "message": "\"tapestry\" as a metaphor is LLM boilerplate.",
      "help": "Name the actual thing.",
      "line": 27,
      "column": 31,
      "match": "tapestry",
      "id": "openai-gpt/instructions.md::27:31::style-doctor/tapestry"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "nestled",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Travel-brochure word \"nestled\"",
      "message": "\"nestled\" is travel-brochure prose.",
      "help": "Use \"in\" or \"near\".",
      "line": 27,
      "column": 230,
      "match": "nestled",
      "id": "openai-gpt/instructions.md::27:230::style-doctor/nestled"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 27,
      "column": 41,
      "match": "vibrant",
      "id": "openai-gpt/instructions.md::27:41::style-doctor/ai-vocab"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 27,
      "column": 59,
      "match": "meticulous",
      "id": "openai-gpt/instructions.md::27:59::style-doctor/ai-vocab"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 27,
      "column": 50,
      "match": "crucial",
      "id": "openai-gpt/instructions.md::27:50::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 27,
      "column": 132,
      "match": "paramount",
      "id": "openai-gpt/instructions.md::27:132::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "seamless",
      "severity": "warning",
      "category": "Filler",
      "title": "Marketing filler \"seamless\"",
      "message": "\"seamless\" is marketing filler.",
      "help": "Describe the actual flow.",
      "line": 27,
      "column": 71,
      "match": "seamless",
      "id": "openai-gpt/instructions.md::27:71::style-doctor/seamless"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "leverage",
      "severity": "warning",
      "category": "Filler",
      "title": "Corporate verb \"leverage\"",
      "message": "\"leverage\" as a verb is corporate-speak.",
      "help": "Use \"use\".",
      "line": 27,
      "column": 97,
      "match": "leverage",
      "id": "openai-gpt/instructions.md::27:97::style-doctor/leverage"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "myriad",
      "severity": "warning",
      "category": "Filler",
      "title": "Showy word \"myriad\"",
      "message": "\"myriad\" is showy.",
      "help": "Use \"many\" or a number.",
      "line": 27,
      "column": 157,
      "match": "myriad",
      "id": "openai-gpt/instructions.md::27:157::style-doctor/myriad"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "boasts",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Ad-copy verb \"boasts\"",
      "message": "\"X boasts Y\" is product-page voice.",
      "help": "Use \"has\" or \"includes\".",
      "line": 28,
      "column": 41,
      "match": "boasts",
      "id": "openai-gpt/instructions.md::28:41::style-doctor/boasts"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 28,
      "column": 28,
      "match": "serves as",
      "id": "openai-gpt/instructions.md::28:28::style-doctor/copula-avoidance"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "its-not-x-its-y",
      "severity": "error",
      "category": "LLM Tells",
      "title": "\"It's not X, it's Y\" reversal",
      "message": "The \"It's not X, it's Y\" reversal reads as generated.",
      "help": "Make the claim once, plainly.",
      "line": 29,
      "column": 33,
      "match": "It's not just X, it's",
      "id": "openai-gpt/instructions.md::29:33::style-doctor/its-not-x-its-y"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "passive-voice",
      "severity": "warning",
      "category": "Grammar",
      "title": "Possible passive voice",
      "message": "Naive check for passive voice (no POS tagger).",
      "help": "Prefer active voice: name the actor. --ignore passive-voice if noisy.",
      "line": 37,
      "column": 51,
      "match": "is discussed",
      "id": "openai-gpt/instructions.md::37:51::style-doctor/passive-voice"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "ai-artifact",
      "severity": "error",
      "category": "AI Artifacts",
      "title": "Leftover AI-generation artifact",
      "message": "This is a chatbot sign-off or citation scrap left in from an unedited paste.",
      "help": "Remove it; it means the output was never read before publishing.",
      "line": 43,
      "column": 30,
      "match": "I hope this helps",
      "id": "openai-gpt/instructions.md::43:30::style-doctor/ai-artifact"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 48,
      "column": 27,
      "match": "In order to",
      "id": "openai-gpt/instructions.md::48:27::style-doctor/wordy-phrase"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 48,
      "column": 42,
      "match": "Due to the fact that",
      "id": "openai-gpt/instructions.md::48:42::style-doctor/wordy-phrase"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 48,
      "column": 66,
      "match": "At this point in time",
      "id": "openai-gpt/instructions.md::48:66::style-doctor/wordy-phrase"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "weasel-word",
      "severity": "warning",
      "category": "Filler",
      "title": "Weasel / hedge word",
      "message": "Hedge and intensifier words weaken the sentence.",
      "help": "Cut it or be specific.",
      "line": 49,
      "column": 66,
      "match": "arguably",
      "id": "openai-gpt/instructions.md::49:66::style-doctor/weasel-word"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "hedge-stack",
      "severity": "warning",
      "category": "Filler",
      "title": "Stacked hedge / confidence-calibration opener",
      "message": "Stacked hedges, or flagging your own \"noteworthy\" aside, is LLM throat-clearing.",
      "help": "Pick one hedge, or state the fact plainly.",
      "line": 49,
      "column": 30,
      "match": "could potentially",
      "id": "openai-gpt/instructions.md::49:30::style-doctor/hedge-stack"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "delve",
      "severity": "error",
      "category": "LLM Tells",
      "title": "Filler word \"delve\"",
      "message": "\"delve\" is a hallmark LLM word rarely used in natural writing.",
      "help": "Use \"look at\", \"go into\", or cut.",
      "line": 55,
      "column": 1,
      "match": "delve",
      "id": "openai-gpt/instructions.md::55:1::style-doctor/delve"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "tapestry",
      "severity": "error",
      "category": "LLM Tells",
      "title": "\"Tapestry\" metaphor",
      "message": "\"tapestry\" as a metaphor is LLM boilerplate.",
      "help": "Name the actual thing.",
      "line": 55,
      "column": 8,
      "match": "tapestry",
      "id": "openai-gpt/instructions.md::55:8::style-doctor/tapestry"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "nestled",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Travel-brochure word \"nestled\"",
      "message": "\"nestled\" is travel-brochure prose.",
      "help": "Use \"in\" or \"near\".",
      "line": 55,
      "column": 258,
      "match": "nestled",
      "id": "openai-gpt/instructions.md::55:258::style-doctor/nestled"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 55,
      "column": 18,
      "match": "vibrant",
      "id": "openai-gpt/instructions.md::55:18::style-doctor/ai-vocab"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 55,
      "column": 51,
      "match": "meticulous",
      "id": "openai-gpt/instructions.md::55:51::style-doctor/ai-vocab"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 55,
      "column": 292,
      "match": "garner",
      "id": "openai-gpt/instructions.md::55:292::style-doctor/ai-vocab"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 55,
      "column": 300,
      "match": "interplay",
      "id": "openai-gpt/instructions.md::55:300::style-doctor/ai-vocab"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 55,
      "column": 311,
      "match": "enduring",
      "id": "openai-gpt/instructions.md::55:311::style-doctor/ai-vocab"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 55,
      "column": 330,
      "match": "intricate",
      "id": "openai-gpt/instructions.md::55:330::style-doctor/ai-vocab"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 55,
      "column": 27,
      "match": "crucial",
      "id": "openai-gpt/instructions.md::55:27::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 55,
      "column": 140,
      "match": "paramount",
      "id": "openai-gpt/instructions.md::55:140::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 55,
      "column": 321,
      "match": "pivotal",
      "id": "openai-gpt/instructions.md::55:321::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "robust",
      "severity": "warning",
      "category": "Filler",
      "title": "Vague praise \"robust\"",
      "message": "\"robust\" is vague praise.",
      "help": "Say how it holds up.",
      "line": 55,
      "column": 71,
      "match": "robust",
      "id": "openai-gpt/instructions.md::55:71::style-doctor/robust"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "seamless",
      "severity": "warning",
      "category": "Filler",
      "title": "Marketing filler \"seamless\"",
      "message": "\"seamless\" is marketing filler.",
      "help": "Describe the actual flow.",
      "line": 55,
      "column": 79,
      "match": "seamless",
      "id": "openai-gpt/instructions.md::55:79::style-doctor/seamless"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "leverage",
      "severity": "warning",
      "category": "Filler",
      "title": "Corporate verb \"leverage\"",
      "message": "\"leverage\" as a verb is corporate-speak.",
      "help": "Use \"use\".",
      "line": 55,
      "column": 105,
      "match": "leverage",
      "id": "openai-gpt/instructions.md::55:105::style-doctor/leverage"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "myriad",
      "severity": "warning",
      "category": "Filler",
      "title": "Showy word \"myriad\"",
      "message": "\"myriad\" is showy.",
      "help": "Use \"many\" or a number.",
      "line": 55,
      "column": 165,
      "match": "myriad",
      "id": "openai-gpt/instructions.md::55:165::style-doctor/myriad"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 59,
      "column": 4,
      "match": "In order to",
      "id": "openai-gpt/instructions.md::59:4::style-doctor/wordy-phrase"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 60,
      "column": 4,
      "match": "Due to the fact that",
      "id": "openai-gpt/instructions.md::60:4::style-doctor/wordy-phrase"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "important-to-note",
      "severity": "error",
      "category": "Filler",
      "title": "\"It's important to note\" filler",
      "message": "\"it's important to note\" adds nothing.",
      "help": "Just state the note.",
      "line": 61,
      "column": 4,
      "match": "It is important to note",
      "id": "openai-gpt/instructions.md::61:4::style-doctor/important-to-note"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 62,
      "column": 4,
      "match": "At this point in time",
      "id": "openai-gpt/instructions.md::62:4::style-doctor/wordy-phrase"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "ai-artifact",
      "severity": "error",
      "category": "AI Artifacts",
      "title": "Leftover AI-generation artifact",
      "message": "This is a chatbot sign-off or citation scrap left in from an unedited paste.",
      "help": "Remove it; it means the output was never read before publishing.",
      "line": 64,
      "column": 12,
      "match": "I hope this helps",
      "id": "openai-gpt/instructions.md::64:12::style-doctor/ai-artifact"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 68,
      "column": 37,
      "match": "serves as",
      "id": "openai-gpt/instructions.md::68:37::style-doctor/copula-avoidance"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "em-dash-density",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Em-dash overuse",
      "message": "A high em-dash rate is a common LLM tell.",
      "help": "Replace some with periods or commas.",
      "line": 1,
      "column": 1,
      "match": "33 em-dashes in 577 words",
      "id": "openai-gpt/instructions.md::1:1::style-doctor/em-dash-density"
    },
    {
      "filePath": "openai-gpt/instructions.md",
      "plugin": "style-doctor",
      "rule": "bold-density",
      "severity": "warning",
      "category": "Formatting",
      "title": "Bold-text overuse",
      "message": "Frequent bolding is a common LLM formatting tell.",
      "help": "Reserve bold for genuine emphasis; use fewer spans.",
      "line": 1,
      "column": 1,
      "match": "42 bolded spans in 577 words",
      "id": "openai-gpt/instructions.md::1:1::style-doctor/bold-density"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "connective-overload",
      "severity": "warning",
      "category": "Filler",
      "title": "Formal connective overload",
      "message": "Formal connectives pile up in LLM prose.",
      "help": "Use \"also\" or start a new sentence.",
      "line": 11,
      "column": 3,
      "match": "additionally",
      "id": "references/ai-vocabulary.md::11:3::style-doctor/connective-overload"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "delve",
      "severity": "error",
      "category": "LLM Tells",
      "title": "Filler word \"delve\"",
      "message": "\"delve\" is a hallmark LLM word rarely used in natural writing.",
      "help": "Use \"look at\", \"go into\", or cut.",
      "line": 12,
      "column": 3,
      "match": "delve",
      "id": "references/ai-vocabulary.md::12:3::style-doctor/delve"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "tapestry",
      "severity": "error",
      "category": "LLM Tells",
      "title": "\"Tapestry\" metaphor",
      "message": "\"tapestry\" as a metaphor is LLM boilerplate.",
      "help": "Name the actual thing.",
      "line": 13,
      "column": 3,
      "match": "tapestry",
      "id": "references/ai-vocabulary.md::13:3::style-doctor/tapestry"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "tapestry",
      "severity": "error",
      "category": "LLM Tells",
      "title": "\"Tapestry\" metaphor",
      "message": "\"tapestry\" as a metaphor is LLM boilerplate.",
      "help": "Name the actual thing.",
      "line": 13,
      "column": 26,
      "match": "rich tapestry",
      "id": "references/ai-vocabulary.md::13:26::style-doctor/tapestry"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "weasel-word",
      "severity": "warning",
      "category": "Filler",
      "title": "Weasel / hedge word",
      "message": "Hedge and intensifier words weaken the sentence.",
      "help": "Cut it or be specific.",
      "line": 13,
      "column": 87,
      "match": "actually",
      "id": "references/ai-vocabulary.md::13:87::style-doctor/weasel-word"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "testament",
      "severity": "error",
      "category": "LLM Tells",
      "title": "\"A testament to\" filler praise",
      "message": "\"a testament to\" is empty praise.",
      "help": "Say what it shows and why.",
      "line": 14,
      "column": 16,
      "match": "a testament to",
      "id": "references/ai-vocabulary.md::14:16::style-doctor/testament"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 16,
      "column": 3,
      "match": "pivotal",
      "id": "references/ai-vocabulary.md::16:3::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 16,
      "column": 14,
      "match": "pivotal",
      "id": "references/ai-vocabulary.md::16:14::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 16,
      "column": 51,
      "match": "pivotal",
      "id": "references/ai-vocabulary.md::16:51::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "landscape",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Landscape\" metaphor",
      "message": "The \"landscape\" metaphor is overused by LLMs.",
      "help": "Be concrete about what changed.",
      "line": 17,
      "column": 31,
      "match": "evolving landscape",
      "id": "references/ai-vocabulary.md::17:31::style-doctor/landscape"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 18,
      "column": 3,
      "match": "intricate",
      "id": "references/ai-vocabulary.md::18:3::style-doctor/ai-vocab"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 18,
      "column": 13,
      "match": "intricacies",
      "id": "references/ai-vocabulary.md::18:13::style-doctor/ai-vocab"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 19,
      "column": 3,
      "match": "showcasing",
      "id": "references/ai-vocabulary.md::19:3::style-doctor/superficial-ing"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 19,
      "column": 26,
      "match": "showcasing",
      "id": "references/ai-vocabulary.md::19:26::style-doctor/superficial-ing"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 20,
      "column": 3,
      "match": "fostering",
      "id": "references/ai-vocabulary.md::20:3::style-doctor/superficial-ing"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 20,
      "column": 23,
      "match": "fostering",
      "id": "references/ai-vocabulary.md::20:23::style-doctor/superficial-ing"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 21,
      "column": 3,
      "match": "garner",
      "id": "references/ai-vocabulary.md::21:3::style-doctor/ai-vocab"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 21,
      "column": 10,
      "match": "garnered",
      "id": "references/ai-vocabulary.md::21:10::style-doctor/ai-vocab"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 21,
      "column": 22,
      "match": "garnered",
      "id": "references/ai-vocabulary.md::21:22::style-doctor/ai-vocab"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 22,
      "column": 3,
      "match": "interplay",
      "id": "references/ai-vocabulary.md::22:3::style-doctor/ai-vocab"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 22,
      "column": 20,
      "match": "interplay",
      "id": "references/ai-vocabulary.md::22:20::style-doctor/ai-vocab"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 23,
      "column": 3,
      "match": "enduring",
      "id": "references/ai-vocabulary.md::23:3::style-doctor/ai-vocab"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 23,
      "column": 15,
      "match": "enduring",
      "id": "references/ai-vocabulary.md::23:15::style-doctor/ai-vocab"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 24,
      "column": 3,
      "match": "vibrant",
      "id": "references/ai-vocabulary.md::24:3::style-doctor/ai-vocab"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 24,
      "column": 14,
      "match": "vibrant",
      "id": "references/ai-vocabulary.md::24:14::style-doctor/ai-vocab"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 24,
      "column": 77,
      "match": "vibrant",
      "id": "references/ai-vocabulary.md::24:77::style-doctor/ai-vocab"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 25,
      "column": 14,
      "match": "plays a crucial role",
      "id": "references/ai-vocabulary.md::25:14::style-doctor/copula-avoidance"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 25,
      "column": 3,
      "match": "crucial",
      "id": "references/ai-vocabulary.md::25:3::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 25,
      "column": 22,
      "match": "crucial",
      "id": "references/ai-vocabulary.md::25:22::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 25,
      "column": 54,
      "match": "essential",
      "id": "references/ai-vocabulary.md::25:54::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "connective-overload",
      "severity": "warning",
      "category": "Filler",
      "title": "Formal connective overload",
      "message": "Formal connectives pile up in LLM prose.",
      "help": "Use \"also\" or start a new sentence.",
      "line": 34,
      "column": 3,
      "match": "furthermore",
      "id": "references/ai-vocabulary.md::34:3::style-doctor/connective-overload"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "connective-overload",
      "severity": "warning",
      "category": "Filler",
      "title": "Formal connective overload",
      "message": "Formal connectives pile up in LLM prose.",
      "help": "Use \"also\" or start a new sentence.",
      "line": 34,
      "column": 16,
      "match": "moreover",
      "id": "references/ai-vocabulary.md::34:16::style-doctor/connective-overload"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "leverage",
      "severity": "warning",
      "category": "Filler",
      "title": "Corporate verb \"leverage\"",
      "message": "\"leverage\" as a verb is corporate-speak.",
      "help": "Use \"use\".",
      "line": 41,
      "column": 3,
      "match": "leveraging",
      "id": "references/ai-vocabulary.md::41:3::style-doctor/leverage"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "leverage",
      "severity": "warning",
      "category": "Filler",
      "title": "Corporate verb \"leverage\"",
      "message": "\"leverage\" as a verb is corporate-speak.",
      "help": "Use \"use\".",
      "line": 41,
      "column": 14,
      "match": "leverage",
      "id": "references/ai-vocabulary.md::41:14::style-doctor/leverage"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "robust",
      "severity": "warning",
      "category": "Filler",
      "title": "Vague praise \"robust\"",
      "message": "\"robust\" is vague praise.",
      "help": "Say how it holds up.",
      "line": 44,
      "column": 3,
      "match": "robust",
      "id": "references/ai-vocabulary.md::44:3::style-doctor/robust"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 51,
      "column": 26,
      "match": "essential",
      "id": "references/ai-vocabulary.md::51:26::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "cutting-edge",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Empty superlative \"cutting-edge\"",
      "message": "\"cutting-edge\" carries no information.",
      "help": "Name the specific capability.",
      "line": 53,
      "column": 3,
      "match": "cutting-edge",
      "id": "references/ai-vocabulary.md::53:3::style-doctor/cutting-edge"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "myriad",
      "severity": "warning",
      "category": "Filler",
      "title": "Showy word \"myriad\"",
      "message": "\"myriad\" is showy.",
      "help": "Use \"many\" or a number.",
      "line": 63,
      "column": 3,
      "match": "myriad",
      "id": "references/ai-vocabulary.md::63:3::style-doctor/myriad"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "nestled",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Travel-brochure word \"nestled\"",
      "message": "\"nestled\" is travel-brochure prose.",
      "help": "Use \"in\" or \"near\".",
      "line": 69,
      "column": 4,
      "match": "nestled",
      "id": "references/ai-vocabulary.md::69:4::style-doctor/nestled"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "legacy-praise",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Vague legacy/location praise",
      "message": "This phrase is empty legacy/location praise.",
      "help": "Say the specific fact instead.",
      "line": 70,
      "column": 4,
      "match": "in the heart of",
      "id": "references/ai-vocabulary.md::70:4::style-doctor/legacy-praise"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "cutting-edge",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Empty superlative \"cutting-edge\"",
      "message": "\"cutting-edge\" carries no information.",
      "help": "Name the specific capability.",
      "line": 76,
      "column": 4,
      "match": "state-of-the-art",
      "id": "references/ai-vocabulary.md::76:4::style-doctor/cutting-edge"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "seamless",
      "severity": "warning",
      "category": "Filler",
      "title": "Marketing filler \"seamless\"",
      "message": "\"seamless\" is marketing filler.",
      "help": "Describe the actual flow.",
      "line": 77,
      "column": 4,
      "match": "seamless",
      "id": "references/ai-vocabulary.md::77:4::style-doctor/seamless"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "game-changer",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Game-changer\" cliche",
      "message": "\"game-changer\" is marketing cliche.",
      "help": "State the concrete effect.",
      "line": 78,
      "column": 4,
      "match": "game-changing",
      "id": "references/ai-vocabulary.md::78:4::style-doctor/game-changer"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 88,
      "column": 14,
      "match": "pivotal",
      "id": "references/ai-vocabulary.md::88:14::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "testament",
      "severity": "error",
      "category": "LLM Tells",
      "title": "\"A testament to\" filler praise",
      "message": "\"a testament to\" is empty praise.",
      "help": "Say what it shows and why.",
      "line": 89,
      "column": 4,
      "match": "is a testament to",
      "id": "references/ai-vocabulary.md::89:4::style-doctor/testament"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 90,
      "column": 4,
      "match": "serves as",
      "id": "references/ai-vocabulary.md::90:4::style-doctor/copula-avoidance"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "landscape",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Landscape\" metaphor",
      "message": "The \"landscape\" metaphor is overused by LLMs.",
      "help": "Be concrete about what changed.",
      "line": 95,
      "column": 4,
      "match": "evolving landscape",
      "id": "references/ai-vocabulary.md::95:4::style-doctor/landscape"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "legacy-praise",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Vague legacy/location praise",
      "message": "This phrase is empty legacy/location praise.",
      "help": "Say the specific fact instead.",
      "line": 96,
      "column": 4,
      "match": "indelible mark",
      "id": "references/ai-vocabulary.md::96:4::style-doctor/legacy-praise"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 106,
      "column": 3,
      "match": "in order to",
      "id": "references/ai-vocabulary.md::106:3::style-doctor/wordy-phrase"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 107,
      "column": 3,
      "match": "due to the fact that",
      "id": "references/ai-vocabulary.md::107:3::style-doctor/wordy-phrase"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 108,
      "column": 3,
      "match": "at this point in time",
      "id": "references/ai-vocabulary.md::108:3::style-doctor/wordy-phrase"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 109,
      "column": 3,
      "match": "in the event that",
      "id": "references/ai-vocabulary.md::109:3::style-doctor/wordy-phrase"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 110,
      "column": 3,
      "match": "has the ability to",
      "id": "references/ai-vocabulary.md::110:3::style-doctor/wordy-phrase"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "important-to-note",
      "severity": "error",
      "category": "Filler",
      "title": "\"It's important to note\" filler",
      "message": "\"it's important to note\" adds nothing.",
      "help": "Just state the note.",
      "line": 111,
      "column": 3,
      "match": "it is important to note",
      "id": "references/ai-vocabulary.md::111:3::style-doctor/important-to-note"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "passive-voice",
      "severity": "warning",
      "category": "Grammar",
      "title": "Possible passive voice",
      "message": "Naive check for passive voice (no POS tagger).",
      "help": "Prefer active voice: name the actor. --ignore passive-voice if noisy.",
      "line": 113,
      "column": 13,
      "match": "be noted",
      "id": "references/ai-vocabulary.md::113:13::style-doctor/passive-voice"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "at-end-of-day",
      "severity": "warning",
      "category": "Filler",
      "title": "\"At the end of the day\" cliche",
      "message": "\"at the end of the day\" is a dead cliche.",
      "help": "Cut it or say \"ultimately\".",
      "line": 115,
      "column": 3,
      "match": "at the end of the day",
      "id": "references/ai-vocabulary.md::115:3::style-doctor/at-end-of-day"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "when-it-comes-to",
      "severity": "warning",
      "category": "Filler",
      "title": "\"When it comes to\" filler",
      "message": "\"when it comes to\" is filler.",
      "help": "Use \"for\" or \"with\".",
      "line": 116,
      "column": 3,
      "match": "when it comes to",
      "id": "references/ai-vocabulary.md::116:3::style-doctor/when-it-comes-to"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 119,
      "column": 3,
      "match": "for the purpose of",
      "id": "references/ai-vocabulary.md::119:3::style-doctor/wordy-phrase"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "realm",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"In the realm of\" padding",
      "message": "\"in the realm of\" is padding.",
      "help": "Use \"in\" or name the field.",
      "line": 121,
      "column": 3,
      "match": "in the realm of",
      "id": "references/ai-vocabulary.md::121:3::style-doctor/realm"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "ai-artifact",
      "severity": "error",
      "category": "AI Artifacts",
      "title": "Leftover AI-generation artifact",
      "message": "This is a chatbot sign-off or citation scrap left in from an unedited paste.",
      "help": "Remove it; it means the output was never read before publishing.",
      "line": 130,
      "column": 4,
      "match": "I hope this helps",
      "id": "references/ai-vocabulary.md::130:4::style-doctor/ai-artifact"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "ai-artifact",
      "severity": "error",
      "category": "AI Artifacts",
      "title": "Leftover AI-generation artifact",
      "message": "This is a chatbot sign-off or citation scrap left in from an unedited paste.",
      "help": "Remove it; it means the output was never read before publishing.",
      "line": 137,
      "column": 4,
      "match": "Of course!",
      "id": "references/ai-vocabulary.md::137:4::style-doctor/ai-artifact"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "ai-artifact",
      "severity": "error",
      "category": "AI Artifacts",
      "title": "Leftover AI-generation artifact",
      "message": "This is a chatbot sign-off or citation scrap left in from an unedited paste.",
      "help": "Remove it; it means the output was never read before publishing.",
      "line": 138,
      "column": 4,
      "match": "Certainly!",
      "id": "references/ai-vocabulary.md::138:4::style-doctor/ai-artifact"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "hedge-stack",
      "severity": "warning",
      "category": "Filler",
      "title": "Stacked hedge / confidence-calibration opener",
      "message": "Stacked hedges, or flagging your own \"noteworthy\" aside, is LLM throat-clearing.",
      "help": "Pick one hedge, or state the fact plainly.",
      "line": 150,
      "column": 4,
      "match": "could potentially",
      "id": "references/ai-vocabulary.md::150:4::style-doctor/hedge-stack"
    },
    {
      "filePath": "references/ai-vocabulary.md",
      "plugin": "style-doctor",
      "rule": "passive-voice",
      "severity": "warning",
      "category": "Grammar",
      "title": "Possible passive voice",
      "message": "Naive check for passive voice (no POS tagger).",
      "help": "Prefer active voice: name the actor. --ignore passive-voice if noisy.",
      "line": 155,
      "column": 13,
      "match": "be argued",
      "id": "references/ai-vocabulary.md::155:13::style-doctor/passive-voice"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "landscape",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Landscape\" metaphor",
      "message": "The \"landscape\" metaphor is overused by LLMs.",
      "help": "Be concrete about what changed.",
      "line": 11,
      "column": 83,
      "match": "evolving landscape",
      "id": "references/patterns.md::11:83::style-doctor/landscape"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "legacy-praise",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Vague legacy/location praise",
      "message": "This phrase is empty legacy/location praise.",
      "help": "Say the specific fact instead.",
      "line": 11,
      "column": 130,
      "match": "indelible mark",
      "id": "references/patterns.md::11:130::style-doctor/legacy-praise"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 11,
      "column": 15,
      "match": "pivotal",
      "id": "references/patterns.md::11:15::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 11,
      "column": 49,
      "match": "vital",
      "id": "references/patterns.md::11:49::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 11,
      "column": 55,
      "match": "crucial",
      "id": "references/patterns.md::11:55::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 39,
      "column": 46,
      "match": "highlighting",
      "id": "references/patterns.md::39:46::style-doctor/superficial-ing"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 39,
      "column": 60,
      "match": "underscoring",
      "id": "references/patterns.md::39:60::style-doctor/superficial-ing"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 39,
      "column": 74,
      "match": "emphasizing",
      "id": "references/patterns.md::39:74::style-doctor/superficial-ing"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 39,
      "column": 152,
      "match": "fostering",
      "id": "references/patterns.md::39:152::style-doctor/superficial-ing"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 39,
      "column": 177,
      "match": "showcasing",
      "id": "references/patterns.md::39:177::style-doctor/superficial-ing"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "weasel-word",
      "severity": "warning",
      "category": "Filler",
      "title": "Weasel / hedge word",
      "message": "Hedge and intensifier words weaken the sentence.",
      "help": "Cut it or be specific.",
      "line": 51,
      "column": 52,
      "match": "rather",
      "id": "references/patterns.md::51:52::style-doctor/weasel-word"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "nestled",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Travel-brochure word \"nestled\"",
      "message": "\"nestled\" is travel-brochure prose.",
      "help": "Use \"in\" or \"near\".",
      "line": 53,
      "column": 15,
      "match": "nestled",
      "id": "references/patterns.md::53:15::style-doctor/nestled"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "legacy-praise",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Vague legacy/location praise",
      "message": "This phrase is empty legacy/location praise.",
      "help": "Say the specific fact instead.",
      "line": 53,
      "column": 98,
      "match": "in the heart of",
      "id": "references/patterns.md::53:98::style-doctor/legacy-praise"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "vague-attribution",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Unsourced authority",
      "message": "This attributes a claim to an unnamed authority.",
      "help": "Cite the actual source or cut the claim.",
      "line": 67,
      "column": 15,
      "match": "Experts believe",
      "id": "references/patterns.md::67:15::style-doctor/vague-attribution"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "vague-attribution",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Unsourced authority",
      "message": "This attributes a claim to an unnamed authority.",
      "help": "Cite the actual source or cut the claim.",
      "line": 67,
      "column": 34,
      "match": "Industry reports",
      "id": "references/patterns.md::67:34::style-doctor/vague-attribution"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "vague-attribution",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Unsourced authority",
      "message": "This attributes a claim to an unnamed authority.",
      "help": "Cite the actual source or cut the claim.",
      "line": 67,
      "column": 62,
      "match": "Studies show",
      "id": "references/patterns.md::67:62::style-doctor/vague-attribution"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "vague-attribution",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Unsourced authority",
      "message": "This attributes a claim to an unnamed authority.",
      "help": "Cite the actual source or cut the claim.",
      "line": 67,
      "column": 78,
      "match": "Observers have noted",
      "id": "references/patterns.md::67:78::style-doctor/vague-attribution"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "delve",
      "severity": "error",
      "category": "LLM Tells",
      "title": "Filler word \"delve\"",
      "message": "\"delve\" is a hallmark LLM word rarely used in natural writing.",
      "help": "Use \"look at\", \"go into\", or cut.",
      "line": 97,
      "column": 41,
      "match": "delve",
      "id": "references/patterns.md::97:41::style-doctor/delve"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "tapestry",
      "severity": "error",
      "category": "LLM Tells",
      "title": "\"Tapestry\" metaphor",
      "message": "\"tapestry\" as a metaphor is LLM boilerplate.",
      "help": "Name the actual thing.",
      "line": 97,
      "column": 48,
      "match": "tapestry",
      "id": "references/patterns.md::97:48::style-doctor/tapestry"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 97,
      "column": 135,
      "match": "showcasing",
      "id": "references/patterns.md::97:135::style-doctor/superficial-ing"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 97,
      "column": 147,
      "match": "fostering",
      "id": "references/patterns.md::97:147::style-doctor/superficial-ing"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 97,
      "column": 112,
      "match": "intricate",
      "id": "references/patterns.md::97:112::style-doctor/ai-vocab"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 97,
      "column": 122,
      "match": "intricacies",
      "id": "references/patterns.md::97:122::style-doctor/ai-vocab"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 97,
      "column": 158,
      "match": "garner",
      "id": "references/patterns.md::97:158::style-doctor/ai-vocab"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 97,
      "column": 166,
      "match": "interplay",
      "id": "references/patterns.md::97:166::style-doctor/ai-vocab"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 97,
      "column": 177,
      "match": "enduring",
      "id": "references/patterns.md::97:177::style-doctor/ai-vocab"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 97,
      "column": 187,
      "match": "vibrant",
      "id": "references/patterns.md::97:187::style-doctor/ai-vocab"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "connective-overload",
      "severity": "warning",
      "category": "Filler",
      "title": "Formal connective overload",
      "message": "Formal connectives pile up in LLM prose.",
      "help": "Use \"also\" or start a new sentence.",
      "line": 97,
      "column": 27,
      "match": "additionally",
      "id": "references/patterns.md::97:27::style-doctor/connective-overload"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 97,
      "column": 81,
      "match": "pivotal",
      "id": "references/patterns.md::97:81::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 97,
      "column": 196,
      "match": "crucial",
      "id": "references/patterns.md::97:196::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "connective-overload",
      "severity": "warning",
      "category": "Filler",
      "title": "Formal connective overload",
      "message": "Formal connectives pile up in LLM prose.",
      "help": "Use \"also\" or start a new sentence.",
      "line": 99,
      "column": 29,
      "match": "furthermore",
      "id": "references/patterns.md::99:29::style-doctor/connective-overload"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "connective-overload",
      "severity": "warning",
      "category": "Filler",
      "title": "Formal connective overload",
      "message": "Formal connectives pile up in LLM prose.",
      "help": "Use \"also\" or start a new sentence.",
      "line": 99,
      "column": 42,
      "match": "moreover",
      "id": "references/patterns.md::99:42::style-doctor/connective-overload"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "robust",
      "severity": "warning",
      "category": "Filler",
      "title": "Vague praise \"robust\"",
      "message": "\"robust\" is vague praise.",
      "help": "Say how it holds up.",
      "line": 99,
      "column": 156,
      "match": "robust",
      "id": "references/patterns.md::99:156::style-doctor/robust"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "leverage",
      "severity": "warning",
      "category": "Filler",
      "title": "Corporate verb \"leverage\"",
      "message": "\"leverage\" as a verb is corporate-speak.",
      "help": "Use \"use\".",
      "line": 99,
      "column": 125,
      "match": "leveraging",
      "id": "references/patterns.md::99:125::style-doctor/leverage"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "myriad",
      "severity": "warning",
      "category": "Filler",
      "title": "Showy word \"myriad\"",
      "message": "\"myriad\" is showy.",
      "help": "Use \"many\" or a number.",
      "line": 99,
      "column": 289,
      "match": "myriad",
      "id": "references/patterns.md::99:289::style-doctor/myriad"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "hedge-stack",
      "severity": "warning",
      "category": "Filler",
      "title": "Stacked hedge / confidence-calibration opener",
      "message": "Stacked hedges, or flagging your own \"noteworthy\" aside, is LLM throat-clearing.",
      "help": "Pick one hedge, or state the fact plainly.",
      "line": 99,
      "column": 52,
      "match": "notably,",
      "id": "references/patterns.md::99:52::style-doctor/hedge-stack"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "boasts",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Ad-copy verb \"boasts\"",
      "message": "\"X boasts Y\" is product-page voice.",
      "help": "Use \"has\" or \"includes\".",
      "line": 113,
      "column": 57,
      "match": "boasts",
      "id": "references/patterns.md::113:57::style-doctor/boasts"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 113,
      "column": 15,
      "match": "serves as",
      "id": "references/patterns.md::113:15::style-doctor/copula-avoidance"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 113,
      "column": 28,
      "match": "stands as",
      "id": "references/patterns.md::113:28::style-doctor/copula-avoidance"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 113,
      "column": 41,
      "match": "functions as",
      "id": "references/patterns.md::113:41::style-doctor/copula-avoidance"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "not-just-but",
      "severity": "error",
      "category": "LLM Tells",
      "title": "\"Not just X, but Y\" construction",
      "message": "The \"not just X, but Y\" escalation is one of the strongest LLM tells.",
      "help": "Cut it and state the point directly.",
      "line": 125,
      "column": 2,
      "match": "Not just X, it's Y\" and \"Not only X but",
      "id": "references/patterns.md::125:2::style-doctor/not-just-but"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "ai-artifact",
      "severity": "error",
      "category": "AI Artifacts",
      "title": "Leftover AI-generation artifact",
      "message": "This is a chatbot sign-off or citation scrap left in from an unedited paste.",
      "help": "Remove it; it means the output was never read before publishing.",
      "line": 254,
      "column": 15,
      "match": "I hope this helps",
      "id": "references/patterns.md::254:15::style-doctor/ai-artifact"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "ai-artifact",
      "severity": "error",
      "category": "AI Artifacts",
      "title": "Leftover AI-generation artifact",
      "message": "This is a chatbot sign-off or citation scrap left in from an unedited paste.",
      "help": "Remove it; it means the output was never read before publishing.",
      "line": 254,
      "column": 81,
      "match": "Of course!",
      "id": "references/patterns.md::254:81::style-doctor/ai-artifact"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "ai-artifact",
      "severity": "error",
      "category": "AI Artifacts",
      "title": "Leftover AI-generation artifact",
      "message": "This is a chatbot sign-off or citation scrap left in from an unedited paste.",
      "help": "Remove it; it means the output was never read before publishing.",
      "line": 254,
      "column": 95,
      "match": "Certainly!",
      "id": "references/patterns.md::254:95::style-doctor/ai-artifact"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "passive-voice",
      "severity": "warning",
      "category": "Grammar",
      "title": "Possible passive voice",
      "message": "Naive check for passive voice (no POS tagger).",
      "help": "Prefer active voice: name the actor. --ignore passive-voice if noisy.",
      "line": 294,
      "column": 24,
      "match": "be shortened",
      "id": "references/patterns.md::294:24::style-doctor/passive-voice"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 298,
      "column": 3,
      "match": "In order to",
      "id": "references/patterns.md::298:3::style-doctor/wordy-phrase"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 299,
      "column": 3,
      "match": "Due to the fact that",
      "id": "references/patterns.md::299:3::style-doctor/wordy-phrase"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 300,
      "column": 3,
      "match": "At this point in time",
      "id": "references/patterns.md::300:3::style-doctor/wordy-phrase"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 301,
      "column": 3,
      "match": "In the event that",
      "id": "references/patterns.md::301:3::style-doctor/wordy-phrase"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 302,
      "column": 3,
      "match": "Has the ability to",
      "id": "references/patterns.md::302:3::style-doctor/wordy-phrase"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "important-to-note",
      "severity": "error",
      "category": "Filler",
      "title": "\"It's important to note\" filler",
      "message": "\"it's important to note\" adds nothing.",
      "help": "Just state the note.",
      "line": 303,
      "column": 3,
      "match": "It is important to note",
      "id": "references/patterns.md::303:3::style-doctor/important-to-note"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "when-it-comes-to",
      "severity": "warning",
      "category": "Filler",
      "title": "\"When it comes to\" filler",
      "message": "\"when it comes to\" is filler.",
      "help": "Use \"for\" or \"with\".",
      "line": 304,
      "column": 3,
      "match": "When it comes to",
      "id": "references/patterns.md::304:3::style-doctor/when-it-comes-to"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 305,
      "column": 3,
      "match": "For the purpose of",
      "id": "references/patterns.md::305:3::style-doctor/wordy-phrase"
    },
    {
      "filePath": "references/patterns.md",
      "plugin": "style-doctor",
      "rule": "bold-density",
      "severity": "warning",
      "category": "Formatting",
      "title": "Bold-text overuse",
      "message": "Frequent bolding is a common LLM formatting tell.",
      "help": "Reserve bold for genuine emphasis; use fewer spans.",
      "line": 1,
      "column": 1,
      "match": "58 bolded spans in 680 words",
      "id": "references/patterns.md::1:1::style-doctor/bold-density"
    },
    {
      "filePath": "references/style-guide.md",
      "plugin": "style-doctor",
      "rule": "passive-voice",
      "severity": "warning",
      "category": "Grammar",
      "title": "Possible passive voice",
      "message": "Naive check for passive voice (no POS tagger).",
      "help": "Prefer active voice: name the actor. --ignore passive-voice if noisy.",
      "line": 13,
      "column": 76,
      "match": "were impressed",
      "id": "references/style-guide.md::13:76::style-doctor/passive-voice"
    },
    {
      "filePath": "references/style-guide.md",
      "plugin": "style-doctor",
      "rule": "weasel-word",
      "severity": "warning",
      "category": "Filler",
      "title": "Weasel / hedge word",
      "message": "Hedge and intensifier words weaken the sentence.",
      "help": "Cut it or be specific.",
      "line": 23,
      "column": 67,
      "match": "actually",
      "id": "references/style-guide.md::23:67::style-doctor/weasel-word"
    },
    {
      "filePath": "references/style-guide.md",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 59,
      "column": 3,
      "match": "serves as",
      "id": "references/style-guide.md::59:3::style-doctor/copula-avoidance"
    },
    {
      "filePath": "references/style-guide.md",
      "plugin": "style-doctor",
      "rule": "boasts",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Ad-copy verb \"boasts\"",
      "message": "\"X boasts Y\" is product-page voice.",
      "help": "Use \"has\" or \"includes\".",
      "line": 61,
      "column": 3,
      "match": "boasts",
      "id": "references/style-guide.md::61:3::style-doctor/boasts"
    },
    {
      "filePath": "references/style-guide.md",
      "plugin": "style-doctor",
      "rule": "leverage",
      "severity": "warning",
      "category": "Filler",
      "title": "Corporate verb \"leverage\"",
      "message": "\"leverage\" as a verb is corporate-speak.",
      "help": "Use \"use\".",
      "line": 65,
      "column": 3,
      "match": "leverages",
      "id": "references/style-guide.md::65:3::style-doctor/leverage"
    },
    {
      "filePath": "references/style-guide.md",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 66,
      "column": 3,
      "match": "garners",
      "id": "references/style-guide.md::66:3::style-doctor/ai-vocab"
    },
    {
      "filePath": "references/style-guide.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 74,
      "column": 3,
      "match": "In order to",
      "id": "references/style-guide.md::74:3::style-doctor/wordy-phrase"
    },
    {
      "filePath": "references/style-guide.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 75,
      "column": 3,
      "match": "Due to the fact that",
      "id": "references/style-guide.md::75:3::style-doctor/wordy-phrase"
    },
    {
      "filePath": "references/style-guide.md",
      "plugin": "style-doctor",
      "rule": "important-to-note",
      "severity": "error",
      "category": "Filler",
      "title": "\"It's important to note\" filler",
      "message": "\"it's important to note\" adds nothing.",
      "help": "Just state the note.",
      "line": 76,
      "column": 3,
      "match": "It is important to note",
      "id": "references/style-guide.md::76:3::style-doctor/important-to-note"
    },
    {
      "filePath": "references/style-guide.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 77,
      "column": 3,
      "match": "At this point in time",
      "id": "references/style-guide.md::77:3::style-doctor/wordy-phrase"
    },
    {
      "filePath": "references/style-guide.md",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 78,
      "column": 3,
      "match": "Has the ability to",
      "id": "references/style-guide.md::78:3::style-doctor/wordy-phrase"
    },
    {
      "filePath": "references/style-guide.md",
      "plugin": "style-doctor",
      "rule": "hedge-stack",
      "severity": "warning",
      "category": "Filler",
      "title": "Stacked hedge / confidence-calibration opener",
      "message": "Stacked hedges, or flagging your own \"noteworthy\" aside, is LLM throat-clearing.",
      "help": "Pick one hedge, or state the fact plainly.",
      "line": 82,
      "column": 2,
      "match": "Could potentially",
      "id": "references/style-guide.md::82:2::style-doctor/hedge-stack"
    },
    {
      "filePath": "references/style-guide.md",
      "plugin": "style-doctor",
      "rule": "hedge-stack",
      "severity": "warning",
      "category": "Filler",
      "title": "Stacked hedge / confidence-calibration opener",
      "message": "Stacked hedges, or flagging your own \"noteworthy\" aside, is LLM throat-clearing.",
      "help": "Pick one hedge, or state the fact plainly.",
      "line": 84,
      "column": 21,
      "match": "could potentially",
      "id": "references/style-guide.md::84:21::style-doctor/hedge-stack"
    },
    {
      "filePath": "references/style-guide.md",
      "plugin": "style-doctor",
      "rule": "passive-voice",
      "severity": "warning",
      "category": "Grammar",
      "title": "Possible passive voice",
      "message": "Naive check for passive voice (no POS tagger).",
      "help": "Prefer active voice: name the actor. --ignore passive-voice if noisy.",
      "line": 84,
      "column": 39,
      "match": "be argued",
      "id": "references/style-guide.md::84:39::style-doctor/passive-voice"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "nestled",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Travel-brochure word \"nestled\"",
      "message": "\"nestled\" is travel-brochure prose.",
      "help": "Use \"in\" or \"near\".",
      "line": 3,
      "column": 259,
      "match": "nestled",
      "id": "tests/fixtures/ai-sample-1.txt::3:259::style-doctor/nestled"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 3,
      "column": 372,
      "match": "underscoring",
      "id": "tests/fixtures/ai-sample-1.txt::3:372::style-doctor/superficial-ing"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 3,
      "column": 33,
      "match": "enduring",
      "id": "tests/fixtures/ai-sample-1.txt::3:33::style-doctor/ai-vocab"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 3,
      "column": 20,
      "match": "serves as",
      "id": "tests/fixtures/ai-sample-1.txt::3:20::style-doctor/copula-avoidance"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 3,
      "column": 120,
      "match": "pivotal",
      "id": "tests/fixtures/ai-sample-1.txt::3:120::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 3,
      "column": 391,
      "match": "vital",
      "id": "tests/fixtures/ai-sample-1.txt::3:391::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 5,
      "column": 99,
      "match": "fostering",
      "id": "tests/fixtures/ai-sample-1.txt::5:99::style-doctor/superficial-ing"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 5,
      "column": 323,
      "match": "serves as",
      "id": "tests/fixtures/ai-sample-1.txt::5:323::style-doctor/copula-avoidance"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 5,
      "column": 359,
      "match": "functions as",
      "id": "tests/fixtures/ai-sample-1.txt::5:359::style-doctor/copula-avoidance"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 5,
      "column": 394,
      "match": "stands as",
      "id": "tests/fixtures/ai-sample-1.txt::5:394::style-doctor/copula-avoidance"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "seamless",
      "severity": "warning",
      "category": "Filler",
      "title": "Marketing filler \"seamless\"",
      "message": "\"seamless\" is marketing filler.",
      "help": "Describe the actual flow.",
      "line": 5,
      "column": 258,
      "match": "seamless",
      "id": "tests/fixtures/ai-sample-1.txt::5:258::style-doctor/seamless"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 7,
      "column": 366,
      "match": "highlighting",
      "id": "tests/fixtures/ai-sample-1.txt::7:366::style-doctor/superficial-ing"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 7,
      "column": 383,
      "match": "intricate",
      "id": "tests/fixtures/ai-sample-1.txt::7:383::style-doctor/ai-vocab"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 7,
      "column": 393,
      "match": "interplay",
      "id": "tests/fixtures/ai-sample-1.txt::7:393::style-doctor/ai-vocab"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "vague-attribution",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Unsourced authority",
      "message": "This attributes a claim to an unnamed authority.",
      "help": "Cite the actual source or cut the claim.",
      "line": 7,
      "column": 10,
      "match": "observers have noted",
      "id": "tests/fixtures/ai-sample-1.txt::7:10::style-doctor/vague-attribution"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "connective-overload",
      "severity": "warning",
      "category": "Filler",
      "title": "Formal connective overload",
      "message": "Formal connectives pile up in LLM prose.",
      "help": "Use \"also\" or start a new sentence.",
      "line": 7,
      "column": 240,
      "match": "Additionally",
      "id": "tests/fixtures/ai-sample-1.txt::7:240::style-doctor/connective-overload"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "passive-voice",
      "severity": "warning",
      "category": "Grammar",
      "title": "Possible passive voice",
      "message": "Naive check for passive voice (no POS tagger).",
      "help": "Prefer active voice: name the actor. --ignore passive-voice if noisy.",
      "line": 7,
      "column": 183,
      "match": "been featured",
      "id": "tests/fixtures/ai-sample-1.txt::7:183::style-doctor/passive-voice"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "passive-voice",
      "severity": "warning",
      "category": "Grammar",
      "title": "Possible passive voice",
      "message": "Naive check for passive voice (no POS tagger).",
      "help": "Prefer active voice: name the actor. --ignore passive-voice if noisy.",
      "line": 10,
      "column": 38,
      "match": "been enhanced",
      "id": "tests/fixtures/ai-sample-1.txt::10:38::style-doctor/passive-voice"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "wordy-phrase",
      "severity": "warning",
      "category": "Filler",
      "title": "Wordy phrase",
      "message": "This phrase has a shorter equivalent.",
      "help": "e.g. \"in order to\" -> \"to\", \"due to the fact that\" -> \"because\".",
      "line": 13,
      "column": 291,
      "match": "In order to",
      "id": "tests/fixtures/ai-sample-1.txt::13:291::style-doctor/wordy-phrase"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "hedge-stack",
      "severity": "warning",
      "category": "Filler",
      "title": "Stacked hedge / confidence-calibration opener",
      "message": "Stacked hedges, or flagging your own \"noteworthy\" aside, is LLM throat-clearing.",
      "help": "Pick one hedge, or state the fact plainly.",
      "line": 13,
      "column": 71,
      "match": "could potentially",
      "id": "tests/fixtures/ai-sample-1.txt::13:71::style-doctor/hedge-stack"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "passive-voice",
      "severity": "warning",
      "category": "Grammar",
      "title": "Possible passive voice",
      "message": "Naive check for passive voice (no POS tagger).",
      "help": "Prefer active voice: name the actor. --ignore passive-voice if noisy.",
      "line": 13,
      "column": 89,
      "match": "be argued",
      "id": "tests/fixtures/ai-sample-1.txt::13:89::style-doctor/passive-voice"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "ai-artifact",
      "severity": "error",
      "category": "AI Artifacts",
      "title": "Leftover AI-generation artifact",
      "message": "This is a chatbot sign-off or citation scrap left in from an unedited paste.",
      "help": "Remove it; it means the output was never read before publishing.",
      "line": 15,
      "column": 113,
      "match": "I hope this helps",
      "id": "tests/fixtures/ai-sample-1.txt::15:113::style-doctor/ai-artifact"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "in-conclusion",
      "severity": "warning",
      "category": "Filler",
      "title": "Redundant \"In conclusion\" signpost",
      "message": "\"In conclusion\" signposting is unnecessary in short prose.",
      "help": "End on the point itself.",
      "line": 15,
      "column": 1,
      "match": "In conclusion",
      "id": "tests/fixtures/ai-sample-1.txt::15:1::style-doctor/in-conclusion"
    },
    {
      "filePath": "tests/fixtures/ai-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "em-dash-density",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Em-dash overuse",
      "message": "A high em-dash rate is a common LLM tell.",
      "help": "Replace some with periods or commas.",
      "line": 1,
      "column": 1,
      "match": "4 em-dashes in 308 words",
      "id": "tests/fixtures/ai-sample-1.txt::1:1::style-doctor/em-dash-density"
    },
    {
      "filePath": "tests/fixtures/ai-sample-2.txt",
      "plugin": "style-doctor",
      "rule": "boasts",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Ad-copy verb \"boasts\"",
      "message": "\"X boasts Y\" is product-page voice.",
      "help": "Use \"has\" or \"includes\".",
      "line": 1,
      "column": 168,
      "match": "boasts",
      "id": "tests/fixtures/ai-sample-2.txt::1:168::style-doctor/boasts"
    },
    {
      "filePath": "tests/fixtures/ai-sample-2.txt",
      "plugin": "style-doctor",
      "rule": "nestled",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Travel-brochure word \"nestled\"",
      "message": "\"nestled\" is travel-brochure prose.",
      "help": "Use \"in\" or \"near\".",
      "line": 1,
      "column": 1,
      "match": "Nestled",
      "id": "tests/fixtures/ai-sample-2.txt::1:1::style-doctor/nestled"
    },
    {
      "filePath": "tests/fixtures/ai-sample-2.txt",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 1,
      "column": 198,
      "match": "showcasing",
      "id": "tests/fixtures/ai-sample-2.txt::1:198::style-doctor/superficial-ing"
    },
    {
      "filePath": "tests/fixtures/ai-sample-2.txt",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 1,
      "column": 226,
      "match": "fostering",
      "id": "tests/fixtures/ai-sample-2.txt::1:226::style-doctor/superficial-ing"
    },
    {
      "filePath": "tests/fixtures/ai-sample-2.txt",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 1,
      "column": 87,
      "match": "vibrant",
      "id": "tests/fixtures/ai-sample-2.txt::1:87::style-doctor/ai-vocab"
    },
    {
      "filePath": "tests/fixtures/ai-sample-2.txt",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 1,
      "column": 75,
      "match": "stands as",
      "id": "tests/fixtures/ai-sample-2.txt::1:75::style-doctor/copula-avoidance"
    },
    {
      "filePath": "tests/fixtures/ai-sample-2.txt",
      "plugin": "style-doctor",
      "rule": "superficial-ing",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Superficial-analysis \"-ing\" filler",
      "message": "These \"-ing\" connectives gesture at analysis without adding any.",
      "help": "State the actual point instead.",
      "line": 3,
      "column": 208,
      "match": "highlighting",
      "id": "tests/fixtures/ai-sample-2.txt::3:208::style-doctor/superficial-ing"
    },
    {
      "filePath": "tests/fixtures/ai-sample-2.txt",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 3,
      "column": 225,
      "match": "intricate",
      "id": "tests/fixtures/ai-sample-2.txt::3:225::style-doctor/ai-vocab"
    },
    {
      "filePath": "tests/fixtures/ai-sample-2.txt",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 3,
      "column": 235,
      "match": "interplay",
      "id": "tests/fixtures/ai-sample-2.txt::3:235::style-doctor/ai-vocab"
    },
    {
      "filePath": "tests/fixtures/ai-sample-2.txt",
      "plugin": "style-doctor",
      "rule": "ai-vocab",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "AI-vocabulary word",
      "message": "This word shows up disproportionately in LLM output.",
      "help": "Use a plainer, more specific word.",
      "line": 5,
      "column": 131,
      "match": "garnered",
      "id": "tests/fixtures/ai-sample-2.txt::5:131::style-doctor/ai-vocab"
    },
    {
      "filePath": "tests/fixtures/ai-sample-2.txt",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 5,
      "column": 26,
      "match": "plays a crucial role",
      "id": "tests/fixtures/ai-sample-2.txt::5:26::style-doctor/copula-avoidance"
    },
    {
      "filePath": "tests/fixtures/ai-sample-2.txt",
      "plugin": "style-doctor",
      "rule": "copula-avoidance",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "\"Serves/stands as\" instead of \"is\"",
      "message": "Dressing up \"is\" as \"serves as\"/\"stands as\" is a common LLM avoidance tic.",
      "help": "Just use \"is\" or the plain verb.",
      "line": 5,
      "column": 223,
      "match": "serves as",
      "id": "tests/fixtures/ai-sample-2.txt::5:223::style-doctor/copula-avoidance"
    },
    {
      "filePath": "tests/fixtures/ai-sample-2.txt",
      "plugin": "style-doctor",
      "rule": "vague-attribution",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Unsourced authority",
      "message": "This attributes a claim to an unnamed authority.",
      "help": "Cite the actual source or cut the claim.",
      "line": 5,
      "column": 1,
      "match": "Experts believe",
      "id": "tests/fixtures/ai-sample-2.txt::5:1::style-doctor/vague-attribution"
    },
    {
      "filePath": "tests/fixtures/ai-sample-2.txt",
      "plugin": "style-doctor",
      "rule": "vague-attribution",
      "severity": "warning",
      "category": "LLM Tells",
      "title": "Unsourced authority",
      "message": "This attributes a claim to an unnamed authority.",
      "help": "Cite the actual source or cut the claim.",
      "line": 5,
      "column": 168,
      "match": "industry reports",
      "id": "tests/fixtures/ai-sample-2.txt::5:168::style-doctor/vague-attribution"
    },
    {
      "filePath": "tests/fixtures/ai-sample-2.txt",
      "plugin": "style-doctor",
      "rule": "intensifier-cluster",
      "severity": "warning",
      "category": "Filler",
      "title": "Overused intensifier",
      "message": "Everything is \"crucial\" in LLM prose.",
      "help": "Reserve it for what truly is; else cut.",
      "line": 5,
      "column": 34,
      "match": "crucial",
      "id": "tests/fixtures/ai-sample-2.txt::5:34::style-doctor/intensifier-cluster"
    },
    {
      "filePath": "tests/fixtures/human-sample-1.txt",
      "plugin": "style-doctor",
      "rule": "weasel-word",
      "severity": "warning",
      "category": "Filler",
      "title": "Weasel / hedge word",
      "message": "Hedge and intensifier words weaken the sentence.",
      "help": "Cut it or be specific.",
      "line": 7,
      "column": 222,
      "match": "basically",
      "id": "tests/fixtures/human-sample-1.txt::7:222::style-doctor/weasel-word"
    }
  ]
}
