@redocly/recheck 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -308,6 +308,23 @@ The score reads flowing prose the way standard readability tools do: headings, c
308
308
  A file with no prose reports `—` (null in JSON) rather than a fake zero.
309
309
  In CI, run it twice — once on the PR head and once on the merge-base worktree — and join on file to show each changed page's score change.
310
310
 
311
+ ## Agent skills
312
+
313
+ Agents write a growing share of markdown, and a skill makes each one a recheck user with no person in the loop.
314
+ Two skills ship in the npm package under `skills/`:
315
+
316
+ - **`recheck-lint`** — run recheck on touched markdown before committing or outputting it, fix errors, and never suppress findings to pass.
317
+ - **`recheck-config`** — write and tune `recheck.yaml`: measure the corpus, set severities from counts, prefer fixes over exceptions, and adopt a baseline for large corpora.
318
+
319
+ To use them with Claude Code, copy them into your project:
320
+
321
+ ```bash
322
+ cp -r node_modules/@redocly/recheck/skills/recheck-lint .claude/skills/
323
+ cp -r node_modules/@redocly/recheck/skills/recheck-config .claude/skills/
324
+ ```
325
+
326
+ Each skill is one `SKILL.md` with a trigger description and instructions, so other agent runtimes can adapt them with a rename.
327
+
311
328
  ## Exceptions
312
329
 
313
330
  Rules can be configured with exceptions to skip specific files or lines:
@@ -1422,6 +1439,9 @@ Token-rule options aren't individually schema-validated, so an option name a rul
1422
1439
  - A `file.md#anchor` fragment must exist in the target file's headings and anchors.
1423
1440
  - Extensionless links resolve the way the Realm router does: `./page` tries `page.md`, and a directory link reads its `index.md`.
1424
1441
  - Site-root absolute paths (`/x/y`) resolve against the `rootDir` option when set, and are skipped without it.
1442
+ - `ignoredTargets` skips destinations by glob (`['/gateways/**']`) — for routes a renderer generates from data, with no file on disk.
1443
+ - Links to `<details>` sections resolve: a `<details>` without an explicit `id` gets one derived from its `<summary>` text, the same way the theme generates them in the browser.
1444
+ - Markdoc tags in headings (`## Payments {% badge /%}`) do not change the heading's anchor.
1425
1445
  In a monorepo with several docs projects, give `rootDir` a map from source-directory prefix to that directory's site root; the longest matching prefix wins, and files under no prefix keep the skip.
1426
1446
  Paths are relative to the working directory.
1427
1447
  - External URLs and `mailto:` are skipped.
@@ -1458,6 +1478,32 @@ Everything else matches exactly.
1458
1478
  **`pnpm parity` requires `--corpus`** — running it bare exits `2` with a usage error (`Usage: node benchmarks/parity/run-parity.mjs --corpus <name> [--profile default|rebilly] [--rules MD001,MD013]`) rather than running against a default document set.
1459
1479
  Always pass a document-set name, e.g. `pnpm parity --corpus monorepo-docs --profile default`.
1460
1480
 
1481
+ ### Front matter validation
1482
+
1483
+ The `front-matter` token rule validates front matter against JSON Schema, using `@redocly/ajv` — the same validator Redocly CLI uses.
1484
+ Map file patterns to schemas; the first matching mapping wins, and a file that matches no mapping is not checked.
1485
+
1486
+ ```yaml
1487
+ recheck/front-matter:
1488
+ severity: error
1489
+ message: 'Front matter: %s'
1490
+ assertions:
1491
+ front-matter:
1492
+ schemas:
1493
+ - files: ['.changeset/**']
1494
+ schema:
1495
+ type: object
1496
+ patternProperties:
1497
+ '^@redocly/': { enum: [major, minor, patch] }
1498
+ additionalProperties: false
1499
+ - files: ['docs/**']
1500
+ schemaFile: schemas/docs-front-matter.yaml
1501
+ ```
1502
+
1503
+ - `schema` is an inline JSON Schema object; `schemaFile` loads one from a YAML or JSON file, relative to the working directory.
1504
+ - A file with no front matter validates as an empty object, so the schema's `required` list decides whether front matter is mandatory.
1505
+ - Findings point at the line of the offending top-level key; front matter that is not valid YAML is one finding at the block start.
1506
+
1461
1507
  ## GitHub Actions Integration
1462
1508
 
1463
1509
  Recheck provides seamless GitHub Actions integration for automated content quality checking on pull requests.
