@theglitchking/hit-em-with-the-docs 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/.claude-plugin/marketplace.json +46 -0
  2. package/.claude-plugin/plugin.json +114 -0
  3. package/LICENSE +21 -0
  4. package/MIGRATION.md +255 -0
  5. package/README.backup.md +714 -0
  6. package/README.md +869 -0
  7. package/action.yml +56 -0
  8. package/dist/action/action/index.d.ts +2 -0
  9. package/dist/action/action/index.d.ts.map +1 -0
  10. package/dist/action/cli/index.d.ts +3 -0
  11. package/dist/action/cli/index.d.ts.map +1 -0
  12. package/dist/action/core/audit/auditor.d.ts +43 -0
  13. package/dist/action/core/audit/auditor.d.ts.map +1 -0
  14. package/dist/action/core/audit/rules.d.ts +37 -0
  15. package/dist/action/core/audit/rules.d.ts.map +1 -0
  16. package/dist/action/core/discover/antipatterns.d.ts +24 -0
  17. package/dist/action/core/discover/antipatterns.d.ts.map +1 -0
  18. package/dist/action/core/discover/dependencies.d.ts +57 -0
  19. package/dist/action/core/discover/dependencies.d.ts.map +1 -0
  20. package/dist/action/core/discover/patterns.d.ts +38 -0
  21. package/dist/action/core/discover/patterns.d.ts.map +1 -0
  22. package/dist/action/core/discover/standards.d.ts +58 -0
  23. package/dist/action/core/discover/standards.d.ts.map +1 -0
  24. package/dist/action/core/domains/classifier.d.ts +41 -0
  25. package/dist/action/core/domains/classifier.d.ts.map +1 -0
  26. package/dist/action/core/domains/constants.d.ts +40 -0
  27. package/dist/action/core/domains/constants.d.ts.map +1 -0
  28. package/dist/action/core/domains/detector.d.ts +35 -0
  29. package/dist/action/core/domains/detector.d.ts.map +1 -0
  30. package/dist/action/core/integrate/integrator.d.ts +35 -0
  31. package/dist/action/core/integrate/integrator.d.ts.map +1 -0
  32. package/dist/action/core/links/checker.d.ts +64 -0
  33. package/dist/action/core/links/checker.d.ts.map +1 -0
  34. package/dist/action/core/links/tracker.d.ts +69 -0
  35. package/dist/action/core/links/tracker.d.ts.map +1 -0
  36. package/dist/action/core/maintain/orchestrator.d.ts +39 -0
  37. package/dist/action/core/maintain/orchestrator.d.ts.map +1 -0
  38. package/dist/action/core/metadata/generator.d.ts +26 -0
  39. package/dist/action/core/metadata/generator.d.ts.map +1 -0
  40. package/dist/action/core/metadata/schema.d.ts +201 -0
  41. package/dist/action/core/metadata/schema.d.ts.map +1 -0
  42. package/dist/action/core/metadata/sync.d.ts +36 -0
  43. package/dist/action/core/metadata/sync.d.ts.map +1 -0
  44. package/dist/action/generators/index-generator.d.ts +19 -0
  45. package/dist/action/generators/index-generator.d.ts.map +1 -0
  46. package/dist/action/generators/registry-generator.d.ts +11 -0
  47. package/dist/action/generators/registry-generator.d.ts.map +1 -0
  48. package/dist/action/generators/scaffold.d.ts +30 -0
  49. package/dist/action/generators/scaffold.d.ts.map +1 -0
  50. package/dist/action/generators/templates/document.d.ts +14 -0
  51. package/dist/action/generators/templates/document.d.ts.map +1 -0
  52. package/dist/action/generators/templates/domain-index.d.ts +6 -0
  53. package/dist/action/generators/templates/domain-index.d.ts.map +1 -0
  54. package/dist/action/generators/templates/domain-registry.d.ts +6 -0
  55. package/dist/action/generators/templates/domain-registry.d.ts.map +1 -0
  56. package/dist/action/index.d.ts +31 -0
  57. package/dist/action/index.d.ts.map +1 -0
  58. package/dist/action/index.js +17 -0
  59. package/dist/action/index.js.map +1 -0
  60. package/dist/action/package.json +3 -0
  61. package/dist/action/reports/audit-report.d.ts +15 -0
  62. package/dist/action/reports/audit-report.d.ts.map +1 -0
  63. package/dist/action/reports/health-report.d.ts +15 -0
  64. package/dist/action/reports/health-report.d.ts.map +1 -0
  65. package/dist/action/reports/link-report.d.ts +15 -0
  66. package/dist/action/reports/link-report.d.ts.map +1 -0
  67. package/dist/action/utils/frontmatter.d.ts +50 -0
  68. package/dist/action/utils/frontmatter.d.ts.map +1 -0
  69. package/dist/action/utils/glob.d.ts +63 -0
  70. package/dist/action/utils/glob.d.ts.map +1 -0
  71. package/dist/action/utils/logger.d.ts +42 -0
  72. package/dist/action/utils/logger.d.ts.map +1 -0
  73. package/dist/action/utils/markdown.d.ts +89 -0
  74. package/dist/action/utils/markdown.d.ts.map +1 -0
  75. package/dist/cli/index.d.ts +3 -0
  76. package/dist/cli/index.d.ts.map +1 -0
  77. package/dist/cli/index.js +287 -0
  78. package/dist/cli/index.js.map +1 -0
  79. package/dist/core/audit/auditor.d.ts +43 -0
  80. package/dist/core/audit/auditor.d.ts.map +1 -0
  81. package/dist/core/audit/auditor.js +273 -0
  82. package/dist/core/audit/auditor.js.map +1 -0
  83. package/dist/core/audit/rules.d.ts +37 -0
  84. package/dist/core/audit/rules.d.ts.map +1 -0
  85. package/dist/core/audit/rules.js +223 -0
  86. package/dist/core/audit/rules.js.map +1 -0
  87. package/dist/core/discover/antipatterns.d.ts +24 -0
  88. package/dist/core/discover/antipatterns.d.ts.map +1 -0
  89. package/dist/core/discover/antipatterns.js +354 -0
  90. package/dist/core/discover/antipatterns.js.map +1 -0
  91. package/dist/core/discover/dependencies.d.ts +57 -0
  92. package/dist/core/discover/dependencies.d.ts.map +1 -0
  93. package/dist/core/discover/dependencies.js +311 -0
  94. package/dist/core/discover/dependencies.js.map +1 -0
  95. package/dist/core/discover/patterns.d.ts +38 -0
  96. package/dist/core/discover/patterns.d.ts.map +1 -0
  97. package/dist/core/discover/patterns.js +371 -0
  98. package/dist/core/discover/patterns.js.map +1 -0
  99. package/dist/core/discover/standards.d.ts +58 -0
  100. package/dist/core/discover/standards.d.ts.map +1 -0
  101. package/dist/core/discover/standards.js +359 -0
  102. package/dist/core/discover/standards.js.map +1 -0
  103. package/dist/core/domains/classifier.d.ts +41 -0
  104. package/dist/core/domains/classifier.d.ts.map +1 -0
  105. package/dist/core/domains/classifier.js +208 -0
  106. package/dist/core/domains/classifier.js.map +1 -0
  107. package/dist/core/domains/constants.d.ts +40 -0
  108. package/dist/core/domains/constants.d.ts.map +1 -0
  109. package/dist/core/domains/constants.js +252 -0
  110. package/dist/core/domains/constants.js.map +1 -0
  111. package/dist/core/domains/detector.d.ts +35 -0
  112. package/dist/core/domains/detector.d.ts.map +1 -0
  113. package/dist/core/domains/detector.js +176 -0
  114. package/dist/core/domains/detector.js.map +1 -0
  115. package/dist/core/integrate/integrator.d.ts +35 -0
  116. package/dist/core/integrate/integrator.d.ts.map +1 -0
  117. package/dist/core/integrate/integrator.js +216 -0
  118. package/dist/core/integrate/integrator.js.map +1 -0
  119. package/dist/core/links/checker.d.ts +64 -0
  120. package/dist/core/links/checker.d.ts.map +1 -0
  121. package/dist/core/links/checker.js +190 -0
  122. package/dist/core/links/checker.js.map +1 -0
  123. package/dist/core/links/tracker.d.ts +69 -0
  124. package/dist/core/links/tracker.d.ts.map +1 -0
  125. package/dist/core/links/tracker.js +184 -0
  126. package/dist/core/links/tracker.js.map +1 -0
  127. package/dist/core/maintain/orchestrator.d.ts +39 -0
  128. package/dist/core/maintain/orchestrator.d.ts.map +1 -0
  129. package/dist/core/maintain/orchestrator.js +372 -0
  130. package/dist/core/maintain/orchestrator.js.map +1 -0
  131. package/dist/core/metadata/generator.d.ts +26 -0
  132. package/dist/core/metadata/generator.d.ts.map +1 -0
  133. package/dist/core/metadata/generator.js +221 -0
  134. package/dist/core/metadata/generator.js.map +1 -0
  135. package/dist/core/metadata/schema.d.ts +201 -0
  136. package/dist/core/metadata/schema.d.ts.map +1 -0
  137. package/dist/core/metadata/schema.js +184 -0
  138. package/dist/core/metadata/schema.js.map +1 -0
  139. package/dist/core/metadata/sync.d.ts +36 -0
  140. package/dist/core/metadata/sync.d.ts.map +1 -0
  141. package/dist/core/metadata/sync.js +195 -0
  142. package/dist/core/metadata/sync.js.map +1 -0
  143. package/dist/generators/index-generator.d.ts +19 -0
  144. package/dist/generators/index-generator.d.ts.map +1 -0
  145. package/dist/generators/index-generator.js +191 -0
  146. package/dist/generators/index-generator.js.map +1 -0
  147. package/dist/generators/registry-generator.d.ts +11 -0
  148. package/dist/generators/registry-generator.d.ts.map +1 -0
  149. package/dist/generators/registry-generator.js +156 -0
  150. package/dist/generators/registry-generator.js.map +1 -0
  151. package/dist/generators/scaffold.d.ts +30 -0
  152. package/dist/generators/scaffold.d.ts.map +1 -0
  153. package/dist/generators/scaffold.js +213 -0
  154. package/dist/generators/scaffold.js.map +1 -0
  155. package/dist/generators/templates/document.d.ts +14 -0
  156. package/dist/generators/templates/document.d.ts.map +1 -0
  157. package/dist/generators/templates/document.js +305 -0
  158. package/dist/generators/templates/document.js.map +1 -0
  159. package/dist/generators/templates/domain-index.d.ts +6 -0
  160. package/dist/generators/templates/domain-index.d.ts.map +1 -0
  161. package/dist/generators/templates/domain-index.js +68 -0
  162. package/dist/generators/templates/domain-index.js.map +1 -0
  163. package/dist/generators/templates/domain-registry.d.ts +6 -0
  164. package/dist/generators/templates/domain-registry.d.ts.map +1 -0
  165. package/dist/generators/templates/domain-registry.js +59 -0
  166. package/dist/generators/templates/domain-registry.js.map +1 -0
  167. package/dist/index.d.ts +32 -0
  168. package/dist/index.d.ts.map +1 -0
  169. package/dist/index.js +39 -0
  170. package/dist/index.js.map +1 -0
  171. package/dist/reports/audit-report.d.ts +15 -0
  172. package/dist/reports/audit-report.d.ts.map +1 -0
  173. package/dist/reports/audit-report.js +150 -0
  174. package/dist/reports/audit-report.js.map +1 -0
  175. package/dist/reports/health-report.d.ts +15 -0
  176. package/dist/reports/health-report.d.ts.map +1 -0
  177. package/dist/reports/health-report.js +175 -0
  178. package/dist/reports/health-report.js.map +1 -0
  179. package/dist/reports/link-report.d.ts +15 -0
  180. package/dist/reports/link-report.d.ts.map +1 -0
  181. package/dist/reports/link-report.js +165 -0
  182. package/dist/reports/link-report.js.map +1 -0
  183. package/dist/utils/frontmatter.d.ts +50 -0
  184. package/dist/utils/frontmatter.d.ts.map +1 -0
  185. package/dist/utils/frontmatter.js +93 -0
  186. package/dist/utils/frontmatter.js.map +1 -0
  187. package/dist/utils/glob.d.ts +63 -0
  188. package/dist/utils/glob.d.ts.map +1 -0
  189. package/dist/utils/glob.js +128 -0
  190. package/dist/utils/glob.js.map +1 -0
  191. package/dist/utils/logger.d.ts +42 -0
  192. package/dist/utils/logger.d.ts.map +1 -0
  193. package/dist/utils/logger.js +118 -0
  194. package/dist/utils/logger.js.map +1 -0
  195. package/dist/utils/markdown.d.ts +89 -0
  196. package/dist/utils/markdown.d.ts.map +1 -0
  197. package/dist/utils/markdown.js +192 -0
  198. package/dist/utils/markdown.js.map +1 -0
  199. package/package.json +100 -0
  200. package/templates/claude/CLAUDE.md +204 -0
