@promptci/core 0.0.1 → 0.2.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.
Files changed (253) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +29 -30
  3. package/dist/action-pinning.d.ts +37 -0
  4. package/dist/action-pinning.d.ts.map +1 -0
  5. package/dist/action-pinning.js +277 -0
  6. package/dist/action-pinning.js.map +1 -0
  7. package/dist/agent-practices.d.ts +3 -1
  8. package/dist/agent-practices.d.ts.map +1 -1
  9. package/dist/agent-practices.js +198 -94
  10. package/dist/agent-practices.js.map +1 -1
  11. package/dist/ai-config.d.ts +178 -0
  12. package/dist/ai-config.d.ts.map +1 -0
  13. package/dist/ai-config.js +721 -0
  14. package/dist/ai-config.js.map +1 -0
  15. package/dist/alias-files.d.ts +33 -0
  16. package/dist/alias-files.d.ts.map +1 -0
  17. package/dist/alias-files.js +60 -0
  18. package/dist/alias-files.js.map +1 -0
  19. package/dist/baseline.d.ts +17 -1
  20. package/dist/baseline.d.ts.map +1 -1
  21. package/dist/baseline.js +5 -1
  22. package/dist/baseline.js.map +1 -1
  23. package/dist/buried-critical.d.ts +17 -0
  24. package/dist/buried-critical.d.ts.map +1 -0
  25. package/dist/buried-critical.js +107 -0
  26. package/dist/buried-critical.js.map +1 -0
  27. package/dist/canonical-owner.d.ts.map +1 -1
  28. package/dist/canonical-owner.js +60 -30
  29. package/dist/canonical-owner.js.map +1 -1
  30. package/dist/ci-alignment.d.ts.map +1 -1
  31. package/dist/ci-alignment.js +3 -2
  32. package/dist/ci-alignment.js.map +1 -1
  33. package/dist/command-validity.d.ts +16 -0
  34. package/dist/command-validity.d.ts.map +1 -1
  35. package/dist/command-validity.js +387 -134
  36. package/dist/command-validity.js.map +1 -1
  37. package/dist/conflicts.d.ts.map +1 -1
  38. package/dist/conflicts.js +4 -44
  39. package/dist/conflicts.js.map +1 -1
  40. package/dist/context-analysis.d.ts.map +1 -1
  41. package/dist/context-analysis.js +13 -2
  42. package/dist/context-analysis.js.map +1 -1
  43. package/dist/context-bloat.d.ts +20 -1
  44. package/dist/context-bloat.d.ts.map +1 -1
  45. package/dist/context-bloat.js +99 -15
  46. package/dist/context-bloat.js.map +1 -1
  47. package/dist/context-optimizer.d.ts.map +1 -1
  48. package/dist/context-optimizer.js +18 -54
  49. package/dist/context-optimizer.js.map +1 -1
  50. package/dist/copilot-instructions-detector.d.ts +24 -0
  51. package/dist/copilot-instructions-detector.d.ts.map +1 -0
  52. package/dist/copilot-instructions-detector.js +145 -0
  53. package/dist/copilot-instructions-detector.js.map +1 -0
  54. package/dist/cursor-rules-detector.d.ts +17 -0
  55. package/dist/cursor-rules-detector.d.ts.map +1 -0
  56. package/dist/cursor-rules-detector.js +110 -0
  57. package/dist/cursor-rules-detector.js.map +1 -0
  58. package/dist/custom-rules.d.ts +52 -0
  59. package/dist/custom-rules.d.ts.map +1 -0
  60. package/dist/custom-rules.js +303 -0
  61. package/dist/custom-rules.js.map +1 -0
  62. package/dist/dead-references.d.ts +8 -2
  63. package/dist/dead-references.d.ts.map +1 -1
  64. package/dist/dead-references.js +315 -68
  65. package/dist/dead-references.js.map +1 -1
  66. package/dist/dependency-staleness.d.ts +35 -0
  67. package/dist/dependency-staleness.d.ts.map +1 -0
  68. package/dist/dependency-staleness.js +1001 -0
  69. package/dist/dependency-staleness.js.map +1 -0
  70. package/dist/detectors.d.ts +1 -3
  71. package/dist/detectors.d.ts.map +1 -1
  72. package/dist/detectors.js +74 -56
  73. package/dist/detectors.js.map +1 -1
  74. package/dist/duplicates.d.ts.map +1 -1
  75. package/dist/duplicates.js +15 -9
  76. package/dist/duplicates.js.map +1 -1
  77. package/dist/evidence.d.ts +39 -0
  78. package/dist/evidence.d.ts.map +1 -0
  79. package/dist/evidence.js +78 -0
  80. package/dist/evidence.js.map +1 -0
  81. package/dist/finding-id.d.ts +21 -0
  82. package/dist/finding-id.d.ts.map +1 -0
  83. package/dist/finding-id.js +31 -0
  84. package/dist/finding-id.js.map +1 -0
  85. package/dist/fix-engine.d.ts +11 -0
  86. package/dist/fix-engine.d.ts.map +1 -1
  87. package/dist/fix-engine.js +88 -71
  88. package/dist/fix-engine.js.map +1 -1
  89. package/dist/frameworks/dotnet.js +2 -2
  90. package/dist/frameworks/dotnet.js.map +1 -1
  91. package/dist/frameworks/python.d.ts.map +1 -1
  92. package/dist/frameworks/python.js +5 -2
  93. package/dist/frameworks/python.js.map +1 -1
  94. package/dist/frameworks/rust.d.ts.map +1 -1
  95. package/dist/frameworks/rust.js +2 -1
  96. package/dist/frameworks/rust.js.map +1 -1
  97. package/dist/git-symlinks.d.ts +30 -0
  98. package/dist/git-symlinks.d.ts.map +1 -0
  99. package/dist/git-symlinks.js +161 -0
  100. package/dist/git-symlinks.js.map +1 -0
  101. package/dist/gitignore.d.ts +22 -0
  102. package/dist/gitignore.d.ts.map +1 -0
  103. package/dist/gitignore.js +157 -0
  104. package/dist/gitignore.js.map +1 -0
  105. package/dist/health-score.d.ts.map +1 -1
  106. package/dist/health-score.js +35 -5
  107. package/dist/health-score.js.map +1 -1
  108. package/dist/hooks-settings-detector.d.ts +17 -0
  109. package/dist/hooks-settings-detector.d.ts.map +1 -0
  110. package/dist/hooks-settings-detector.js +228 -0
  111. package/dist/hooks-settings-detector.js.map +1 -0
  112. package/dist/index.d.ts +29 -8
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js +21 -6
  115. package/dist/index.js.map +1 -1
  116. package/dist/makefile.d.ts +37 -0
  117. package/dist/makefile.d.ts.map +1 -0
  118. package/dist/makefile.js +156 -0
  119. package/dist/makefile.js.map +1 -0
  120. package/dist/manifest-consistency.d.ts +6 -0
  121. package/dist/manifest-consistency.d.ts.map +1 -1
  122. package/dist/manifest-consistency.js +75 -10
  123. package/dist/manifest-consistency.js.map +1 -1
  124. package/dist/markdown-fences.d.ts +112 -0
  125. package/dist/markdown-fences.d.ts.map +1 -0
  126. package/dist/markdown-fences.js +174 -0
  127. package/dist/markdown-fences.js.map +1 -0
  128. package/dist/mcp-config-detector.d.ts +20 -0
  129. package/dist/mcp-config-detector.d.ts.map +1 -0
  130. package/dist/mcp-config-detector.js +237 -0
  131. package/dist/mcp-config-detector.js.map +1 -0
  132. package/dist/missing-context.d.ts.map +1 -1
  133. package/dist/missing-context.js +2 -52
  134. package/dist/missing-context.js.map +1 -1
  135. package/dist/model-budgets.d.ts +69 -0
  136. package/dist/model-budgets.d.ts.map +1 -0
  137. package/dist/model-budgets.js +110 -0
  138. package/dist/model-budgets.js.map +1 -0
  139. package/dist/negative-instructions.d.ts +26 -0
  140. package/dist/negative-instructions.d.ts.map +1 -0
  141. package/dist/negative-instructions.js +169 -0
  142. package/dist/negative-instructions.js.map +1 -0
  143. package/dist/path-containment.d.ts +41 -0
  144. package/dist/path-containment.d.ts.map +1 -0
  145. package/dist/path-containment.js +123 -0
  146. package/dist/path-containment.js.map +1 -0
  147. package/dist/project-type.d.ts +12 -2
  148. package/dist/project-type.d.ts.map +1 -1
  149. package/dist/project-type.js +25 -12
  150. package/dist/project-type.js.map +1 -1
  151. package/dist/prompt-cache.d.ts.map +1 -1
  152. package/dist/prompt-cache.js +33 -24
  153. package/dist/prompt-cache.js.map +1 -1
  154. package/dist/promptci-gitignore.d.ts +34 -0
  155. package/dist/promptci-gitignore.d.ts.map +1 -0
  156. package/dist/promptci-gitignore.js +42 -0
  157. package/dist/promptci-gitignore.js.map +1 -0
  158. package/dist/repo-context.d.ts +80 -0
  159. package/dist/repo-context.d.ts.map +1 -1
  160. package/dist/repo-context.js +170 -16
  161. package/dist/repo-context.js.map +1 -1
  162. package/dist/report.d.ts +8 -0
  163. package/dist/report.d.ts.map +1 -1
  164. package/dist/report.js +163 -63
  165. package/dist/report.js.map +1 -1
  166. package/dist/scan.d.ts.map +1 -1
  167. package/dist/scan.js +47 -4
  168. package/dist/scan.js.map +1 -1
  169. package/dist/scanner.d.ts +61 -1
  170. package/dist/scanner.d.ts.map +1 -1
  171. package/dist/scanner.js +367 -70
  172. package/dist/scanner.js.map +1 -1
  173. package/dist/security-pack.d.ts +20 -0
  174. package/dist/security-pack.d.ts.map +1 -1
  175. package/dist/security-pack.js +33 -14
  176. package/dist/security-pack.js.map +1 -1
  177. package/dist/skill-supply-chain.d.ts +132 -0
  178. package/dist/skill-supply-chain.d.ts.map +1 -0
  179. package/dist/skill-supply-chain.js +2954 -0
  180. package/dist/skill-supply-chain.js.map +1 -0
  181. package/dist/skills-detector.d.ts +23 -0
  182. package/dist/skills-detector.d.ts.map +1 -0
  183. package/dist/skills-detector.js +279 -0
  184. package/dist/skills-detector.js.map +1 -0
  185. package/dist/stale-instructions.d.ts +4 -1
  186. package/dist/stale-instructions.d.ts.map +1 -1
  187. package/dist/stale-instructions.js +53 -55
  188. package/dist/stale-instructions.js.map +1 -1
  189. package/dist/subagents-detector.d.ts +19 -0
  190. package/dist/subagents-detector.d.ts.map +1 -0
  191. package/dist/subagents-detector.js +155 -0
  192. package/dist/subagents-detector.js.map +1 -0
  193. package/dist/suppression.d.ts +2 -0
  194. package/dist/suppression.d.ts.map +1 -1
  195. package/dist/suppression.js +16 -47
  196. package/dist/suppression.js.map +1 -1
  197. package/dist/types.d.ts +62 -4
  198. package/dist/types.d.ts.map +1 -1
  199. package/dist/types.js +47 -1
  200. package/dist/types.js.map +1 -1
  201. package/dist/vague-guidance.d.ts +15 -2
  202. package/dist/vague-guidance.d.ts.map +1 -1
  203. package/dist/vague-guidance.js +44 -41
  204. package/dist/vague-guidance.js.map +1 -1
  205. package/dist/windsurf-detector.d.ts +22 -0
  206. package/dist/windsurf-detector.d.ts.map +1 -0
  207. package/dist/windsurf-detector.js +96 -0
  208. package/dist/windsurf-detector.js.map +1 -0
  209. package/dist/within-section-dedup.d.ts +16 -0
  210. package/dist/within-section-dedup.d.ts.map +1 -0
  211. package/dist/within-section-dedup.js +148 -0
  212. package/dist/within-section-dedup.js.map +1 -0
  213. package/dist/workspace-manifests.d.ts +80 -0
  214. package/dist/workspace-manifests.d.ts.map +1 -0
  215. package/dist/workspace-manifests.js +333 -0
  216. package/dist/workspace-manifests.js.map +1 -0
  217. package/package.json +11 -8
  218. package/dist/cheap-model-routing.d.ts +0 -4
  219. package/dist/cheap-model-routing.d.ts.map +0 -1
  220. package/dist/cheap-model-routing.js +0 -43
  221. package/dist/cheap-model-routing.js.map +0 -1
  222. package/dist/cli-output-filter.d.ts +0 -16
  223. package/dist/cli-output-filter.d.ts.map +0 -1
  224. package/dist/cli-output-filter.js +0 -88
  225. package/dist/cli-output-filter.js.map +0 -1
  226. package/dist/context-cost.d.ts +0 -4
  227. package/dist/context-cost.d.ts.map +0 -1
  228. package/dist/context-cost.js +0 -70
  229. package/dist/context-cost.js.map +0 -1
  230. package/dist/context-recommender.d.ts +0 -3
  231. package/dist/context-recommender.d.ts.map +0 -1
  232. package/dist/context-recommender.js +0 -329
  233. package/dist/context-recommender.js.map +0 -1
  234. package/dist/llm.d.ts +0 -6
  235. package/dist/llm.d.ts.map +0 -1
  236. package/dist/llm.js +0 -67
  237. package/dist/llm.js.map +0 -1
  238. package/dist/mcp-detector.d.ts +0 -4
  239. package/dist/mcp-detector.d.ts.map +0 -1
  240. package/dist/mcp-detector.js +0 -131
  241. package/dist/mcp-detector.js.map +0 -1
  242. package/dist/native-tool-preference.d.ts +0 -20
  243. package/dist/native-tool-preference.d.ts.map +0 -1
  244. package/dist/native-tool-preference.js +0 -94
  245. package/dist/native-tool-preference.js.map +0 -1
  246. package/dist/output-verbosity.d.ts +0 -3
  247. package/dist/output-verbosity.d.ts.map +0 -1
  248. package/dist/output-verbosity.js +0 -83
  249. package/dist/output-verbosity.js.map +0 -1
  250. package/dist/product-boundary.d.ts +0 -11
  251. package/dist/product-boundary.d.ts.map +0 -1
  252. package/dist/product-boundary.js +0 -301
  253. package/dist/product-boundary.js.map +0 -1