@@ -0,0 +1,3 @@
1
+ import type { TokenRule } from '../types.js';
2
+ export declare const frontMatter: TokenRule;
3
+ //# sourceMappingURL=front-matter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"front-matter.d.ts","sourceRoot":"","sources":["../../../src/rules/token/front-matter.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAkF7C,eAAO,MAAM,WAAW,EAAE,SAqEzB,CAAC"}
@@ -0,0 +1,140 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import * as yaml from 'js-yaml';
3
+ import Ajv2020 from '@redocly/ajv/dist/2020.js';
4
+ import addFormats from 'ajv-formats';
5
+ import { filterByTypes } from '../../parser/index.js';
6
+ import { fileMatchesAnyPattern } from '../utils.js';
7
+ // CJS/ESM interop: the ajv build exports the constructor as `default`.
8
+ const AjvConstructor = Ajv2020.default ?? Ajv2020;
9
+ const validatorCache = new WeakMap();
10
+ // A schema that cannot load or compile must fail at the RULE's severity on
11
+ // every matching file -- a thrown error would surface as an internal
12
+ // warning, and warnings do not fail the run.
13
+ function validatorFor(mapping) {
14
+ const cached = validatorCache.get(mapping);
15
+ if (cached)
16
+ return cached;
17
+ const entry = buildValidator(mapping);
18
+ validatorCache.set(mapping, entry);
19
+ return entry;
20
+ }
21
+ function buildValidator(mapping) {
22
+ let schema = mapping.schema;
23
+ if (schema === undefined && typeof mapping.schemaFile === 'string') {
24
+ let raw;
25
+ try {
26
+ raw = readFileSync(mapping.schemaFile, 'utf8');
27
+ }
28
+ catch (error) {
29
+ return {
30
+ failure: `cannot read schemaFile "${mapping.schemaFile}" (${error instanceof Error ? error.message : String(error)})`,
31
+ };
32
+ }
33
+ try {
34
+ schema = yaml.load(raw, { schema: yaml.CORE_SCHEMA });
35
+ }
36
+ catch (error) {
37
+ return {
38
+ failure: `schemaFile "${mapping.schemaFile}" is not valid YAML (${error instanceof Error ? error.message.split('\n')[0] : String(error)})`,
39
+ };
40
+ }
41
+ }
42
+ if (schema === undefined || schema === null || typeof schema !== 'object') {
43
+ return { failure: 'each schemas entry needs a `schema` object or a `schemaFile` path' };
44
+ }
45
+ const ajv = new AjvConstructor({ allErrors: true, strict: false });
46
+ addFormats(ajv); // mismatching AJV typing due to fork
47
+ try {
48
+ return { validate: ajv.compile(schema) };
49
+ }
50
+ catch (error) {
51
+ return {
52
+ failure: `schema does not compile (${error instanceof Error ? error.message : String(error)})`,
53
+ };
54
+ }
55
+ }
56
+ // JSON pointer unescape: `~1` is `/` and `~0` is `~`.
57
+ function pointerSegments(instancePath) {
58
+ if (instancePath === '')
59
+ return [];
60
+ return instancePath
61
+ .slice(1)
62
+ .split('/')
63
+ .map((segment) => segment.replace(/~1/g, '/').replace(/~0/g, '~'));
64
+ }
65
+ // The front matter line that opens the error's top-level key, so a nested
66
+ // error still points at a real line. Keys may be quoted in the source.
67
+ function lineForKey(key, valueLines, blockStartLine) {
68
+ const candidates = [`${key}:`, `'${key}':`, `"${key}":`];
69
+ for (const line of valueLines) {
70
+ const text = line.text;
71
+ if (candidates.some((candidate) => text.startsWith(candidate)))
72
+ return line.startLine;
73
+ }
74
+ return blockStartLine;
75
+ }
76
+ export const frontMatter = {
77
+ name: 'front-matter',
78
+ tags: ['structure'],
79
+ fixable: false,
80
+ defaults: {
81
+ message: 'Front matter: %s',
82
+ schemas: [],
83
+ },
84
+ check(ctx) {
85
+ const schemas = (ctx.config.schemas ?? []);
86
+ if (!Array.isArray(schemas) || schemas.length === 0)
87
+ return;
88
+ const mapping = schemas.find((entry) => Array.isArray(entry.files) && fileMatchesAnyPattern(ctx.filePath, entry.files));
89
+ if (!mapping)
90
+ return;
91
+ const entry = validatorFor(mapping);
92
+ if ('failure' in entry) {
93
+ ctx.onError({ line: 1, context: entry.failure });
94
+ return;
95
+ }
96
+ const validate = entry.validate;
97
+ const block = filterByTypes(ctx.tree, ['yaml'])[0];
98
+ const blockStartLine = block?.startLine ?? 1;
99
+ const valueLines = block?.children.filter((child) => child.type === 'yamlValue') ?? [];
100
+ let data = {};
101
+ if (block) {
102
+ const source = valueLines.map((line) => line.text).join('\n');
103
+ try {
104
+ // CORE_SCHEMA keeps timestamps as strings, which is what JSON Schema sees.
105
+ data = yaml.load(source, { schema: yaml.CORE_SCHEMA }) ?? {};
106
+ }
107
+ catch (error) {
108
+ ctx.onError({
109
+ line: blockStartLine,
110
+ context: `not valid YAML (${error instanceof Error ? error.message.split('\n')[0] : String(error)})`,
111
+ });
112
+ return;
113
+ }
114
+ }
115
+ if (validate(data))
116
+ return;
117
+ for (const error of validate.errors ?? []) {
118
+ const segments = pointerSegments(error.instancePath);
119
+ // additionalProperties errors sit on the object; the offending key is
120
+ // in params, and that key's line is the useful one.
121
+ const extraKey = error.keyword === 'additionalProperties'
122
+ ? error.params.additionalProperty
123
+ : undefined;
124
+ const keyForLine = extraKey ?? segments[0];
125
+ const line = keyForLine === undefined
126
+ ? blockStartLine
127
+ : lineForKey(keyForLine, valueLines, blockStartLine);
128
+ const at = segments.length === 0
129
+ ? extraKey === undefined
130
+ ? 'front matter'
131
+ : `'${extraKey}'`
132
+ : `'${segments.join('.')}'`;
133
+ const message = extraKey === undefined
134
+ ? (error.message ?? 'does not match the schema')
135
+ : 'is not an allowed property';
136
+ ctx.onError({ line, context: `${at} ${message}` });
137
+ }
138
+ },
139
+ };
140
+ //# sourceMappingURL=front-matter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"front-matter.js","sourceRoot":"","sources":["../../../src/rules/token/front-matter.ts"],"names":[],"mappings":"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"}
@@ -45,6 +45,7 @@ import { noAltText } from './no-alt-text.js';
45
45
  import { emphasisStyle } from './emphasis-style.js';
