@sun-asterisk/sunlint 1.3.39 → 1.3.40

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 (422) hide show
  1. package/config/rules/rules-registry-generated.json +134 -108
  2. package/docs/GENERATED_FILES_QUICK_REFERENCE.md +96 -0
  3. package/docs/GENERATED_FILE_HANDLING_SUMMARY.md +152 -0
  4. package/docs/skills/CREATE_NEW_DART_RULE.md +161 -14
  5. package/origin-rules/dart-en.md +151 -163
  6. package/package.json +2 -1
  7. package/rules/dart/D002_dispose_resources/config.json +25 -0
  8. package/rules/dart/D003_prefer_widgets_over_methods/config.json +14 -0
  9. package/rules/dart/D004_avoid_shrinkwrap_listview/config.json +13 -0
  10. package/rules/dart/D005_limit_widget_nesting/config.json +13 -0
  11. package/rules/dart/D006_prefer_extracting_large_callbacks/config.json +25 -0
  12. package/rules/dart/D007_prefer_init_first_dispose_last/config.json +10 -0
  13. package/rules/dart/D008_avoid_long_functions/config.json +12 -0
  14. package/rules/dart/D009_limit_function_parameters/config.json +13 -0
  15. package/rules/dart/D010_limit_cyclomatic_complexity/config.json +12 -0
  16. package/rules/dart/D011_prefer_named_parameters/config.json +12 -0
  17. package/rules/dart/D012_prefer_named_boolean_parameters/config.json +9 -0
  18. package/rules/dart/D013_single_public_class/config.json +10 -0
  19. package/rules/dart/D014_unsafe_collection_access/config.json +10 -0
  20. package/rules/dart/D015_copywith_all_parameters/config.json +9 -0
  21. package/rules/dart/D016_project_should_have_tests/config.json +24 -0
  22. package/rules/dart/D017_pubspec_dependencies_review/config.json +23 -0
  23. package/rules/dart/D018_remove_commented_code/config.json +13 -0
  24. package/rules/dart/D019_avoid_single_child_multi_child_widget/config.json +21 -0
  25. package/rules/dart/D020_limit_if_else_branches/config.json +12 -0
  26. package/rules/dart/D021_avoid_negated_boolean_checks/config.json +14 -0
  27. package/rules/dart/D022_use_setstate_correctly/config.json +14 -0
  28. package/rules/dart/D023_avoid_unnecessary_method_overrides/config.json +13 -0
  29. package/rules/dart/D024_avoid_unnecessary_stateful_widget/config.json +9 -0
  30. package/rules/dart/D025_avoid_nested_conditional_expressions/config.json +9 -0
  31. package/skill-assets/sunlint-code-quality/AGENTS.md +80 -0
  32. package/skill-assets/sunlint-code-quality/SKILL.md +176 -0
  33. package/skill-assets/sunlint-code-quality/rules/csharp/C006-verb-noun-functions.md +36 -0
  34. package/skill-assets/sunlint-code-quality/rules/csharp/C013-no-dead-code.md +38 -0
  35. package/skill-assets/sunlint-code-quality/rules/csharp/C014-dependency-injection.md +45 -0
  36. package/skill-assets/sunlint-code-quality/rules/csharp/C017-no-constructor-logic.md +46 -0
  37. package/skill-assets/sunlint-code-quality/rules/csharp/C018-generic-errors.md +38 -0
  38. package/skill-assets/sunlint-code-quality/rules/csharp/C019-error-log-level.md +29 -0
  39. package/skill-assets/sunlint-code-quality/rules/csharp/C020-no-unused-imports.md +30 -0
  40. package/skill-assets/sunlint-code-quality/rules/csharp/C022-no-unused-variables.md +33 -0
  41. package/skill-assets/sunlint-code-quality/rules/csharp/C023-no-duplicate-names.md +36 -0
  42. package/skill-assets/sunlint-code-quality/rules/csharp/C024-centralize-constants.md +33 -0
  43. package/skill-assets/sunlint-code-quality/rules/csharp/C029-catch-log-root-cause.md +40 -0
  44. package/skill-assets/sunlint-code-quality/rules/csharp/C030-custom-error-classes.md +38 -0
  45. package/skill-assets/sunlint-code-quality/rules/csharp/C033-separate-data-access.md +53 -0
  46. package/skill-assets/sunlint-code-quality/rules/csharp/C035-error-context-logging.md +31 -0
  47. package/skill-assets/sunlint-code-quality/rules/csharp/C041-no-hardcoded-secrets.md +25 -0
  48. package/skill-assets/sunlint-code-quality/rules/csharp/C042-boolean-naming.md +27 -0
  49. package/skill-assets/sunlint-code-quality/rules/csharp/C052-controller-parsing.md +41 -0
  50. package/skill-assets/sunlint-code-quality/rules/csharp/C060-superclass-logic.md +33 -0
  51. package/skill-assets/sunlint-code-quality/rules/csharp/C067-no-hardcoded-config.md +24 -0
  52. package/skill-assets/sunlint-code-quality/rules/csharp/S003-open-redirect.md +47 -0
  53. package/skill-assets/sunlint-code-quality/rules/csharp/S004-no-log-credentials.md +28 -0
  54. package/skill-assets/sunlint-code-quality/rules/csharp/S005-server-authorization.md +51 -0
  55. package/skill-assets/sunlint-code-quality/rules/csharp/S006-default-credentials.md +42 -0
  56. package/skill-assets/sunlint-code-quality/rules/csharp/S007-output-encoding.md +36 -0
  57. package/skill-assets/sunlint-code-quality/rules/csharp/S009-approved-crypto.md +37 -0
  58. package/skill-assets/sunlint-code-quality/rules/csharp/S010-csprng.md +32 -0
  59. package/skill-assets/sunlint-code-quality/rules/csharp/S011-encrypted-client-hello.md +36 -0
  60. package/skill-assets/sunlint-code-quality/rules/csharp/S012-secrets-management.md +35 -0
  61. package/skill-assets/sunlint-code-quality/rules/csharp/S013-tls-connections.md +36 -0
  62. package/skill-assets/sunlint-code-quality/rules/csharp/S016-no-sensitive-query-string.md +39 -0
  63. package/skill-assets/sunlint-code-quality/rules/csharp/S017-parameterized-queries.md +47 -0
  64. package/skill-assets/sunlint-code-quality/rules/csharp/S019-email-input-sanitization.md +35 -0
  65. package/skill-assets/sunlint-code-quality/rules/csharp/S020-eval-code-execution.md +56 -0
  66. package/skill-assets/sunlint-code-quality/rules/csharp/S022-context-escaping.md +50 -0
  67. package/skill-assets/sunlint-code-quality/rules/csharp/S023-dynamic-js-encoding.md +34 -0
  68. package/skill-assets/sunlint-code-quality/rules/csharp/S025-server-validation.md +56 -0
  69. package/skill-assets/sunlint-code-quality/rules/csharp/S026-tls-encryption.md +28 -0
  70. package/skill-assets/sunlint-code-quality/rules/csharp/S027-mtls-validation.md +40 -0
  71. package/skill-assets/sunlint-code-quality/rules/csharp/S028-upload-limits.md +50 -0
  72. package/skill-assets/sunlint-code-quality/rules/csharp/S029-csrf-protection.md +42 -0
  73. package/skill-assets/sunlint-code-quality/rules/csharp/S030-directory-browsing.md +26 -0
  74. package/skill-assets/sunlint-code-quality/rules/csharp/S031-secure-cookie-flag.md +35 -0
  75. package/skill-assets/sunlint-code-quality/rules/csharp/S032-httponly-cookie.md +31 -0
  76. package/skill-assets/sunlint-code-quality/rules/csharp/S033-samesite-cookie.md +36 -0
  77. package/skill-assets/sunlint-code-quality/rules/csharp/S034-host-prefix-cookie.md +31 -0
  78. package/skill-assets/sunlint-code-quality/rules/csharp/S035-app-hostnames.md +26 -0
  79. package/skill-assets/sunlint-code-quality/rules/csharp/S036-internal-file-paths.md +36 -0
  80. package/skill-assets/sunlint-code-quality/rules/csharp/S037-anti-cache-headers.md +33 -0
  81. package/skill-assets/sunlint-code-quality/rules/csharp/S039-tls-certificate-validation.md +41 -0
  82. package/skill-assets/sunlint-code-quality/rules/csharp/S041-logout-invalidation.md +36 -0
  83. package/skill-assets/sunlint-code-quality/rules/csharp/S042-long-lived-sessions.md +47 -0
  84. package/skill-assets/sunlint-code-quality/rules/csharp/S044-critical-changes-reauth.md +45 -0
  85. package/skill-assets/sunlint-code-quality/rules/csharp/S045-brute-force-protection.md +48 -0
  86. package/skill-assets/sunlint-code-quality/rules/csharp/S047-oauth-csrf-protection.md +53 -0
  87. package/skill-assets/sunlint-code-quality/rules/csharp/S048-oauth-redirect-validation.md +37 -0
  88. package/skill-assets/sunlint-code-quality/rules/csharp/S049-auth-code-expiry.md +33 -0
  89. package/skill-assets/sunlint-code-quality/rules/csharp/S050-token-entropy.md +33 -0
  90. package/skill-assets/sunlint-code-quality/rules/csharp/S051-password-length.md +35 -0
  91. package/skill-assets/sunlint-code-quality/rules/csharp/S052-otp-entropy.md +26 -0
  92. package/skill-assets/sunlint-code-quality/rules/csharp/S053-generic-error-messages.md +32 -0
  93. package/skill-assets/sunlint-code-quality/rules/csharp/S054-no-default-admin.md +31 -0
  94. package/skill-assets/sunlint-code-quality/rules/csharp/S055-content-type-validation.md +44 -0
  95. package/skill-assets/sunlint-code-quality/rules/csharp/S056-log-injection.md +33 -0
  96. package/skill-assets/sunlint-code-quality/rules/csharp/S057-synchronized-time.md +27 -0
  97. package/skill-assets/sunlint-code-quality/rules/csharp/S058-ssrf-protection.md +54 -0
  98. package/skill-assets/sunlint-code-quality/rules/java/C006-verb-noun-functions.md +36 -0
  99. package/skill-assets/sunlint-code-quality/rules/java/C013-no-dead-code.md +175 -0
  100. package/skill-assets/sunlint-code-quality/rules/java/C014-dependency-injection.md +42 -0
  101. package/skill-assets/sunlint-code-quality/rules/java/C017-no-constructor-logic.md +39 -0
  102. package/skill-assets/sunlint-code-quality/rules/java/C018-generic-errors.md +28 -0
  103. package/skill-assets/sunlint-code-quality/rules/java/C019-error-log-level.md +34 -0
  104. package/skill-assets/sunlint-code-quality/rules/java/C020-no-unused-imports.md +34 -0
  105. package/skill-assets/sunlint-code-quality/rules/java/C022-no-unused-variables.md +31 -0
  106. package/skill-assets/sunlint-code-quality/rules/java/C023-no-duplicate-names.md +37 -0
  107. package/skill-assets/sunlint-code-quality/rules/java/C024-centralize-constants.md +36 -0
  108. package/skill-assets/sunlint-code-quality/rules/java/C029-catch-log-root-cause.md +42 -0
  109. package/skill-assets/sunlint-code-quality/rules/java/C030-custom-error-classes.md +50 -0
  110. package/skill-assets/sunlint-code-quality/rules/java/C033-separate-data-access.md +46 -0
  111. package/skill-assets/sunlint-code-quality/rules/java/C035-error-context-logging.md +38 -0
  112. package/skill-assets/sunlint-code-quality/rules/java/C041-no-hardcoded-secrets.md +34 -0
  113. package/skill-assets/sunlint-code-quality/rules/java/C042-boolean-naming.md +27 -0
  114. package/skill-assets/sunlint-code-quality/rules/java/C052-controller-parsing.md +39 -0
  115. package/skill-assets/sunlint-code-quality/rules/java/C060-superclass-logic.md +32 -0
  116. package/skill-assets/sunlint-code-quality/rules/java/C067-no-hardcoded-config.md +31 -0
  117. package/skill-assets/sunlint-code-quality/rules/java/S003-open-redirect.md +38 -0
  118. package/skill-assets/sunlint-code-quality/rules/java/S004-no-log-credentials.md +36 -0
  119. package/skill-assets/sunlint-code-quality/rules/java/S005-server-authorization.md +53 -0
  120. package/skill-assets/sunlint-code-quality/rules/java/S006-default-credentials.md +39 -0
  121. package/skill-assets/sunlint-code-quality/rules/java/S007-output-encoding.md +49 -0
  122. package/skill-assets/sunlint-code-quality/rules/java/S009-approved-crypto.md +40 -0
  123. package/skill-assets/sunlint-code-quality/rules/java/S010-csprng.md +36 -0
  124. package/skill-assets/sunlint-code-quality/rules/java/S011-encrypted-client-hello.md +27 -0
  125. package/skill-assets/sunlint-code-quality/rules/java/S012-secrets-management.md +34 -0
  126. package/skill-assets/sunlint-code-quality/rules/java/S013-tls-connections.md +40 -0
  127. package/skill-assets/sunlint-code-quality/rules/java/S016-no-sensitive-query-string.md +36 -0
  128. package/skill-assets/sunlint-code-quality/rules/java/S017-parameterized-queries.md +47 -0
  129. package/skill-assets/sunlint-code-quality/rules/java/S019-email-input-sanitization.md +32 -0
  130. package/skill-assets/sunlint-code-quality/rules/java/S020-eval-code-execution.md +45 -0
  131. package/skill-assets/sunlint-code-quality/rules/java/S022-context-escaping.md +28 -0
  132. package/skill-assets/sunlint-code-quality/rules/java/S023-dynamic-js-encoding.md +28 -0
  133. package/skill-assets/sunlint-code-quality/rules/java/S025-server-validation.md +58 -0
  134. package/skill-assets/sunlint-code-quality/rules/java/S026-tls-encryption.md +57 -0
  135. package/skill-assets/sunlint-code-quality/rules/java/S027-mtls-validation.md +26 -0
  136. package/skill-assets/sunlint-code-quality/rules/java/S028-upload-limits.md +35 -0
  137. package/skill-assets/sunlint-code-quality/rules/java/S029-csrf-protection.md +35 -0
  138. package/skill-assets/sunlint-code-quality/rules/java/S030-directory-browsing.md +38 -0
  139. package/skill-assets/sunlint-code-quality/rules/java/S031-secure-cookie-flag.md +38 -0
  140. package/skill-assets/sunlint-code-quality/rules/java/S032-httponly-cookie.md +31 -0
  141. package/skill-assets/sunlint-code-quality/rules/java/S033-samesite-cookie.md +42 -0
  142. package/skill-assets/sunlint-code-quality/rules/java/S034-host-prefix-cookie.md +35 -0
  143. package/skill-assets/sunlint-code-quality/rules/java/S035-app-hostnames.md +23 -0
  144. package/skill-assets/sunlint-code-quality/rules/java/S036-internal-file-paths.md +39 -0
  145. package/skill-assets/sunlint-code-quality/rules/java/S037-anti-cache-headers.md +37 -0
  146. package/skill-assets/sunlint-code-quality/rules/java/S039-tls-certificate-validation.md +43 -0
  147. package/skill-assets/sunlint-code-quality/rules/java/S041-logout-invalidation.md +53 -0
  148. package/skill-assets/sunlint-code-quality/rules/java/S042-long-lived-sessions.md +36 -0
  149. package/skill-assets/sunlint-code-quality/rules/java/S044-critical-changes-reauth.md +28 -0
  150. package/skill-assets/sunlint-code-quality/rules/java/S045-brute-force-protection.md +38 -0
  151. package/skill-assets/sunlint-code-quality/rules/java/S047-oauth-csrf-protection.md +33 -0
  152. package/skill-assets/sunlint-code-quality/rules/java/S048-oauth-redirect-validation.md +25 -0
  153. package/skill-assets/sunlint-code-quality/rules/java/S049-auth-code-expiry.md +23 -0
  154. package/skill-assets/sunlint-code-quality/rules/java/S050-token-entropy.md +20 -0
  155. package/skill-assets/sunlint-code-quality/rules/java/S051-password-length.md +20 -0
  156. package/skill-assets/sunlint-code-quality/rules/java/S052-otp-entropy.md +23 -0
  157. package/skill-assets/sunlint-code-quality/rules/java/S053-generic-error-messages.md +21 -0
  158. package/skill-assets/sunlint-code-quality/rules/java/S054-no-default-admin.md +16 -0
  159. package/skill-assets/sunlint-code-quality/rules/java/S055-content-type-validation.md +36 -0
  160. package/skill-assets/sunlint-code-quality/rules/java/S056-log-injection.md +38 -0
  161. package/skill-assets/sunlint-code-quality/rules/java/S057-synchronized-time.md +35 -0
  162. package/skill-assets/sunlint-code-quality/rules/java/S058-ssrf-protection.md +56 -0
  163. package/skill-assets/sunlint-code-quality/rules/kotlin/C006-verb-noun-functions.md +45 -0
  164. package/skill-assets/sunlint-code-quality/rules/kotlin/C013-no-dead-code.md +49 -0
  165. package/skill-assets/sunlint-code-quality/rules/kotlin/C014-dependency-injection.md +64 -0
  166. package/skill-assets/sunlint-code-quality/rules/kotlin/C017-no-constructor-logic.md +68 -0
  167. package/skill-assets/sunlint-code-quality/rules/kotlin/C018-generic-errors.md +46 -0
  168. package/skill-assets/sunlint-code-quality/rules/kotlin/C019-error-log-level.md +50 -0
  169. package/skill-assets/sunlint-code-quality/rules/kotlin/C020-no-unused-imports.md +44 -0
  170. package/skill-assets/sunlint-code-quality/rules/kotlin/C022-no-unused-variables.md +39 -0
  171. package/skill-assets/sunlint-code-quality/rules/kotlin/C023-no-duplicate-names.md +47 -0
  172. package/skill-assets/sunlint-code-quality/rules/kotlin/C024-centralize-constants.md +58 -0
  173. package/skill-assets/sunlint-code-quality/rules/kotlin/C029-catch-log-root-cause.md +50 -0
  174. package/skill-assets/sunlint-code-quality/rules/kotlin/C030-custom-error-classes.md +72 -0
  175. package/skill-assets/sunlint-code-quality/rules/kotlin/C033-separate-data-access.md +69 -0
  176. package/skill-assets/sunlint-code-quality/rules/kotlin/C035-error-context-logging.md +47 -0
  177. package/skill-assets/sunlint-code-quality/rules/kotlin/C041-no-hardcoded-secrets.md +47 -0
  178. package/skill-assets/sunlint-code-quality/rules/kotlin/C042-boolean-naming.md +42 -0
  179. package/skill-assets/sunlint-code-quality/rules/kotlin/C052-controller-parsing.md +71 -0
  180. package/skill-assets/sunlint-code-quality/rules/kotlin/C060-superclass-logic.md +60 -0
  181. package/skill-assets/sunlint-code-quality/rules/kotlin/C067-no-hardcoded-config.md +51 -0
  182. package/skill-assets/sunlint-code-quality/rules/kotlin/S003-open-redirect.md +66 -0
  183. package/skill-assets/sunlint-code-quality/rules/kotlin/S004-no-log-credentials.md +59 -0
  184. package/skill-assets/sunlint-code-quality/rules/kotlin/S005-server-authorization.md +75 -0
  185. package/skill-assets/sunlint-code-quality/rules/kotlin/S006-default-credentials.md +49 -0
  186. package/skill-assets/sunlint-code-quality/rules/kotlin/S007-output-encoding.md +62 -0
  187. package/skill-assets/sunlint-code-quality/rules/kotlin/S009-approved-crypto.md +51 -0
  188. package/skill-assets/sunlint-code-quality/rules/kotlin/S010-csprng.md +61 -0
  189. package/skill-assets/sunlint-code-quality/rules/kotlin/S011-encrypted-client-hello.md +48 -0
  190. package/skill-assets/sunlint-code-quality/rules/kotlin/S012-secrets-management.md +53 -0
  191. package/skill-assets/sunlint-code-quality/rules/kotlin/S013-tls-connections.md +61 -0
  192. package/skill-assets/sunlint-code-quality/rules/kotlin/S016-no-sensitive-query-string.md +51 -0
  193. package/skill-assets/sunlint-code-quality/rules/kotlin/S017-parameterized-queries.md +41 -0
  194. package/skill-assets/sunlint-code-quality/rules/kotlin/S019-email-input-sanitization.md +50 -0
  195. package/skill-assets/sunlint-code-quality/rules/kotlin/S020-eval-code-execution.md +57 -0
  196. package/skill-assets/sunlint-code-quality/rules/kotlin/S022-context-escaping.md +58 -0
  197. package/skill-assets/sunlint-code-quality/rules/kotlin/S023-dynamic-js-encoding.md +57 -0
  198. package/skill-assets/sunlint-code-quality/rules/kotlin/S025-server-validation.md +59 -0
  199. package/skill-assets/sunlint-code-quality/rules/kotlin/S026-tls-encryption.md +50 -0
  200. package/skill-assets/sunlint-code-quality/rules/kotlin/S027-mtls-validation.md +60 -0
  201. package/skill-assets/sunlint-code-quality/rules/kotlin/S028-upload-limits.md +67 -0
  202. package/skill-assets/sunlint-code-quality/rules/kotlin/S029-csrf-protection.md +57 -0
  203. package/skill-assets/sunlint-code-quality/rules/kotlin/S030-directory-browsing.md +50 -0
  204. package/skill-assets/sunlint-code-quality/rules/kotlin/S031-secure-cookie-flag.md +51 -0
  205. package/skill-assets/sunlint-code-quality/rules/kotlin/S032-httponly-cookie.md +49 -0
  206. package/skill-assets/sunlint-code-quality/rules/kotlin/S033-samesite-cookie.md +54 -0
  207. package/skill-assets/sunlint-code-quality/rules/kotlin/S034-host-prefix-cookie.md +50 -0
  208. package/skill-assets/sunlint-code-quality/rules/kotlin/S035-app-hostnames.md +59 -0
  209. package/skill-assets/sunlint-code-quality/rules/kotlin/S036-internal-file-paths.md +61 -0
  210. package/skill-assets/sunlint-code-quality/rules/kotlin/S037-anti-cache-headers.md +58 -0
  211. package/skill-assets/sunlint-code-quality/rules/kotlin/S039-tls-certificate-validation.md +62 -0
  212. package/skill-assets/sunlint-code-quality/rules/kotlin/S041-logout-invalidation.md +71 -0
  213. package/skill-assets/sunlint-code-quality/rules/kotlin/S042-long-lived-sessions.md +57 -0
  214. package/skill-assets/sunlint-code-quality/rules/kotlin/S044-critical-changes-reauth.md +64 -0
  215. package/skill-assets/sunlint-code-quality/rules/kotlin/S045-brute-force-protection.md +64 -0
  216. package/skill-assets/sunlint-code-quality/rules/kotlin/S047-oauth-csrf-protection.md +74 -0
  217. package/skill-assets/sunlint-code-quality/rules/kotlin/S048-oauth-redirect-validation.md +61 -0
  218. package/skill-assets/sunlint-code-quality/rules/kotlin/S049-auth-code-expiry.md +70 -0
  219. package/skill-assets/sunlint-code-quality/rules/kotlin/S050-token-entropy.md +65 -0
  220. package/skill-assets/sunlint-code-quality/rules/kotlin/S051-password-length.md +52 -0
  221. package/skill-assets/sunlint-code-quality/rules/kotlin/S052-otp-entropy.md +55 -0
  222. package/skill-assets/sunlint-code-quality/rules/kotlin/S053-generic-error-messages.md +66 -0
  223. package/skill-assets/sunlint-code-quality/rules/kotlin/S054-no-default-admin.md +57 -0
  224. package/skill-assets/sunlint-code-quality/rules/kotlin/S055-content-type-validation.md +58 -0
  225. package/skill-assets/sunlint-code-quality/rules/kotlin/S056-log-injection.md +47 -0
  226. package/skill-assets/sunlint-code-quality/rules/kotlin/S057-synchronized-time.md +49 -0
  227. package/skill-assets/sunlint-code-quality/rules/kotlin/S058-ssrf-protection.md +69 -0
  228. package/skill-assets/sunlint-code-quality/rules/php/C006-verb-noun-functions.md +46 -0
  229. package/skill-assets/sunlint-code-quality/rules/php/C013-no-dead-code.md +53 -0
  230. package/skill-assets/sunlint-code-quality/rules/php/C014-dependency-injection.md +71 -0
  231. package/skill-assets/sunlint-code-quality/rules/php/C017-no-constructor-logic.md +68 -0
  232. package/skill-assets/sunlint-code-quality/rules/php/C018-generic-errors.md +50 -0
  233. package/skill-assets/sunlint-code-quality/rules/php/C019-error-log-level.md +54 -0
  234. package/skill-assets/sunlint-code-quality/rules/php/C020-no-unused-imports.md +55 -0
  235. package/skill-assets/sunlint-code-quality/rules/php/C022-no-unused-variables.md +51 -0
  236. package/skill-assets/sunlint-code-quality/rules/php/C023-no-duplicate-names.md +61 -0
  237. package/skill-assets/sunlint-code-quality/rules/php/C024-centralize-constants.md +60 -0
  238. package/skill-assets/sunlint-code-quality/rules/php/C029-catch-log-root-cause.md +57 -0
  239. package/skill-assets/sunlint-code-quality/rules/php/C030-custom-error-classes.md +62 -0
  240. package/skill-assets/sunlint-code-quality/rules/php/C033-separate-data-access.md +79 -0
  241. package/skill-assets/sunlint-code-quality/rules/php/C035-error-context-logging.md +54 -0
  242. package/skill-assets/sunlint-code-quality/rules/php/C041-no-hardcoded-secrets.md +59 -0
  243. package/skill-assets/sunlint-code-quality/rules/php/C042-boolean-naming.md +52 -0
  244. package/skill-assets/sunlint-code-quality/rules/php/C052-controller-parsing.md +66 -0
  245. package/skill-assets/sunlint-code-quality/rules/php/C060-superclass-logic.md +54 -0
  246. package/skill-assets/sunlint-code-quality/rules/php/C067-no-hardcoded-config.md +55 -0
  247. package/skill-assets/sunlint-code-quality/rules/php/S003-open-redirect.md +60 -0
  248. package/skill-assets/sunlint-code-quality/rules/php/S004-no-log-credentials.md +67 -0
  249. package/skill-assets/sunlint-code-quality/rules/php/S005-server-authorization.md +57 -0
  250. package/skill-assets/sunlint-code-quality/rules/php/S006-default-credentials.md +61 -0
  251. package/skill-assets/sunlint-code-quality/rules/php/S007-output-encoding.md +61 -0
  252. package/skill-assets/sunlint-code-quality/rules/php/S009-approved-crypto.md +53 -0
  253. package/skill-assets/sunlint-code-quality/rules/php/S010-csprng.md +47 -0
  254. package/skill-assets/sunlint-code-quality/rules/php/S011-encrypted-client-hello.md +41 -0
  255. package/skill-assets/sunlint-code-quality/rules/php/S012-secrets-management.md +60 -0
  256. package/skill-assets/sunlint-code-quality/rules/php/S013-tls-connections.md +67 -0
  257. package/skill-assets/sunlint-code-quality/rules/php/S016-no-sensitive-query-string.md +61 -0
  258. package/skill-assets/sunlint-code-quality/rules/php/S017-parameterized-queries.md +44 -0
  259. package/skill-assets/sunlint-code-quality/rules/php/S019-email-input-sanitization.md +54 -0
  260. package/skill-assets/sunlint-code-quality/rules/php/S020-eval-code-execution.md +57 -0
  261. package/skill-assets/sunlint-code-quality/rules/php/S022-context-escaping.md +58 -0
  262. package/skill-assets/sunlint-code-quality/rules/php/S023-dynamic-js-encoding.md +62 -0
  263. package/skill-assets/sunlint-code-quality/rules/php/S025-server-validation.md +63 -0
  264. package/skill-assets/sunlint-code-quality/rules/php/S026-tls-encryption.md +48 -0
  265. package/skill-assets/sunlint-code-quality/rules/php/S027-mtls-validation.md +62 -0
  266. package/skill-assets/sunlint-code-quality/rules/php/S028-upload-limits.md +60 -0
  267. package/skill-assets/sunlint-code-quality/rules/php/S029-csrf-protection.md +65 -0
  268. package/skill-assets/sunlint-code-quality/rules/php/S030-directory-browsing.md +40 -0
  269. package/skill-assets/sunlint-code-quality/rules/php/S031-secure-cookie-flag.md +55 -0
  270. package/skill-assets/sunlint-code-quality/rules/php/S032-httponly-cookie.md +54 -0
  271. package/skill-assets/sunlint-code-quality/rules/php/S033-samesite-cookie.md +52 -0
  272. package/skill-assets/sunlint-code-quality/rules/php/S034-host-prefix-cookie.md +49 -0
  273. package/skill-assets/sunlint-code-quality/rules/php/S035-app-hostnames.md +49 -0
  274. package/skill-assets/sunlint-code-quality/rules/php/S036-internal-file-paths.md +56 -0
  275. package/skill-assets/sunlint-code-quality/rules/php/S037-anti-cache-headers.md +56 -0
  276. package/skill-assets/sunlint-code-quality/rules/php/S039-tls-certificate-validation.md +54 -0
  277. package/skill-assets/sunlint-code-quality/rules/php/S041-logout-invalidation.md +63 -0
  278. package/skill-assets/sunlint-code-quality/rules/php/S042-long-lived-sessions.md +57 -0
  279. package/skill-assets/sunlint-code-quality/rules/php/S044-critical-changes-reauth.md +71 -0
  280. package/skill-assets/sunlint-code-quality/rules/php/S045-brute-force-protection.md +67 -0
  281. package/skill-assets/sunlint-code-quality/rules/php/S047-oauth-csrf-protection.md +72 -0
  282. package/skill-assets/sunlint-code-quality/rules/php/S048-oauth-redirect-validation.md +54 -0
  283. package/skill-assets/sunlint-code-quality/rules/php/S049-auth-code-expiry.md +71 -0
  284. package/skill-assets/sunlint-code-quality/rules/php/S050-token-entropy.md +58 -0
  285. package/skill-assets/sunlint-code-quality/rules/php/S051-password-length.md +59 -0
  286. package/skill-assets/sunlint-code-quality/rules/php/S052-otp-entropy.md +45 -0
  287. package/skill-assets/sunlint-code-quality/rules/php/S053-generic-error-messages.md +59 -0
  288. package/skill-assets/sunlint-code-quality/rules/php/S054-no-default-admin.md +62 -0
  289. package/skill-assets/sunlint-code-quality/rules/php/S055-content-type-validation.md +58 -0
  290. package/skill-assets/sunlint-code-quality/rules/php/S056-log-injection.md +48 -0
  291. package/skill-assets/sunlint-code-quality/rules/php/S057-synchronized-time.md +52 -0
  292. package/skill-assets/sunlint-code-quality/rules/php/S058-ssrf-protection.md +65 -0
  293. package/skill-assets/sunlint-code-quality/rules/python/C006-verb-noun-functions.md +30 -0
  294. package/skill-assets/sunlint-code-quality/rules/python/C013-no-dead-code.md +24 -0
  295. package/skill-assets/sunlint-code-quality/rules/python/C014-dependency-injection.md +68 -0
  296. package/skill-assets/sunlint-code-quality/rules/python/C017-no-constructor-logic.md +30 -0
  297. package/skill-assets/sunlint-code-quality/rules/python/C018-generic-errors.md +25 -0
  298. package/skill-assets/sunlint-code-quality/rules/python/C019-error-log-level.md +26 -0
  299. package/skill-assets/sunlint-code-quality/rules/python/C020-no-unused-imports.md +28 -0
  300. package/skill-assets/sunlint-code-quality/rules/python/C022-no-unused-variables.md +24 -0
  301. package/skill-assets/sunlint-code-quality/rules/python/C023-no-duplicate-names.md +27 -0
  302. package/skill-assets/sunlint-code-quality/rules/python/C024-centralize-constants.md +27 -0
  303. package/skill-assets/sunlint-code-quality/rules/python/C029-catch-log-root-cause.md +61 -0
  304. package/skill-assets/sunlint-code-quality/rules/python/C030-custom-error-classes.md +28 -0
  305. package/skill-assets/sunlint-code-quality/rules/python/C033-separate-data-access.md +53 -0
  306. package/skill-assets/sunlint-code-quality/rules/python/C035-error-context-logging.md +26 -0
  307. package/skill-assets/sunlint-code-quality/rules/python/C041-no-hardcoded-secrets.md +23 -0
  308. package/skill-assets/sunlint-code-quality/rules/python/C042-boolean-naming.md +24 -0
  309. package/skill-assets/sunlint-code-quality/rules/python/C052-controller-parsing.md +34 -0
  310. package/skill-assets/sunlint-code-quality/rules/python/C060-superclass-logic.md +26 -0
  311. package/skill-assets/sunlint-code-quality/rules/python/C067-no-hardcoded-config.md +22 -0
  312. package/skill-assets/sunlint-code-quality/rules/python/S003-open-redirect.md +16 -0
  313. package/skill-assets/sunlint-code-quality/rules/python/S004-no-log-credentials.md +16 -0
  314. package/skill-assets/sunlint-code-quality/rules/python/S005-server-authorization.md +16 -0
  315. package/skill-assets/sunlint-code-quality/rules/python/S006-default-credentials.md +16 -0
  316. package/skill-assets/sunlint-code-quality/rules/python/S007-output-encoding.md +16 -0
  317. package/skill-assets/sunlint-code-quality/rules/python/S009-approved-crypto.md +16 -0
  318. package/skill-assets/sunlint-code-quality/rules/python/S010-csprng.md +16 -0
  319. package/skill-assets/sunlint-code-quality/rules/python/S011-encrypted-client-hello.md +16 -0
  320. package/skill-assets/sunlint-code-quality/rules/python/S012-secrets-management.md +16 -0
  321. package/skill-assets/sunlint-code-quality/rules/python/S013-tls-connections.md +16 -0
  322. package/skill-assets/sunlint-code-quality/rules/python/S016-no-sensitive-query-string.md +16 -0
  323. package/skill-assets/sunlint-code-quality/rules/python/S017-parameterized-queries.md +51 -0
  324. package/skill-assets/sunlint-code-quality/rules/python/S019-email-input-sanitization.md +16 -0
  325. package/skill-assets/sunlint-code-quality/rules/python/S020-eval-code-execution.md +51 -0
  326. package/skill-assets/sunlint-code-quality/rules/python/S022-context-escaping.md +16 -0
  327. package/skill-assets/sunlint-code-quality/rules/python/S023-dynamic-js-encoding.md +16 -0
  328. package/skill-assets/sunlint-code-quality/rules/python/S025-server-validation.md +16 -0
  329. package/skill-assets/sunlint-code-quality/rules/python/S026-tls-encryption.md +16 -0
  330. package/skill-assets/sunlint-code-quality/rules/python/S027-mtls-validation.md +16 -0
  331. package/skill-assets/sunlint-code-quality/rules/python/S028-upload-limits.md +16 -0
  332. package/skill-assets/sunlint-code-quality/rules/python/S029-csrf-protection.md +16 -0
  333. package/skill-assets/sunlint-code-quality/rules/python/S030-directory-browsing.md +16 -0
  334. package/skill-assets/sunlint-code-quality/rules/python/S031-secure-cookie-flag.md +16 -0
  335. package/skill-assets/sunlint-code-quality/rules/python/S032-httponly-cookie.md +16 -0
  336. package/skill-assets/sunlint-code-quality/rules/python/S033-samesite-cookie.md +16 -0
  337. package/skill-assets/sunlint-code-quality/rules/python/S034-host-prefix-cookie.md +16 -0
  338. package/skill-assets/sunlint-code-quality/rules/python/S035-app-hostnames.md +16 -0
  339. package/skill-assets/sunlint-code-quality/rules/python/S036-internal-file-paths.md +50 -0
  340. package/skill-assets/sunlint-code-quality/rules/python/S037-anti-cache-headers.md +16 -0
  341. package/skill-assets/sunlint-code-quality/rules/python/S039-tls-certificate-validation.md +16 -0
  342. package/skill-assets/sunlint-code-quality/rules/python/S041-logout-invalidation.md +16 -0
  343. package/skill-assets/sunlint-code-quality/rules/python/S042-long-lived-sessions.md +16 -0
  344. package/skill-assets/sunlint-code-quality/rules/python/S044-critical-changes-reauth.md +16 -0
  345. package/skill-assets/sunlint-code-quality/rules/python/S045-brute-force-protection.md +16 -0
  346. package/skill-assets/sunlint-code-quality/rules/python/S047-oauth-csrf-protection.md +16 -0
  347. package/skill-assets/sunlint-code-quality/rules/python/S048-oauth-redirect-validation.md +16 -0
  348. package/skill-assets/sunlint-code-quality/rules/python/S049-auth-code-expiry.md +16 -0
  349. package/skill-assets/sunlint-code-quality/rules/python/S050-token-entropy.md +16 -0
  350. package/skill-assets/sunlint-code-quality/rules/python/S051-password-length.md +16 -0
  351. package/skill-assets/sunlint-code-quality/rules/python/S052-otp-entropy.md +16 -0
  352. package/skill-assets/sunlint-code-quality/rules/python/S053-generic-error-messages.md +16 -0
  353. package/skill-assets/sunlint-code-quality/rules/python/S054-no-default-admin.md +16 -0
  354. package/skill-assets/sunlint-code-quality/rules/python/S055-content-type-validation.md +16 -0
  355. package/skill-assets/sunlint-code-quality/rules/python/S056-log-injection.md +16 -0
  356. package/skill-assets/sunlint-code-quality/rules/python/S057-synchronized-time.md +16 -0
  357. package/skill-assets/sunlint-code-quality/rules/python/S058-ssrf-protection.md +57 -0
  358. package/skill-assets/sunlint-code-quality/rules/typescript/C006-verb-noun-functions.md +45 -0
  359. package/skill-assets/sunlint-code-quality/rules/typescript/C013-no-dead-code.md +51 -0
  360. package/skill-assets/sunlint-code-quality/rules/typescript/C014-dependency-injection.md +69 -0
  361. package/skill-assets/sunlint-code-quality/rules/typescript/C017-no-constructor-logic.md +60 -0
  362. package/skill-assets/sunlint-code-quality/rules/typescript/C018-generic-errors.md +47 -0
  363. package/skill-assets/sunlint-code-quality/rules/typescript/C019-error-log-level.md +50 -0
  364. package/skill-assets/sunlint-code-quality/rules/typescript/C020-no-unused-imports.md +55 -0
  365. package/skill-assets/sunlint-code-quality/rules/typescript/C022-no-unused-variables.md +59 -0
  366. package/skill-assets/sunlint-code-quality/rules/typescript/C023-no-duplicate-names.md +58 -0
  367. package/skill-assets/sunlint-code-quality/rules/typescript/C024-centralize-constants.md +56 -0
  368. package/skill-assets/sunlint-code-quality/rules/typescript/C029-catch-log-root-cause.md +53 -0
  369. package/skill-assets/sunlint-code-quality/rules/typescript/C030-custom-error-classes.md +60 -0
  370. package/skill-assets/sunlint-code-quality/rules/typescript/C033-separate-data-access.md +69 -0
  371. package/skill-assets/sunlint-code-quality/rules/typescript/C035-error-context-logging.md +50 -0
  372. package/skill-assets/sunlint-code-quality/rules/typescript/C041-no-hardcoded-secrets.md +47 -0
  373. package/skill-assets/sunlint-code-quality/rules/typescript/C042-boolean-naming.md +42 -0
  374. package/skill-assets/sunlint-code-quality/rules/typescript/C052-controller-parsing.md +64 -0
  375. package/skill-assets/sunlint-code-quality/rules/typescript/C060-superclass-logic.md +67 -0
  376. package/skill-assets/sunlint-code-quality/rules/typescript/C067-no-hardcoded-config.md +52 -0
  377. package/skill-assets/sunlint-code-quality/rules/typescript/S003-open-redirect.md +76 -0
  378. package/skill-assets/sunlint-code-quality/rules/typescript/S004-no-log-credentials.md +71 -0
  379. package/skill-assets/sunlint-code-quality/rules/typescript/S005-server-authorization.md +68 -0
  380. package/skill-assets/sunlint-code-quality/rules/typescript/S006-default-credentials.md +69 -0
  381. package/skill-assets/sunlint-code-quality/rules/typescript/S007-output-encoding.md +60 -0
  382. package/skill-assets/sunlint-code-quality/rules/typescript/S009-approved-crypto.md +53 -0
  383. package/skill-assets/sunlint-code-quality/rules/typescript/S010-csprng.md +53 -0
  384. package/skill-assets/sunlint-code-quality/rules/typescript/S011-encrypted-client-hello.md +45 -0
  385. package/skill-assets/sunlint-code-quality/rules/typescript/S012-secrets-management.md +47 -0
  386. package/skill-assets/sunlint-code-quality/rules/typescript/S013-tls-connections.md +70 -0
  387. package/skill-assets/sunlint-code-quality/rules/typescript/S016-no-sensitive-query-string.md +53 -0
  388. package/skill-assets/sunlint-code-quality/rules/typescript/S017-parameterized-queries.md +55 -0
  389. package/skill-assets/sunlint-code-quality/rules/typescript/S019-email-input-sanitization.md +56 -0
  390. package/skill-assets/sunlint-code-quality/rules/typescript/S020-eval-code-execution.md +58 -0
  391. package/skill-assets/sunlint-code-quality/rules/typescript/S022-context-escaping.md +48 -0
  392. package/skill-assets/sunlint-code-quality/rules/typescript/S023-dynamic-js-encoding.md +52 -0
  393. package/skill-assets/sunlint-code-quality/rules/typescript/S025-server-validation.md +62 -0
  394. package/skill-assets/sunlint-code-quality/rules/typescript/S026-tls-encryption.md +47 -0
  395. package/skill-assets/sunlint-code-quality/rules/typescript/S027-mtls-validation.md +50 -0
  396. package/skill-assets/sunlint-code-quality/rules/typescript/S028-upload-limits.md +65 -0
  397. package/skill-assets/sunlint-code-quality/rules/typescript/S029-csrf-protection.md +62 -0
  398. package/skill-assets/sunlint-code-quality/rules/typescript/S030-directory-browsing.md +52 -0
  399. package/skill-assets/sunlint-code-quality/rules/typescript/S031-secure-cookie-flag.md +48 -0
  400. package/skill-assets/sunlint-code-quality/rules/typescript/S032-httponly-cookie.md +36 -0
  401. package/skill-assets/sunlint-code-quality/rules/typescript/S033-samesite-cookie.md +46 -0
  402. package/skill-assets/sunlint-code-quality/rules/typescript/S034-host-prefix-cookie.md +50 -0
  403. package/skill-assets/sunlint-code-quality/rules/typescript/S035-app-hostnames.md +49 -0
  404. package/skill-assets/sunlint-code-quality/rules/typescript/S036-internal-file-paths.md +53 -0
  405. package/skill-assets/sunlint-code-quality/rules/typescript/S037-anti-cache-headers.md +52 -0
  406. package/skill-assets/sunlint-code-quality/rules/typescript/S039-tls-certificate-validation.md +51 -0
  407. package/skill-assets/sunlint-code-quality/rules/typescript/S041-logout-invalidation.md +58 -0
  408. package/skill-assets/sunlint-code-quality/rules/typescript/S042-long-lived-sessions.md +55 -0
  409. package/skill-assets/sunlint-code-quality/rules/typescript/S044-critical-changes-reauth.md +69 -0
  410. package/skill-assets/sunlint-code-quality/rules/typescript/S045-brute-force-protection.md +59 -0
  411. package/skill-assets/sunlint-code-quality/rules/typescript/S047-oauth-csrf-protection.md +60 -0
  412. package/skill-assets/sunlint-code-quality/rules/typescript/S048-oauth-redirect-validation.md +59 -0
  413. package/skill-assets/sunlint-code-quality/rules/typescript/S049-auth-code-expiry.md +73 -0
  414. package/skill-assets/sunlint-code-quality/rules/typescript/S050-token-entropy.md +48 -0
  415. package/skill-assets/sunlint-code-quality/rules/typescript/S051-password-length.md +60 -0
  416. package/skill-assets/sunlint-code-quality/rules/typescript/S052-otp-entropy.md +49 -0
  417. package/skill-assets/sunlint-code-quality/rules/typescript/S053-generic-error-messages.md +61 -0
  418. package/skill-assets/sunlint-code-quality/rules/typescript/S054-no-default-admin.md +64 -0
  419. package/skill-assets/sunlint-code-quality/rules/typescript/S055-content-type-validation.md +64 -0
  420. package/skill-assets/sunlint-code-quality/rules/typescript/S056-log-injection.md +48 -0
  421. package/skill-assets/sunlint-code-quality/rules/typescript/S057-synchronized-time.md +57 -0
  422. package/skill-assets/sunlint-code-quality/rules/typescript/S058-ssrf-protection.md +63 -0