@@ -7,15 +7,24 @@
7
7
  * - Reference-style links: [text][ref] with a `[ref]: path` definition
8
8
  * - @-file refs: @AGENTS.md | @docs/guide.md
9
9
  *
10
+ * - Directory / extension-less paths (pcic-2b6.8): links like
11
+ * [api](./src/api/) and code spans like `apps/admin/` or `src/payments`
12
+ *
10
13
  * External URLs (http/https), anchor-only links (#section), and mailto:
11
- * are always skipped. Only paths with a recognisable file extension are
12
- * checked to avoid false-positiving on badge shields, npm package names, etc.
14
+ * are always skipped. File paths need a recognisable extension; a directory or
15
+ * extension-less path in a code span is only checked when its FIRST segment
16
+ * exists in the repository (so `owner/repo`, `origin/main`, `@scope/pkg` and
17
+ * paths describing some other project stay silent).
13
18
  *
14
19
  * Findings are heuristic — wording is intentionally cautious.
15
20
  */
16
21
  import * as fs from 'node:fs';
17
22
  import * as path from 'node:path';
18
23
  import * as crypto from 'node:crypto';
24
+ import fg from 'fast-glob';
25
+ import { fencedBlocks, scanFencedLines } from './markdown-fences.js';
26
+ import { createGitIgnoreChecker } from './gitignore.js';
27
+ import { isWithinRoot } from './path-containment.js';
19
28
  // ── Patterns ──────────────────────────────────────────────────────────────────
20
29
  /** Matches markdown inline links: [label](target) — captures target (may include a title). */
21
30
  const MD_LINK_RE = /\[(?:[^\]]*)\]\(([^)]+)\)/g;
