@codemieai/code 0.1.0 → 0.2.1

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 (426) hide show
  1. package/README.md +30 -6
  2. package/bin/codebase-memory-ui-daemon.js +10 -0
  3. package/bin/codemie-codex.js +18 -0
  4. package/dist/agents/core/AgentCLI.d.ts +1 -0
  5. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  6. package/dist/agents/core/AgentCLI.js +29 -4
  7. package/dist/agents/core/AgentCLI.js.map +1 -1
  8. package/dist/agents/core/session/sync-state-utils.d.ts +11 -0
  9. package/dist/agents/core/session/sync-state-utils.d.ts.map +1 -0
  10. package/dist/agents/core/session/sync-state-utils.js +99 -0
  11. package/dist/agents/core/session/sync-state-utils.js.map +1 -0
  12. package/dist/agents/core/session/types.d.ts +8 -0
  13. package/dist/agents/core/session/types.d.ts.map +1 -1
  14. package/dist/agents/core/session/utils/jsonl-reader.d.ts +8 -0
  15. package/dist/agents/core/session/utils/jsonl-reader.d.ts.map +1 -1
  16. package/dist/agents/core/session/utils/jsonl-reader.js +37 -0
  17. package/dist/agents/core/session/utils/jsonl-reader.js.map +1 -1
  18. package/dist/agents/plugins/claude/claude.plugin.js +1 -1
  19. package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
  20. package/dist/agents/plugins/claude/plugin/hooks/hooks.json +0 -15
  21. package/dist/agents/plugins/claude/plugin/skills/codemie-analytics/SKILL.md +641 -0
  22. package/dist/agents/plugins/claude/plugin/skills/codemie-analytics/references/leaderboard-dashboard-report.md +225 -0
  23. package/dist/agents/plugins/claude/plugin/skills/codemie-analytics/references/people-spending-dashboard-report.md +746 -0
  24. package/dist/agents/plugins/claude/plugin/skills/codemie-analytics/references/people-spending-dashboard-template.html +3270 -0
  25. package/dist/agents/plugins/claude/plugin/skills/codemie-analytics/scripts/analytics-cli.js +893 -0
  26. package/dist/agents/plugins/claude/plugin/skills/codemie-analytics/scripts/inspect-schema.js +211 -0
  27. package/dist/agents/plugins/claude/plugin/skills/codemie-html-report/README.md +39 -0
  28. package/dist/agents/plugins/claude/plugin/skills/codemie-html-report/SKILL.md +117 -26
  29. package/dist/agents/plugins/claude/plugin/skills/codemie-html-report/scripts/inject-css.js +40 -0
  30. package/dist/agents/plugins/claude/plugin/skills/codemie-html-report/scripts/inject-data.js +68 -0
  31. package/dist/agents/plugins/claude/plugin/skills/codemie-html-report/style-guide/css/bundle.css +1 -0
  32. package/dist/agents/plugins/claude/plugin/skills/codemie-sdk/SKILL.md +240 -0
  33. package/dist/agents/plugins/claude/plugin/skills/codemie-sdk/examples/assistants.md +256 -0
  34. package/dist/agents/plugins/claude/plugin/skills/codemie-sdk/examples/categories.md +101 -0
  35. package/dist/agents/plugins/claude/plugin/skills/codemie-sdk/examples/datasources.md +401 -0
  36. package/dist/agents/plugins/claude/plugin/skills/codemie-sdk/examples/integrations.md +242 -0
  37. package/dist/agents/plugins/claude/plugin/skills/codemie-sdk/examples/skills.md +191 -0
  38. package/dist/agents/plugins/claude/plugin/skills/codemie-sdk/examples/users.md +38 -0
  39. package/dist/agents/plugins/claude/plugin/skills/codemie-sdk/examples/workflows.md +151 -0
  40. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts.map +1 -1
  41. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js +2 -0
  42. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -1
  43. package/dist/agents/plugins/codex/codex-message-types.d.ts +80 -0
  44. package/dist/agents/plugins/codex/codex-message-types.d.ts.map +1 -0
  45. package/dist/agents/plugins/codex/codex-message-types.js +36 -0
  46. package/dist/agents/plugins/codex/codex-message-types.js.map +1 -0
  47. package/dist/agents/plugins/codex/codex-models.d.ts +9 -0
  48. package/dist/agents/plugins/codex/codex-models.d.ts.map +1 -0
  49. package/dist/agents/plugins/codex/codex-models.js +227 -0
  50. package/dist/agents/plugins/codex/codex-models.js.map +1 -0
  51. package/dist/agents/plugins/codex/codex.incremental-sync.d.ts +39 -0
  52. package/dist/agents/plugins/codex/codex.incremental-sync.d.ts.map +1 -0
  53. package/dist/agents/plugins/codex/codex.incremental-sync.js +147 -0
  54. package/dist/agents/plugins/codex/codex.incremental-sync.js.map +1 -0
  55. package/dist/agents/plugins/codex/codex.paths.d.ts +29 -0
  56. package/dist/agents/plugins/codex/codex.paths.d.ts.map +1 -0
  57. package/dist/agents/plugins/codex/codex.paths.js +43 -0
  58. package/dist/agents/plugins/codex/codex.paths.js.map +1 -0
  59. package/dist/agents/plugins/codex/codex.plugin.d.ts +80 -0
  60. package/dist/agents/plugins/codex/codex.plugin.d.ts.map +1 -0
  61. package/dist/agents/plugins/codex/codex.plugin.js +474 -0
  62. package/dist/agents/plugins/codex/codex.plugin.js.map +1 -0
  63. package/dist/agents/plugins/codex/codex.reconciliation.d.ts +43 -0
  64. package/dist/agents/plugins/codex/codex.reconciliation.d.ts.map +1 -0
  65. package/dist/agents/plugins/codex/codex.reconciliation.js +141 -0
  66. package/dist/agents/plugins/codex/codex.reconciliation.js.map +1 -0
  67. package/dist/agents/plugins/codex/codex.session.d.ts +58 -0
  68. package/dist/agents/plugins/codex/codex.session.d.ts.map +1 -0
  69. package/dist/agents/plugins/codex/codex.session.js +326 -0
  70. package/dist/agents/plugins/codex/codex.session.js.map +1 -0
  71. package/dist/agents/plugins/codex/codex.storage-utils.d.ts +15 -0
  72. package/dist/agents/plugins/codex/codex.storage-utils.d.ts.map +1 -0
  73. package/dist/agents/plugins/codex/codex.storage-utils.js +19 -0
  74. package/dist/agents/plugins/codex/codex.storage-utils.js.map +1 -0
  75. package/dist/agents/plugins/codex/index.d.ts +7 -0
  76. package/dist/agents/plugins/codex/index.d.ts.map +1 -0
  77. package/dist/agents/plugins/codex/index.js +9 -0
  78. package/dist/agents/plugins/codex/index.js.map +1 -0
  79. package/dist/agents/plugins/codex/session/processors/codex.conversations-processor.d.ts +24 -0
  80. package/dist/agents/plugins/codex/session/processors/codex.conversations-processor.d.ts.map +1 -0
  81. package/dist/agents/plugins/codex/session/processors/codex.conversations-processor.js +613 -0
  82. package/dist/agents/plugins/codex/session/processors/codex.conversations-processor.js.map +1 -0
  83. package/dist/agents/plugins/codex/session/processors/codex.metrics-processor.d.ts +21 -0
  84. package/dist/agents/plugins/codex/session/processors/codex.metrics-processor.d.ts.map +1 -0
  85. package/dist/agents/plugins/codex/session/processors/codex.metrics-processor.js +124 -0
  86. package/dist/agents/plugins/codex/session/processors/codex.metrics-processor.js.map +1 -0
  87. package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.d.ts.map +1 -1
  88. package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.js +1 -0
  89. package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.js.map +1 -1
  90. package/dist/agents/plugins/opencode/opencode.storage-utils.d.ts.map +1 -1
  91. package/dist/agents/plugins/opencode/opencode.storage-utils.js +2 -29
  92. package/dist/agents/plugins/opencode/opencode.storage-utils.js.map +1 -1
  93. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.d.ts.map +1 -1
  94. package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.js.map +1 -1
  95. package/dist/agents/registry.d.ts.map +1 -1
  96. package/dist/agents/registry.js +2 -0
  97. package/dist/agents/registry.js.map +1 -1
  98. package/dist/bin/codebase-memory-ui-daemon.d.ts +2 -0
  99. package/dist/bin/codebase-memory-ui-daemon.d.ts.map +1 -0
  100. package/dist/bin/codebase-memory-ui-daemon.js +141 -0
  101. package/dist/bin/codebase-memory-ui-daemon.js.map +1 -0
  102. package/dist/bin/proxy-daemon.js +4 -0
  103. package/dist/bin/proxy-daemon.js.map +1 -1
  104. package/dist/cli/commands/assistants/constants.js +2 -2
  105. package/dist/cli/commands/assistants/constants.js.map +1 -1
  106. package/dist/cli/commands/assistants/setup/configuration/constants.js +4 -4
  107. package/dist/cli/commands/assistants/setup/configuration/constants.js.map +1 -1
  108. package/dist/cli/commands/assistants/setup/configuration/ui.d.ts.map +1 -1
  109. package/dist/cli/commands/assistants/setup/configuration/ui.js +10 -13
  110. package/dist/cli/commands/assistants/setup/configuration/ui.js.map +1 -1
  111. package/dist/cli/commands/assistants/setup/generators/codex-skill-generator.d.ts +4 -0
  112. package/dist/cli/commands/assistants/setup/generators/codex-skill-generator.d.ts.map +1 -0
  113. package/dist/cli/commands/assistants/setup/generators/codex-skill-generator.js +76 -0
  114. package/dist/cli/commands/assistants/setup/generators/codex-skill-generator.js.map +1 -0
  115. package/dist/cli/commands/assistants/setup/generators/gemini-skill-generator.d.ts +4 -0
  116. package/dist/cli/commands/assistants/setup/generators/gemini-skill-generator.d.ts.map +1 -0
  117. package/dist/cli/commands/assistants/setup/generators/gemini-skill-generator.js +68 -0
  118. package/dist/cli/commands/assistants/setup/generators/gemini-skill-generator.js.map +1 -0
  119. package/dist/cli/commands/assistants/setup/helpers.d.ts +3 -2
  120. package/dist/cli/commands/assistants/setup/helpers.d.ts.map +1 -1
  121. package/dist/cli/commands/assistants/setup/helpers.js +43 -8
  122. package/dist/cli/commands/assistants/setup/helpers.js.map +1 -1
  123. package/dist/cli/commands/assistants/setup/index.d.ts +3 -1
  124. package/dist/cli/commands/assistants/setup/index.d.ts.map +1 -1
  125. package/dist/cli/commands/assistants/setup/index.js +15 -12
  126. package/dist/cli/commands/assistants/setup/index.js.map +1 -1
  127. package/dist/cli/commands/assistants/setup/manualConfiguration/types.d.ts +2 -2
  128. package/dist/cli/commands/assistants/setup/manualConfiguration/ui.js +2 -2
  129. package/dist/cli/commands/assistants/setup/manualConfiguration/ui.js.map +1 -1
  130. package/dist/cli/commands/assistants/setup/selection/ui.d.ts.map +1 -1
  131. package/dist/cli/commands/assistants/setup/selection/ui.js +8 -13
  132. package/dist/cli/commands/assistants/setup/selection/ui.js.map +1 -1
  133. package/dist/cli/commands/assistants/setup/summary/index.d.ts.map +1 -1
  134. package/dist/cli/commands/assistants/setup/summary/index.js +14 -8
  135. package/dist/cli/commands/assistants/setup/summary/index.js.map +1 -1
  136. package/dist/cli/commands/codebase/daemon-manager.d.ts +24 -0
  137. package/dist/cli/commands/codebase/daemon-manager.d.ts.map +1 -0
  138. package/dist/cli/commands/codebase/daemon-manager.js +112 -0
  139. package/dist/cli/commands/codebase/daemon-manager.js.map +1 -0
  140. package/dist/cli/commands/codebase/index.d.ts +3 -0
  141. package/dist/cli/commands/codebase/index.d.ts.map +1 -0
  142. package/dist/cli/commands/codebase/index.js +130 -0
  143. package/dist/cli/commands/codebase/index.js.map +1 -0
  144. package/dist/cli/commands/hook.d.ts.map +1 -1
  145. package/dist/cli/commands/hook.js +15 -2
  146. package/dist/cli/commands/hook.js.map +1 -1
  147. package/dist/cli/commands/install.js +2 -2
  148. package/dist/cli/commands/install.js.map +1 -1
  149. package/dist/cli/commands/profile/display.d.ts.map +1 -1
  150. package/dist/cli/commands/profile/display.js +1 -0
  151. package/dist/cli/commands/profile/display.js.map +1 -1
  152. package/dist/cli/commands/profile/index.d.ts +14 -0
  153. package/dist/cli/commands/profile/index.d.ts.map +1 -1
  154. package/dist/cli/commands/profile/index.js +110 -27
  155. package/dist/cli/commands/profile/index.js.map +1 -1
  156. package/dist/cli/commands/proxy/connectors/desktop-managed-mcp-servers.json +1 -1
  157. package/dist/cli/commands/proxy/connectors/desktop.d.ts +4 -6
  158. package/dist/cli/commands/proxy/connectors/desktop.d.ts.map +1 -1
  159. package/dist/cli/commands/proxy/connectors/desktop.js +112 -25
  160. package/dist/cli/commands/proxy/connectors/desktop.js.map +1 -1
  161. package/dist/cli/commands/proxy/daemon-manager.d.ts +1 -0
  162. package/dist/cli/commands/proxy/daemon-manager.d.ts.map +1 -1
  163. package/dist/cli/commands/proxy/daemon-manager.js +2 -0
  164. package/dist/cli/commands/proxy/daemon-manager.js.map +1 -1
  165. package/dist/cli/commands/proxy/index.d.ts.map +1 -1
  166. package/dist/cli/commands/proxy/index.js +42 -0
  167. package/dist/cli/commands/proxy/index.js.map +1 -1
  168. package/dist/cli/commands/sdk/assistants.d.ts +3 -0
  169. package/dist/cli/commands/sdk/assistants.d.ts.map +1 -0
  170. package/dist/cli/commands/sdk/assistants.js +211 -0
  171. package/dist/cli/commands/sdk/assistants.js.map +1 -0
  172. package/dist/cli/commands/sdk/categories.d.ts +3 -0
  173. package/dist/cli/commands/sdk/categories.d.ts.map +1 -0
  174. package/dist/cli/commands/sdk/categories.js +186 -0
  175. package/dist/cli/commands/sdk/categories.js.map +1 -0
  176. package/dist/cli/commands/sdk/datasources.d.ts +3 -0
  177. package/dist/cli/commands/sdk/datasources.d.ts.map +1 -0
  178. package/dist/cli/commands/sdk/datasources.js +276 -0
  179. package/dist/cli/commands/sdk/datasources.js.map +1 -0
  180. package/dist/cli/commands/sdk/index.d.ts +3 -0
  181. package/dist/cli/commands/sdk/index.d.ts.map +1 -0
  182. package/dist/cli/commands/sdk/index.js +23 -0
  183. package/dist/cli/commands/sdk/index.js.map +1 -0
  184. package/dist/cli/commands/sdk/integrations.d.ts +3 -0
  185. package/dist/cli/commands/sdk/integrations.d.ts.map +1 -0
  186. package/dist/cli/commands/sdk/integrations.js +220 -0
  187. package/dist/cli/commands/sdk/integrations.js.map +1 -0
  188. package/dist/cli/commands/sdk/llm.d.ts +3 -0
  189. package/dist/cli/commands/sdk/llm.d.ts.map +1 -0
  190. package/dist/cli/commands/sdk/llm.js +48 -0
  191. package/dist/cli/commands/sdk/llm.js.map +1 -0
  192. package/dist/cli/commands/sdk/services/assistants.d.ts +13 -0
  193. package/dist/cli/commands/sdk/services/assistants.d.ts.map +1 -0
  194. package/dist/cli/commands/sdk/services/assistants.js +60 -0
  195. package/dist/cli/commands/sdk/services/assistants.js.map +1 -0
  196. package/dist/cli/commands/sdk/services/categories.d.ts +8 -0
  197. package/dist/cli/commands/sdk/services/categories.d.ts.map +1 -0
  198. package/dist/cli/commands/sdk/services/categories.js +19 -0
  199. package/dist/cli/commands/sdk/services/categories.js.map +1 -0
  200. package/dist/cli/commands/sdk/services/datasources.d.ts +33 -0
  201. package/dist/cli/commands/sdk/services/datasources.d.ts.map +1 -0
  202. package/dist/cli/commands/sdk/services/datasources.js +268 -0
  203. package/dist/cli/commands/sdk/services/datasources.js.map +1 -0
  204. package/dist/cli/commands/sdk/services/index.d.ts +6 -0
  205. package/dist/cli/commands/sdk/services/index.d.ts.map +1 -0
  206. package/dist/cli/commands/sdk/services/index.js +6 -0
  207. package/dist/cli/commands/sdk/services/index.js.map +1 -0
  208. package/dist/cli/commands/sdk/services/integrations.d.ts +27 -0
  209. package/dist/cli/commands/sdk/services/integrations.d.ts.map +1 -0
  210. package/dist/cli/commands/sdk/services/integrations.js +59 -0
  211. package/dist/cli/commands/sdk/services/integrations.js.map +1 -0
  212. package/dist/cli/commands/sdk/services/llm.d.ts +4 -0
  213. package/dist/cli/commands/sdk/services/llm.d.ts.map +1 -0
  214. package/dist/cli/commands/sdk/services/llm.js +7 -0
  215. package/dist/cli/commands/sdk/services/llm.js.map +1 -0
  216. package/dist/cli/commands/sdk/services/skills.d.ts +23 -0
  217. package/dist/cli/commands/sdk/services/skills.d.ts.map +1 -0
  218. package/dist/cli/commands/sdk/services/skills.js +69 -0
  219. package/dist/cli/commands/sdk/services/skills.js.map +1 -0
  220. package/dist/cli/commands/sdk/services/users.d.ts +4 -0
  221. package/dist/cli/commands/sdk/services/users.d.ts.map +1 -0
  222. package/dist/cli/commands/sdk/services/users.js +7 -0
  223. package/dist/cli/commands/sdk/services/users.js.map +1 -0
  224. package/dist/cli/commands/sdk/services/workflows.d.ts +7 -0
  225. package/dist/cli/commands/sdk/services/workflows.d.ts.map +1 -0
  226. package/dist/cli/commands/sdk/services/workflows.js +34 -0
  227. package/dist/cli/commands/sdk/services/workflows.js.map +1 -0
  228. package/dist/cli/commands/sdk/skills.d.ts +3 -0
  229. package/dist/cli/commands/sdk/skills.d.ts.map +1 -0
  230. package/dist/cli/commands/sdk/skills.js +492 -0
  231. package/dist/cli/commands/sdk/skills.js.map +1 -0
  232. package/dist/cli/commands/sdk/users.d.ts +3 -0
  233. package/dist/cli/commands/sdk/users.d.ts.map +1 -0
  234. package/dist/cli/commands/sdk/users.js +81 -0
  235. package/dist/cli/commands/sdk/users.js.map +1 -0
  236. package/dist/cli/commands/sdk/utils/cli-utils.d.ts +35 -0
  237. package/dist/cli/commands/sdk/utils/cli-utils.d.ts.map +1 -0
  238. package/dist/cli/commands/sdk/utils/cli-utils.js +110 -0
  239. package/dist/cli/commands/sdk/utils/cli-utils.js.map +1 -0
  240. package/dist/cli/commands/sdk/utils/datasource-types.d.ts +9 -0
  241. package/dist/cli/commands/sdk/utils/datasource-types.d.ts.map +1 -0
  242. package/dist/cli/commands/sdk/utils/datasource-types.js +61 -0
  243. package/dist/cli/commands/sdk/utils/datasource-types.js.map +1 -0
  244. package/dist/cli/commands/sdk/utils/file-utils.d.ts +8 -0
  245. package/dist/cli/commands/sdk/utils/file-utils.d.ts.map +1 -0
  246. package/dist/cli/commands/sdk/utils/file-utils.js +21 -0
  247. package/dist/cli/commands/sdk/utils/file-utils.js.map +1 -0
  248. package/dist/cli/commands/sdk/utils/render.d.ts +82 -0
  249. package/dist/cli/commands/sdk/utils/render.d.ts.map +1 -0
  250. package/dist/cli/commands/sdk/utils/render.js +149 -0
  251. package/dist/cli/commands/sdk/utils/render.js.map +1 -0
  252. package/dist/cli/commands/sdk/workflows.d.ts +3 -0
  253. package/dist/cli/commands/sdk/workflows.d.ts.map +1 -0
  254. package/dist/cli/commands/sdk/workflows.js +170 -0
  255. package/dist/cli/commands/sdk/workflows.js.map +1 -0
  256. package/dist/cli/commands/setup.js +1 -1
  257. package/dist/cli/commands/setup.js.map +1 -1
  258. package/dist/cli/commands/shared/agent-targets.d.ts +10 -0
  259. package/dist/cli/commands/shared/agent-targets.d.ts.map +1 -0
  260. package/dist/cli/commands/shared/agent-targets.js +220 -0
  261. package/dist/cli/commands/shared/agent-targets.js.map +1 -0
  262. package/dist/cli/commands/shared/prompts/storage-scope.d.ts.map +1 -1
  263. package/dist/cli/commands/shared/prompts/storage-scope.js +9 -2
  264. package/dist/cli/commands/shared/prompts/storage-scope.js.map +1 -1
  265. package/dist/cli/commands/shared/selection/ui.d.ts +22 -0
  266. package/dist/cli/commands/shared/selection/ui.d.ts.map +1 -1
  267. package/dist/cli/commands/shared/selection/ui.js +34 -0
  268. package/dist/cli/commands/shared/selection/ui.js.map +1 -1
  269. package/dist/cli/commands/skills/lib/skills-metrics.d.ts.map +1 -1
  270. package/dist/cli/commands/skills/lib/skills-metrics.js +47 -11
  271. package/dist/cli/commands/skills/lib/skills-metrics.js.map +1 -1
  272. package/dist/cli/commands/skills/setup/generators/codex-skill-generator.d.ts +4 -0
  273. package/dist/cli/commands/skills/setup/generators/codex-skill-generator.d.ts.map +1 -0
  274. package/dist/cli/commands/skills/setup/generators/codex-skill-generator.js +51 -0
  275. package/dist/cli/commands/skills/setup/generators/codex-skill-generator.js.map +1 -0
  276. package/dist/cli/commands/skills/setup/generators/gemini-skill-generator.d.ts +4 -0
  277. package/dist/cli/commands/skills/setup/generators/gemini-skill-generator.d.ts.map +1 -0
  278. package/dist/cli/commands/skills/setup/generators/gemini-skill-generator.js +51 -0
  279. package/dist/cli/commands/skills/setup/generators/gemini-skill-generator.js.map +1 -0
  280. package/dist/cli/commands/skills/setup/helpers.d.ts +3 -2
  281. package/dist/cli/commands/skills/setup/helpers.d.ts.map +1 -1
  282. package/dist/cli/commands/skills/setup/helpers.js +31 -6
  283. package/dist/cli/commands/skills/setup/helpers.js.map +1 -1
  284. package/dist/cli/commands/skills/setup/index.d.ts +2 -1
  285. package/dist/cli/commands/skills/setup/index.d.ts.map +1 -1
  286. package/dist/cli/commands/skills/setup/index.js +14 -11
  287. package/dist/cli/commands/skills/setup/index.js.map +1 -1
  288. package/dist/cli/commands/skills/setup/selection/ui.d.ts.map +1 -1
  289. package/dist/cli/commands/skills/setup/selection/ui.js +8 -13
  290. package/dist/cli/commands/skills/setup/selection/ui.js.map +1 -1
  291. package/dist/cli/commands/test-metrics.js +3 -4
  292. package/dist/cli/commands/test-metrics.js.map +1 -1
  293. package/dist/cli/index.js +5 -0
  294. package/dist/cli/index.js.map +1 -1
  295. package/dist/env/types.d.ts +2 -0
  296. package/dist/env/types.d.ts.map +1 -1
  297. package/dist/env/types.js.map +1 -1
  298. package/dist/frameworks/plugins/bmad.plugin.d.ts +10 -1
  299. package/dist/frameworks/plugins/bmad.plugin.d.ts.map +1 -1
  300. package/dist/frameworks/plugins/bmad.plugin.js +108 -9
  301. package/dist/frameworks/plugins/bmad.plugin.js.map +1 -1
  302. package/dist/frameworks/plugins/codebase-memory.plugin.d.ts +18 -0
  303. package/dist/frameworks/plugins/codebase-memory.plugin.d.ts.map +1 -0
  304. package/dist/frameworks/plugins/codebase-memory.plugin.js +131 -0
  305. package/dist/frameworks/plugins/codebase-memory.plugin.js.map +1 -0
  306. package/dist/frameworks/plugins/index.d.ts +1 -0
  307. package/dist/frameworks/plugins/index.d.ts.map +1 -1
  308. package/dist/frameworks/plugins/index.js +3 -0
  309. package/dist/frameworks/plugins/index.js.map +1 -1
  310. package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.d.ts +1 -1
  311. package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js +4 -4
  312. package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js.map +1 -1
  313. package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.d.ts +20 -0
  314. package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.d.ts.map +1 -0
  315. package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.js +104 -0
  316. package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.js.map +1 -0
  317. package/dist/providers/plugins/sso/proxy/plugins/gateway-key.plugin.d.ts.map +1 -1
  318. package/dist/providers/plugins/sso/proxy/plugins/gateway-key.plugin.js +24 -3
  319. package/dist/providers/plugins/sso/proxy/plugins/gateway-key.plugin.js.map +1 -1
  320. package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js +5 -0
  321. package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js.map +1 -1
  322. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +3 -1
  323. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
  324. package/dist/providers/plugins/sso/proxy/plugins/index.js +5 -1
  325. package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
  326. package/dist/providers/plugins/sso/proxy/plugins/logging.plugin.js +10 -3
  327. package/dist/providers/plugins/sso/proxy/plugins/logging.plugin.js.map +1 -1
  328. package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.d.ts.map +1 -1
  329. package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.js +26 -8
  330. package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.js.map +1 -1
  331. package/dist/providers/plugins/sso/proxy/sso.proxy.d.ts.map +1 -1
  332. package/dist/providers/plugins/sso/proxy/sso.proxy.js +21 -4
  333. package/dist/providers/plugins/sso/proxy/sso.proxy.js.map +1 -1
  334. package/dist/providers/plugins/sso/session/SessionSyncer.d.ts.map +1 -1
  335. package/dist/providers/plugins/sso/session/SessionSyncer.js +5 -72
  336. package/dist/providers/plugins/sso/session/SessionSyncer.js.map +1 -1
  337. package/dist/providers/plugins/sso/session/processors/conversations/apiClient.d.ts +1 -1
  338. package/dist/providers/plugins/sso/session/processors/conversations/apiClient.d.ts.map +1 -1
  339. package/dist/providers/plugins/sso/session/processors/conversations/apiClient.js +95 -4
  340. package/dist/providers/plugins/sso/session/processors/conversations/apiClient.js.map +1 -1
  341. package/dist/providers/plugins/sso/session/processors/conversations/constants.d.ts +2 -2
  342. package/dist/providers/plugins/sso/session/processors/conversations/constants.d.ts.map +1 -1
  343. package/dist/providers/plugins/sso/session/processors/conversations/constants.js +2 -2
  344. package/dist/providers/plugins/sso/session/processors/conversations/constants.js.map +1 -1
  345. package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.d.ts.map +1 -1
  346. package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.js +85 -21
  347. package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.js.map +1 -1
  348. package/dist/providers/plugins/sso/session/processors/conversations/types.d.ts +10 -2
  349. package/dist/providers/plugins/sso/session/processors/conversations/types.d.ts.map +1 -1
  350. package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.d.ts +1 -1
  351. package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.d.ts.map +1 -1
  352. package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js +80 -46
  353. package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js.map +1 -1
  354. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.d.ts +1 -9
  355. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.d.ts.map +1 -1
  356. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.js +94 -30
  357. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.js.map +1 -1
  358. package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.d.ts +4 -6
  359. package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.d.ts.map +1 -1
  360. package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.js +24 -25
  361. package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.js.map +1 -1
  362. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.d.ts.map +1 -1
  363. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js +140 -99
  364. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js.map +1 -1
  365. package/dist/providers/plugins/sso/session/processors/metrics/metrics-types.d.ts +11 -3
  366. package/dist/providers/plugins/sso/session/processors/metrics/metrics-types.d.ts.map +1 -1
  367. package/dist/providers/plugins/sso/sso.auth.d.ts.map +1 -1
  368. package/dist/providers/plugins/sso/sso.auth.js +22 -4
  369. package/dist/providers/plugins/sso/sso.auth.js.map +1 -1
  370. package/dist/providers/plugins/sso/sso.setup-steps.js +2 -2
  371. package/dist/providers/plugins/sso/sso.setup-steps.js.map +1 -1
  372. package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.d.ts.map +1 -1
  373. package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.js +4 -1
  374. package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.js.map +1 -1
  375. package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts.map +1 -1
  376. package/dist/telemetry/runtime/DesktopTelemetryRuntime.js +1 -3
  377. package/dist/telemetry/runtime/DesktopTelemetryRuntime.js.map +1 -1
  378. package/dist/utils/browser.d.ts +7 -0
  379. package/dist/utils/browser.d.ts.map +1 -0
  380. package/dist/utils/browser.js +10 -0
  381. package/dist/utils/browser.js.map +1 -0
  382. package/dist/utils/config.d.ts.map +1 -1
  383. package/dist/utils/config.js +7 -1
  384. package/dist/utils/config.js.map +1 -1
  385. package/dist/utils/paths.d.ts +8 -0
  386. package/dist/utils/paths.d.ts.map +1 -1
  387. package/dist/utils/paths.js +15 -0
  388. package/dist/utils/paths.js.map +1 -1
  389. package/package.json +2 -1
  390. package/scripts/compare-codex-conversations.mjs +894 -0
  391. package/scripts/validate-secrets.js +7 -3
  392. package/dist/agents/plugins/claude/plugin/claude-templates/README.md +0 -539
  393. package/dist/agents/plugins/claude/plugin/claude-templates/templates/CLAUDE.md.template +0 -252
  394. package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/code-review-agent-template.md.template +0 -433
  395. package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/refactor-cleaner-agent.md.template +0 -337
  396. package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/solution-architect-agent.md.template +0 -197
  397. package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/unit-tester-agent.md.template +0 -258
  398. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/api/api-patterns.md.template +0 -179
  399. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/architecture.md.template +0 -197
  400. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/data/database-patterns.md.template +0 -248
  401. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/development/development-practices.md.template +0 -298
  402. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/integration/external-integrations.md.template +0 -160
  403. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/security/security-practices.md.template +0 -295
  404. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/standards/code-quality.md.template +0 -186
  405. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/standards/git-workflow.md.template +0 -177
  406. package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/testing/testing-patterns.md.template +0 -315
  407. package/dist/agents/plugins/claude/plugin/commands/codemie-init.md +0 -522
  408. package/dist/agents/plugins/claude/plugin/commands/handoff.md +0 -56
  409. package/dist/agents/plugins/claude/plugin/commands/memory-refresh.md +0 -549
  410. package/dist/agents/plugins/claude/plugin/scripts/bash/rtk-baseline.sh +0 -39
  411. package/dist/agents/plugins/claude/plugin/scripts/bash/rtk-rewrite.sh +0 -101
  412. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/SKILL.md +0 -206
  413. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-agent.md +0 -45
  414. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-claude-md-snippet.md +0 -40
  415. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-command.md +0 -30
  416. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-hooks.json +0 -23
  417. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-skill.md +0 -48
  418. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-agent.md +0 -145
  419. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-claude-md-snippet.md +0 -126
  420. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-command.md +0 -170
  421. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-hooks.json +0 -46
  422. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-skill.md +0 -144
  423. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/sample-report.md +0 -223
  424. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/references/best-practices.md +0 -510
  425. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/references/component-checklists.md +0 -413
  426. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/scripts/scan-repo.sh +0 -162
