eslint-plugin-copilot 1.0.5

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 (424) hide show
  1. package/CHANGELOG.md +5316 -0
  2. package/LICENSE +21 -0
  3. package/README.md +192 -0
  4. package/dist/_internal/copilot-config-references.d.ts +34 -0
  5. package/dist/_internal/copilot-config-references.d.ts.map +1 -0
  6. package/dist/_internal/copilot-config-references.js +55 -0
  7. package/dist/_internal/copilot-config-references.js.map +1 -0
  8. package/dist/_internal/copilot-customization-names.d.ts +21 -0
  9. package/dist/_internal/copilot-customization-names.d.ts.map +1 -0
  10. package/dist/_internal/copilot-customization-names.js +56 -0
  11. package/dist/_internal/copilot-customization-names.js.map +1 -0
  12. package/dist/_internal/copilot-file-kind.d.ts +19 -0
  13. package/dist/_internal/copilot-file-kind.d.ts.map +1 -0
  14. package/dist/_internal/copilot-file-kind.js +111 -0
  15. package/dist/_internal/copilot-file-kind.js.map +1 -0
  16. package/dist/_internal/create-copilot-rule.d.ts +39 -0
  17. package/dist/_internal/create-copilot-rule.d.ts.map +1 -0
  18. package/dist/_internal/create-copilot-rule.js +56 -0
  19. package/dist/_internal/create-copilot-rule.js.map +1 -0
  20. package/dist/_internal/customization-body.d.ts +6 -0
  21. package/dist/_internal/customization-body.d.ts.map +1 -0
  22. package/dist/_internal/customization-body.js +15 -0
  23. package/dist/_internal/customization-body.js.map +1 -0
  24. package/dist/_internal/duplicate-names.d.ts +12 -0
  25. package/dist/_internal/duplicate-names.d.ts.map +1 -0
  26. package/dist/_internal/duplicate-names.js +24 -0
  27. package/dist/_internal/duplicate-names.js.map +1 -0
  28. package/dist/_internal/file-system.d.ts +21 -0
  29. package/dist/_internal/file-system.d.ts.map +1 -0
  30. package/dist/_internal/file-system.js +86 -0
  31. package/dist/_internal/file-system.js.map +1 -0
  32. package/dist/_internal/frontmatter.d.ts +37 -0
  33. package/dist/_internal/frontmatter.d.ts.map +1 -0
  34. package/dist/_internal/frontmatter.js +398 -0
  35. package/dist/_internal/frontmatter.js.map +1 -0
  36. package/dist/_internal/markdown-links.d.ts +21 -0
  37. package/dist/_internal/markdown-links.d.ts.map +1 -0
  38. package/dist/_internal/markdown-links.js +81 -0
  39. package/dist/_internal/markdown-links.js.map +1 -0
  40. package/dist/_internal/markdown-rule.d.ts +13 -0
  41. package/dist/_internal/markdown-rule.d.ts.map +1 -0
  42. package/dist/_internal/markdown-rule.js +19 -0
  43. package/dist/_internal/markdown-rule.js.map +1 -0
  44. package/dist/_internal/repository-hooks-json.d.ts +55 -0
  45. package/dist/_internal/repository-hooks-json.d.ts.map +1 -0
  46. package/dist/_internal/repository-hooks-json.js +80 -0
  47. package/dist/_internal/repository-hooks-json.js.map +1 -0
  48. package/dist/_internal/rule-catalog.d.ts +20 -0
  49. package/dist/_internal/rule-catalog.d.ts.map +1 -0
  50. package/dist/_internal/rule-catalog.js +97 -0
  51. package/dist/_internal/rule-catalog.js.map +1 -0
  52. package/dist/_internal/rule-docs-url.d.ts +9 -0
  53. package/dist/_internal/rule-docs-url.d.ts.map +1 -0
  54. package/dist/_internal/rule-docs-url.js +9 -0
  55. package/dist/_internal/rule-docs-url.js.map +1 -0
  56. package/dist/_internal/rules-registry.d.ts +83 -0
  57. package/dist/_internal/rules-registry.d.ts.map +1 -0
  58. package/dist/_internal/rules-registry.js +145 -0
  59. package/dist/_internal/rules-registry.js.map +1 -0
  60. package/dist/_internal/skill-files.d.ts +8 -0
  61. package/dist/_internal/skill-files.d.ts.map +1 -0
  62. package/dist/_internal/skill-files.js +18 -0
  63. package/dist/_internal/skill-files.js.map +1 -0
  64. package/dist/plugin.cjs +5312 -0
  65. package/dist/plugin.cjs.map +7 -0
  66. package/dist/plugin.d.cts +34 -0
  67. package/dist/plugin.d.ts +34 -0
  68. package/dist/plugin.d.ts.map +1 -0
  69. package/dist/plugin.js +142 -0
  70. package/dist/plugin.js.map +1 -0
  71. package/dist/rules/no-blank-customization-body.d.ts +4 -0
  72. package/dist/rules/no-blank-customization-body.d.ts.map +1 -0
  73. package/dist/rules/no-blank-customization-body.js +49 -0
  74. package/dist/rules/no-blank-customization-body.js.map +1 -0
  75. package/dist/rules/no-blank-repository-instructions.d.ts +4 -0
  76. package/dist/rules/no-blank-repository-instructions.d.ts.map +1 -0
  77. package/dist/rules/no-blank-repository-instructions.js +49 -0
  78. package/dist/rules/no-blank-repository-instructions.js.map +1 -0
  79. package/dist/rules/no-blank-skill-body.d.ts +4 -0
  80. package/dist/rules/no-blank-skill-body.d.ts.map +1 -0
  81. package/dist/rules/no-blank-skill-body.js +48 -0
  82. package/dist/rules/no-blank-skill-body.js.map +1 -0
  83. package/dist/rules/no-deprecated-agent-infer.d.ts +4 -0
  84. package/dist/rules/no-deprecated-agent-infer.d.ts.map +1 -0
  85. package/dist/rules/no-deprecated-agent-infer.js +48 -0
  86. package/dist/rules/no-deprecated-agent-infer.js.map +1 -0
  87. package/dist/rules/no-duplicate-agent-names.d.ts +4 -0
  88. package/dist/rules/no-duplicate-agent-names.d.ts.map +1 -0
  89. package/dist/rules/no-duplicate-agent-names.js +72 -0
  90. package/dist/rules/no-duplicate-agent-names.js.map +1 -0
  91. package/dist/rules/no-duplicate-prompt-names.d.ts +4 -0
  92. package/dist/rules/no-duplicate-prompt-names.d.ts.map +1 -0
  93. package/dist/rules/no-duplicate-prompt-names.js +72 -0
  94. package/dist/rules/no-duplicate-prompt-names.js.map +1 -0
  95. package/dist/rules/no-duplicate-skill-names.d.ts +4 -0
  96. package/dist/rules/no-duplicate-skill-names.d.ts.map +1 -0
  97. package/dist/rules/no-duplicate-skill-names.js +74 -0
  98. package/dist/rules/no-duplicate-skill-names.js.map +1 -0
  99. package/dist/rules/no-duplicate-slash-command-names.d.ts +4 -0
  100. package/dist/rules/no-duplicate-slash-command-names.d.ts.map +1 -0
  101. package/dist/rules/no-duplicate-slash-command-names.js +82 -0
  102. package/dist/rules/no-duplicate-slash-command-names.js.map +1 -0
  103. package/dist/rules/no-empty-repository-hook-arrays.d.ts +4 -0
  104. package/dist/rules/no-empty-repository-hook-arrays.d.ts.map +1 -0
  105. package/dist/rules/no-empty-repository-hook-arrays.js +49 -0
  106. package/dist/rules/no-empty-repository-hook-arrays.js.map +1 -0
  107. package/dist/rules/no-legacy-chatmode-files.d.ts +4 -0
  108. package/dist/rules/no-legacy-chatmode-files.d.ts.map +1 -0
  109. package/dist/rules/no-legacy-chatmode-files.js +42 -0
  110. package/dist/rules/no-legacy-chatmode-files.js.map +1 -0
  111. package/dist/rules/prefer-custom-instructions-under-code-review-limit.d.ts +4 -0
  112. package/dist/rules/prefer-custom-instructions-under-code-review-limit.d.ts.map +1 -0
  113. package/dist/rules/prefer-custom-instructions-under-code-review-limit.js +52 -0
  114. package/dist/rules/prefer-custom-instructions-under-code-review-limit.js.map +1 -0
  115. package/dist/rules/prefer-fast-repository-hooks.d.ts +4 -0
  116. package/dist/rules/prefer-fast-repository-hooks.d.ts.map +1 -0
  117. package/dist/rules/prefer-fast-repository-hooks.js +58 -0
  118. package/dist/rules/prefer-fast-repository-hooks.js.map +1 -0
  119. package/dist/rules/prefer-qualified-tools.d.ts +4 -0
  120. package/dist/rules/prefer-qualified-tools.d.ts.map +1 -0
  121. package/dist/rules/prefer-qualified-tools.js +56 -0
  122. package/dist/rules/prefer-qualified-tools.js.map +1 -0
  123. package/dist/rules/require-agent-tool-for-subagents.d.ts +4 -0
  124. package/dist/rules/require-agent-tool-for-subagents.d.ts.map +1 -0
  125. package/dist/rules/require-agent-tool-for-subagents.js +64 -0
  126. package/dist/rules/require-agent-tool-for-subagents.js.map +1 -0
  127. package/dist/rules/require-agents-md-for-cross-surface-agent-instructions.d.ts +4 -0
  128. package/dist/rules/require-agents-md-for-cross-surface-agent-instructions.d.ts.map +1 -0
  129. package/dist/rules/require-agents-md-for-cross-surface-agent-instructions.js +50 -0
  130. package/dist/rules/require-agents-md-for-cross-surface-agent-instructions.js.map +1 -0
  131. package/dist/rules/require-chatmode-file-metadata.d.ts +4 -0
  132. package/dist/rules/require-chatmode-file-metadata.d.ts.map +1 -0
  133. package/dist/rules/require-chatmode-file-metadata.js +59 -0
  134. package/dist/rules/require-chatmode-file-metadata.js.map +1 -0
  135. package/dist/rules/require-existing-agent-hook-cwd.d.ts +4 -0
  136. package/dist/rules/require-existing-agent-hook-cwd.d.ts.map +1 -0
  137. package/dist/rules/require-existing-agent-hook-cwd.js +64 -0
  138. package/dist/rules/require-existing-agent-hook-cwd.js.map +1 -0
  139. package/dist/rules/require-existing-agent-mcp-servers.d.ts +4 -0
  140. package/dist/rules/require-existing-agent-mcp-servers.d.ts.map +1 -0
  141. package/dist/rules/require-existing-agent-mcp-servers.js +58 -0
  142. package/dist/rules/require-existing-agent-mcp-servers.js.map +1 -0
  143. package/dist/rules/require-existing-relative-agent-links.d.ts +4 -0
  144. package/dist/rules/require-existing-relative-agent-links.d.ts.map +1 -0
  145. package/dist/rules/require-existing-relative-agent-links.js +61 -0
  146. package/dist/rules/require-existing-relative-agent-links.js.map +1 -0
  147. package/dist/rules/require-existing-relative-instructions-links.d.ts +4 -0
  148. package/dist/rules/require-existing-relative-instructions-links.d.ts.map +1 -0
  149. package/dist/rules/require-existing-relative-instructions-links.js +61 -0
  150. package/dist/rules/require-existing-relative-instructions-links.js.map +1 -0
  151. package/dist/rules/require-existing-relative-prompt-links.d.ts +4 -0
  152. package/dist/rules/require-existing-relative-prompt-links.d.ts.map +1 -0
  153. package/dist/rules/require-existing-relative-prompt-links.js +61 -0
  154. package/dist/rules/require-existing-relative-prompt-links.js.map +1 -0
  155. package/dist/rules/require-existing-relative-skill-links.d.ts +4 -0
  156. package/dist/rules/require-existing-relative-skill-links.d.ts.map +1 -0
  157. package/dist/rules/require-existing-relative-skill-links.js +61 -0
  158. package/dist/rules/require-existing-relative-skill-links.js.map +1 -0
  159. package/dist/rules/require-existing-repository-hook-cwd.d.ts +4 -0
  160. package/dist/rules/require-existing-repository-hook-cwd.d.ts.map +1 -0
  161. package/dist/rules/require-existing-repository-hook-cwd.js +65 -0
  162. package/dist/rules/require-existing-repository-hook-cwd.js.map +1 -0
  163. package/dist/rules/require-github-copilot-target-for-mcp-servers.d.ts +4 -0
  164. package/dist/rules/require-github-copilot-target-for-mcp-servers.d.ts.map +1 -0
  165. package/dist/rules/require-github-copilot-target-for-mcp-servers.js +63 -0
  166. package/dist/rules/require-github-copilot-target-for-mcp-servers.js.map +1 -0
  167. package/dist/rules/require-instructions-apply-to.d.ts +4 -0
  168. package/dist/rules/require-instructions-apply-to.d.ts.map +1 -0
  169. package/dist/rules/require-instructions-apply-to.js +60 -0
  170. package/dist/rules/require-instructions-apply-to.js.map +1 -0
  171. package/dist/rules/require-json-agent-mcp-servers.d.ts +4 -0
  172. package/dist/rules/require-json-agent-mcp-servers.d.ts.map +1 -0
  173. package/dist/rules/require-json-agent-mcp-servers.js +58 -0
  174. package/dist/rules/require-json-agent-mcp-servers.js.map +1 -0
  175. package/dist/rules/require-prompt-file-metadata.d.ts +4 -0
  176. package/dist/rules/require-prompt-file-metadata.d.ts.map +1 -0
  177. package/dist/rules/require-prompt-file-metadata.js +104 -0
  178. package/dist/rules/require-prompt-file-metadata.js.map +1 -0
  179. package/dist/rules/require-qualified-agent-handoff-models.d.ts +4 -0
  180. package/dist/rules/require-qualified-agent-handoff-models.d.ts.map +1 -0
  181. package/dist/rules/require-qualified-agent-handoff-models.js +78 -0
  182. package/dist/rules/require-qualified-agent-handoff-models.js.map +1 -0
  183. package/dist/rules/require-relative-agent-hook-cwd.d.ts +4 -0
  184. package/dist/rules/require-relative-agent-hook-cwd.d.ts.map +1 -0
  185. package/dist/rules/require-relative-agent-hook-cwd.js +70 -0
  186. package/dist/rules/require-relative-agent-hook-cwd.js.map +1 -0
  187. package/dist/rules/require-relative-agent-links.d.ts +4 -0
  188. package/dist/rules/require-relative-agent-links.d.ts.map +1 -0
  189. package/dist/rules/require-relative-agent-links.js +58 -0
  190. package/dist/rules/require-relative-agent-links.js.map +1 -0
  191. package/dist/rules/require-relative-instructions-links.d.ts +4 -0
  192. package/dist/rules/require-relative-instructions-links.d.ts.map +1 -0
  193. package/dist/rules/require-relative-instructions-links.js +58 -0
  194. package/dist/rules/require-relative-instructions-links.js.map +1 -0
  195. package/dist/rules/require-relative-prompt-links.d.ts +4 -0
  196. package/dist/rules/require-relative-prompt-links.d.ts.map +1 -0
  197. package/dist/rules/require-relative-prompt-links.js +82 -0
  198. package/dist/rules/require-relative-prompt-links.js.map +1 -0
  199. package/dist/rules/require-relative-repository-hook-cwd.d.ts +4 -0
  200. package/dist/rules/require-relative-repository-hook-cwd.d.ts.map +1 -0
  201. package/dist/rules/require-relative-repository-hook-cwd.js +63 -0
  202. package/dist/rules/require-relative-repository-hook-cwd.js.map +1 -0
  203. package/dist/rules/require-relative-skill-links.d.ts +4 -0
  204. package/dist/rules/require-relative-skill-links.d.ts.map +1 -0
  205. package/dist/rules/require-relative-skill-links.js +58 -0
  206. package/dist/rules/require-relative-skill-links.js.map +1 -0
  207. package/dist/rules/require-repository-hook-arrays.d.ts +4 -0
  208. package/dist/rules/require-repository-hook-arrays.d.ts.map +1 -0
  209. package/dist/rules/require-repository-hook-arrays.js +54 -0
  210. package/dist/rules/require-repository-hook-arrays.js.map +1 -0
  211. package/dist/rules/require-repository-hook-command-shell.d.ts +4 -0
  212. package/dist/rules/require-repository-hook-command-shell.d.ts.map +1 -0
  213. package/dist/rules/require-repository-hook-command-shell.js +57 -0
  214. package/dist/rules/require-repository-hook-command-shell.js.map +1 -0
  215. package/dist/rules/require-repository-hooks-object.d.ts +4 -0
  216. package/dist/rules/require-repository-hooks-object.d.ts.map +1 -0
  217. package/dist/rules/require-repository-hooks-object.js +50 -0
  218. package/dist/rules/require-repository-hooks-object.js.map +1 -0
  219. package/dist/rules/require-repository-instructions-file.d.ts +4 -0
  220. package/dist/rules/require-repository-instructions-file.d.ts.map +1 -0
  221. package/dist/rules/require-repository-instructions-file.js +50 -0
  222. package/dist/rules/require-repository-instructions-file.js.map +1 -0
  223. package/dist/rules/require-skill-file-location.d.ts +4 -0
  224. package/dist/rules/require-skill-file-location.d.ts.map +1 -0
  225. package/dist/rules/require-skill-file-location.js +46 -0
  226. package/dist/rules/require-skill-file-location.js.map +1 -0
  227. package/dist/rules/require-skill-file-metadata.d.ts +4 -0
  228. package/dist/rules/require-skill-file-metadata.d.ts.map +1 -0
  229. package/dist/rules/require-skill-file-metadata.js +60 -0
  230. package/dist/rules/require-skill-file-metadata.js.map +1 -0
  231. package/dist/rules/require-skill-md-filename.d.ts +4 -0
  232. package/dist/rules/require-skill-md-filename.d.ts.map +1 -0
  233. package/dist/rules/require-skill-md-filename.js +55 -0
  234. package/dist/rules/require-skill-md-filename.js.map +1 -0
  235. package/dist/rules/require-skill-name-match-directory.d.ts +4 -0
  236. package/dist/rules/require-skill-name-match-directory.d.ts.map +1 -0
  237. package/dist/rules/require-skill-name-match-directory.js +59 -0
  238. package/dist/rules/require-skill-name-match-directory.js.map +1 -0
  239. package/dist/rules/require-string-repository-hook-env-values.d.ts +4 -0
  240. package/dist/rules/require-string-repository-hook-env-values.d.ts.map +1 -0
  241. package/dist/rules/require-string-repository-hook-env-values.js +59 -0
  242. package/dist/rules/require-string-repository-hook-env-values.js.map +1 -0
  243. package/dist/rules/require-valid-agent-argument-hint.d.ts +4 -0
  244. package/dist/rules/require-valid-agent-argument-hint.d.ts.map +1 -0
  245. package/dist/rules/require-valid-agent-argument-hint.js +51 -0
  246. package/dist/rules/require-valid-agent-argument-hint.js.map +1 -0
  247. package/dist/rules/require-valid-agent-handoff-send.d.ts +4 -0
  248. package/dist/rules/require-valid-agent-handoff-send.d.ts.map +1 -0
  249. package/dist/rules/require-valid-agent-handoff-send.js +67 -0
  250. package/dist/rules/require-valid-agent-handoff-send.js.map +1 -0
  251. package/dist/rules/require-valid-agent-handoffs.d.ts +4 -0
  252. package/dist/rules/require-valid-agent-handoffs.d.ts.map +1 -0
  253. package/dist/rules/require-valid-agent-handoffs.js +78 -0
  254. package/dist/rules/require-valid-agent-handoffs.js.map +1 -0
  255. package/dist/rules/require-valid-agent-hook-events.d.ts +4 -0
  256. package/dist/rules/require-valid-agent-hook-events.d.ts.map +1 -0
  257. package/dist/rules/require-valid-agent-hook-events.js +68 -0
  258. package/dist/rules/require-valid-agent-hook-events.js.map +1 -0
  259. package/dist/rules/require-valid-agent-hook-timeouts.d.ts +4 -0
  260. package/dist/rules/require-valid-agent-hook-timeouts.d.ts.map +1 -0
  261. package/dist/rules/require-valid-agent-hook-timeouts.js +83 -0
  262. package/dist/rules/require-valid-agent-hook-timeouts.js.map +1 -0
  263. package/dist/rules/require-valid-agent-hooks.d.ts +4 -0
  264. package/dist/rules/require-valid-agent-hooks.d.ts.map +1 -0
  265. package/dist/rules/require-valid-agent-hooks.js +86 -0
  266. package/dist/rules/require-valid-agent-hooks.js.map +1 -0
  267. package/dist/rules/require-valid-agent-invocation-controls.d.ts +4 -0
  268. package/dist/rules/require-valid-agent-invocation-controls.d.ts.map +1 -0
  269. package/dist/rules/require-valid-agent-invocation-controls.js +71 -0
  270. package/dist/rules/require-valid-agent-invocation-controls.js.map +1 -0
  271. package/dist/rules/require-valid-agent-mcp-servers.d.ts +4 -0
  272. package/dist/rules/require-valid-agent-mcp-servers.d.ts.map +1 -0
  273. package/dist/rules/require-valid-agent-mcp-servers.js +64 -0
  274. package/dist/rules/require-valid-agent-mcp-servers.js.map +1 -0
  275. package/dist/rules/require-valid-agent-model.d.ts +4 -0
  276. package/dist/rules/require-valid-agent-model.d.ts.map +1 -0
  277. package/dist/rules/require-valid-agent-model.js +64 -0
  278. package/dist/rules/require-valid-agent-model.js.map +1 -0
  279. package/dist/rules/require-valid-agent-name.d.ts +4 -0
  280. package/dist/rules/require-valid-agent-name.d.ts.map +1 -0
  281. package/dist/rules/require-valid-agent-name.js +51 -0
  282. package/dist/rules/require-valid-agent-name.js.map +1 -0
  283. package/dist/rules/require-valid-agent-subagents.d.ts +4 -0
  284. package/dist/rules/require-valid-agent-subagents.d.ts.map +1 -0
  285. package/dist/rules/require-valid-agent-subagents.js +79 -0
  286. package/dist/rules/require-valid-agent-subagents.js.map +1 -0
  287. package/dist/rules/require-valid-agent-target.d.ts +4 -0
  288. package/dist/rules/require-valid-agent-target.d.ts.map +1 -0
  289. package/dist/rules/require-valid-agent-target.js +62 -0
  290. package/dist/rules/require-valid-agent-target.js.map +1 -0
  291. package/dist/rules/require-valid-agent-tools.d.ts +4 -0
  292. package/dist/rules/require-valid-agent-tools.d.ts.map +1 -0
  293. package/dist/rules/require-valid-agent-tools.js +64 -0
  294. package/dist/rules/require-valid-agent-tools.js.map +1 -0
  295. package/dist/rules/require-valid-instructions-apply-to-globs.d.ts +4 -0
  296. package/dist/rules/require-valid-instructions-apply-to-globs.d.ts.map +1 -0
  297. package/dist/rules/require-valid-instructions-apply-to-globs.js +79 -0
  298. package/dist/rules/require-valid-instructions-apply-to-globs.js.map +1 -0
  299. package/dist/rules/require-valid-prompt-argument-hint.d.ts +4 -0
  300. package/dist/rules/require-valid-prompt-argument-hint.d.ts.map +1 -0
  301. package/dist/rules/require-valid-prompt-argument-hint.js +52 -0
  302. package/dist/rules/require-valid-prompt-argument-hint.js.map +1 -0
  303. package/dist/rules/require-valid-prompt-model.d.ts +4 -0
  304. package/dist/rules/require-valid-prompt-model.d.ts.map +1 -0
  305. package/dist/rules/require-valid-prompt-model.js +77 -0
  306. package/dist/rules/require-valid-prompt-model.js.map +1 -0
  307. package/dist/rules/require-valid-prompt-name.d.ts +4 -0
  308. package/dist/rules/require-valid-prompt-name.d.ts.map +1 -0
  309. package/dist/rules/require-valid-prompt-name.js +51 -0
  310. package/dist/rules/require-valid-prompt-name.js.map +1 -0
  311. package/dist/rules/require-valid-prompt-tools.d.ts +4 -0
  312. package/dist/rules/require-valid-prompt-tools.d.ts.map +1 -0
  313. package/dist/rules/require-valid-prompt-tools.js +64 -0
  314. package/dist/rules/require-valid-prompt-tools.js.map +1 -0
  315. package/dist/rules/require-valid-repository-hook-command-type.d.ts +4 -0
  316. package/dist/rules/require-valid-repository-hook-command-type.d.ts.map +1 -0
  317. package/dist/rules/require-valid-repository-hook-command-type.js +58 -0
  318. package/dist/rules/require-valid-repository-hook-command-type.js.map +1 -0
  319. package/dist/rules/require-valid-repository-hook-env.d.ts +4 -0
  320. package/dist/rules/require-valid-repository-hook-env.d.ts.map +1 -0
  321. package/dist/rules/require-valid-repository-hook-env.js +57 -0
  322. package/dist/rules/require-valid-repository-hook-env.js.map +1 -0
  323. package/dist/rules/require-valid-repository-hook-events.d.ts +4 -0
  324. package/dist/rules/require-valid-repository-hook-events.d.ts.map +1 -0
  325. package/dist/rules/require-valid-repository-hook-events.js +55 -0
  326. package/dist/rules/require-valid-repository-hook-events.js.map +1 -0
  327. package/dist/rules/require-valid-repository-hook-timeouts.d.ts +4 -0
  328. package/dist/rules/require-valid-repository-hook-timeouts.d.ts.map +1 -0
  329. package/dist/rules/require-valid-repository-hook-timeouts.js +59 -0
  330. package/dist/rules/require-valid-repository-hook-timeouts.js.map +1 -0
  331. package/dist/rules/require-valid-repository-hook-version.d.ts +4 -0
  332. package/dist/rules/require-valid-repository-hook-version.d.ts.map +1 -0
  333. package/dist/rules/require-valid-repository-hook-version.js +53 -0
  334. package/dist/rules/require-valid-repository-hook-version.js.map +1 -0
  335. package/dist/rules/require-valid-skill-directory-name.d.ts +4 -0
  336. package/dist/rules/require-valid-skill-directory-name.d.ts.map +1 -0
  337. package/dist/rules/require-valid-skill-directory-name.js +50 -0
  338. package/dist/rules/require-valid-skill-directory-name.js.map +1 -0
  339. package/dist/rules/require-valid-skill-license.d.ts +4 -0
  340. package/dist/rules/require-valid-skill-license.d.ts.map +1 -0
  341. package/dist/rules/require-valid-skill-license.js +47 -0
  342. package/dist/rules/require-valid-skill-license.js.map +1 -0
  343. package/dist/rules/require-valid-skill-name.d.ts +4 -0
  344. package/dist/rules/require-valid-skill-name.d.ts.map +1 -0
  345. package/dist/rules/require-valid-skill-name.js +57 -0
  346. package/dist/rules/require-valid-skill-name.js.map +1 -0
  347. package/docs/rules/getting-started.md +24 -0
  348. package/docs/rules/guides/copilot-customization-files.md +17 -0
  349. package/docs/rules/no-blank-customization-body.md +52 -0
  350. package/docs/rules/no-blank-repository-instructions.md +37 -0
  351. package/docs/rules/no-blank-skill-body.md +41 -0
  352. package/docs/rules/no-deprecated-agent-infer.md +42 -0
  353. package/docs/rules/no-duplicate-agent-names.md +36 -0
  354. package/docs/rules/no-duplicate-prompt-names.md +36 -0
  355. package/docs/rules/no-duplicate-skill-names.md +37 -0
  356. package/docs/rules/no-duplicate-slash-command-names.md +40 -0
  357. package/docs/rules/no-empty-repository-hook-arrays.md +44 -0
  358. package/docs/rules/no-legacy-chatmode-files.md +53 -0
  359. package/docs/rules/overview.md +27 -0
  360. package/docs/rules/prefer-custom-instructions-under-code-review-limit.md +39 -0
  361. package/docs/rules/prefer-fast-repository-hooks.md +43 -0
  362. package/docs/rules/prefer-qualified-tools.md +49 -0
  363. package/docs/rules/presets/all.md +82 -0
  364. package/docs/rules/presets/index.md +78 -0
  365. package/docs/rules/presets/minimal.md +16 -0
  366. package/docs/rules/presets/recommended.md +67 -0
  367. package/docs/rules/presets/strict.md +81 -0
  368. package/docs/rules/require-agent-tool-for-subagents.md +44 -0
  369. package/docs/rules/require-agents-md-for-cross-surface-agent-instructions.md +39 -0
  370. package/docs/rules/require-chatmode-file-metadata.md +41 -0
  371. package/docs/rules/require-existing-agent-hook-cwd.md +51 -0
  372. package/docs/rules/require-existing-agent-mcp-servers.md +43 -0
  373. package/docs/rules/require-existing-relative-agent-links.md +41 -0
  374. package/docs/rules/require-existing-relative-instructions-links.md +43 -0
  375. package/docs/rules/require-existing-relative-prompt-links.md +41 -0
  376. package/docs/rules/require-existing-relative-skill-links.md +44 -0
  377. package/docs/rules/require-existing-repository-hook-cwd.md +45 -0
  378. package/docs/rules/require-github-copilot-target-for-mcp-servers.md +46 -0
  379. package/docs/rules/require-instructions-apply-to.md +40 -0
  380. package/docs/rules/require-json-agent-mcp-servers.md +41 -0
  381. package/docs/rules/require-prompt-file-metadata.md +45 -0
  382. package/docs/rules/require-qualified-agent-handoff-models.md +47 -0
  383. package/docs/rules/require-relative-agent-hook-cwd.md +50 -0
  384. package/docs/rules/require-relative-agent-links.md +40 -0
  385. package/docs/rules/require-relative-instructions-links.md +42 -0
  386. package/docs/rules/require-relative-prompt-links.md +43 -0
  387. package/docs/rules/require-relative-repository-hook-cwd.md +43 -0
  388. package/docs/rules/require-relative-skill-links.md +42 -0
  389. package/docs/rules/require-repository-hook-arrays.md +33 -0
  390. package/docs/rules/require-repository-hook-command-shell.md +44 -0
  391. package/docs/rules/require-repository-hooks-object.md +34 -0
  392. package/docs/rules/require-repository-instructions-file.md +42 -0
  393. package/docs/rules/require-skill-file-location.md +33 -0
  394. package/docs/rules/require-skill-file-metadata.md +40 -0
  395. package/docs/rules/require-skill-md-filename.md +43 -0
  396. package/docs/rules/require-skill-name-match-directory.md +46 -0
  397. package/docs/rules/require-string-repository-hook-env-values.md +43 -0
  398. package/docs/rules/require-valid-agent-argument-hint.md +42 -0
  399. package/docs/rules/require-valid-agent-handoff-send.md +49 -0
  400. package/docs/rules/require-valid-agent-handoffs.md +51 -0
  401. package/docs/rules/require-valid-agent-hook-events.md +47 -0
  402. package/docs/rules/require-valid-agent-hook-timeouts.md +49 -0
  403. package/docs/rules/require-valid-agent-hooks.md +49 -0
  404. package/docs/rules/require-valid-agent-invocation-controls.md +45 -0
  405. package/docs/rules/require-valid-agent-mcp-servers.md +45 -0
  406. package/docs/rules/require-valid-agent-model.md +43 -0
  407. package/docs/rules/require-valid-agent-name.md +42 -0
  408. package/docs/rules/require-valid-agent-subagents.md +52 -0
  409. package/docs/rules/require-valid-agent-target.md +44 -0
  410. package/docs/rules/require-valid-agent-tools.md +43 -0
  411. package/docs/rules/require-valid-instructions-apply-to-globs.md +45 -0
  412. package/docs/rules/require-valid-prompt-argument-hint.md +42 -0
  413. package/docs/rules/require-valid-prompt-model.md +45 -0
  414. package/docs/rules/require-valid-prompt-name.md +42 -0
  415. package/docs/rules/require-valid-prompt-tools.md +43 -0
  416. package/docs/rules/require-valid-repository-hook-command-type.md +45 -0
  417. package/docs/rules/require-valid-repository-hook-env.md +43 -0
  418. package/docs/rules/require-valid-repository-hook-events.md +34 -0
  419. package/docs/rules/require-valid-repository-hook-timeouts.md +43 -0
  420. package/docs/rules/require-valid-repository-hook-version.md +34 -0
  421. package/docs/rules/require-valid-skill-directory-name.md +34 -0
  422. package/docs/rules/require-valid-skill-license.md +45 -0
  423. package/docs/rules/require-valid-skill-name.md +43 -0
  424. package/package.json +562 -0