@@ -41,6 +50,37 @@ const AT_FILE_RE = /(?<!\w)@((?:\.{1,2}\/)?[\w./\\-]+\.(?:md|ts|js|mjs|cjs|tsx|j
41
50
  * after the extension but excluded from the captured path.
42
51
  */
43
52
  const BACKTICK_PATH_RE = /`([^\s`\n]+\.(?:md|sh|py|ts|js|tsx|jsx|mjs|cjs|json|yml|yaml|toml|cs|go|rs|txt|lock|env|png|jpg|jpeg|gif|svg|webp|pdf))(?::\d+(?::\d+)?)?`/g;
53
+ /**
54
+ * pcic-2b6.8: code spans holding a directory or extension-less repo path —
55
+ * `src/payments/`, `apps/admin`, `./src/api/`. Path characters only (Next.js
56
+ * route segments like `(auth)` and `[id]` included); anything with a space,
57
+ * colon, `$`, `*`, `~` or `<…>` is a command, URL, variable, glob or
58
+ * placeholder and never matches. At least two segments are required: a lone
59
+ * `docs/` or `./scripts` names no location specific enough to call stale.
60
+ */
61
+ const BACKTICK_DIR_RE = /`((?:\.\/)?[\w@.()[\]-]+(?:\/[\w@.()[\]-]+)+\/?)`/g;
62
+ /**
63
+ * A line talking about git branches, HTTP routes or URLs: its slash-shaped
64
+ * code spans (`docs/update-readme`, `api/v1/users`) are names, not paths.
65
+ */
66
+ const NON_PATH_CONTEXT_RE = /\b(?:branch(?:es)?|checkout|rebase|merge|cherry-pick|route[sd]?|routing|endpoints?|urls?|uris?|http\s+(?:get|post|put|patch|delete))\b/i;
67
+ /**
68
+ * Conventional git branch prefixes. A span starting with one of these that has
69
+ * no trailing slash (`docs/update-readme`, `test/flaky-fix`) is more likely a
70
+ * branch than a directory, so only the explicit directory form (`docs/guides/`)
71
+ * is checked.
72
+ */
73
+ const BRANCH_PREFIXES = new Set([
74
+ 'feat', 'feature', 'features', 'fix', 'bugfix', 'hotfix', 'chore', 'docs', 'doc', 'refactor',
75
+ 'test', 'tests', 'ci', 'perf', 'build', 'release', 'releases', 'style', 'wip', 'dependabot',
76
+ ]);
77
+ /**
78
+ * Generated output and dependency directories: never committed, so a path
79
+ * under one says nothing about the repository's current layout.
80
+ */
81
+ const OUTPUT_DIRS = new Set([
82
+ 'dist', 'build', 'out', '.next', 'coverage', 'target', 'bin', 'obj', 'node_modules', '.turbo',
83
+ ]);
44
84
  /**
45
85
  * BUG-004: Bullet-list bare file paths in Repository Layout / Project Structure sections.
46
86
  * Catches lines like:
@@ -231,10 +271,40 @@ function isGitignored(ref) {
231
271
  const normalised = ref.replace(/\\/g, '/');
232
272
  return GITIGNORED_CREDENTIAL_PATTERNS.some((re) => re.test(normalised));
233
273
  }
274
+ /**
275
+ * pcic-2b6.12: Paths rooted in the reader's home or profile directory —
276
+ * `~/.config/x/settings.json`, `$HOME/.claude/settings.json`,
277
+ * `%USERPROFILE%\.claude.json`. They live outside the repository by definition,
278
+ * so their absence from the checkout says nothing about the reference.
279
+ */
280
+ const HOME_ROOTED_RE = /^(?:~(?:[/\\]|$)|\$\{?(?:HOME|USERPROFILE|XDG_CONFIG_HOME|XDG_DATA_HOME)\}?(?:[/\\]|$)|\$env:(?:HOME|USERPROFILE|APPDATA|LOCALAPPDATA)(?:[/\\]|$)|%(?:USERPROFILE|HOMEPATH|APPDATA|LOCALAPPDATA)%(?:[/\\]|$))/i;
281
+ export function isHomeRooted(ref) {
282
+ return HOME_ROOTED_RE.test(ref.trim());
283
+ }
234
284
  function hasCheckableExtension(ref) {
235
285
  const ext = path.extname(ref.split('#')[0] ?? '').toLowerCase();
236
286
  return CHECKABLE_EXTENSIONS.has(ext);
237
287
  }
288
+ /**
289
+ * pcic-2b6.8: a markdown link target naming a directory or an extension-less
290
+ * file (`./src/api/`, `docs/`, `LICENSE`). Site-absolute (`/pricing`) and
291
+ * scheme-qualified targets, and anything with characters a repo path would not
292
+ * carry, are left alone.
293
+ */
294
+ function isExtensionlessPathRef(ref) {
295
+ if (!ref || /^[a-z][a-z0-9+.-]*:/i.test(ref) || ref.startsWith('/'))
296
+ return false;
297
+ if (/[\s*?$%<>{}|"'`~\\]/.test(ref))
298
+ return false;
299
+ if (!/[A-Za-z]/.test(ref))
300
+ return false; // `./`, `../`, `..`
301
+ // Path-shaped only: a separator or a leading dot (`./x`, `.github`). A bare
302
+ // word (`[WARNING]: Never …`, `[x](payload)`) is too ambiguous to judge.
303
+ if (!ref.includes('/') && !ref.startsWith('.'))
304
+ return false;
305
+ const last = ref.replace(/\/+$/, '').split('/').pop() ?? '';
306
+ return ref.endsWith('/') || path.extname(last) === '';
307
+ }
238
308
  /** Strip query strings and anchor fragments from a path reference. */