46
46
  import { strongStyle } from './strong-style.js';
47
47
  import { linkFragments } from './link-fragments.js';
48
+ import { frontMatter } from './front-matter.js';
48
49
  import { referenceLinksImages } from './reference-links-images.js';
49
50
  import { linkImageReferenceDefinitions } from './link-image-reference-definitions.js';
50
51
  import { linkImageStyle } from './link-image-style.js';
@@ -59,7 +60,7 @@ import { markdocSyntax } from './markdoc-syntax.js';
59
60
  import { markdocPairing } from './markdoc-pairing.js';
60
61
  import { markdocUnknownTag } from './markdoc-unknown-tag.js';
61
62
  import { markdocAttributes } from './markdoc-attributes.js';
62
- export { headingIncrement, headingStyle, noMissingSpaceAtx, noMultipleSpaceAtx, noMissingSpaceClosedAtx, noMultipleSpaceClosedAtx, blanksAroundHeadings, headingStartLeft, noDuplicateHeading, noDuplicateLinkDestinations, noEmptyHeadings, listLength, singleH1, noTrailingPunctuation, noEmphasisAsHeading, firstLineH1, requiredHeadings, noTrailingSpaces, noHardTabs, noMultipleBlanks, lineLength, singleTrailingNewline, hrStyle, ulStyle, listIndent, ulIndent, olPrefix, listMarkerSpace, blanksAroundLists, noReversedLinks, commandsShowOutput, blanksAroundFences, noSpaceInEmphasis, noSpaceInLinks, noSpaceInCode, fencedCodeLanguage, noEmptyLinks, codeBlockStyle, codeFenceStyle, noInlineHtml, noBareUrls, properNames, noAltText, emphasisStyle, strongStyle, linkFragments, referenceLinksImages, linkImageReferenceDefinitions, linkImageStyle, descriptiveLinkText, noMultipleSpaceBlockquote, noBlanksBlockquote, tablePipeStyle, tableColumnCount, blanksAroundTables, tableColumnStyle, markdocSyntax, markdocPairing, markdocUnknownTag, markdocAttributes, };
63
+ export { headingIncrement, headingStyle, noMissingSpaceAtx, noMultipleSpaceAtx, noMissingSpaceClosedAtx, noMultipleSpaceClosedAtx, blanksAroundHeadings, headingStartLeft, noDuplicateHeading, noDuplicateLinkDestinations, noEmptyHeadings, listLength, singleH1, noTrailingPunctuation, noEmphasisAsHeading, firstLineH1, requiredHeadings, noTrailingSpaces, noHardTabs, noMultipleBlanks, lineLength, singleTrailingNewline, hrStyle, ulStyle, listIndent, ulIndent, olPrefix, listMarkerSpace, blanksAroundLists, noReversedLinks, commandsShowOutput, blanksAroundFences, noSpaceInEmphasis, noSpaceInLinks, noSpaceInCode, fencedCodeLanguage, noEmptyLinks, codeBlockStyle, codeFenceStyle, noInlineHtml, noBareUrls, properNames, noAltText, emphasisStyle, strongStyle, linkFragments, frontMatter, referenceLinksImages, linkImageReferenceDefinitions, linkImageStyle, descriptiveLinkText, noMultipleSpaceBlockquote, noBlanksBlockquote, tablePipeStyle, tableColumnCount, blanksAroundTables, tableColumnStyle, markdocSyntax, markdocPairing, markdocUnknownTag, markdocAttributes, };
63
64
  /**
64
65
  * Recheck-ORIGINAL token rules: no markdownlint counterpart, so they are
65
66
  * deliberately absent from the `recheck/markdown` parity preset AND from the
@@ -70,6 +71,6 @@ export { headingIncrement, headingStyle, noMissingSpaceAtx, noMultipleSpaceAtx,
70
71
  * so a native rule can never be silently forgotten by any of them, and the
71
72
  * three can never drift apart from separate hand-maintained copies.
72
73
  */