@@ -0,0 +1,12 @@
1
+ {
2
+ "id": "D011",
3
+ "name": "Prefer Named Parameters",
4
+ "description": "Functions with more than 3 parameters and adjacent parameters of the same type should use named parameters",
5
+ "category": "dart",
6
+ "severity": "warning",
7
+ "languages": ["dart"],
8
+ "tags": ["parameters", "naming", "readability", "maintainability"],
9
+ "config": {
10
+ "minParameterCount": 3
11
+ }
12
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "id": "D012",
3
+ "name": "Prefer Named Boolean Parameters",
4
+ "description": "Boolean parameters should be named or use separate functions for better readability",
5
+ "category": "dart",
6
+ "severity": "warning",
7
+ "languages": ["dart"],
8
+ "tags": ["parameters", "boolean", "readability", "maintainability"]
9
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "id": "D013",
3
+ "name": "Prefer a Single Public Class Per File",
4
+ "description": "Each file should contain only one public class to improve code organization and maintainability",
5
+ "category": "dart",
6
+ "severity": "warning",
7
+ "languages": ["dart"],
8
+ "tags": ["dart", "organization", "maintainability"],
9
+ "config": {}
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "id": "D014",
3
+ "name": "Avoid Unsafe Collection Access",
4
+ "description": "Always check collection empty or length before using first, last, single, or elementAt",
5
+ "category": "dart",
6
+ "severity": "warning",
7
+ "languages": ["dart"],
8
+ "tags": ["dart", "safety", "collections", "runtime-error"],
9
+ "config": {}
10
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "id": "D015",
3
+ "name": "Ensure copyWith includes all constructor parameters",
4
+ "description": "When a class has a copyWith method, it should include all constructor parameters to ensure complete object copying",
5
+ "category": "dart",
6
+ "severity": "warning",
7
+ "languages": ["dart"],
8
+ "tags": ["dart", "immutability", "data-class", "best-practice"]
9
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "id": "D016",
3
+ "name": "Project Should Have Tests",
4
+ "description": "Ensure the project has a test directory with test files to maintain code quality and prevent regressions",
5
+ "severity": "warning",
6
+ "category": "dart",
7
+ "languages": ["dart"],
8
+ "tags": ["testing", "best-practices", "code-quality"],
9
+ "analysisMethod": "dart-only",
10
+ "dartAnalyzer": {
11
+ "class": "D016ProjectShouldHaveTestsAnalyzer",
12
+ "file": "D016_project_should_have_tests.dart"
13
+ },
14
+ "detection": {
15
+ "targetDirectories": ["test", "test/"],
16
+ "requiredFiles": ["*_test.dart"],
17
+ "minTestFiles": 1
18
+ },
19
+ "config": {
20
+ "minTestFiles": 1,
21
+ "testDirectories": ["test", "integration_test"],
22
+ "testFilePattern": "_test\\.dart$"
23
+ }
24
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "id": "D017",
3
+ "name": "Pubspec Dependencies Should Be Reviewed Regularly",
4
+ "description": "Dependencies in pubspec.yaml should be reviewed and updated regularly to ensure security patches and bug fixes are applied",
5
+ "severity": "warning",
6
+ "category": "dart",
7
+ "languages": ["dart"],
8
+ "tags": ["dependencies", "maintenance", "security", "best-practices"],
9
+ "analysisMethod": "dart-only",
10
+ "dartAnalyzer": {
11
+ "class": "D017PubspecDependenciesReviewAnalyzer",
12
+ "file": "D017_pubspec_dependencies_review.dart"
13
+ },
14
+ "detection": {
15
+ "targetFiles": ["pubspec.yaml", "pubspec.lock"],
16
+ "checkLastModified": true
17
+ },
18
+ "config": {
19
+ "maxMonthsWithoutReview": 4,
20
+ "ignoreDevDependencies": false,
21
+ "checkLockFile": true
22
+ }
23
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "id": "D018",
3
+ "name": "Remove Commented-Out Code",
4
+ "description": "Remove commented-out code instead of leaving it in the source. Use version control to track history.",
5
+ "category": "dart",
6
+ "severity": "warning",
7
+ "languages": ["dart"],
8
+ "tags": ["code-quality", "maintainability", "clean-code"],
9
+ "config": {
10
+ "minLines": 2,
11
+ "ignoreDocComments": true
12
+ }
13
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "id": "D019",
3
+ "name": "Avoid Single Child in Multi-Child Widget",
4
+ "description": "Multi-child widgets (Column, Row, Wrap, etc.) should not have only a single child",
5
+ "category": "dart",
6
+ "severity": "warning",
7
+ "languages": ["dart"],
8
+ "tags": ["flutter", "performance", "widget", "optimization"],
9
+ "config": {
10
+ "multiChildWidgets": [
11
+ "Column",
12
+ "Row",
13
+ "Wrap",
14
+ "Stack",
15
+ "Flex",
16
+ "ListView",
17
+ "GridView",
18
+ "CustomScrollView"
19
+ ]
20
+ }
21
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "id": "D020",
3
+ "name": "Limit If/Else Branches",
4
+ "description": "Limit the number of if/else branches to improve readability and maintainability",
5
+ "category": "dart",
6
+ "severity": "warning",
7
+ "languages": ["dart"],
8
+ "tags": ["complexity", "maintainability", "readability", "branching"],
9
+ "config": {
10
+ "maxBranches": 3
11
+ }
12
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "id": "D021",
3
+ "name": "Avoid Negated Boolean Checks",
4
+ "description": "Avoid inverted or negated boolean checks to improve code readability",
5
+ "category": "dart",
6
+ "severity": "warning",
7
+ "languages": ["dart"],
8
+ "tags": ["readability", "boolean", "condition"],
9
+ "config": {
10
+ "checkDoubleNegation": true,
11
+ "checkNegatedBooleans": true,
12
+ "checkInvertedConditions": true
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "id": "D022",
3
+ "name": "Use setState Correctly",
4
+ "description": "Ensure setState is used correctly in StatefulWidget without common anti-patterns",
5
+ "category": "dart",
6
+ "severity": "warning",
7
+ "languages": ["dart"],
8
+ "tags": ["flutter", "state-management", "performance"],
9
+ "config": {
10
+ "checkMultipleCalls": true,
11
+ "checkNestedCalls": true,
12
+ "checkInBuildMethod": true
13
+ }
14
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "id": "D023",
3
+ "name": "Avoid Unnecessary Method Overrides",
4
+ "description": "Methods that only call super with the same parameters are unnecessary and should be removed",
5
+ "category": "dart",
6
+ "severity": "warning",
7
+ "languages": ["dart"],
8
+ "tags": ["dart", "code-quality", "maintainability"],
9
+ "config": {
10
+ "checkLifecycleMethods": true,
11
+ "allowedMethods": []
12
+ }
13
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "id": "D024",
3
+ "name": "Avoid Unnecessary StatefulWidget",
4
+ "description": "StatefulWidget should only be used when state is needed. If no state is used, convert to StatelessWidget",
5
+ "category": "dart",
6
+ "severity": "warning",
7
+ "languages": ["dart"],
8
+ "tags": ["flutter", "widget", "performance", "state"]
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "id": "D025",
3
+ "name": "Avoid Nested Conditional Expressions",
4
+ "description": "Nested conditional expressions (ternary operators) reduce code readability and should be avoided",
5
+ "category": "dart",
6
+ "severity": "warning",
7
+ "languages": ["dart"],
8
+ "tags": ["readability", "maintainability", "complexity"]
9
+ }
@@ -0,0 +1,80 @@
1
+ # SunLint Code Quality Standards
2
+
3
+ > **AI Agent Directive**: Follow these rules when writing/reviewing code. For detailed examples, read rule files in `rules/` directory.
4
+
5
+ ## Skill Structure
6
+
7
+ ```
8
+ sunlint-code-quality/
9
+ ├── SKILL.md # Full skill documentation with priorities
10
+ ├── AGENTS.md # This file - language-agnostic quick reference
11
+ └── rules/ # Detailed rule files (language-specific versions installed)
12
+ ├── S017-*.md
13
+ └── C029-*.md
14
+ ```
15
+
16
+ ## How to Use This Skill
17
+
18
+ 1. **Identify Relevant Rules**: Check the priority categories below to find rules applicable to your current task (e.g., Auth, Security, Error Handling).
19
+ 2. **Read Rule Details**: Use `view_file` to read the specific `rules/{RULE_ID}-*.md` file for detailed implementation guidelines and code examples in your target language.
20
+ 3. **Apply Patterns**: Implement the patterns described in the rule file, adapting them to the language you are working in.
21
+
22
+ ---
23
+
24
+ ## Critical Rules (Never Violate)
25
+
26
+ ### Security - Injection Prevention
27
+
28
+ | Rule | Action |
29
+ |------|--------|
30
+ | `S017` | Use parameterized queries - no SQL/NoSQL concatenation |
31
+ | `S020` | No dynamic code execution (e.g. `eval`, `Function`, `Assembly.Load`) |
32
+ | `S025` | Validate ALL client input server-side |
33
+ | `S007` | Encode output before interpreter use |
34
+
35
+ ### Security - Authentication
36
+
37
+ | Rule | Action |
38
+ |------|--------|
39
+ | `S005` | Server-side authorization at service layer |
40
+ | `S006` | No default credentials (admin, root) |
41
+ | `S012` | Use secrets management (env vars, vaults) |
42
+ | `S026` | TLS 1.2+ mandatory for all connections |
43
+ | `S036` | File paths from internal data only |
44
+
45
+ ### Code Quality - Error Handling
46
+
47
+ | Rule | Action |
48
+ |------|--------|
49
+ | `C029` | Exception/Catch blocks MUST log error with context |
50
+ | `C030` | Use custom error/exception classes |
51
+ | `C018` | Do not throw generic errors/exceptions |
52
+ | `C035` | Include requestId, entityId in error logs |
53
+
54
+ ### Code Quality - Structure
55
+
56
+ | Rule | Action |
57
+ |------|--------|
58
+ | `C014` | Dependency Injection for testability |
59
+ | `C017` | No business logic in constructors |
60
+ | `C006` | Function/Method names: `Verb-Noun` pattern |
61
+ | `C013` | No dead code, unused imports/variables |
62
+ | `C041` | No hardcoded secrets in repository |
63
+
64
+ ---
65
+
66
+ ## Rule File Lookup
67
+
68
+ Detailed rule files are located in the `rules/` directory.
69
+
70
+ ```
71
+ rules/{RULE_ID}-{slug}.md
72
+ ```
73
+
74
+ **Examples:**
75
+ - `rules/S017-parameterized-queries.md`
76
+ - `rules/C029-catch-log-root-cause.md`
77
+
78
+ ---
79
+
80
+ **Version**: 2.3 | **Total Rules**: 65 | **Maintainer**: Sun* Engineering Excellence
@@ -0,0 +1,176 @@
1
+ ---
2
+ name: sunlint-code-quality
3
+ description: Code quality and security guidelines from Sun* Engineering Excellence. This skill should be used when writing, reviewing, or refactoring code to ensure security and quality compliance. Triggers on tasks involving authentication, data validation, error handling, or security-sensitive operations.
4
+ license: MIT
5
+ metadata:
6
+ author: sun-asterisk
7
+ version: "2.4.0"
8
+ ---
9
+
10
+ # SunLint Code Quality & Security Standards
11
+
12
+ Comprehensive code quality and security optimization guide for all projects, maintained by Sun* Engineering Excellence team. Contains **65 rules** across **6 priority categories**, organized by impact to guide automated code review and generation.
13
+
14
+ ## When to Apply
15
+
16
+ Reference these guidelines when:
17
+ - Writing new code in any language (PHP, Python + PySpark, TypeScript, C#, Java, Go, Kotlin, etc.)
18
+ - Implementing authentication, authorization, or session management
19
+ - Handling user input, file uploads, or external data
20
+ - Reviewing code for security vulnerabilities
21
+ - Implementing error handling and logging
22
+ - Refactoring existing codebase for quality improvements
23
+
24
+ ## Rule Categories by Priority
25
+
26
+ | Priority | Category | Impact | Rule Count | Prefix |
27
+ |----------|----------|--------|------------|--------|
28
+ | 1 | Security - Injection Prevention | **CRITICAL** | 10 | `S0xx` |
29
+ | 2 | Security - Authentication & Sessions | **CRITICAL** | 12 | `S0xx` |
30
+ | 3 | Common - Error Handling & Code Quality | **CRITICAL** | 19 | `C0xx` |
31
+ | 4 | Security - Cryptography & TLS | **HIGH** | 8 | `S0xx` |
32
+ | 5 | Security - Data Protection | **HIGH** | 10 | `S0xx` |
33
+ | 6 | Security - Logging & Monitoring | **MEDIUM** | 6 | `S0xx` |
34
+
35
+ ---
36
+
37
+ ## Quick Reference
38
+
39
+ ### 1. Security - Injection Prevention (CRITICAL)
40
+
41
+ These rules prevent the most dangerous vulnerabilities. **Never violate these rules.**
42
+
43
+ - `S017-parameterized-queries` - Always use parameterized queries, never concatenate SQL
44
+ - `S020-eval-code-execution` - Avoid eval() or dynamic code execution
45
+ - `S025-server-validation` - Always validate client data server-side
46
+ - `S007-output-encoding` - Output encoding before interpreter use
47
+ - `S022-context-escaping` - Escape data by output context (HTML, JS, URL)
48
+ - `S023-dynamic-js-encoding` - Output encoding for dynamic JS/JSON
49
+ - `S019-email-input-sanitization` - Sanitize input before sending emails
50
+ - `S055-content-type-validation` - Validate Content-Type in REST services
51
+ - `S056-log-injection` - Protect against Log Injection
52
+ - `S058-ssrf-protection` - Protect against SSRF attacks
53
+
54
+ ### 2. Security - Authentication & Sessions (CRITICAL)
55
+
56
+ These rules protect user accounts and session integrity. **Mandatory for all auth flows.**
57
+
58
+ - `S005-server-authorization` - Enforce authorization at trusted service layer only
59
+ - `S006-default-credentials` - Never use default credentials (admin/admin, root/root)
60
+ - `S012-secrets-management` - Use secrets management for backend secrets
61
+ - `S041-logout-invalidation` - Invalidate session on logout
62
+ - `S042-long-lived-sessions` - Re-authenticate for long-lived sessions
63
+ - `S044-critical-changes-reauth` - Re-authenticate before critical changes
64
+ - `S045-brute-force-protection` - Implement brute-force protection
65
+ - `S047-oauth-csrf-protection` - Protect OAuth code flow vs CSRF
66
+ - `S048-oauth-redirect-validation` - Validate OAuth redirect URIs exactly
67
+ - `S049-auth-code-expiry` - Authentication codes must expire quickly
68
+ - `S003-open-redirect` - URL redirects must be in allow list
69
+ - `S029-csrf-protection` - Apply CSRF protection
70
+
71
+ ### 3. Common - Error Handling & Code Quality (CRITICAL)
72
+
73
+ These rules ensure robust error handling and maintainable code. **Mandatory for all code.**
74
+
75
+ #### Error Handling
76
+ - `C029-catch-log-root-cause` - All catch blocks must log root cause with context
77
+ - `C030-custom-error-classes` - Use custom error classes, not generic Error/Exception
78
+ - `C035-error-context-logging` - Log all relevant context on errors
79
+ - `C018-generic-errors` - Do not throw generic errors
80
+ - `C019-error-log-level` - Do not use error log level for non-critical issues
81
+
82
+ #### Code Structure
83
+ - `C014-dependency-injection` - Use Dependency Injection for testability
84
+ - `C017-no-constructor-logic` - No business logic in constructors
85
+ - `C033-separate-data-access` - Separate processing and data access layers
86
+ - `C052-controller-parsing` - Separate parsing from controllers
87
+ - `C060-superclass-logic` - Do not ignore superclass logic
88
+ - `C024-centralize-constants` - Centralize constants in config files
89
+ - `C067-no-hardcoded-config` - Do not hardcode configuration values
90
+
91
+ #### Naming & Style
92
+ - `C006-verb-noun-functions` - Function names: verb-noun pattern (getUserById)
93
+ - `C013-no-dead-code` - Do not commit dead code
94
+ - `C020-no-unused-imports` - Do not import unused modules
95
+ - `C022-no-unused-variables` - Do not leave unused variables
96
+ - `C023-no-duplicate-names` - No duplicate variable names in scope
97
+ - `C042-boolean-naming` - Boolean names: is/has/should prefix
98
+ - `C041-no-hardcoded-secrets` - No hardcoded secrets in repo
99
+
100
+ ### 4. Security - Cryptography & TLS (HIGH)
101
+
102
+ These rules ensure secure data transmission and storage.
103
+
104
+ - `S009-approved-crypto` - Use only approved crypto algorithms (no MD5, SHA1)
105
+ - `S010-csprng` - Use CSPRNG for security purposes (not Math.random())
106
+ - `S013-tls-connections` - Always use TLS for all connections
107
+ - `S026-tls-encryption` - TLS encryption mandatory for all connections
108
+ - `S027-mtls-validation` - Validate mTLS certificates before auth
109
+ - `S039-tls-certificate-validation` - TLS clients must validate server certificates
110
+ - `S050-token-entropy` - Reference tokens: 128-bit entropy CSPRNG
111
+ - `S011-encrypted-client-hello` - Enable Encrypted Client Hello (ECH)
112
+
113
+ ### 5. Security - Data Protection (HIGH)
114
+
115
+ These rules protect sensitive data from exposure.
116
+
117
+ - `S004-no-log-credentials` - Do not log credentials/tokens
118
+ - `S016-no-sensitive-query-string` - Do not pass sensitive data in query string
119
+ - `S036-internal-file-paths` - Use internal data for file paths, strict validation
120
+ - `S028-upload-limits` - Limit upload file size and count
121
+ - `S030-directory-browsing` - Disable directory browsing
122
+ - `S031-secure-cookie-flag` - Set Secure flag on session cookies
123
+ - `S032-httponly-cookie` - Set HttpOnly on session cookies
124
+ - `S033-samesite-cookie` - Set SameSite on session cookies
125
+ - `S034-host-prefix-cookie` - Use __Host- prefix for cookies
126
+ - `S035-app-hostnames` - Host apps on different hostnames
127
+ - `S037-anti-cache-headers` - Set anti-cache headers for sensitive pages
128
+
129
+ ### 6. Security - Logging & Monitoring (MEDIUM)
130
+
131
+ These rules ensure proper security monitoring.
132
+
133
+ - `S051-password-length` - Support 12-64 char passwords
134
+ - `S052-otp-entropy` - OTPs must have 20-bit entropy minimum
135
+ - `S053-generic-error-messages` - Return generic error messages to users
136
+ - `S054-no-default-admin` - Avoid default admin/root accounts
137
+ - `S057-synchronized-time` - Use synchronized time (UTC) in logs
138
+
139
+ ---
140
+
141
+ ## How to Use
142
+
143
+ Read individual rule files for detailed explanations and code examples. Rules are organized by language in the `rules/` directory:
144
+
145
+ ```
146
+ rules/python/S017-parameterized-queries.md
147
+ rules/typescript/S017-parameterized-queries.md
148
+ rules/csharp/S017-parameterized-queries.md
149
+ rules/kotlin/S017-parameterized-queries.md
150
+ rules/java/S017-parameterized-queries.md
151
+ ```
152
+
153
+ Each rule file contains:
154
+ - YAML frontmatter with title, impact, and tags
155
+ - Brief explanation of why it matters
156
+ - Incorrect code example with explanation
157
+ - Correct code example with explanation
158
+ - Tools for enforcement
159
+
160
+ ## Full Compiled Document
161
+
162
+ For the complete guide with all rules expanded: `AGENTS.md`
163
+
164
+ ---
165
+
166
+ ## Priority Legend
167
+
168
+ | Level | Description | Action Required |
169
+ |-------|-------------|-----------------|
170
+ | **CRITICAL** | Security vulnerabilities OR code quality issues that lead to bugs/maintenance problems | Must fix immediately, block deployment |
171
+ | **HIGH** | Security issues that weaken defenses | Fix before production release |
172
+ | **MEDIUM** | Quality issues affecting maintainability | Fix when touching related code |
173
+
174
+ ---
175
+
176
+ **Last Updated**: January 2026 | **Version**: 2.3 | **Maintainer**: Sun* Engineering Excellence
@@ -0,0 +1,36 @@
1
+ ---
2
+ title: Use PascalCase For Methods
3
+ impact: LOW
4
+ impactDescription: ensures consistent codebase style
5
+ tags: naming, style, convention, quality, csharp
6
+ ---
7
+
8
+ ## Use PascalCase For Methods
9
+
10
+ C# convention dictates PascalCase for method names, unlike camelCase in JavaScript/Java.
11
+
12
+ **Incorrect (camelCase):**
13
+
14
+ ```csharp
15
+ public void calculateTotal()
16
+ {
17
+ // ...
18
+ }
19
+ ```
20
+
21
+ **Correct (PascalCase):**
22
+
23
+ ```csharp
24
+ public void CalculateTotal()
25
+ {
26
+ // ...
27
+ }
28
+
29
+ // Async methods should end with Async
30
+ public async Task<User> GetUserAsync(int id)
31
+ {
32
+ // ...
33
+ }
34
+ ```
35
+
36
+ **Tools:** StyleCop, Roslyn Analyzers
@@ -0,0 +1,38 @@
1
+ ---
2
+ title: Do Not Commit Dead Code
3
+ impact: LOW
4
+ impactDescription: keeps codebase clean and readable
5
+ tags: cleanup, maintenance, quality, csharp
6
+ ---
7
+
8
+ ## Do Not Commit Dead Code
9
+
10
+ Commented-out code and unused private methods clutter the codebase and rot over time.
11
+
12
+ **Incorrect (commented code):**
13
+
14
+ ```csharp
15
+ public void Process()
16
+ {
17
+ // var oldLogic = new LegacyProcessor();
18
+ // oldLogic.Run();
19
+
20
+ var newLogic = new Processor();
21
+ newLogic.Run();
22
+ }
23
+
24
+ // Unused private method
25
+ private void UnusedHelper() { }
26
+ ```
27
+
28
+ **Correct (clean):**
29
+
30
+ ```csharp
31
+ public void Process()
32
+ {
33
+ var newLogic = new Processor();
34
+ newLogic.Run();
35
+ }
36
+ ```
37
+
38
+ **Tools:** Roslyn Analyzers (IDE0051), SonarQube
@@ -0,0 +1,45 @@
1
+ ---
2
+ title: Use Dependency Injection
3
+ impact: HIGH
4
+ impactDescription: ensures testability and loose coupling
5
+ tags: architecture, di, testing, quality, csharp
6
+ ---
7
+
8
+ ## Use Dependency Injection
9
+
10
+ Hard dependencies make code hard to test and maintain. Use Constructor Injection.
11
+
12
+ **Incorrect (creating dependencies):**
13
+
14
+ ```csharp
15
+ public class OrderService
16
+ {
17
+ private readonly Database _db;
18
+
19
+ public OrderService()
20
+ {
21
+ _db = new Database("connection_string"); // Hard dependency
22
+ }
23
+ }
24
+ ```
25
+
26
+ **Correct (injecting dependencies):**
27
+
28
+ ```csharp
29
+ public class OrderService
30
+ {
31
+ private readonly IDatabase _db;
32
+
33
+ // Explicit dependencies in constructor
34
+ public OrderService(IDatabase db)
35
+ {
36
+ _db = db;
37
+ }
38
+ }
39
+
40
+ // Registration in Startup.cs / Program.cs
41
+ builder.Services.AddScoped<IDatabase, SqlDatabase>();
42
+ builder.Services.AddScoped<OrderService>();
43
+ ```
44
+
45
+ **Tools:** Roslyn Analyzers, Manual Review
@@ -0,0 +1,46 @@
1
+ ---
2
+ title: No Business Logic In Constructors
3
+ impact: HIGH
4
+ impactDescription: ensures predictable object initialization
5
+ tags: constructor, initialization, side-effects, patterns, quality, csharp
6
+ ---
7
+
8
+ ## No Business Logic In Constructors
9
+
10
+ Constructors should only assign fields. Complex logic, I/O, or API calls in constructors cause side effects and make testing impossible.
11
+
12
+ **Incorrect (logic in ctor):**
13
+
14
+ ```csharp
15
+ public class UserService
16
+ {
17
+ public UserService()
18
+ {
19
+ // BAD: I/O in constructor
20
+ var config = File.ReadAllText("config.json");
21
+ ConnectToDatabase();
22
+ }
23
+ }
24
+ ```
25
+
26
+ **Correct (factory or init):**
27
+
28
+ ```csharp
29
+ public class UserService
30
+ {
31
+ private readonly IConfiguration _config;
32
+
33
+ public UserService(IConfiguration config)
34
+ {
35
+ _config = config; // Assignment only
36
+ }
37
+
38
+ public async Task InitializeAsync()
39
+ {
40
+ // Complex init logic here
41
+ await ConnectToDatabaseAsync();
42
+ }
43
+ }
44
+ ```
45
+
46
+ **Tools:** SonarQube, Manual Review