eslint-plugin-copilot 1.0.7 → 1.1.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 (321) hide show
  1. package/README.md +74 -71
  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 +4 -0
  7. package/dist/_internal/copilot-file-kind.d.ts.map +1 -1
  8. package/dist/_internal/copilot-file-kind.js +20 -4
  9. package/dist/_internal/copilot-file-kind.js.map +1 -1
  10. package/dist/_internal/create-copilot-rule.d.ts +4 -2
  11. package/dist/_internal/create-copilot-rule.d.ts.map +1 -1
  12. package/dist/_internal/create-copilot-rule.js.map +1 -1
  13. package/dist/_internal/file-system.d.ts.map +1 -1
  14. package/dist/_internal/file-system.js +31 -18
  15. package/dist/_internal/file-system.js.map +1 -1
  16. package/dist/_internal/frontmatter.d.ts +1 -1
  17. package/dist/_internal/frontmatter.d.ts.map +1 -1
  18. package/dist/_internal/frontmatter.js +151 -119
  19. package/dist/_internal/frontmatter.js.map +1 -1
  20. package/dist/_internal/markdown-links.d.ts.map +1 -1
  21. package/dist/_internal/markdown-links.js +3 -1
  22. package/dist/_internal/markdown-links.js.map +1 -1
  23. package/dist/_internal/markdown-rule.d.ts +2 -1
  24. package/dist/_internal/markdown-rule.d.ts.map +1 -1
  25. package/dist/_internal/markdown-rule.js.map +1 -1
  26. package/dist/_internal/repository-hooks-json.d.ts +5 -2
  27. package/dist/_internal/repository-hooks-json.d.ts.map +1 -1
  28. package/dist/_internal/repository-hooks-json.js +7 -6
  29. package/dist/_internal/repository-hooks-json.js.map +1 -1
  30. package/dist/_internal/rule-catalog.d.ts.map +1 -1
  31. package/dist/_internal/rule-catalog.js +2 -3
  32. package/dist/_internal/rule-catalog.js.map +1 -1
  33. package/dist/plugin.cjs +615 -425
  34. package/dist/plugin.cjs.map +4 -4
  35. package/dist/plugin.d.cts +2 -1
  36. package/dist/plugin.d.ts +2 -1
  37. package/dist/plugin.d.ts.map +1 -1
  38. package/dist/plugin.js +5 -3
  39. package/dist/plugin.js.map +1 -1
  40. package/dist/rules/no-blank-customization-body.d.ts +1 -0
  41. package/dist/rules/no-blank-customization-body.d.ts.map +1 -1
  42. package/dist/rules/no-blank-customization-body.js +3 -0
  43. package/dist/rules/no-blank-customization-body.js.map +1 -1
  44. package/dist/rules/no-blank-repository-instructions.d.ts +1 -0
  45. package/dist/rules/no-blank-repository-instructions.d.ts.map +1 -1
  46. package/dist/rules/no-blank-repository-instructions.js +3 -0
  47. package/dist/rules/no-blank-repository-instructions.js.map +1 -1
  48. package/dist/rules/no-blank-skill-body.d.ts +1 -0
  49. package/dist/rules/no-blank-skill-body.d.ts.map +1 -1
  50. package/dist/rules/no-blank-skill-body.js +3 -0
  51. package/dist/rules/no-blank-skill-body.js.map +1 -1
  52. package/dist/rules/no-deprecated-agent-infer.d.ts +1 -0
  53. package/dist/rules/no-deprecated-agent-infer.d.ts.map +1 -1
  54. package/dist/rules/no-deprecated-agent-infer.js +3 -0
  55. package/dist/rules/no-deprecated-agent-infer.js.map +1 -1
  56. package/dist/rules/no-duplicate-agent-names.d.ts +1 -0
  57. package/dist/rules/no-duplicate-agent-names.d.ts.map +1 -1
  58. package/dist/rules/no-duplicate-agent-names.js +6 -4
  59. package/dist/rules/no-duplicate-agent-names.js.map +1 -1
  60. package/dist/rules/no-duplicate-prompt-names.d.ts +1 -0
  61. package/dist/rules/no-duplicate-prompt-names.d.ts.map +1 -1
  62. package/dist/rules/no-duplicate-prompt-names.js +6 -4
  63. package/dist/rules/no-duplicate-prompt-names.js.map +1 -1
  64. package/dist/rules/no-duplicate-skill-names.d.ts +1 -0
  65. package/dist/rules/no-duplicate-skill-names.d.ts.map +1 -1
  66. package/dist/rules/no-duplicate-skill-names.js +6 -4
  67. package/dist/rules/no-duplicate-skill-names.js.map +1 -1
  68. package/dist/rules/no-duplicate-slash-command-names.d.ts +1 -0
  69. package/dist/rules/no-duplicate-slash-command-names.d.ts.map +1 -1
  70. package/dist/rules/no-duplicate-slash-command-names.js +6 -4
  71. package/dist/rules/no-duplicate-slash-command-names.js.map +1 -1
  72. package/dist/rules/no-empty-repository-hook-arrays.d.ts +1 -0
  73. package/dist/rules/no-empty-repository-hook-arrays.d.ts.map +1 -1
  74. package/dist/rules/no-empty-repository-hook-arrays.js +7 -3
  75. package/dist/rules/no-empty-repository-hook-arrays.js.map +1 -1
  76. package/dist/rules/no-legacy-chatmode-files.d.ts +1 -0
  77. package/dist/rules/no-legacy-chatmode-files.d.ts.map +1 -1
  78. package/dist/rules/no-legacy-chatmode-files.js +3 -0
  79. package/dist/rules/no-legacy-chatmode-files.js.map +1 -1
  80. package/dist/rules/prefer-custom-instructions-under-code-review-limit.d.ts +1 -0
  81. package/dist/rules/prefer-custom-instructions-under-code-review-limit.d.ts.map +1 -1
  82. package/dist/rules/prefer-custom-instructions-under-code-review-limit.js +3 -0
  83. package/dist/rules/prefer-custom-instructions-under-code-review-limit.js.map +1 -1
  84. package/dist/rules/prefer-fast-repository-hooks.d.ts +1 -0
  85. package/dist/rules/prefer-fast-repository-hooks.d.ts.map +1 -1
  86. package/dist/rules/prefer-fast-repository-hooks.js +5 -1
  87. package/dist/rules/prefer-fast-repository-hooks.js.map +1 -1
  88. package/dist/rules/prefer-qualified-tools.d.ts +1 -0
  89. package/dist/rules/prefer-qualified-tools.d.ts.map +1 -1
  90. package/dist/rules/prefer-qualified-tools.js +8 -3
  91. package/dist/rules/prefer-qualified-tools.js.map +1 -1
  92. package/dist/rules/require-agent-tool-for-subagents.d.ts +1 -0
  93. package/dist/rules/require-agent-tool-for-subagents.d.ts.map +1 -1
  94. package/dist/rules/require-agent-tool-for-subagents.js +6 -2
  95. package/dist/rules/require-agent-tool-for-subagents.js.map +1 -1
  96. package/dist/rules/require-agents-md-for-cross-surface-agent-instructions.d.ts +1 -0
  97. package/dist/rules/require-agents-md-for-cross-surface-agent-instructions.d.ts.map +1 -1
  98. package/dist/rules/require-agents-md-for-cross-surface-agent-instructions.js +3 -0
  99. package/dist/rules/require-agents-md-for-cross-surface-agent-instructions.js.map +1 -1
  100. package/dist/rules/require-chatmode-file-metadata.d.ts +1 -0
  101. package/dist/rules/require-chatmode-file-metadata.d.ts.map +1 -1
  102. package/dist/rules/require-chatmode-file-metadata.js +5 -1
  103. package/dist/rules/require-chatmode-file-metadata.js.map +1 -1
  104. package/dist/rules/require-existing-agent-hook-cwd.d.ts +1 -0
  105. package/dist/rules/require-existing-agent-hook-cwd.d.ts.map +1 -1
  106. package/dist/rules/require-existing-agent-hook-cwd.js +6 -2
  107. package/dist/rules/require-existing-agent-hook-cwd.js.map +1 -1
  108. package/dist/rules/require-existing-agent-mcp-servers.d.ts +1 -0
  109. package/dist/rules/require-existing-agent-mcp-servers.d.ts.map +1 -1
  110. package/dist/rules/require-existing-agent-mcp-servers.js +6 -2
  111. package/dist/rules/require-existing-agent-mcp-servers.js.map +1 -1
  112. package/dist/rules/require-existing-relative-agent-links.d.ts +1 -0
  113. package/dist/rules/require-existing-relative-agent-links.d.ts.map +1 -1
  114. package/dist/rules/require-existing-relative-agent-links.js +3 -0
  115. package/dist/rules/require-existing-relative-agent-links.js.map +1 -1
  116. package/dist/rules/require-existing-relative-instructions-links.d.ts +1 -0
  117. package/dist/rules/require-existing-relative-instructions-links.d.ts.map +1 -1
  118. package/dist/rules/require-existing-relative-instructions-links.js +3 -0
  119. package/dist/rules/require-existing-relative-instructions-links.js.map +1 -1
  120. package/dist/rules/require-existing-relative-prompt-links.d.ts +1 -0
  121. package/dist/rules/require-existing-relative-prompt-links.d.ts.map +1 -1
  122. package/dist/rules/require-existing-relative-prompt-links.js +3 -0
  123. package/dist/rules/require-existing-relative-prompt-links.js.map +1 -1
  124. package/dist/rules/require-existing-relative-skill-links.d.ts +1 -0
  125. package/dist/rules/require-existing-relative-skill-links.d.ts.map +1 -1
  126. package/dist/rules/require-existing-relative-skill-links.js +3 -0
  127. package/dist/rules/require-existing-relative-skill-links.js.map +1 -1
  128. package/dist/rules/require-existing-repository-hook-cwd.d.ts +1 -0
  129. package/dist/rules/require-existing-repository-hook-cwd.d.ts.map +1 -1
  130. package/dist/rules/require-existing-repository-hook-cwd.js +5 -1
  131. package/dist/rules/require-existing-repository-hook-cwd.js.map +1 -1
  132. package/dist/rules/require-github-copilot-target-for-mcp-servers.d.ts +1 -0
  133. package/dist/rules/require-github-copilot-target-for-mcp-servers.d.ts.map +1 -1
  134. package/dist/rules/require-github-copilot-target-for-mcp-servers.js +5 -1
  135. package/dist/rules/require-github-copilot-target-for-mcp-servers.js.map +1 -1
  136. package/dist/rules/require-instructions-apply-to.d.ts +1 -0
  137. package/dist/rules/require-instructions-apply-to.d.ts.map +1 -1
  138. package/dist/rules/require-instructions-apply-to.js +5 -1
  139. package/dist/rules/require-instructions-apply-to.js.map +1 -1
  140. package/dist/rules/require-json-agent-mcp-servers.d.ts +1 -0
  141. package/dist/rules/require-json-agent-mcp-servers.d.ts.map +1 -1
  142. package/dist/rules/require-json-agent-mcp-servers.js +6 -2
  143. package/dist/rules/require-json-agent-mcp-servers.js.map +1 -1
  144. package/dist/rules/require-prompt-file-metadata.d.ts +1 -0
  145. package/dist/rules/require-prompt-file-metadata.d.ts.map +1 -1
  146. package/dist/rules/require-prompt-file-metadata.js +43 -32
  147. package/dist/rules/require-prompt-file-metadata.js.map +1 -1
  148. package/dist/rules/require-qualified-agent-handoff-models.d.ts +1 -0
  149. package/dist/rules/require-qualified-agent-handoff-models.d.ts.map +1 -1
  150. package/dist/rules/require-qualified-agent-handoff-models.js +6 -2
  151. package/dist/rules/require-qualified-agent-handoff-models.js.map +1 -1
  152. package/dist/rules/require-relative-agent-hook-cwd.d.ts +1 -0
  153. package/dist/rules/require-relative-agent-hook-cwd.d.ts.map +1 -1
  154. package/dist/rules/require-relative-agent-hook-cwd.js +6 -2
  155. package/dist/rules/require-relative-agent-hook-cwd.js.map +1 -1
  156. package/dist/rules/require-relative-agent-links.d.ts +1 -0
  157. package/dist/rules/require-relative-agent-links.d.ts.map +1 -1
  158. package/dist/rules/require-relative-agent-links.js +3 -0
  159. package/dist/rules/require-relative-agent-links.js.map +1 -1
  160. package/dist/rules/require-relative-instructions-links.d.ts +1 -0
  161. package/dist/rules/require-relative-instructions-links.d.ts.map +1 -1
  162. package/dist/rules/require-relative-instructions-links.js +3 -0
  163. package/dist/rules/require-relative-instructions-links.js.map +1 -1
  164. package/dist/rules/require-relative-prompt-links.d.ts +1 -0
  165. package/dist/rules/require-relative-prompt-links.d.ts.map +1 -1
  166. package/dist/rules/require-relative-prompt-links.js +3 -0
  167. package/dist/rules/require-relative-prompt-links.js.map +1 -1
  168. package/dist/rules/require-relative-repository-hook-cwd.d.ts +1 -0
  169. package/dist/rules/require-relative-repository-hook-cwd.d.ts.map +1 -1
  170. package/dist/rules/require-relative-repository-hook-cwd.js +5 -1
  171. package/dist/rules/require-relative-repository-hook-cwd.js.map +1 -1
  172. package/dist/rules/require-relative-skill-links.d.ts +1 -0
  173. package/dist/rules/require-relative-skill-links.d.ts.map +1 -1
  174. package/dist/rules/require-relative-skill-links.js +3 -0
  175. package/dist/rules/require-relative-skill-links.js.map +1 -1
  176. package/dist/rules/require-repository-hook-arrays.d.ts +1 -0
  177. package/dist/rules/require-repository-hook-arrays.d.ts.map +1 -1
  178. package/dist/rules/require-repository-hook-arrays.js +7 -3
  179. package/dist/rules/require-repository-hook-arrays.js.map +1 -1
  180. package/dist/rules/require-repository-hook-command-shell.d.ts +1 -0
  181. package/dist/rules/require-repository-hook-command-shell.d.ts.map +1 -1
  182. package/dist/rules/require-repository-hook-command-shell.js +5 -1
  183. package/dist/rules/require-repository-hook-command-shell.js.map +1 -1
  184. package/dist/rules/require-repository-hooks-object.d.ts +1 -0
  185. package/dist/rules/require-repository-hooks-object.d.ts.map +1 -1
  186. package/dist/rules/require-repository-hooks-object.js +3 -0
  187. package/dist/rules/require-repository-hooks-object.js.map +1 -1
  188. package/dist/rules/require-repository-instructions-file.d.ts +1 -0
  189. package/dist/rules/require-repository-instructions-file.d.ts.map +1 -1
  190. package/dist/rules/require-repository-instructions-file.js +8 -5
  191. package/dist/rules/require-repository-instructions-file.js.map +1 -1
  192. package/dist/rules/require-skill-file-location.d.ts +1 -0
  193. package/dist/rules/require-skill-file-location.d.ts.map +1 -1
  194. package/dist/rules/require-skill-file-location.js +3 -0
  195. package/dist/rules/require-skill-file-location.js.map +1 -1
  196. package/dist/rules/require-skill-file-metadata.d.ts +1 -0
  197. package/dist/rules/require-skill-file-metadata.d.ts.map +1 -1
  198. package/dist/rules/require-skill-file-metadata.js +6 -2
  199. package/dist/rules/require-skill-file-metadata.js.map +1 -1
  200. package/dist/rules/require-skill-md-filename.d.ts +1 -0
  201. package/dist/rules/require-skill-md-filename.d.ts.map +1 -1
  202. package/dist/rules/require-skill-md-filename.js +3 -0
  203. package/dist/rules/require-skill-md-filename.js.map +1 -1
  204. package/dist/rules/require-skill-name-match-directory.d.ts +1 -0
  205. package/dist/rules/require-skill-name-match-directory.d.ts.map +1 -1
  206. package/dist/rules/require-skill-name-match-directory.js +5 -1
  207. package/dist/rules/require-skill-name-match-directory.js.map +1 -1
  208. package/dist/rules/require-string-repository-hook-env-values.d.ts +1 -0
  209. package/dist/rules/require-string-repository-hook-env-values.d.ts.map +1 -1
  210. package/dist/rules/require-string-repository-hook-env-values.js +6 -2
  211. package/dist/rules/require-string-repository-hook-env-values.js.map +1 -1
  212. package/dist/rules/require-valid-agent-argument-hint.d.ts +1 -0
  213. package/dist/rules/require-valid-agent-argument-hint.d.ts.map +1 -1
  214. package/dist/rules/require-valid-agent-argument-hint.js +5 -1
  215. package/dist/rules/require-valid-agent-argument-hint.js.map +1 -1
  216. package/dist/rules/require-valid-agent-handoff-send.d.ts +1 -0
  217. package/dist/rules/require-valid-agent-handoff-send.d.ts.map +1 -1
  218. package/dist/rules/require-valid-agent-handoff-send.js +7 -3
  219. package/dist/rules/require-valid-agent-handoff-send.js.map +1 -1
  220. package/dist/rules/require-valid-agent-handoffs.d.ts +1 -0
  221. package/dist/rules/require-valid-agent-handoffs.d.ts.map +1 -1
  222. package/dist/rules/require-valid-agent-handoffs.js +5 -1
  223. package/dist/rules/require-valid-agent-handoffs.js.map +1 -1
  224. package/dist/rules/require-valid-agent-hook-events.d.ts +1 -0
  225. package/dist/rules/require-valid-agent-hook-events.d.ts.map +1 -1
  226. package/dist/rules/require-valid-agent-hook-events.js +6 -2
  227. package/dist/rules/require-valid-agent-hook-events.js.map +1 -1
  228. package/dist/rules/require-valid-agent-hook-timeouts.d.ts +1 -0
  229. package/dist/rules/require-valid-agent-hook-timeouts.d.ts.map +1 -1
  230. package/dist/rules/require-valid-agent-hook-timeouts.js +6 -2
  231. package/dist/rules/require-valid-agent-hook-timeouts.js.map +1 -1
  232. package/dist/rules/require-valid-agent-hooks.d.ts +1 -0
  233. package/dist/rules/require-valid-agent-hooks.d.ts.map +1 -1
  234. package/dist/rules/require-valid-agent-hooks.js +31 -21
  235. package/dist/rules/require-valid-agent-hooks.js.map +1 -1
  236. package/dist/rules/require-valid-agent-invocation-controls.d.ts +1 -0
  237. package/dist/rules/require-valid-agent-invocation-controls.d.ts.map +1 -1
  238. package/dist/rules/require-valid-agent-invocation-controls.js +7 -3
  239. package/dist/rules/require-valid-agent-invocation-controls.js.map +1 -1
  240. package/dist/rules/require-valid-agent-mcp-servers.d.ts +1 -0
  241. package/dist/rules/require-valid-agent-mcp-servers.d.ts.map +1 -1
  242. package/dist/rules/require-valid-agent-mcp-servers.js +8 -4
  243. package/dist/rules/require-valid-agent-mcp-servers.js.map +1 -1
  244. package/dist/rules/require-valid-agent-model.d.ts +1 -0
  245. package/dist/rules/require-valid-agent-model.d.ts.map +1 -1
  246. package/dist/rules/require-valid-agent-model.js +7 -3
  247. package/dist/rules/require-valid-agent-model.js.map +1 -1
  248. package/dist/rules/require-valid-agent-name.d.ts +1 -0
  249. package/dist/rules/require-valid-agent-name.d.ts.map +1 -1
  250. package/dist/rules/require-valid-agent-name.js +5 -1
  251. package/dist/rules/require-valid-agent-name.js.map +1 -1
  252. package/dist/rules/require-valid-agent-subagents.d.ts +1 -0
  253. package/dist/rules/require-valid-agent-subagents.d.ts.map +1 -1
  254. package/dist/rules/require-valid-agent-subagents.js +8 -4
  255. package/dist/rules/require-valid-agent-subagents.js.map +1 -1
  256. package/dist/rules/require-valid-agent-target.d.ts +1 -0
  257. package/dist/rules/require-valid-agent-target.d.ts.map +1 -1
  258. package/dist/rules/require-valid-agent-target.js +6 -2
  259. package/dist/rules/require-valid-agent-target.js.map +1 -1
  260. package/dist/rules/require-valid-agent-tools.d.ts +1 -0
  261. package/dist/rules/require-valid-agent-tools.d.ts.map +1 -1
  262. package/dist/rules/require-valid-agent-tools.js +8 -4
  263. package/dist/rules/require-valid-agent-tools.js.map +1 -1
  264. package/dist/rules/require-valid-instructions-apply-to-globs.d.ts +1 -0
  265. package/dist/rules/require-valid-instructions-apply-to-globs.d.ts.map +1 -1
  266. package/dist/rules/require-valid-instructions-apply-to-globs.js +8 -3
  267. package/dist/rules/require-valid-instructions-apply-to-globs.js.map +1 -1
  268. package/dist/rules/require-valid-prompt-argument-hint.d.ts +1 -0
  269. package/dist/rules/require-valid-prompt-argument-hint.d.ts.map +1 -1
  270. package/dist/rules/require-valid-prompt-argument-hint.js +6 -3
  271. package/dist/rules/require-valid-prompt-argument-hint.js.map +1 -1
  272. package/dist/rules/require-valid-prompt-model.d.ts +1 -0
  273. package/dist/rules/require-valid-prompt-model.d.ts.map +1 -1
  274. package/dist/rules/require-valid-prompt-model.js +9 -5
  275. package/dist/rules/require-valid-prompt-model.js.map +1 -1
  276. package/dist/rules/require-valid-prompt-name.d.ts +1 -0
  277. package/dist/rules/require-valid-prompt-name.d.ts.map +1 -1
  278. package/dist/rules/require-valid-prompt-name.js +5 -1
  279. package/dist/rules/require-valid-prompt-name.js.map +1 -1
  280. package/dist/rules/require-valid-prompt-tools.d.ts +1 -0
  281. package/dist/rules/require-valid-prompt-tools.d.ts.map +1 -1
  282. package/dist/rules/require-valid-prompt-tools.js +8 -4
  283. package/dist/rules/require-valid-prompt-tools.js.map +1 -1
  284. package/dist/rules/require-valid-repository-hook-command-type.d.ts +1 -0
  285. package/dist/rules/require-valid-repository-hook-command-type.d.ts.map +1 -1
  286. package/dist/rules/require-valid-repository-hook-command-type.js +5 -1
  287. package/dist/rules/require-valid-repository-hook-command-type.js.map +1 -1
  288. package/dist/rules/require-valid-repository-hook-env.d.ts +1 -0
  289. package/dist/rules/require-valid-repository-hook-env.d.ts.map +1 -1
  290. package/dist/rules/require-valid-repository-hook-env.js +6 -2
  291. package/dist/rules/require-valid-repository-hook-env.js.map +1 -1
  292. package/dist/rules/require-valid-repository-hook-events.d.ts +1 -0
  293. package/dist/rules/require-valid-repository-hook-events.d.ts.map +1 -1
  294. package/dist/rules/require-valid-repository-hook-events.js +5 -1
  295. package/dist/rules/require-valid-repository-hook-events.js.map +1 -1
  296. package/dist/rules/require-valid-repository-hook-timeouts.d.ts +1 -0
  297. package/dist/rules/require-valid-repository-hook-timeouts.d.ts.map +1 -1
  298. package/dist/rules/require-valid-repository-hook-timeouts.js +7 -3
  299. package/dist/rules/require-valid-repository-hook-timeouts.js.map +1 -1
  300. package/dist/rules/require-valid-repository-hook-version.d.ts +1 -0
  301. package/dist/rules/require-valid-repository-hook-version.d.ts.map +1 -1
  302. package/dist/rules/require-valid-repository-hook-version.js +3 -0
  303. package/dist/rules/require-valid-repository-hook-version.js.map +1 -1
  304. package/dist/rules/require-valid-skill-directory-name.d.ts +1 -0
  305. package/dist/rules/require-valid-skill-directory-name.d.ts.map +1 -1
  306. package/dist/rules/require-valid-skill-directory-name.js +3 -0
  307. package/dist/rules/require-valid-skill-directory-name.js.map +1 -1
  308. package/dist/rules/require-valid-skill-license.d.ts +1 -0
  309. package/dist/rules/require-valid-skill-license.d.ts.map +1 -1
  310. package/dist/rules/require-valid-skill-license.js +5 -1
  311. package/dist/rules/require-valid-skill-license.js.map +1 -1
  312. package/dist/rules/require-valid-skill-name.d.ts +1 -0
  313. package/dist/rules/require-valid-skill-name.d.ts.map +1 -1
  314. package/dist/rules/require-valid-skill-name.js +5 -1
  315. package/dist/rules/require-valid-skill-name.js.map +1 -1
  316. package/docs/rules/getting-started.md +1 -1
  317. package/docs/rules/no-blank-customization-body.md +1 -1
  318. package/docs/rules/no-blank-repository-instructions.md +2 -1
  319. package/docs/rules/prefer-custom-instructions-under-code-review-limit.md +1 -0
  320. package/docs/rules/require-repository-instructions-file.md +8 -3
  321. package/package.json +75 -63