73
- export declare const RECHECK_ORIGINAL_TOKEN_RULE_NAMES: readonly ['no-duplicate-link-destinations', 'no-empty-headings', 'list-length', 'markdoc-syntax', 'markdoc-pairing', 'markdoc-unknown-tag', 'markdoc-attributes'];
74
+ export declare const RECHECK_ORIGINAL_TOKEN_RULE_NAMES: readonly ['front-matter', 'no-duplicate-link-destinations', 'no-empty-headings', 'list-length', 'markdoc-syntax', 'markdoc-pairing', 'markdoc-unknown-tag', 'markdoc-attributes'];
74
75
  export declare const allTokenRules: TokenRule[];
75
76
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rules/token/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rules/token/index.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,7 @@ import { noAltText } from './no-alt-text.js';
44
44
  import { emphasisStyle } from './emphasis-style.js';
45
45
  import { strongStyle } from './strong-style.js';
46
46
  import { linkFragments } from './link-fragments.js';
47
+ import { frontMatter } from './front-matter.js';
47
48
  import { referenceLinksImages } from './reference-links-images.js';
48
49
  import { linkImageReferenceDefinitions } from './link-image-reference-definitions.js';
49
50
  import { linkImageStyle } from './link-image-style.js';
@@ -58,7 +59,7 @@ import { markdocSyntax } from './markdoc-syntax.js';
58
59
  import { markdocPairing } from './markdoc-pairing.js';
59
60
  import { markdocUnknownTag } from './markdoc-unknown-tag.js';
60
61
  import { markdocAttributes } from './markdoc-attributes.js';
61
- export { headingIncrement, headingStyle, noMissingSpaceAtx, noMultipleSpaceAtx, noMissingSpaceClosedAtx, noMultipleSpaceClosedAtx, blanksAroundHeadings, headingStartLeft, noDuplicateHeading, noDuplicateLinkDestinations, noEmptyHeadings, listLength, singleH1, noTrailingPunctuation, noEmphasisAsHeading, firstLineH1, requiredHeadings, noTrailingSpaces, noHardTabs, noMultipleBlanks, lineLength, singleTrailingNewline, hrStyle, ulStyle, listIndent, ulIndent, olPrefix, listMarkerSpace, blanksAroundLists, noReversedLinks, commandsShowOutput, blanksAroundFences, noSpaceInEmphasis, noSpaceInLinks, noSpaceInCode, fencedCodeLanguage, noEmptyLinks, codeBlockStyle, codeFenceStyle, noInlineHtml, noBareUrls, properNames, noAltText, emphasisStyle, strongStyle, linkFragments, referenceLinksImages, linkImageReferenceDefinitions, linkImageStyle, descriptiveLinkText, noMultipleSpaceBlockquote, noBlanksBlockquote, tablePipeStyle, tableColumnCount, blanksAroundTables, tableColumnStyle, markdocSyntax, markdocPairing, markdocUnknownTag, markdocAttributes, };
62
+ export { headingIncrement, headingStyle, noMissingSpaceAtx, noMultipleSpaceAtx, noMissingSpaceClosedAtx, noMultipleSpaceClosedAtx, blanksAroundHeadings, headingStartLeft, noDuplicateHeading, noDuplicateLinkDestinations, noEmptyHeadings, listLength, singleH1, noTrailingPunctuation, noEmphasisAsHeading, firstLineH1, requiredHeadings, noTrailingSpaces, noHardTabs, noMultipleBlanks, lineLength, singleTrailingNewline, hrStyle, ulStyle, listIndent, ulIndent, olPrefix, listMarkerSpace, blanksAroundLists, noReversedLinks, commandsShowOutput, blanksAroundFences, noSpaceInEmphasis, noSpaceInLinks, noSpaceInCode, fencedCodeLanguage, noEmptyLinks, codeBlockStyle, codeFenceStyle, noInlineHtml, noBareUrls, properNames, noAltText, emphasisStyle, strongStyle, linkFragments, frontMatter, referenceLinksImages, linkImageReferenceDefinitions, linkImageStyle, descriptiveLinkText, noMultipleSpaceBlockquote, noBlanksBlockquote, tablePipeStyle, tableColumnCount, blanksAroundTables, tableColumnStyle, markdocSyntax, markdocPairing, markdocUnknownTag, markdocAttributes, };
62
63
  /** Every batch-1 (heading-family) token rule, in doc order (MD001-MD043). */