@@ -0,0 +1,43 @@
1
+ # require-existing-relative-instructions-links
2
+
3
+ Require relative Markdown links in path-specific Copilot instructions files to resolve to existing workspace targets.
4
+
5
+ > **Rule catalog ID:** R032
6
+
7
+ ## Targeted pattern scope
8
+
9
+ - `.github/instructions/**/*.instructions.md`
10
+
11
+ ## What this rule reports
12
+
13
+ - relative instructions links whose resolved workspace target does not exist
14
+
15
+ ## Why this rule exists
16
+
17
+ Path-specific instructions commonly link to package-specific conventions or local examples. Broken links weaken those instructions by pointing reviewers and coding agents at context that is no longer there.
18
+
19
+ ## ❌ Incorrect
20
+
21
+ ```md
22
+ ---
23
+ description: Frontend guidance
24
+ applyTo: src/**/*.ts
25
+ ---
26
+ See [frontend standards](../../docs/frontend.md).
27
+ ```
28
+
29
+ when `../../docs/frontend.md` does not exist from the instructions file.
30
+
31
+ ## ✅ Correct
32
+
33
+ ```md
34
+ ---
35
+ description: Frontend guidance
36
+ applyTo: src/**/*.ts
37
+ ---
38
+ See [frontend standards](../../docs/standards/frontend.md).
39
+ ```
40
+
41
+ ## Further reading
42
+
43
+ - [VS Code Docs: Custom instructions](https://code.visualstudio.com/docs/copilot/customization/custom-instructions)
@@ -0,0 +1,41 @@
1
+ # require-existing-relative-prompt-links
2
+
3
+ Require relative Markdown links in Copilot prompt files to resolve to existing workspace targets.
4
+
5
+ > **Rule catalog ID:** R030
6
+
7
+ ## Targeted pattern scope
8
+
9
+ - `.github/prompts/**/*.prompt.md`
10
+
11
+ ## What this rule reports
12
+
13
+ - relative links whose resolved workspace target does not exist
14
+
15
+ ## Why this rule exists
16
+
17
+ Relative links are only useful when they actually resolve. Broken prompt links can hide important context, examples, or runbooks from the people and tools invoking the prompt.
18
+
19
+ ## ❌ Incorrect
20
+
21
+ ```md
22
+ ---
23
+ description: Review a pull request
24
+ ---
25
+ See [review guide](../docs/review-guide.md).
26
+ ```
27
+
28
+ when `../docs/review-guide.md` does not exist from the prompt file.
29
+
30
+ ## ✅ Correct
31
+
32
+ ```md
33
+ ---
34
+ description: Review a pull request
35
+ ---
36
+ See [review guide](../../docs/review-guide.md).
37
+ ```
38
+
39
+ ## Further reading
40
+
41
+ - [VS Code Docs: Prompt files](https://code.visualstudio.com/docs/copilot/customization/prompt-files)
@@ -0,0 +1,44 @@
1
+ # require-existing-relative-skill-links
2
+
3
+ Require relative Markdown links in Copilot skill definition files to resolve to existing workspace resources.
4
+
5
+ > **Rule catalog ID:** R053
6
+
7
+ ## Targeted pattern scope
8
+
9
+ - `.github/skills/**/SKILL.md`
10
+ - `.claude/skills/**/SKILL.md`
11
+
12
+ ## What this rule reports
13
+
14
+ - relative skill links whose resolved workspace target does not exist
15
+
16
+ ## Why this rule exists
17
+
18
+ Skills often depend on linked guides, examples, and scripts stored alongside the definition. Broken relative links make the skill incomplete even though its frontmatter and body appear structurally valid.
19
+
20
+ ## ❌ Incorrect
21
+
22
+ ```md
23
+ ---
24
+ name: review
25
+ description: Review code changes.
26
+ ---
27
+ See [guide](guide.md).
28
+ ```
29
+
30
+ when `guide.md` does not exist next to the skill definition.
31
+
32
+ ## ✅ Correct
33
+
34
+ ```md
35
+ ---
36
+ name: review
37
+ description: Review code changes.
38
+ ---
39
+ See [guide](reference/guide.md).
40
+ ```
41
+
42
+ ## Further reading
43
+
44
+ - [GitHub Docs: Creating agent skills for GitHub Copilot](https://docs.github.com/en/copilot/how-tos/use-copilot-agents/coding-agent/create-skills)
@@ -0,0 +1,45 @@
1
+ # require-existing-repository-hook-cwd
2
+
3
+ Require repository hook `cwd` values to resolve to existing repository paths.
4
+
5
+ > **Rule catalog ID:** R063
6
+
7
+ ## Targeted pattern scope
8
+
9
+ - `.github/hooks/**/*.json`
10
+
11
+ ## What this rule reports
12
+
13
+ - relative hook `cwd` values that do not exist in the repository
14
+
15
+ ## Why this rule exists
16
+
17
+ A repository-relative working directory still needs to point somewhere real. Validating the path on disk catches stale or misspelled hook working directories before the hook runs.
18
+
19
+ ## ❌ Incorrect
20
+
21
+ ```json
22
+ {
23
+ "version": 1,
24
+ "hooks": {
25
+ "sessionStart": [{ "type": "command", "bash": "echo ready", "cwd": "scripts/hooks" }]
26
+ }
27
+ }
28
+ ```
29
+
30
+ when `scripts/hooks` does not exist in the repository.
31
+
32
+ ## ✅ Correct
33
+
34
+ ```json
35
+ {
36
+ "version": 1,
37
+ "hooks": {
38
+ "sessionStart": [{ "type": "command", "bash": "echo ready", "cwd": "scripts" }]
39
+ }
40
+ }
41
+ ```
42
+
43
+ ## Further reading
44
+
45
+ - [GitHub Docs: Using hooks with GitHub Copilot agents](https://docs.github.com/en/copilot/how-tos/use-copilot-agents/coding-agent/use-hooks)
@@ -0,0 +1,46 @@
1
+ # require-github-copilot-target-for-mcp-servers
2
+
3
+ Require Copilot custom agents that declare `mcp-servers` to set `target: github-copilot`.
4
+
5
+ > **Rule catalog ID:** R010
6
+
7
+ ## Targeted pattern scope
8
+
9
+ - `.github/agents/**/*.agent.md`
10
+
11
+ ## What this rule reports
12
+
13
+ - custom agent files that declare `mcp-servers` without any `target`
14
+ - custom agent files that declare `mcp-servers` with an empty `target`
15
+ - custom agent files that declare `mcp-servers` with a non-`github-copilot` target
16
+
17
+ ## Why this rule exists
18
+
19
+ The `mcp-servers` frontmatter is specific to GitHub Copilot-targeted custom agents. If a custom agent opts into `mcp-servers` but omits `target: github-copilot`, the file drifts away from the current VS Code contract and can miscommunicate how that agent is meant to run.
20
+
21
+ ## ❌ Incorrect
22
+
23
+ ```md
24
+ ---
25
+ description: Coordinate release automation through MCP servers
26
+ target: vscode
27
+ mcp-servers: [release-coordinator.json]
28
+ ---
29
+ Coordinate release automation tasks.
30
+ ```
31
+
32
+ ## ✅ Correct
33
+
34
+ ```md
35
+ ---
36
+ description: Coordinate release automation through MCP servers
37
+ target: github-copilot
38
+ mcp-servers: [release-coordinator.json]
39
+ ---
40
+ Coordinate release automation tasks.
41
+ ```
42
+
43
+ ## Further reading
44
+
45
+ - [VS Code Docs: Custom agents](https://code.visualstudio.com/docs/copilot/customization/custom-agents)
46
+ - [VS Code January 2026 update notes: Agent extensibility](https://code.visualstudio.com/updates/v1_109)
@@ -0,0 +1,40 @@
1
+ # require-instructions-apply-to
2
+
3
+ Require path-specific Copilot instructions files to define a non-empty `applyTo` frontmatter glob.
4
+
5
+ > **Rule catalog ID:** R001
6
+
7
+ ## Targeted pattern scope
8
+
9
+ - `.github/instructions/**/*.instructions.md`
10
+
11
+ ## What this rule reports
12
+
13
+ - instructions files with missing or blank `applyTo` frontmatter
14
+
15
+ ## Why this rule exists
16
+
17
+ Path-specific instructions are only useful when Copilot can tell which files they target. Without `applyTo`, the instructions file cannot participate in automatic attachment for matching files.
18
+
19
+ ## ❌ Incorrect
20
+
21
+ ```md
22
+ ---
23
+ description: TypeScript style guidance
24
+ ---
25
+ Use `satisfies` for stable object literals.
26
+ ```
27
+
28
+ ## ✅ Correct
29
+
30
+ ```md
31
+ ---
32
+ description: TypeScript style guidance
33
+ applyTo: "src/**/*.ts"
34
+ ---
35
+ Use `satisfies` for stable object literals.
36
+ ```
37
+
38
+ ## Further reading
39
+
40
+ - [VS Code Docs: Reusable instruction files](https://code.visualstudio.com/docs/copilot/copilot-customization#_reusable-instruction-files)
@@ -0,0 +1,41 @@
1
+ # require-json-agent-mcp-servers
2
+
3
+ Require Copilot custom-agent `mcp-servers` entries to reference JSON config files.
4
+
5
+ > **Rule catalog ID:** R034
6
+
7
+ ## Targeted pattern scope
8
+
9
+ - `.github/agents/**/*.agent.md`
10
+
11
+ ## What this rule reports
12
+
13
+ - `mcp-servers` entries that do not end in `.json`
14
+
15
+ ## Why this rule exists
16
+
17
+ In practice, custom-agent `mcp-servers` entries are repository file references to MCP server configuration documents. Requiring `.json` targets makes those references more explicit and catches obvious misconfigurations early.
18
+
19
+ ## ❌ Incorrect
20
+
21
+ ```md
22
+ ---
23
+ description: Release coordinator
24
+ mcp-servers: ['release-server']
25
+ ---
26
+ Coordinate the release.
27
+ ```
28
+
29
+ ## ✅ Correct
30
+
31
+ ```md
32
+ ---
33
+ description: Release coordinator
34
+ mcp-servers: ['release-server.json']
35
+ ---
36
+ Coordinate the release.
37
+ ```
38
+
39
+ ## Further reading
40
+
41
+ - [VS Code Docs: Custom agents](https://code.visualstudio.com/docs/copilot/customization/custom-agents)
@@ -0,0 +1,45 @@
1
+ # require-prompt-file-metadata
2
+
3
+ Require reusable Copilot prompt files to declare `description`, `agent`, and built-in agent-mode `tools` metadata.
4
+
5
+ > **Rule catalog ID:** R002
6
+
7
+ ## Targeted pattern scope
8
+
9
+ - `.github/prompts/**/*.prompt.md`
10
+
11
+ ## What this rule reports
12
+
13
+ - prompt files with missing or blank `description`
14
+ - prompt files with missing or blank `agent`
15
+ - prompt files that still use deprecated `mode`
16
+ - built-in `agent` prompt files without `tools`
17
+
18
+ ## Why this rule exists
19
+
20
+ Prompt files are reusable requests. Explicit metadata makes them easier to understand, safer to run, and more consistent across repositories. Current VS Code prompt files use `agent` instead of the older `mode` key.
21
+
22
+ ## ❌ Incorrect
23
+
24
+ ```md
25
+ ---
26
+ description: Review this repository
27
+ agent: agent
28
+ ---
29
+ Audit the repository for stale branding and broken docs links.
30
+ ```
31
+
32
+ ## ✅ Correct
33
+
34
+ ```md
35
+ ---
36
+ description: Review this repository
37
+ agent: agent
38
+ tools: [search/file_search, search/read_file]
39
+ ---
40
+ Audit the repository for stale branding and broken docs links.
41
+ ```
42
+
43
+ ## Further reading
44
+
45
+ - [VS Code Docs: Reusable prompt files](https://code.visualstudio.com/docs/copilot/customization/prompt-files)
@@ -0,0 +1,47 @@
1
+ # require-qualified-agent-handoff-models
2
+
3
+ Require Copilot custom-agent handoff models to use qualified `Model Name (vendor)` names.
4
+
5
+ > **Rule catalog ID:** R013
6
+
7
+ ## Targeted pattern scope
8
+
9
+ - `.github/agents/**/*.agent.md`
10
+
11
+ ## What this rule reports
12
+
13
+ - handoff entries whose `model` value is present but not written in a qualified format such as `GPT-5 (copilot)`
14
+
15
+ ## Why this rule exists
16
+
17
+ VS Code custom-agent docs specify that `handoffs.model` should use a qualified model name in the format `Model Name (vendor)`. That keeps handoff execution explicit and avoids ambiguous shorthand model names in multi-vendor Copilot environments.
18
+
19
+ ## ❌ Incorrect
20
+
21
+ ```md
22
+ ---
23
+ description: Plan work carefully
24
+ handoffs:
25
+ - label: Start Implementation
26
+ agent: Implementer
27
+ model: GPT-5
28
+ ---
29
+ Plan the requested change before implementation.
30
+ ```
31
+
32
+ ## ✅ Correct
33
+
34
+ ```md
35
+ ---
36
+ description: Plan work carefully
37
+ handoffs:
38
+ - label: Start Implementation
39
+ agent: Implementer
40
+ model: GPT-5 (copilot)
41
+ ---
42
+ Plan the requested change before implementation.
43
+ ```
44
+
45
+ ## Further reading
46
+
47
+ - [VS Code Docs: Custom agents](https://code.visualstudio.com/docs/copilot/customization/custom-agents)
@@ -0,0 +1,50 @@
1
+ # require-relative-agent-hook-cwd
2
+
3
+ Require Copilot custom-agent hook `cwd` values to stay relative to the repository root.
4
+
5
+ > **Rule catalog ID:** R018
6
+
7
+ ## Targeted pattern scope
8
+
9
+ - `.github/agents/**/*.agent.md`
10
+
11
+ ## What this rule reports
12
+
13
+ - agent-scoped hook entries whose `cwd` value is empty
14
+ - agent-scoped hook entries whose `cwd` value is absolute, home-relative, or otherwise not repository-relative
15
+
16
+ ## Why this rule exists
17
+
18
+ VS Code documents hook `cwd` as a working directory path relative to the repository root. Absolute paths and empty values make hook execution less portable across developers and environments, and they drift away from the documented hook configuration format.
19
+
20
+ ## ❌ Incorrect
21
+
22
+ ```md
23
+ ---
24
+ description: Format files after editing
25
+ hooks:
26
+ PostToolUse:
27
+ - type: command
28
+ command: ./scripts/format.sh
29
+ cwd: C:\hooks
30
+ ---
31
+ Format edited files after tool usage.
32
+ ```
33
+
34
+ ## ✅ Correct
35
+
36
+ ```md
37
+ ---
38
+ description: Format files after editing
39
+ hooks:
40
+ PostToolUse:
41
+ - type: command
42
+ command: ./scripts/format.sh
43
+ cwd: scripts/hooks
44
+ ---
45
+ Format edited files after tool usage.
46
+ ```
47
+
48
+ ## Further reading
49
+
50
+ - [VS Code Docs: Agent hooks](https://code.visualstudio.com/docs/copilot/customization/hooks)
@@ -0,0 +1,40 @@
1
+ # require-relative-agent-links
2
+
3
+ Require Copilot custom agents to use relative Markdown links for workspace files.
4
+
5
+ > **Rule catalog ID:** R028
6
+
7
+ ## Targeted pattern scope
8
+
9
+ - `.github/agents/**/*.agent.md`
10
+
11
+ ## What this rule reports
12
+
13
+ - root-relative links such as `/docs/runbook.md`
14
+ - file links that use other non-relative workspace-style paths instead of paths relative to the current agent file
15
+
16
+ ## Why this rule exists
17
+
18
+ Relative links make custom-agent instructions portable across forks, local clones, and different workspace roots. They also match how Copilot customization content typically references repository resources.
19
+
20
+ ## ❌ Incorrect
21
+
22
+ ```md
23
+ ---
24
+ description: Release coordinator
25
+ ---
26
+ See [runbook](/docs/release-runbook.md).
27
+ ```
28
+
29
+ ## ✅ Correct
30
+
31
+ ```md
32
+ ---
33
+ description: Release coordinator
34
+ ---
35
+ See [runbook](../../docs/release-runbook.md).
36
+ ```
37
+
38
+ ## Further reading
39
+
40
+ - [VS Code Docs: Custom agents](https://code.visualstudio.com/docs/copilot/customization/custom-agents)
@@ -0,0 +1,42 @@
1
+ # require-relative-instructions-links
2
+
3
+ Require path-specific Copilot instructions files to use relative Markdown links for workspace files.
4
+
5
+ > **Rule catalog ID:** R029
6
+
7
+ ## Targeted pattern scope
8
+
9
+ - `.github/instructions/**/*.instructions.md`
10
+
11
+ ## What this rule reports
12
+
13
+ - root-relative links such as `/docs/frontend.md`
14
+ - file links that use other non-relative workspace-style paths instead of paths relative to the current instructions file
15
+
16
+ ## Why this rule exists
17
+
18
+ Path-specific instructions often link to coding standards, examples, or package documentation in the repository. Relative links keep those references portable and make it clearer how the linked resource relates to the current instructions file.
19
+
20
+ ## ❌ Incorrect
21
+
22
+ ```md
23
+ ---
24
+ description: Frontend guidance
25
+ applyTo: src/**/*.ts
26
+ ---
27
+ See [frontend standards](/docs/frontend.md).
28
+ ```
29
+
30
+ ## ✅ Correct
31
+
32
+ ```md
33
+ ---
34
+ description: Frontend guidance
35
+ applyTo: src/**/*.ts
36
+ ---
37
+ See [frontend standards](../../docs/frontend.md).
38
+ ```
39
+
40
+ ## Further reading
41
+
42
+ - [VS Code Docs: Custom instructions](https://code.visualstudio.com/docs/copilot/customization/custom-instructions)
@@ -0,0 +1,43 @@
1
+ # require-relative-prompt-links
2
+
3
+ Require Copilot prompt files to use relative Markdown links for workspace files.
4
+
5
+ > **Rule catalog ID:** R024
6
+
7
+ ## Targeted pattern scope
8
+
9
+ - `.github/prompts/**/*.prompt.md`
10
+
11
+ ## What this rule reports
12
+
13
+ - root-relative Markdown links to workspace files inside prompt bodies
14
+ - filesystem-style absolute paths in prompt Markdown links
15
+ - `file:` links used instead of repository-relative workspace links
16
+
17
+ ## Why this rule exists
18
+
19
+ VS Code prompt-file documentation says to reference workspace files with Markdown links that use relative paths based on the prompt file location. Enforcing relative workspace links keeps prompt files portable across machines, folders, and repositories.
20
+
21
+ ## ❌ Incorrect
22
+
23
+ ```md
24
+ ---
25
+ description: Review changes with repository guidance
26
+ agent: agent
27
+ ---
28
+ Review the proposed changes using [security guidance](/.github/instructions/security.instructions.md).
29
+ ```
30
+
31
+ ## ✅ Correct
32
+
33
+ ```md
34
+ ---
35
+ description: Review changes with repository guidance
36
+ agent: agent
37
+ ---
38
+ Review the proposed changes using [security guidance](../instructions/security.instructions.md).
39
+ ```
40
+
41
+ ## Further reading
42
+
43
+ - [VS Code Docs: Prompt files](https://code.visualstudio.com/docs/copilot/customization/prompt-files)
@@ -0,0 +1,43 @@
1
+ # require-relative-repository-hook-cwd
2
+
3
+ Require repository hook `cwd` values to use repository-relative paths.
4
+
5
+ > **Rule catalog ID:** R062
6
+
7
+ ## Targeted pattern scope
8
+
9
+ - `.github/hooks/**/*.json`
10
+
11
+ ## What this rule reports
12
+
13
+ - absolute or otherwise non-relative `cwd` values in hook definitions
14
+
15
+ ## Why this rule exists
16
+
17
+ Repository hooks are meant to run against the checked-out repository. Repository-relative working directories are more portable than absolute paths and avoid machine-specific configuration.
18
+
19
+ ## ❌ Incorrect
20
+
21
+ ```json
22
+ {
23
+ "version": 1,
24
+ "hooks": {
25
+ "sessionStart": [{ "type": "command", "bash": "echo ready", "cwd": "/tmp" }]
26
+ }
27
+ }
28
+ ```
29
+
30
+ ## ✅ Correct
31
+
32
+ ```json
33
+ {
34
+ "version": 1,
35
+ "hooks": {
36
+ "sessionStart": [{ "type": "command", "bash": "echo ready", "cwd": "scripts" }]
37
+ }
38
+ }
39
+ ```
40
+
41
+ ## Further reading
42
+
43
+ - [GitHub Docs: Using hooks with GitHub Copilot agents](https://docs.github.com/en/copilot/how-tos/use-copilot-agents/coding-agent/use-hooks)
@@ -0,0 +1,42 @@
1
+ # require-relative-skill-links
2
+
3
+ Require Copilot skill definition files to use relative Markdown links for workspace resources.
4
+
5
+ > **Rule catalog ID:** R052
6
+
7
+ ## Targeted pattern scope
8
+
9
+ - `.github/skills/**/SKILL.md`
10
+ - `.claude/skills/**/SKILL.md`
11
+
12
+ ## What this rule reports
13
+
14
+ - root-relative or otherwise non-relative workspace file links in a skill body
15
+
16
+ ## Why this rule exists
17
+
18
+ Skills frequently reference supplementary Markdown files, scripts, and local resources. Relative links keep those references portable and aligned with the repository-local nature of project skills.
19
+
20
+ ## ❌ Incorrect
21
+
22
+ ```md
23
+ ---
24
+ name: review
25
+ description: Review code changes.
26
+ ---
27
+ See [guide](/docs/review.md).
28
+ ```
29
+
30
+ ## ✅ Correct
31
+
32
+ ```md
33
+ ---
34
+ name: review
35
+ description: Review code changes.
36
+ ---
37
+ See [guide](guide.md).
38
+ ```
39
+
40
+ ## Further reading
41
+
42
+ - [GitHub Docs: Creating agent skills for GitHub Copilot](https://docs.github.com/en/copilot/how-tos/use-copilot-agents/coding-agent/create-skills)
@@ -0,0 +1,33 @@
1
+ # require-repository-hook-arrays
2
+
3
+ Require each repository hook event entry in `hooks` to be an array.
4
+
5
+ > **Rule catalog ID:** R058
6
+
7
+ ## Targeted pattern scope
8
+
9
+ - `.github/hooks/**/*.json`
10
+
11
+ ## What this rule reports
12
+
13
+ - hook event values that are objects, strings, numbers, or other non-array JSON values
14
+
15
+ ## Why this rule exists
16
+
17
+ Each hook event is documented as an array of hook definitions. Enforcing that array shape keeps the JSON structure consistent and makes it possible to reason about multiple hooks on the same event.
18
+
19
+ ## ❌ Incorrect
20
+
21
+ ```json
22
+ { "version": 1, "hooks": { "sessionStart": {} } }
23
+ ```
24
+
25
+ ## ✅ Correct
26
+
27
+ ```json
28
+ { "version": 1, "hooks": { "sessionStart": [] } }
29
+ ```
30
+
31
+ ## Further reading
32
+
33
+ - [GitHub Docs: Using hooks with GitHub Copilot agents](https://docs.github.com/en/copilot/how-tos/use-copilot-agents/coding-agent/use-hooks)