@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
@@ -1,6 +1,10 @@
1
1
  import * as crypto from 'node:crypto';
2
2
  import * as path from 'node:path';
3
3
  import * as fs from 'node:fs';
4
+ import { matchEvidence } from './evidence.js';
5
+ import { PROMPTCI_GITIGNORE_BLOCK, PROMPTCI_GITIGNORE_LINES } from './promptci-gitignore.js';
6
+ import { fileIdPath } from './finding-id.js';
7
+ import { realPathWithinRoot } from './path-containment.js';
4
8
  const SECURITY_CHECKS = [
5
9
  {
6
10
  id: 'no-secret-safeguard',
@@ -119,7 +123,7 @@ function matchesAny(text, patterns) {
119
123
  * block the match, but a differently-named file/dir never accidentally
120
124
  * satisfies it).
121
125
  */
122
- function gitignoreLineMatchesTarget(line, target) {
126
+ export function gitignoreLineMatchesTarget(line, target) {
123
127
  if (line.startsWith('!'))
124
128
  return false;
125
129
  const clean = line.replace(/^\/+|\/+$/g, '');
@@ -243,7 +247,7 @@ export function detectSecurityPack(context) {
243
247
  ];
244
248
  if (!matchesAny(file.content, safetyPatterns)) {
245
249
  issues.push({
246
- id: destructiveCommandIssueId(file.path, cmd.name),
250
+ id: destructiveCommandIssueId(fileIdPath(file), cmd.name),
247
251
  severity: 'warning',
248
252
  category: 'security',
249
253
  title: `Destructive command "${cmd.name}" without safety language`,
@@ -264,7 +268,7 @@ export function detectSecurityPack(context) {
264
268
  const gitignorePath = path.join(/*turbopackIgnore: true*/ repoRoot, '.gitignore');
265
269
  let gitignoreContent = '';
266
270
  try {
267
- if (fs.existsSync(gitignorePath)) {
271
+ if (fs.existsSync(gitignorePath) && realPathWithinRoot(repoRoot, gitignorePath)) {
268
272
  gitignoreContent = fs.readFileSync(gitignorePath, 'utf8');
269
273
  }
270
274
  }
@@ -287,8 +291,18 @@ export function detectSecurityPack(context) {
287
291
  filePaths: ['.gitignore'],
288
292
  locations: [],
289
293
  evidence: ['.promptci/ entry not found in .gitignore'],
290
- recommendation: 'Add `.promptci/` to your `.gitignore` file to prevent committing generated reports.',
291
- fixRecipe: 'echo ".promptci/" >> .gitignore',
294
+ // BUG-7: recommend the carve-out, not a bare `.promptci/`. Ignoring the
295
+ // whole directory also ignores baseline.json, and `--baseline` /
296
+ // `--fail-on-new` need that file committed and readable in CI.
297
+ recommendation: 'Add the following to `.gitignore` so generated reports stay out of git while the shared ' +
298
+ 'baseline and config remain committed:\n' +
299
+ PROMPTCI_GITIGNORE_LINES.map((l) => ` ${l}`).join('\n') +
300
+ '\n\nUse `.promptci/*` rather than `.promptci/` — git does not descend into an ignored ' +
301
+ 'directory, so the `!` negations only work against the directory\'s contents.',
302
+ fixRecipe: PROMPTCI_GITIGNORE_BLOCK,
303
+ // `applyFixRecipe` appends the baseline-preserving stanza deterministically
304
+ // — a mechanical, reversible edit, so `promptci fix` may auto-apply it.
305
+ autoApplySafe: true,
292
306
  confidence: 0.9,
293
307
  });
294
308
  }
@@ -324,6 +338,9 @@ export function detectSecurityPack(context) {
324
338
  evidence: unignoredDirs.map((d) => `Directory "${d}" exists but is not ignored in .gitignore.`),
325
339
  recommendation: `Add generated directories to .gitignore. For example: "${unignoredDirs.map((d) => `${d}/`).join(', ')}"`,
326
340
  fixRecipe: unignoredDirs.map((d) => `echo "${d}/" >> .gitignore`).join('\n'),
341
+ // `applyFixRecipe` appends each missing directory to .gitignore — a
342
+ // mechanical, reversible edit, so `promptci fix` may auto-apply it.
343
+ autoApplySafe: true,
327
344
  confidence: 0.8,
328
345
  });
329
346
  }
@@ -331,7 +348,7 @@ export function detectSecurityPack(context) {
331
348
  let hasBroadInclude = false;
332
349
  try {
333
350
  const configPath = path.join(/*turbopackIgnore: true*/ repoRoot, '.promptci', 'config.json');
334
- if (fs.existsSync(configPath)) {
351
+ if (fs.existsSync(configPath) && realPathWithinRoot(repoRoot, configPath)) {
335
352
  const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
336
353
  if (Array.isArray(config.include)) {
337
354
  const broadPatterns = ['**/*', '**/*.md', '*', '*.*', '**'];
@@ -368,20 +385,22 @@ export function detectSecurityPack(context) {
368
385
  }
369
386
  // 9. Inspect generated reports before source docs (Cost 9)
370
387
  for (const file of files) {
388
+ // BUG-20: each pattern carries a human label so evidence can quote the
389
+ // matched instruction text instead of the regex source.
371
390
  const inspectBeforePatterns = [
372
- /read\s+.*\.promptci\s+before/i,
373
- /inspect\s+.*\.promptci\s+before/i,
374
- /check\s+.*\.promptci\s+before/i,
375
- /read\s+.*report.*\s+before\s+.*(source|docs|code)/i,
376
- /inspect\s+.*report.*\s+before\s+.*(source|docs|code)/i,
391
+ { re: /read\s+.*\.promptci\s+before/i, label: 'Instruction to read .promptci reports first' },
392
+ { re: /inspect\s+.*\.promptci\s+before/i, label: 'Instruction to inspect .promptci reports first' },
393
+ { re: /check\s+.*\.promptci\s+before/i, label: 'Instruction to check .promptci reports first' },
394
+ { re: /read\s+.*report.*\s+before\s+.*(source|docs|code)/i, label: 'Instruction to read generated reports before source' },
395
+ { re: /inspect\s+.*report.*\s+before\s+.*(source|docs|code)/i, label: 'Instruction to inspect generated reports before source' },
377
396
  ];
378
397
  for (const pat of inspectBeforePatterns) {
379
- if (pat.test(file.content)) {
398
+ if (pat.re.test(file.content)) {
380
399
  issues.push({
381
400
  // SP1 / B3: was a constant id inside this per-file loop — the
382
401
  // `break` below only exits the pattern loop, not the file loop, so
383
402
  // two matching files produced two issues sharing ONE id.
384
- id: inspectReportsFirstIssueId(file.path),
403
+ id: inspectReportsFirstIssueId(fileIdPath(file)),
385
404
  severity: 'info',
386
405
  category: 'context_bloat',
387
406
  title: 'Instruction prioritizing generated reports over source docs',
@@ -389,7 +408,7 @@ export function detectSecurityPack(context) {
389
408
  `generated reports before source files, which can cause circular or outdated guidance ingestion.`,
390
409
  filePaths: [file.path],
391
410
  locations: [],
392
- evidence: [`Matched pattern: ${pat.toString()}`],
411
+ evidence: [matchEvidence(file.content, pat.re, pat.label)],
393
412
  recommendation: 'Recommend linking to latest reports or directing the agent to read source documents first instead of generated reports.',
394
413
  fixRecipe: 'Update the instruction to prioritize reading source files and configuration rather than relying on generated reports.',
395
414
  confidence: 0.7,
@@ -1 +1 @@
1
- {"version":3,"file":"security-pack.js","sourceRoot":"","sources":["../src/security-pack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security-pack.js","sourceRoot":"","sources":["../src/security-pack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Skill supply-chain scan
3
+ *
4
+ * An Agent Skill is instructions (SKILL.md plus reference docs) and bundled
5
+ * scripts that an agent loads on demand and runs with the user's permissions.
6
+ * Installing a third-party skill is installing code. The structural skills
7
+ * detector (skills-detector.ts) checks that a skill *loads*; this detector
8
+ * reads the same skill — and every file bundled in its directory — as plain
9
+ * text and flags content characteristic of supply-chain abuse.
10
+ *
11
+ * Static only. Nothing here executes, imports, fetches or resolves anything:
12
+ * skill content is matched against fixed patterns, so the same files always
13
+ * produce the same findings (no network, no clock, no LLM).
14
+ *
15
+ * Rules (tag `skill-supply-chain` + the rule id below):
16
+ *
17
+ * remote-exec fetched content piped into a shell (`curl … |
18
+ * bash`, by path, via env/sudo/busybox/xargs — an
19
+ * `env A=…` assignment of any length — in a
20
+ * subshell, through any number of pipe stages),
21
+ * into `tee >(bash)`, into an interpreter that runs
22
+ * its own stdin (`node -e "eval(readFileSync(0))"`,
23
+ * `python -c 'exec(sys.stdin.read())'`, `ruby -e`,
24
+ * `perl -e`, `node /dev/stdin`), or into a `while
25
+ * read l; do eval "$l"; done` loop; process/here-
26
+ * string substitution, `iex (iwr …)`, or a
27
+ * downloaded file executed later in the same
28
+ * command without first being verified high
29
+ * encoded-exec decoded or transformed content executed (`base64
30
+ * -d | sh`, `xxd -r -p | sh`, `rev | sh`, a rot13
31
+ * `tr`, `base32 -d`, a run of `\x63\x75…` escapes,
32
+ * decode-to-file then run, `eval "$(… | base64
33
+ * -d)"`, `exec(b64decode(…))`, `powershell -enc`) high
34
+ * remote-eval eval of fetched code (also in SKILL.md code,
35
+ * including a fetch function imported under another
36
+ * name: `urlopen as u`, `import requests as r`), or
37
+ * a script that both evaluates dynamic code AND
38
+ * makes network calls high
39
+ * dynamic-eval eval/exec/new Function/iex, no network call warning
40
+ * credential-exfil credential-store read or environment dump AND
41
+ * network calls in the same file high
42
+ * exfil-instruction prose sending secrets to a destination high/warning
43
+ * instruction-override prompt-injection text high
44
+ * conceal-from-user prose hiding actions from the user high/warning
45
+ * permission-bypass flags/prose disabling permission prompts warning
46
+ * hidden-unicode tag characters, bidi controls (high); other
47
+ * invisible/format/control characters (warning)
48
+ * hidden-html-comment agent-directed text inside an HTML comment warning
49
+ * hidden-html-element text hidden by `display:none`/`hidden` warning
50
+ * encoded-blob a large base64 blob in instruction text warning
51
+ * unpinned-remote-dep a remote dependency with no pinned version warning
52
+ * missing-script the SKILL.md runs a script that exists nowhere
53
+ * warning, ai_config
54
+ * unscanned-files content this scan could not fully read, named:
55
+ * binaries/archives/executables, compiled-language
56
+ * sources, files over the cap or budget, oversized
57
+ * files (head and tail read), overlong continuation
58
+ * chains (warning); dependency directories and
59
+ * include-filtered files (info)
60
+ *
61
+ * Hostile input: every regex uses bounded quantifiers and runs over lines in
62
+ * overlapping 2000-character windows behind cheap prefilters, and every rule
63
+ * whose span can exceed the window overlap (pipes, command chains) is matched
64
+ * procedurally over the whole logical command, so results do not depend on
65
+ * window alignment. HTML comments and tags are found with indexOf walks. A
66
+ * rule keeps scanning past its evidence cap (a flood of low-severity matches
67
+ * cannot hide a later high-severity one). Documents are loaded, scanned and
68
+ * dropped one at a time under a per-scan byte, file and line budget, SKILL.md
69
+ * files and scripts/executables first; a priority file the budget cannot
70
+ * reach is reported at HIGH (fail closed). There is deliberately no
71
+ * wall-clock budget: output must not depend on the clock.
72
+ *
73
+ * Documentation vs directive (the false-positive controls). Outside fenced
74
+ * code — prose, inline code, table rows — a negation or discussion word only
75
+ * counts when it directly GOVERNS the match: an imperative negation with
76
+ * nothing or one executing verb between ("never run `curl … | bash`"), a
77
+ * discussion word right before it ("this skill detects `curl | bash`" — a
78
+ * `Label:` is not governance), or a predicate right after it ("… is
79
+ * dangerous"). Governance ends at but / and / then / instead / so and at
80
+ * clause punctuation; "never forget/hesitate/stop/skip/fail/neglect/mind" is
81
+ * not a negation. Even then, context NEVER drops a match, or lowers its
82
+ * severity, when the match names a concrete target — a URL, a host (dotted,
83
+ * IPv4/IPv6, host:port, defanged or quote-split), a host/path, a `$VARIABLE`
84
+ * or `$(…)`, or any address-like argument or config/list flag given to
85
+ * curl/wget/iwr, or a dot-less host (`wget intranet`) that is the fetcher's
86
+ * first non-flag argument while the same text pipes into a shell or runs the
87
+ * download (a bare word elsewhere is prose: "pipe curl into bash") — it only
88
+ * lowers confidence (0.4) and notes "looks like documentation". Target-less
89
+ * exec documentation ("never run `curl | bash`")
90
+ * is dropped; target-less override/concealment/bypass text is dropped only
91
+ * when the governed phrase is itself set off in a code span, quotes or a
92
+ * table cell (otherwise it is kept at low confidence), and quoted text after
93
+ * an adoption phrase ("your new rule is \"…\"") is never data. The trade-off: a
94
+ * security skill quoting a real installer URL is reported (high, low
95
+ * confidence); the escape hatch is the baseline or a config `exclude`. A
96
+ * documented example whose governing word the rules do not recognise ("Instead
97
+ * of `curl URL | bash`", a table of risky patterns, a "bad example" fence)
98
+ * stays at full confidence; the benign-documentation corpus in
99
+ * skill-supply-chain.test.ts pins both behaviours.
100
+ * Other controls: one named API key sent to an API is not exfiltration;
101
+ * dynamic require/import only counts next to network access; emoji ZWJ, a
102
+ * single variation selector after a non-ASCII character, flag tag sequences,
103
+ * RTL marks in RTL text, a leading BOM and `data:` URIs are ignored; `npx
104
+ * tool` without a version is not flagged; a table row whose first cell is just
105
+ * a flag, and whose other cells direct nothing, documents that flag.
106
+ *
107
+ * Findings list the file they were found in plus the owning SKILL.md in
108
+ * `filePaths`, with `locations` at the exact line. Inline `promptci-ignore`
109
+ * annotations inside a skill directory never suppress these findings
110
+ * (scan.ts). Evidence quotes the matched text with every invisible or control
111
+ * character shown as `<U+XXXX>` and tag-character payloads decoded. No finding
112
+ * is auto-fixable: repairing a skill needs a human-reviewed diff.
113
+ */
114
+ import type { RepoContext } from './repo-context.js';
115
+ import type { PromptCiIssue } from './types.js';
116
+ /** First entry of every finding's `tags`. */
117
+ export declare const SKILL_SUPPLY_CHAIN_TAG = "skill-supply-chain";
118
+ /** Total bytes of skill content read per scan; the rest is reported, not read. */
119
+ export declare const MAX_SCAN_BYTES: number;
120
+ /** Total skill files read per scan. */
121
+ export declare const MAX_SCAN_FILES = 2000;
122
+ export type SkillSupplyChainRule = 'remote-exec' | 'encoded-exec' | 'remote-eval' | 'dynamic-eval' | 'credential-exfil' | 'exfil-instruction' | 'instruction-override' | 'conceal-from-user' | 'permission-bypass' | 'hidden-unicode' | 'hidden-html-comment' | 'hidden-html-element' | 'encoded-blob' | 'unpinned-remote-dep' | 'missing-script' | 'unscanned-files';
123
+ /** Total lines examined per scan: bounds per-line work however the bytes are shaped (e.g. megabytes of newlines). */
124
+ export declare const MAX_SCAN_LINES = 3000000;
125
+ /** Per-scan budget overrides (tests exercise budget exhaustion without generating gigabytes). */
126
+ export type SkillScanLimits = Partial<{
127
+ bytes: number;
128
+ files: number;
129
+ lines: number;
130
+ }>;
131
+ export declare function detectSkillSupplyChain(context: RepoContext, limits?: SkillScanLimits): PromptCiIssue[];
132
+ //# sourceMappingURL=skill-supply-chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-supply-chain.d.ts","sourceRoot":"","sources":["../src/skill-supply-chain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgHG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAgC,aAAa,EAAE,MAAM,YAAY,CAAC;AAgB9E,6CAA6C;AAC7C,eAAO,MAAM,sBAAsB,uBAAuB,CAAC;AAE3D,kFAAkF;AAClF,eAAO,MAAM,cAAc,QAAmB,CAAC;AAC/C,uCAAuC;AACvC,eAAO,MAAM,cAAc,OAAO,CAAC;AAiCnC,MAAM,MAAM,oBAAoB,GAC5B,aAAa,GACb,cAAc,GACd,aAAa,GACb,cAAc,GACd,kBAAkB,GAClB,mBAAmB,GACnB,sBAAsB,GACtB,mBAAmB,GACnB,mBAAmB,GACnB,gBAAgB,GAChB,qBAAqB,GACrB,qBAAqB,GACrB,cAAc,GACd,qBAAqB,GACrB,gBAAgB,GAChB,iBAAiB,CAAC;AAq9EtB,qHAAqH;AACrH,eAAO,MAAM,cAAc,UAAY,CAAC;AA+OxC,iGAAiG;AACjG,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEvF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,GAAE,eAAoB,GAAG,aAAa,EAAE,CAqG1G"}