@@ -6,6 +6,8 @@ import { isSkillFilePath } from "../_internal/copilot-file-kind.js";
6
6
  */
7
7
  import { createCopilotRule } from "../_internal/create-copilot-rule.js";
8
8
  import { createMarkdownDocumentListener, reportAtDocumentStart, } from "../_internal/markdown-rule.js";
9
+ import { createRuleDocsUrl } from "../_internal/rule-docs-url.js";
10
+ /** Rule module for `require-valid-skill-directory-name`. */
9
11
  const requireValidSkillDirectoryNameRule = createCopilotRule({
10
12
  create(context) {
11
13
  return createMarkdownDocumentListener(() => {
@@ -36,6 +38,7 @@ const requireValidSkillDirectoryNameRule = createCopilotRule({
36
38
  frozen: false,
37
39
  recommended: true,
38
40
  requiresTypeChecking: false,
41
+ url: createRuleDocsUrl("require-valid-skill-directory-name"),
39
42
  },
40
43
  messages: {
41
44
  invalidSkillDirectoryName: "Copilot skill directory names must use lowercase letters, digits, and hyphens only (current directory: `{{directoryName}}`).",
@@ -1 +1 @@
1
- {"version":3,"file":"require-valid-skill-directory-name.js","sourceRoot":"","sources":["../../src/rules/require-valid-skill-directory-name.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,qBAAqB,EACrB,sBAAsB,GACzB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EACH,8BAA8B,EAC9B,qBAAqB,GACxB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,kCAAkC,GAAsB,iBAAiB,CAC3E;IACI,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,aAAa,GAAG,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAE9D,IAAI,sBAAsB,CAAC,aAAa,CAAC,EAAE,CAAC;gBACxC,OAAO;YACX,CAAC;YAED,qBAAqB,CAAC,OAAO,EAAE;gBAC3B,IAAI,EAAE;oBACF,aAAa;iBAChB;gBACD,SAAS,EAAE,2BAA2B;aACzC,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,oFAAoF;YACxF,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,KAAK;SAC9B;QACD,QAAQ,EAAE;YACN,yBAAyB,EACrB,8HAA8H;SACrI;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;KAClB;IACD,IAAI,EAAE,oCAAoC;CAC7C,CACJ,CAAC;AAEF,eAAe,kCAAkC,CAAC"}
1
+ {"version":3,"file":"require-valid-skill-directory-name.js","sourceRoot":"","sources":["../../src/rules/require-valid-skill-directory-name.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,qBAAqB,EACrB,sBAAsB,GACzB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EACH,8BAA8B,EAC9B,qBAAqB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,4DAA4D;AAC5D,MAAM,kCAAkC,GAAsB,iBAAiB,CAC3E;IACI,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,aAAa,GAAG,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAE9D,IAAI,sBAAsB,CAAC,aAAa,CAAC,EAAE,CAAC;gBACxC,OAAO;YACX,CAAC;YAED,qBAAqB,CAAC,OAAO,EAAE;gBAC3B,IAAI,EAAE;oBACF,aAAa;iBAChB;gBACD,SAAS,EAAE,2BAA2B;aACzC,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,oFAAoF;YACxF,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,KAAK;YAC3B,GAAG,EAAE,iBAAiB,CAAC,oCAAoC,CAAC;SAC/D;QACD,QAAQ,EAAE;YACN,yBAAyB,EACrB,8HAA8H;SACrI;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;KAClB;IACD,IAAI,EAAE,oCAAoC;CAC7C,CACJ,CAAC;AAEF,eAAe,kCAAkC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { CopilotRuleModule } from "../_internal/create-copilot-rule.js";
2
+ /** Rule module for `require-valid-skill-license`. */
2
3
  declare const requireValidSkillLicenseRule: CopilotRuleModule;
3
4
  export default requireValidSkillLicenseRule;
4
5
  //# sourceMappingURL=require-valid-skill-license.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"require-valid-skill-license.d.ts","sourceRoot":"","sources":["../../src/rules/require-valid-skill-license.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAkB7E,QAAA,MAAM,4BAA4B,EAAE,iBA2ClC,CAAC;AAEH,eAAe,4BAA4B,CAAC"}
1
+ {"version":3,"file":"require-valid-skill-license.d.ts","sourceRoot":"","sources":["../../src/rules/require-valid-skill-license.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAmB7E,qDAAqD;AACrD,QAAA,MAAM,4BAA4B,EAAE,iBA4ClC,CAAC;AAEH,eAAe,4BAA4B,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { isDefined } from "ts-extras";
1
2
  import { isSkillFilePath } from "../_internal/copilot-file-kind.js";
2
3
  /**
3
4
  * @packageDocumentation
@@ -6,6 +7,8 @@ import { isSkillFilePath } from "../_internal/copilot-file-kind.js";
6
7
  import { createCopilotRule } from "../_internal/create-copilot-rule.js";
7
8
  import { extractFrontmatter, getFrontmatterScalar, hasFrontmatterField, } from "../_internal/frontmatter.js";
8
9
  import { createMarkdownDocumentListener, reportAtDocumentStart, } from "../_internal/markdown-rule.js";
10
+ import { createRuleDocsUrl } from "../_internal/rule-docs-url.js";
11
+ /** Rule module for `require-valid-skill-license`. */
9
12
  const requireValidSkillLicenseRule = createCopilotRule({
10
13
  create(context) {
11
14
  return createMarkdownDocumentListener(() => {
@@ -17,7 +20,7 @@ const requireValidSkillLicenseRule = createCopilotRule({
17
20
  !hasFrontmatterField(frontmatter, "license")) {
18
21
  return;
19
22
  }
20
- if (getFrontmatterScalar(frontmatter, "license") !== undefined) {
23
+ if (isDefined(getFrontmatterScalar(frontmatter, "license"))) {
21
24
  return;
22
25
  }
23
26
  reportAtDocumentStart(context, {
@@ -33,6 +36,7 @@ const requireValidSkillLicenseRule = createCopilotRule({
33
36
  frozen: false,
34
37
  recommended: false,
35
38
  requiresTypeChecking: false,
39
+ url: createRuleDocsUrl("require-valid-skill-license"),
36
40
  },
37
41
  messages: {
38
42
  invalidSkillLicense: "Copilot skill `license` metadata must be a non-empty scalar when present.",
@@ -1 +1 @@
1
- {"version":3,"file":"require-valid-skill-license.js","sourceRoot":"","sources":["../../src/rules/require-valid-skill-license.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EACH,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,GACtB,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,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;YAEhE,IACI,WAAW,KAAK,IAAI;gBACpB,CAAC,mBAAmB,CAAC,WAAW,EAAE,SAAS,CAAC,EAC9C,CAAC;gBACC,OAAO;YACX,CAAC;YAED,IAAI,oBAAoB,CAAC,WAAW,EAAE,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC7D,OAAO;YACX,CAAC;YAED,qBAAqB,CAAC,OAAO,EAAE;gBAC3B,SAAS,EAAE,qBAAqB;aACnC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IACD,IAAI,EAAE;QACF,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE;YACF,cAAc,EAAE,CAAC,wBAAwB,EAAE,qBAAqB,CAAC;YACjE,WAAW,EACP,0FAA0F;YAC9F,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,KAAK;YAClB,oBAAoB,EAAE,KAAK;SAC9B;QACD,QAAQ,EAAE;YACN,mBAAmB,EACf,2EAA2E;SAClF;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;KAClB;IACD,IAAI,EAAE,6BAA6B;CACtC,CAAC,CAAC;AAEH,eAAe,4BAA4B,CAAC"}
1
+ {"version":3,"file":"require-valid-skill-license.js","sourceRoot":"","sources":["../../src/rules/require-valid-skill-license.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EACH,kBAAkB,EAClB,oBAAoB,EACpB,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,qDAAqD;AACrD,MAAM,4BAA4B,GAAsB,iBAAiB,CAAC;IACtE,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;YAEhE,IACI,WAAW,KAAK,IAAI;gBACpB,CAAC,mBAAmB,CAAC,WAAW,EAAE,SAAS,CAAC,EAC9C,CAAC;gBACC,OAAO;YACX,CAAC;YAED,IAAI,SAAS,CAAC,oBAAoB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;gBAC1D,OAAO;YACX,CAAC;YAED,qBAAqB,CAAC,OAAO,EAAE;gBAC3B,SAAS,EAAE,qBAAqB;aACnC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IACD,IAAI,EAAE;QACF,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE;YACF,cAAc,EAAE,CAAC,wBAAwB,EAAE,qBAAqB,CAAC;YACjE,WAAW,EACP,0FAA0F;YAC9F,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,KAAK;YAClB,oBAAoB,EAAE,KAAK;YAC3B,GAAG,EAAE,iBAAiB,CAAC,6BAA6B,CAAC;SACxD;QACD,QAAQ,EAAE;YACN,mBAAmB,EACf,2EAA2E;SAClF;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 `require-valid-skill-name`. */
2
3
  declare const requireValidSkillNameRule: CopilotRuleModule;
3
4
  export default requireValidSkillNameRule;
4
5
  //# sourceMappingURL=require-valid-skill-name.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"require-valid-skill-name.d.ts","sourceRoot":"","sources":["../../src/rules/require-valid-skill-name.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAsB7E,QAAA,MAAM,yBAAyB,EAAE,iBAyD/B,CAAC;AAEH,eAAe,yBAAyB,CAAC"}
1
+ {"version":3,"file":"require-valid-skill-name.d.ts","sourceRoot":"","sources":["../../src/rules/require-valid-skill-name.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAuB7E,kDAAkD;AAClD,QAAA,MAAM,yBAAyB,EAAE,iBA0D/B,CAAC;AAEH,eAAe,yBAAyB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { isDefined } from "ts-extras";
1
2
  import { getSkillName, isValidSkillIdentifier, } from "../_internal/copilot-customization-names.js";
2
3
  import { isSkillFilePath } from "../_internal/copilot-file-kind.js";
3
4
  /**
@@ -7,6 +8,8 @@ import { isSkillFilePath } from "../_internal/copilot-file-kind.js";
7
8
  import { createCopilotRule } from "../_internal/create-copilot-rule.js";
8
9
  import { extractFrontmatter, getFrontmatterScalar, hasFrontmatterField, } from "../_internal/frontmatter.js";
9
10
  import { createMarkdownDocumentListener, reportAtDocumentStart, } from "../_internal/markdown-rule.js";
11
+ import { createRuleDocsUrl } from "../_internal/rule-docs-url.js";
12
+ /** Rule module for `require-valid-skill-name`. */
10
13
  const requireValidSkillNameRule = createCopilotRule({
11
14
  create(context) {
12
15
  return createMarkdownDocumentListener(() => {
@@ -19,7 +22,7 @@ const requireValidSkillNameRule = createCopilotRule({
19
22
  return;
20
23
  }
21
24
  const skillName = getFrontmatterScalar(frontmatter, "name");
22
- if (skillName !== undefined &&
25
+ if (isDefined(skillName) &&
23
26
  isValidSkillIdentifier(getSkillName(context.filename, frontmatter))) {
24
27
  return;
25
28
  }
@@ -43,6 +46,7 @@ const requireValidSkillNameRule = createCopilotRule({
43
46
  frozen: false,
44
47
  recommended: true,
45
48
  requiresTypeChecking: false,
49
+ url: createRuleDocsUrl("require-valid-skill-name"),
46
50
  },
47
51
  messages: {
48
52
  invalidSkillName: "Copilot skill `name` values must use lowercase letters, digits, and hyphens only (current value: `{{name}}`).",
@@ -1 +1 @@
1
- {"version":3,"file":"require-valid-skill-name.js","sourceRoot":"","sources":["../../src/rules/require-valid-skill-name.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,YAAY,EACZ,sBAAsB,GACzB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EACH,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,GACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACH,8BAA8B,EAC9B,qBAAqB,GACxB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,yBAAyB,GAAsB,iBAAiB,CAAC;IACnE,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;YAEhE,IACI,WAAW,KAAK,IAAI;gBACpB,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,EAC3C,CAAC;gBACC,OAAO;YACX,CAAC;YAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAE5D,IACI,SAAS,KAAK,SAAS;gBACvB,sBAAsB,CAClB,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAC9C,EACH,CAAC;gBACC,OAAO;YACX,CAAC;YAED,qBAAqB,CAAC,OAAO,EAAE;gBAC3B,IAAI,EAAE;oBACF,IAAI,EAAE,SAAS,IAAI,SAAS;iBAC/B;gBACD,SAAS,EAAE,kBAAkB;aAChC,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,gBAAgB,EACZ,+GAA+G;SACtH;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;KAClB;IACD,IAAI,EAAE,0BAA0B;CACnC,CAAC,CAAC;AAEH,eAAe,yBAAyB,CAAC"}
1
+ {"version":3,"file":"require-valid-skill-name.js","sourceRoot":"","sources":["../../src/rules/require-valid-skill-name.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC,OAAO,EACH,YAAY,EACZ,sBAAsB,GACzB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EACH,kBAAkB,EAClB,oBAAoB,EACpB,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,kDAAkD;AAClD,MAAM,yBAAyB,GAAsB,iBAAiB,CAAC;IACnE,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;YAEhE,IACI,WAAW,KAAK,IAAI;gBACpB,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,EAC3C,CAAC;gBACC,OAAO;YACX,CAAC;YAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAE5D,IACI,SAAS,CAAC,SAAS,CAAC;gBACpB,sBAAsB,CAClB,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAC9C,EACH,CAAC;gBACC,OAAO;YACX,CAAC;YAED,qBAAqB,CAAC,OAAO,EAAE;gBAC3B,IAAI,EAAE;oBACF,IAAI,EAAE,SAAS,IAAI,SAAS;iBAC/B;gBACD,SAAS,EAAE,kBAAkB;aAChC,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,0BAA0B,CAAC;SACrD;QACD,QAAQ,EAAE;YACN,gBAAgB,EACZ,+GAA+G;SACtH;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;KAClB;IACD,IAAI,EAAE,0BAA0B;CACnC,CAAC,CAAC;AAEH,eAAe,yBAAyB,CAAC"}
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## Supported file types
6
6
 
7
- - repository-wide instructions: `.github/copilot-instructions.md`
7
+ - repository-wide instructions: `.github/copilot-instructions.md`, `.github/instructions/copilot-instructions.md`
8
8
  - path-specific instructions: `.github/instructions/**/*.instructions.md`
9
9
  - reusable prompts: `.github/prompts/**/*.prompt.md`
10
10
  - custom agents: `.github/agents/**/*.agent.md`
@@ -23,7 +23,7 @@ Disallow blank bodies in Copilot customization files other than repository-wide
23
23
 
24
24
  Copilot customization files are instruction surfaces. A prompt, custom agent, or path-specific instructions file that only contains frontmatter does not give Copilot any actual guidance to apply. This rule catches metadata-only files before they silently become ineffective customization points.
25
25
 
26
- Repository-wide `.github/copilot-instructions.md` is intentionally excluded because it already has a dedicated blank-content rule.
26
+ Repository-wide `.github/copilot-instructions.md` and `.github/instructions/copilot-instructions.md` are intentionally excluded because they already have a dedicated blank-content rule.
27
27
 
28
28
  ## ❌ Incorrect
29
29
 
@@ -7,6 +7,7 @@ Disallow empty repository-wide Copilot instructions files.
7
7
  ## Targeted pattern scope
8
8
 
9
9
  - `.github/copilot-instructions.md`
10
+ - `.github/instructions/copilot-instructions.md`
10
11
 
11
12
  ## What this rule reports
12
13
 
@@ -14,7 +15,7 @@ Disallow empty repository-wide Copilot instructions files.
14
15
 
15
16
  ## Why this rule exists
16
17
 
17
- GitHub Copilot repository instructions are the baseline customization surface for a repository. An empty `.github/copilot-instructions.md` file communicates intent to customize Copilot, but it provides no usable guidance.
18
+ GitHub Copilot repository instructions are the baseline customization surface for a repository. An empty `.github/copilot-instructions.md` or `.github/instructions/copilot-instructions.md` file communicates intent to customize Copilot, but it provides no usable guidance.
18
19
 
19
20
  ## ❌ Incorrect
20
21
 
@@ -7,6 +7,7 @@ Prefer repository and path-specific Copilot instruction files to stay within the
7
7
  ## Targeted pattern scope
8
8
 
9
9
  - `.github/copilot-instructions.md`
10
+ - `.github/instructions/copilot-instructions.md`
10
11
  - `.github/instructions/**/*.instructions.md`
11
12
 
12
13
  ## What this rule reports
@@ -1,6 +1,6 @@
1
1
  # require-repository-instructions-file
2
2
 
3
- Require repositories that define Copilot customization assets to also provide `.github/copilot-instructions.md`.
3
+ Require repositories that define Copilot customization assets to also provide repository guidance in `.github/copilot-instructions.md` or `.github/instructions/copilot-instructions.md`.
4
4
 
5
5
  > **Rule catalog ID:** R005
6
6
 
@@ -16,7 +16,7 @@ Require repositories that define Copilot customization assets to also provide `.
16
16
 
17
17
  ## What this rule reports
18
18
 
19
- - Copilot customization assets in repositories that do not also include `.github/copilot-instructions.md`
19
+ - Copilot customization assets in repositories that do not also include `.github/copilot-instructions.md` or `.github/instructions/copilot-instructions.md`
20
20
 
21
21
  ## Why this rule exists
22
22
 
@@ -28,7 +28,7 @@ Repository-wide instructions provide the broadest Copilot customization surface
28
28
  .github/prompts/review.prompt.md
29
29
  ```
30
30
 
31
- with no `.github/copilot-instructions.md` in the repository.
31
+ with neither `.github/copilot-instructions.md` nor `.github/instructions/copilot-instructions.md` in the repository.
32
32
 
33
33
  ## ✅ Correct
34
34
 
@@ -37,6 +37,11 @@ with no `.github/copilot-instructions.md` in the repository.
37
37
  .github/prompts/review.prompt.md
38
38
  ```
39
39
 
40
+ ```text
41
+ .github/instructions/copilot-instructions.md
42
+ .github/prompts/review.prompt.md
43
+ ```
44
+
40
45
  ## Further reading
41
46
 
42
47
  - [GitHub Docs: Add repository custom instructions for GitHub Copilot](https://docs.github.com/en/copilot/how-tos/configure-custom-instructions/add-repository-instructions)
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://www.schemastore.org/package.json",
3
3
  "name": "eslint-plugin-copilot",
4
- "version": "1.0.7",
4
+ "version": "1.1.0",
5
5
  "private": false,
6
6
  "description": "ESLint rules for GitHub Copilot repository customization files.",
7
7
  "keywords": [
@@ -198,21 +198,23 @@
198
198
  "jsonc-eslint-parser": "$jsonc-eslint-parser"
199
199
  },
200
200
  "dependencies": {
201
- "@typescript-eslint/parser": "^8.58.0",
202
- "@typescript-eslint/type-utils": "^8.58.0",
203
- "@typescript-eslint/utils": "^8.58.0"
201
+ "@typescript-eslint/parser": "^8.59.0",
202
+ "@typescript-eslint/type-utils": "^8.59.0",
203
+ "@typescript-eslint/utils": "^8.59.0",
204
+ "ts-extras": "^1.0.0",
205
+ "type-fest": "^5.6.0"
204
206
  },
205
207
  "devDependencies": {
206
208
  "@arethetypeswrong/cli": "^0.18.2",
207
209
  "@csstools/stylelint-formatter-github": "^2.0.0",
208
- "@docusaurus/eslint-plugin": "^3.9.2",
210
+ "@docusaurus/eslint-plugin": "^3.10.0",
209
211
  "@double-great/remark-lint-alt-text": "^1.1.1",
210
- "@double-great/stylelint-a11y": "^3.4.9",
212
+ "@double-great/stylelint-a11y": "^3.4.10",
211
213
  "@eslint-community/eslint-plugin-eslint-comments": "^4.7.1",
212
214
  "@eslint-react/eslint-plugin": "^4.2.3",
213
- "@eslint/compat": "^2.0.4",
214
- "@eslint/config-helpers": "^0.5.4",
215
- "@eslint/config-inspector": "^1.5.0",
215
+ "@eslint/compat": "^2.0.5",
216
+ "@eslint/config-helpers": "^0.5.5",
217
+ "@eslint/config-inspector": "^2.0.0",
216
218
  "@eslint/css": "^1.1.0",
217
219
  "@eslint/js": "^10.0.1",
218
220
  "@eslint/json": "^1.2.0",
@@ -221,25 +223,25 @@
221
223
  "@html-eslint/parser": "^0.59.0",
222
224
  "@microsoft/eslint-plugin-sdl": "^1.1.0",
223
225
  "@microsoft/tsdoc-config": "^0.18.1",
224
- "@secretlint/secretlint-rule-anthropic": "^11.5.0",
225
- "@secretlint/secretlint-rule-aws": "^11.5.0",
226
- "@secretlint/secretlint-rule-database-connection-string": "^11.5.0",
227
- "@secretlint/secretlint-rule-gcp": "^11.5.0",
228
- "@secretlint/secretlint-rule-github": "^11.5.0",
229
- "@secretlint/secretlint-rule-no-dotenv": "^11.5.0",
230
- "@secretlint/secretlint-rule-no-homedir": "^11.5.0",
231
- "@secretlint/secretlint-rule-npm": "^11.5.0",
232
- "@secretlint/secretlint-rule-openai": "^11.5.0",
233
- "@secretlint/secretlint-rule-pattern": "^11.5.0",
234
- "@secretlint/secretlint-rule-preset-recommend": "^11.4.1",
235
- "@secretlint/secretlint-rule-privatekey": "^11.5.0",
236
- "@secretlint/secretlint-rule-secp256k1-privatekey": "^11.5.0",
237
- "@secretlint/types": "^11.5.0",
226
+ "@secretlint/secretlint-rule-anthropic": "^12.2.0",
227
+ "@secretlint/secretlint-rule-aws": "^12.2.0",
228
+ "@secretlint/secretlint-rule-database-connection-string": "^12.2.0",
229
+ "@secretlint/secretlint-rule-gcp": "^12.2.0",
230
+ "@secretlint/secretlint-rule-github": "^12.2.0",
231
+ "@secretlint/secretlint-rule-no-dotenv": "^12.2.0",
232
+ "@secretlint/secretlint-rule-no-homedir": "^12.2.0",
233
+ "@secretlint/secretlint-rule-npm": "^12.2.0",
234
+ "@secretlint/secretlint-rule-openai": "^12.2.0",
235
+ "@secretlint/secretlint-rule-pattern": "^12.2.0",
236
+ "@secretlint/secretlint-rule-preset-recommend": "^12.2.0",
237
+ "@secretlint/secretlint-rule-privatekey": "^12.2.0",
238
+ "@secretlint/secretlint-rule-secp256k1-privatekey": "^12.2.0",
239
+ "@secretlint/types": "^12.2.0",
238
240
  "@softonus/prettier-plugin-duplicate-remover": "^1.1.2",
239
241
  "@stryker-ignorer/console-all": "^0.3.2",
240
- "@stryker-mutator/core": "^9.6.0",
241
- "@stryker-mutator/typescript-checker": "^9.6.0",
242
- "@stryker-mutator/vitest-runner": "^9.6.0",
242
+ "@stryker-mutator/core": "^9.6.1",
243
+ "@stryker-mutator/typescript-checker": "^9.6.1",
244
+ "@stryker-mutator/vitest-runner": "^9.6.1",
243
245
  "@stylelint-types/stylelint-order": "^7.0.1",
244
246
  "@stylelint-types/stylelint-stylistic": "^5.0.0",
245
247
  "@stylistic/eslint-plugin": "^5.10.0",
@@ -248,7 +250,7 @@
248
250
  "@types/eslint-plugin-security": "^3.0.1",
249
251
  "@types/htmlhint": "^1.1.5",
250
252
  "@types/madge": "^5.0.3",
251
- "@types/node": "^25.5.2",
253
+ "@types/node": "^25.6.0",
252
254
  "@types/postcss-clamp": "^4.1.3",
253
255
  "@types/postcss-flexbugs-fixes": "^5.0.3",
254
256
  "@types/postcss-html": "^1.5.3",
@@ -257,11 +259,12 @@
257
259
  "@types/postcss-normalize": "^9.0.4",
258
260
  "@types/postcss-reporter": "^7.0.5",
259
261
  "@types/sloc": "^0.2.3",
260
- "@typescript-eslint/eslint-plugin": "^8.58.0",
261
- "@typescript-eslint/rule-tester": "^8.58.0",
262
- "@vitest/coverage-v8": "^4.1.2",
263
- "@vitest/eslint-plugin": "^1.6.14",
264
- "@vitest/ui": "^4.1.2",
262
+ "@typescript-eslint/eslint-plugin": "^8.59.0",
263
+ "@typescript-eslint/rule-tester": "^8.59.0",
264
+ "@typpi/eslint-plugin-vite": "^1.0.13",
265
+ "@vitest/coverage-v8": "^4.1.5",
266
+ "@vitest/eslint-plugin": "^1.6.16",
267
+ "@vitest/ui": "^4.1.5",
265
268
  "actionlint": "^2.0.6",
266
269
  "all-contributors-cli": "^6.26.1",
267
270
  "cognitive-complexity-ts": "^0.8.1",
@@ -270,23 +273,27 @@
270
273
  "cross-env": "^10.1.0",
271
274
  "depcheck": "^1.4.7",
272
275
  "detect-secrets": "^1.0.6",
273
- "eslint": "^10.2.0",
276
+ "eslint": "^10.2.1",
274
277
  "eslint-config-flat-gitignore": "^2.3.0",
275
278
  "eslint-config-prettier": "^10.1.8",
276
279
  "eslint-formatter-unix": "^9.0.1",
277
280
  "eslint-import-resolver-typescript": "^4.4.4",
278
281
  "eslint-plugin-array-func": "^5.1.1",
279
282
  "eslint-plugin-canonical": "^5.1.3",
280
- "eslint-plugin-case-police": "^2.2.0",
281
- "eslint-plugin-comment-length": "^2.3.0",
283
+ "eslint-plugin-case-police": "^2.2.1",
284
+ "eslint-plugin-comment-length": "^2.3.1",
285
+ "eslint-plugin-copilot": "^1.0.8",
282
286
  "eslint-plugin-css-modules": "^2.12.0",
283
287
  "eslint-plugin-de-morgan": "^2.1.1",
284
288
  "eslint-plugin-depend": "^1.5.0",
289
+ "eslint-plugin-docusaurus-2": "^0.2.0",
285
290
  "eslint-plugin-eslint-plugin": "^7.3.2",
286
291
  "eslint-plugin-etc": "^2.0.3",
287
- "eslint-plugin-etc-misc": "^1.0.5",
288
- "eslint-plugin-file-progress-2": "^3.4.4",
292
+ "eslint-plugin-etc-misc": "^1.0.8",
293
+ "eslint-plugin-file-progress-2": "^5.0.1",
294
+ "eslint-plugin-github-actions-2": "^1.1.0",
289
295
  "eslint-plugin-html": "^8.1.4",
296
+ "eslint-plugin-immutable-2": "^1.0.10",
290
297
  "eslint-plugin-import-x": "^4.16.2",
291
298
  "eslint-plugin-jsdoc": "^62.9.0",
292
299
  "eslint-plugin-jsonc": "^3.1.2",
@@ -297,7 +304,7 @@
297
304
  "eslint-plugin-module-interop": "^0.3.1",
298
305
  "eslint-plugin-n": "^17.24.0",
299
306
  "eslint-plugin-nitpick": "^0.12.0",
300
- "eslint-plugin-no-barrel-files": "^1.2.2",
307
+ "eslint-plugin-no-barrel-files": "^1.3.1",
301
308
  "eslint-plugin-no-explicit-type-exports": "^0.12.1",
302
309
  "eslint-plugin-no-function-declare-after-return": "^1.1.0",
303
310
  "eslint-plugin-no-lookahead-lookbehind-regexp": "^0.4.0",
@@ -307,42 +314,47 @@
307
314
  "eslint-plugin-no-use-extend-native": "^0.7.2",
308
315
  "eslint-plugin-node-dependencies": "^2.2.0",
309
316
  "eslint-plugin-package-json": "^0.91.1",
310
- "eslint-plugin-perfectionist": "^5.8.0",
317
+ "eslint-plugin-perfectionist": "^5.9.0",
311
318
  "eslint-plugin-prefer-arrow": "^1.2.3",
312
319
  "eslint-plugin-prettier": "^5.5.5",
313
320
  "eslint-plugin-promise": "^7.2.1",
314
321
  "eslint-plugin-redos": "^4.5.0",
315
322
  "eslint-plugin-regexp": "^3.1.0",
316
323
  "eslint-plugin-require-jsdoc": "^1.0.4",
324
+ "eslint-plugin-sdl-2": "^1.0.7",
317
325
  "eslint-plugin-security": "^4.0.0",
318
- "eslint-plugin-sonarjs": "^4.0.2",
326
+ "eslint-plugin-sonarjs": "^4.0.3",
319
327
  "eslint-plugin-sort-class-members": "^1.22.1",
328
+ "eslint-plugin-stylelint-2": "^1.1.0",
320
329
  "eslint-plugin-testing-library": "^7.16.2",
321
330
  "eslint-plugin-toml": "^1.3.1",
322
331
  "eslint-plugin-total-functions": "^7.1.0",
323
332
  "eslint-plugin-tsdoc": "^0.5.2",
324
- "eslint-plugin-tsdoc-require-2": "^1.0.9",
333
+ "eslint-plugin-tsdoc-require-2": "^1.1.0",
334
+ "eslint-plugin-typedoc": "^1.2.0",
335
+ "eslint-plugin-typefest": "^1.2.4",
325
336
  "eslint-plugin-undefined-css-classes": "^0.1.5",
326
337
  "eslint-plugin-unicorn": "^64.0.0",
327
338
  "eslint-plugin-unused-imports": "^4.4.1",
328
339
  "eslint-plugin-write-good-comments": "^0.2.0",
340
+ "eslint-plugin-write-good-comments-2": "^1.0.6",
329
341
  "eslint-plugin-yml": "^3.3.1",
330
342
  "eslint-rule-benchmark": "^0.8.0",
331
- "fast-check": "^4.6.0",
343
+ "fast-check": "^4.7.0",
332
344
  "git-cliff": "^2.12.0",
333
345
  "gitleaks-secret-scanner": "^2.1.1",
334
- "globals": "^17.4.0",
346
+ "globals": "^17.5.0",
335
347
  "htmlhint": "^1.9.2",
336
- "jscpd": "^4.0.8",
348
+ "jscpd": "^4.0.9",
337
349
  "jsonc-eslint-parser": "^3.1.0",
338
- "knip": "^6.3.0",
350
+ "knip": "^6.6.2",
339
351
  "leasot": "^14.4.0",
340
352
  "madge": "^8.0.0",
341
353
  "markdown-link-check": "^3.14.2",
342
- "npm-check-updates": "^20.0.0",
343
- "npm-package-json-lint": "^10.2.0",
354
+ "npm-check-updates": "^21.0.3",
355
+ "npm-package-json-lint": "^10.2.1",
344
356
  "picocolors": "^1.1.1",
345
- "postcss": "^8.5.8",
357
+ "postcss": "^8.5.10",
346
358
  "postcss-assets": "^6.0.0",
347
359
  "postcss-clamp": "^4.1.0",
348
360
  "postcss-combine-duplicated-selectors": "^10.0.3",
@@ -355,17 +367,17 @@
355
367
  "postcss-reporter": "^7.1.0",
356
368
  "postcss-round-subpixels": "^2.0.0",
357
369
  "postcss-scss": "^4.0.9",
358
- "postcss-sort-media-queries": "^6.3.3",
370
+ "postcss-sort-media-queries": "^6.5.0",
359
371
  "postcss-styled-jsx": "^1.0.1",
360
372
  "postcss-styled-syntax": "^0.7.1",
361
373
  "postcss-viewport-height-correction": "^1.1.1",
362
- "prettier": "^3.8.1",
374
+ "prettier": "^3.8.3",
363
375
  "prettier-plugin-ini": "^1.3.0",
364
376
  "prettier-plugin-interpolated-html-tags": "^2.0.1",
365
377
  "prettier-plugin-jsdoc": "^1.8.0",
366
378
  "prettier-plugin-jsdoc-type": "^0.2.0",
367
379
  "prettier-plugin-merge": "^0.10.1",
368
- "prettier-plugin-multiline-arrays": "^4.1.5",
380
+ "prettier-plugin-multiline-arrays": "^4.1.7",
369
381
  "prettier-plugin-packagejson": "^3.0.2",
370
382
  "prettier-plugin-properties": "^0.3.1",
371
383
  "prettier-plugin-sort-json": "^4.2.0",
@@ -479,16 +491,16 @@
479
491
  "remark-validate-links": "^13.1.0",
480
492
  "remark-wiki-link": "^2.0.1",
481
493
  "rimraf": "^6.1.3",
482
- "secretlint": "^11.4.1",
494
+ "secretlint": "^12.2.0",
483
495
  "sloc": "^0.3.2",
484
496
  "sort-package-json": "^3.6.1",
485
- "stylelint": "^17.6.0",
497
+ "stylelint": "^17.9.0",
486
498
  "stylelint-actions-formatters": "^16.3.1",
487
499
  "stylelint-checkstyle-formatter": "^0.1.2",
488
500
  "stylelint-codeframe-formatter": "^1.2.0",
489
501
  "stylelint-config-alphabetical-order": "^2.0.0",
490
502
  "stylelint-config-idiomatic-order": "^10.0.0",
491
- "stylelint-config-inspector": "^2.0.3",
503
+ "stylelint-config-inspector": "^2.1.2",
492
504
  "stylelint-config-recess-order": "^7.7.0",
493
505
  "stylelint-config-recommended": "^18.0.0",
494
506
  "stylelint-config-sass-guidelines": "^13.0.0",
@@ -497,7 +509,7 @@
497
509
  "stylelint-config-tailwindcss": "^1.0.1",
498
510
  "stylelint-declaration-block-no-ignored-properties": "^3.0.0",
499
511
  "stylelint-declaration-strict-value": "^1.11.1",
500
- "stylelint-define-config": "^17.5.0",
512
+ "stylelint-define-config": "^17.8.0",
501
513
  "stylelint-find-new-rules": "^6.0.0",
502
514
  "stylelint-formatter-gitlab-code-quality-report": "^1.1.0",
503
515
  "stylelint-formatter-pretty": "^4.0.1",
@@ -511,7 +523,7 @@
511
523
  "stylelint-no-unresolved-module": "^2.5.2",
512
524
  "stylelint-no-unsupported-browser-features": "^8.1.1",
513
525
  "stylelint-order": "^8.1.1",
514
- "stylelint-plugin-defensive-css": "^2.8.1",
526
+ "stylelint-plugin-defensive-css": "^2.9.1",
515
527
  "stylelint-plugin-logical-css": "^2.1.0",
516
528
  "stylelint-plugin-use-baseline": "^1.4.1",
517
529
  "stylelint-prettier": "^5.0.3",
@@ -522,22 +534,22 @@
522
534
  "stylelint-value-no-unknown-custom-properties": "^6.1.1",
523
535
  "toml-eslint-parser": "^1.0.3",
524
536
  "ts-unused-exports": "^11.0.1",
525
- "typedoc": "^0.28.18",
526
- "typescript": "^6.0.2",
527
- "typescript-eslint": "^8.58.0",
537
+ "typedoc": "^0.28.19",
538
+ "typescript": "^6.0.3",
539
+ "typescript-eslint": "^8.59.0",
528
540
  "typesync": "^0.14.3",
529
541
  "vfile": "^6.0.3",
530
- "vite": "^8.0.3",
542
+ "vite": "^8.0.10",
531
543
  "vite-tsconfig-paths": "^6.1.1",
532
- "vitest": "^4.1.2",
544
+ "vitest": "^4.1.5",
533
545
  "yaml-eslint-parser": "^2.0.0",
534
546
  "yamllint-js": "^0.2.4"
535
547
  },
536
548
  "peerDependencies": {
537
- "eslint": "^9.0.0 || ^10.2.0",
549
+ "eslint": "^9.0.0 || ^10.2.1",
538
550
  "typescript": ">=5.0.0"
539
551
  },
540
- "packageManager": "npm@11.12.1",
552
+ "packageManager": "npm@11.13.0",
541
553
  "engines": {
542
554
  "node": ">=22.0.0"
543
555
  },