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,193 @@
1
+ # Claude Code Statusline
2
+
3
+ Clean, modular statusline for Claude Code with TypeScript + Bun.
4
+
5
+ ## Features
6
+
7
+ - 🌿 Git branch with changes (+added -deleted)
8
+ - 💰 Session cost and duration
9
+ - 🧩 Context tokens used
10
+ - 📊 Context percentage (0-100%)
11
+ - ⏱️ Five-hour usage limit with reset time
12
+ - 📅 Weekly usage limit with configurable threshold
13
+ - 📈 Daily usage percentage tracking and statistics
14
+
15
+ ## Structure
16
+
17
+ ```
18
+ src/
19
+ ├── index.ts # Main entry point
20
+ └── lib/
21
+ ├── types.ts # TypeScript interfaces
22
+ ├── git.ts # Git status
23
+ ├── context.ts # Context calculation from transcript
24
+ ├── usage-limits.ts # Claude API usage limits
25
+ └── formatters.ts # Formatting utilities
26
+ ```
27
+
28
+ ## Development
29
+
30
+ ```bash
31
+ # Install dependencies
32
+ bun install
33
+
34
+ # Run the statusline (needs stdin JSON)
35
+ echo '{ ... }' | bun run start
36
+
37
+ # View today's spending
38
+ bun run spend:today
39
+
40
+ # View this month's spending
41
+ bun run spend:month
42
+
43
+ # View usage statistics
44
+ bun run stats
45
+
46
+ # Interactive config demo
47
+ bun run demo
48
+
49
+ # Format code
50
+ bun run format
51
+
52
+ # Lint code
53
+ bun run lint
54
+ ```
55
+
56
+ ## Tracking Features
57
+
58
+ ### Spend Tracking
59
+
60
+ The statusline automatically saves session data to `data/spend.json`. You can view your spending with:
61
+
62
+ ```bash
63
+ # Today's sessions and cost
64
+ bun run spend:today
65
+
66
+ # This month's sessions grouped by date
67
+ bun run spend:month
68
+ ```
69
+
70
+ Each session tracks:
71
+ - Cost (USD)
72
+ - Duration
73
+ - Lines added/removed
74
+ - Working directory
75
+
76
+ ### Usage Statistics
77
+
78
+ Daily usage percentages are automatically tracked in `data/daily-usage.json`. Each 5-hour rate limit period is tracked separately using the `resets_at` timestamp as a unique key.
79
+
80
+ ```bash
81
+ bun run stats
82
+ ```
83
+
84
+ This shows:
85
+ - Average daily usage percentage across all tracked days
86
+ - Total days and total 5-hour periods tracked
87
+ - Recent 7-day usage history with visual bars
88
+ - Per-day statistics: average, max, min across all 5-hour periods
89
+ - Data is kept for 90 days
90
+
91
+ **How it works:**
92
+ - Each `resets_at` value represents a unique 5-hour rate limit period
93
+ - Multiple 5-hour periods can occur in a single day
94
+ - If the API is called multiple times during the same 5-hour period, only the latest value is kept
95
+ - Daily statistics show the average, maximum, and minimum usage across all periods in that day
96
+
97
+ ## Interactive Demo
98
+
99
+ Explore all configuration options with a live preview:
100
+
101
+ ```bash
102
+ bun run demo
103
+ ```
104
+
105
+ This opens an interactive menu where you can:
106
+ - Toggle any config option with arrow keys and spacebar
107
+ - See instant preview of how the statusline changes
108
+ - Navigate through all available settings
109
+ - Reset to defaults with `R`
110
+ - Explore session, limits, weekly usage, and git display options
111
+
112
+ **Controls:**
113
+ - `↑↓` or `j/k` - Navigate options
114
+ - `Space` - Toggle selected option
115
+ - `R` - Reset to defaults
116
+ - `Q` - Quit
117
+
118
+ ## Configuration
119
+
120
+ The statusline can be customized via `statusline.config.ts`. Key configuration options:
121
+
122
+ ### Weekly Usage Display
123
+
124
+ ```typescript
125
+ weeklyUsage: {
126
+ enabled: boolean | "90%", // true: always show, false: never, "90%": show when 5-hour usage >= 90%
127
+ showTimeLeft: boolean,
128
+ percentage: {
129
+ enabled: boolean,
130
+ progressBar: {
131
+ enabled: boolean,
132
+ length: 5 | 10 | 15,
133
+ style: "filled" | "rectangle" | "braille",
134
+ color: "progressive" | "green" | "yellow" | "red"
135
+ }
136
+ }
137
+ }
138
+ ```
139
+
140
+ **Default:** `enabled: "90%"` - Weekly limits appear when your 5-hour usage reaches 90%
141
+
142
+ Display format: `W: ⣿⣿⣧⣀⣀⣀⣀⣀⣀⣀ 45% (6d12h)`
143
+
144
+ ### Other Configuration Options
145
+
146
+ - **Session display**: Cost, tokens, context percentage
147
+ - **Limits display**: Five-hour usage limits
148
+ - **Git display**: Branch, changes, staged/unstaged files
149
+ - **Path display**: Full, truncated, or basename modes
150
+ - **Progress bars**: Multiple styles and color schemes
151
+
152
+ See `statusline.config.ts` for all available options and defaults.
153
+
154
+ ## Usage in Claude Code
155
+
156
+ Update your `~/.claude/settings.json`:
157
+
158
+ ```json
159
+ {
160
+ "statusLine": {
161
+ "type": "command",
162
+ "command": "bun /Users/melvynx/.claude/scripts/statusline/src/index.ts",
163
+ "padding": 0
164
+ }
165
+ }
166
+ ```
167
+
168
+ ## Testing
169
+
170
+ ```bash
171
+ echo '{
172
+ "session_id": "test",
173
+ "transcript_path": "/path/to/transcript.jsonl",
174
+ "cwd": "/path",
175
+ "model": {
176
+ "id": "claude-sonnet-4-5",
177
+ "display_name": "Sonnet 4.5"
178
+ },
179
+ "workspace": {
180
+ "current_dir": "/path",
181
+ "project_dir": "/path"
182
+ },
183
+ "version": "2.0.31",
184
+ "output_style": { "name": "default" },
185
+ "cost": {
186
+ "total_cost_usd": 0.15,
187
+ "total_duration_ms": 300000,
188
+ "total_api_duration_ms": 200000,
189
+ "total_lines_added": 100,
190
+ "total_lines_removed": 50
191
+ }
192
+ }' | bun run start
193
+ ```
@@ -0,0 +1,229 @@
1
+ import { afterAll, beforeAll, describe, expect, it } from "bun:test";
2
+ import { mkdirSync, rmSync, writeFileSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { getContextData, getContextLength } from "../src/lib/context";
5
+
6
+ const TEST_DIR = join(import.meta.dir, "..", "fixtures", "test-transcripts");
7
+
8
+ beforeAll(() => {
9
+ mkdirSync(TEST_DIR, { recursive: true });
10
+ });
11
+
12
+ afterAll(() => {
13
+ rmSync(TEST_DIR, { recursive: true, force: true });
14
+ });
15
+
16
+ function createTranscript(lines: object[]): string {
17
+ return lines.map((l) => JSON.stringify(l)).join("\n");
18
+ }
19
+
20
+ describe("getContextLength", () => {
21
+ it("should return 0 for empty transcript", async () => {
22
+ const path = join(TEST_DIR, "empty.jsonl");
23
+ writeFileSync(path, "");
24
+ expect(await getContextLength(path)).toBe(0);
25
+ });
26
+
27
+ it("should return 0 for transcript with no usage data", async () => {
28
+ const path = join(TEST_DIR, "no-usage.jsonl");
29
+ const content = createTranscript([
30
+ { type: "user", message: { role: "user", content: "hello" } },
31
+ ]);
32
+ writeFileSync(path, content);
33
+ expect(await getContextLength(path)).toBe(0);
34
+ });
35
+
36
+ it("should calculate tokens from most recent entry", async () => {
37
+ const path = join(TEST_DIR, "with-usage.jsonl");
38
+ const content = createTranscript([
39
+ {
40
+ timestamp: "2025-01-01T10:00:00Z",
41
+ message: {
42
+ role: "assistant",
43
+ usage: { input_tokens: 1000, output_tokens: 100 },
44
+ },
45
+ },
46
+ {
47
+ timestamp: "2025-01-01T10:05:00Z",
48
+ message: {
49
+ role: "assistant",
50
+ usage: { input_tokens: 5000, output_tokens: 200 },
51
+ },
52
+ },
53
+ ]);
54
+ writeFileSync(path, content);
55
+ expect(await getContextLength(path)).toBe(5000);
56
+ });
57
+
58
+ it("should include cache tokens in calculation", async () => {
59
+ const path = join(TEST_DIR, "with-cache.jsonl");
60
+ const content = createTranscript([
61
+ {
62
+ timestamp: "2025-01-01T10:00:00Z",
63
+ message: {
64
+ role: "assistant",
65
+ usage: {
66
+ input_tokens: 1000,
67
+ cache_read_input_tokens: 2000,
68
+ cache_creation_input_tokens: 3000,
69
+ output_tokens: 100,
70
+ },
71
+ },
72
+ },
73
+ ]);
74
+ writeFileSync(path, content);
75
+ expect(await getContextLength(path)).toBe(6000);
76
+ });
77
+
78
+ it("should skip sidechain entries", async () => {
79
+ const path = join(TEST_DIR, "with-sidechain.jsonl");
80
+ const content = createTranscript([
81
+ {
82
+ timestamp: "2025-01-01T10:00:00Z",
83
+ message: {
84
+ role: "assistant",
85
+ usage: { input_tokens: 1000, output_tokens: 100 },
86
+ },
87
+ },
88
+ {
89
+ timestamp: "2025-01-01T10:05:00Z",
90
+ isSidechain: true,
91
+ message: {
92
+ role: "assistant",
93
+ usage: { input_tokens: 99999, output_tokens: 200 },
94
+ },
95
+ },
96
+ ]);
97
+ writeFileSync(path, content);
98
+ expect(await getContextLength(path)).toBe(1000);
99
+ });
100
+
101
+ it("should skip API error messages", async () => {
102
+ const path = join(TEST_DIR, "with-error.jsonl");
103
+ const content = createTranscript([
104
+ {
105
+ timestamp: "2025-01-01T10:00:00Z",
106
+ message: {
107
+ role: "assistant",
108
+ usage: { input_tokens: 1000, output_tokens: 100 },
109
+ },
110
+ },
111
+ {
112
+ timestamp: "2025-01-01T10:05:00Z",
113
+ isApiErrorMessage: true,
114
+ message: {
115
+ role: "assistant",
116
+ usage: { input_tokens: 99999, output_tokens: 200 },
117
+ },
118
+ },
119
+ ]);
120
+ writeFileSync(path, content);
121
+ expect(await getContextLength(path)).toBe(1000);
122
+ });
123
+
124
+ it("should return 0 for non-existent file", async () => {
125
+ expect(await getContextLength("/non/existent/path.jsonl")).toBe(0);
126
+ });
127
+ });
128
+
129
+ describe("getContextData", () => {
130
+ it("should return zeros for non-existent file", async () => {
131
+ const result = await getContextData({
132
+ transcriptPath: "/non/existent/path.jsonl",
133
+ maxContextTokens: 200000,
134
+ autocompactBufferTokens: 45000,
135
+ });
136
+ expect(result).toEqual({ tokens: 0, percentage: 0 });
137
+ });
138
+
139
+ it("should calculate percentage correctly", async () => {
140
+ const path = join(TEST_DIR, "percentage.jsonl");
141
+ const content = createTranscript([
142
+ {
143
+ timestamp: "2025-01-01T10:00:00Z",
144
+ message: {
145
+ role: "assistant",
146
+ usage: { input_tokens: 100000, output_tokens: 100 },
147
+ },
148
+ },
149
+ ]);
150
+ writeFileSync(path, content);
151
+
152
+ const result = await getContextData({
153
+ transcriptPath: path,
154
+ maxContextTokens: 200000,
155
+ autocompactBufferTokens: 45000,
156
+ });
157
+
158
+ expect(result.tokens).toBe(100000);
159
+ expect(result.percentage).toBe(50);
160
+ });
161
+
162
+ it("should add autocompact buffer when useUsableContextOnly is true", async () => {
163
+ const path = join(TEST_DIR, "usable.jsonl");
164
+ const content = createTranscript([
165
+ {
166
+ timestamp: "2025-01-01T10:00:00Z",
167
+ message: {
168
+ role: "assistant",
169
+ usage: { input_tokens: 50000, output_tokens: 100 },
170
+ },
171
+ },
172
+ ]);
173
+ writeFileSync(path, content);
174
+
175
+ const result = await getContextData({
176
+ transcriptPath: path,
177
+ maxContextTokens: 200000,
178
+ autocompactBufferTokens: 45000,
179
+ useUsableContextOnly: true,
180
+ });
181
+
182
+ expect(result.tokens).toBe(95000);
183
+ });
184
+
185
+ it("should add overhead tokens", async () => {
186
+ const path = join(TEST_DIR, "overhead.jsonl");
187
+ const content = createTranscript([
188
+ {
189
+ timestamp: "2025-01-01T10:00:00Z",
190
+ message: {
191
+ role: "assistant",
192
+ usage: { input_tokens: 50000, output_tokens: 100 },
193
+ },
194
+ },
195
+ ]);
196
+ writeFileSync(path, content);
197
+
198
+ const result = await getContextData({
199
+ transcriptPath: path,
200
+ maxContextTokens: 200000,
201
+ autocompactBufferTokens: 45000,
202
+ overheadTokens: 20000,
203
+ });
204
+
205
+ expect(result.tokens).toBe(70000);
206
+ });
207
+
208
+ it("should cap percentage at 100", async () => {
209
+ const path = join(TEST_DIR, "over100.jsonl");
210
+ const content = createTranscript([
211
+ {
212
+ timestamp: "2025-01-01T10:00:00Z",
213
+ message: {
214
+ role: "assistant",
215
+ usage: { input_tokens: 250000, output_tokens: 100 },
216
+ },
217
+ },
218
+ ]);
219
+ writeFileSync(path, content);
220
+
221
+ const result = await getContextData({
222
+ transcriptPath: path,
223
+ maxContextTokens: 200000,
224
+ autocompactBufferTokens: 45000,
225
+ });
226
+
227
+ expect(result.percentage).toBe(100);
228
+ });
229
+ });
@@ -0,0 +1,108 @@
1
+ import { describe, expect, it } from "bun:test";
2
+ import {
3
+ formatCost,
4
+ formatDuration,
5
+ formatPath,
6
+ formatResetTime,
7
+ formatTokens,
8
+ } from "../src/lib/formatters";
9
+
10
+ describe("formatPath", () => {
11
+ it("should return basename for basename mode", () => {
12
+ expect(formatPath("/Users/test/project/src/file.ts", "basename")).toBe(
13
+ "file.ts",
14
+ );
15
+ });
16
+
17
+ it("should truncate long paths in truncated mode", () => {
18
+ const result = formatPath("/Users/test/deep/nested/path/file.ts");
19
+ expect(result).toContain("path");
20
+ expect(result).toContain("file.ts");
21
+ });
22
+
23
+ it("should handle Windows-style paths", () => {
24
+ expect(formatPath("C:\\Users\\test\\project\\file.ts", "basename")).toBe(
25
+ "file.ts",
26
+ );
27
+ });
28
+
29
+ it("should handle mixed separators", () => {
30
+ expect(formatPath("/Users/test\\mixed/path", "basename")).toBe("path");
31
+ });
32
+ });
33
+
34
+ describe("formatCost", () => {
35
+ it("should format with 1 decimal by default", () => {
36
+ expect(formatCost(1.234)).toBe("1.2");
37
+ });
38
+
39
+ it("should format as integer when specified", () => {
40
+ expect(formatCost(1.789, "integer")).toBe("2");
41
+ });
42
+
43
+ it("should format with 2 decimals when specified", () => {
44
+ expect(formatCost(1.789, "decimal2")).toBe("1.79");
45
+ });
46
+ });
47
+
48
+ describe("formatTokens", () => {
49
+ it("should format thousands with k suffix", () => {
50
+ const result = formatTokens(5000);
51
+ expect(result).toContain("5.0");
52
+ expect(result).toContain("k");
53
+ });
54
+
55
+ it("should format millions with m suffix", () => {
56
+ const result = formatTokens(1500000);
57
+ expect(result).toContain("1.5");
58
+ expect(result).toContain("m");
59
+ });
60
+
61
+ it("should return raw number for small values", () => {
62
+ const result = formatTokens(500);
63
+ expect(result).toContain("500");
64
+ });
65
+
66
+ it("should hide decimals when showDecimals is false", () => {
67
+ const result = formatTokens(5500, false);
68
+ expect(result).toContain("6");
69
+ });
70
+ });
71
+
72
+ describe("formatDuration", () => {
73
+ it("should format minutes only for short durations", () => {
74
+ expect(formatDuration(300000)).toBe("5m");
75
+ });
76
+
77
+ it("should format hours and minutes for long durations", () => {
78
+ expect(formatDuration(5400000)).toBe("1h 30m");
79
+ });
80
+
81
+ it("should handle zero duration", () => {
82
+ expect(formatDuration(0)).toBe("0m");
83
+ });
84
+ });
85
+
86
+ describe("formatResetTime", () => {
87
+ it("should return 'now' for past times", () => {
88
+ const pastTime = new Date(Date.now() - 60000).toISOString();
89
+ expect(formatResetTime(pastTime)).toBe("now");
90
+ });
91
+
92
+ it("should format future times with hours and minutes", () => {
93
+ const futureTime = new Date(Date.now() + 3700000).toISOString();
94
+ const result = formatResetTime(futureTime);
95
+ expect(result).toContain("h");
96
+ expect(result).toContain("m");
97
+ });
98
+
99
+ it("should format minutes only for short durations", () => {
100
+ const futureTime = new Date(Date.now() + 1800000).toISOString();
101
+ const result = formatResetTime(futureTime);
102
+ expect(result).toMatch(/^\d+m$/);
103
+ });
104
+
105
+ it("should return N/A for invalid dates", () => {
106
+ expect(formatResetTime("invalid-date")).toBe("N/A");
107
+ });
108
+ });