eslint-plugin-copilot 1.0.8 → 1.1.2

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 (315) hide show
  1. package/README.md +71 -72
  2. package/dist/_internal/copilot-config-references.d.ts +1 -1
  3. package/dist/_internal/copilot-config-references.d.ts.map +1 -1
  4. package/dist/_internal/copilot-config-references.js +3 -1
  5. package/dist/_internal/copilot-config-references.js.map +1 -1
  6. package/dist/_internal/copilot-file-kind.d.ts.map +1 -1
  7. package/dist/_internal/copilot-file-kind.js +4 -3
  8. package/dist/_internal/copilot-file-kind.js.map +1 -1
  9. package/dist/_internal/create-copilot-rule.d.ts +4 -2
  10. package/dist/_internal/create-copilot-rule.d.ts.map +1 -1
  11. package/dist/_internal/create-copilot-rule.js.map +1 -1
  12. package/dist/_internal/file-system.d.ts.map +1 -1
  13. package/dist/_internal/file-system.js +31 -18
  14. package/dist/_internal/file-system.js.map +1 -1
  15. package/dist/_internal/frontmatter.d.ts +1 -1
  16. package/dist/_internal/frontmatter.d.ts.map +1 -1
  17. package/dist/_internal/frontmatter.js +151 -119
  18. package/dist/_internal/frontmatter.js.map +1 -1
  19. package/dist/_internal/markdown-links.d.ts.map +1 -1
  20. package/dist/_internal/markdown-links.js +3 -1
  21. package/dist/_internal/markdown-links.js.map +1 -1
  22. package/dist/_internal/markdown-rule.d.ts +2 -1
  23. package/dist/_internal/markdown-rule.d.ts.map +1 -1
  24. package/dist/_internal/markdown-rule.js.map +1 -1
  25. package/dist/_internal/repository-hooks-json.d.ts +5 -2
  26. package/dist/_internal/repository-hooks-json.d.ts.map +1 -1
  27. package/dist/_internal/repository-hooks-json.js +7 -6
  28. package/dist/_internal/repository-hooks-json.js.map +1 -1
  29. package/dist/_internal/rule-catalog.d.ts.map +1 -1
  30. package/dist/_internal/rule-catalog.js +2 -3
  31. package/dist/_internal/rule-catalog.js.map +1 -1
  32. package/dist/plugin.cjs +560 -633
  33. package/dist/plugin.cjs.map +4 -4
  34. package/dist/plugin.d.cts +2 -1
  35. package/dist/plugin.d.ts +2 -1
  36. package/dist/plugin.d.ts.map +1 -1
  37. package/dist/plugin.js +4 -3
  38. package/dist/plugin.js.map +1 -1
  39. package/dist/rules/no-blank-customization-body.d.ts +1 -0
  40. package/dist/rules/no-blank-customization-body.d.ts.map +1 -1
  41. package/dist/rules/no-blank-customization-body.js +3 -0
  42. package/dist/rules/no-blank-customization-body.js.map +1 -1
  43. package/dist/rules/no-blank-repository-instructions.d.ts +1 -0
  44. package/dist/rules/no-blank-repository-instructions.d.ts.map +1 -1
  45. package/dist/rules/no-blank-repository-instructions.js +3 -0
  46. package/dist/rules/no-blank-repository-instructions.js.map +1 -1
  47. package/dist/rules/no-blank-skill-body.d.ts +1 -0
  48. package/dist/rules/no-blank-skill-body.d.ts.map +1 -1
  49. package/dist/rules/no-blank-skill-body.js +3 -0
  50. package/dist/rules/no-blank-skill-body.js.map +1 -1
  51. package/dist/rules/no-deprecated-agent-infer.d.ts +1 -0
  52. package/dist/rules/no-deprecated-agent-infer.d.ts.map +1 -1
  53. package/dist/rules/no-deprecated-agent-infer.js +3 -0
  54. package/dist/rules/no-deprecated-agent-infer.js.map +1 -1
  55. package/dist/rules/no-duplicate-agent-names.d.ts +1 -0
  56. package/dist/rules/no-duplicate-agent-names.d.ts.map +1 -1
  57. package/dist/rules/no-duplicate-agent-names.js +6 -4
  58. package/dist/rules/no-duplicate-agent-names.js.map +1 -1
  59. package/dist/rules/no-duplicate-prompt-names.d.ts +1 -0
  60. package/dist/rules/no-duplicate-prompt-names.d.ts.map +1 -1
  61. package/dist/rules/no-duplicate-prompt-names.js +6 -4
  62. package/dist/rules/no-duplicate-prompt-names.js.map +1 -1
  63. package/dist/rules/no-duplicate-skill-names.d.ts +1 -0
  64. package/dist/rules/no-duplicate-skill-names.d.ts.map +1 -1
  65. package/dist/rules/no-duplicate-skill-names.js +6 -4
  66. package/dist/rules/no-duplicate-skill-names.js.map +1 -1
  67. package/dist/rules/no-duplicate-slash-command-names.d.ts +1 -0
  68. package/dist/rules/no-duplicate-slash-command-names.d.ts.map +1 -1
  69. package/dist/rules/no-duplicate-slash-command-names.js +6 -4
  70. package/dist/rules/no-duplicate-slash-command-names.js.map +1 -1
  71. package/dist/rules/no-empty-repository-hook-arrays.d.ts +1 -0
  72. package/dist/rules/no-empty-repository-hook-arrays.d.ts.map +1 -1
  73. package/dist/rules/no-empty-repository-hook-arrays.js +7 -3
  74. package/dist/rules/no-empty-repository-hook-arrays.js.map +1 -1
  75. package/dist/rules/no-legacy-chatmode-files.d.ts +1 -0
  76. package/dist/rules/no-legacy-chatmode-files.d.ts.map +1 -1
  77. package/dist/rules/no-legacy-chatmode-files.js +3 -0
  78. package/dist/rules/no-legacy-chatmode-files.js.map +1 -1
  79. package/dist/rules/prefer-custom-instructions-under-code-review-limit.d.ts +1 -0
  80. package/dist/rules/prefer-custom-instructions-under-code-review-limit.d.ts.map +1 -1
  81. package/dist/rules/prefer-custom-instructions-under-code-review-limit.js +3 -0
  82. package/dist/rules/prefer-custom-instructions-under-code-review-limit.js.map +1 -1
  83. package/dist/rules/prefer-fast-repository-hooks.d.ts +1 -0
  84. package/dist/rules/prefer-fast-repository-hooks.d.ts.map +1 -1
  85. package/dist/rules/prefer-fast-repository-hooks.js +5 -1
  86. package/dist/rules/prefer-fast-repository-hooks.js.map +1 -1
  87. package/dist/rules/prefer-qualified-tools.d.ts +1 -0
  88. package/dist/rules/prefer-qualified-tools.d.ts.map +1 -1
  89. package/dist/rules/prefer-qualified-tools.js +8 -3
  90. package/dist/rules/prefer-qualified-tools.js.map +1 -1
  91. package/dist/rules/require-agent-tool-for-subagents.d.ts +1 -0
  92. package/dist/rules/require-agent-tool-for-subagents.d.ts.map +1 -1
  93. package/dist/rules/require-agent-tool-for-subagents.js +6 -2
  94. package/dist/rules/require-agent-tool-for-subagents.js.map +1 -1
  95. package/dist/rules/require-agents-md-for-cross-surface-agent-instructions.d.ts +1 -0
  96. package/dist/rules/require-agents-md-for-cross-surface-agent-instructions.d.ts.map +1 -1
  97. package/dist/rules/require-agents-md-for-cross-surface-agent-instructions.js +3 -0
  98. package/dist/rules/require-agents-md-for-cross-surface-agent-instructions.js.map +1 -1
  99. package/dist/rules/require-chatmode-file-metadata.d.ts +1 -0
  100. package/dist/rules/require-chatmode-file-metadata.d.ts.map +1 -1
  101. package/dist/rules/require-chatmode-file-metadata.js +5 -1
  102. package/dist/rules/require-chatmode-file-metadata.js.map +1 -1
  103. package/dist/rules/require-existing-agent-hook-cwd.d.ts +1 -0
  104. package/dist/rules/require-existing-agent-hook-cwd.d.ts.map +1 -1
  105. package/dist/rules/require-existing-agent-hook-cwd.js +6 -2
  106. package/dist/rules/require-existing-agent-hook-cwd.js.map +1 -1
  107. package/dist/rules/require-existing-agent-mcp-servers.d.ts +1 -0
  108. package/dist/rules/require-existing-agent-mcp-servers.d.ts.map +1 -1
  109. package/dist/rules/require-existing-agent-mcp-servers.js +6 -2
  110. package/dist/rules/require-existing-agent-mcp-servers.js.map +1 -1
  111. package/dist/rules/require-existing-relative-agent-links.d.ts +1 -0
  112. package/dist/rules/require-existing-relative-agent-links.d.ts.map +1 -1
  113. package/dist/rules/require-existing-relative-agent-links.js +3 -0
  114. package/dist/rules/require-existing-relative-agent-links.js.map +1 -1
  115. package/dist/rules/require-existing-relative-instructions-links.d.ts +1 -0
  116. package/dist/rules/require-existing-relative-instructions-links.d.ts.map +1 -1
  117. package/dist/rules/require-existing-relative-instructions-links.js +3 -0
  118. package/dist/rules/require-existing-relative-instructions-links.js.map +1 -1
  119. package/dist/rules/require-existing-relative-prompt-links.d.ts +1 -0
  120. package/dist/rules/require-existing-relative-prompt-links.d.ts.map +1 -1
  121. package/dist/rules/require-existing-relative-prompt-links.js +3 -0
  122. package/dist/rules/require-existing-relative-prompt-links.js.map +1 -1
  123. package/dist/rules/require-existing-relative-skill-links.d.ts +1 -0
  124. package/dist/rules/require-existing-relative-skill-links.d.ts.map +1 -1
  125. package/dist/rules/require-existing-relative-skill-links.js +3 -0
  126. package/dist/rules/require-existing-relative-skill-links.js.map +1 -1
  127. package/dist/rules/require-existing-repository-hook-cwd.d.ts +1 -0
  128. package/dist/rules/require-existing-repository-hook-cwd.d.ts.map +1 -1
  129. package/dist/rules/require-existing-repository-hook-cwd.js +5 -1
  130. package/dist/rules/require-existing-repository-hook-cwd.js.map +1 -1
  131. package/dist/rules/require-github-copilot-target-for-mcp-servers.d.ts +1 -0
  132. package/dist/rules/require-github-copilot-target-for-mcp-servers.d.ts.map +1 -1
  133. package/dist/rules/require-github-copilot-target-for-mcp-servers.js +5 -1
  134. package/dist/rules/require-github-copilot-target-for-mcp-servers.js.map +1 -1
  135. package/dist/rules/require-instructions-apply-to.d.ts +1 -0
  136. package/dist/rules/require-instructions-apply-to.d.ts.map +1 -1
  137. package/dist/rules/require-instructions-apply-to.js +5 -1
  138. package/dist/rules/require-instructions-apply-to.js.map +1 -1
  139. package/dist/rules/require-json-agent-mcp-servers.d.ts +1 -0
  140. package/dist/rules/require-json-agent-mcp-servers.d.ts.map +1 -1
  141. package/dist/rules/require-json-agent-mcp-servers.js +6 -2
  142. package/dist/rules/require-json-agent-mcp-servers.js.map +1 -1
  143. package/dist/rules/require-prompt-file-metadata.d.ts +1 -0
  144. package/dist/rules/require-prompt-file-metadata.d.ts.map +1 -1
  145. package/dist/rules/require-prompt-file-metadata.js +43 -32
  146. package/dist/rules/require-prompt-file-metadata.js.map +1 -1
  147. package/dist/rules/require-qualified-agent-handoff-models.d.ts +1 -0
  148. package/dist/rules/require-qualified-agent-handoff-models.d.ts.map +1 -1
  149. package/dist/rules/require-qualified-agent-handoff-models.js +6 -2
  150. package/dist/rules/require-qualified-agent-handoff-models.js.map +1 -1
  151. package/dist/rules/require-relative-agent-hook-cwd.d.ts +1 -0
  152. package/dist/rules/require-relative-agent-hook-cwd.d.ts.map +1 -1
  153. package/dist/rules/require-relative-agent-hook-cwd.js +6 -2
  154. package/dist/rules/require-relative-agent-hook-cwd.js.map +1 -1
  155. package/dist/rules/require-relative-agent-links.d.ts +1 -0
  156. package/dist/rules/require-relative-agent-links.d.ts.map +1 -1
  157. package/dist/rules/require-relative-agent-links.js +3 -0
  158. package/dist/rules/require-relative-agent-links.js.map +1 -1
  159. package/dist/rules/require-relative-instructions-links.d.ts +1 -0
  160. package/dist/rules/require-relative-instructions-links.d.ts.map +1 -1
  161. package/dist/rules/require-relative-instructions-links.js +3 -0
  162. package/dist/rules/require-relative-instructions-links.js.map +1 -1
  163. package/dist/rules/require-relative-prompt-links.d.ts +1 -0
  164. package/dist/rules/require-relative-prompt-links.d.ts.map +1 -1
  165. package/dist/rules/require-relative-prompt-links.js +3 -0
  166. package/dist/rules/require-relative-prompt-links.js.map +1 -1
  167. package/dist/rules/require-relative-repository-hook-cwd.d.ts +1 -0
  168. package/dist/rules/require-relative-repository-hook-cwd.d.ts.map +1 -1
  169. package/dist/rules/require-relative-repository-hook-cwd.js +5 -1
  170. package/dist/rules/require-relative-repository-hook-cwd.js.map +1 -1
  171. package/dist/rules/require-relative-skill-links.d.ts +1 -0
  172. package/dist/rules/require-relative-skill-links.d.ts.map +1 -1
  173. package/dist/rules/require-relative-skill-links.js +3 -0
  174. package/dist/rules/require-relative-skill-links.js.map +1 -1
  175. package/dist/rules/require-repository-hook-arrays.d.ts +1 -0
  176. package/dist/rules/require-repository-hook-arrays.d.ts.map +1 -1
  177. package/dist/rules/require-repository-hook-arrays.js +7 -3
  178. package/dist/rules/require-repository-hook-arrays.js.map +1 -1
  179. package/dist/rules/require-repository-hook-command-shell.d.ts +1 -0
  180. package/dist/rules/require-repository-hook-command-shell.d.ts.map +1 -1
  181. package/dist/rules/require-repository-hook-command-shell.js +5 -1
  182. package/dist/rules/require-repository-hook-command-shell.js.map +1 -1
  183. package/dist/rules/require-repository-hooks-object.d.ts +1 -0
  184. package/dist/rules/require-repository-hooks-object.d.ts.map +1 -1
  185. package/dist/rules/require-repository-hooks-object.js +3 -0
  186. package/dist/rules/require-repository-hooks-object.js.map +1 -1
  187. package/dist/rules/require-repository-instructions-file.d.ts +1 -0
  188. package/dist/rules/require-repository-instructions-file.d.ts.map +1 -1
  189. package/dist/rules/require-repository-instructions-file.js +3 -0
  190. package/dist/rules/require-repository-instructions-file.js.map +1 -1
  191. package/dist/rules/require-skill-file-location.d.ts +1 -0
  192. package/dist/rules/require-skill-file-location.d.ts.map +1 -1
  193. package/dist/rules/require-skill-file-location.js +3 -0
  194. package/dist/rules/require-skill-file-location.js.map +1 -1
  195. package/dist/rules/require-skill-file-metadata.d.ts +1 -0
  196. package/dist/rules/require-skill-file-metadata.d.ts.map +1 -1
  197. package/dist/rules/require-skill-file-metadata.js +6 -2
  198. package/dist/rules/require-skill-file-metadata.js.map +1 -1
  199. package/dist/rules/require-skill-md-filename.d.ts +1 -0
  200. package/dist/rules/require-skill-md-filename.d.ts.map +1 -1
  201. package/dist/rules/require-skill-md-filename.js +3 -0
  202. package/dist/rules/require-skill-md-filename.js.map +1 -1
  203. package/dist/rules/require-skill-name-match-directory.d.ts +1 -0
  204. package/dist/rules/require-skill-name-match-directory.d.ts.map +1 -1
  205. package/dist/rules/require-skill-name-match-directory.js +5 -1
  206. package/dist/rules/require-skill-name-match-directory.js.map +1 -1
  207. package/dist/rules/require-string-repository-hook-env-values.d.ts +1 -0
  208. package/dist/rules/require-string-repository-hook-env-values.d.ts.map +1 -1
  209. package/dist/rules/require-string-repository-hook-env-values.js +6 -2
  210. package/dist/rules/require-string-repository-hook-env-values.js.map +1 -1
  211. package/dist/rules/require-valid-agent-argument-hint.d.ts +1 -0
  212. package/dist/rules/require-valid-agent-argument-hint.d.ts.map +1 -1
  213. package/dist/rules/require-valid-agent-argument-hint.js +5 -1
  214. package/dist/rules/require-valid-agent-argument-hint.js.map +1 -1
  215. package/dist/rules/require-valid-agent-handoff-send.d.ts +1 -0
  216. package/dist/rules/require-valid-agent-handoff-send.d.ts.map +1 -1
  217. package/dist/rules/require-valid-agent-handoff-send.js +7 -3
  218. package/dist/rules/require-valid-agent-handoff-send.js.map +1 -1
  219. package/dist/rules/require-valid-agent-handoffs.d.ts +1 -0
  220. package/dist/rules/require-valid-agent-handoffs.d.ts.map +1 -1
  221. package/dist/rules/require-valid-agent-handoffs.js +5 -1
  222. package/dist/rules/require-valid-agent-handoffs.js.map +1 -1
  223. package/dist/rules/require-valid-agent-hook-events.d.ts +1 -0
  224. package/dist/rules/require-valid-agent-hook-events.d.ts.map +1 -1
  225. package/dist/rules/require-valid-agent-hook-events.js +6 -2
  226. package/dist/rules/require-valid-agent-hook-events.js.map +1 -1
  227. package/dist/rules/require-valid-agent-hook-timeouts.d.ts +1 -0
  228. package/dist/rules/require-valid-agent-hook-timeouts.d.ts.map +1 -1
  229. package/dist/rules/require-valid-agent-hook-timeouts.js +6 -2
  230. package/dist/rules/require-valid-agent-hook-timeouts.js.map +1 -1
  231. package/dist/rules/require-valid-agent-hooks.d.ts +1 -0
  232. package/dist/rules/require-valid-agent-hooks.d.ts.map +1 -1
  233. package/dist/rules/require-valid-agent-hooks.js +31 -21
  234. package/dist/rules/require-valid-agent-hooks.js.map +1 -1
  235. package/dist/rules/require-valid-agent-invocation-controls.d.ts +1 -0
  236. package/dist/rules/require-valid-agent-invocation-controls.d.ts.map +1 -1
  237. package/dist/rules/require-valid-agent-invocation-controls.js +7 -3
  238. package/dist/rules/require-valid-agent-invocation-controls.js.map +1 -1
  239. package/dist/rules/require-valid-agent-mcp-servers.d.ts +1 -0
  240. package/dist/rules/require-valid-agent-mcp-servers.d.ts.map +1 -1
  241. package/dist/rules/require-valid-agent-mcp-servers.js +8 -4
  242. package/dist/rules/require-valid-agent-mcp-servers.js.map +1 -1
  243. package/dist/rules/require-valid-agent-model.d.ts +1 -0
  244. package/dist/rules/require-valid-agent-model.d.ts.map +1 -1
  245. package/dist/rules/require-valid-agent-model.js +7 -3
  246. package/dist/rules/require-valid-agent-model.js.map +1 -1
  247. package/dist/rules/require-valid-agent-name.d.ts +1 -0
  248. package/dist/rules/require-valid-agent-name.d.ts.map +1 -1
  249. package/dist/rules/require-valid-agent-name.js +5 -1
  250. package/dist/rules/require-valid-agent-name.js.map +1 -1
  251. package/dist/rules/require-valid-agent-subagents.d.ts +1 -0
  252. package/dist/rules/require-valid-agent-subagents.d.ts.map +1 -1
  253. package/dist/rules/require-valid-agent-subagents.js +8 -4
  254. package/dist/rules/require-valid-agent-subagents.js.map +1 -1
  255. package/dist/rules/require-valid-agent-target.d.ts +1 -0
  256. package/dist/rules/require-valid-agent-target.d.ts.map +1 -1
  257. package/dist/rules/require-valid-agent-target.js +6 -2
  258. package/dist/rules/require-valid-agent-target.js.map +1 -1
  259. package/dist/rules/require-valid-agent-tools.d.ts +1 -0
  260. package/dist/rules/require-valid-agent-tools.d.ts.map +1 -1
  261. package/dist/rules/require-valid-agent-tools.js +8 -4
  262. package/dist/rules/require-valid-agent-tools.js.map +1 -1
  263. package/dist/rules/require-valid-instructions-apply-to-globs.d.ts +1 -0
  264. package/dist/rules/require-valid-instructions-apply-to-globs.d.ts.map +1 -1
  265. package/dist/rules/require-valid-instructions-apply-to-globs.js +8 -3
  266. package/dist/rules/require-valid-instructions-apply-to-globs.js.map +1 -1
  267. package/dist/rules/require-valid-prompt-argument-hint.d.ts +1 -0
  268. package/dist/rules/require-valid-prompt-argument-hint.d.ts.map +1 -1
  269. package/dist/rules/require-valid-prompt-argument-hint.js +6 -3
  270. package/dist/rules/require-valid-prompt-argument-hint.js.map +1 -1
  271. package/dist/rules/require-valid-prompt-model.d.ts +1 -0
  272. package/dist/rules/require-valid-prompt-model.d.ts.map +1 -1
  273. package/dist/rules/require-valid-prompt-model.js +9 -5
  274. package/dist/rules/require-valid-prompt-model.js.map +1 -1
  275. package/dist/rules/require-valid-prompt-name.d.ts +1 -0
  276. package/dist/rules/require-valid-prompt-name.d.ts.map +1 -1
  277. package/dist/rules/require-valid-prompt-name.js +5 -1
  278. package/dist/rules/require-valid-prompt-name.js.map +1 -1
  279. package/dist/rules/require-valid-prompt-tools.d.ts +1 -0
  280. package/dist/rules/require-valid-prompt-tools.d.ts.map +1 -1
  281. package/dist/rules/require-valid-prompt-tools.js +8 -4
  282. package/dist/rules/require-valid-prompt-tools.js.map +1 -1
  283. package/dist/rules/require-valid-repository-hook-command-type.d.ts +1 -0
  284. package/dist/rules/require-valid-repository-hook-command-type.d.ts.map +1 -1
  285. package/dist/rules/require-valid-repository-hook-command-type.js +5 -1
  286. package/dist/rules/require-valid-repository-hook-command-type.js.map +1 -1
  287. package/dist/rules/require-valid-repository-hook-env.d.ts +1 -0
  288. package/dist/rules/require-valid-repository-hook-env.d.ts.map +1 -1
  289. package/dist/rules/require-valid-repository-hook-env.js +6 -2
  290. package/dist/rules/require-valid-repository-hook-env.js.map +1 -1
  291. package/dist/rules/require-valid-repository-hook-events.d.ts +1 -0
  292. package/dist/rules/require-valid-repository-hook-events.d.ts.map +1 -1
  293. package/dist/rules/require-valid-repository-hook-events.js +5 -1
  294. package/dist/rules/require-valid-repository-hook-events.js.map +1 -1
  295. package/dist/rules/require-valid-repository-hook-timeouts.d.ts +1 -0
  296. package/dist/rules/require-valid-repository-hook-timeouts.d.ts.map +1 -1
  297. package/dist/rules/require-valid-repository-hook-timeouts.js +7 -3
  298. package/dist/rules/require-valid-repository-hook-timeouts.js.map +1 -1
  299. package/dist/rules/require-valid-repository-hook-version.d.ts +1 -0
  300. package/dist/rules/require-valid-repository-hook-version.d.ts.map +1 -1
  301. package/dist/rules/require-valid-repository-hook-version.js +3 -0
  302. package/dist/rules/require-valid-repository-hook-version.js.map +1 -1
  303. package/dist/rules/require-valid-skill-directory-name.d.ts +1 -0
  304. package/dist/rules/require-valid-skill-directory-name.d.ts.map +1 -1
  305. package/dist/rules/require-valid-skill-directory-name.js +3 -0
  306. package/dist/rules/require-valid-skill-directory-name.js.map +1 -1
  307. package/dist/rules/require-valid-skill-license.d.ts +1 -0
  308. package/dist/rules/require-valid-skill-license.d.ts.map +1 -1
  309. package/dist/rules/require-valid-skill-license.js +5 -1
  310. package/dist/rules/require-valid-skill-license.js.map +1 -1
  311. package/dist/rules/require-valid-skill-name.d.ts +1 -0
  312. package/dist/rules/require-valid-skill-name.d.ts.map +1 -1
  313. package/dist/rules/require-valid-skill-name.js +5 -1
  314. package/dist/rules/require-valid-skill-name.js.map +1 -1
  315. package/package.json +37 -277
