eslint-plugin-github-actions-2 1.0.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 (410) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +21 -0
  3. package/README.md +164 -0
  4. package/dist/_internal/case-police-dictionary.d.ts +10 -0
  5. package/dist/_internal/case-police-dictionary.d.ts.map +1 -0
  6. package/dist/_internal/case-police-dictionary.js +486 -0
  7. package/dist/_internal/case-police-dictionary.js.map +1 -0
  8. package/dist/_internal/casing.d.ts +17 -0
  9. package/dist/_internal/casing.d.ts.map +1 -0
  10. package/dist/_internal/casing.js +197 -0
  11. package/dist/_internal/casing.js.map +1 -0
  12. package/dist/_internal/github-actions-config-references.d.ts +16 -0
  13. package/dist/_internal/github-actions-config-references.d.ts.map +1 -0
  14. package/dist/_internal/github-actions-config-references.js +76 -0
  15. package/dist/_internal/github-actions-config-references.js.map +1 -0
  16. package/dist/_internal/github-actions-trigger-events.d.ts +13 -0
  17. package/dist/_internal/github-actions-trigger-events.d.ts.map +1 -0
  18. package/dist/_internal/github-actions-trigger-events.js +47 -0
  19. package/dist/_internal/github-actions-trigger-events.js.map +1 -0
  20. package/dist/_internal/github-expressions.d.ts +9 -0
  21. package/dist/_internal/github-expressions.d.ts.map +1 -0
  22. package/dist/_internal/github-expressions.js +87 -0
  23. package/dist/_internal/github-expressions.js.map +1 -0
  24. package/dist/_internal/lint-targets.d.ts +21 -0
  25. package/dist/_internal/lint-targets.d.ts.map +1 -0
  26. package/dist/_internal/lint-targets.js +60 -0
  27. package/dist/_internal/lint-targets.js.map +1 -0
  28. package/dist/_internal/rule-docs.d.ts +16 -0
  29. package/dist/_internal/rule-docs.d.ts.map +1 -0
  30. package/dist/_internal/rule-docs.js +2 -0
  31. package/dist/_internal/rule-docs.js.map +1 -0
  32. package/dist/_internal/rules-registry.d.ts +145 -0
  33. package/dist/_internal/rules-registry.d.ts.map +1 -0
  34. package/dist/_internal/rules-registry.js +144 -0
  35. package/dist/_internal/rules-registry.js.map +1 -0
  36. package/dist/_internal/workflow-template-properties.d.ts +20 -0
  37. package/dist/_internal/workflow-template-properties.d.ts.map +1 -0
  38. package/dist/_internal/workflow-template-properties.js +44 -0
  39. package/dist/_internal/workflow-template-properties.js.map +1 -0
  40. package/dist/_internal/workflow-yaml.d.ts +47 -0
  41. package/dist/_internal/workflow-yaml.d.ts.map +1 -0
  42. package/dist/_internal/workflow-yaml.js +140 -0
  43. package/dist/_internal/workflow-yaml.js.map +1 -0
  44. package/dist/_internal/yaml-traversal.d.ts +10 -0
  45. package/dist/_internal/yaml-traversal.d.ts.map +1 -0
  46. package/dist/_internal/yaml-traversal.js +38 -0
  47. package/dist/_internal/yaml-traversal.js.map +1 -0
  48. package/dist/plugin.cjs +7107 -0
  49. package/dist/plugin.cjs.map +7 -0
  50. package/dist/plugin.d.cts +34 -0
  51. package/dist/plugin.d.ts +34 -0
  52. package/dist/plugin.d.ts.map +1 -0
  53. package/dist/plugin.js +122 -0
  54. package/dist/plugin.js.map +1 -0
  55. package/dist/rules/action-name-casing.d.ts +9 -0
  56. package/dist/rules/action-name-casing.d.ts.map +1 -0
  57. package/dist/rules/action-name-casing.js +141 -0
  58. package/dist/rules/action-name-casing.js.map +1 -0
  59. package/dist/rules/job-id-casing.d.ts +9 -0
  60. package/dist/rules/job-id-casing.d.ts.map +1 -0
  61. package/dist/rules/job-id-casing.js +123 -0
  62. package/dist/rules/job-id-casing.js.map +1 -0
  63. package/dist/rules/max-jobs-per-action.d.ts +9 -0
  64. package/dist/rules/max-jobs-per-action.d.ts.map +1 -0
  65. package/dist/rules/max-jobs-per-action.js +61 -0
  66. package/dist/rules/max-jobs-per-action.js.map +1 -0
  67. package/dist/rules/no-case-insensitive-input-id-collision.d.ts +9 -0
  68. package/dist/rules/no-case-insensitive-input-id-collision.d.ts.map +1 -0
  69. package/dist/rules/no-case-insensitive-input-id-collision.js +66 -0
  70. package/dist/rules/no-case-insensitive-input-id-collision.js.map +1 -0
  71. package/dist/rules/no-composite-input-env-access.d.ts +9 -0
  72. package/dist/rules/no-composite-input-env-access.d.ts.map +1 -0
  73. package/dist/rules/no-composite-input-env-access.js +62 -0
  74. package/dist/rules/no-composite-input-env-access.js.map +1 -0
  75. package/dist/rules/no-deprecated-node-runtime.d.ts +9 -0
  76. package/dist/rules/no-deprecated-node-runtime.d.ts.map +1 -0
  77. package/dist/rules/no-deprecated-node-runtime.js +59 -0
  78. package/dist/rules/no-deprecated-node-runtime.js.map +1 -0
  79. package/dist/rules/no-duplicate-composite-step-id.d.ts +9 -0
  80. package/dist/rules/no-duplicate-composite-step-id.d.ts.map +1 -0
  81. package/dist/rules/no-duplicate-composite-step-id.js +74 -0
  82. package/dist/rules/no-duplicate-composite-step-id.js.map +1 -0
  83. package/dist/rules/no-empty-template-file-pattern.d.ts +9 -0
  84. package/dist/rules/no-empty-template-file-pattern.d.ts.map +1 -0
  85. package/dist/rules/no-empty-template-file-pattern.js +49 -0
  86. package/dist/rules/no-empty-template-file-pattern.js.map +1 -0
  87. package/dist/rules/no-external-job.d.ts +9 -0
  88. package/dist/rules/no-external-job.d.ts.map +1 -0
  89. package/dist/rules/no-external-job.js +49 -0
  90. package/dist/rules/no-external-job.js.map +1 -0
  91. package/dist/rules/no-hardcoded-default-branch-in-template.d.ts +9 -0
  92. package/dist/rules/no-hardcoded-default-branch-in-template.d.ts.map +1 -0
  93. package/dist/rules/no-hardcoded-default-branch-in-template.js +54 -0
  94. package/dist/rules/no-hardcoded-default-branch-in-template.js.map +1 -0
  95. package/dist/rules/no-icon-file-extension-in-template-icon-name.d.ts +9 -0
  96. package/dist/rules/no-icon-file-extension-in-template-icon-name.d.ts.map +1 -0
  97. package/dist/rules/no-icon-file-extension-in-template-icon-name.js +54 -0
  98. package/dist/rules/no-icon-file-extension-in-template-icon-name.js.map +1 -0
  99. package/dist/rules/no-inherit-secrets.d.ts +9 -0
  100. package/dist/rules/no-inherit-secrets.d.ts.map +1 -0
  101. package/dist/rules/no-inherit-secrets.js +57 -0
  102. package/dist/rules/no-inherit-secrets.js.map +1 -0
  103. package/dist/rules/no-invalid-concurrency-context.d.ts +9 -0
  104. package/dist/rules/no-invalid-concurrency-context.d.ts.map +1 -0
  105. package/dist/rules/no-invalid-concurrency-context.js +141 -0
  106. package/dist/rules/no-invalid-concurrency-context.js.map +1 -0
  107. package/dist/rules/no-invalid-key.d.ts +9 -0
  108. package/dist/rules/no-invalid-key.d.ts.map +1 -0
  109. package/dist/rules/no-invalid-key.js +152 -0
  110. package/dist/rules/no-invalid-key.js.map +1 -0
  111. package/dist/rules/no-invalid-reusable-workflow-job-key.d.ts +9 -0
  112. package/dist/rules/no-invalid-reusable-workflow-job-key.d.ts.map +1 -0
  113. package/dist/rules/no-invalid-reusable-workflow-job-key.js +73 -0
  114. package/dist/rules/no-invalid-reusable-workflow-job-key.js.map +1 -0
  115. package/dist/rules/no-invalid-template-file-pattern-regex.d.ts +9 -0
  116. package/dist/rules/no-invalid-template-file-pattern-regex.d.ts.map +1 -0
  117. package/dist/rules/no-invalid-template-file-pattern-regex.js +58 -0
  118. package/dist/rules/no-invalid-template-file-pattern-regex.js.map +1 -0
  119. package/dist/rules/no-invalid-workflow-call-output-value.d.ts +9 -0
  120. package/dist/rules/no-invalid-workflow-call-output-value.d.ts.map +1 -0
  121. package/dist/rules/no-invalid-workflow-call-output-value.js +99 -0
  122. package/dist/rules/no-invalid-workflow-call-output-value.js.map +1 -0
  123. package/dist/rules/no-path-separators-in-template-icon-name.d.ts +9 -0
  124. package/dist/rules/no-path-separators-in-template-icon-name.d.ts.map +1 -0
  125. package/dist/rules/no-path-separators-in-template-icon-name.js +52 -0
  126. package/dist/rules/no-path-separators-in-template-icon-name.js.map +1 -0
  127. package/dist/rules/no-post-if-without-post.d.ts +9 -0
  128. package/dist/rules/no-post-if-without-post.d.ts.map +1 -0
  129. package/dist/rules/no-post-if-without-post.js +52 -0
  130. package/dist/rules/no-post-if-without-post.js.map +1 -0
  131. package/dist/rules/no-pr-head-checkout-in-pull-request-target.d.ts +12 -0
  132. package/dist/rules/no-pr-head-checkout-in-pull-request-target.d.ts.map +1 -0
  133. package/dist/rules/no-pr-head-checkout-in-pull-request-target.js +89 -0
  134. package/dist/rules/no-pr-head-checkout-in-pull-request-target.js.map +1 -0
  135. package/dist/rules/no-pre-if-without-pre.d.ts +9 -0
  136. package/dist/rules/no-pre-if-without-pre.d.ts.map +1 -0
  137. package/dist/rules/no-pre-if-without-pre.js +51 -0
  138. package/dist/rules/no-pre-if-without-pre.js.map +1 -0
  139. package/dist/rules/no-required-input-with-default.d.ts +9 -0
  140. package/dist/rules/no-required-input-with-default.d.ts.map +1 -0
  141. package/dist/rules/no-required-input-with-default.js +68 -0
  142. package/dist/rules/no-required-input-with-default.js.map +1 -0
  143. package/dist/rules/no-secrets-in-if.d.ts +9 -0
  144. package/dist/rules/no-secrets-in-if.d.ts.map +1 -0
  145. package/dist/rules/no-secrets-in-if.js +84 -0
  146. package/dist/rules/no-secrets-in-if.js.map +1 -0
  147. package/dist/rules/no-self-hosted-runner-on-fork-pr-events.d.ts +9 -0
  148. package/dist/rules/no-self-hosted-runner-on-fork-pr-events.d.ts.map +1 -0
  149. package/dist/rules/no-self-hosted-runner-on-fork-pr-events.js +93 -0
  150. package/dist/rules/no-self-hosted-runner-on-fork-pr-events.js.map +1 -0
  151. package/dist/rules/no-subdirectory-template-file-pattern.d.ts +9 -0
  152. package/dist/rules/no-subdirectory-template-file-pattern.d.ts.map +1 -0
  153. package/dist/rules/no-subdirectory-template-file-pattern.js +52 -0
  154. package/dist/rules/no-subdirectory-template-file-pattern.js.map +1 -0
  155. package/dist/rules/no-template-placeholder-in-non-template-workflow.d.ts +9 -0
  156. package/dist/rules/no-template-placeholder-in-non-template-workflow.d.ts.map +1 -0
  157. package/dist/rules/no-template-placeholder-in-non-template-workflow.js +55 -0
  158. package/dist/rules/no-template-placeholder-in-non-template-workflow.js.map +1 -0
  159. package/dist/rules/no-top-level-env.d.ts +9 -0
  160. package/dist/rules/no-top-level-env.d.ts.map +1 -0
  161. package/dist/rules/no-top-level-env.js +42 -0
  162. package/dist/rules/no-top-level-env.js.map +1 -0
  163. package/dist/rules/no-top-level-permissions.d.ts +9 -0
  164. package/dist/rules/no-top-level-permissions.d.ts.map +1 -0
  165. package/dist/rules/no-top-level-permissions.js +39 -0
  166. package/dist/rules/no-top-level-permissions.js.map +1 -0
  167. package/dist/rules/no-universal-template-file-pattern.d.ts +9 -0
  168. package/dist/rules/no-universal-template-file-pattern.d.ts.map +1 -0
  169. package/dist/rules/no-universal-template-file-pattern.js +60 -0
  170. package/dist/rules/no-universal-template-file-pattern.js.map +1 -0
  171. package/dist/rules/no-unknown-input-reference-in-composite.d.ts +9 -0
  172. package/dist/rules/no-unknown-input-reference-in-composite.d.ts.map +1 -0
  173. package/dist/rules/no-unknown-input-reference-in-composite.js +80 -0
  174. package/dist/rules/no-unknown-input-reference-in-composite.js.map +1 -0
  175. package/dist/rules/no-unknown-job-output-reference.d.ts +9 -0
  176. package/dist/rules/no-unknown-job-output-reference.d.ts.map +1 -0
  177. package/dist/rules/no-unknown-job-output-reference.js +229 -0
  178. package/dist/rules/no-unknown-job-output-reference.js.map +1 -0
  179. package/dist/rules/no-unknown-step-reference.d.ts +9 -0
  180. package/dist/rules/no-unknown-step-reference.d.ts.map +1 -0
  181. package/dist/rules/no-unknown-step-reference.js +133 -0
  182. package/dist/rules/no-unknown-step-reference.js.map +1 -0
  183. package/dist/rules/no-untrusted-input-in-run.d.ts +9 -0
  184. package/dist/rules/no-untrusted-input-in-run.d.ts.map +1 -0
  185. package/dist/rules/no-untrusted-input-in-run.js +115 -0
  186. package/dist/rules/no-untrusted-input-in-run.js.map +1 -0
  187. package/dist/rules/no-unused-input-in-composite.d.ts +9 -0
  188. package/dist/rules/no-unused-input-in-composite.d.ts.map +1 -0
  189. package/dist/rules/no-unused-input-in-composite.js +78 -0
  190. package/dist/rules/no-unused-input-in-composite.js.map +1 -0
  191. package/dist/rules/no-write-all-permissions.d.ts +9 -0
  192. package/dist/rules/no-write-all-permissions.d.ts.map +1 -0
  193. package/dist/rules/no-write-all-permissions.js +61 -0
  194. package/dist/rules/no-write-all-permissions.js.map +1 -0
  195. package/dist/rules/pin-action-shas.d.ts +12 -0
  196. package/dist/rules/pin-action-shas.d.ts.map +1 -0
  197. package/dist/rules/pin-action-shas.js +100 -0
  198. package/dist/rules/pin-action-shas.js.map +1 -0
  199. package/dist/rules/prefer-action-yml.d.ts +9 -0
  200. package/dist/rules/prefer-action-yml.d.ts.map +1 -0
  201. package/dist/rules/prefer-action-yml.js +37 -0
  202. package/dist/rules/prefer-action-yml.js.map +1 -0
  203. package/dist/rules/prefer-fail-fast.d.ts +9 -0
  204. package/dist/rules/prefer-fail-fast.d.ts.map +1 -0
  205. package/dist/rules/prefer-fail-fast.js +61 -0
  206. package/dist/rules/prefer-fail-fast.js.map +1 -0
  207. package/dist/rules/prefer-file-extension.d.ts +9 -0
  208. package/dist/rules/prefer-file-extension.d.ts.map +1 -0
  209. package/dist/rules/prefer-file-extension.js +104 -0
  210. package/dist/rules/prefer-file-extension.js.map +1 -0
  211. package/dist/rules/prefer-inputs-context.d.ts +9 -0
  212. package/dist/rules/prefer-inputs-context.d.ts.map +1 -0
  213. package/dist/rules/prefer-inputs-context.js +91 -0
  214. package/dist/rules/prefer-inputs-context.js.map +1 -0
  215. package/dist/rules/prefer-step-uses-style.d.ts +9 -0
  216. package/dist/rules/prefer-step-uses-style.d.ts.map +1 -0
  217. package/dist/rules/prefer-step-uses-style.js +209 -0
  218. package/dist/rules/prefer-step-uses-style.js.map +1 -0
  219. package/dist/rules/prefer-template-yml-extension.d.ts +9 -0
  220. package/dist/rules/prefer-template-yml-extension.d.ts.map +1 -0
  221. package/dist/rules/prefer-template-yml-extension.js +41 -0
  222. package/dist/rules/prefer-template-yml-extension.js.map +1 -0
  223. package/dist/rules/require-action-name.d.ts +9 -0
  224. package/dist/rules/require-action-name.d.ts.map +1 -0
  225. package/dist/rules/require-action-name.js +57 -0
  226. package/dist/rules/require-action-name.js.map +1 -0
  227. package/dist/rules/require-action-run-name.d.ts +9 -0
  228. package/dist/rules/require-action-run-name.d.ts.map +1 -0
  229. package/dist/rules/require-action-run-name.js +56 -0
  230. package/dist/rules/require-action-run-name.js.map +1 -0
  231. package/dist/rules/require-checkout-before-local-action.d.ts +9 -0
  232. package/dist/rules/require-checkout-before-local-action.d.ts.map +1 -0
  233. package/dist/rules/require-checkout-before-local-action.js +74 -0
  234. package/dist/rules/require-checkout-before-local-action.js.map +1 -0
  235. package/dist/rules/require-composite-step-name.d.ts +9 -0
  236. package/dist/rules/require-composite-step-name.d.ts.map +1 -0
  237. package/dist/rules/require-composite-step-name.js +67 -0
  238. package/dist/rules/require-composite-step-name.js.map +1 -0
  239. package/dist/rules/require-job-name.d.ts +9 -0
  240. package/dist/rules/require-job-name.d.ts.map +1 -0
  241. package/dist/rules/require-job-name.js +70 -0
  242. package/dist/rules/require-job-name.js.map +1 -0
  243. package/dist/rules/require-job-step-name.d.ts +9 -0
  244. package/dist/rules/require-job-step-name.d.ts.map +1 -0
  245. package/dist/rules/require-job-step-name.js +71 -0
  246. package/dist/rules/require-job-step-name.js.map +1 -0
  247. package/dist/rules/require-job-timeout-minutes.d.ts +9 -0
  248. package/dist/rules/require-job-timeout-minutes.d.ts.map +1 -0
  249. package/dist/rules/require-job-timeout-minutes.js +99 -0
  250. package/dist/rules/require-job-timeout-minutes.js.map +1 -0
  251. package/dist/rules/require-merge-group-trigger.d.ts +9 -0
  252. package/dist/rules/require-merge-group-trigger.d.ts.map +1 -0
  253. package/dist/rules/require-merge-group-trigger.js +65 -0
  254. package/dist/rules/require-merge-group-trigger.js.map +1 -0
  255. package/dist/rules/require-pull-request-target-branches.d.ts +9 -0
  256. package/dist/rules/require-pull-request-target-branches.d.ts.map +1 -0
  257. package/dist/rules/require-pull-request-target-branches.js +102 -0
  258. package/dist/rules/require-pull-request-target-branches.js.map +1 -0
  259. package/dist/rules/require-run-step-shell.d.ts +9 -0
  260. package/dist/rules/require-run-step-shell.d.ts.map +1 -0
  261. package/dist/rules/require-run-step-shell.js +114 -0
  262. package/dist/rules/require-run-step-shell.js.map +1 -0
  263. package/dist/rules/require-template-categories.d.ts +9 -0
  264. package/dist/rules/require-template-categories.d.ts.map +1 -0
  265. package/dist/rules/require-template-categories.js +55 -0
  266. package/dist/rules/require-template-categories.js.map +1 -0
  267. package/dist/rules/require-template-file-patterns.d.ts +9 -0
  268. package/dist/rules/require-template-file-patterns.d.ts.map +1 -0
  269. package/dist/rules/require-template-file-patterns.js +55 -0
  270. package/dist/rules/require-template-file-patterns.js.map +1 -0
  271. package/dist/rules/require-template-icon-file-exists.d.ts +9 -0
  272. package/dist/rules/require-template-icon-file-exists.d.ts.map +1 -0
  273. package/dist/rules/require-template-icon-file-exists.js +61 -0
  274. package/dist/rules/require-template-icon-file-exists.js.map +1 -0
  275. package/dist/rules/require-template-icon-name.d.ts +9 -0
  276. package/dist/rules/require-template-icon-name.d.ts.map +1 -0
  277. package/dist/rules/require-template-icon-name.js +48 -0
  278. package/dist/rules/require-template-icon-name.js.map +1 -0
  279. package/dist/rules/require-template-workflow-name.d.ts +9 -0
  280. package/dist/rules/require-template-workflow-name.d.ts.map +1 -0
  281. package/dist/rules/require-template-workflow-name.js +48 -0
  282. package/dist/rules/require-template-workflow-name.js.map +1 -0
  283. package/dist/rules/require-trigger-types.d.ts +9 -0
  284. package/dist/rules/require-trigger-types.d.ts.map +1 -0
  285. package/dist/rules/require-trigger-types.js +126 -0
  286. package/dist/rules/require-trigger-types.js.map +1 -0
  287. package/dist/rules/require-workflow-call-input-type.d.ts +9 -0
  288. package/dist/rules/require-workflow-call-input-type.d.ts.map +1 -0
  289. package/dist/rules/require-workflow-call-input-type.js +89 -0
  290. package/dist/rules/require-workflow-call-input-type.js.map +1 -0
  291. package/dist/rules/require-workflow-call-output-value.d.ts +9 -0
  292. package/dist/rules/require-workflow-call-output-value.d.ts.map +1 -0
  293. package/dist/rules/require-workflow-call-output-value.js +79 -0
  294. package/dist/rules/require-workflow-call-output-value.js.map +1 -0
  295. package/dist/rules/require-workflow-concurrency.d.ts +9 -0
  296. package/dist/rules/require-workflow-concurrency.d.ts.map +1 -0
  297. package/dist/rules/require-workflow-concurrency.js +157 -0
  298. package/dist/rules/require-workflow-concurrency.js.map +1 -0
  299. package/dist/rules/require-workflow-dispatch-input-type.d.ts +9 -0
  300. package/dist/rules/require-workflow-dispatch-input-type.d.ts.map +1 -0
  301. package/dist/rules/require-workflow-dispatch-input-type.js +80 -0
  302. package/dist/rules/require-workflow-dispatch-input-type.js.map +1 -0
  303. package/dist/rules/require-workflow-interface-description.d.ts +9 -0
  304. package/dist/rules/require-workflow-interface-description.d.ts.map +1 -0
  305. package/dist/rules/require-workflow-interface-description.js +98 -0
  306. package/dist/rules/require-workflow-interface-description.js.map +1 -0
  307. package/dist/rules/require-workflow-permissions.d.ts +9 -0
  308. package/dist/rules/require-workflow-permissions.d.ts.map +1 -0
  309. package/dist/rules/require-workflow-permissions.js +83 -0
  310. package/dist/rules/require-workflow-permissions.js.map +1 -0
  311. package/dist/rules/require-workflow-run-branches.d.ts +9 -0
  312. package/dist/rules/require-workflow-run-branches.d.ts.map +1 -0
  313. package/dist/rules/require-workflow-run-branches.js +84 -0
  314. package/dist/rules/require-workflow-run-branches.js.map +1 -0
  315. package/dist/rules/require-workflow-template-pair.d.ts +9 -0
  316. package/dist/rules/require-workflow-template-pair.d.ts.map +1 -0
  317. package/dist/rules/require-workflow-template-pair.js +47 -0
  318. package/dist/rules/require-workflow-template-pair.js.map +1 -0
  319. package/dist/rules/require-workflow-template-properties-pair.d.ts +9 -0
  320. package/dist/rules/require-workflow-template-properties-pair.d.ts.map +1 -0
  321. package/dist/rules/require-workflow-template-properties-pair.js +49 -0
  322. package/dist/rules/require-workflow-template-properties-pair.js.map +1 -0
  323. package/dist/rules/valid-timeout-minutes.d.ts +9 -0
  324. package/dist/rules/valid-timeout-minutes.d.ts.map +1 -0
  325. package/dist/rules/valid-timeout-minutes.js +255 -0
  326. package/dist/rules/valid-timeout-minutes.js.map +1 -0
  327. package/dist/rules/valid-trigger-events.d.ts +9 -0
  328. package/dist/rules/valid-trigger-events.d.ts.map +1 -0
  329. package/dist/rules/valid-trigger-events.js +100 -0
  330. package/dist/rules/valid-trigger-events.js.map +1 -0
  331. package/docs/rules/action-name-casing.md +64 -0
  332. package/docs/rules/getting-started.md +46 -0
  333. package/docs/rules/job-id-casing.md +73 -0
  334. package/docs/rules/max-jobs-per-action.md +79 -0
  335. package/docs/rules/no-case-insensitive-input-id-collision.md +63 -0
  336. package/docs/rules/no-composite-input-env-access.md +66 -0
  337. package/docs/rules/no-deprecated-node-runtime.md +61 -0
  338. package/docs/rules/no-duplicate-composite-step-id.md +73 -0
  339. package/docs/rules/no-empty-template-file-pattern.md +57 -0
  340. package/docs/rules/no-external-job.md +66 -0
  341. package/docs/rules/no-hardcoded-default-branch-in-template.md +63 -0
  342. package/docs/rules/no-icon-file-extension-in-template-icon-name.md +57 -0
  343. package/docs/rules/no-inherit-secrets.md +65 -0
  344. package/docs/rules/no-invalid-concurrency-context.md +101 -0
  345. package/docs/rules/no-invalid-key.md +86 -0
  346. package/docs/rules/no-invalid-reusable-workflow-job-key.md +74 -0
  347. package/docs/rules/no-invalid-template-file-pattern-regex.md +57 -0
  348. package/docs/rules/no-invalid-workflow-call-output-value.md +80 -0
  349. package/docs/rules/no-path-separators-in-template-icon-name.md +57 -0
  350. package/docs/rules/no-post-if-without-post.md +64 -0
  351. package/docs/rules/no-pr-head-checkout-in-pull-request-target.md +83 -0
  352. package/docs/rules/no-pre-if-without-pre.md +64 -0
  353. package/docs/rules/no-required-input-with-default.md +64 -0
  354. package/docs/rules/no-secrets-in-if.md +70 -0
  355. package/docs/rules/no-self-hosted-runner-on-fork-pr-events.md +75 -0
  356. package/docs/rules/no-subdirectory-template-file-pattern.md +57 -0
  357. package/docs/rules/no-template-placeholder-in-non-template-workflow.md +63 -0
  358. package/docs/rules/no-top-level-env.md +64 -0
  359. package/docs/rules/no-top-level-permissions.md +64 -0
  360. package/docs/rules/no-universal-template-file-pattern.md +57 -0
  361. package/docs/rules/no-unknown-input-reference-in-composite.md +71 -0
  362. package/docs/rules/no-unknown-job-output-reference.md +88 -0
  363. package/docs/rules/no-unknown-step-reference.md +73 -0
  364. package/docs/rules/no-untrusted-input-in-run.md +74 -0
  365. package/docs/rules/no-unused-input-in-composite.md +71 -0
  366. package/docs/rules/no-write-all-permissions.md +60 -0
  367. package/docs/rules/overview.md +91 -0
  368. package/docs/rules/pin-action-shas.md +65 -0
  369. package/docs/rules/prefer-action-yml.md +57 -0
  370. package/docs/rules/prefer-fail-fast.md +72 -0
  371. package/docs/rules/prefer-file-extension.md +77 -0
  372. package/docs/rules/prefer-inputs-context.md +84 -0
  373. package/docs/rules/prefer-step-uses-style.md +70 -0
  374. package/docs/rules/prefer-template-yml-extension.md +57 -0
  375. package/docs/rules/presets/action-metadata.md +18 -0
  376. package/docs/rules/presets/all.md +76 -0
  377. package/docs/rules/presets/index.md +100 -0
  378. package/docs/rules/presets/recommended.md +26 -0
  379. package/docs/rules/presets/security.md +16 -0
  380. package/docs/rules/presets/strict.md +48 -0
  381. package/docs/rules/presets/workflow-template-properties.md +18 -0
  382. package/docs/rules/presets/workflow-templates.md +22 -0
  383. package/docs/rules/require-action-name.md +61 -0
  384. package/docs/rules/require-action-run-name.md +63 -0
  385. package/docs/rules/require-checkout-before-local-action.md +66 -0
  386. package/docs/rules/require-composite-step-name.md +66 -0
  387. package/docs/rules/require-job-name.md +63 -0
  388. package/docs/rules/require-job-step-name.md +69 -0
  389. package/docs/rules/require-job-timeout-minutes.md +76 -0
  390. package/docs/rules/require-merge-group-trigger.md +67 -0
  391. package/docs/rules/require-pull-request-target-branches.md +79 -0
  392. package/docs/rules/require-run-step-shell.md +85 -0
  393. package/docs/rules/require-template-categories.md +62 -0
  394. package/docs/rules/require-template-file-patterns.md +63 -0
  395. package/docs/rules/require-template-icon-file-exists.md +61 -0
  396. package/docs/rules/require-template-icon-name.md +57 -0
  397. package/docs/rules/require-template-workflow-name.md +60 -0
  398. package/docs/rules/require-trigger-types.md +76 -0
  399. package/docs/rules/require-workflow-call-input-type.md +70 -0
  400. package/docs/rules/require-workflow-call-output-value.md +67 -0
  401. package/docs/rules/require-workflow-concurrency.md +73 -0
  402. package/docs/rules/require-workflow-dispatch-input-type.md +70 -0
  403. package/docs/rules/require-workflow-interface-description.md +96 -0
  404. package/docs/rules/require-workflow-permissions.md +75 -0
  405. package/docs/rules/require-workflow-run-branches.md +66 -0
  406. package/docs/rules/require-workflow-template-pair.md +58 -0
  407. package/docs/rules/require-workflow-template-properties-pair.md +58 -0
  408. package/docs/rules/valid-timeout-minutes.md +74 -0
  409. package/docs/rules/valid-trigger-events.md +62 -0
  410. package/package.json +497 -0
