nemonix-cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +186 -0
  3. package/dist/cli.js +6870 -0
  4. package/package.json +48 -0
  5. package/src/config/claude-code-config/.claude/commands/setup-tmux.md +0 -0
  6. package/src/config/claude-code-config/CHANGELOG.md +261 -0
  7. package/src/config/claude-code-config/README.md +1 -0
  8. package/src/config/claude-code-config/agents/action.md +36 -0
  9. package/src/config/claude-code-config/agents/clean-code-runner.md +61 -0
  10. package/src/config/claude-code-config/agents/code-reviewer.md +172 -0
  11. package/src/config/claude-code-config/agents/code-simplifier.md +49 -0
  12. package/src/config/claude-code-config/agents/explore-codebase.md +65 -0
  13. package/src/config/claude-code-config/agents/explore-docs.md +65 -0
  14. package/src/config/claude-code-config/agents/explore-fast.md +22 -0
  15. package/src/config/claude-code-config/agents/implementer.md +181 -0
  16. package/src/config/claude-code-config/agents/snipper.md +36 -0
  17. package/src/config/claude-code-config/agents/websearch.md +42 -0
  18. package/src/config/claude-code-config/commands/prompts/create-vitejs-app.md +272 -0
  19. package/src/config/claude-code-config/commands/prompts/nextjs-add-prisma-db.md +136 -0
  20. package/src/config/claude-code-config/commands/prompts/nextjs-setup-better-auth.md +173 -0
  21. package/src/config/claude-code-config/commands/prompts/nextjs-setup-project.md +200 -0
  22. package/src/config/claude-code-config/commands/prompts/prompt.md +55 -0
  23. package/src/config/claude-code-config/commands/prompts/saas-challenge-idea.md +135 -0
  24. package/src/config/claude-code-config/commands/prompts/saas-create-architecture.md +242 -0
  25. package/src/config/claude-code-config/commands/prompts/saas-create-headline.md +132 -0
  26. package/src/config/claude-code-config/commands/prompts/saas-create-landing-copywritting.md +267 -0
  27. package/src/config/claude-code-config/commands/prompts/saas-create-legals-docs.md +176 -0
  28. package/src/config/claude-code-config/commands/prompts/saas-create-logos.md +240 -0
  29. package/src/config/claude-code-config/commands/prompts/saas-create-prd.md +195 -0
  30. package/src/config/claude-code-config/commands/prompts/saas-create-tasks.md +240 -0
  31. package/src/config/claude-code-config/commands/prompts/saas-define-pricing.md +293 -0
  32. package/src/config/claude-code-config/commands/prompts/saas-find-domain-name.md +190 -0
  33. package/src/config/claude-code-config/commands/prompts/saas-implement-landing-page.md +257 -0
  34. package/src/config/claude-code-config/commands/prompts/setup-tmux.md +160 -0
  35. package/src/config/claude-code-config/commands/prompts/tools.md +148 -0
  36. package/src/config/claude-code-config/hooks/hook-post-file.ts +162 -0
  37. package/src/config/claude-code-config/scripts/.claude/skills/fix-on-my-computer/SKILL.md +81 -0
  38. package/src/config/claude-code-config/scripts/CLAUDE.md +50 -0
  39. package/src/config/claude-code-config/scripts/auto-rename-session/CLAUDE.md +59 -0
  40. package/src/config/claude-code-config/scripts/auto-rename-session/__tests__/shared.test.ts +185 -0
  41. package/src/config/claude-code-config/scripts/auto-rename-session/__tests__/title-generation.test.ts +44 -0
  42. package/src/config/claude-code-config/scripts/auto-rename-session/fixtures/sample-transcript.jsonl +3 -0
  43. package/src/config/claude-code-config/scripts/auto-rename-session/fixtures/transcript-short-message.jsonl +2 -0
  44. package/src/config/claude-code-config/scripts/auto-rename-session/fixtures/transcript-with-title.jsonl +3 -0
  45. package/src/config/claude-code-config/scripts/auto-rename-session/src/index.ts +113 -0
  46. package/src/config/claude-code-config/scripts/auto-rename-session/src/rename-all.ts +148 -0
  47. package/src/config/claude-code-config/scripts/auto-rename-session/src/shared.ts +157 -0
  48. package/src/config/claude-code-config/scripts/auto-rename-session/src/worker.ts +58 -0
  49. package/src/config/claude-code-config/scripts/biome.json +37 -0
  50. package/src/config/claude-code-config/scripts/claude-code-ai/CLAUDE.md +84 -0
  51. package/src/config/claude-code-config/scripts/claude-code-ai/__tests__/claude.test.ts +19 -0
  52. package/src/config/claude-code-config/scripts/claude-code-ai/__tests__/paths.test.ts +68 -0
  53. package/src/config/claude-code-config/scripts/claude-code-ai/claude.ts +56 -0
  54. package/src/config/claude-code-config/scripts/claude-code-ai/cli.ts +46 -0
  55. package/src/config/claude-code-config/scripts/claude-code-ai/helper/credentials.ts +76 -0
  56. package/src/config/claude-code-config/scripts/claude-code-ai/helper/index.ts +9 -0
  57. package/src/config/claude-code-config/scripts/claude-code-ai/helper/paths.ts +51 -0
  58. package/src/config/claude-code-config/scripts/command-validator/CLAUDE.md +112 -0
  59. package/src/config/claude-code-config/scripts/command-validator/README.md +147 -0
  60. package/src/config/claude-code-config/scripts/command-validator/src/__tests__/validator.test.ts +99 -0
  61. package/src/config/claude-code-config/scripts/command-validator/src/cli.ts +121 -0
  62. package/src/config/claude-code-config/scripts/command-validator/src/lib/security-rules.ts +174 -0
  63. package/src/config/claude-code-config/scripts/command-validator/src/lib/types.ts +34 -0
  64. package/src/config/claude-code-config/scripts/command-validator/src/lib/validator.ts +90 -0
  65. package/src/config/claude-code-config/scripts/package.json +43 -0
  66. package/src/config/claude-code-config/scripts/statusline/CLAUDE.md +205 -0
  67. package/src/config/claude-code-config/scripts/statusline/README.md +193 -0
  68. package/src/config/claude-code-config/scripts/statusline/__tests__/context.test.ts +229 -0
  69. package/src/config/claude-code-config/scripts/statusline/__tests__/formatters.test.ts +108 -0
  70. package/src/config/claude-code-config/scripts/statusline/__tests__/statusline.test.ts +309 -0
  71. package/src/config/claude-code-config/scripts/statusline/data/.gitkeep +0 -0
  72. package/src/config/claude-code-config/scripts/statusline/defaults.json +82 -0
  73. package/src/config/claude-code-config/scripts/statusline/docs/ARCHITECTURE.md +166 -0
  74. package/src/config/claude-code-config/scripts/statusline/fixtures/mock-transcript.jsonl +4 -0
  75. package/src/config/claude-code-config/scripts/statusline/fixtures/test-input.json +35 -0
  76. package/src/config/claude-code-config/scripts/statusline/src/analyze-daily-usage.ts +151 -0
  77. package/src/config/claude-code-config/scripts/statusline/src/commands/interactive-config.ts +515 -0
  78. package/src/config/claude-code-config/scripts/statusline/src/debug-payloads.ts +195 -0
  79. package/src/config/claude-code-config/scripts/statusline/src/index.ts +224 -0
  80. package/src/config/claude-code-config/scripts/statusline/src/lib/config-types.ts +110 -0
  81. package/src/config/claude-code-config/scripts/statusline/src/lib/config.ts +21 -0
  82. package/src/config/claude-code-config/scripts/statusline/src/lib/context.ts +103 -0
  83. package/src/config/claude-code-config/scripts/statusline/src/lib/features/limits/commands/weekly-analysis.ts +108 -0
  84. package/src/config/claude-code-config/scripts/statusline/src/lib/features/limits/index.ts +111 -0
  85. package/src/config/claude-code-config/scripts/statusline/src/lib/features/limits/types.ts +15 -0
  86. package/src/config/claude-code-config/scripts/statusline/src/lib/features/spend/commands/migrate-to-sqlite.ts +136 -0
  87. package/src/config/claude-code-config/scripts/statusline/src/lib/features/spend/commands/spend-day.ts +79 -0
  88. package/src/config/claude-code-config/scripts/statusline/src/lib/features/spend/commands/spend-month.ts +66 -0
  89. package/src/config/claude-code-config/scripts/statusline/src/lib/features/spend/commands/spend-project.ts +85 -0
  90. package/src/config/claude-code-config/scripts/statusline/src/lib/features/spend/database.ts +395 -0
  91. package/src/config/claude-code-config/scripts/statusline/src/lib/features/spend/index.ts +178 -0
  92. package/src/config/claude-code-config/scripts/statusline/src/lib/features/spend/payload-logger.ts +161 -0
  93. package/src/config/claude-code-config/scripts/statusline/src/lib/features/spend/types.ts +37 -0
  94. package/src/config/claude-code-config/scripts/statusline/src/lib/formatters.ts +426 -0
  95. package/src/config/claude-code-config/scripts/statusline/src/lib/git.ts +100 -0
  96. package/src/config/claude-code-config/scripts/statusline/src/lib/menu-factories.ts +224 -0
  97. package/src/config/claude-code-config/scripts/statusline/src/lib/presets.ts +177 -0
  98. package/src/config/claude-code-config/scripts/statusline/src/lib/render-pure.ts +516 -0
  99. package/src/config/claude-code-config/scripts/statusline/src/lib/types.ts +36 -0
  100. package/src/config/claude-code-config/scripts/statusline/src/lib/utils.ts +15 -0
  101. package/src/config/claude-code-config/scripts/statusline/src/stats.ts +119 -0
  102. package/src/config/claude-code-config/scripts/statusline/src/tests/spend-v2.test.ts +377 -0
  103. package/src/config/claude-code-config/scripts/statusline/src/tools/fixed-cost-calc.ts +317 -0
  104. package/src/config/claude-code-config/scripts/statusline/statusline.config.free.json +79 -0
  105. package/src/config/claude-code-config/scripts/statusline/statusline.config.json +100 -0
  106. package/src/config/claude-code-config/scripts/statusline/test-with-fixtures.ts +37 -0
  107. package/src/config/claude-code-config/scripts/statusline/test.ts +20 -0
  108. package/src/config/claude-code-config/scripts/statusline/tsconfig.json +27 -0
  109. package/src/config/claude-code-config/scripts/tsconfig.json +27 -0
  110. package/src/config/claude-code-config/settings.json +92 -0
  111. package/src/config/claude-code-config/skills/aibuilder-create-saas/SKILL.md +176 -0
  112. package/src/config/claude-code-config/skills/aibuilder-create-saas/references/architecture-template.md +436 -0
  113. package/src/config/claude-code-config/skills/aibuilder-create-saas/references/challenge-framework.md +289 -0
  114. package/src/config/claude-code-config/skills/aibuilder-create-saas/references/discovery-framework.md +338 -0
  115. package/src/config/claude-code-config/skills/aibuilder-create-saas/references/prd-template.md +452 -0
  116. package/src/config/claude-code-config/skills/aibuilder-create-saas/references/task-template.md +263 -0
  117. package/src/config/claude-code-config/skills/aibuilder-create-saas/references/tools.md +132 -0
  118. package/src/config/claude-code-config/skills/aibuilder-create-saas/scripts/rename-project.sh +42 -0
  119. package/src/config/claude-code-config/skills/aibuilder-create-saas/scripts/setup.sh +104 -0
  120. package/src/config/claude-code-config/skills/aibuilder-create-saas/steps/step-00-init.md +174 -0
  121. package/src/config/claude-code-config/skills/aibuilder-create-saas/steps/step-01-discovery.md +342 -0
  122. package/src/config/claude-code-config/skills/aibuilder-create-saas/steps/step-02-brainstorm.md +230 -0
  123. package/src/config/claude-code-config/skills/aibuilder-create-saas/steps/step-03-validate.md +372 -0
  124. package/src/config/claude-code-config/skills/aibuilder-create-saas/steps/step-04-prd.md +364 -0
  125. package/src/config/claude-code-config/skills/aibuilder-create-saas/steps/step-05-architecture.md +904 -0
  126. package/src/config/claude-code-config/skills/aibuilder-create-saas/steps/step-06-tasks.md +446 -0
  127. package/src/config/claude-code-config/skills/explore/SKILL.md +119 -0
  128. package/src/config/claude-code-config/skills/frontend-design/LICENSE.txt +177 -0
  129. package/src/config/claude-code-config/skills/frontend-design/SKILL.md +42 -0
  130. package/src/config/claude-code-config/skills/git-commit/SKILL.md +42 -0
  131. package/src/config/claude-code-config/skills/git-create-pr/SKILL.md +53 -0
  132. package/src/config/claude-code-config/skills/git-fix-pr-comments/SKILL.md +51 -0
  133. package/src/config/claude-code-config/skills/git-merge/SKILL.md +68 -0
  134. package/src/config/claude-code-config/skills/marketing-copywriting/SKILL.md +72 -0
  135. package/src/config/claude-code-config/skills/meta-claude-memory/SKILL.md +694 -0
  136. package/src/config/claude-code-config/skills/meta-claude-memory/references/comprehensive-example.md +175 -0
  137. package/src/config/claude-code-config/skills/meta-claude-memory/references/project-patterns.md +334 -0
  138. package/src/config/claude-code-config/skills/meta-claude-memory/references/prompting-techniques.md +411 -0
  139. package/src/config/claude-code-config/skills/meta-claude-memory/references/rules-directory-guide.md +298 -0
  140. package/src/config/claude-code-config/skills/meta-claude-memory/references/section-templates.md +347 -0
  141. package/src/config/claude-code-config/skills/meta-hooks-creator/SKILL.md +357 -0
  142. package/src/config/claude-code-config/skills/meta-hooks-creator/references/command-vs-prompt.md +287 -0
  143. package/src/config/claude-code-config/skills/meta-hooks-creator/references/examples.md +689 -0
  144. package/src/config/claude-code-config/skills/meta-hooks-creator/references/hook-types.md +495 -0
  145. package/src/config/claude-code-config/skills/meta-hooks-creator/references/input-output-schemas.md +503 -0
  146. package/src/config/claude-code-config/skills/meta-hooks-creator/references/matchers.md +517 -0
  147. package/src/config/claude-code-config/skills/meta-hooks-creator/references/troubleshooting.md +653 -0
  148. package/src/config/claude-code-config/skills/meta-prompt-creator/SKILL.md +285 -0
  149. package/src/config/claude-code-config/skills/meta-prompt-creator/references/anthropic-best-practices.md +126 -0
  150. package/src/config/claude-code-config/skills/meta-prompt-creator/references/anti-patterns.md +57 -0
  151. package/src/config/claude-code-config/skills/meta-prompt-creator/references/clarity-principles.md +54 -0
  152. package/src/config/claude-code-config/skills/meta-prompt-creator/references/context-management.md +389 -0
  153. package/src/config/claude-code-config/skills/meta-prompt-creator/references/few-shot-patterns.md +47 -0
  154. package/src/config/claude-code-config/skills/meta-prompt-creator/references/openai-best-practices.md +50 -0
  155. package/src/config/claude-code-config/skills/meta-prompt-creator/references/prompt-templates.md +110 -0
  156. package/src/config/claude-code-config/skills/meta-prompt-creator/references/reasoning-techniques.md +52 -0
  157. package/src/config/claude-code-config/skills/meta-prompt-creator/references/system-prompt-patterns.md +48 -0
  158. package/src/config/claude-code-config/skills/meta-prompt-creator/references/xml-structure.md +36 -0
  159. package/src/config/claude-code-config/skills/meta-skill-creator/LICENSE.txt +202 -0
  160. package/src/config/claude-code-config/skills/meta-skill-creator/SKILL.md +421 -0
  161. package/src/config/claude-code-config/skills/meta-skill-creator/package.json +5 -0
  162. package/src/config/claude-code-config/skills/meta-skill-creator/references/output-patterns.md +82 -0
  163. package/src/config/claude-code-config/skills/meta-skill-creator/references/progressive-disclosure-patterns.md +374 -0
  164. package/src/config/claude-code-config/skills/meta-skill-creator/references/prompting-integration.md +363 -0
  165. package/src/config/claude-code-config/skills/meta-skill-creator/references/real-world-examples.md +513 -0
  166. package/src/config/claude-code-config/skills/meta-skill-creator/references/script-patterns.md +385 -0
  167. package/src/config/claude-code-config/skills/meta-skill-creator/references/workflows.md +28 -0
  168. package/src/config/claude-code-config/skills/meta-skill-creator/references/xml-tag-guide.md +606 -0
  169. package/src/config/claude-code-config/skills/meta-skill-creator/scripts/init-skill.ts +214 -0
  170. package/src/config/claude-code-config/skills/meta-skill-creator/scripts/package-skill.ts +146 -0
  171. package/src/config/claude-code-config/skills/meta-skill-creator/scripts/validate.ts +138 -0
  172. package/src/config/claude-code-config/skills/meta-skill-workflow-creator/SKILL.md +390 -0
  173. package/src/config/claude-code-config/skills/meta-skill-workflow-creator/references/ask-patterns.md +225 -0
  174. package/src/config/claude-code-config/skills/meta-skill-workflow-creator/references/prompt-engineering.md +377 -0
  175. package/src/config/claude-code-config/skills/meta-skill-workflow-creator/references/state-management.md +275 -0
  176. package/src/config/claude-code-config/skills/meta-skill-workflow-creator/references/step-template.md +334 -0
  177. package/src/config/claude-code-config/skills/meta-skill-workflow-creator/references/workflow-patterns.md +300 -0
  178. package/src/config/claude-code-config/skills/meta-subagent-creator/SKILL.md +451 -0
  179. package/src/config/claude-code-config/skills/meta-subagent-creator/references/context-management.md +567 -0
  180. package/src/config/claude-code-config/skills/meta-subagent-creator/references/debugging-agents.md +714 -0
  181. package/src/config/claude-code-config/skills/meta-subagent-creator/references/error-handling-and-recovery.md +502 -0
  182. package/src/config/claude-code-config/skills/meta-subagent-creator/references/evaluation-and-testing.md +374 -0
  183. package/src/config/claude-code-config/skills/meta-subagent-creator/references/orchestration-patterns.md +591 -0
  184. package/src/config/claude-code-config/skills/meta-subagent-creator/references/subagents.md +599 -0
  185. package/src/config/claude-code-config/skills/meta-subagent-creator/references/writing-subagent-prompts.md +513 -0
  186. package/src/config/claude-code-config/skills/ralph-loop/SKILL.md +117 -0
  187. package/src/config/claude-code-config/skills/ralph-loop/scripts/setup.sh +278 -0
  188. package/src/config/claude-code-config/skills/ralph-loop/steps/step-00-init.md +215 -0
  189. package/src/config/claude-code-config/skills/ralph-loop/steps/step-01-interactive-prd.md +366 -0
  190. package/src/config/claude-code-config/skills/ralph-loop/steps/step-02-create-stories.md +273 -0
  191. package/src/config/claude-code-config/skills/ralph-loop/steps/step-03-finish.md +245 -0
  192. package/src/config/claude-code-config/skills/ralph-tasks/SKILL.md +88 -0
  193. package/src/config/claude-code-config/skills/ralph-tasks/scripts/add-task.sh +36 -0
  194. package/src/config/claude-code-config/skills/ralph-tasks/scripts/list-tasks.sh +66 -0
  195. package/src/config/claude-code-config/skills/ralph-tasks/scripts/remove-task.sh +47 -0
  196. package/src/config/claude-code-config/skills/ralph-tasks/scripts/setup.sh +201 -0
  197. package/src/config/claude-code-config/skills/ralph-tasks/steps/action-add-search.md +131 -0
  198. package/src/config/claude-code-config/skills/ralph-tasks/steps/action-add.md +46 -0
  199. package/src/config/claude-code-config/skills/ralph-tasks/steps/action-init.md +123 -0
  200. package/src/config/claude-code-config/skills/ralph-tasks/steps/action-list.md +58 -0
  201. package/src/config/claude-code-config/skills/ralph-tasks/steps/action-remove.md +48 -0
  202. package/src/config/claude-code-config/skills/ralph-tasks/steps/action-setup.md +46 -0
  203. package/src/config/claude-code-config/skills/ralph-tasks/steps/action-wake-up.md +62 -0
  204. package/src/config/claude-code-config/skills/utils-fix-errors/SKILL.md +61 -0
  205. package/src/config/claude-code-config/skills/utils-fix-grammar/SKILL.md +59 -0
  206. package/src/config/claude-code-config/skills/utils-oneshot/SKILL.md +56 -0
  207. package/src/config/claude-code-config/skills/utils-refactor/SKILL.md +89 -0
  208. package/src/config/claude-code-config/skills/utils-save-docs/SKILL.md +74 -0
  209. package/src/config/claude-code-config/skills/utils-ultrathink/SKILL.md +42 -0
  210. package/src/config/claude-code-config/skills/workflow-apex/SKILL.md +116 -0
  211. package/src/config/claude-code-config/skills/workflow-apex/scripts/setup-templates.sh +144 -0
  212. package/src/config/claude-code-config/skills/workflow-apex/scripts/update-progress.sh +80 -0
  213. package/src/config/claude-code-config/skills/workflow-apex/steps/step-00-init.md +273 -0
  214. package/src/config/claude-code-config/skills/workflow-apex/steps/step-00b-branch.md +126 -0
  215. package/src/config/claude-code-config/skills/workflow-apex/steps/step-00b-economy.md +244 -0
  216. package/src/config/claude-code-config/skills/workflow-apex/steps/step-00b-interactive.md +165 -0
  217. package/src/config/claude-code-config/skills/workflow-apex/steps/step-00b-save.md +123 -0
  218. package/src/config/claude-code-config/skills/workflow-apex/steps/step-01-analyze.md +361 -0
  219. package/src/config/claude-code-config/skills/workflow-apex/steps/step-02-plan.md +422 -0
  220. package/src/config/claude-code-config/skills/workflow-apex/steps/step-02b-tasks.md +301 -0
  221. package/src/config/claude-code-config/skills/workflow-apex/steps/step-03-execute-teams.md +297 -0
  222. package/src/config/claude-code-config/skills/workflow-apex/steps/step-03-execute.md +239 -0
  223. package/src/config/claude-code-config/skills/workflow-apex/steps/step-04-validate.md +264 -0
  224. package/src/config/claude-code-config/skills/workflow-apex/steps/step-05-examine.md +294 -0
  225. package/src/config/claude-code-config/skills/workflow-apex/steps/step-06-resolve.md +237 -0
  226. package/src/config/claude-code-config/skills/workflow-apex/steps/step-07-tests.md +250 -0
  227. package/src/config/claude-code-config/skills/workflow-apex/steps/step-08-run-tests.md +308 -0
  228. package/src/config/claude-code-config/skills/workflow-apex/steps/step-09-finish.md +193 -0
  229. package/src/config/claude-code-config/skills/workflow-apex/templates/00-context.md +53 -0
  230. package/src/config/claude-code-config/skills/workflow-apex/templates/01-analyze.md +10 -0
  231. package/src/config/claude-code-config/skills/workflow-apex/templates/02-plan.md +10 -0
  232. package/src/config/claude-code-config/skills/workflow-apex/templates/03-execute.md +10 -0
  233. package/src/config/claude-code-config/skills/workflow-apex/templates/04-validate.md +10 -0
  234. package/src/config/claude-code-config/skills/workflow-apex/templates/05-examine.md +10 -0
  235. package/src/config/claude-code-config/skills/workflow-apex/templates/06-resolve.md +10 -0
  236. package/src/config/claude-code-config/skills/workflow-apex/templates/07-tests.md +10 -0
  237. package/src/config/claude-code-config/skills/workflow-apex/templates/08-run-tests.md +10 -0
  238. package/src/config/claude-code-config/skills/workflow-apex/templates/09-finish.md +10 -0
  239. package/src/config/claude-code-config/skills/workflow-apex/templates/README.md +195 -0
  240. package/src/config/claude-code-config/skills/workflow-apex/templates/step-complete.md +7 -0
  241. package/src/config/claude-code-config/skills/workflow-brainstorm/SKILL.md +127 -0
  242. package/src/config/claude-code-config/skills/workflow-brainstorm/steps/step-01-explore.md +230 -0
  243. package/src/config/claude-code-config/skills/workflow-brainstorm/steps/step-02-challenge.md +238 -0
  244. package/src/config/claude-code-config/skills/workflow-brainstorm/steps/step-03-synthesize.md +337 -0
  245. package/src/config/claude-code-config/skills/workflow-brainstorm/steps/step-04-action.md +285 -0
  246. package/src/config/claude-code-config/skills/workflow-ci-fixer/SKILL.md +150 -0
  247. package/src/config/claude-code-config/skills/workflow-ci-fixer/references/cli-commands.md +122 -0
  248. package/src/config/claude-code-config/skills/workflow-ci-fixer/references/github-cli.md +243 -0
  249. package/src/config/claude-code-config/skills/workflow-ci-fixer/references/troubleshooting.md +362 -0
  250. package/src/config/claude-code-config/skills/workflow-ci-fixer/references/vercel-cli.md +192 -0
  251. package/src/config/claude-code-config/skills/workflow-ci-fixer/steps/step-00-init.md +157 -0
  252. package/src/config/claude-code-config/skills/workflow-ci-fixer/steps/step-01-watch-ci.md +192 -0
  253. package/src/config/claude-code-config/skills/workflow-ci-fixer/steps/step-02-analyze-errors.md +263 -0
  254. package/src/config/claude-code-config/skills/workflow-ci-fixer/steps/step-03-fix-locally.md +312 -0
  255. package/src/config/claude-code-config/skills/workflow-ci-fixer/steps/step-04-commit-push.md +206 -0
  256. package/src/config/claude-code-config/skills/workflow-ci-fixer/steps/step-05-cleanup.md +196 -0
  257. package/src/config/claude-code-config/skills/workflow-clean-code/SKILL.md +129 -0
  258. package/src/config/claude-code-config/skills/workflow-clean-code/references/general-clean-code.md +347 -0
  259. package/src/config/claude-code-config/skills/workflow-clean-code/references/nextjs-clean-code.md +458 -0
  260. package/src/config/claude-code-config/skills/workflow-clean-code/references/react-clean-code.md +406 -0
  261. package/src/config/claude-code-config/skills/workflow-clean-code/references/tanstack-query-best-practices.md +516 -0
  262. package/src/config/claude-code-config/skills/workflow-clean-code/references/zustand-best-practices.md +491 -0
  263. package/src/config/claude-code-config/skills/workflow-clean-code/steps/step-01-scan.md +137 -0
  264. package/src/config/claude-code-config/skills/workflow-clean-code/steps/step-02-apply.md +152 -0
  265. package/src/config/claude-code-config/skills/workflow-clean-code/steps/step-03-verify.md +143 -0
  266. package/src/config/claude-code-config/skills/workflow-debug/SKILL.md +126 -0
  267. package/src/config/claude-code-config/skills/workflow-debug/references/log-technique.md +285 -0
  268. package/src/config/claude-code-config/skills/workflow-debug/steps/step-00-init.md +94 -0
  269. package/src/config/claude-code-config/skills/workflow-debug/steps/step-01-analyze.md +180 -0
  270. package/src/config/claude-code-config/skills/workflow-debug/steps/step-01b-log-instrumentation.md +271 -0
  271. package/src/config/claude-code-config/skills/workflow-debug/steps/step-02-find-solutions.md +141 -0
  272. package/src/config/claude-code-config/skills/workflow-debug/steps/step-03-propose.md +142 -0
  273. package/src/config/claude-code-config/skills/workflow-debug/steps/step-04-fix.md +176 -0
  274. package/src/config/claude-code-config/skills/workflow-debug/steps/step-05-verify.md +279 -0
  275. package/src/config/claude-code-config/skills/workflow-review-code/SKILL.md +219 -0
  276. package/src/config/claude-code-config/skills/workflow-review-code/references/clean-code-principles.md +140 -0
  277. package/src/config/claude-code-config/skills/workflow-review-code/references/code-quality-metrics.md +174 -0
  278. package/src/config/claude-code-config/skills/workflow-review-code/references/feedback-patterns.md +149 -0
  279. package/src/config/claude-code-config/skills/workflow-review-code/references/security-checklist.md +127 -0
  280. package/src/config/claude-code-config/song/finish.mp3 +0 -0
  281. package/src/config/claude-code-config/song/need-human.mp3 +0 -0