63
64
  const batch1TokenRules = [
64
65
  headingIncrement,
@@ -206,6 +207,7 @@ const markdocTokenRules = [
206
207
  * three can never drift apart from separate hand-maintained copies.
207
208
  */
208
209
  export const RECHECK_ORIGINAL_TOKEN_RULE_NAMES = [
210
+ 'front-matter',
209
211
  'no-duplicate-link-destinations',
210
212
  'no-empty-headings',
211
213
  'list-length',
@@ -222,5 +224,6 @@ export const allTokenRules = [
222
224
  ...batch5TokenRules,
223
225
  ...batch6TokenRules,
224
226
  ...markdocTokenRules,
227
+ frontMatter,
225
228
  ];
226
229
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rules/token/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,2BAA2B,EAC3B,eAAe,EACf,UAAU,EACV,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,qBAAqB,EACrB,OAAO,EACP,OAAO,EACP,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,YAAY,EACZ,UAAU,EACV,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,6BAA6B,EAC7B,cAAc,EACd,mBAAmB,EACnB,yBAAyB,EACzB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GAClB,CAAC;AAEF,6EAA6E;AAC7E,MAAM,gBAAgB,GAAgB;IACpC,gBAAgB;IAChB,YAAY;IACZ,iBAAiB;IACjB,kBAAkB;IAClB,uBAAuB;IACvB,wBAAwB;IACxB,oBAAoB;IACpB,gBAAgB;IAChB,kBAAkB;IAClB,2BAA2B;IAC3B,eAAe;IACf,QAAQ;IACR,qBAAqB;IACrB,mBAAmB;IACnB,WAAW;IACX,gBAAgB;CACjB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,gBAAgB,GAAgB;IACpC,gBAAgB;IAChB,UAAU;IACV,gBAAgB;IAChB,UAAU;IACV,qBAAqB;IACrB,OAAO;CACR,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,gBAAgB,GAAgB;IACpC,OAAO;IACP,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,eAAe;IACf,iBAAiB;IACjB,UAAU;CACX,CAAC;AAEF;;;;;GAKG;AACH,MAAM,gBAAgB,GAAgB;IACpC,eAAe;IACf,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;IACjB,aAAa;IACb,cAAc;IACd,kBAAkB;IAClB,YAAY;IACZ,cAAc;IACd,cAAc;CACf,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,gBAAgB,GAAgB;IACpC,YAAY;IACZ,UAAU;IACV,WAAW;IACX,SAAS;IACT,aAAa;IACb,WAAW;IACX,aAAa;IACb,oBAAoB;IACpB,6BAA6B;IAC7B,cAAc;IACd,mBAAmB;CACpB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAgB;IACpC,yBAAyB;IACzB,kBAAkB;IAClB,cAAc;IACd,gBAAgB;IAChB,kBAAkB;IAClB,gBAAgB;CACjB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,iBAAiB,GAAgB;IACrC,aAAa;IACb,cAAc;IACd,iBAAiB;IACjB,iBAAiB;CAClB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,gCAAgC;IAChC,mBAAmB;IACnB,aAAa;IACb,gBAAgB;IAChB,iBAAiB;IACjB,qBAAqB;IACrB,oBAAoB;CACZ,CAAC;AAEX,MAAM,CAAC,MAAM,aAAa,GAAgB;IACxC,GAAG,gBAAgB;IACnB,GAAG,gBAAgB;IACnB,GAAG,gBAAgB;IACnB,GAAG,gBAAgB;IACnB,GAAG,gBAAgB;IACnB,GAAG,gBAAgB;IACnB,GAAG,iBAAiB;CACrB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rules/token/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"link-fragments.d.ts","sourceRoot":"","sources":["../../../src/rules/token/link-fragments.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAkU7C,eAAO,MAAM,aAAa,EAAE,SAc3B,CAAC"}
1
+ {"version":3,"file":"link-fragments.d.ts","sourceRoot":"","sources":["../../../src/rules/token/link-fragments.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAwZ7C,eAAO,MAAM,aAAa,EAAE,SAe3B,CAAC"}
@@ -4,9 +4,10 @@
4
4
  // and image targets must exist on disk, and a `file.md#anchor` fragment
5
5
  // must exist in the target. Upstream never validates other files.
6
6
  import { readFileSync, statSync } from 'node:fs';
7
+ import picomatch from 'picomatch';
7
8
  import { dirname, extname, join, resolve, sep } from 'node:path';
8
9
  import { filterByTypes, parseMarkdown } from '../../parser/index.js';
9
- import { filterByPredicate, getHtmlAttributeRe, getHtmlTagInfo, isDocfxTab, toWellFormedString, } from './helpers.js';
10
+ import { clearHtmlCommentText, filterByPredicate, getHtmlAttributeRe, getHtmlTagInfo, isDocfxTab, toWellFormedString, } from './helpers.js';
10
11
  /** Recursive-descendant type filter (any depth), matching upstream's `filterByTypes(tokens, types)` semantics -- distinct from `getDescendantsByType`'s single-type-per-depth path walk, which is the wrong shape here since `resourceDestinationString`/`definitionDestinationString` nest under a literal/raw alternation this call site doesn't want to spell out. */
11
12
  function descendantsOfType(children, type) {
12
13
  return filterByPredicate(children, (token) => token.type === type);
@@ -15,7 +16,7 @@ const idRe = getHtmlAttributeRe('id');
15
16
  const nameRe = getHtmlAttributeRe('name');
16
17
  const anchorRe = /\{(#[a-z\d]+(?:[-_][a-z\d]+)*)\}/gu;
17
18
  const lineFragmentRe = /^#(?:L\d+(?:C\d+)?-L\d+(?:C\d+)?|L\d+)$/;
18
- const childrenExclude = new Set(['image', 'reference', 'resource']);
19
+ const childrenExclude = new Set(['image', 'reference', 'resource', 'markdocTag']);
19
20
  const tokensInclude = new Set(['characterEscapeValue', 'codeTextData', 'data', 'mathTextData']);
20
21
  /**
21
22
  * Converts a Markdown heading into an HTML fragment according to the rules
@@ -28,6 +29,11 @@ function convertHeadingToHTMLFragment(headingText) {
28
29
  .join('');
29
30
  return ('#' +
30
31
  encodeURIComponent(toWellFormedString(inlineText
32
+ // Markdoc tag markers never render, so they never slug. With
33
+ // markdoc parsing on, the tag subtree is excluded above; with it
34
+ // off, the raw {% ... %} text is stripped here.
35
+ .replace(/\{%-?[\s\S]*?-?%\}/g, '')
36
+ .trim()
31
37
  .toLowerCase()
32
38
  // RegExp source with Ruby's \p{Word} expanded into its General Categories
33
39
  // https://github.com/gjtorikian/html-pipeline/blob/main/lib/html/pipeline/toc_filter.rb
@@ -42,7 +48,60 @@ function unescapeStringTokenText(token) {
42
48
  .join('');
43
49
  }
44
50
  /** Anchors a document exposes: heading slugs, `{#anchors}`, and HTML id/name anchors. */
45
- function collectFragments(tree) {
51
+ // Mirrors the theme's client-side enhanceDetails (theme/src/core/utils/
52
+ // details.ts): a <details> without an explicit id gets one derived from its
53
+ // <summary> text -- whitespace collapsed to hyphens (leading and trailing
54
+ // included, exactly like the browser's textContent), lowercased, punctuation
55
+ // kept -- and a duplicate takes a -<index> suffix. Explicit ids never enter
56
+ // the duplicate set, matching the theme. Ids store URI-encoded, the form
57
+ // link lookups use. Matches inside code blocks are skipped: the theme only
58
+ // ids live elements, never rendered examples.
59
+ function collectDetailsAnchors(content, tree, fragments) {
60
+ const codeLines = new Set();
61
+ for (const block of filterByTypes(tree, ['codeFenced', 'codeIndented'])) {
62
+ for (let line = block.startLine; line <= block.endLine; line++)
63
+ codeLines.add(line);
64
+ }
65
+ const lineStarts = [0];
66
+ for (let offset = 0; offset < content.length; offset++) {
67
+ if (content[offset] === '\n')
68
+ lineStarts.push(offset + 1);
69
+ }
70
+ const lineOf = (offset) => {
71
+ let line = 0;
72
+ while (line + 1 < lineStarts.length && lineStarts[line + 1] <= offset)
73
+ line++;
74
+ return line + 1;
75
+ };
76
+ const setAnchor = (id) => fragments.set(`#${encodeURIComponent(id)}`, 0);
77
+ const generatedIds = new Set();
78
+ const detailsRe = /<details\b([^>]*)>/gi;
79
+ let index = 0;
80
+ let match;
81
+ while ((match = detailsRe.exec(content)) !== null) {
82
+ if (codeLines.has(lineOf(match.index)))
83
+ continue;
84
+ const explicitId = /\bid\s*=\s*["']([^"']+)["']/i.exec(match[1])?.[1];
85
+ if (explicitId) {
86
+ setAnchor(explicitId);
87
+ index++;
88
+ continue;
89
+ }
90
+ const closeIndex = content.indexOf('</details>', match.index);
91
+ const scope = content.slice(match.index, closeIndex === -1 ? undefined : closeIndex);
92
+ const summaryText = /<summary\b[^>]*>([\s\S]*?)<\/summary>/i
93
+ .exec(scope)?.[1]
94
+ ?.replace(/<[^>]+>/g, '');
95
+ const generated = summaryText
96
+ ? summaryText.replace(/\s+/g, '-').toLowerCase()
97
+ : `details-${index}`;
98
+ const id = generatedIds.has(generated) ? `${generated}-${index}` : generated;
99
+ generatedIds.add(id);
100
+ setAnchor(id);
101
+ index++;
102
+ }
103
+ }
104
+ function collectFragments(tree, content) {
46
105
  const fragments = new Map([['#top', 0]]);
47
106
  for (const headingText of filterByTypes(tree, ['atxHeadingText', 'setextHeadingText'])) {
48
107
  const fragment = convertHeadingToHTMLFragment(headingText);
@@ -74,6 +133,7 @@ function collectFragments(tree) {
74
133
  }
75
134
  }
76
135
  }
136
+ collectDetailsAnchors(content, tree, fragments);
77
137
  return fragments;
78
138
  }
79
139
  const SCHEME_RE = /^[a-z][a-z0-9+.-]*:/i;
@@ -95,7 +155,10 @@ function resolveTargetFile(absolutePath, markdoc) {
95
155
  let fragments = null;
96
156
  if (stats.isFile() && ['.md', '.markdown'].includes(extname(absolutePath).toLowerCase())) {
97
157
  try {
98
- fragments = collectFragments(parseMarkdown(readFileSync(absolutePath, 'utf8'), { markdoc }));
158
+ const targetContent = readFileSync(absolutePath, 'utf8');
159
+ // Comment-cleared, matching the in-file path: a <details> inside an
160
+ // HTML comment never renders and must not produce an anchor.
161
+ fragments = collectFragments(parseMarkdown(targetContent, { markdoc }), clearHtmlCommentText(targetContent));
99
162
  }
100
163
  catch {
101
164
  fragments = null;
@@ -163,7 +226,12 @@ function checkLinkFragments(ctx) {
163
226
  const ignoredPattern = String(ctx.config.ignoredPattern ?? '');
164
227
  const ignoredPatternRe = new RegExp(ignoredPattern || '^$');
165
228
  const rootDir = rootDirFor(ctx.config.rootDir, ctx.filePath);
166
- const fragments = collectFragments(ctx.tree);
229
+ // Destinations to skip entirely -- routes a renderer generates from data,
230
+ // with no file on disk to validate against.
231
+ const ignoredTargets = Array.isArray(ctx.config.ignoredTargets)
232
+ ? ctx.config.ignoredTargets
233
+ : [];
234
+ const fragments = collectFragments(ctx.tree, ctx.lines.join('\n'));
167
235
  const baseDir = dirname(ctx.filePath);
168
236
  const checkCrossFileDestination = (rawDestination, link, allowFragmentCheck) => {
169
237
  if (rawDestination === '' ||
@@ -175,6 +243,14 @@ function checkLinkFragments(ctx) {
175
243
  const isAbsolute = rawDestination.startsWith('/');
176
244
  if (isAbsolute && rootDir === '')
177
245
  return;
246
+ const destinationPath = rawDestination.split('#')[0].split('?')[0];
247
+ // Leading ./ and ../ segments never match a glob's `**`, so patterns
248
+ // also test against the destination with those segments removed.
249
+ const dotless = destinationPath.replace(/^(\.\.\/|\.\/)+/, '');
250
+ if (ignoredTargets.length > 0 &&
251
+ ignoredTargets.some((pattern) => picomatch.isMatch(destinationPath, pattern) || picomatch.isMatch(dotless, pattern))) {
252
+ return;
253
+ }
178
254
  const hashIndex = rawDestination.indexOf('#');
179
255
  const fragment = hashIndex === -1 ? '' : rawDestination.slice(hashIndex);
180
256
  let targetPath = hashIndex === -1 ? rawDestination : rawDestination.slice(0, hashIndex);
@@ -297,6 +373,7 @@ export const linkFragments = {
297
373
  ignoredPattern: '',
298
374
  crossFile: false,
299
375
  rootDir: '',
376
+ ignoredTargets: [],
300
377
  },
301
378
  check(ctx) {
302
379
  checkLinkFragments(ctx);
@@ -1 +1 @@
1
- {"version":3,"file":"link-fragments.js","sourceRoot":"","sources":["../../../src/rules/token/link-fragments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"link-fragments.js","sourceRoot":"","sources":["../../../src/rules/token/link-fragments.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,8 @@ import type { ScopedSegment, TextRange } from '../scopes/types.js';
20
20
  * because a tag is markup, never the prose a rule was pointed at.
21
21
  */
22
22
  export declare function nonProseRanges(segment: ScopedSegment, includeCode?: boolean): TextRange[];
23
+ /** Whether `file` matches any pattern, with the same semantics as `exceptions.files`. */
24
+ export declare function fileMatchesAnyPattern(file: string, patterns: string[]): boolean;
23
25
  export declare function shouldProcessFile(file: string, rule: NormalizedRule): boolean;
24
26
  /**
25
27
  * Check if a line should be excluded based on line exceptions.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/rules/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGnE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,EAAE,CAKzF;AAsBD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CA+B7E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAOjF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/rules/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGnE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,EAAE,CAKzF;AAsBD,yFAAyF;AACzF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAI/E;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CA+B7E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAOjF"}
@@ -46,6 +46,12 @@ function matchesFilePattern(pattern, basename, normalizedPath) {
46
46
  }
47
47
  return false;
48
48
  }
49
+ /** Whether `file` matches any pattern, with the same semantics as `exceptions.files`. */
50
+ export function fileMatchesAnyPattern(file, patterns) {
51
+ const basename = path.basename(file);
52
+ const normalizedPath = path.relative(process.cwd(), file).replace(/\\/g, '/');
53
+ return patterns.some((pattern) => matchesFilePattern(pattern, basename, normalizedPath));
54
+ }
49
55
  export function shouldProcessFile(file, rule) {
50
56
  const basename = path.basename(file);
51
57
  const relativePath = path.relative(process.cwd(), file);
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/rules/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/rules/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/recheck",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "description": "Content linting (configurable + built-in rules)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -58,8 +58,8 @@
58
58
  "tsx": "^4.23.1",
59
59
  "typescript": "6.0.3",
60
60
  "vitest": "4.1.10",
61
- "@redocly/portal": "0.68.3",
62
- "@redocly/theme": "0.69.0-next.1"
61
+ "@redocly/theme": "0.69.0-next.2",
62
+ "@redocly/portal": "0.68.3"
63
63
  },
64
64
  "scripts": {
65
65
  "build": "tsgo && tsgo --noEmit -p tsconfig.typecheck.json",
@@ -0,0 +1,66 @@
1
+ ---
2
+ name: recheck-config
3
+ description: Use when you create or tune a recheck.yaml for a project — choose presets, set severities from measured counts, add exceptions, adopt a baseline, and validate the result.
4
+ ---
5
+
6
+ # Write and tune recheck.yaml
7
+
8
+ Configure recheck for a project the way its maintainers would: measure first, decide per rule, and record intent.
9
+
10
+ ## Start a new config
11
+
12
+ 1. Begin with the structural preset and validate:
13
+
14
+ ```yaml
15
+ extends:
16
+ - recheck/markdown
17
+ ```
18
+
19
+ ```bash
20
+ npx recheck validate
21
+ ```
22
+
23
+ 2. Add prose rules deliberately, not wholesale.
24
+ `recheck/prose` is a small starter; `recheck/google` and `recheck/microsoft` are large style guides that need tuning before they help.
25
+
26
+ ## Tune severities from measurements, not taste
27
+
28
+ 1. Run the whole corpus and count findings per rule:
29
+
30
+ ```bash
31
+ npx recheck run docs --output json --annotations-limit 5000 --output-path findings.json
32
+ ```
33
+
34
+ Group the findings by `ruleName` and look at real examples of each before deciding anything.
35
+
36
+ 2. Decide per rule from the counts:
37
+ - `error` — enforce now; the corpus is clean or you fix it in the same change.
38
+ - `warn` — a worklist; visible, not blocking.
39
+ - `off` — decided against; keep a comment that says why, or the decision is lost.
40
+
41
+ 3. Prefer fixing content over configuring around it.
42
+ Run `--fix` first; most structural findings repair themselves.
43
+
44
+ ## Exceptions, in order of preference
45
+
46
+ 1. Fix the content.
47
+ 2. `exceptions.files` for generated or frozen content (archives, vendored docs) — with a comment naming the reason.
48
+ 3. `exceptions.lines` for a recurring true positive that must stay as written.
49
+ 4. An inline `<!-- recheck-disable-next-line rule-name -->` for a single line.
50
+
51
+ ## Adopt strictness on a large corpus with a baseline
52
+
53
+ When the corpus has too many errors to fix at once, record them and gate only new ones:
54
+
55
+ ```bash
56
+ npx recheck baseline
57
+ ```
58
+
59
+ Commit `recheck-baseline.yaml` and add `baseline: recheck-baseline.yaml` to the config.
60
+ Counts only step down: when findings get fixed, regenerate the baseline and commit the diff.
61
+
62
+ ## Finish
63
+
64
+ - `npx recheck validate` must pass.
65
+ - Every `off` and every exception carries a comment with its reason.
66
+ - The config's README section or the project docs say how contributors run recheck locally.
@@ -0,0 +1,49 @@
1
+ ---
2
+ name: recheck-lint
3
+ description: Use when you write or edit markdown in a project that has a recheck.yaml — run recheck on the touched files before you commit them or hand them over, and fix what it finds.
4
+ ---
5
+
6
+ # Lint markdown with recheck before you commit it
7
+
8
+ This project lints markdown and prose with recheck.
9
+ Your markdown must pass it, the same as code must pass its tests.
10
+
11
+ ## When this applies
12
+
13
+ A `recheck.yaml` (or `recheck.yml`) exists in the project root or above the files you touched.
14
+ If none exists, this skill does not apply.
15
+
16
+ ## What to do
17
+
18
+ 1. After you write or edit markdown files, run recheck on them:
19
+
20
+ ```bash
21
+ npx recheck run <file-or-directory>
22
+ ```
23
+
24
+ 2. If it reports errors, run the auto-fix first — most structural findings repair themselves:
25
+
26
+ ```bash
27
+ npx recheck run <file-or-directory> --fix
28
+ ```
29
+
30
+ 3. Fix the remaining errors by hand.
31
+ Read each message; the rule name links the finding to its intent.
32
+
33
+ 4. Re-run until it reports no errors, and only then commit or output the content.
34
+
35
+ ## Rules of conduct
36
+
37
+ - Fix content instead of suppressing findings.
38
+ Suppress only a true positive that must stay as written, with an inline directive on that one line:
39
+
40
+ ```markdown
41
+ <!-- recheck-disable-next-line recheck/rule-name -->
42
+ ```
43
+
44
+ Never disable a rule project-wide to make your change pass, and never edit `recheck.yaml` to get past a finding.
45
+ - Warnings do not block you.
46
+ Leave them unless the task asks for cleanup.
47
+ - If the project has a baseline file (a `baseline:` key in `recheck.yaml`), old findings are budgeted; only new findings are yours to fix.
48
+ Do not regenerate the baseline to absorb findings your change introduced.
49
+ - A finding you believe is a false positive is worth reporting to the maintainer, not silently suppressing.