@@ -0,0 +1,225 @@
1
+ # Leaderboard Dashboard HTML Report — Reference
2
+
3
+ > **Purpose**: This document describes the canonical leaderboard HTML report built for
4
+ > CodeMie AI/Run analytics. Use it as a template spec when generating new leaderboard
5
+ > dashboards so all reports are consistent in structure, components, and UX.
6
+
7
+ ---
8
+
9
+ ## Overview
10
+
11
+ The leaderboard report is a **self-contained single-file HTML dashboard** that combines
12
+ leaderboard ranking data (from the analytics API) with EPAM profile data (from OneHub).
13
+ It is dark-themed by default, uses the CodeMie design system (inlined CSS), and Chart.js
14
+ for all visualisations.
15
+
16
+ **Key properties:**
17
+ - No external CSS dependencies (all 8 CodeMie CSS files inlined in `<style>`)
18
+ - Google Fonts (`Inter`, `JetBrains Mono`) loaded via `@import`
19
+ - Chart.js 4.4.0 loaded via CDN (`https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js`)
20
+ - All data stored in a `PEOPLE` JavaScript array — no runtime API calls
21
+ - Fully portable: open directly in any browser
22
+
23
+ ---
24
+
25
+ ## Data Sources
26
+
27
+ | Source | How fetched | What it provides |
28
+ |--------|------------|------------------|
29
+ | Analytics API | `leaderboard-top <N> --pretty` via `analytics-cli.js` | Rank, score, tier, D1–D6 dimension scores |
30
+ | Analytics API | `leaderboard-summary --pretty` | KPI totals (champion count, top score, tier breakdown) |
31
+ | EPAM OneHub | `epam-peopleassignments-finder` agent (parallel batches of 5) | Job title, department, location, active projects, skills |
32
+
33
+ ---
34
+
35
+ ## Page Structure
36
+
37
+ ```
38
+ <header> — Dashboard title + tier summary badges
39
+ <info-bar> — Alert banner explaining the scoring model
40
+ <stat-grid> — 5 KPI cards (champions tracked, top score, avg score, countries, avg D5)
41
+ <card> — Leaderboard Rankings card
42
+ <tabs> — Rankings Table / Score Chart / Dimension Analysis / Geography
43
+ [Tab 1] Rankings Table — sortable table with inline dimension bars + EPAM data
44
+ [Tab 2] Score Chart — horizontal bar chart of all 15 scores
45
+ [Tab 3] Dimension Analysis — radar chart (group avg) + dimension summary bars
46
+ [Tab 4] Geography — location pie chart + primary skill pie chart + geo list
47
+ <section> — Talent Distribution (location pie + skill pie side by side)
48
+ <modal> — User detail modal (opens on row click)
49
+ ```
50
+
51
+ ---
52
+
53
+ ## Components Used (CodeMie Design System)
54
+
55
+ | Component | Class(es) | Usage |
56
+ |-----------|-----------|-------|
57
+ | Stat cards | `.stat-grid` / `.stat-card` | KPI tiles at the top |
58
+ | Card | `.card` / `.card-header` / `.card-body` | Main leaderboard container |
59
+ | Tabs | `.tabs` / `.tabs-list` / `.tab-item` / `.tabs-panel` | Four views inside the card |
60
+ | Table | `.table` | Rankings table |
61
+ | Badges (tier) | `.tier-pioneer` / `.tier-expert` | Tier labels (custom classes, styled inline) |
62
+ | Rank badge | `.rank-badge .rank-1/2/3/rank-other` | Numbered rank circles |
63
+ | Avatar | `.avatar .avatar-color-N` | User initials, 21 colour variants |
64
+ | Tags | `.tag` / `.tag-sm` / `.tag-blue` | Project codes and skill labels |
65
+ | Alert | `.alert .alert-info` | Scoring model info banner |
66
+ | Modal overlay | `.modal-overlay` | Backdrop for user detail modal |
67
+ | Pagination | `.pagination` / `.page-btn` | (added if list > one page) |
68
+
69
+ ---
70
+
71
+ ## Charts
72
+
73
+ ### 1. Score Bar Chart (Tab 2 — "Score Chart")
74
+ - **Type**: Horizontal bar (`Chart.js` — `bar`, `indexAxis: 'y'`)
75
+ - **Data**: Each person's `score` value (0–100)
76
+ - **Colours**: Pioneer bars use purple (`#C084FC`); Expert bars use blue (`#2297F6`)
77
+ - **Canvas**: `id="scoreBarChart"`
78
+ - **Lazy init**: Initialised only when the tab is first activated (`window._scoreChartInit` flag)
79
+
80
+ ### 2. Radar Chart — Group Averages (Tab 3 — "Dimension Analysis")
81
+ - **Type**: Radar (`Chart.js` — `radar`)
82
+ - **Data**: Average D1–D6 scores across all 15 people
83
+ - **Labels**: `D1 Platform Use`, `D2 Platform Create`, `D3 Workflow Use`, `D4 Workflow Create`, `D5 CLI & Agentic`, `D6 Impact`
84
+ - **Canvas**: `id="radarChart"`
85
+ - **Lazy init**: `window._radarInit` flag
86
+
87
+ ### 3. Location Pie Chart (Tab 4 + Talent Distribution section)
88
+ - **Type**: Doughnut (`Chart.js` — `doughnut`)
89
+ - **Data**: Grouped count of people per location country
90
+ - **Canvas**: `id="locationPieChart"`
91
+ - **Legend**: Custom HTML legend `id="location-legend"` rendered beside the chart
92
+ - **Lazy init**: `window._locationPieInit` flag
93
+
94
+ ### 4. Primary Skill Pie Chart (Tab 4 + Talent Distribution section)
95
+ - **Type**: Doughnut (`Chart.js` — `doughnut`)
96
+ - **Data**: First skill of each person, normalised via `primarySkill()`:
97
+ - `SET.Java` → `Java`
98
+ - `Python.Core` → `Python`
99
+ - `Support.Users` → `User Support`
100
+ - `Software Development Management` → `Mgmt`
101
+ - **Canvas**: `id="skillPieChart"`
102
+ - **Legend**: Custom HTML legend `id="skill-legend"`
103
+ - **Lazy init**: `window._skillPieInit` flag
104
+
105
+ ### 5. Modal Radar Chart (User detail modal)
106
+ - **Type**: Radar (`Chart.js` — `radar`)
107
+ - **Data**: Individual person's D1–D6 scores vs group average (two datasets)
108
+ - **Canvas**: `id="modal-radar-canvas"`
109
+ - **Lifecycle**: Destroyed on modal close (`_modalRadar.destroy()`), recreated on each open to avoid canvas reuse errors
110
+ - **Colours**: Pioneer → `#C084FC` (purple), Expert → `#2297F6` (blue)
111
+
112
+ ---
113
+
114
+ ## User Detail Modal
115
+
116
+ Opens when any table row is clicked. Closes on Escape, close button click, or overlay click.
117
+
118
+ **Layout:**
119
+
120
+ ```
121
+ [modal-hero] — Gradient header (purple tint = pioneer, blue tint = expert)
122
+ [avatar 88px] — Initials, colour from PEOPLE.color index
123
+ [name + title] — Full name, job title, rank badge, tier badge
124
+ [score block] — Champion score in large numerals (glassmorphism card)
125
+ [close btn] — Absolute top-right, frosted glass style
126
+
127
+ [info-tiles] — 3-column grid: Location · Department · Active Projects
128
+
129
+ [modal-body two-col]
130
+ Left column:
131
+ [Dimension Breakdown] — 6 rows, each: colour dot · label · weight% · bar · pct%
132
+ CSS grid: 14px 1fr 36px 1fr 44px
133
+ Right column:
134
+ [Performance Radar] — 240px canvas, person vs group avg
135
+ [Skills] — tag chips for all skills
136
+ [EPAM Projects] — blue tag chips for project codes
137
+ ```
138
+
139
+ **Key element IDs:**
140
+
141
+ | ID | Content |
142
+ |----|---------|
143
+ | `modal-hero-bg` | Hero div — background gradient set by JS |
144
+ | `modal-avatar` | Avatar div — initials + inline background colour |
145
+ | `modal-name` | Person's full name |
146
+ | `modal-subtitle` | Job title |
147
+ | `modal-rank-badge` | Rank badge HTML |
148
+ | `modal-tier-badge` | Tier badge HTML |
149
+ | `modal-score-val` | Score number (`color` set by tier) |
150
+ | `modal-location` | Location tag chip |
151
+ | `modal-dept` | Department text |
152
+ | `modal-projects-tile` | First 2 project chips in info tile |
153
+ | `modal-dim-bars` | Dimension breakdown rows (injected by JS) |
154
+ | `modal-radar-canvas` | Radar chart canvas |
155
+ | `modal-skills` | Skill tags |
156
+ | `modal-projects` | Full project tag list |
157
+
158
+ ---
159
+
160
+ ## PEOPLE Data Array
161
+
162
+ Each entry in the `PEOPLE` array merges leaderboard + EPAM data:
163
+
164
+ ```javascript
165
+ {
166
+ rank: Number, // 1–N
167
+ name: String, // Full display name
168
+ initials: String, // 2-letter initials for avatar
169
+ color: Number, // 0–20, maps to avatar colour palette
170
+ score: Number, // Total champion score (e.g. 81.22)
171
+ tier: String, // "pioneer" | "expert" | "advanced" | "practitioner" | "newcomer"
172
+ d1: Number, // Core Platform Usage score (0–1)
173
+ d2: Number, // Core Platform Creation score (0–1)
174
+ d3: Number, // Workflow Usage score (0–1)
175
+ d4: Number, // Workflow Creation score (0–1)
176
+ d5: Number, // CLI & Agentic Engineering score (0–1)
177
+ d6: Number, // Impact & Knowledge score (0–1)
178
+ title: String, // EPAM job title
179
+ dept: String, // EPAM department / unit name
180
+ location: String, // Country from EPAM profile
181
+ projects: String[], // EPAM active project codes
182
+ skills: String[] // EPAM primary skills list
183
+ }
184
+ ```
185
+
186
+ ---
187
+
188
+ ## Scoring Dimensions Reference
189
+
190
+ | ID | Label | Weight | Description |
191
+ |----|-------|--------|-------------|
192
+ | D1 | Core Platform Usage | 20% | Conversations, assistant interactions |
193
+ | D2 | Core Platform Creation | 20% | Assistants, datasources created |
194
+ | D3 | Workflow Usage | 10% | Workflow executions |
195
+ | D4 | Workflow Creation | 10% | Workflows authored |
196
+ | D5 | CLI & Agentic Engineering | 30% | Coding agent sessions, tokens, repos |
197
+ | D6 | Impact & Knowledge | 10% | Marketplace publishing, knowledge sharing |
198
+
199
+ **Tier thresholds:** Pioneer ≥ 80 · Expert ≥ 65 · Advanced ≥ 45 · Practitioner ≥ 25 · Newcomer < 25
200
+
201
+ ---
202
+
203
+ ## Replication Checklist
204
+
205
+ When building a new leaderboard dashboard for a different user or time period:
206
+
207
+ 1. Run `leaderboard-top <N>` + `leaderboard-summary` + `leaderboard-tiers` + `leaderboard-dimensions`
208
+ 2. For each person, call `epam-peopleassignments-finder` in parallel batches of 5
209
+ 3. Merge leaderboard scores with EPAM profile data into `PEOPLE` array
210
+ 4. Inline all 8 CodeMie CSS files (or link `style-guide.css` if available)
211
+ 5. Include Chart.js 4.4.0 CDN script
212
+ 6. Build tabs: Rankings Table · Score Chart · Dimension Analysis · Geography
213
+ 7. Add user-detail modal with hero header + info tiles + dim bars + radar + skills
214
+ 8. Save to `reports/<descriptive-name>.html`
215
+
216
+ ---
217
+
218
+ ## File Location Convention
219
+
220
+ ```
221
+ reports/
222
+ ├── leaderboard-top15-<date>.html ← top-N snapshot
223
+ ├── leaderboard-<season>.html ← e.g. leaderboard-2026-Q1.html
224
+ └── leaderboard-monthly-<YYYY-MM>.html
225
+ ```