@@ -0,0 +1,57 @@
1
+ # prefer-action-yml
2
+
3
+ > **Rule catalog ID:** R043
4
+
5
+ ## Targeted pattern scope
6
+
7
+ GitHub Action metadata files named `action.yaml`.
8
+
9
+ ## What this rule reports
10
+
11
+ Reports action metadata files that use `action.yaml` instead of `action.yml`.
12
+
13
+ ## Why this rule exists
14
+
15
+ GitHub supports both extensions, but the metadata docs call out `action.yml` as the preferred filename.
16
+
17
+ ## ❌ Incorrect
18
+
19
+ ```text
20
+ action.yaml
21
+ ```
22
+
23
+ ## ✅ Correct
24
+
25
+ ```text
26
+ action.yml
27
+ ```
28
+
29
+
30
+ ## Additional examples
31
+
32
+ For larger repositories, this rule is often enabled together with one of the published presets so violations are caught in pull requests before workflow changes are merged.
33
+
34
+ ## ESLint flat config example
35
+
36
+ ```ts
37
+ import githubActions from "eslint-plugin-github-actions-2";
38
+
39
+ export default [
40
+ {
41
+ files: ["**/*.{yml,yaml}"],
42
+ plugins: {
43
+ "github-actions": githubActions,
44
+ },
45
+ rules: {
46
+ "github-actions/prefer-action-yml": "error",
47
+ },
48
+ },
49
+ ];
50
+ ```
51
+
52
+ ## When not to use it
53
+
54
+ You can disable this rule when its policy does not match your repository standards, or when equivalent enforcement is already handled by another policy tool.
55
+ ## Further reading
56
+
57
+ - [https://docs.github.com/actions/reference/workflows-and-actions/metadata-syntax](https://docs.github.com/actions/reference/workflows-and-actions/metadata-syntax)
@@ -0,0 +1,72 @@
1
+ # prefer-fail-fast
2
+
3
+ > **Rule catalog ID:** R015
4
+
5
+ ## Targeted pattern scope
6
+
7
+ GitHub Actions workflow YAML files that use matrix strategies.
8
+
9
+ ## What this rule reports
10
+
11
+ This rule reports jobs that explicitly set `strategy.fail-fast` to `false`.
12
+
13
+ ## Why this rule exists
14
+
15
+ Leaving fail-fast enabled can save runner time and reduce queue pressure when one matrix job already proves the matrix is failing.
16
+
17
+ ## ❌ Incorrect
18
+
19
+ ```yaml
20
+ jobs:
21
+ test:
22
+ name: Test
23
+ runs-on: ubuntu-latest
24
+ strategy:
25
+ fail-fast: false
26
+ matrix:
27
+ node: [20, 22]
28
+ ```
29
+
30
+ ## ✅ Correct
31
+
32
+ ```yaml
33
+ jobs:
34
+ test:
35
+ name: Test
36
+ runs-on: ubuntu-latest
37
+ strategy:
38
+ fail-fast: true
39
+ matrix:
40
+ node: [20, 22]
41
+ ```
42
+
43
+
44
+ ## Additional examples
45
+
46
+ For larger repositories, this rule is often enabled together with one of the published presets so violations are caught in pull requests before workflow changes are merged.
47
+
48
+ ## ESLint flat config example
49
+
50
+ ```ts
51
+ import githubActions from "eslint-plugin-github-actions-2";
52
+
53
+ export default [
54
+ {
55
+ files: ["**/*.{yml,yaml}"],
56
+ plugins: {
57
+ "github-actions": githubActions,
58
+ },
59
+ rules: {
60
+ "github-actions/prefer-fail-fast": "error",
61
+ },
62
+ },
63
+ ];
64
+ ```
65
+
66
+ ## When not to use it
67
+
68
+ You can disable this rule when its policy does not match your repository standards, or when equivalent enforcement is already handled by another policy tool.
69
+ ## Further reading
70
+
71
+ - [https://docs.github.com/actions/using-jobs/using-a-matrix-for-your-jobs](https://docs.github.com/actions/using-jobs/using-a-matrix-for-your-jobs)
72
+ - [https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstrategy](https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstrategy)
@@ -0,0 +1,77 @@
1
+ # prefer-file-extension
2
+
3
+ > **Rule catalog ID:** R020
4
+
5
+ ## Targeted pattern scope
6
+
7
+ GitHub Actions workflow YAML files under `.github/workflows/`.
8
+
9
+ ## What this rule reports
10
+
11
+ This rule reports workflow files whose extension does not match the configured preference.
12
+
13
+ ## Why this rule exists
14
+
15
+ Using one workflow file extension consistently keeps repositories easier to scan, search, and script against. It also avoids needless churn from mixed `.yml` and `.yaml` naming styles.
16
+
17
+ ## ❌ Incorrect
18
+
19
+ ```yaml
20
+ # .github/workflows/release.yaml
21
+ name: Release
22
+ on:
23
+ workflow_dispatch:
24
+ ```
25
+
26
+ ## ✅ Correct
27
+
28
+ ```yaml
29
+ # .github/workflows/release.yml
30
+ name: Release
31
+ on:
32
+ workflow_dispatch:
33
+ ```
34
+
35
+ ## Behavior and migration notes
36
+
37
+ ### Default behavior
38
+
39
+ With the default configuration, this rule expects workflow files to use the `.yml` extension.
40
+
41
+ ### `{ "extension": "yaml" }`
42
+
43
+ Use this option to enforce `.yaml` instead.
44
+
45
+ ### `{ "caseSensitive": false }`
46
+
47
+ Use this option when you want extension matching to ignore case differences in repository paths.
48
+
49
+
50
+ ## Additional examples
51
+
52
+ For larger repositories, this rule is often enabled together with one of the published presets so violations are caught in pull requests before workflow changes are merged.
53
+
54
+ ## ESLint flat config example
55
+
56
+ ```ts
57
+ import githubActions from "eslint-plugin-github-actions-2";
58
+
59
+ export default [
60
+ {
61
+ files: ["**/*.{yml,yaml}"],
62
+ plugins: {
63
+ "github-actions": githubActions,
64
+ },
65
+ rules: {
66
+ "github-actions/prefer-file-extension": "error",
67
+ },
68
+ },
69
+ ];
70
+ ```
71
+
72
+ ## When not to use it
73
+
74
+ You can disable this rule when its policy does not match your repository standards, or when equivalent enforcement is already handled by another policy tool.
75
+ ## Further reading
76
+
77
+ - [https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax](https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax)
@@ -0,0 +1,84 @@
1
+ # prefer-inputs-context
2
+
3
+ > **Rule catalog ID:** R033
4
+
5
+ ## Targeted pattern scope
6
+
7
+ GitHub Actions workflow YAML files that define `workflow_dispatch` and reference `github.event.inputs` in expressions.
8
+
9
+ ## What this rule reports
10
+
11
+ This rule reports `github.event.inputs.*` references in `workflow_dispatch` workflows and prefers the shorter `inputs.*` context instead.
12
+
13
+ ## Why this rule exists
14
+
15
+ GitHub documents that `inputs` and `github.event.inputs` expose the same manual-dispatch values, but `inputs` preserves Boolean values as Booleans instead of converting them to strings. Using `inputs` also makes workflow expressions shorter and easier to read.
16
+
17
+ ## ❌ Incorrect
18
+
19
+ ```yaml
20
+ on:
21
+ workflow_dispatch:
22
+ inputs:
23
+ dry_run:
24
+ description: Run validation only
25
+ required: true
26
+ type: boolean
27
+
28
+ jobs:
29
+ release:
30
+ runs-on: ubuntu-latest
31
+ if: ${{ github.event.inputs.dry_run }}
32
+ steps:
33
+ - run: echo release
34
+ ```
35
+
36
+ ## ✅ Correct
37
+
38
+ ```yaml
39
+ on:
40
+ workflow_dispatch:
41
+ inputs:
42
+ dry_run:
43
+ description: Run validation only
44
+ required: true
45
+ type: boolean
46
+
47
+ jobs:
48
+ release:
49
+ runs-on: ubuntu-latest
50
+ if: ${{ inputs.dry_run }}
51
+ steps:
52
+ - run: echo release
53
+ ```
54
+
55
+
56
+ ## Additional examples
57
+
58
+ For larger repositories, this rule is often enabled together with one of the published presets so violations are caught in pull requests before workflow changes are merged.
59
+
60
+ ## ESLint flat config example
61
+
62
+ ```ts
63
+ import githubActions from "eslint-plugin-github-actions-2";
64
+
65
+ export default [
66
+ {
67
+ files: ["**/*.{yml,yaml}"],
68
+ plugins: {
69
+ "github-actions": githubActions,
70
+ },
71
+ rules: {
72
+ "github-actions/prefer-inputs-context": "error",
73
+ },
74
+ },
75
+ ];
76
+ ```
77
+
78
+ ## When not to use it
79
+
80
+ You can disable this rule when its policy does not match your repository standards, or when equivalent enforcement is already handled by another policy tool.
81
+ ## Further reading
82
+
83
+ - [https://docs.github.com/actions/reference/workflows-and-actions/events-that-trigger-workflows#workflow_dispatch](https://docs.github.com/actions/reference/workflows-and-actions/events-that-trigger-workflows#workflow_dispatch)
84
+ - [https://docs.github.com/actions/reference/workflows-and-actions/contexts#inputs-context](https://docs.github.com/actions/reference/workflows-and-actions/contexts#inputs-context)
@@ -0,0 +1,70 @@
1
+ # prefer-step-uses-style
2
+
3
+ > **Rule catalog ID:** R016
4
+
5
+ ## Targeted pattern scope
6
+
7
+ GitHub Actions workflow YAML files that use step-level `uses` references.
8
+
9
+ ## What this rule reports
10
+
11
+ This rule reports step `uses` references whose style does not match the configured preference, and it can also disallow repository-local or Docker-based `uses` references.
12
+
13
+ ## Why this rule exists
14
+
15
+ Standardizing how steps reference actions makes workflow reviews easier. Teams that prefer immutable commit SHAs, release tags, or branch names can enforce that choice consistently.
16
+
17
+ ## ❌ Incorrect
18
+
19
+ ```yaml
20
+ jobs:
21
+ build:
22
+ name: Build
23
+ runs-on: ubuntu-latest
24
+ steps:
25
+ - name: Checkout
26
+ uses: actions/checkout@v4
27
+ ```
28
+
29
+ ## ✅ Correct
30
+
31
+ ```yaml
32
+ jobs:
33
+ build:
34
+ name: Build
35
+ runs-on: ubuntu-latest
36
+ steps:
37
+ - name: Checkout
38
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
39
+ ```
40
+
41
+
42
+ ## Additional examples
43
+
44
+ For larger repositories, this rule is often enabled together with one of the published presets so violations are caught in pull requests before workflow changes are merged.
45
+
46
+ ## ESLint flat config example
47
+
48
+ ```ts
49
+ import githubActions from "eslint-plugin-github-actions-2";
50
+
51
+ export default [
52
+ {
53
+ files: ["**/*.{yml,yaml}"],
54
+ plugins: {
55
+ "github-actions": githubActions,
56
+ },
57
+ rules: {
58
+ "github-actions/prefer-step-uses-style": "error",
59
+ },
60
+ },
61
+ ];
62
+ ```
63
+
64
+ ## When not to use it
65
+
66
+ You can disable this rule when its policy does not match your repository standards, or when equivalent enforcement is already handled by another policy tool.
67
+ ## Further reading
68
+
69
+ - [https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsuses](https://docs.github.com/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsuses)
70
+ - [https://docs.github.com/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions](https://docs.github.com/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions)
@@ -0,0 +1,57 @@
1
+ # prefer-template-yml-extension
2
+
3
+ > **Rule catalog ID:** R066
4
+
5
+ ## Targeted pattern scope
6
+
7
+ Workflow template YAML filenames under `workflow-templates/`.
8
+
9
+ ## What this rule reports
10
+
11
+ Reports template files that use `.yaml` instead of `.yml`.
12
+
13
+ ## Why this rule exists
14
+
15
+ Consistent file extensions improve discoverability and repository conventions.
16
+
17
+ ## ❌ Incorrect
18
+
19
+ ```text
20
+ workflow-templates/ci.yaml
21
+ ```
22
+
23
+ ## ✅ Correct
24
+
25
+ ```text
26
+ workflow-templates/ci.yml
27
+ ```
28
+
29
+
30
+ ## Additional examples
31
+
32
+ For larger repositories, this rule is often enabled together with one of the published presets so violations are caught in pull requests before workflow changes are merged.
33
+
34
+ ## ESLint flat config example
35
+
36
+ ```ts
37
+ import githubActions from "eslint-plugin-github-actions-2";
38
+
39
+ export default [
40
+ {
41
+ files: ["**/*.{yml,yaml}"],
42
+ plugins: {
43
+ "github-actions": githubActions,
44
+ },
45
+ rules: {
46
+ "github-actions/prefer-template-yml-extension": "error",
47
+ },
48
+ },
49
+ ];
50
+ ```
51
+
52
+ ## When not to use it
53
+
54
+ You can disable this rule when its policy does not match your repository standards, or when equivalent enforcement is already handled by another policy tool.
55
+ ## Further reading
56
+
57
+ - [https://docs.github.com/actions/reference/workflows-and-actions/reusing-workflow-configurations](https://docs.github.com/actions/reference/workflows-and-actions/reusing-workflow-configurations)
@@ -0,0 +1,18 @@
1
+ # `githubActions.configs.actionMetadata`
2
+
3
+ Linting defaults for GitHub Action metadata files (`action.yml` / `action.yaml`).
4
+
5
+ ## Included rules
6
+
7
+ - [`no-case-insensitive-input-id-collision`](../no-case-insensitive-input-id-collision.md)
8
+ - [`no-composite-input-env-access`](../no-composite-input-env-access.md)
9
+ - [`no-deprecated-node-runtime`](../no-deprecated-node-runtime.md)
10
+ - [`no-duplicate-composite-step-id`](../no-duplicate-composite-step-id.md)
11
+ - [`no-post-if-without-post`](../no-post-if-without-post.md)
12
+ - [`no-pre-if-without-pre`](../no-pre-if-without-pre.md)
13
+ - [`no-required-input-with-default`](../no-required-input-with-default.md)
14
+ - [`no-unknown-input-reference-in-composite`](../no-unknown-input-reference-in-composite.md)
15
+ - [`no-unused-input-in-composite`](../no-unused-input-in-composite.md)
16
+ - [`prefer-action-yml`](../prefer-action-yml.md)
17
+ - [`require-composite-step-name`](../require-composite-step-name.md)
18
+
@@ -0,0 +1,76 @@
1
+ # `githubActions.configs.all`
2
+
3
+ Enables every available rule published by `eslint-plugin-github-actions-2`.
4
+
5
+ ## Included rules
6
+
7
+ - [`require-workflow-permissions`](../require-workflow-permissions.md)
8
+ - [`require-job-timeout-minutes`](../require-job-timeout-minutes.md)
9
+ - [`pin-action-shas`](../pin-action-shas.md)
10
+ - [`require-workflow-concurrency`](../require-workflow-concurrency.md)
11
+ - [`action-name-casing`](../action-name-casing.md)
12
+ - [`job-id-casing`](../job-id-casing.md)
13
+ - [`max-jobs-per-action`](../max-jobs-per-action.md)
14
+ - [`no-case-insensitive-input-id-collision`](../no-case-insensitive-input-id-collision.md)
15
+ - [`no-composite-input-env-access`](../no-composite-input-env-access.md)
16
+ - [`no-deprecated-node-runtime`](../no-deprecated-node-runtime.md)
17
+ - [`no-duplicate-composite-step-id`](../no-duplicate-composite-step-id.md)
18
+ - [`no-empty-template-file-pattern`](../no-empty-template-file-pattern.md)
19
+ - [`no-external-job`](../no-external-job.md)
20
+ - [`no-hardcoded-default-branch-in-template`](../no-hardcoded-default-branch-in-template.md)
21
+ - [`no-icon-file-extension-in-template-icon-name`](../no-icon-file-extension-in-template-icon-name.md)
22
+ - [`no-inherit-secrets`](../no-inherit-secrets.md)
23
+ - [`no-invalid-concurrency-context`](../no-invalid-concurrency-context.md)
24
+ - [`no-invalid-key`](../no-invalid-key.md)
25
+ - [`no-invalid-reusable-workflow-job-key`](../no-invalid-reusable-workflow-job-key.md)
26
+ - [`no-invalid-template-file-pattern-regex`](../no-invalid-template-file-pattern-regex.md)
27
+ - [`no-invalid-workflow-call-output-value`](../no-invalid-workflow-call-output-value.md)
28
+ - [`no-path-separators-in-template-icon-name`](../no-path-separators-in-template-icon-name.md)
29
+ - [`no-post-if-without-post`](../no-post-if-without-post.md)
30
+ - [`no-pr-head-checkout-in-pull-request-target`](../no-pr-head-checkout-in-pull-request-target.md)
31
+ - [`no-pre-if-without-pre`](../no-pre-if-without-pre.md)
32
+ - [`no-required-input-with-default`](../no-required-input-with-default.md)
33
+ - [`no-secrets-in-if`](../no-secrets-in-if.md)
34
+ - [`no-self-hosted-runner-on-fork-pr-events`](../no-self-hosted-runner-on-fork-pr-events.md)
35
+ - [`no-subdirectory-template-file-pattern`](../no-subdirectory-template-file-pattern.md)
36
+ - [`no-template-placeholder-in-non-template-workflow`](../no-template-placeholder-in-non-template-workflow.md)
37
+ - [`no-top-level-env`](../no-top-level-env.md)
38
+ - [`no-top-level-permissions`](../no-top-level-permissions.md)
39
+ - [`no-universal-template-file-pattern`](../no-universal-template-file-pattern.md)
40
+ - [`no-unknown-input-reference-in-composite`](../no-unknown-input-reference-in-composite.md)
41
+ - [`no-unknown-job-output-reference`](../no-unknown-job-output-reference.md)
42
+ - [`no-unknown-step-reference`](../no-unknown-step-reference.md)
43
+ - [`no-unused-input-in-composite`](../no-unused-input-in-composite.md)
44
+ - [`no-untrusted-input-in-run`](../no-untrusted-input-in-run.md)
45
+ - [`no-write-all-permissions`](../no-write-all-permissions.md)
46
+ - [`prefer-action-yml`](../prefer-action-yml.md)
47
+ - [`prefer-fail-fast`](../prefer-fail-fast.md)
48
+ - [`prefer-file-extension`](../prefer-file-extension.md)
49
+ - [`prefer-inputs-context`](../prefer-inputs-context.md)
50
+ - [`prefer-step-uses-style`](../prefer-step-uses-style.md)
51
+ - [`prefer-template-yml-extension`](../prefer-template-yml-extension.md)
52
+ - [`require-action-name`](../require-action-name.md)
53
+ - [`require-action-run-name`](../require-action-run-name.md)
54
+ - [`require-checkout-before-local-action`](../require-checkout-before-local-action.md)
55
+ - [`require-composite-step-name`](../require-composite-step-name.md)
56
+ - [`require-job-name`](../require-job-name.md)
57
+ - [`require-job-step-name`](../require-job-step-name.md)
58
+ - [`require-merge-group-trigger`](../require-merge-group-trigger.md)
59
+ - [`require-pull-request-target-branches`](../require-pull-request-target-branches.md)
60
+ - [`require-run-step-shell`](../require-run-step-shell.md)
61
+ - [`require-template-categories`](../require-template-categories.md)
62
+ - [`require-template-file-patterns`](../require-template-file-patterns.md)
63
+ - [`require-template-icon-file-exists`](../require-template-icon-file-exists.md)
64
+ - [`require-template-icon-name`](../require-template-icon-name.md)
65
+ - [`require-template-workflow-name`](../require-template-workflow-name.md)
66
+ - [`require-trigger-types`](../require-trigger-types.md)
67
+ - [`require-workflow-call-input-type`](../require-workflow-call-input-type.md)
68
+ - [`require-workflow-call-output-value`](../require-workflow-call-output-value.md)
69
+ - [`require-workflow-dispatch-input-type`](../require-workflow-dispatch-input-type.md)
70
+ - [`require-workflow-interface-description`](../require-workflow-interface-description.md)
71
+ - [`require-workflow-run-branches`](../require-workflow-run-branches.md)
72
+ - [`require-workflow-template-pair`](../require-workflow-template-pair.md)
73
+ - [`require-workflow-template-properties-pair`](../require-workflow-template-properties-pair.md)
74
+ - [`valid-timeout-minutes`](../valid-timeout-minutes.md)
75
+ - [`valid-trigger-events`](../valid-trigger-events.md)
76
+
@@ -0,0 +1,100 @@
1
+ # Presets
2
+
3
+ The plugin exports seven flat-config presets:
4
+
5
+ - [`githubActions.configs.actionMetadata`](./action-metadata.md)
6
+ - [`githubActions.configs.workflowTemplateProperties`](./workflow-template-properties.md)
7
+ - [`githubActions.configs.workflowTemplates`](./workflow-templates.md)
8
+ - [`githubActions.configs.recommended`](./recommended.md)
9
+ - [`githubActions.configs.security`](./security.md)
10
+ - [`githubActions.configs.strict`](./strict.md)
11
+ - [`githubActions.configs.all`](./all.md)
12
+
13
+ These presets cover workflow YAML, action metadata (`action.yml` / `action.yaml`),
14
+ and workflow template package files (`workflow-templates/*.yml`, `*.yaml`, and
15
+ `*.properties.json`).
16
+
17
+ ## How to choose
18
+
19
+ - Start with **recommended** for broad baseline quality and safety.
20
+ - Layer **security** for stronger supply-chain and permissions-focused checks.
21
+ - Use **strict** when you want high signal on operational consistency.
22
+ - Use **all** for complete rule coverage (best for internal policy repos).
23
+
24
+ Then review [getting started](../getting-started.md) and the full
25
+ [rule reference](../overview.md).
26
+
27
+ ## Rule Matrix
28
+
29
+ | Rule | 🧩 actionMetadata | 🗂️ workflowTemplateProperties | 🧱 workflowTemplates | 🟡 recommended | 🛡️ security | 🔴 strict | 🟣 all |
30
+ | --- | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
31
+ | [`action-name-casing`](../action-name-casing.md) | — | — | — | — | — | ✅ | ✅ |
32
+ | [`job-id-casing`](../job-id-casing.md) | — | — | — | — | — | ✅ | ✅ |
33
+ | [`max-jobs-per-action`](../max-jobs-per-action.md) | — | — | — | — | — | ✅ | ✅ |
34
+ | [`no-case-insensitive-input-id-collision`](../no-case-insensitive-input-id-collision.md) | ✅ | — | — | — | — | — | ✅ |
35
+ | [`no-composite-input-env-access`](../no-composite-input-env-access.md) | ✅ | — | — | — | — | — | ✅ |
36
+ | [`no-deprecated-node-runtime`](../no-deprecated-node-runtime.md) | ✅ | — | — | — | — | — | ✅ |
37
+ | [`no-duplicate-composite-step-id`](../no-duplicate-composite-step-id.md) | ✅ | — | — | — | — | — | ✅ |
38
+ | [`no-empty-template-file-pattern`](../no-empty-template-file-pattern.md) | — | ✅ | ✅ | — | — | — | ✅ |
39
+ | [`no-external-job`](../no-external-job.md) | — | — | — | — | — | ✅ | ✅ |
40
+ | [`no-hardcoded-default-branch-in-template`](../no-hardcoded-default-branch-in-template.md) | — | — | ✅ | — | — | — | ✅ |
41
+ | [`no-icon-file-extension-in-template-icon-name`](../no-icon-file-extension-in-template-icon-name.md) | — | ✅ | ✅ | — | — | — | ✅ |
42
+ | [`no-inherit-secrets`](../no-inherit-secrets.md) | — | — | — | — | ✅ | ✅ | ✅ |
43
+ | [`no-invalid-concurrency-context`](../no-invalid-concurrency-context.md) | — | — | — | ✅ | — | ✅ | ✅ |
44
+ | [`no-invalid-key`](../no-invalid-key.md) | — | — | — | ✅ | — | ✅ | ✅ |
45
+ | [`no-invalid-reusable-workflow-job-key`](../no-invalid-reusable-workflow-job-key.md) | — | — | — | ✅ | — | ✅ | ✅ |
46
+ | [`no-invalid-template-file-pattern-regex`](../no-invalid-template-file-pattern-regex.md) | — | ✅ | ✅ | — | — | — | ✅ |
47
+ | [`no-invalid-workflow-call-output-value`](../no-invalid-workflow-call-output-value.md) | — | — | — | ✅ | — | ✅ | ✅ |
48
+ | [`no-path-separators-in-template-icon-name`](../no-path-separators-in-template-icon-name.md) | — | ✅ | ✅ | — | — | — | ✅ |
49
+ | [`no-post-if-without-post`](../no-post-if-without-post.md) | ✅ | — | — | — | — | — | ✅ |
50
+ | [`no-pr-head-checkout-in-pull-request-target`](../no-pr-head-checkout-in-pull-request-target.md) | — | — | — | — | ✅ | ✅ | ✅ |
51
+ | [`no-pre-if-without-pre`](../no-pre-if-without-pre.md) | ✅ | — | — | — | — | — | ✅ |
52
+ | [`no-required-input-with-default`](../no-required-input-with-default.md) | ✅ | — | — | — | — | — | ✅ |
53
+ | [`no-secrets-in-if`](../no-secrets-in-if.md) | — | — | — | ✅ | ✅ | ✅ | ✅ |
54
+ | [`no-self-hosted-runner-on-fork-pr-events`](../no-self-hosted-runner-on-fork-pr-events.md) | — | — | — | — | ✅ | ✅ | ✅ |
55
+ | [`no-subdirectory-template-file-pattern`](../no-subdirectory-template-file-pattern.md) | — | ✅ | ✅ | — | — | — | ✅ |
56
+ | [`no-template-placeholder-in-non-template-workflow`](../no-template-placeholder-in-non-template-workflow.md) | — | — | — | ✅ | — | ✅ | ✅ |
57
+ | [`no-top-level-env`](../no-top-level-env.md) | — | — | — | — | — | ✅ | ✅ |
58
+ | [`no-top-level-permissions`](../no-top-level-permissions.md) | — | — | — | — | — | — | ✅ |
59
+ | [`no-universal-template-file-pattern`](../no-universal-template-file-pattern.md) | — | ✅ | ✅ | — | — | — | ✅ |
60
+ | [`no-unknown-input-reference-in-composite`](../no-unknown-input-reference-in-composite.md) | ✅ | — | — | — | — | — | ✅ |
61
+ | [`no-unknown-job-output-reference`](../no-unknown-job-output-reference.md) | — | — | — | ✅ | — | ✅ | ✅ |
62
+ | [`no-unknown-step-reference`](../no-unknown-step-reference.md) | — | — | — | — | — | ✅ | ✅ |
63
+ | [`no-untrusted-input-in-run`](../no-untrusted-input-in-run.md) | — | — | — | — | ✅ | ✅ | ✅ |
64
+ | [`no-unused-input-in-composite`](../no-unused-input-in-composite.md) | ✅ | — | — | — | — | — | ✅ |
65
+ | [`no-write-all-permissions`](../no-write-all-permissions.md) | — | — | — | ✅ | ✅ | ✅ | ✅ |
66
+ | [`pin-action-shas`](../pin-action-shas.md) | — | — | — | — | ✅ | ✅ | ✅ |
67
+ | [`prefer-action-yml`](../prefer-action-yml.md) | ✅ | — | — | — | — | — | ✅ |
68
+ | [`prefer-fail-fast`](../prefer-fail-fast.md) | — | — | — | — | — | ✅ | ✅ |
69
+ | [`prefer-file-extension`](../prefer-file-extension.md) | — | — | — | ✅ | — | ✅ | ✅ |
70
+ | [`prefer-inputs-context`](../prefer-inputs-context.md) | — | — | — | ✅ | — | ✅ | ✅ |
71
+ | [`prefer-step-uses-style`](../prefer-step-uses-style.md) | — | — | — | — | — | — | ✅ |
72
+ | [`prefer-template-yml-extension`](../prefer-template-yml-extension.md) | — | — | ✅ | — | — | — | ✅ |
73
+ | [`require-action-name`](../require-action-name.md) | — | — | — | ✅ | — | ✅ | ✅ |
74
+ | [`require-action-run-name`](../require-action-run-name.md) | — | — | — | — | — | ✅ | ✅ |
75
+ | [`require-checkout-before-local-action`](../require-checkout-before-local-action.md) | — | — | — | ✅ | — | ✅ | ✅ |
76
+ | [`require-composite-step-name`](../require-composite-step-name.md) | ✅ | — | — | — | — | — | ✅ |
77
+ | [`require-job-name`](../require-job-name.md) | — | — | — | — | — | ✅ | ✅ |
78
+ | [`require-job-step-name`](../require-job-step-name.md) | — | — | — | — | — | ✅ | ✅ |
79
+ | [`require-job-timeout-minutes`](../require-job-timeout-minutes.md) | — | — | — | ✅ | — | ✅ | ✅ |
80
+ | [`require-merge-group-trigger`](../require-merge-group-trigger.md) | — | — | — | — | — | ✅ | ✅ |
81
+ | [`require-pull-request-target-branches`](../require-pull-request-target-branches.md) | — | — | — | — | ✅ | ✅ | ✅ |
82
+ | [`require-run-step-shell`](../require-run-step-shell.md) | — | — | — | — | — | ✅ | ✅ |
83
+ | [`require-template-categories`](../require-template-categories.md) | — | ✅ | ✅ | — | — | — | ✅ |
84
+ | [`require-template-file-patterns`](../require-template-file-patterns.md) | — | ✅ | ✅ | — | — | — | ✅ |
85
+ | [`require-template-icon-file-exists`](../require-template-icon-file-exists.md) | — | ✅ | ✅ | — | — | — | ✅ |
86
+ | [`require-template-icon-name`](../require-template-icon-name.md) | — | ✅ | ✅ | — | — | — | ✅ |
87
+ | [`require-template-workflow-name`](../require-template-workflow-name.md) | — | — | ✅ | — | — | — | ✅ |
88
+ | [`require-trigger-types`](../require-trigger-types.md) | — | — | — | — | — | ✅ | ✅ |
89
+ | [`require-workflow-call-input-type`](../require-workflow-call-input-type.md) | — | — | — | ✅ | — | ✅ | ✅ |
90
+ | [`require-workflow-call-output-value`](../require-workflow-call-output-value.md) | — | — | — | ✅ | — | ✅ | ✅ |
91
+ | [`require-workflow-concurrency`](../require-workflow-concurrency.md) | — | — | — | — | — | ✅ | ✅ |
92
+ | [`require-workflow-dispatch-input-type`](../require-workflow-dispatch-input-type.md) | — | — | — | ✅ | — | ✅ | ✅ |
93
+ | [`require-workflow-interface-description`](../require-workflow-interface-description.md) | — | — | — | — | — | ✅ | ✅ |
94
+ | [`require-workflow-permissions`](../require-workflow-permissions.md) | — | — | — | ✅ | ✅ | ✅ | ✅ |
95
+ | [`require-workflow-run-branches`](../require-workflow-run-branches.md) | — | — | — | — | ✅ | ✅ | ✅ |
96
+ | [`require-workflow-template-pair`](../require-workflow-template-pair.md) | — | — | ✅ | — | — | — | ✅ |
97
+ | [`require-workflow-template-properties-pair`](../require-workflow-template-properties-pair.md) | — | ✅ | ✅ | — | — | — | ✅ |
98
+ | [`valid-timeout-minutes`](../valid-timeout-minutes.md) | — | — | — | ✅ | — | ✅ | ✅ |
99
+ | [`valid-trigger-events`](../valid-trigger-events.md) | — | — | — | ✅ | — | ✅ | ✅ |
100
+
@@ -0,0 +1,26 @@
1
+ # `githubActions.configs.recommended`
2
+
3
+ Balanced defaults for most repositories.
4
+
5
+ ## Included rules
6
+
7
+ - [`no-invalid-concurrency-context`](../no-invalid-concurrency-context.md)
8
+ - [`no-invalid-workflow-call-output-value`](../no-invalid-workflow-call-output-value.md)
9
+ - [`no-write-all-permissions`](../no-write-all-permissions.md)
10
+ - [`no-invalid-key`](../no-invalid-key.md)
11
+ - [`no-invalid-reusable-workflow-job-key`](../no-invalid-reusable-workflow-job-key.md)
12
+ - [`no-secrets-in-if`](../no-secrets-in-if.md)
13
+ - [`no-template-placeholder-in-non-template-workflow`](../no-template-placeholder-in-non-template-workflow.md)
14
+ - [`no-unknown-job-output-reference`](../no-unknown-job-output-reference.md)
15
+ - [`prefer-file-extension`](../prefer-file-extension.md)
16
+ - [`prefer-inputs-context`](../prefer-inputs-context.md)
17
+ - [`require-workflow-permissions`](../require-workflow-permissions.md)
18
+ - [`require-checkout-before-local-action`](../require-checkout-before-local-action.md)
19
+ - [`require-job-timeout-minutes`](../require-job-timeout-minutes.md)
20
+ - [`require-workflow-call-input-type`](../require-workflow-call-input-type.md)
21
+ - [`require-workflow-call-output-value`](../require-workflow-call-output-value.md)
22
+ - [`require-workflow-dispatch-input-type`](../require-workflow-dispatch-input-type.md)
23
+ - [`valid-timeout-minutes`](../valid-timeout-minutes.md)
24
+ - [`valid-trigger-events`](../valid-trigger-events.md)
25
+ - [`require-action-name`](../require-action-name.md)
26
+
@@ -0,0 +1,16 @@
1
+ # `githubActions.configs.security`
2
+
3
+ Security-focused workflow hardening checks.
4
+
5
+ ## Included rules
6
+
7
+ - [`no-inherit-secrets`](../no-inherit-secrets.md)
8
+ - [`no-pr-head-checkout-in-pull-request-target`](../no-pr-head-checkout-in-pull-request-target.md)
9
+ - [`no-secrets-in-if`](../no-secrets-in-if.md)
10
+ - [`no-self-hosted-runner-on-fork-pr-events`](../no-self-hosted-runner-on-fork-pr-events.md)
11
+ - [`no-untrusted-input-in-run`](../no-untrusted-input-in-run.md)
12
+ - [`require-pull-request-target-branches`](../require-pull-request-target-branches.md)
13
+ - [`require-workflow-permissions`](../require-workflow-permissions.md)
14
+ - [`require-workflow-run-branches`](../require-workflow-run-branches.md)
15
+ - [`pin-action-shas`](../pin-action-shas.md)
16
+