package/dist/plugin.d.cts CHANGED
@@ -3,6 +3,7 @@
3
3
  * Public plugin entrypoint for eslint-plugin-copilot.
4
4
  */
5
5
  import type { ESLint, Linter } from "eslint";
6
+ import type { Except } from "type-fest";
6
7
  import { type CopilotConfigName } from "./_internal/copilot-config-references.js";
7
8
  import { copilotRules } from "./_internal/rules-registry.js";
8
9
  /** Flat-config preset layers produced by this plugin. */
@@ -18,7 +19,7 @@ export type CopilotRuleName = keyof typeof copilotRules;
18
19
  /** Contract for the exported preset map. */
19
20
  type CopilotConfigsContract = Record<CopilotConfigName, CopilotPresetConfig>;
20
21
  /** Fully assembled plugin contract used by the runtime default export. */
21
- type CopilotPluginContract = Omit<ESLint.Plugin, "configs" | "rules"> & {
22
+ type CopilotPluginContract = Except<ESLint.Plugin, "configs" | "rules"> & {
22
23
  configs: CopilotConfigsContract;
23
24
  meta: {
24
25
  name: string;
package/dist/plugin.d.ts CHANGED
@@ -3,6 +3,7 @@
3
3
  * Public plugin entrypoint for eslint-plugin-copilot.
4
4
  */
5
5
  import type { ESLint, Linter } from "eslint";
6
+ import type { Except } from "type-fest";
6
7
  import { type CopilotConfigName } from "./_internal/copilot-config-references.js";
7
8
  import { copilotRules } from "./_internal/rules-registry.js";
8
9
  /** Flat-config preset layers produced by this plugin. */
@@ -18,7 +19,7 @@ export type CopilotRuleName = keyof typeof copilotRules;
18
19
  /** Contract for the exported preset map. */
19
20
  type CopilotConfigsContract = Record<CopilotConfigName, CopilotPresetConfig>;
20
21
  /** Fully assembled plugin contract used by the runtime default export. */
21
- type CopilotPluginContract = Omit<ESLint.Plugin, "configs" | "rules"> & {
22
+ type CopilotPluginContract = Except<ESLint.Plugin, "configs" | "rules"> & {
22
23
  configs: CopilotConfigsContract;
23
24
  meta: {
24
25
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAQ7C,OAAO,EAEH,KAAK,iBAAiB,EACzB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAyC7D,yDAAyD;AACzD,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,EAAE,CAAC;AAEvD,wDAAwD;AACxD,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,GAAG;IAC7C,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;CAC9C,CAAC;AAEF,wCAAwC;AACxC,MAAM,MAAM,aAAa,GAAG,WAAW,eAAe,EAAE,CAAC;AAEzD,iEAAiE;AACjE,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,YAAY,CAAC;AAExD,4CAA4C;AAC5C,KAAK,sBAAsB,GAAG,MAAM,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;AAE7E,0EAA0E;AAC1E,KAAK,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG;IACpE,OAAO,EAAE,sBAAsB,CAAC;IAChC,IAAI,EAAE;QACF,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IACrD,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;CAC9C,CAAC;AAqIF,oFAAoF;AACpF,QAAA,MAAM,MAAM,EAAE,qBASb,CAAC;AASF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AASxC,OAAO,EAEH,KAAK,iBAAiB,EACzB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAyC7D,yDAAyD;AACzD,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,EAAE,CAAC;AAEvD,wDAAwD;AACxD,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,GAAG;IAC7C,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;CAC9C,CAAC;AAEF,wCAAwC;AACxC,MAAM,MAAM,aAAa,GAAG,WAAW,eAAe,EAAE,CAAC;AAEzD,iEAAiE;AACjE,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,YAAY,CAAC;AAExD,4CAA4C;AAC5C,KAAK,sBAAsB,GAAG,MAAM,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;AAE7E,0EAA0E;AAC1E,KAAK,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG;IACtE,OAAO,EAAE,sBAAsB,CAAC;IAChC,IAAI,EAAE;QACF,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IACrD,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;CAC9C,CAAC;AAyIF,oFAAoF;AACpF,QAAA,MAAM,MAAM,EAAE,qBASb,CAAC;AASF,eAAe,MAAM,CAAC"}
package/dist/plugin.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import json from "@eslint/json";
2
2
  import markdown from "@eslint/markdown";
3
+ import { not, objectEntries, safeCastTo, setHas } from "ts-extras";
3
4
  import packageJson from "../package.json" with { type: "json" };
4
5
  import { copilotConfigMetadataByName, } from "./_internal/copilot-config-references.js";
5
6
  import { copilotRules } from "./_internal/rules-registry.js";
@@ -51,7 +52,7 @@ const eslintRules = copilotRules;
51
52
  const markdownPlugin = markdown;
52
53
  const jsonPlugin = json;
53
54
  /** Stable ordered entries used to derive preset membership. */
54
- const copilotRuleEntries = Object.entries(copilotRules).toSorted(([left], [right]) => left.localeCompare(right));
55
+ const copilotRuleEntries = safeCastTo(objectEntries(copilotRules).toSorted(([left], [right]) => left.localeCompare(right)));
55
56
  /** Create an empty mutable preset-rule bucket map. */
56
57
  const createEmptyPresetRuleMap = () => ({
57
58
  all: [],
@@ -89,8 +90,8 @@ const errorRulesFor = (ruleNames) => {
89
90
  const presetRuleNamesByConfig = derivePresetRuleNamesByConfig();
90
91
  /** Split preset rule names into markdown-backed and JSON-backed layers. */
91
92
  const partitionRuleNamesByPresetLayer = (ruleNames) => ({
92
- jsonRuleNames: ruleNames.filter((ruleName) => REPOSITORY_HOOK_JSON_RULE_NAMES.has(ruleName)),
93
- markdownRuleNames: ruleNames.filter((ruleName) => !REPOSITORY_HOOK_JSON_RULE_NAMES.has(ruleName)),
93
+ jsonRuleNames: ruleNames.filter((ruleName) => setHas(REPOSITORY_HOOK_JSON_RULE_NAMES, ruleName)),
94
+ markdownRuleNames: ruleNames.filter(not((ruleName) => setHas(REPOSITORY_HOOK_JSON_RULE_NAMES, ruleName))),
94
95
  });
95
96
  /** Build one public preset config as layered flat-config entries. */
96
97
  const createPresetConfig = (configName, plugin) => {
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { CopilotRuleModule } from "../_internal/create-copilot-rule.js";
2
+ /** Rule module for `no-blank-customization-body`. */
2
3
  declare const noBlankCustomizationBodyRule: CopilotRuleModule;
3
4
  export default noBlankCustomizationBodyRule;
4
5
  //# sourceMappingURL=no-blank-customization-body.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-blank-customization-body.d.ts","sourceRoot":"","sources":["../../src/rules/no-blank-customization-body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAiB7E,QAAA,MAAM,4BAA4B,EAAE,iBA2ClC,CAAC;AAEH,eAAe,4BAA4B,CAAC"}
1
+ {"version":3,"file":"no-blank-customization-body.d.ts","sourceRoot":"","sources":["../../src/rules/no-blank-customization-body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAkB7E,qDAAqD;AACrD,QAAA,MAAM,4BAA4B,EAAE,iBA4ClC,CAAC;AAEH,eAAe,4BAA4B,CAAC"}
@@ -6,6 +6,8 @@ import { getCopilotFileKind } from "../_internal/copilot-file-kind.js";
6
6
  import { createCopilotRule } from "../_internal/create-copilot-rule.js";
7
7
  import { extractFrontmatter, getMeaningfulMarkdownBody, } from "../_internal/frontmatter.js";
8
8
  import { createMarkdownDocumentListener, reportAtDocumentStart, } from "../_internal/markdown-rule.js";
9
+ import { createRuleDocsUrl } from "../_internal/rule-docs-url.js";
10
+ /** Rule module for `no-blank-customization-body`. */
9
11
  const noBlankCustomizationBodyRule = createCopilotRule({
10
12
  create(context) {
11
13
  return createMarkdownDocumentListener(() => {
@@ -35,6 +37,7 @@ const noBlankCustomizationBodyRule = createCopilotRule({
35
37
  frozen: false,
36
38
  recommended: true,
37
39
  requiresTypeChecking: false,
40
+ url: createRuleDocsUrl("no-blank-customization-body"),
38
41
  },
39
42
  messages: {
40
43
  blankBody: "Copilot customization files should include meaningful Markdown instructions in the document body, not only frontmatter or comments.",
@@ -1 +1 @@
1
- {"version":3,"file":"no-blank-customization-body.js","sourceRoot":"","sources":["../../src/rules/no-blank-customization-body.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EACH,kBAAkB,EAClB,yBAAyB,GAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACH,8BAA8B,EAC9B,qBAAqB,GACxB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,4BAA4B,GAAsB,iBAAiB,CAAC;IACtE,MAAM,CAAC,OAAO;QACV,OAAO,8BAA8B,CAAC,GAAG,EAAE;YACvC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEtD,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,yBAAyB,EAAE,CAAC;gBAC9D,OAAO;YACX,CAAC;YAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAG,WAAW,EAAE,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;YAE9D,IAAI,yBAAyB,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjD,OAAO;YACX,CAAC;YAED,qBAAqB,CAAC,OAAO,EAAE;gBAC3B,SAAS,EAAE,WAAW;aACzB,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IACD,IAAI,EAAE;QACF,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE;YACF,cAAc,EAAE;gBACZ,6BAA6B;gBAC7B,wBAAwB;gBACxB,qBAAqB;aACxB;YACD,WAAW,EACP,+FAA+F;YACnG,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,KAAK;SAC9B;QACD,QAAQ,EAAE;YACN,SAAS,EACL,qIAAqI;SAC5I;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;KAClB;IACD,IAAI,EAAE,6BAA6B;CACtC,CAAC,CAAC;AAEH,eAAe,4BAA4B,CAAC"}
1
+ {"version":3,"file":"no-blank-customization-body.js","sourceRoot":"","sources":["../../src/rules/no-blank-customization-body.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EACH,kBAAkB,EAClB,yBAAyB,GAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACH,8BAA8B,EAC9B,qBAAqB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,qDAAqD;AACrD,MAAM,4BAA4B,GAAsB,iBAAiB,CAAC;IACtE,MAAM,CAAC,OAAO;QACV,OAAO,8BAA8B,CAAC,GAAG,EAAE;YACvC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEtD,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,yBAAyB,EAAE,CAAC;gBAC9D,OAAO;YACX,CAAC;YAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAG,WAAW,EAAE,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;YAE9D,IAAI,yBAAyB,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjD,OAAO;YACX,CAAC;YAED,qBAAqB,CAAC,OAAO,EAAE;gBAC3B,SAAS,EAAE,WAAW;aACzB,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IACD,IAAI,EAAE;QACF,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE;YACF,cAAc,EAAE;gBACZ,6BAA6B;gBAC7B,wBAAwB;gBACxB,qBAAqB;aACxB;YACD,WAAW,EACP,+FAA+F;YACnG,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,KAAK;YAC3B,GAAG,EAAE,iBAAiB,CAAC,6BAA6B,CAAC;SACxD;QACD,QAAQ,EAAE;YACN,SAAS,EACL,qIAAqI;SAC5I;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;KAClB;IACD,IAAI,EAAE,6BAA6B;CACtC,CAAC,CAAC;AAEH,eAAe,4BAA4B,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { CopilotRuleModule } from "../_internal/create-copilot-rule.js";
2
+ /** Rule module for `no-blank-repository-instructions`. */
2
3
  declare const noBlankRepositoryInstructionsRule: CopilotRuleModule;
3
4
  export default noBlankRepositoryInstructionsRule;
4
5
  //# sourceMappingURL=no-blank-repository-instructions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-blank-repository-instructions.d.ts","sourceRoot":"","sources":["../../src/rules/no-blank-repository-instructions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAiB7E,QAAA,MAAM,iCAAiC,EAAE,iBA8CvC,CAAC;AAEH,eAAe,iCAAiC,CAAC"}
1
+ {"version":3,"file":"no-blank-repository-instructions.d.ts","sourceRoot":"","sources":["../../src/rules/no-blank-repository-instructions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAkB7E,0DAA0D;AAC1D,QAAA,MAAM,iCAAiC,EAAE,iBA+CvC,CAAC;AAEH,eAAe,iCAAiC,CAAC"}
@@ -6,6 +6,8 @@ import { getCopilotFileKind } from "../_internal/copilot-file-kind.js";
6
6
  import { createCopilotRule } from "../_internal/create-copilot-rule.js";
7
7
  import { extractFrontmatter, getMeaningfulMarkdownBody, } from "../_internal/frontmatter.js";
8
8
  import { createMarkdownDocumentListener, reportAtDocumentStart, } from "../_internal/markdown-rule.js";
9
+ import { createRuleDocsUrl } from "../_internal/rule-docs-url.js";
10
+ /** Rule module for `no-blank-repository-instructions`. */
9
11
  const noBlankRepositoryInstructionsRule = createCopilotRule({
10
12
  create(context) {
11
13
  return createMarkdownDocumentListener(() => {
@@ -35,6 +37,7 @@ const noBlankRepositoryInstructionsRule = createCopilotRule({
35
37
  frozen: false,
36
38
  recommended: true,
37
39
  requiresTypeChecking: false,
40
+ url: createRuleDocsUrl("no-blank-repository-instructions"),
38
41
  },
39
42
  messages: {
40
43
  blankInstructions: "Repository-wide Copilot instructions should contain actionable Markdown guidance instead of being blank.",
@@ -1 +1 @@
1
- {"version":3,"file":"no-blank-repository-instructions.js","sourceRoot":"","sources":["../../src/rules/no-blank-repository-instructions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EACH,kBAAkB,EAClB,yBAAyB,GAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACH,8BAA8B,EAC9B,qBAAqB,GACxB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,iCAAiC,GAAsB,iBAAiB,CAAC;IAC3E,MAAM,CAAC,OAAO;QACV,OAAO,8BAA8B,CAAC,GAAG,EAAE;YACvC,IACI,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACpC,yBAAyB,EAC3B,CAAC;gBACC,OAAO;YACX,CAAC;YAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,yBAAyB,CAClC,WAAW,EAAE,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAC/C,CAAC;YAEF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClB,OAAO;YACX,CAAC;YAED,qBAAqB,CAAC,OAAO,EAAE;gBAC3B,SAAS,EAAE,mBAAmB;aACjC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IACD,IAAI,EAAE;QACF,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE;YACF,cAAc,EAAE;gBACZ,6BAA6B;gBAC7B,wBAAwB;gBACxB,qBAAqB;aACxB;YACD,WAAW,EACP,4DAA4D;YAChE,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,KAAK;SAC9B;QACD,QAAQ,EAAE;YACN,iBAAiB,EACb,0GAA0G;SACjH;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;KAClB;IACD,IAAI,EAAE,kCAAkC;CAC3C,CAAC,CAAC;AAEH,eAAe,iCAAiC,CAAC"}
1
+ {"version":3,"file":"no-blank-repository-instructions.js","sourceRoot":"","sources":["../../src/rules/no-blank-repository-instructions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EACH,kBAAkB,EAClB,yBAAyB,GAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACH,8BAA8B,EAC9B,qBAAqB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,0DAA0D;AAC1D,MAAM,iCAAiC,GAAsB,iBAAiB,CAAC;IAC3E,MAAM,CAAC,OAAO;QACV,OAAO,8BAA8B,CAAC,GAAG,EAAE;YACvC,IACI,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACpC,yBAAyB,EAC3B,CAAC;gBACC,OAAO;YACX,CAAC;YAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,yBAAyB,CAClC,WAAW,EAAE,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAC/C,CAAC;YAEF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClB,OAAO;YACX,CAAC;YAED,qBAAqB,CAAC,OAAO,EAAE;gBAC3B,SAAS,EAAE,mBAAmB;aACjC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IACD,IAAI,EAAE;QACF,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE;YACF,cAAc,EAAE;gBACZ,6BAA6B;gBAC7B,wBAAwB;gBACxB,qBAAqB;aACxB;YACD,WAAW,EACP,4DAA4D;YAChE,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,KAAK;YAC3B,GAAG,EAAE,iBAAiB,CAAC,kCAAkC,CAAC;SAC7D;QACD,QAAQ,EAAE;YACN,iBAAiB,EACb,0GAA0G;SACjH;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;KAClB;IACD,IAAI,EAAE,kCAAkC;CAC3C,CAAC,CAAC;AAEH,eAAe,iCAAiC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { CopilotRuleModule } from "../_internal/create-copilot-rule.js";
2
+ /** Rule module for `no-blank-skill-body`. */
2
3
  declare const noBlankSkillBodyRule: CopilotRuleModule;
3
4
  export default noBlankSkillBodyRule;
4
5
  //# sourceMappingURL=no-blank-skill-body.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-blank-skill-body.d.ts","sourceRoot":"","sources":["../../src/rules/no-blank-skill-body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAc7E,QAAA,MAAM,oBAAoB,EAAE,iBAwC1B,CAAC;AAEH,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"no-blank-skill-body.d.ts","sourceRoot":"","sources":["../../src/rules/no-blank-skill-body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAe7E,6CAA6C;AAC7C,QAAA,MAAM,oBAAoB,EAAE,iBAyC1B,CAAC;AAEH,eAAe,oBAAoB,CAAC"}
@@ -6,6 +6,8 @@ import { isSkillFilePath } from "../_internal/copilot-file-kind.js";
6
6
  import { createCopilotRule } from "../_internal/create-copilot-rule.js";
7
7
  import { extractFrontmatter } from "../_internal/frontmatter.js";
8
8
  import { createMarkdownDocumentListener, reportAtDocumentStart, } from "../_internal/markdown-rule.js";
9
+ import { createRuleDocsUrl } from "../_internal/rule-docs-url.js";
10
+ /** Rule module for `no-blank-skill-body`. */
9
11
  const noBlankSkillBodyRule = createCopilotRule({
10
12
  create(context) {
11
13
  return createMarkdownDocumentListener(() => {
@@ -34,6 +36,7 @@ const noBlankSkillBodyRule = createCopilotRule({
34
36
  frozen: false,
35
37
  recommended: true,
36
38
  requiresTypeChecking: false,
39
+ url: createRuleDocsUrl("no-blank-skill-body"),
37
40
  },
38
41
  messages: {
39
42
  blankSkillBody: "Copilot skill definition files should include a non-empty Markdown body with instructions, examples, or guidance.",
@@ -1 +1 @@
1
- {"version":3,"file":"no-blank-skill-body.js","sourceRoot":"","sources":["../../src/rules/no-blank-skill-body.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EACH,8BAA8B,EAC9B,qBAAqB,GACxB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,oBAAoB,GAAsB,iBAAiB,CAAC;IAC9D,MAAM,CAAC,OAAO;QACV,OAAO,8BAA8B,CAAC,GAAG,EAAE;YACvC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACrC,OAAO;YACX,CAAC;YAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,WAAW,EAAE,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;YAE1D,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,OAAO;YACX,CAAC;YAED,qBAAqB,CAAC,OAAO,EAAE;gBAC3B,SAAS,EAAE,gBAAgB;aAC9B,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IACD,IAAI,EAAE;QACF,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE;YACF,cAAc,EAAE;gBACZ,6BAA6B;gBAC7B,wBAAwB;gBACxB,qBAAqB;aACxB;YACD,WAAW,EAAE,iDAAiD;YAC9D,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,KAAK;SAC9B;QACD,QAAQ,EAAE;YACN,cAAc,EACV,mHAAmH;SAC1H;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;KAClB;IACD,IAAI,EAAE,qBAAqB;CAC9B,CAAC,CAAC;AAEH,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"no-blank-skill-body.js","sourceRoot":"","sources":["../../src/rules/no-blank-skill-body.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EACH,8BAA8B,EAC9B,qBAAqB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,6CAA6C;AAC7C,MAAM,oBAAoB,GAAsB,iBAAiB,CAAC;IAC9D,MAAM,CAAC,OAAO;QACV,OAAO,8BAA8B,CAAC,GAAG,EAAE;YACvC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACrC,OAAO;YACX,CAAC;YAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,WAAW,EAAE,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;YAE1D,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,OAAO;YACX,CAAC;YAED,qBAAqB,CAAC,OAAO,EAAE;gBAC3B,SAAS,EAAE,gBAAgB;aAC9B,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IACD,IAAI,EAAE;QACF,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE;YACF,cAAc,EAAE;gBACZ,6BAA6B;gBAC7B,wBAAwB;gBACxB,qBAAqB;aACxB;YACD,WAAW,EAAE,iDAAiD;YAC9D,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,KAAK;YAC3B,GAAG,EAAE,iBAAiB,CAAC,qBAAqB,CAAC;SAChD;QACD,QAAQ,EAAE;YACN,cAAc,EACV,mHAAmH;SAC1H;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;KAClB;IACD,IAAI,EAAE,qBAAqB;CAC9B,CAAC,CAAC;AAEH,eAAe,oBAAoB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { CopilotRuleModule } from "../_internal/create-copilot-rule.js";
2
+ /** Rule module for `no-deprecated-agent-infer`. */
2
3
  declare const noDeprecatedAgentInferRule: CopilotRuleModule;
3
4
  export default noDeprecatedAgentInferRule;
4
5
  //# sourceMappingURL=no-deprecated-agent-infer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-deprecated-agent-infer.d.ts","sourceRoot":"","sources":["../../src/rules/no-deprecated-agent-infer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAiB7E,QAAA,MAAM,0BAA0B,EAAE,iBA2ChC,CAAC;AAEH,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"no-deprecated-agent-infer.d.ts","sourceRoot":"","sources":["../../src/rules/no-deprecated-agent-infer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAkB7E,mDAAmD;AACnD,QAAA,MAAM,0BAA0B,EAAE,iBA4ChC,CAAC;AAEH,eAAe,0BAA0B,CAAC"}
@@ -6,6 +6,8 @@ import { isCustomAgentFilePath } from "../_internal/copilot-file-kind.js";
6
6
  import { createCopilotRule } from "../_internal/create-copilot-rule.js";
7
7
  import { extractFrontmatter, hasFrontmatterField, } from "../_internal/frontmatter.js";
8
8
  import { createMarkdownDocumentListener, reportAtDocumentStart, } from "../_internal/markdown-rule.js";
9
+ import { createRuleDocsUrl } from "../_internal/rule-docs-url.js";
10
+ /** Rule module for `no-deprecated-agent-infer`. */
9
11
  const noDeprecatedAgentInferRule = createCopilotRule({
10
12
  create(context) {
11
13
  return createMarkdownDocumentListener(() => {
@@ -34,6 +36,7 @@ const noDeprecatedAgentInferRule = createCopilotRule({
34
36
  frozen: false,
35
37
  recommended: true,
36
38
  requiresTypeChecking: false,
39
+ url: createRuleDocsUrl("no-deprecated-agent-infer"),
37
40
  },
38
41
  messages: {
39
42
  deprecatedInfer: "Copilot custom agent files should replace deprecated `infer` frontmatter with `user-invocable` and/or `disable-model-invocation`.",
@@ -1 +1 @@
1
- {"version":3,"file":"no-deprecated-agent-infer.js","sourceRoot":"","sources":["../../src/rules/no-deprecated-agent-infer.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EACH,kBAAkB,EAClB,mBAAmB,GACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACH,8BAA8B,EAC9B,qBAAqB,GACxB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,0BAA0B,GAAsB,iBAAiB,CAAC;IACpE,MAAM,CAAC,OAAO;QACV,OAAO,8BAA8B,CAAC,GAAG,EAAE;YACvC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,OAAO;YACX,CAAC;YAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAEhE,IACI,WAAW,KAAK,IAAI;gBACpB,CAAC,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,EAC5C,CAAC;gBACC,OAAO;YACX,CAAC;YAED,qBAAqB,CAAC,OAAO,EAAE;gBAC3B,SAAS,EAAE,iBAAiB;aAC/B,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IACD,IAAI,EAAE;QACF,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE;YACF,cAAc,EAAE;gBACZ,6BAA6B;gBAC7B,wBAAwB;gBACxB,qBAAqB;aACxB;YACD,WAAW,EACP,wEAAwE;YAC5E,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,KAAK;SAC9B;QACD,QAAQ,EAAE;YACN,eAAe,EACX,mIAAmI;SAC1I;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;KAClB;IACD,IAAI,EAAE,2BAA2B;CACpC,CAAC,CAAC;AAEH,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"no-deprecated-agent-infer.js","sourceRoot":"","sources":["../../src/rules/no-deprecated-agent-infer.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EACH,kBAAkB,EAClB,mBAAmB,GACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACH,8BAA8B,EAC9B,qBAAqB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,mDAAmD;AACnD,MAAM,0BAA0B,GAAsB,iBAAiB,CAAC;IACpE,MAAM,CAAC,OAAO;QACV,OAAO,8BAA8B,CAAC,GAAG,EAAE;YACvC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,OAAO;YACX,CAAC;YAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAEhE,IACI,WAAW,KAAK,IAAI;gBACpB,CAAC,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,EAC5C,CAAC;gBACC,OAAO;YACX,CAAC;YAED,qBAAqB,CAAC,OAAO,EAAE;gBAC3B,SAAS,EAAE,iBAAiB;aAC/B,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IACD,IAAI,EAAE;QACF,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE;YACF,cAAc,EAAE;gBACZ,6BAA6B;gBAC7B,wBAAwB;gBACxB,qBAAqB;aACxB;YACD,WAAW,EACP,wEAAwE;YAC5E,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,KAAK;YAC3B,GAAG,EAAE,iBAAiB,CAAC,2BAA2B,CAAC;SACtD;QACD,QAAQ,EAAE;YACN,eAAe,EACX,mIAAmI;SAC1I;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;KAClB;IACD,IAAI,EAAE,2BAA2B;CACpC,CAAC,CAAC;AAEH,eAAe,0BAA0B,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { CopilotRuleModule } from "../_internal/create-copilot-rule.js";
2
+ /** Rule module for `no-duplicate-agent-names`. */
2
3
  declare const noDuplicateAgentNamesRule: CopilotRuleModule;
3
4
  export default noDuplicateAgentNamesRule;
4
5
  //# sourceMappingURL=no-duplicate-agent-names.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-duplicate-agent-names.d.ts","sourceRoot":"","sources":["../../src/rules/no-duplicate-agent-names.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAwB7E,QAAA,MAAM,yBAAyB,EAAE,iBAoF/B,CAAC;AAEH,eAAe,yBAAyB,CAAC"}
1
+ {"version":3,"file":"no-duplicate-agent-names.d.ts","sourceRoot":"","sources":["../../src/rules/no-duplicate-agent-names.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAyB7E,kDAAkD;AAClD,QAAA,MAAM,yBAAyB,EAAE,iBAsF/B,CAAC;AAEH,eAAe,yBAAyB,CAAC"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import * as fs from "node:fs";
6
6
  import * as path from "node:path";
7
+ import { arrayJoin, isDefined } from "ts-extras";
7
8
  import { getAgentName, normalizeNameForComparison, } from "../_internal/copilot-customization-names.js";
8
9
  import { findRepositoryRoot, isCustomAgentFilePath, } from "../_internal/copilot-file-kind.js";
9
10
  import { createCopilotRule } from "../_internal/create-copilot-rule.js";
@@ -11,7 +12,9 @@ import { collectDuplicateNameGroups } from "../_internal/duplicate-names.js";
11
12
  import { listFilesRecursively } from "../_internal/file-system.js";
12
13
  import { extractFrontmatter } from "../_internal/frontmatter.js";
13
14
  import { createMarkdownDocumentListener, reportAtDocumentStart, } from "../_internal/markdown-rule.js";
15
+ import { createRuleDocsUrl } from "../_internal/rule-docs-url.js";
14
16
  const normalizeRelativeFilePath = (repositoryRoot, filePath) => path.relative(repositoryRoot, filePath).replaceAll("\\", "/");
17
+ /** Rule module for `no-duplicate-agent-names`. */
15
18
  const noDuplicateAgentNamesRule = createCopilotRule({
16
19
  create(context) {
17
20
  return createMarkdownDocumentListener(() => {
@@ -32,14 +35,12 @@ const noDuplicateAgentNamesRule = createCopilotRule({
32
35
  }), normalizeNameForComparison);
33
36
  const currentAgentName = getAgentName(context.filename, extractFrontmatter(context.sourceCode.text));
34
37
  const duplicateGroup = duplicateGroups.get(normalizeNameForComparison(currentAgentName));
35
- if (duplicateGroup === undefined) {
38
+ if (!isDefined(duplicateGroup)) {
36
39
  return;
37
40
  }
38
41
  reportAtDocumentStart(context, {
39
42
  data: {
40
- files: duplicateGroup
41
- .map((entry) => normalizeRelativeFilePath(repositoryRoot, entry.filePath))
42
- .join(", "),
43
+ files: arrayJoin(duplicateGroup.map((entry) => normalizeRelativeFilePath(repositoryRoot, entry.filePath)), ", "),
43
44
  name: currentAgentName,
44
45
  },
45
46
  messageId: "duplicateAgentName",
@@ -58,6 +59,7 @@ const noDuplicateAgentNamesRule = createCopilotRule({
58
59
  frozen: false,
59
60
  recommended: true,
60
61
  requiresTypeChecking: false,
62
+ url: createRuleDocsUrl("no-duplicate-agent-names"),
61
63
  },
62
64
  messages: {
63
65
  duplicateAgentName: "Copilot custom-agent name `{{name}}` is duplicated across agent files: {{files}}.",
@@ -1 +1 @@
1
- {"version":3,"file":"no-duplicate-agent-names.js","sourceRoot":"","sources":["../../src/rules/no-duplicate-agent-names.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"no-duplicate-agent-names.js","sourceRoot":"","sources":["../../src/rules/no-duplicate-agent-names.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { CopilotRuleModule } from "../_internal/create-copilot-rule.js";
2
+ /** Rule module for `no-duplicate-prompt-names`. */
2
3
  declare const noDuplicatePromptNamesRule: CopilotRuleModule;
3
4
  export default noDuplicatePromptNamesRule;
4
5
  //# sourceMappingURL=no-duplicate-prompt-names.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-duplicate-prompt-names.d.ts","sourceRoot":"","sources":["../../src/rules/no-duplicate-prompt-names.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAqB7E,QAAA,MAAM,0BAA0B,EAAE,iBAoFhC,CAAC;AAEH,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"no-duplicate-prompt-names.d.ts","sourceRoot":"","sources":["../../src/rules/no-duplicate-prompt-names.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAsB7E,mDAAmD;AACnD,QAAA,MAAM,0BAA0B,EAAE,iBAsFhC,CAAC;AAEH,eAAe,0BAA0B,CAAC"}
@@ -4,6 +4,7 @@ import * as fs from "node:fs";
4
4
  * ESLint rule implementation for `no-duplicate-prompt-names`.
5
5
  */
6
6
  import * as path from "node:path";
7
+ import { arrayJoin, isDefined } from "ts-extras";
7
8
  import { getPromptName, normalizeNameForComparison, } from "../_internal/copilot-customization-names.js";
8
9
  import { findRepositoryRoot } from "../_internal/copilot-file-kind.js";
9
10
  import { createCopilotRule } from "../_internal/create-copilot-rule.js";
@@ -11,7 +12,9 @@ import { collectDuplicateNameGroups } from "../_internal/duplicate-names.js";
11
12
  import { listFilesRecursively } from "../_internal/file-system.js";
12
13
  import { extractFrontmatter } from "../_internal/frontmatter.js";
13
14
  import { createMarkdownDocumentListener, reportAtDocumentStart, } from "../_internal/markdown-rule.js";
15
+ import { createRuleDocsUrl } from "../_internal/rule-docs-url.js";
14
16
  const normalizeRelativeFilePath = (repositoryRoot, filePath) => path.relative(repositoryRoot, filePath).replaceAll("\\", "/");
17
+ /** Rule module for `no-duplicate-prompt-names`. */
15
18
  const noDuplicatePromptNamesRule = createCopilotRule({
16
19
  create(context) {
17
20
  return createMarkdownDocumentListener(() => {
@@ -32,14 +35,12 @@ const noDuplicatePromptNamesRule = createCopilotRule({
32
35
  }), normalizeNameForComparison);
33
36
  const currentPromptName = getPromptName(context.filename, extractFrontmatter(context.sourceCode.text));
34
37
  const duplicateGroup = duplicateGroups.get(normalizeNameForComparison(currentPromptName));
35
- if (duplicateGroup === undefined) {
38
+ if (!isDefined(duplicateGroup)) {
36
39
  return;
37
40
  }
38
41
  reportAtDocumentStart(context, {
39
42
  data: {
40
- files: duplicateGroup
41
- .map((entry) => normalizeRelativeFilePath(repositoryRoot, entry.filePath))
42
- .join(", "),
43
+ files: arrayJoin(duplicateGroup.map((entry) => normalizeRelativeFilePath(repositoryRoot, entry.filePath)), ", "),
43
44
  name: currentPromptName,
44
45
  },
45
46
  messageId: "duplicatePromptName",
@@ -58,6 +59,7 @@ const noDuplicatePromptNamesRule = createCopilotRule({
58
59
  frozen: false,
59
60
  recommended: true,
60
61
  requiresTypeChecking: false,
62
+ url: createRuleDocsUrl("no-duplicate-prompt-names"),
61
63
  },
62
64
  messages: {
63
65
  duplicatePromptName: "Copilot prompt name `{{name}}` is duplicated across prompt files: {{files}}.",
@@ -1 +1 @@
1
- {"version":3,"file":"no-duplicate-prompt-names.js","sourceRoot":"","sources":["../../src/rules/no-duplicate-prompt-names.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"no-duplicate-prompt-names.js","sourceRoot":"","sources":["../../src/rules/no-duplicate-prompt-names.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { CopilotRuleModule } from "../_internal/create-copilot-rule.js";
2
+ /** Rule module for `no-duplicate-skill-names`. */
2
3
  declare const noDuplicateSkillNamesRule: CopilotRuleModule;
3
4
  export default noDuplicateSkillNamesRule;
4
5
  //# sourceMappingURL=no-duplicate-skill-names.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-duplicate-skill-names.d.ts","sourceRoot":"","sources":["../../src/rules/no-duplicate-skill-names.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAwB7E,QAAA,MAAM,yBAAyB,EAAE,iBAqF/B,CAAC;AAEH,eAAe,yBAAyB,CAAC"}
1
+ {"version":3,"file":"no-duplicate-skill-names.d.ts","sourceRoot":"","sources":["../../src/rules/no-duplicate-skill-names.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAyB7E,kDAAkD;AAClD,QAAA,MAAM,yBAAyB,EAAE,iBAuF/B,CAAC;AAEH,eAAe,yBAAyB,CAAC"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import * as fs from "node:fs";
6
6
  import * as path from "node:path";
7
+ import { arrayJoin, isDefined } from "ts-extras";
7
8
  import { getSkillName, normalizeNameForComparison, } from "../_internal/copilot-customization-names.js";
8
9
  import { findRepositoryRoot, isSkillFilePath, } from "../_internal/copilot-file-kind.js";
9
10
  import { createCopilotRule } from "../_internal/create-copilot-rule.js";
@@ -11,7 +12,9 @@ import { collectDuplicateNameGroups } from "../_internal/duplicate-names.js";
11
12
  import { listFilesRecursively } from "../_internal/file-system.js";
12
13
  import { extractFrontmatter } from "../_internal/frontmatter.js";
13
14
  import { createMarkdownDocumentListener, reportAtDocumentStart, } from "../_internal/markdown-rule.js";
15
+ import { createRuleDocsUrl } from "../_internal/rule-docs-url.js";
14
16
  const normalizeRelativeFilePath = (repositoryRoot, filePath) => path.relative(repositoryRoot, filePath).replaceAll("\\", "/");
17
+ /** Rule module for `no-duplicate-skill-names`. */
15
18
  const noDuplicateSkillNamesRule = createCopilotRule({
16
19
  create(context) {
17
20
  return createMarkdownDocumentListener(() => {
@@ -34,14 +37,12 @@ const noDuplicateSkillNamesRule = createCopilotRule({
34
37
  }), normalizeNameForComparison);
35
38
  const currentSkillName = getSkillName(context.filename, extractFrontmatter(context.sourceCode.text));
36
39
  const duplicateGroup = duplicateGroups.get(normalizeNameForComparison(currentSkillName));
37
- if (duplicateGroup === undefined) {
40
+ if (!isDefined(duplicateGroup)) {
38
41
  return;
39
42
  }
40
43
  reportAtDocumentStart(context, {
41
44
  data: {
42
- files: duplicateGroup
43
- .map((entry) => normalizeRelativeFilePath(repositoryRoot, entry.filePath))
44
- .join(", "),
45
+ files: arrayJoin(duplicateGroup.map((entry) => normalizeRelativeFilePath(repositoryRoot, entry.filePath)), ", "),
45
46
  name: currentSkillName,
46
47
  },
47
48
  messageId: "duplicateSkillName",
@@ -60,6 +61,7 @@ const noDuplicateSkillNamesRule = createCopilotRule({
60
61
  frozen: false,
61
62
  recommended: true,
62
63
  requiresTypeChecking: false,
64
+ url: createRuleDocsUrl("no-duplicate-skill-names"),
63
65
  },
64
66
  messages: {
65
67
  duplicateSkillName: "Copilot skill name `{{name}}` is duplicated across skill files: {{files}}.",
@@ -1 +1 @@
1
- {"version":3,"file":"no-duplicate-skill-names.js","sourceRoot":"","sources":["../../src/rules/no-duplicate-skill-names.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"no-duplicate-skill-names.js","sourceRoot":"","sources":["../../src/rules/no-duplicate-skill-names.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { CopilotRuleModule } from "../_internal/create-copilot-rule.js";
2
+ /** Rule module for `no-duplicate-slash-command-names`. */
2
3
  declare const noDuplicateSlashCommandNamesRule: CopilotRuleModule;
3
4
  export default noDuplicateSlashCommandNamesRule;
4
5
  //# sourceMappingURL=no-duplicate-slash-command-names.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-duplicate-slash-command-names.d.ts","sourceRoot":"","sources":["../../src/rules/no-duplicate-slash-command-names.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AA4B7E,QAAA,MAAM,gCAAgC,EAAE,iBAyFtC,CAAC;AAEH,eAAe,gCAAgC,CAAC"}
1
+ {"version":3,"file":"no-duplicate-slash-command-names.d.ts","sourceRoot":"","sources":["../../src/rules/no-duplicate-slash-command-names.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AA6B7E,0DAA0D;AAC1D,QAAA,MAAM,gCAAgC,EAAE,iBA2FtC,CAAC;AAEH,eAAe,gCAAgC,CAAC"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import * as fs from "node:fs";
6
6
  import * as path from "node:path";
7
+ import { arrayJoin, isDefined } from "ts-extras";
7
8
  import { getPromptName, getSkillName, normalizeNameForComparison, } from "../_internal/copilot-customization-names.js";
8
9
  import { findRepositoryRoot, isSkillFilePath, } from "../_internal/copilot-file-kind.js";
9
10
  import { createCopilotRule } from "../_internal/create-copilot-rule.js";
@@ -11,8 +12,10 @@ import { collectDuplicateNameGroups } from "../_internal/duplicate-names.js";
11
12
  import { listFilesRecursively } from "../_internal/file-system.js";
12
13
  import { extractFrontmatter } from "../_internal/frontmatter.js";
13
14
  import { createMarkdownDocumentListener, reportAtDocumentStart, } from "../_internal/markdown-rule.js";
15
+ import { createRuleDocsUrl } from "../_internal/rule-docs-url.js";
14
16
  const isPromptOrSkillCommandFile = (filePath) => filePath.endsWith(".prompt.md") || isSkillFilePath(filePath);
15
17
  const normalizeRelativeFilePath = (repositoryRoot, filePath) => path.relative(repositoryRoot, filePath).replaceAll("\\", "/");
18
+ /** Rule module for `no-duplicate-slash-command-names`. */
16
19
  const noDuplicateSlashCommandNamesRule = createCopilotRule({
17
20
  create(context) {
18
21
  return createMarkdownDocumentListener(() => {
@@ -42,14 +45,12 @@ const noDuplicateSlashCommandNamesRule = createCopilotRule({
42
45
  ? getPromptName(context.filename, frontmatter)
43
46
  : getSkillName(context.filename, frontmatter);
44
47
  const duplicateGroup = duplicateGroups.get(normalizeNameForComparison(currentCommandName));
45
- if (duplicateGroup === undefined) {
48
+ if (!isDefined(duplicateGroup)) {
46
49
  return;
47
50
  }
48
51
  reportAtDocumentStart(context, {
49
52
  data: {
50
- files: duplicateGroup
51
- .map((entry) => normalizeRelativeFilePath(repositoryRoot, entry.filePath))
52
- .join(", "),
53
+ files: arrayJoin(duplicateGroup.map((entry) => normalizeRelativeFilePath(repositoryRoot, entry.filePath)), ", "),
53
54
  name: currentCommandName,
54
55
  },
55
56
  messageId: "duplicateSlashCommandName",
@@ -68,6 +69,7 @@ const noDuplicateSlashCommandNamesRule = createCopilotRule({
68
69
  frozen: false,
69
70
  recommended: true,
70
71
  requiresTypeChecking: false,
72
+ url: createRuleDocsUrl("no-duplicate-slash-command-names"),
71
73
  },
72
74
  messages: {
73
75
  duplicateSlashCommandName: "Slash command name `{{name}}` is duplicated across prompt or skill files: {{files}}.",
@@ -1 +1 @@
1
- {"version":3,"file":"no-duplicate-slash-command-names.js","sourceRoot":"","sources":["../../src/rules/no-duplicate-slash-command-names.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"no-duplicate-slash-command-names.js","sourceRoot":"","sources":["../../src/rules/no-duplicate-slash-command-names.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { CopilotRuleModule } from "../_internal/create-copilot-rule.js";
2
+ /** Rule module for `no-empty-repository-hook-arrays`. */
2
3
  declare const noEmptyRepositoryHookArraysRule: CopilotRuleModule;
3
4
  export default noEmptyRepositoryHookArraysRule;
4
5
  //# sourceMappingURL=no-empty-repository-hook-arrays.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-empty-repository-hook-arrays.d.ts","sourceRoot":"","sources":["../../src/rules/no-empty-repository-hook-arrays.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAe7E,QAAA,MAAM,+BAA+B,EAAE,iBA6CrC,CAAC;AAEH,eAAe,+BAA+B,CAAC"}
1
+ {"version":3,"file":"no-empty-repository-hook-arrays.d.ts","sourceRoot":"","sources":["../../src/rules/no-empty-repository-hook-arrays.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAgB7E,yDAAyD;AACzD,QAAA,MAAM,+BAA+B,EAAE,iBA8CrC,CAAC;AAEH,eAAe,+BAA+B,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { arrayFirst, isDefined, isEmpty } from "ts-extras";
1
2
  /**
2
3
  * @packageDocumentation
3
4
  * ESLint rule implementation for `no-empty-repository-hook-arrays`.
@@ -6,6 +7,8 @@ import { isRepositoryHookFilePath } from "../_internal/copilot-file-kind.js";
6
7
  import { createCopilotRule } from "../_internal/create-copilot-rule.js";
7
8
  import { reportAtDocumentStart } from "../_internal/markdown-rule.js";
8
9
  import { getRepositoryHookEventEntries, isJsonArray, parseJsonText, } from "../_internal/repository-hooks-json.js";
10
+ import { createRuleDocsUrl } from "../_internal/rule-docs-url.js";
11
+ /** Rule module for `no-empty-repository-hook-arrays`. */
9
12
  const noEmptyRepositoryHookArraysRule = createCopilotRule({
10
13
  create(context) {
11
14
  return {
@@ -14,13 +17,13 @@ const noEmptyRepositoryHookArraysRule = createCopilotRule({
14
17
  return;
15
18
  }
16
19
  const root = parseJsonText(context.sourceCode.text);
17
- const emptyEntry = getRepositoryHookEventEntries(root).find(([, eventValue]) => isJsonArray(eventValue) && eventValue.length === 0);
18
- if (emptyEntry === undefined) {
20
+ const emptyEntry = getRepositoryHookEventEntries(root).find(([, eventValue]) => isJsonArray(eventValue) && isEmpty(eventValue));
21
+ if (!isDefined(emptyEntry)) {
19
22
  return;
20
23
  }
21
24
  reportAtDocumentStart(context, {
22
25
  data: {
23
- eventName: emptyEntry[0],
26
+ eventName: arrayFirst(emptyEntry),
24
27
  },
25
28
  messageId: "emptyRepositoryHookArray",
26
29
  });
@@ -35,6 +38,7 @@ const noEmptyRepositoryHookArraysRule = createCopilotRule({
35
38
  frozen: false,
36
39
  recommended: false,
37
40
  requiresTypeChecking: false,
41
+ url: createRuleDocsUrl("no-empty-repository-hook-arrays"),
38
42
  },
39
43
  messages: {
40
44
  emptyRepositoryHookArray: "Repository hook event `{{eventName}}` should not be declared with an empty array.",