@@ -0,0 +1,59 @@
1
+ import { formatDate } from '../../core/metadata/generator.js';
2
+ /**
3
+ * Generate initial domain REGISTRY.md content
4
+ */
5
+ export function generateDomainRegistry(domain, def) {
6
+ const now = formatDate(new Date());
7
+ return `---
8
+ title: ${def.name} Registry
9
+ tier: reference
10
+ domains:
11
+ - ${domain}
12
+ status: active
13
+ last_updated: '${now}'
14
+ version: '1.0.0'
15
+ purpose: Quick reference for ${domain} documentation
16
+ ---
17
+
18
+ # ${def.name} Registry
19
+
20
+ > Quick reference for ${def.description.toLowerCase()}.
21
+
22
+ ## At a Glance
23
+
24
+ | Metric | Value |
25
+ |--------|-------|
26
+ | Documents | 0 |
27
+ | Category | ${def.category} |
28
+ | Load Priority | ${def.loadPriority}/10 |
29
+
30
+ ## Quick Links
31
+
32
+ *No documents yet. Add your first document to see it listed here.*
33
+
34
+ ## By Tier
35
+
36
+ | Tier | Count |
37
+ |------|-------|
38
+ | Guide | 0 |
39
+ | Standard | 0 |
40
+ | Example | 0 |
41
+ | Reference | 0 |
42
+ | Admin | 0 |
43
+
44
+ ## Keywords
45
+
46
+ \`${def.keywords.slice(0, 8).join('` `')}\`
47
+
48
+ ## See Also
49
+
50
+ - [Full Index](INDEX.md) - Complete document listing
51
+ - [Root Index](../INDEX.md) - All domains
52
+ - [Root Registry](../REGISTRY.md) - All quick references
53
+
54
+ ---
55
+
56
+ *Last updated: ${now}*
57
+ `;
58
+ }
59
+ //# sourceMappingURL=domain-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-registry.js","sourceRoot":"","sources":["../../../src/generators/templates/domain-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAE9D;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAc,EAAE,GAAqB;IAC1E,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAEnC,OAAO;SACA,GAAG,CAAC,IAAI;;;MAGX,MAAM;;iBAEK,GAAG;;+BAEW,MAAM;;;IAGjC,GAAG,CAAC,IAAI;;wBAEY,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE;;;;;;;eAOtC,GAAG,CAAC,QAAQ;oBACP,GAAG,CAAC,YAAY;;;;;;;;;;;;;;;;;;IAkBhC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;iBAUvB,GAAG;CACnB,CAAC;AACF,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * hit-em-with-the-docs
3
+ *
4
+ * Self-managing documentation system with hierarchical structure,
5
+ * intelligent automation, pattern discovery, and agent orchestration.
6
+ */
7
+ export * from './core/domains/constants.js';
8
+ export * from './core/domains/detector.js';
9
+ export * from './core/domains/classifier.js';
10
+ export * from './core/metadata/schema.js';
11
+ export * from './core/metadata/generator.js';
12
+ export * from './utils/logger.js';
13
+ export * from './utils/glob.js';
14
+ export * from './utils/frontmatter.js';
15
+ export * from './utils/markdown.js';
16
+ export * from './generators/scaffold.js';
17
+ export * from './generators/index-generator.js';
18
+ export * from './generators/registry-generator.js';
19
+ export * from './core/metadata/sync.js';
20
+ export * from './core/links/checker.js';
21
+ export * from './core/links/tracker.js';
22
+ export * from './core/audit/auditor.js';
23
+ export * from './core/integrate/integrator.js';
24
+ export * from './core/maintain/orchestrator.js';
25
+ export * from './core/discover/patterns.js';
26
+ export * from './core/discover/antipatterns.js';
27
+ export * from './core/discover/standards.js';
28
+ export * from './core/discover/dependencies.js';
29
+ export * from './reports/health-report.js';
30
+ export * from './reports/audit-report.js';
31
+ export * from './reports/link-report.js';
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAG7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAG7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AAGnD,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAGhD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAGhD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,39 @@
1
+ /**
2
+ * hit-em-with-the-docs
3
+ *
4
+ * Self-managing documentation system with hierarchical structure,
5
+ * intelligent automation, pattern discovery, and agent orchestration.
6
+ */
7
+ // Core domain system
8
+ export * from './core/domains/constants.js';
9
+ export * from './core/domains/detector.js';
10
+ export * from './core/domains/classifier.js';
11
+ // Metadata system
12
+ export * from './core/metadata/schema.js';
13
+ export * from './core/metadata/generator.js';
14
+ // Utilities
15
+ export * from './utils/logger.js';
16
+ export * from './utils/glob.js';
17
+ export * from './utils/frontmatter.js';
18
+ export * from './utils/markdown.js';
19
+ // Generators
20
+ export * from './generators/scaffold.js';
21
+ export * from './generators/index-generator.js';
22
+ export * from './generators/registry-generator.js';
23
+ // Core automation
24
+ export * from './core/metadata/sync.js';
25
+ export * from './core/links/checker.js';
26
+ export * from './core/links/tracker.js';
27
+ export * from './core/audit/auditor.js';
28
+ export * from './core/integrate/integrator.js';
29
+ export * from './core/maintain/orchestrator.js';
30
+ // Discovery system
31
+ export * from './core/discover/patterns.js';
32
+ export * from './core/discover/antipatterns.js';
33
+ export * from './core/discover/standards.js';
34
+ export * from './core/discover/dependencies.js';
35
+ // Reports
36
+ export * from './reports/health-report.js';
37
+ export * from './reports/audit-report.js';
38
+ export * from './reports/link-report.js';
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qBAAqB;AACrB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAE7C,kBAAkB;AAClB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAE7C,YAAY;AACZ,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AAEpC,aAAa;AACb,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AAEnD,kBAAkB;AAClB,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAEhD,mBAAmB;AACnB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAEhD,UAAU;AACV,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { AuditResult } from '../core/audit/auditor.js';
2
+ export interface AuditReportOptions {
3
+ docsPath: string;
4
+ result: AuditResult;
5
+ format?: 'markdown' | 'json';
6
+ }
7
+ /**
8
+ * Generate an audit report
9
+ */
10
+ export declare function generateAuditReport(options: AuditReportOptions): Promise<string>;
11
+ /**
12
+ * Save audit report to file
13
+ */
14
+ export declare function saveAuditReport(docsPath: string, result: AuditResult, format?: 'markdown' | 'json'): Promise<string>;
15
+ //# sourceMappingURL=audit-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-report.d.ts","sourceRoot":"","sources":["../../src/reports/audit-report.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAQjB;AAmID;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,EACnB,MAAM,GAAE,UAAU,GAAG,MAAmB,GACvC,OAAO,CAAC,MAAM,CAAC,CAgBjB"}
@@ -0,0 +1,150 @@
1
+ import { writeFile, mkdir } from 'fs/promises';
2
+ import { join } from 'path';
3
+ import { pathExists } from '../utils/glob.js';
4
+ import { formatDate } from '../core/metadata/generator.js';
5
+ /**
6
+ * Generate an audit report
7
+ */
8
+ export async function generateAuditReport(options) {
9
+ const { result, format = 'markdown' } = options;
10
+ if (format === 'json') {
11
+ return generateJsonReport(result);
12
+ }
13
+ return generateMarkdownReport(result);
14
+ }
15
+ /**
16
+ * Generate markdown audit report
17
+ */
18
+ function generateMarkdownReport(result) {
19
+ const now = formatDate(new Date());
20
+ const timestamp = new Date().toISOString();
21
+ const errorIssues = result.issues.filter((i) => i.severity === 'error');
22
+ const warningIssues = result.issues.filter((i) => i.severity === 'warning');
23
+ const infoIssues = result.issues.filter((i) => i.severity === 'info');
24
+ let content = `---
25
+ title: Documentation Audit Report
26
+ tier: admin
27
+ domains: [root]
28
+ status: active
29
+ last_updated: '${now}'
30
+ version: '1.0.0'
31
+ ---
32
+
33
+ # Documentation Audit Report
34
+
35
+ **Generated:** ${timestamp}
36
+ **Health Score:** ${result.healthScore.toFixed(1)}/100
37
+
38
+ ## Summary
39
+
40
+ | Metric | Value |
41
+ |--------|-------|
42
+ | Total Files | ${result.totalFiles} |
43
+ | Passed | ${result.passedFiles} |
44
+ | Failed | ${result.failedFiles} |
45
+ | Errors | ${errorIssues.length} |
46
+ | Warnings | ${warningIssues.length} |
47
+ | Info | ${infoIssues.length} |
48
+
49
+ ## Compliance Scores
50
+
51
+ | Category | Score |
52
+ |----------|-------|
53
+ | Metadata Compliance | ${result.stats.metadataCompliance.toFixed(1)}% |
54
+ | Naming Compliance | ${result.stats.namingCompliance.toFixed(1)}% |
55
+ | Placement Compliance | ${result.stats.placementCompliance.toFixed(1)}% |
56
+ | Tag Consistency | ${result.stats.tagConsistency.toFixed(1)}% |
57
+
58
+ `;
59
+ // Domain breakdown
60
+ if (Object.keys(result.stats.byDomain).length > 0) {
61
+ content += `## By Domain
62
+
63
+ | Domain | Files | Issues | Health |
64
+ |--------|-------|--------|--------|
65
+ `;
66
+ for (const [domain, stats] of Object.entries(result.stats.byDomain)) {
67
+ content += `| ${domain} | ${stats.files} | ${stats.issues} | ${stats.healthScore.toFixed(0)}% |\n`;
68
+ }
69
+ content += '\n';
70
+ }
71
+ // Critical Issues
72
+ if (errorIssues.length > 0) {
73
+ content += `## Critical Issues (${errorIssues.length})
74
+
75
+ | File | Rule | Message |
76
+ |------|------|---------|
77
+ `;
78
+ for (const issue of errorIssues) {
79
+ content += `| ${issue.file} | ${issue.rule} | ${issue.message} |\n`;
80
+ }
81
+ content += '\n';
82
+ }
83
+ // Warnings
84
+ if (warningIssues.length > 0) {
85
+ content += `## Warnings (${warningIssues.length})
86
+
87
+ | File | Rule | Message |
88
+ |------|------|---------|
89
+ `;
90
+ for (const issue of warningIssues.slice(0, 20)) {
91
+ content += `| ${issue.file} | ${issue.rule} | ${issue.message} |\n`;
92
+ }
93
+ if (warningIssues.length > 20) {
94
+ content += `\n*...and ${warningIssues.length - 20} more warnings*\n`;
95
+ }
96
+ content += '\n';
97
+ }
98
+ // Fixable Issues
99
+ const fixableIssues = result.issues.filter((i) => i.fixable);
100
+ if (fixableIssues.length > 0) {
101
+ content += `## Fixable Issues
102
+
103
+ ${fixableIssues.length} issues can be auto-fixed. Run:
104
+
105
+ \`\`\`bash
106
+ npx hit-em-with-the-docs maintain --fix
107
+ \`\`\`
108
+
109
+ `;
110
+ }
111
+ content += `---
112
+
113
+ *Generated by hit-em-with-the-docs*
114
+ `;
115
+ return content;
116
+ }
117
+ /**
118
+ * Generate JSON audit report
119
+ */
120
+ function generateJsonReport(result) {
121
+ return JSON.stringify({
122
+ timestamp: new Date().toISOString(),
123
+ healthScore: result.healthScore,
124
+ summary: {
125
+ totalFiles: result.totalFiles,
126
+ passedFiles: result.passedFiles,
127
+ failedFiles: result.failedFiles,
128
+ totalIssues: result.issues.length,
129
+ },
130
+ stats: result.stats,
131
+ issues: result.issues,
132
+ }, null, 2);
133
+ }
134
+ /**
135
+ * Save audit report to file
136
+ */
137
+ export async function saveAuditReport(docsPath, result, format = 'markdown') {
138
+ const reportsDir = join(docsPath, 'reports');
139
+ if (!(await pathExists(reportsDir))) {
140
+ await mkdir(reportsDir, { recursive: true });
141
+ }
142
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
143
+ const ext = format === 'json' ? 'json' : 'md';
144
+ const fileName = `audit-${timestamp}.${ext}`;
145
+ const filePath = join(reportsDir, fileName);
146
+ const content = await generateAuditReport({ docsPath, result, format });
147
+ await writeFile(filePath, content, 'utf-8');
148
+ return filePath;
149
+ }
150
+ //# sourceMappingURL=audit-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-report.js","sourceRoot":"","sources":["../../src/reports/audit-report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { MaintainResult } from '../core/maintain/orchestrator.js';
2
+ export interface HealthReportOptions {
3
+ docsPath: string;
4
+ result: MaintainResult;
5
+ format?: 'markdown' | 'json';
6
+ }
7
+ /**
8
+ * Generate a health report
9
+ */
10
+ export declare function generateHealthReport(options: HealthReportOptions): Promise<string>;
11
+ /**
12
+ * Save health report to file
13
+ */
14
+ export declare function saveHealthReport(docsPath: string, result: MaintainResult, format?: 'markdown' | 'json'): Promise<string>;
15
+ //# sourceMappingURL=health-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-report.d.ts","sourceRoot":"","sources":["../../src/reports/health-report.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAQjB;AA0JD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,EACtB,MAAM,GAAE,UAAU,GAAG,MAAmB,GACvC,OAAO,CAAC,MAAM,CAAC,CAgBjB"}
@@ -0,0 +1,175 @@
1
+ import { writeFile, mkdir } from 'fs/promises';
2
+ import { join } from 'path';
3
+ import { pathExists } from '../utils/glob.js';
4
+ import { formatDate } from '../core/metadata/generator.js';
5
+ /**
6
+ * Generate a health report
7
+ */
8
+ export async function generateHealthReport(options) {
9
+ const { result, format = 'markdown' } = options;
10
+ if (format === 'json') {
11
+ return generateJsonReport(result);
12
+ }
13
+ return generateMarkdownReport(result);
14
+ }
15
+ /**
16
+ * Generate markdown health report
17
+ */
18
+ function generateMarkdownReport(result) {
19
+ const now = formatDate(new Date());
20
+ const timestamp = new Date().toISOString();
21
+ return `---
22
+ title: Documentation Health Report
23
+ tier: admin
24
+ domains: [root]
25
+ status: active
26
+ last_updated: '${now}'
27
+ version: '1.0.0'
28
+ ---
29
+
30
+ # Documentation Health Report
31
+
32
+ **Generated:** ${timestamp}
33
+ **Health Score:** ${result.healthScore.toFixed(1)}/100
34
+
35
+ ## Summary
36
+
37
+ | Metric | Value | Status |
38
+ |--------|-------|--------|
39
+ | Health Score | ${result.healthScore.toFixed(1)}% | ${getStatusEmoji(result.healthScore)} |
40
+ | Domain Health | ${result.domainHealth.healthy ? 'Healthy' : 'Issues'} | ${result.domainHealth.healthy ? '✅' : '⚠️'} |
41
+ | Files Analyzed | ${result.metadataSync?.totalFiles ?? 0} | ℹ️ |
42
+ | Valid Files | ${result.metadataSync?.validFiles ?? 0} | ${getStatusEmoji((result.metadataSync?.validFiles ?? 0) / (result.metadataSync?.totalFiles ?? 1) * 100)} |
43
+ | Broken Links | ${result.linkCheck?.brokenLinks.length ?? 'N/A'} | ${(result.linkCheck?.brokenLinks.length ?? 0) === 0 ? '✅' : '⚠️'} |
44
+
45
+ ## Health Score Breakdown
46
+
47
+ \`\`\`
48
+ Overall Score: ${result.healthScore.toFixed(1)}/100
49
+
50
+ Components:
51
+ ├── Domain Health: ${result.domainHealth.healthy ? '100' : '50'}/100 (weight: 20%)
52
+ ├── Metadata Compliance: ${result.audit?.stats.metadataCompliance.toFixed(1) ?? 'N/A'}/100 (weight: 40%)
53
+ ├── Link Health: ${result.linkCheck ? (100 - result.linkCheck.stats.brokenPercentage).toFixed(1) : 'N/A'}/100 (weight: 20%)
54
+ └── Naming Compliance: ${result.audit?.stats.namingCompliance.toFixed(1) ?? 'N/A'}/100 (weight: 20%)
55
+ \`\`\`
56
+
57
+ ## Recommendations
58
+
59
+ ${generateRecommendations(result)}
60
+
61
+ ---
62
+
63
+ *Generated by hit-em-with-the-docs*
64
+ `;
65
+ }
66
+ /**
67
+ * Generate JSON health report
68
+ */
69
+ function generateJsonReport(result) {
70
+ return JSON.stringify({
71
+ timestamp: new Date().toISOString(),
72
+ healthScore: result.healthScore,
73
+ summary: {
74
+ domainHealth: result.domainHealth.healthy,
75
+ totalFiles: result.metadataSync?.totalFiles ?? 0,
76
+ validFiles: result.metadataSync?.validFiles ?? 0,
77
+ brokenLinks: result.linkCheck?.brokenLinks.length ?? null,
78
+ auditIssues: result.audit?.issues.length ?? 0,
79
+ },
80
+ domainHealth: result.domainHealth,
81
+ metadataSync: result.metadataSync ? {
82
+ totalFiles: result.metadataSync.totalFiles,
83
+ validFiles: result.metadataSync.validFiles,
84
+ fixedFiles: result.metadataSync.fixedFiles,
85
+ avgCompleteness: result.metadataSync.stats.avgCompleteness,
86
+ } : null,
87
+ linkCheck: result.linkCheck ? {
88
+ totalLinks: result.linkCheck.totalLinks,
89
+ brokenLinks: result.linkCheck.brokenLinks.length,
90
+ crossDomainLinks: result.linkCheck.stats.crossDomainLinks,
91
+ } : null,
92
+ audit: result.audit ? {
93
+ passedFiles: result.audit.passedFiles,
94
+ failedFiles: result.audit.failedFiles,
95
+ healthScore: result.audit.healthScore,
96
+ stats: result.audit.stats,
97
+ } : null,
98
+ errors: result.errors,
99
+ }, null, 2);
100
+ }
101
+ /**
102
+ * Get status emoji based on score
103
+ */
104
+ function getStatusEmoji(score) {
105
+ if (score >= 90)
106
+ return '✅';
107
+ if (score >= 70)
108
+ return '🟡';
109
+ if (score >= 50)
110
+ return '⚠️';
111
+ return '❌';
112
+ }
113
+ /**
114
+ * Generate recommendations based on results
115
+ */
116
+ function generateRecommendations(result) {
117
+ const recommendations = [];
118
+ // Domain health recommendations
119
+ if (!result.domainHealth.healthy) {
120
+ if (result.domainHealth.missingDomains.length > 0) {
121
+ recommendations.push(`- **Create missing domain folders:** ${result.domainHealth.missingDomains.join(', ')}`);
122
+ }
123
+ if (result.domainHealth.missingIndexes.length > 0) {
124
+ recommendations.push(`- **Create missing INDEX.md files:** ${result.domainHealth.missingIndexes.join(', ')}`);
125
+ }
126
+ if (result.domainHealth.missingRegistries.length > 0) {
127
+ recommendations.push(`- **Create missing REGISTRY.md files:** ${result.domainHealth.missingRegistries.join(', ')}`);
128
+ }
129
+ }
130
+ // Metadata recommendations
131
+ if (result.metadataSync) {
132
+ const invalidFiles = result.metadataSync.totalFiles - result.metadataSync.validFiles;
133
+ if (invalidFiles > 0) {
134
+ recommendations.push(`- **Fix metadata in ${invalidFiles} files:** Run \`npx hit-em-with-the-docs metadata-sync --fix\``);
135
+ }
136
+ if (result.metadataSync.stats.avgCompleteness < 80) {
137
+ recommendations.push(`- **Improve metadata completeness:** Current average is ${result.metadataSync.stats.avgCompleteness.toFixed(1)}%`);
138
+ }
139
+ }
140
+ // Link recommendations
141
+ if (result.linkCheck && result.linkCheck.brokenLinks.length > 0) {
142
+ recommendations.push(`- **Fix ${result.linkCheck.brokenLinks.length} broken links:** Run \`npx hit-em-with-the-docs link-check --report\` for details`);
143
+ }
144
+ // Audit recommendations
145
+ if (result.audit) {
146
+ const errors = result.audit.issues.filter((i) => i.severity === 'error');
147
+ if (errors.length > 0) {
148
+ recommendations.push(`- **Address ${errors.length} critical audit issues:** Run \`npx hit-em-with-the-docs audit --issues-only\``);
149
+ }
150
+ if (result.audit.stats.namingCompliance < 90) {
151
+ recommendations.push(`- **Improve naming convention compliance:** Rename files to use kebab-case`);
152
+ }
153
+ }
154
+ if (recommendations.length === 0) {
155
+ return '✅ No recommendations - documentation is in great shape!';
156
+ }
157
+ return recommendations.join('\n');
158
+ }
159
+ /**
160
+ * Save health report to file
161
+ */
162
+ export async function saveHealthReport(docsPath, result, format = 'markdown') {
163
+ const reportsDir = join(docsPath, 'reports');
164
+ if (!(await pathExists(reportsDir))) {
165
+ await mkdir(reportsDir, { recursive: true });
166
+ }
167
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
168
+ const ext = format === 'json' ? 'json' : 'md';
169
+ const fileName = `health-${timestamp}.${ext}`;
170
+ const filePath = join(reportsDir, fileName);
171
+ const content = await generateHealthReport({ docsPath, result, format });
172
+ await writeFile(filePath, content, 'utf-8');
173
+ return filePath;
174
+ }
175
+ //# sourceMappingURL=health-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-report.js","sourceRoot":"","sources":["../../src/reports/health-report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { LinkCheckResult } from '../core/links/checker.js';
2
+ export interface LinkReportOptions {
3
+ docsPath: string;
4
+ result: LinkCheckResult;
5
+ format?: 'markdown' | 'json';
6
+ }
7
+ /**
8
+ * Generate a link report
9
+ */
10
+ export declare function generateLinkReport(options: LinkReportOptions): Promise<string>;
11
+ /**
12
+ * Save link report to file
13
+ */
14
+ export declare function saveLinkReport(docsPath: string, result: LinkCheckResult, format?: 'markdown' | 'json'): Promise<string>;
15
+ //# sourceMappingURL=link-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-report.d.ts","sourceRoot":"","sources":["../../src/reports/link-report.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,MAAM,CAAC,CAQjB;AAgJD;;GAEG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,eAAe,EACvB,MAAM,GAAE,UAAU,GAAG,MAAmB,GACvC,OAAO,CAAC,MAAM,CAAC,CAgBjB"}