@@ -0,0 +1,309 @@
1
+ import { describe, expect, it } from "bun:test";
2
+ import { renderStatusline, type StatuslineData } from "../src/index";
3
+ import { defaultConfig, type StatuslineConfig } from "../src/lib/config";
4
+
5
+ function createMockData(
6
+ overrides: Partial<StatuslineData> = {},
7
+ ): StatuslineData {
8
+ return {
9
+ branch: "main",
10
+ dirPath: "~/project",
11
+ modelName: "Sonnet 4.5",
12
+ sessionCost: "0.5",
13
+ sessionDuration: "10m",
14
+ contextTokens: 50000,
15
+ contextPercentage: 25,
16
+ usageLimits: {
17
+ five_hour: { utilization: 30, resets_at: "2025-01-01T15:00:00Z" },
18
+ seven_day: { utilization: 10, resets_at: "2025-01-07T00:00:00Z" },
19
+ },
20
+ periodCost: 1.5,
21
+ todayCost: 2.0,
22
+ ...overrides,
23
+ };
24
+ }
25
+
26
+ function createConfig(
27
+ overrides: Partial<StatuslineConfig> = {},
28
+ ): StatuslineConfig {
29
+ return { ...defaultConfig, ...overrides };
30
+ }
31
+
32
+ describe("renderStatusline", () => {
33
+ describe("basic rendering", () => {
34
+ it("should render branch and directory", () => {
35
+ const data = createMockData();
36
+ const config = createConfig();
37
+ const output = renderStatusline(data, config);
38
+
39
+ expect(output).toContain("main");
40
+ expect(output).toContain("~/project");
41
+ });
42
+
43
+ it("should hide Sonnet model name when showSonnetModel is false", () => {
44
+ const data = createMockData({ modelName: "Sonnet 4.5" });
45
+ const config = createConfig({ showSonnetModel: false });
46
+ const output = renderStatusline(data, config);
47
+
48
+ expect(output).not.toContain("Sonnet");
49
+ });
50
+
51
+ it("should show Sonnet model name when showSonnetModel is true", () => {
52
+ const data = createMockData({ modelName: "Sonnet 4.5" });
53
+ const config = createConfig({ showSonnetModel: true });
54
+ const output = renderStatusline(data, config);
55
+
56
+ expect(output).toContain("Sonnet");
57
+ });
58
+
59
+ it("should always show non-Sonnet models", () => {
60
+ const data = createMockData({ modelName: "Opus 4.5" });
61
+ const config = createConfig({ showSonnetModel: false });
62
+ const output = renderStatusline(data, config);
63
+
64
+ expect(output).toContain("Opus");
65
+ });
66
+ });
67
+
68
+ describe("session info", () => {
69
+ it("should show cost when enabled", () => {
70
+ const data = createMockData({ sessionCost: "1.5" });
71
+ const config = createConfig({
72
+ session: {
73
+ ...defaultConfig.session,
74
+ cost: { enabled: true, format: "decimal1" },
75
+ },
76
+ });
77
+ const output = renderStatusline(data, config);
78
+
79
+ expect(output).toContain("$");
80
+ expect(output).toContain("1.5");
81
+ });
82
+
83
+ it("should hide cost when disabled", () => {
84
+ const data = createMockData({ sessionCost: "1.5" });
85
+ const config = createConfig({
86
+ session: {
87
+ ...defaultConfig.session,
88
+ cost: { enabled: false, format: "decimal1" },
89
+ },
90
+ });
91
+ const output = renderStatusline(data, config);
92
+
93
+ expect(output).toContain("S:");
94
+ });
95
+
96
+ it("should show duration when enabled", () => {
97
+ const data = createMockData({ sessionDuration: "15m" });
98
+ const config = createConfig({
99
+ session: {
100
+ ...defaultConfig.session,
101
+ duration: { enabled: true },
102
+ },
103
+ });
104
+ const output = renderStatusline(data, config);
105
+
106
+ expect(output).toContain("15m");
107
+ });
108
+
109
+ it("should show percentage when enabled", () => {
110
+ const data = createMockData({ contextPercentage: 45 });
111
+ const config = createConfig({
112
+ session: {
113
+ ...defaultConfig.session,
114
+ percentage: {
115
+ enabled: true,
116
+ showValue: true,
117
+ progressBar: {
118
+ ...defaultConfig.session.percentage.progressBar,
119
+ enabled: false,
120
+ },
121
+ },
122
+ },
123
+ });
124
+ const output = renderStatusline(data, config);
125
+
126
+ expect(output).toContain("45");
127
+ expect(output).toContain("%");
128
+ });
129
+ });
130
+
131
+ describe("limits section", () => {
132
+ it("should show limits when enabled", () => {
133
+ const data = createMockData({
134
+ usageLimits: {
135
+ five_hour: { utilization: 50, resets_at: "2025-01-01T15:00:00Z" },
136
+ seven_day: null,
137
+ },
138
+ });
139
+ const config = createConfig({
140
+ limits: {
141
+ ...defaultConfig.limits,
142
+ enabled: true,
143
+ percentage: {
144
+ enabled: true,
145
+ showValue: true,
146
+ progressBar: {
147
+ ...defaultConfig.limits.percentage.progressBar,
148
+ enabled: false,
149
+ },
150
+ },
151
+ },
152
+ });
153
+ const output = renderStatusline(data, config);
154
+
155
+ expect(output).toContain("L:");
156
+ expect(output).toContain("50");
157
+ });
158
+
159
+ it("should hide limits when disabled", () => {
160
+ const data = createMockData();
161
+ const config = createConfig({
162
+ limits: { ...defaultConfig.limits, enabled: false },
163
+ });
164
+ const output = renderStatusline(data, config);
165
+
166
+ expect(output).not.toContain("L:");
167
+ });
168
+
169
+ it("should show reset time when enabled", () => {
170
+ const futureTime = new Date(Date.now() + 3600000).toISOString();
171
+ const data = createMockData({
172
+ usageLimits: {
173
+ five_hour: { utilization: 50, resets_at: futureTime },
174
+ seven_day: null,
175
+ },
176
+ });
177
+ const config = createConfig({
178
+ limits: {
179
+ ...defaultConfig.limits,
180
+ enabled: true,
181
+ showTimeLeft: true,
182
+ },
183
+ });
184
+ const output = renderStatusline(data, config);
185
+
186
+ expect(output).toMatch(/\(\d+[hm]/);
187
+ });
188
+ });
189
+
190
+ describe("weekly usage", () => {
191
+ it("should show weekly when enabled=true", () => {
192
+ const data = createMockData({
193
+ usageLimits: {
194
+ five_hour: { utilization: 30, resets_at: null },
195
+ seven_day: { utilization: 20, resets_at: null },
196
+ },
197
+ });
198
+ const config = createConfig({
199
+ weeklyUsage: {
200
+ ...defaultConfig.weeklyUsage,
201
+ enabled: true,
202
+ percentage: {
203
+ enabled: true,
204
+ showValue: true,
205
+ progressBar: {
206
+ ...defaultConfig.weeklyUsage.percentage.progressBar,
207
+ enabled: false,
208
+ },
209
+ },
210
+ },
211
+ });
212
+ const output = renderStatusline(data, config);
213
+
214
+ expect(output).toContain("W:");
215
+ });
216
+
217
+ it("should show weekly when enabled=90% and five_hour >= 90", () => {
218
+ const data = createMockData({
219
+ usageLimits: {
220
+ five_hour: { utilization: 95, resets_at: null },
221
+ seven_day: { utilization: 20, resets_at: null },
222
+ },
223
+ });
224
+ const config = createConfig({
225
+ weeklyUsage: {
226
+ ...defaultConfig.weeklyUsage,
227
+ enabled: "90%",
228
+ percentage: {
229
+ enabled: true,
230
+ showValue: true,
231
+ progressBar: {
232
+ ...defaultConfig.weeklyUsage.percentage.progressBar,
233
+ enabled: false,
234
+ },
235
+ },
236
+ },
237
+ });
238
+ const output = renderStatusline(data, config);
239
+
240
+ expect(output).toContain("W:");
241
+ });
242
+
243
+ it("should hide weekly when enabled=90% and five_hour < 90", () => {
244
+ const data = createMockData({
245
+ usageLimits: {
246
+ five_hour: { utilization: 50, resets_at: null },
247
+ seven_day: { utilization: 20, resets_at: null },
248
+ },
249
+ });
250
+ const config = createConfig({
251
+ weeklyUsage: { ...defaultConfig.weeklyUsage, enabled: "90%" },
252
+ });
253
+ const output = renderStatusline(data, config);
254
+
255
+ expect(output).not.toContain("W:");
256
+ });
257
+ });
258
+
259
+ describe("daily spend", () => {
260
+ it("should show daily cost when enabled and > 0", () => {
261
+ const data = createMockData({ todayCost: 5.5 });
262
+ const config = createConfig({
263
+ dailySpend: { cost: { enabled: true, format: "decimal1" } },
264
+ });
265
+ const output = renderStatusline(data, config);
266
+
267
+ expect(output).toContain("D:");
268
+ expect(output).toContain("5.5");
269
+ });
270
+
271
+ it("should hide daily cost when todayCost is 0", () => {
272
+ const data = createMockData({ todayCost: 0 });
273
+ const config = createConfig({
274
+ dailySpend: { cost: { enabled: true, format: "decimal1" } },
275
+ });
276
+ const output = renderStatusline(data, config);
277
+
278
+ expect(output).not.toContain("D:");
279
+ });
280
+ });
281
+
282
+ describe("separators", () => {
283
+ it("should use configured separator", () => {
284
+ const data = createMockData();
285
+ const config = createConfig({ separator: "|" });
286
+ const output = renderStatusline(data, config);
287
+
288
+ expect(output).toContain("|");
289
+ });
290
+ });
291
+
292
+ describe("one line vs two lines", () => {
293
+ it("should render on one line when oneLine is true", () => {
294
+ const data = createMockData();
295
+ const config = createConfig({ oneLine: true });
296
+ const output = renderStatusline(data, config);
297
+
298
+ expect(output.split("\n").length).toBe(1);
299
+ });
300
+
301
+ it("should render on two lines when oneLine is false", () => {
302
+ const data = createMockData();
303
+ const config = createConfig({ oneLine: false });
304
+ const output = renderStatusline(data, config);
305
+
306
+ expect(output).toContain("\n");
307
+ });
308
+ });
309
+ });
@@ -0,0 +1,82 @@
1
+ {
2
+ "features": {
3
+ "usageLimits": true,
4
+ "spendTracking": true
5
+ },
6
+ "oneLine": true,
7
+ "showSonnetModel": false,
8
+ "pathDisplayMode": "truncated",
9
+ "git": {
10
+ "enabled": true,
11
+ "showBranch": true,
12
+ "showDirtyIndicator": true,
13
+ "showChanges": false,
14
+ "showStaged": true,
15
+ "showUnstaged": true
16
+ },
17
+ "separator": "•",
18
+ "session": {
19
+ "infoSeparator": null,
20
+ "cost": { "enabled": true, "format": "decimal1" },
21
+ "duration": { "enabled": true },
22
+ "tokens": { "enabled": true, "showMax": false, "showDecimals": false },
23
+ "percentage": {
24
+ "enabled": true,
25
+ "showValue": true,
26
+ "progressBar": {
27
+ "enabled": true,
28
+ "length": 10,
29
+ "style": "braille",
30
+ "color": "progressive",
31
+ "background": "none"
32
+ }
33
+ }
34
+ },
35
+ "context": {
36
+ "usePayloadContextWindow": true,
37
+ "maxContextTokens": 200000,
38
+ "autocompactBufferTokens": 45000,
39
+ "useUsableContextOnly": true,
40
+ "overheadTokens": 0
41
+ },
42
+ "limits": {
43
+ "enabled": true,
44
+ "showTimeLeft": true,
45
+ "showPacingDelta": true,
46
+ "cost": { "enabled": false, "format": "decimal1" },
47
+ "percentage": {
48
+ "enabled": true,
49
+ "showValue": true,
50
+ "progressBar": {
51
+ "enabled": true,
52
+ "length": 10,
53
+ "style": "braille",
54
+ "color": "progressive",
55
+ "background": "none"
56
+ }
57
+ }
58
+ },
59
+ "weeklyUsage": {
60
+ "enabled": "90%",
61
+ "showTimeLeft": true,
62
+ "showPacingDelta": true,
63
+ "cost": { "enabled": false, "format": "decimal1" },
64
+ "percentage": {
65
+ "enabled": true,
66
+ "showValue": true,
67
+ "progressBar": {
68
+ "enabled": true,
69
+ "length": 10,
70
+ "style": "braille",
71
+ "color": "progressive",
72
+ "background": "none"
73
+ }
74
+ }
75
+ },
76
+ "dailySpend": {
77
+ "cost": { "enabled": true, "format": "decimal1" }
78
+ },
79
+ "thinking": {
80
+ "showDisabledWarning": true
81
+ }
82
+ }
@@ -0,0 +1,166 @@
1
+ # Statusline Architecture - Session & Period Tracking
2
+
3
+ ## Concepts Fondamentaux
4
+
5
+ ### Session Claude Code
6
+
7
+ Une **session** est créée chaque fois qu'on ouvre un chat avec Claude Code.
8
+
9
+ Caractéristiques:
10
+ - **ID unique**: `session_id` (UUID)
11
+ - **Coût cumulatif**: Le coût total de la session qui AUGMENTE au fil du temps
12
+ - **Persistance**: Une session peut durer des heures/jours
13
+ - **Commande /clear**: Efface la conversation mais GARDE la même session
14
+ - **Le coût ne reset jamais**: Si une session a coûté $10, puis on fait /clear, le coût reste $10 et continue d'augmenter
15
+
16
+ ```
17
+ Session "abc-123"
18
+ ├── Début: $0
19
+ ├── Après 1h: $5
20
+ ├── /clear (conversation effacée)
21
+ ├── Après 2h: $12 (coût continue d'augmenter)
22
+ ├── Fermeture terminal
23
+ ├── Réouverture (même session)
24
+ └── Après 3h: $18 (toujours cumulatif)
25
+ ```
26
+
27
+ ### Période (5 heures)
28
+
29
+ Une **période** est une fenêtre de 5 heures pour le rate limiting d'Anthropic.
30
+
31
+ Caractéristiques:
32
+ - **resets_at**: Timestamp de fin de période (ex: "2025-12-09T10:00:00.000Z")
33
+ - **Durée fixe**: 5 heures
34
+ - **Indépendant des sessions**: Les sessions peuvent traverser plusieurs périodes
35
+
36
+ ```
37
+ Période A (05:00-10:00) Période B (10:00-15:00)
38
+ ├────────────────────┤ ├────────────────────┤
39
+ Session 1: +$5 Session 1: +$3 (continue)
40
+ Session 2: +$8 Session 3: +$10 (nouvelle)
41
+ ───────────── ─────────────
42
+ Total: $13 Total: $13
43
+ ```
44
+
45
+ ## Le Problème Actuel
46
+
47
+ ### Bug: Double Comptage
48
+
49
+ Quand on calcule le coût d'une période en sommant les coûts totaux des sessions:
50
+
51
+ ```
52
+ Session X: coût total = $24
53
+ Session X: last_resets_at = période actuelle
54
+
55
+ getCurrentPeriodCost() retourne $24 ❌ FAUX!
56
+ ```
57
+
58
+ Mais si la session X avait déjà $10 AVANT cette période:
59
+ - Coût réel de cette période = $24 - $10 = $14
60
+ - On affiche $24 au lieu de $14 = **double comptage**
61
+
62
+ ### Scénario Réel
63
+
64
+ ```
65
+ 1. Période A: Session X coûte $10, on compte $10 ✓
66
+ 2. Période B commence
67
+ 3. Session X continue, coût monte à $24
68
+ 4. On calcule période B: on voit session X = $24
69
+ 5. On affiche $24 pour période B ❌
70
+ 6. Mais on avait déjà compté $10 en période A!
71
+ 7. Total affiché: $10 + $24 = $34
72
+ 8. Total réel: $24
73
+ ```
74
+
75
+ ## Solution: Tracking des Deltas par Session
76
+
77
+ ### Nouvelle Structure de Données
78
+
79
+ On doit tracker pour chaque session:
80
+ - Combien on a DÉJÀ compté
81
+ - Dans quelle période on l'a compté
82
+
83
+ ```sql
84
+ -- Table: sessions
85
+ session_id TEXT PRIMARY KEY
86
+ total_cost REAL -- Coût total actuel de la session
87
+ cwd TEXT
88
+ date TEXT
89
+ duration_ms INTEGER
90
+ lines_added INTEGER
91
+ lines_removed INTEGER
92
+
93
+ -- Table: session_period_tracking
94
+ session_id TEXT
95
+ period_id TEXT -- resets_at normalisé
96
+ counted_cost REAL -- Combien on a compté pour cette période
97
+ last_update INTEGER -- Timestamp
98
+ PRIMARY KEY (session_id, period_id)
99
+
100
+ -- Table: periods
101
+ period_id TEXT PRIMARY KEY -- resets_at normalisé
102
+ total_cost REAL -- Somme des deltas de toutes les sessions
103
+ utilization INTEGER
104
+ date TEXT
105
+ ```
106
+
107
+ ### Algorithme Correct
108
+
109
+ ```
110
+ Quand saveSession(session_id, new_cost, current_period):
111
+ 1. Chercher session dans DB
112
+ 2. Si existe:
113
+ old_cost = session.total_cost
114
+ delta = new_cost - old_cost
115
+ Sinon:
116
+ delta = new_cost
117
+
118
+ 3. Chercher tracking pour (session_id, current_period)
119
+ 4. Si existe:
120
+ // Déjà compté dans cette période, calculer le vrai delta
121
+ already_counted = tracking.counted_cost
122
+ period_delta = delta // Le delta depuis la dernière update
123
+ Sinon:
124
+ // Nouvelle session dans cette période
125
+ period_delta = delta
126
+
127
+ 5. Mettre à jour:
128
+ - session.total_cost = new_cost
129
+ - tracking.counted_cost += period_delta
130
+ - period.total_cost += period_delta
131
+ ```
132
+
133
+ ### Exemple Concret
134
+
135
+ ```
136
+ Session X traverse 2 périodes:
137
+
138
+ Période A:
139
+ - Session X: $0 → $10
140
+ - tracking(X, A).counted_cost = $10
141
+ - period(A).total_cost = $10
142
+
143
+ Période B:
144
+ - Session X: $10 → $24
145
+ - delta = $24 - $10 = $14
146
+ - tracking(X, B).counted_cost = $14
147
+ - period(B).total_cost = $14
148
+
149
+ Calcul période B:
150
+ - On lit period(B).total_cost = $14 ✓ CORRECT!
151
+ ```
152
+
153
+ ## Avantages SQLite
154
+
155
+ 1. **Transactions ACID**: Pas de corruption de données
156
+ 2. **Requêtes complexes**: Agrégations, joins faciles
157
+ 3. **Index**: Performance pour les lookups par session_id
158
+ 4. **Single file**: Toujours portable
159
+ 5. **Intégrité référentielle**: FK entre tables
160
+
161
+ ## Migration
162
+
163
+ 1. Créer nouveau fichier `statusline.db`
164
+ 2. Migrer données existantes de spend.json et daily-usage.json
165
+ 3. Recalculer les period_costs correctement
166
+ 4. Supprimer les anciens fichiers JSON
@@ -0,0 +1,4 @@
1
+ {"parentUuid":null,"isSidechain":false,"userType":"external","cwd":"/Users/melvynx/.claude/scripts/statusline","sessionId":"demo-session","version":"2.0.31","gitBranch":"main","timestamp":"2025-11-11T10:00:00.000Z","message":{"model":"claude-sonnet-4-5-20250929","id":"msg_01","type":"message","role":"user","content":[{"type":"text","text":"Hello"}],"usage":{"input_tokens":1000,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":100}},"uuid":"uuid-1"}
2
+ {"parentUuid":"uuid-1","isSidechain":false,"userType":"external","cwd":"/Users/melvynx/.claude/scripts/statusline","sessionId":"demo-session","version":"2.0.31","gitBranch":"main","timestamp":"2025-11-11T10:05:00.000Z","message":{"model":"claude-sonnet-4-5-20250929","id":"msg_02","type":"message","role":"assistant","content":[{"type":"text","text":"Hi there!"}],"usage":{"input_tokens":50000,"cache_creation_input_tokens":30000,"cache_read_input_tokens":0,"output_tokens":200}},"uuid":"uuid-2"}
3
+ {"parentUuid":"uuid-2","isSidechain":false,"userType":"external","cwd":"/Users/melvynx/.claude/scripts/statusline","sessionId":"demo-session","version":"2.0.31","gitBranch":"main","timestamp":"2025-11-11T10:10:00.000Z","message":{"model":"claude-sonnet-4-5-20250929","id":"msg_03","type":"message","role":"user","content":[{"type":"text","text":"Can you help me?"}],"usage":{"input_tokens":20000,"cache_creation_input_tokens":0,"cache_read_input_tokens":40000,"output_tokens":150}},"uuid":"uuid-3"}
4
+ {"parentUuid":"uuid-3","isSidechain":false,"userType":"external","cwd":"/Users/melvynx/.claude/scripts/statusline","sessionId":"demo-session","version":"2.0.31","gitBranch":"main","timestamp":"2025-11-11T10:15:00.000Z","message":{"model":"claude-sonnet-4-5-20250929","id":"msg_04","type":"message","role":"assistant","content":[{"type":"text","text":"Of course! What do you need?"}],"usage":{"input_tokens":30000,"cache_creation_input_tokens":0,"cache_read_input_tokens":45000,"output_tokens":300}},"uuid":"uuid-4"}
@@ -0,0 +1,35 @@
1
+ {
2
+ "session_id": "06a7b019-03f8-4083-a9db-410d95cb01e6",
3
+ "transcript_path": "/Users/melvynx/.claude/scripts/statusline/fixtures/mock-transcript.jsonl",
4
+ "cwd": "/Users/melvynx/.claude",
5
+ "model": {
6
+ "id": "claude-sonnet-4-5-20250929",
7
+ "display_name": "Sonnet 4.5"
8
+ },
9
+ "workspace": {
10
+ "current_dir": "/Users/melvynx/.claude",
11
+ "project_dir": "/Users/melvynx/.claude"
12
+ },
13
+ "version": "2.0.68",
14
+ "output_style": {
15
+ "name": "default"
16
+ },
17
+ "cost": {
18
+ "total_cost_usd": 0.17468000000000003,
19
+ "total_duration_ms": 385160,
20
+ "total_api_duration_ms": 252694,
21
+ "total_lines_added": 185,
22
+ "total_lines_removed": 75
23
+ },
24
+ "context_window": {
25
+ "total_input_tokens": 136349,
26
+ "total_output_tokens": 21612,
27
+ "context_window_size": 200000,
28
+ "current_usage": {
29
+ "input_tokens": 62500,
30
+ "cache_creation_input_tokens": 0,
31
+ "cache_read_input_tokens": 0
32
+ }
33
+ },
34
+ "exceeds_200k_tokens": false
35
+ }