239
309
  function stripFragment(ref) {
240
310
  return ref.split('#')[0].split('?')[0].trim();
@@ -257,14 +327,16 @@ const SOURCE_CODE_EXTENSIONS = new Set([
257
327
  '.py', '.rs', '.sh', '.java', '.kt', '.swift',
258
328
  ]);
259
329
  /**
260
- * BUG-002: Compiled/native source extensions that, when encountered as backtick
261
- * inline spans (NOT markdown links or @-refs) in any instruction file type,
262
- * should be skipped. These are almost always architecture documentation, not real
263
- * file references — e.g. `internal/client/errors.go`, `src/components/Button.tsx`,
264
- * `pkg/registry/`, `PlayerController.cs`.
330
+ * BUG-002 / pcic-2b6.8: Compiled/native source extensions that, as backtick
331
+ * inline spans (NOT markdown links or @-refs), are often architecture
332
+ * documentation — `internal/client/errors.go`, `PlayerController.cs` — or
333
+ * examples from some other project. They are no longer skipped outright: a
334
+ * missing one is reported (at reduced confidence) only when its first path
335
+ * segment exists in this repository, i.e. it names a real part of THIS tree.
265
336
  *
266
337
  * NOTE: .sh, .py, .js are intentionally excluded — shell/Python/JS scripts are often
267
- * legitimately referenced by name in instruction files (e.g. `scripts/setup-dev.sh`).
338
+ * legitimately referenced by name in instruction files (e.g. `scripts/setup-dev.sh`)
339
+ * and are checked like any other file.
268
340
  */
269
341
  const BACKTICK_SKIP_SOURCE_EXTENSIONS = new Set([
270
342
  '.go', '.rs', '.cs', '.java', '.kt', '.swift',
@@ -277,19 +349,15 @@ const BACKTICK_SKIP_SOURCE_EXTENSIONS = new Set([
277
349
  */
278
350
  const STALE_SOURCE_REF_RE = /(?:^|[/\\])(?:legacy|old|deprecated|archive|archived)(?:[/\\]|[-_.])/i;
279
351
  /**
280
- * File types for which backtick-enclosed compiled/native source paths should be
281
- * skipped. All instruction file types are included because architecture
282
- * descriptions appear in all of them.
352
+ * File types whose backtick-enclosed compiled/native source paths and
353
+ * directory paths get the first-segment rule above. All instruction file types
354
+ * are included because architecture descriptions appear in all of them.
283
355
  *
284
356
  * BUG-002: Expanded from readme-only to all instruction file types.
285
- *
286
- * NOTE: this covers every FileType value, which also means backtick-quoted bare
287
- * *directory* paths (no extension, e.g. `pkg/registry/`) are always treated as
288
- * architecture descriptions rather than checked — that is intentional per
289
- * BUG-002, not an oversight.
290
357
  */
291
358
  const SKIP_SOURCE_BACKTICK_FILE_TYPES = new Set([
292
- 'readme', 'claude', 'agents', 'cursor', 'copilot', 'docs', 'prompt', 'unknown',
359
+ 'readme', 'claude', 'agents', 'cursor', 'windsurf', 'copilot', 'gemini', 'cline', 'persona',
360
+ 'docs', 'prompt', 'unknown',
293
361
  ]);
294
362
  /** Minimum confidence to emit a dead-reference issue. Below this the signal is too noisy. */
295
363
  const MIN_CONFIDENCE = 0.45;
@@ -395,14 +463,15 @@ function collectLayoutEntryPaths(lines, lineOffsets, startOffset) {
395
463
  }
396
464
  function extractCodeBlockLayoutPaths(content, lineOffsets) {
397
465
  const results = [];
398
- const fenceRe = /^```[^\n]*\n([\s\S]*?)^```/gm;
399
- let blockMatch;
400
- while ((blockMatch = fenceRe.exec(content)) !== null) {
401
- const blockText = blockMatch[1] ?? '';
402
- const firstLineEnd = content.indexOf('\n', blockMatch.index);
403
- let lineOffset = firstLineEnd === -1 ? blockMatch.index : firstLineEnd + 1;
404
- const lines = blockText.split('\n');
405
- results.push(...collectLayoutEntryPaths(lines, lineOffsets, lineOffset));
466
+ // Closed blocks only — the same requirement the previous ``` -only regex
467
+ // enforced by needing a closing fence to match at all. Going through the
468
+ // shared scanner is what gives this check ~~~ fences and indented fences,
469
+ // which the regex silently skipped.
470
+ for (const block of fencedBlocks(content)) {
471
+ if (!block.closed)
472
+ continue;
473
+ const startOffset = lineOffsets[block.contentStartLine - 1] ?? content.length;
474
+ results.push(...collectLayoutEntryPaths(block.lines, lineOffsets, startOffset));
406
475
  }
407
476
  return results;
408
477
  }
@@ -412,6 +481,26 @@ function extractLayoutTreePaths(content, lineOffsets) {
412
481
  function collectRefs(content, opts = {}) {
413
482
  const found = [];
414
483
  const lineOffsets = buildLineOffsets(content);
484
+ const fenceLines = scanFencedLines(content);
485
+ // `handlers[type](payload)` in a code fence or `a[i](b)` in a code span has
486
+ // the shape of a link without being one. Checkable-extension targets keep
487
+ // their historical behavior; the extension-less check only reads real prose.
488
+ const inCode = (index) => {
489
+ const line = lineForOffset(lineOffsets, index);
490
+ if (fenceLines[line - 1]?.inFence)
491
+ return true;
492
+ const before = content.slice(lineOffsets[line - 1] ?? 0, index);
493
+ return (before.match(/`/g)?.length ?? 0) % 2 === 1;
494
+ };
495
+ const pushLink = (ref, evidence, index) => {
496
+ if (!ref || isExternalRef(ref))
497
+ return;
498
+ const line = lineForOffset(lineOffsets, index);
499
+ if (hasCheckableExtension(ref))
500
+ found.push({ ref, evidence, line, kind: 'file' });
501
+ else if (isExtensionlessPathRef(ref) && !inCode(index))
502
+ found.push({ ref, evidence, line, kind: 'linkPath' });
503
+ };
415
504
  // Markdown links: [label](target) or [label](target "Title")
416
505
  let m;
417
506
  const linkRe = new RegExp(MD_LINK_RE.source, MD_LINK_RE.flags);
@@ -419,10 +508,7 @@ function collectRefs(content, opts = {}) {
419
508
  if (m.index >= 2 && content[m.index - 2] === '[' && content[m.index - 1] === '!')
420
509
  continue;
421
510
  const raw = m[1] ?? '';
422
- const ref = stripFragment(stripLinkTitle(raw));
423
- if (ref && !isExternalRef(ref) && hasCheckableExtension(ref)) {
424
- found.push({ ref, evidence: `[...](${raw})`, line: lineForOffset(lineOffsets, m.index) });
425
- }
511
+ pushLink(stripFragment(stripLinkTitle(raw)), `[...](${raw})`, m.index);
426
512
  }
427
513
  const nestedLinkRe = new RegExp(NESTED_MD_LINK_RE.source, NESTED_MD_LINK_RE.flags);
428
514
  while ((m = nestedLinkRe.exec(content)) !== null) {
@@ -430,47 +516,61 @@ function collectRefs(content, opts = {}) {
430
516
  if (!labelPart.includes(']('))
431
517
  continue;
432
518
  const raw = m[1] ?? '';
433
- const ref = stripFragment(stripLinkTitle(raw));
434
- if (ref && !isExternalRef(ref) && hasCheckableExtension(ref)) {
435
- found.push({ ref, evidence: `[...](${raw})`, line: lineForOffset(lineOffsets, m.index) });
436
- }
519
+ pushLink(stripFragment(stripLinkTitle(raw)), `[...](${raw})`, m.index);
437
520
  }
438
521
  // Reference-style link definitions: [ref]: docs/missing.md "Title"
439
522
  const linkDefRe = new RegExp(LINK_REF_DEF_RE.source, LINK_REF_DEF_RE.flags);
440
523
  while ((m = linkDefRe.exec(content)) !== null) {
441
524
  const raw = m[1] ?? '';
442
- const ref = stripFragment(raw);
443
- if (ref && !isExternalRef(ref) && hasCheckableExtension(ref)) {
444
- found.push({ ref, evidence: m[0].trim(), line: lineForOffset(lineOffsets, m.index) });
445
- }
525
+ // `[^1]: Footnote text` is a footnote, not a link definition.
526
+ if (/^[ \t]*\[\^/.test(m[0]))
527
+ continue;
528
+ pushLink(stripFragment(raw), m[0].trim(), m.index);
446
529
  }
447
530
  // @-file refs
448
531
  const atRe = new RegExp(AT_FILE_RE.source, AT_FILE_RE.flags);
449
532
  while ((m = atRe.exec(content)) !== null) {
450
533
  const ref = m[1] ?? '';
451
534
  if (ref && !isExternalRef(ref)) {
452
- found.push({ ref, evidence: `@${ref}`, line: lineForOffset(lineOffsets, m.index) });
535
+ found.push({ ref, evidence: `@${ref}`, line: lineForOffset(lineOffsets, m.index), kind: 'file' });
453
536
  }
454
537
  }
455
538
  // Backtick file paths: `scripts/setup-dev.sh`, `Assets/Scripts/Foo.cs`
456
539
  // No spaces = file path not a command; must have a recognisable extension.
457
540
  // Skip glob patterns (contain * or ?) — those are pattern documentation, not file refs.
458
- // BUG-002: In all instruction file types (CLAUDE.md, AGENTS.md, .cursorrules, copilot, etc.)
459
- // skip backtick-quoted compiled/native source files — they are almost always architecture
460
- // descriptions (e.g. `internal/client/errors.go`), not references to committed files.
461
- // Shell (.sh), Python (.py), and JS files are kept because they CAN be real script refs.
541
+ // BUG-002 / pcic-2b6.8: In all instruction file types (CLAUDE.md, AGENTS.md, .cursorrules,
542
+ // copilot, etc.) backtick-quoted compiled/native source files are often architecture
543
+ // descriptions or examples from another project, so they are checked under the
544
+ // first-segment rule (`rootedSource`). Shell (.sh), Python (.py), and JS files are
545
+ // checked like any other file because they are usually real script refs.
462
546
  const btRe = new RegExp(BACKTICK_PATH_RE.source, BACKTICK_PATH_RE.flags);
463
547
  while ((m = btRe.exec(content)) !== null) {
464
548
  const ref = m[1] ?? '';
465
549
  if (ref && !isExternalRef(ref) && !ref.includes('*') && !ref.includes('?')) {
466
- if (opts.skipSourceBackticks) {
467
- const ext = path.extname(ref).toLowerCase();
468
- if (BACKTICK_SKIP_SOURCE_EXTENSIONS.has(ext) && !STALE_SOURCE_REF_RE.test(ref))
469
- continue;
470
- }
471
- found.push({ ref, evidence: `\`${ref}\``, line: lineForOffset(lineOffsets, m.index) });
550
+ const ext = path.extname(ref).toLowerCase();
551
+ const rooted = opts.skipSourceBackticks && BACKTICK_SKIP_SOURCE_EXTENSIONS.has(ext) && !STALE_SOURCE_REF_RE.test(ref);
552
+ found.push({
553
+ ref,
554
+ evidence: `\`${ref}\``,
555
+ line: lineForOffset(lineOffsets, m.index),
556
+ kind: rooted ? 'rootedSource' : 'file',
557
+ });
472
558
  }
473
559
  }
560
+ // pcic-2b6.8: backtick directory / extension-less paths: `src/payments/`, `apps/admin`.
561
+ const btDirRe = new RegExp(BACKTICK_DIR_RE.source, BACKTICK_DIR_RE.flags);
562
+ while ((m = btDirRe.exec(content)) !== null) {
563
+ const ref = m[1] ?? '';
564
+ const last = ref.replace(/\/+$/, '').split('/').pop() ?? '';
565
+ if (!ref.endsWith('/') && path.extname(last) !== '')
566
+ continue; // a file: BACKTICK_PATH_RE's job
567
+ // Slash-shaped names that are not paths: git branches, HTTP routes, URLs.
568
+ const lineNo = lineForOffset(lineOffsets, m.index);
569
+ const lineText = content.slice(lineOffsets[lineNo - 1] ?? 0, lineOffsets[lineNo] ?? content.length);
570
+ if (NON_PATH_CONTEXT_RE.test(lineText))
571
+ continue;
572
+ found.push({ ref, evidence: `\`${ref}\``, line: lineForOffset(lineOffsets, m.index), kind: 'rootedPath' });
573
+ }
474
574
  // BUG-004: Bare paths in Repository Layout / Project Structure sections.
475
575
  // These appear as bullet list items or ASCII tree lines without backticks.
476
576
  if (LAYOUT_SECTION_HEADING_RE.test(content)) {
@@ -478,14 +578,16 @@ function collectRefs(content, opts = {}) {
478
578
  while ((m = bulletRe.exec(content)) !== null) {
479
579
  const ref = m[1] ?? '';
480
580
  if (ref && !isExternalRef(ref)) {
481
- found.push({ ref, evidence: m[0].trim(), line: lineForOffset(lineOffsets, m.index) });
581
+ found.push({ ref, evidence: m[0].trim(), line: lineForOffset(lineOffsets, m.index), kind: 'file' });
482
582
  }
483
583
  }
484
- found.push(...extractLayoutTreePaths(content, lineOffsets));
584
+ for (const item of extractLayoutTreePaths(content, lineOffsets)) {
585
+ found.push({ ...item, kind: 'file' });
586
+ }
485
587
  // BUG-002 (eval): Fenced code blocks in layout sections may list documentation
486
588
  // files as indented children under a parent directory line ("docs/\n runbook.md").
487
589
  for (const item of extractCodeBlockLayoutPaths(content, lineOffsets)) {
488
- found.push(item);
590
+ found.push({ ...item, kind: 'file' });
489
591
  }
490
592
  }
491
593
  // BUG-D1: Drop only the reference the line instructs the reader to CREATE
@@ -508,6 +610,144 @@ function collectRefs(content, opts = {}) {
508
610
  return !isTarget;
509
611
  });
510
612
  }
613
+ // ── Resolution ───────────────────────────────────────────────────────────────
614
+ /** Path segments of a reference, without `.` / empty segments. */
615
+ function segmentsOf(ref) {
616
+ return stripFragment(ref).replace(/\\/g, '/').split('/').filter((s) => s !== '' && s !== '.');
617
+ }
618
+ function underOutputDir(ref) {
619
+ return segmentsOf(ref).some((s) => OUTPUT_DIRS.has(s.toLowerCase()));
620
+ }
621
+ /**
622
+ * An extension-less module path names the file that carries the extension:
623
+ * `src/lib/db` is `src/lib/db.ts`. True when the directory holds `<name>.*`.
624
+ */
625
+ function stemSiblingExists(abs) {
626
+ try {
627
+ const base = path.basename(abs);
628
+ return fs.readdirSync(path.dirname(abs)).some((entry) => entry.startsWith(`${base}.`));
629
+ }
630
+ catch {
631
+ return false;
632
+ }
633
+ }
634
+ /** Trees never searched for an abbreviated path (dependencies, VCS, worktrees, engine caches). */
635
+ const SUFFIX_SEARCH_IGNORE = [
636
+ ...[
637
+ ...OUTPUT_DIRS, '.git', 'worktrees', '.worktrees', 'Library', 'Temp', 'Logs', 'vendor',
638
+ '.venv', 'venv', '__pycache__', 'Pods', '.gradle', '.cache', '.idea',
639
+ ].map((d) => `**/${d}/**`),
640
+ ];
641
+ /**
642
+ * True when the path exists somewhere below the repo root as a suffix — an
643
+ * abbreviated reference such as `Scripts/Interfaces/` for Unity's
644
+ * `Assets/Scripts/Interfaces/`, or a package-relative `src/lib/db.ts` in a
645
+ * monorepo's root instructions. Such a path is imprecise, not stale.
646
+ */
647
+ function existsAsSuffix(repoRoot, segments, moduleStyle, cache) {
648
+ const rel = segments.join('/');
649
+ const key = `${moduleStyle ? 'm' : 'x'}:${rel}`;
650
+ const cached = cache.get(key);
651
+ if (cached !== undefined)
652
+ return cached;
653
+ const escaped = fg.escapePath(rel);
654
+ const patterns = [`**/${escaped}`];
655
+ if (moduleStyle)
656
+ patterns.push(`**/${escaped}.*`);
657
+ let found;
658
+ try {
659
+ found = fg.sync(patterns, {
660
+ cwd: repoRoot,
661
+ dot: true,
662
+ onlyFiles: false,
663
+ followSymbolicLinks: false,
664
+ suppressErrors: true,
665
+ ignore: SUFFIX_SEARCH_IGNORE,
666
+ }).length > 0;
667
+ }
668
+ catch {
669
+ found = false;
670
+ }
671
+ cache.set(key, found);
672
+ return found;
673
+ }
674
+ /** Probe name used to ask the gitignore matcher whether a DIRECTORY is ignored. */
675
+ const DIR_PROBE = '__promptci_dir_probe__';
676
+ /**
677
+ * Confidence that `ref` is a dead reference, or `null` when it resolves, is
678
+ * expected to be absent (gitignored, generated output), or is not specific
679
+ * enough to judge.
680
+ */
681
+ function judgeReference(ref, kind, fileDir, repoRoot, isIgnored, suffixCache) {
682
+ // `.git/…` is a directory in one checkout and a file in a worktree.
683
+ if (segmentsOf(ref)[0] === '.git')
684
+ return null;
685
+ // pcic-2b6.8 kinds: generated output / dependency trees are never committed.
686
+ // (File references keep their historical behavior: a committed `bin/setup.sh`
687
+ // or `scripts/build/x.sh` is still checked.)
688
+ if (kind !== 'file' && underOutputDir(ref))
689
+ return null;
690
+ const pathLike = kind === 'rootedPath' || kind === 'linkPath';
691
+ const target = pathLike ? stripFragment(ref) : ref;
692
+ const candidates = [...new Set([path.resolve(fileDir, target), path.resolve(repoRoot, target)])];
693
+ const inRoot = candidates.filter((c) => isWithinRoot(repoRoot, c));
694
+ // The repository's own ignore rules say the path is local state (pcic-2b6.8,
695
+ // same matcher the skills detector uses).
696
+ for (const candidate of inRoot) {
697
+ const rel = path.relative(repoRoot, candidate).replace(/\\/g, '/');
698
+ if (!rel)
699
+ continue;
700
+ if (isIgnored(rel) || (pathLike && isIgnored(`${rel}/${DIR_PROBE}`)))
701
+ return null;
702
+ }
703
+ if (kind === 'file') {
704
+ if (candidates.some(fileExists))
705
+ return null;
706
+ // BUG-C1: Source-code paths whose parent directory exists → lower confidence
707
+ // (likely documentation references, not broken links).
708
+ const ext = path.extname(ref.split('#')[0] ?? '').toLowerCase();
709
+ const isSourceCodeRef = SOURCE_CODE_EXTENSIONS.has(ext);
710
+ const anyParentExists = candidates.some(parentDirExists);
711
+ return isSourceCodeRef && anyParentExists ? 0.5 : 0.85;
712
+ }
713
+ // pcic-2b6.8 kinds: only paths that stay inside the repository are judged.
714
+ if (inRoot.length === 0)
715
+ return null;
716
+ const moduleStyle = pathLike && !target.endsWith('/');
717
+ if (inRoot.some((c) => fileExists(c) || (moduleStyle && stemSiblingExists(c))))
718
+ return null;
719
+ if (kind === 'linkPath')
720
+ return 0.8;
721
+ // Code-span paths: report only when the path's FIRST segment exists here, so
722
+ // the reference demonstrably names part of THIS repository — `owner/repo`,
723
+ // `origin/main`, `@scope/pkg` and another project's `internal/x/y.go` stay silent.
724
+ const segments = segmentsOf(ref);
725
+ if (segments.length < 2 || segments[0] === '..')
726
+ return null;
727
+ // The first segment must be a DIRECTORY here (`package.json/scripts` is not a path).
728
+ const anchorBases = [fileDir, repoRoot].filter((base) => dirExists(path.join(base, segments[0])));
729
+ if (anchorBases.length === 0)
730
+ return null;
731
+ if (kind === 'rootedPath') {
732
+ // `docs/update-readme`, `test/flaky-fix`: a branch name unless written as a directory.
733
+ if (BRANCH_PREFIXES.has(segments[0].toLowerCase()) && !target.endsWith('/'))
734
+ return null;
735
+ // `client/server`, `public/private`: alternatives when both halves exist side by side.
736
+ if (segments.length === 2 && anchorBases.some((base) => fileExists(path.join(base, segments[1]))))
737
+ return null;
738
+ }
739
+ if (existsAsSuffix(repoRoot, segments, moduleStyle, suffixCache))
740
+ return null;
741
+ return 0.6;
742
+ }
743
+ function dirExists(p) {
744
+ try {
745
+ return fs.statSync(p).isDirectory();
746
+ }
747
+ catch {
748
+ return false;
749
+ }
750
+ }
511
751
  // ── Detector ─────────────────────────────────────────────────────────────────
512
752
  /**
513
753
  * Detect broken file references across all instruction files.
@@ -527,37 +767,40 @@ function collectRefs(content, opts = {}) {
527
767
  export function detectDeadReferences(files, repoRoot) {
528
768
  // normRef → { displayRef, filePaths, fileLines, evidenceLines, minConfidence }
529
769
  const byRef = new Map();
770
+ let isIgnored;
771
+ const suffixCache = new Map();
530
772
  for (const file of files) {
531
773
  const fileDir = path.dirname(file.path);
532
774
  const refs = collectRefs(file.content, {
533
775
  skipSourceBackticks: SKIP_SOURCE_BACKTICK_FILE_TYPES.has(file.fileType),
534
776
  });
535
- for (const { ref, evidence, line } of refs) {
777
+ for (const { ref, evidence, line, kind } of refs) {
536
778
  // BUG-009: Skip obvious placeholder/example filenames (foo.ts, bar.go, etc.)
537
779
  if (isPlaceholderRef(ref))
538
780
  continue;
539
781
  // BUG-008: Skip intentionally gitignored credential/config files.
540
782
  if (isGitignored(ref))
541
783
  continue;
784
+ // pcic-2b6.12: Skip home-directory paths (`~/…`, `$HOME/…`, `%USERPROFILE%\…`).
785
+ if (isHomeRooted(ref))
786
+ continue;
542
787
  // Resolve relative to the instruction file first, then repo root.
543
- const candidates = [
544
- path.resolve(fileDir, ref),
545
- path.resolve(repoRoot, ref),
546
- ];
547
- if (candidates.some(fileExists))
788
+ isIgnored ??= createGitIgnoreChecker(repoRoot);
789
+ const confidence = judgeReference(ref, kind, fileDir, repoRoot, isIgnored, suffixCache);
790
+ if (confidence === null)
548
791
  continue;
549
- // BUG-C1: Source-code paths whose parent directory exists → lower confidence
550
- // (likely documentation references, not broken links).
551
- const ext = path.extname(ref.split('#')[0] ?? '').toLowerCase();
552
- const isSourceCodeRef = SOURCE_CODE_EXTENSIONS.has(ext);
553
- const anyParentExists = candidates.some(parentDirExists);
554
- const confidence = isSourceCodeRef && anyParentExists ? 0.5 : 0.85;
555
- // Normalise for deduplication (case-insensitive, forward slashes)
556
- const normRef = ref.toLowerCase().replace(/\\/g, '/');
792
+ // Normalise for deduplication (case-insensitive, forward slashes). Directory
793
+ // forms also drop `./` and the trailing slash, so `src/api/`, `./src/api`
794
+ // and a link to `./src/api/` are one finding.
795
+ const normalized = ref.toLowerCase().replace(/\\/g, '/');
796
+ const normRef = kind === 'rootedPath' || kind === 'linkPath'
797
+ ? normalized.replace(/^\.\//, '').replace(/\/+$/, '')
798
+ : normalized;
557
799
  const evidenceLine = `Reference: ${evidence}`;
558
800
  if (!byRef.has(normRef)) {
559
801
  byRef.set(normRef, {
560
802
  displayRef: ref,
803
+ kind,
561
804
  filePaths: new Set(),
562
805
  fileLines: new Map(),
563
806
  evidenceLines: [],
@@ -578,19 +821,23 @@ export function detectDeadReferences(files, repoRoot) {
578
821
  }
579
822
  const issues = [];
580
823
  const MIN_CONFIDENCE_THRESHOLD = MIN_CONFIDENCE;
581
- for (const [normRef, { displayRef, filePaths, fileLines, evidenceLines, minConfidence }] of byRef) {
824
+ for (const [normRef, { displayRef, kind, filePaths, fileLines, evidenceLines, minConfidence }] of byRef) {
582
825
  // BUG-002: Skip findings below the minimum confidence threshold.
583
826
  // Low-confidence source-code path references are almost certainly architecture docs.
584
827
  if (minConfidence < MIN_CONFIDENCE_THRESHOLD)
585
828
  continue;
586
829
  const allFilePaths = [...filePaths];
830
+ const pathLike = kind === 'rootedPath' || kind === 'linkPath';
831
+ const isDir = pathLike && stripFragment(displayRef).endsWith('/');
832
+ const noun = isDir ? 'directory' : pathLike ? 'path' : 'file';
833
+ const name = path.basename(stripFragment(displayRef).replace(/\/+$/, ''));
587
834
  issues.push({
588
835
  id: issueId(normRef),
589
836
  severity: 'warning',
590
837
  category: 'structure',
591
- title: `Broken file reference: ${path.basename(stripFragment(displayRef))}`,
838
+ title: `Broken ${noun} reference: ${name}${isDir ? '/' : ''}`,
592
839
  summary: `This instruction file references "${displayRef}" which does not appear to exist. ` +
593
- `The file may have been renamed, moved, or deleted.`,
840
+ `The ${noun} may have been renamed, moved, or deleted.`,
594
841
  filePaths: allFilePaths,
595
842
  locations: allFilePaths.map((fp) => {
596
843
  const startLine = fileLines.get(fp);
@@ -1 +1 @@
1
- {"version":3,"file":"dead-references.js","sourceRoot":"","sources":["../src/dead-references.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dead-references.js","sourceRoot":"","sources":["../src/dead-references.ts"],"names":[],"mappings":"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"}