com.wallstop-studios.dxmessaging 2.1.5 → 2.1.7

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 (163) hide show
  1. package/.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.AssemblyInfo.cs +1 -1
  2. package/.cspell.json +4 -1
  3. package/.github/workflows/actionlint.yml +11 -1
  4. package/.github/workflows/csharpier-autofix.yml +34 -3
  5. package/.github/workflows/dotnet-tests.yml +13 -0
  6. package/.github/workflows/format-on-demand.yml +38 -44
  7. package/.github/workflows/json-format-check.yml +24 -0
  8. package/.github/workflows/lint-doc-links.yml +13 -0
  9. package/.github/workflows/markdown-json.yml +21 -4
  10. package/.github/workflows/markdown-link-text-check.yml +10 -0
  11. package/.github/workflows/markdown-link-validity.yml +10 -0
  12. package/.github/workflows/markdownlint.yml +7 -5
  13. package/.github/workflows/prettier-autofix.yml +67 -11
  14. package/.github/workflows/release-drafter.yml +2 -2
  15. package/.github/workflows/sync-wiki.yml +3 -3
  16. package/.github/workflows/yaml-format-lint.yml +26 -0
  17. package/.llm/context.md +113 -3
  18. package/.llm/skills/documentation/changelog-management.md +38 -0
  19. package/.llm/skills/documentation/documentation-style-guide.md +18 -0
  20. package/.llm/skills/documentation/documentation-update-workflow.md +2 -0
  21. package/.llm/skills/documentation/documentation-updates.md +2 -0
  22. package/.llm/skills/documentation/markdown-compatibility.md +476 -0
  23. package/.llm/skills/documentation/mermaid-theming.md +326 -0
  24. package/.llm/skills/documentation/mkdocs-navigation.md +290 -0
  25. package/.llm/skills/github-actions/git-renormalize-patterns.md +231 -0
  26. package/.llm/skills/github-actions/workflow-consistency.md +346 -0
  27. package/.llm/skills/index.md +53 -27
  28. package/.llm/skills/scripting/javascript-code-quality.md +417 -0
  29. package/.llm/skills/scripting/regex-documentation.md +461 -0
  30. package/.llm/skills/scripting/shell-best-practices.md +55 -4
  31. package/.llm/skills/scripting/validation-patterns.md +418 -0
  32. package/.llm/skills/specification.md +4 -1
  33. package/.llm/skills/testing/test-code-quality.md +243 -0
  34. package/.llm/skills/testing/test-production-code.md +348 -0
  35. package/CHANGELOG.md +24 -0
  36. package/README.md +113 -24
  37. package/Tests/Runtime/Benchmarks/WallstopStudios.DxMessaging.Tests.Runtime.Benchmarks.asmdef +1 -6
  38. package/Tests/Runtime/Integrations/Reflex/WallstopStudios.DxMessaging.Tests.Runtime.Reflex.asmdef +1 -1
  39. package/Tests/Runtime/Integrations/VContainer/WallstopStudios.DxMessaging.Tests.Runtime.VContainer.asmdef +1 -1
  40. package/Tests/Runtime/Integrations/Zenject/WallstopStudios.DxMessaging.Tests.Runtime.Zenject.asmdef +1 -1
  41. package/coverage/clover.xml +216 -3
  42. package/coverage/clover.xml.meta +7 -7
  43. package/coverage/coverage-final.json +2 -1
  44. package/coverage/coverage-final.json.meta +7 -7
  45. package/coverage/lcov-report/base.css.meta +1 -1
  46. package/coverage/lcov-report/block-navigation.js.meta +1 -1
  47. package/coverage/lcov-report/favicon.png.meta +1 -1
  48. package/coverage/lcov-report/index.html +25 -10
  49. package/coverage/lcov-report/index.html.meta +7 -7
  50. package/coverage/lcov-report/prettify.css.meta +1 -1
  51. package/coverage/lcov-report/prettify.js.meta +1 -1
  52. package/coverage/lcov-report/sort-arrow-sprite.png.meta +1 -1
  53. package/coverage/lcov-report/sorter.js.meta +1 -1
  54. package/coverage/lcov-report/transform-docs-to-wiki.js.html +1 -1
  55. package/coverage/lcov-report/transform-docs-to-wiki.js.html.meta +7 -7
  56. package/coverage/lcov-report/vendor.meta +1 -1
  57. package/coverage/lcov-report.meta +8 -8
  58. package/coverage/lcov.info +365 -0
  59. package/coverage/lcov.info.meta +7 -7
  60. package/docs/architecture/design-and-architecture.md +0 -1
  61. package/docs/concepts/index.md +37 -0
  62. package/docs/concepts/index.md.meta +7 -0
  63. package/docs/concepts/interceptors-and-ordering.md +0 -2
  64. package/docs/concepts/mental-model.md +390 -0
  65. package/docs/concepts/mental-model.md.meta +7 -0
  66. package/docs/concepts/message-types.md +0 -1
  67. package/docs/getting-started/getting-started.md +1 -0
  68. package/docs/getting-started/index.md +6 -5
  69. package/docs/getting-started/overview.md +1 -0
  70. package/docs/getting-started/quick-start.md +2 -1
  71. package/docs/getting-started/visual-guide.md +4 -10
  72. package/docs/hooks.py +10 -1
  73. package/docs/images/DxMessaging-banner.svg +1 -1
  74. package/docs/index.md +7 -7
  75. package/docs/javascripts/mermaid-config.js +44 -4
  76. package/docs/reference/helpers.md +130 -154
  77. package/docs/reference/quick-reference.md +5 -1
  78. package/docs/reference/reference.md +124 -130
  79. package/mkdocs.yml +2 -0
  80. package/package.json +7 -2
  81. package/scripts/__tests__/generate-skills-index.test.js +397 -0
  82. package/scripts/__tests__/generate-skills-index.test.js.meta +7 -0
  83. package/scripts/__tests__/mermaid-config.test.js +467 -0
  84. package/scripts/__tests__/mermaid-config.test.js.meta +7 -0
  85. package/scripts/__tests__/validate-skills-optional-fields.test.js +1474 -0
  86. package/scripts/__tests__/validate-skills-optional-fields.test.js.meta +7 -0
  87. package/scripts/__tests__/validate-skills-required-fields.test.js +188 -0
  88. package/scripts/__tests__/validate-skills-required-fields.test.js.meta +7 -0
  89. package/scripts/__tests__/validate-skills-tags.test.js +353 -0
  90. package/scripts/__tests__/validate-skills-tags.test.js.meta +7 -0
  91. package/scripts/__tests__/validate-workflows.test.js +188 -0
  92. package/scripts/__tests__/validate-workflows.test.js.meta +7 -0
  93. package/scripts/generate-skills-index.js +88 -3
  94. package/scripts/validate-skills.js +230 -30
  95. package/scripts/validate-workflows.js +272 -0
  96. package/scripts/validate-workflows.js.meta +7 -0
  97. package/scripts/wiki/generate-wiki-sidebar.js.meta +1 -8
  98. package/scripts/wiki/transform-docs-to-wiki.js.meta +1 -1
  99. package/site/404.html +1 -1
  100. package/site/advanced/emit-shorthands/index.html +2 -2
  101. package/site/advanced/message-bus-providers/index.html +2 -2
  102. package/site/advanced/registration-builders/index.html +2 -2
  103. package/site/advanced/runtime-configuration/index.html +2 -2
  104. package/site/advanced/string-messages/index.html +2 -2
  105. package/site/advanced.meta +1 -1
  106. package/site/architecture/comparisons/index.html +2 -2
  107. package/site/architecture/design-and-architecture/index.html +2 -2
  108. package/site/architecture/performance/index.html +1 -1
  109. package/site/architecture.meta +1 -1
  110. package/site/concepts/index.html +1 -0
  111. package/site/concepts/index.html.meta +7 -0
  112. package/site/concepts/interceptors-and-ordering/index.html +4 -4
  113. package/site/concepts/listening-patterns/index.html +2 -2
  114. package/site/concepts/mental-model/index.html +146 -0
  115. package/site/concepts/mental-model/index.html.meta +7 -0
  116. package/site/concepts/mental-model.meta +8 -0
  117. package/site/concepts/message-types/index.html +2 -2
  118. package/site/concepts/targeting-and-context/index.html +2 -2
  119. package/site/concepts.meta +1 -1
  120. package/site/examples/end-to-end/index.html +2 -2
  121. package/site/examples/end-to-end-scene-transitions/index.html +2 -2
  122. package/site/examples.meta +1 -1
  123. package/site/getting-started/getting-started/index.html +3 -3
  124. package/site/getting-started/index.html +4 -4
  125. package/site/getting-started/install/index.html +3 -3
  126. package/site/getting-started/overview/index.html +2 -2
  127. package/site/getting-started/quick-start/index.html +2 -2
  128. package/site/getting-started/visual-guide/index.html +11 -11
  129. package/site/getting-started.meta +1 -1
  130. package/site/guides/advanced/index.html +2 -2
  131. package/site/guides/diagnostics/index.html +2 -2
  132. package/site/guides/migration-guide/index.html +2 -2
  133. package/site/guides/patterns/index.html +2 -2
  134. package/site/guides/testing/index.html +2 -2
  135. package/site/guides/unity-integration/index.html +2 -2
  136. package/site/guides.meta +1 -1
  137. package/site/hooks.py.meta +1 -1
  138. package/site/images/DxMessaging-banner.svg +119 -0
  139. package/site/images/DxMessaging-banner.svg.meta +7 -0
  140. package/site/images.meta +8 -0
  141. package/site/index.html +2 -2
  142. package/site/integrations/index.html +2 -2
  143. package/site/integrations/reflex/index.html +2 -2
  144. package/site/integrations/vcontainer/index.html +2 -2
  145. package/site/integrations/zenject/index.html +2 -2
  146. package/site/integrations.meta +1 -1
  147. package/site/javascripts/csharp-highlight.js.meta +7 -7
  148. package/site/javascripts/mermaid-config.js +4 -1
  149. package/site/javascripts/mermaid-config.js.meta +1 -1
  150. package/site/javascripts.meta +1 -1
  151. package/site/reference/compatibility/index.html +1 -1
  152. package/site/reference/faq/index.html +1 -1
  153. package/site/reference/glossary/index.html +2 -2
  154. package/site/reference/helpers/index.html +15 -15
  155. package/site/reference/quick-reference/index.html +3 -3
  156. package/site/reference/reference/index.html +37 -37
  157. package/site/reference/troubleshooting/index.html +1 -1
  158. package/site/reference.meta +1 -1
  159. package/site/search/search_index.json +1 -1
  160. package/site/sitemap.xml +46 -38
  161. package/site/sitemap.xml.gz +0 -0
  162. package/site/stylesheets/extra.css.meta +1 -1
  163. package/site/stylesheets.meta +1 -1
@@ -1,6 +1,6 @@
1
1
  # Skills Index
2
2
 
3
- > **Auto-generated** on 2026-01-28. Do not edit manually.
3
+ > **Auto-generated** on 2026-01-30. Do not edit manually.
4
4
  > Run `node scripts/generate-skills-index.js` to regenerate.
5
5
 
6
6
  ---
@@ -9,19 +9,20 @@
9
9
 
10
10
  | Metric | Value |
11
11
  | ------------ | ----- |
12
- | Total Skills | 76 |
13
- | Categories | 5 |
14
- | Unique Tags | 139 |
12
+ | Total Skills | 86 |
13
+ | Categories | 6 |
14
+ | Unique Tags | 162 |
15
15
 
16
16
  ---
17
17
 
18
18
  ## Table of Contents
19
19
 
20
- - [Documentation](#documentation) (12)
20
+ - [Documentation](#documentation) (15)
21
+ - [GitHub Actions](#github-actions) (2)
21
22
  - [Performance](#performance) (24)
22
- - [Scripting](#scripting) (3)
23
+ - [Scripting](#scripting) (6)
23
24
  - [Solid](#solid) (13)
24
- - [Testing](#testing) (24)
25
+ - [Testing](#testing) (26)
25
26
  - [Tag Cloud](#tag-cloud)
26
27
  - [All Skills by Complexity](#all-skills-by-complexity)
27
28
 
@@ -29,20 +30,30 @@
29
30
 
30
31
  ## Documentation
31
32
 
32
- | Skill | Lines | Complexity | Status | Performance | Tags |
33
- | ------------------------------------------------------------------------------------------- | ------ | ---------- | --------- | ----------- | ----------------------------------------- |
34
- | [Changelog Entry Writing and Anti-Patterns](./documentation/changelog-entry-writing.md) | ✅ 278 | 🟢 Basic | ✅ Stable | ○○○○○ | changelog, release-notes, writing |
35
- | [Changelog Management](./documentation/changelog-management.md) | 📝 191 | 🟢 Basic | ✅ Stable | ○○○○○ | changelog, documentation, versioning |
36
- | [Changelog Release Workflow](./documentation/changelog-release-workflow.md) | ✅ 250 | 🟢 Basic | ✅ Stable | ○○○○○ | changelog, release-workflow, versioning |
37
- | [Documentation Code Samples](./documentation/documentation-code-samples.md) | ✅ 263 | 🟢 Basic | ✅ Stable | ○○○○○ | documentation, code-samples, examples |
38
- | [Documentation Style Guide](./documentation/documentation-style-guide.md) | 📝 186 | 🟢 Basic | ✅ Stable | ○○○○○ | documentation, style, writing |
39
- | [Documentation Update Workflow](./documentation/documentation-update-workflow.md) | 📝 147 | 🟢 Basic | ✅ Stable | ○○○○○ | documentation, workflow, checklist |
40
- | [Documentation Updates and Maintenance](./documentation/documentation-updates.md) | 📝 147 | 🟢 Basic | ✅ Stable | ○○○○○ | documentation, code-comments, xml-docs |
41
- | [External URL Fragment Validation](./documentation/external-url-fragment-validation.md) | 📝 182 | 🟢 Basic | ✅ Stable | ○○○○○ | documentation, links, urls |
42
- | [GitHub Actions Version Consistency](./documentation/github-actions-version-consistency.md) | ✅ 204 | 🟢 Basic | ✅ Stable | ○○○○○ | github-actions, ci-cd, version-management |
43
- | [Link Quality and External URL Management](./documentation/link-quality-guidelines.md) | ✅ 268 | 🟢 Basic | ✅ Stable | ○○○○○ | documentation, links, urls |
44
- | [Skill File Sizing Guidelines](./documentation/skill-file-sizing.md) | 261 | 🟢 Basic | ✅ Stable | ○○○○○ | documentation, skills, file-organization |
45
- | [XML Documentation Standards](./documentation/documentation-xml-docs.md) | 📝 191 | 🟢 Basic | ✅ Stable | ○○○○○ | documentation, xml-docs, api-reference |
33
+ | Skill | Lines | Complexity | Status | Performance | Tags |
34
+ | ------------------------------------------------------------------------------------------- | ------ | --------------- | --------- | ----------- | ----------------------------------------- |
35
+ | [Changelog Entry Writing and Anti-Patterns](./documentation/changelog-entry-writing.md) | ✅ 278 | 🟢 Basic | ✅ Stable | ○○○○○ | changelog, release-notes, writing |
36
+ | [Changelog Management](./documentation/changelog-management.md) | 229 | 🟢 Basic | ✅ Stable | ○○○○○ | changelog, documentation, versioning |
37
+ | [Changelog Release Workflow](./documentation/changelog-release-workflow.md) | ✅ 250 | 🟢 Basic | ✅ Stable | ○○○○○ | changelog, release-workflow, versioning |
38
+ | [Documentation Code Samples](./documentation/documentation-code-samples.md) | ✅ 263 | 🟢 Basic | ✅ Stable | ○○○○○ | documentation, code-samples, examples |
39
+ | [Documentation Style Guide](./documentation/documentation-style-guide.md) | 204 | 🟢 Basic | ✅ Stable | ○○○○○ | documentation, style, writing |
40
+ | [Documentation Update Workflow](./documentation/documentation-update-workflow.md) | 📝 149 | 🟢 Basic | ✅ Stable | ○○○○○ | documentation, workflow, checklist |
41
+ | [Documentation Updates and Maintenance](./documentation/documentation-updates.md) | 📝 149 | 🟢 Basic | ✅ Stable | ○○○○○ | documentation, code-comments, xml-docs |
42
+ | [External URL Fragment Validation](./documentation/external-url-fragment-validation.md) | 📝 182 | 🟢 Basic | ✅ Stable | ○○○○○ | documentation, links, urls |
43
+ | [GitHub Actions Version Consistency](./documentation/github-actions-version-consistency.md) | ✅ 204 | 🟢 Basic | ✅ Stable | ○○○○○ | github-actions, ci-cd, version-management |
44
+ | [Link Quality and External URL Management](./documentation/link-quality-guidelines.md) | ✅ 268 | 🟢 Basic | ✅ Stable | ○○○○○ | documentation, links, urls |
45
+ | [Markdown Compatibility Guidelines](./documentation/markdown-compatibility.md) | ⚠️ 477 | 🟢 Basic | ✅ Stable | ○○○○○ | documentation, markdown, compatibility |
46
+ | [Mermaid Diagram Theming](./documentation/mermaid-theming.md) | 327 | 🟡 Intermediate | ✅ Stable | ○○○○○ | documentation, mermaid, theming |
47
+ | [MkDocs Navigation Management](./documentation/mkdocs-navigation.md) | ✅ 291 | 🟢 Basic | ✅ Stable | ○○○○○ | documentation, mkdocs, navigation |
48
+ | [Skill File Sizing Guidelines](./documentation/skill-file-sizing.md) | ✅ 261 | 🟢 Basic | ✅ Stable | ○○○○○ | documentation, skills, file-organization |
49
+ | [XML Documentation Standards](./documentation/documentation-xml-docs.md) | 📝 191 | 🟢 Basic | ✅ Stable | ○○○○○ | documentation, xml-docs, api-reference |
50
+
51
+ ## GitHub Actions
52
+
53
+ | Skill | Lines | Complexity | Status | Performance | Tags |
54
+ | ---------------------------------------------------------------------------------- | ------ | --------------- | --------- | ----------- | ------------------------------- |
55
+ | [Git Renormalize Pattern Validation](./github-actions/git-renormalize-patterns.md) | ✅ 232 | 🟡 Intermediate | ✅ Stable | ●○○○○ | github-actions, git, ci-cd |
56
+ | [GitHub Actions Workflow Consistency](./github-actions/workflow-consistency.md) | ✅ 347 | 🟡 Intermediate | ✅ Stable | ●●○○○ | github-actions, ci-cd, workflow |
46
57
 
47
58
  ## Performance
48
59
 
@@ -75,11 +86,14 @@
75
86
 
76
87
  ## Scripting
77
88
 
78
- | Skill | Lines | Complexity | Status | Performance | Tags |
79
- | ---------------------------------------------------------------------------------- | ------ | --------------- | --------- | ----------- | ----------------------------------------- |
80
- | [Cross-Platform Script Compatibility](./scripting/cross-platform-compatibility.md) | ✅ 225 | 🟡 Intermediate | ✅ Stable | ○○○○○ | cross-platform, case-sensitivity, testing |
81
- | [PowerShell Scripting Best Practices](./scripting/powershell-best-practices.md) | ⚠️ 387 | 🟡 Intermediate | ✅ Stable | ○○○○○ | powershell, scripting, regex |
82
- | [Shell Scripting Best Practices](./scripting/shell-best-practices.md) | 336 | 🟡 Intermediate | ✅ Stable | ○○○○○ | shell, bash, scripting |
89
+ | Skill | Lines | Complexity | Status | Performance | Tags |
90
+ | ------------------------------------------------------------------------------------------ | ------ | --------------- | --------- | ----------- | ----------------------------------------- |
91
+ | [Cross-Platform Script Compatibility](./scripting/cross-platform-compatibility.md) | ✅ 225 | 🟡 Intermediate | ✅ Stable | ○○○○○ | cross-platform, case-sensitivity, testing |
92
+ | [JavaScript Code Quality Practices](./scripting/javascript-code-quality.md) | ⚠️ 418 | 🟡 Intermediate | ✅ Stable | ○○○○○ | javascript, code-quality, linting |
93
+ | [PowerShell Scripting Best Practices](./scripting/powershell-best-practices.md) | ⚠️ 387 | 🟡 Intermediate | ✅ Stable | ○○○○○ | powershell, scripting, regex |
94
+ | [Regex Pattern Documentation](./scripting/regex-documentation.md) | ⚠️ 462 | 🟡 Intermediate | ✅ Stable | ○○○○○ | regex, documentation, scripting |
95
+ | [Shell Scripting Best Practices](./scripting/shell-best-practices.md) | ⚠️ 387 | 🟡 Intermediate | ✅ Stable | ○○○○○ | shell, bash, scripting |
96
+ | [Validation Patterns and Duplicate Warning Prevention](./scripting/validation-patterns.md) | ⚠️ 419 | 🟡 Intermediate | ✅ Stable | ○○○○○ | validation, javascript, error-handling |
83
97
 
84
98
  ## Solid
85
99
 
@@ -117,6 +131,7 @@
117
131
  | [Test Base Class with Automatic Resource Cleanup](./testing/test-base-class-cleanup.md) | ✅ 324 | 🟡 Intermediate | ✅ Stable | ●○○○○ | testing, cleanup, lifecycle |
118
132
  | [Test Categories for Selective Execution](./testing/test-categories.md) | ✅ 288 | 🟢 Basic | ✅ Stable | ●●●○○ | testing, organization, categories |
119
133
  | [Test Category Execution](./testing/test-categories-execution.md) | 📝 143 | 🟢 Basic | ✅ Stable | ○○○○○ | testing, organization, categories |
134
+ | [Test Code Quality and Accuracy](./testing/test-code-quality.md) | ✅ 244 | 🟡 Intermediate | ✅ Stable | ●●○○○ | testing, documentation, linting |
120
135
  | [Test Coverage Scenario Categories](./testing/test-coverage-scenario-categories.md) | ✅ 224 | 🟡 Intermediate | ✅ Stable | ○○○○○ | testing, coverage, edge-cases |
121
136
  | [Test Diagnostics and Investigation Patterns](./testing/test-diagnostics.md) | ✅ 248 | 🟡 Intermediate | ✅ Stable | ●○○○○ | testing, diagnostics, debugging |
122
137
  | [Test Diagnostics Patterns](./testing/test-diagnostics-patterns.md) | 📝 190 | 🟡 Intermediate | ✅ Stable | ●○○○○ | testing, diagnostics, logging |
@@ -126,13 +141,14 @@
126
141
  | [Test Failure Root Causes and Anti-Patterns](./testing/test-failure-investigation-root-causes.md) | 📝 187 | 🟡 Intermediate | ✅ Stable | ○○○○○ | testing, root-cause-analysis, anti-patterns |
127
142
  | [Test Invalid Skill](./testing/test-invalid-skill.md) | 📝 27 | 🔴 Expert | ✅ Stable | ●●●○○ | |
128
143
  | [Test Organization and Assertions](./testing/test-coverage-organization-assertions.md) | 📝 172 | 🟢 Basic | ✅ Stable | ○○○○○ | testing, assertions, naming |
144
+ | [Test Production Code Directly](./testing/test-production-code.md) | ✅ 349 | 🟡 Intermediate | ✅ Stable | ○○○○○ | testing, anti-patterns, code-quality |
129
145
  | [Unity Test Considerations and Anti-Patterns](./testing/test-coverage-unity-anti-patterns.md) | ✅ 233 | 🟢 Basic | ✅ Stable | ○○○○○ | testing, unity, anti-patterns |
130
146
 
131
147
  ---
132
148
 
133
149
  ## Tag Cloud
134
150
 
135
- `testing`×26 `performance`×15 `unity`×13 `documentation`×10 `solid`×10 `memory9 `patterns`×9 `pooling`×9 `allocation`×8 `ci-cd`×8 `nunit`×8 `zero-alloc`×7 `collections`×5 `data-driven`×5 `debugging`×5 `singleton`×5 `struct`×5 `anti-patterns4 `builder`×4 `coverage`×4 `dictionary`×4 `fixtures`×4 `versioning`×4 `api-design`×3 `caching`×3 `changelog`×3 `defensive`×3 `diagnostics`×3 `equality`×3 `extensions`×3 `fluent-api`×3 `inspector`×3 `investigation`×3 `keep-a-changelog`×3 `linting`×3 `logging`×3 `markdown`×3 `messaging`×3 `organization`×3 `parameterized`×3 `powershell`×3 `quality`×3 `reference-counting`×3 `serialization`×3 `try-pattern`×3 `api-reference`×2 `arrays`×2 `benchmark`×2 `case-sensitivity`×2 `categories`×2 `ci`×2 `cleanup`×2 `code-comments`×2 `code-samples`×2 `data-structures`×2 `edge-cases`×2 `error-handling`×2 `eviction`×2 `examples`×2 `github-actions`×2 `hashcode`×2 `hot-path`×2 `iequatable`×2 `inlining`×2 `javascript`×2 `lfu`×2 `lifecycle`×2 `links`×2 `linux`×2 `lru`×2 `optimization`×2 `release-notes`×2 `root-cause-analysis`×2 `scripting`×2 `urls`×2 `user-communication`×2 `workflows`×2 `writing`×2 `xml-docs`×2 `accessibility`×1 `accuracy`×1 `architecture`×1 `arraypool`×1 `assertions`×1 `automation`×1 `bash`×1 `best-practices`×1 `boxing`×1 `buffers`×1 `checklist`×1 `clarity`×1 `configuration`×1 `coroutines`×1 `cross-platform`×1 `disposable`×1 `dry`×1 `encoding`×1 `file-organization`×1 `fisher-yates`×1 `flaky-tests`×1 `fragments`×1 `garbage-collection`×1 `generic`×1 `git`×1 `here-strings`×1 `implementation`×1 `jest`×1 `llm-context`×1 `macos`×1 `maintainability`×1 `maintenance`×1 `methodimpl`×1 `naming`×1 `negative-tests`×1 `parsing`×1 `pre-commit`×1 `procedure`×1 `raii`×1 `regex`×1 `release-workflow`×1 `scriptable-object`×1 `scripts`×1 `semantic-versioning`×1 `shared-state`×1 `shell`×1 `shuffle`×1 `skills`×1 `stringbuilder`×1 `strings`×1 `style`×1 `test-cases`×1 `thread-safety`×1 `type-specialization`×1 `validation`×1 `version-management`×1 `windows`×1 `workflow`×1 `yield`×1 `zero-flaky`×1
151
+ `testing`×30 `documentation`×16 `performance`×15 `unity`×13 `ci-cd`×10 `patterns`×10 `solid10 `memory`×9 `pooling`×9 `allocation`×8 `nunit`×8 `zero-alloc`×7 `javascript`×6 `anti-patterns`×5 `collections`×5 `data-driven`×5 `debugging`×5 `linting`×5 `singleton`×5 `struct5 `builder`×4 `coverage`×4 `dictionary`×4 `fixtures`×4 `github-actions`×4 `markdown`×4 `versioning`×4 `api-design`×3 `caching`×3 `changelog`×3 `code-quality`×3 `defensive`×3 `diagnostics`×3 `equality`×3 `error-handling`×3 `extensions`×3 `fluent-api`×3 `inspector`×3 `investigation`×3 `keep-a-changelog`×3 `logging`×3 `messaging`×3 `mkdocs`×3 `organization`×3 `parameterized`×3 `powershell`×3 `quality`×3 `reference-counting`×3 `scripting`×3 `serialization`×3 `try-pattern`×3 `api-reference`×2 `arrays`×2 `benchmark`×2 `best-practices`×2 `case-sensitivity`×2 `categories`×2 `ci`×2 `cleanup`×2 `code-comments`×2 `code-samples`×2 `data-structures`×2 `edge-cases`×2 `eviction`×2 `examples`×2 `git`×2 `hashcode`×2 `hot-path`×2 `iequatable`×2 `inlining`×2 `jest`×2 `lfu`×2 `lifecycle`×2 `links`×2 `linux`×2 `lru`×2 `maintainability`×2 `maintenance`×2 `optimization`×2 `regex`×2 `release-notes`×2 `root-cause-analysis`×2 `urls`×2 `user-communication`×2 `validation`×2 `workflow`×2 `workflows`×2 `writing`×2 `xml-docs`×2 `yaml`×2 `accessibility`×1 `accuracy`×1 `architecture`×1 `arraypool`×1 `assertions`×1 `automation`×1 `bash`×1 `boxing`×1 `buffers`×1 `checklist`×1 `clarity`×1 `comments`×1 `compatibility`×1 `configuration`×1 `consistency`×1 `coroutines`×1 `cross-platform`×1 `diagrams`×1 `disposable`×1 `dry`×1 `duplicate-warnings`×1 `encoding`×1 `enum-validation`×1 `eslint`×1 `file-organization`×1 `fisher-yates`×1 `flaky-tests`×1 `fragments`×1 `garbage-collection`×1 `generic`×1 `gitattributes`×1 `here-strings`×1 `implementation`×1 `line-endings`×1 `llm-context`×1 `macos`×1 `mermaid`×1 `methodimpl`×1 `naming`×1 `navigation`×1 `negative-tests`×1 `optional-fields`×1 `parsing`×1 `portability`×1 `pre-commit`×1 `procedure`×1 `raii`×1 `release-workflow`×1 `scriptable-object`×1 `scripts`×1 `security`×1 `semantic-versioning`×1 `shared-state`×1 `shell`×1 `shuffle`×1 `site-structure`×1 `skills`×1 `stringbuilder`×1 `strings`×1 `style`×1 `sync-notes`×1 `test-cases`×1 `testability`×1 `theming`×1 `thread-safety`×1 `truthiness`×1 `type-coercion`×1 `type-specialization`×1 `version-management`×1 `windows`×1 `yield`×1 `zero-flaky`×1
136
152
 
137
153
  ---
138
154
 
@@ -151,6 +167,8 @@
151
167
  - [External URL Fragment Validation](./documentation/external-url-fragment-validation.md) _(documentation)_
152
168
  - [GitHub Actions Version Consistency](./documentation/github-actions-version-consistency.md) _(documentation)_
153
169
  - [Link Quality and External URL Management](./documentation/link-quality-guidelines.md) _(documentation)_
170
+ - [Markdown Compatibility Guidelines](./documentation/markdown-compatibility.md) _(documentation)_
171
+ - [MkDocs Navigation Management](./documentation/mkdocs-navigation.md) _(documentation)_
154
172
  - [Skill File Sizing Guidelines](./documentation/skill-file-sizing.md) _(documentation)_
155
173
  - [StringBuilder Pooling for Zero-Allocation String Building](./performance/stringbuilder-pooling.md) _(performance)_
156
174
  - [Test Categories for Selective Execution](./testing/test-categories.md) _(testing)_
@@ -185,9 +203,13 @@
185
203
  - [Fluent Builder Templates and Factories](./solid/fluent-builder-pattern-templates.md) _(solid)_
186
204
  - [Fluent Builder Usage Examples](./solid/fluent-builder-pattern-usage-examples.md) _(solid)_
187
205
  - [Git and Parser Robustness in CI/CD](./testing/git-workflow-robustness.md) _(testing)_
206
+ - [Git Renormalize Pattern Validation](./github-actions/git-renormalize-patterns.md) _(github-actions)_
207
+ - [GitHub Actions Workflow Consistency](./github-actions/workflow-consistency.md) _(github-actions)_
188
208
  - [IEquatable Implementation for Value Types](./solid/iequatable-implementation.md) _(solid)_
189
209
  - [IEquatable Implementation Variants](./solid/iequatable-implementation-variants.md) _(solid)_
190
210
  - [IEquatable Usage Examples](./solid/iequatable-implementation-usage.md) _(solid)_
211
+ - [JavaScript Code Quality Practices](./scripting/javascript-code-quality.md) _(scripting)_
212
+ - [Mermaid Diagram Theming](./documentation/mermaid-theming.md) _(documentation)_
191
213
  - [Object Pooling Anti-Patterns](./performance/object-pooling-anti-patterns.md) _(performance)_
192
214
  - [Object Pooling for Zero-Allocation Messaging](./performance/object-pooling.md) _(performance)_
193
215
  - [Object Pooling Usage Examples](./performance/object-pooling-usage-examples.md) _(performance)_
@@ -195,6 +217,7 @@
195
217
  - [PowerShell Scripting Best Practices](./scripting/powershell-best-practices.md) _(scripting)_
196
218
  - [Readonly Struct Cached Hash Performance Notes](./performance/readonly-struct-cached-hash-performance-notes.md) _(performance)_
197
219
  - [Readonly Struct with Cached Hash for Dictionary Keys](./performance/readonly-struct-cached-hash.md) _(performance)_
220
+ - [Regex Pattern Documentation](./scripting/regex-documentation.md) _(scripting)_
198
221
  - [Runtime Singleton Pattern](./performance/singleton-runtime.md) _(performance)_
199
222
  - [RuntimeSingleton and ScriptableObject Singleton Patterns](./performance/singleton-patterns.md) _(performance)_
200
223
  - [Script Test Coverage Requirements](./testing/script-test-coverage.md) _(testing)_
@@ -206,6 +229,7 @@
206
229
  - [Singleton Usage Examples](./performance/singleton-usage-examples.md) _(performance)_
207
230
  - [Test Base Class Cleanup Usage](./testing/test-base-class-cleanup-usage.md) _(testing)_
208
231
  - [Test Base Class with Automatic Resource Cleanup](./testing/test-base-class-cleanup.md) _(testing)_
232
+ - [Test Code Quality and Accuracy](./testing/test-code-quality.md) _(testing)_
209
233
  - [Test Coverage Scenario Categories](./testing/test-coverage-scenario-categories.md) _(testing)_
210
234
  - [Test Diagnostics and Investigation Patterns](./testing/test-diagnostics.md) _(testing)_
211
235
  - [Test Diagnostics Patterns](./testing/test-diagnostics-patterns.md) _(testing)_
@@ -213,6 +237,8 @@
213
237
  - [Test Failure Investigation and Zero-Flaky Policy](./testing/test-failure-investigation.md) _(testing)_
214
238
  - [Test Failure Investigation Procedure](./testing/test-failure-investigation-procedure.md) _(testing)_
215
239
  - [Test Failure Root Causes and Anti-Patterns](./testing/test-failure-investigation-root-causes.md) _(testing)_
240
+ - [Test Production Code Directly](./testing/test-production-code.md) _(testing)_
241
+ - [Validation Patterns and Duplicate Warning Prevention](./scripting/validation-patterns.md) _(scripting)_
216
242
 
217
243
  ### 🟠 Advanced
218
244
 
@@ -0,0 +1,417 @@
1
+ ---
2
+ title: "JavaScript Code Quality Practices"
3
+ id: "javascript-code-quality"
4
+ category: "scripting"
5
+ version: "1.0.0"
6
+ created: "2026-01-30"
7
+ updated: "2026-01-30"
8
+
9
+ source:
10
+ repository: "wallstop/DxMessaging"
11
+ files:
12
+ - path: "scripts/"
13
+ - path: "scripts/__tests__/"
14
+ url: "https://github.com/wallstop/DxMessaging"
15
+
16
+ tags:
17
+ - "javascript"
18
+ - "code-quality"
19
+ - "linting"
20
+ - "testing"
21
+ - "jest"
22
+ - "eslint"
23
+ - "documentation"
24
+ - "sync-notes"
25
+
26
+ complexity:
27
+ level: "intermediate"
28
+ reasoning: "Requires understanding of linting tools, test organization, and code documentation"
29
+
30
+ impact:
31
+ performance:
32
+ rating: "none"
33
+ details: "Code quality patterns only; no runtime performance impact"
34
+ maintainability:
35
+ rating: "high"
36
+ details: "Proper code organization and documentation prevents confusion and bugs"
37
+ testability:
38
+ rating: "high"
39
+ details: "Well-organized tests are easier to maintain and extend"
40
+
41
+ prerequisites:
42
+ - "JavaScript fundamentals"
43
+ - "Jest testing framework familiarity"
44
+ - "Understanding of linting concepts"
45
+
46
+ dependencies:
47
+ packages:
48
+ - "jest"
49
+ skills:
50
+ - "script-test-coverage"
51
+ - "cross-platform-compatibility"
52
+
53
+ applies_to:
54
+ languages:
55
+ - "JavaScript"
56
+ frameworks:
57
+ - "Jest"
58
+ - "Node.js"
59
+ versions:
60
+ node: ">=18.0"
61
+ jest: ">=29.0"
62
+
63
+ aliases:
64
+ - "JS code quality"
65
+ - "JavaScript best practices"
66
+ - "Test organization"
67
+
68
+ related:
69
+ - "script-test-coverage"
70
+ - "cross-platform-compatibility"
71
+ - "comprehensive-test-coverage"
72
+ - "validation-patterns"
73
+
74
+ status: "stable"
75
+ ---
76
+
77
+ # JavaScript Code Quality Practices
78
+
79
+ > **One-line summary**: Ensure JavaScript code has accurate documentation, properly placed
80
+ > directives, correctly categorized tests, and bidirectional synchronization notes.
81
+
82
+ ## Overview
83
+
84
+ JavaScript code quality extends beyond just "working code." This skill covers common pitfalls in
85
+ documentation accuracy, linter directive placement, test organization, and synchronization between
86
+ related code. Following these practices prevents confusion, reduces bugs, and improves codebase
87
+ maintainability.
88
+
89
+ ## Solution
90
+
91
+ 1. **Keep JSDoc accurate** - function descriptions, parameter types, and return values must match
92
+ implementation
93
+ 1. **Keep module exports documented** - `@exports` tags must list actual exports with correct types
94
+ and values
95
+ 1. **Place linter directives immediately before suppressed code** - `eslint-disable-next-line`
96
+ only affects the next line
97
+ 1. **Only use linter directives if the linter is configured** - don't add ESLint comments to
98
+ projects that don't use ESLint
99
+ 1. **Use accurate `describe` block names** - test categories must reflect actual test content
100
+ 1. **Match user-facing messages to actual UI terminology** - column names, labels, and terms must
101
+ be consistent
102
+ 1. **Add bidirectional SYNC notes** - when code A references code B, code B must reference code A
103
+ 1. **Test user-facing message content** - verify messages contain correct terminology
104
+
105
+ ## Linter Directive Placement
106
+
107
+ ### Problem
108
+
109
+ Linter disable directives (ESLint, JSHint, etc.) must be placed immediately before the line they
110
+ suppress. Placing them earlier in the file has no effect and creates confusion.
111
+
112
+ ### Anti-Pattern
113
+
114
+ ```javascript
115
+ // BAD: Directive is too far from the code it's meant to suppress
116
+ // eslint-disable-next-line no-unused-vars
117
+ const SOME_CONSTANT = "value";
118
+
119
+ // Many lines of other code here...
120
+
121
+ function unusedFunction() {
122
+ // This function is NOT suppressed - the directive was consumed by SOME_CONSTANT
123
+ }
124
+ ```
125
+
126
+ ### Correct Pattern
127
+
128
+ ```javascript
129
+ // GOOD: Directive immediately precedes the suppressed code
130
+ const SOME_CONSTANT = "value";
131
+
132
+ // Many lines of other code here...
133
+
134
+ // eslint-disable-next-line no-unused-vars
135
+ function unusedFunction() {
136
+ // This function IS suppressed
137
+ }
138
+ ```
139
+
140
+ ### When to Avoid Directives Entirely
141
+
142
+ Before adding a linter directive, verify:
143
+
144
+ 1. **Is the linter actually configured?** Adding ESLint directives to a project that doesn't use
145
+ ESLint is misleading and creates maintenance burden.
146
+ 1. **Can the underlying issue be fixed?** Unused variables should usually be removed, not
147
+ suppressed.
148
+ 1. **Is the suppression documented?** If you must suppress, add a comment explaining why.
149
+
150
+ ```javascript
151
+ // GOOD: If ESLint is not used in the project, don't add ESLint directives
152
+ // Just remove or use the code properly instead of suppressing warnings
153
+ ```
154
+
155
+ ## JSDoc Accuracy
156
+
157
+ ### Problem
158
+
159
+ JSDoc comments that don't match implementation create dangerous misunderstandings. Tests written
160
+ against inaccurate JSDoc verify incorrect behavior.
161
+
162
+ ### Anti-Pattern: Misleading Function Description
163
+
164
+ ```javascript
165
+ // BAD: JSDoc says "excludes arrays" but implementation accepts them
166
+ /**
167
+ * Validates that value is a non-null object (excludes arrays).
168
+ * @param {*} value - Value to check
169
+ * @returns {boolean} True if value is a non-null object
170
+ */
171
+ function isValidObject(value) {
172
+ // Implementation actually accepts arrays!
173
+ return value !== null && typeof value === "object";
174
+ }
175
+ ```
176
+
177
+ ### Correct Pattern: Documentation Matches Implementation
178
+
179
+ ```javascript
180
+ // GOOD: JSDoc accurately describes behavior
181
+ /**
182
+ * Validates that value is a non-null object (arrays are objects in JavaScript).
183
+ * @param {*} value - Value to check
184
+ * @returns {boolean} True if value is non-null and typeof is 'object'
185
+ */
186
+ function isValidObject(value) {
187
+ return value !== null && typeof value === "object";
188
+ }
189
+
190
+ // OR: Update implementation to match documented intent
191
+ /**
192
+ * Validates that value is a non-null, non-array object.
193
+ * @param {*} value - Value to check
194
+ * @returns {boolean} True if value is a non-null, non-array object
195
+ */
196
+ function isValidObject(value) {
197
+ return value !== null && typeof value === "object" && !Array.isArray(value);
198
+ }
199
+ ```
200
+
201
+ ### Module Export Documentation
202
+
203
+ When using `@exports` tags to document module exports, keep them synchronized with actual exports:
204
+
205
+ ```javascript
206
+ // BAD: @exports lists wrong values or missing exports
207
+ /**
208
+ * @exports {Array<string>} VALID_LEVELS - Valid values: 'low', 'high'
209
+ */
210
+ module.exports = {
211
+ VALID_LEVELS, // Actual values: ['basic', 'intermediate', 'advanced']
212
+ helperFunction // Not documented!
213
+ };
214
+
215
+ // GOOD: @exports matches actual export values
216
+ /**
217
+ * @exports {Array<string>} VALID_LEVELS - Valid values: 'basic', 'intermediate', 'advanced'
218
+ * @exports {Function} helperFunction - Validates input and returns errors
219
+ */
220
+ module.exports = {
221
+ VALID_LEVELS,
222
+ helperFunction
223
+ };
224
+ ```
225
+
226
+ ### Verification Checklist
227
+
228
+ 1. **Read the implementation** - Don't just copy JSDoc from similar functions
229
+ 1. **Test edge cases mentioned in JSDoc** - If it says "excludes arrays", test with arrays
230
+ 1. **Update JSDoc when changing implementation** - Don't leave stale documentation
231
+ 1. **Avoid vague descriptions** - "Validates value" doesn't tell readers what validation occurs
232
+
233
+ ## Test Documentation Accuracy
234
+
235
+ ### Problem
236
+
237
+ Test file headers, `describe` block names, and comments must accurately describe what the tests
238
+ actually verify. Inaccurate documentation causes confusion and hides the test's true purpose.
239
+
240
+ ### Anti-Pattern: Incorrect Value Categorization
241
+
242
+ ```javascript
243
+ // BAD: Header says "falsy/undefined" but tests actually check "undefined/null"
244
+ /**
245
+ * @fileoverview Tests for frontmatter validation - falsy and undefined values.
246
+ */
247
+
248
+ describe("Falsy/Undefined Value Handling", () => {
249
+ // But the tests below actually check undefined/null (missing values),
250
+ // not other falsy values like empty string, 0, or false
251
+ test("should warn when value is undefined", () => {
252
+ validate({ field: undefined });
253
+ });
254
+ test("should warn when value is null", () => {
255
+ validate({ field: null });
256
+ });
257
+ });
258
+ ```
259
+
260
+ ### Correct Pattern: Precise Documentation
261
+
262
+ ```javascript
263
+ // GOOD: Documentation accurately describes what is tested
264
+ /**
265
+ * @fileoverview Tests for frontmatter validation - undefined and null values.
266
+ */
267
+
268
+ describe("Undefined/Null Value Handling", () => {
269
+ test("should warn when value is undefined", () => {
270
+ validate({ field: undefined });
271
+ });
272
+ test("should warn when value is null", () => {
273
+ validate({ field: null });
274
+ });
275
+ });
276
+
277
+ // Separate describe block for falsy wrong-type values
278
+ describe("Wrong Type Value Handling", () => {
279
+ test("should warn when value is empty string (wrong type)", () => {
280
+ validate({ field: "" });
281
+ });
282
+ test("should warn when value is zero (wrong type)", () => {
283
+ validate({ field: 0 });
284
+ });
285
+ test("should warn when value is false (wrong type)", () => {
286
+ validate({ field: false });
287
+ });
288
+ });
289
+ ```
290
+
291
+ ### JavaScript Truthiness Reference
292
+
293
+ When documenting tests, use accurate terminology:
294
+
295
+ | Value | Truthy/Falsy | Correct Term for Missing Check |
296
+ | ----------- | ------------ | ------------------------------ |
297
+ | `undefined` | Falsy | "missing" or "undefined" |
298
+ | `null` | Falsy | "missing" or "null" |
299
+ | `""` | Falsy | "wrong type" (not "missing") |
300
+ | `0` | Falsy | "wrong type" (not "missing") |
301
+ | `false` | Falsy | "wrong type" (not "missing") |
302
+ | `[]` | **Truthy** | "empty array" (not falsy!) |
303
+ | `{}` | **Truthy** | "empty object" (not falsy!) |
304
+
305
+ ## User-Facing Message Consistency
306
+
307
+ ### Problem
308
+
309
+ Warning messages, error messages, and other user-facing text must match the actual UI, column
310
+ names, or output they reference. Inconsistent naming causes confusion.
311
+
312
+ ### Anti-Pattern
313
+
314
+ ```javascript
315
+ // BAD: Message says "Difficulty column" but the actual table header is "Complexity"
316
+ console.warn(`Warning: ${file} has missing Difficulty column value`);
317
+
318
+ // The actual table in the output/UI:
319
+ // | Title | Complexity | Performance |
320
+ // |-------|------------|-------------|
321
+ ```
322
+
323
+ ### Correct Pattern
324
+
325
+ ```javascript
326
+ // GOOD: Message matches actual column name
327
+ console.warn(`Warning: ${file} has missing Complexity column value`);
328
+
329
+ // Matches the actual table:
330
+ // | Title | Complexity | Performance |
331
+ // |-------|------------|-------------|
332
+ ```
333
+
334
+ ### Test Coverage for Messages
335
+
336
+ When code produces user-facing messages, tests should verify the message content:
337
+
338
+ ```javascript
339
+ // GOOD: Test verifies message matches actual column names
340
+ describe("Warning Messages", () => {
341
+ test("should use correct column name in warning", () => {
342
+ const result = validate(invalidData);
343
+
344
+ // Verify the warning uses the actual column name from the UI
345
+ expect(result.warnings[0]).toContain("Complexity");
346
+ expect(result.warnings[0]).not.toContain("Difficulty"); // Old incorrect name
347
+ });
348
+ });
349
+ ```
350
+
351
+ ## Bidirectional SYNC Notes
352
+
353
+ ### Problem
354
+
355
+ SYNC notes that only exist in one location are easily missed. When code A references code B, code B
356
+ should also reference code A.
357
+
358
+ ### Anti-Pattern: One-Way SYNC
359
+
360
+ ```javascript
361
+ // File: validate-skills.js
362
+ // SYNC: Keep column names in sync with format-table.js formatHeader()
363
+ const COLUMNS = ["Complexity", "Performance"];
364
+
365
+ // File: format-table.js
366
+ // No SYNC note here - easy to forget to update validate-skills.js
367
+ function formatHeader() {
368
+ return ["Complexity", "Performance"];
369
+ }
370
+ ```
371
+
372
+ ### Correct Pattern: Bidirectional SYNC
373
+
374
+ ```javascript
375
+ // File: validate-skills.js
376
+ // SYNC: Keep column names in sync with format-table.js formatHeader()
377
+ const COLUMNS = ["Complexity", "Performance"];
378
+
379
+ // File: format-table.js
380
+ // SYNC: Keep column names in sync with validate-skills.js COLUMNS
381
+ function formatHeader() {
382
+ return ["Complexity", "Performance"];
383
+ }
384
+ ```
385
+
386
+ ### SYNC Note Checklist
387
+
388
+ When adding a SYNC note:
389
+
390
+ 1. **Add notes in BOTH locations** - never just one direction
391
+ 1. **Reference by function/variable name** - not line numbers
392
+ 1. **Verify the referenced code exists** - don't reference non-existent functions
393
+ 1. **Update tests** - if synced values are used in tests, add SYNC notes there too
394
+ 1. **Cross-environment code** - browser/Node.js boundaries require SYNC notes since modules cannot
395
+ be shared; the test file replicates logic and the SYNC notes ensure they stay aligned
396
+
397
+ ## Common Mistakes Checklist
398
+
399
+ Before committing JavaScript code, verify:
400
+
401
+ - [ ] JSDoc function descriptions match implementation behavior
402
+ - [ ] JSDoc `@param` and `@returns` types are accurate
403
+ - [ ] Module `@exports` documentation lists actual exports with correct values
404
+ - [ ] Linter directives are immediately before the suppressed line
405
+ - [ ] Linter directives are only used if the linter is actually configured
406
+ - [ ] Test `describe` blocks accurately categorize the tests they contain
407
+ - [ ] File headers accurately describe file contents
408
+ - [ ] Comments about JavaScript behavior are factually correct
409
+ - [ ] User-facing messages match actual UI/output terminology
410
+ - [ ] SYNC notes exist in both directions between related code
411
+ - [ ] Tests verify user-facing message content
412
+
413
+ ## See Also
414
+
415
+ - [Script Test Coverage](../testing/script-test-coverage.md) - Test file structure and naming
416
+ - [Cross-Platform Compatibility](cross-platform-compatibility.md) - Platform-specific considerations
417
+ - [Comprehensive Test Coverage](../testing/comprehensive-test-coverage.md) - Test coverage requirements