reprompt-cli 1.4.1__tar.gz → 1.5.0__tar.gz

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 (251) hide show
  1. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/CHANGELOG.md +88 -0
  2. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/CLAUDE.md +2 -2
  3. reprompt_cli-1.5.0/PKG-INFO +201 -0
  4. reprompt_cli-1.5.0/README.md +156 -0
  5. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/docs/roadmap.md +22 -7
  6. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/pyproject.toml +1 -1
  7. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/__init__.py +1 -1
  8. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/cli.py +64 -90
  9. reprompt_cli-1.5.0/src/reprompt/core/dashboard.py +150 -0
  10. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/distill.py +66 -5
  11. reprompt_cli-1.5.0/src/reprompt/core/session_type.py +112 -0
  12. reprompt_cli-1.5.0/src/reprompt/output/dashboard_terminal.py +103 -0
  13. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/distill_terminal.py +4 -1
  14. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/storage/db.py +29 -0
  15. reprompt_cli-1.5.0/tests/test_cli_deprecations.py +140 -0
  16. reprompt_cli-1.5.0/tests/test_cli_library_effectiveness.py +44 -0
  17. reprompt_cli-1.5.0/tests/test_dashboard.py +423 -0
  18. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_db.py +39 -0
  19. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_distill.py +105 -0
  20. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_distill_cli.py +81 -0
  21. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_e2e.py +4 -19
  22. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_recommend.py +3 -5
  23. reprompt_cli-1.5.0/tests/test_session_type.py +184 -0
  24. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_trends_cli.py +6 -21
  25. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/uv.lock +1 -1
  26. reprompt_cli-1.4.1/PKG-INFO +0 -143
  27. reprompt_cli-1.4.1/README.md +0 -98
  28. reprompt_cli-1.4.1/tests/test_cli_library_effectiveness.py +0 -87
  29. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.editorconfig +0 -0
  30. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  31. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  32. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  33. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  34. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  35. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.github/dependabot.yml +0 -0
  36. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.github/workflows/ci.yml +0 -0
  37. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.github/workflows/publish.yml +0 -0
  38. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.gitignore +0 -0
  39. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.pre-commit-config.yaml +0 -0
  40. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.testmondata +0 -0
  41. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/CODE_OF_CONDUCT.md +0 -0
  42. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/CONTRIBUTING.md +0 -0
  43. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/LICENSE +0 -0
  44. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/SECURITY.md +0 -0
  45. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/action.yml +0 -0
  46. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/docs/launch-post.md +0 -0
  47. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/docs/superpowers/specs/2026-03-11-html-dashboard-design.md +0 -0
  48. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/docs/superpowers/specs/2026-03-11-merge-view-design.md +0 -0
  49. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/docs/superpowers/specs/2026-03-11-prompt-templates-design.md +0 -0
  50. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/docs/superpowers/specs/2026-03-22-prompt-compress-design.md +0 -0
  51. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/docs/superpowers/specs/2026-03-23-distill-design.md +0 -0
  52. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/docs/superpowers/specs/2026-03-23-v131-suggestions-source-design.md +0 -0
  53. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/docs/superpowers/specs/2026-03-24-v14-context-recovery-design.md +0 -0
  54. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/docs/superpowers/specs/2026-03-24-v141-polish-design.md +0 -0
  55. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/module.yaml +0 -0
  56. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/scripts/generate_demo_data.py +0 -0
  57. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/scripts/launch/hn_monitor.py +0 -0
  58. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/scripts/launch/reddit_helper.py +0 -0
  59. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/__init__.py +0 -0
  60. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/aider.py +0 -0
  61. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/base.py +0 -0
  62. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/chatgpt.py +0 -0
  63. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/claude_chat.py +0 -0
  64. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/claude_code.py +0 -0
  65. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/cline.py +0 -0
  66. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/cursor.py +0 -0
  67. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/filters.py +0 -0
  68. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/gemini.py +0 -0
  69. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/openclaw.py +0 -0
  70. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/bridge/__init__.py +0 -0
  71. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/bridge/handler.py +0 -0
  72. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/bridge/host.py +0 -0
  73. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/bridge/manifest.py +0 -0
  74. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/bridge/protocol.py +0 -0
  75. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/commands/__init__.py +0 -0
  76. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/commands/telemetry.py +0 -0
  77. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/commands/wrapped.py +0 -0
  78. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/config.py +0 -0
  79. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/__init__.py +0 -0
  80. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/analyzer.py +0 -0
  81. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/compress.py +0 -0
  82. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/conversation.py +0 -0
  83. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/dedup.py +0 -0
  84. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/digest.py +0 -0
  85. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/effectiveness.py +0 -0
  86. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/extractors.py +0 -0
  87. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/extractors_zh.py +0 -0
  88. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/insights.py +0 -0
  89. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/lang_detect.py +0 -0
  90. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/library.py +0 -0
  91. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/lint.py +0 -0
  92. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/merge_view.py +0 -0
  93. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/models.py +0 -0
  94. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/persona.py +0 -0
  95. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/pipeline.py +0 -0
  96. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/privacy.py +0 -0
  97. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/prompt_dna.py +0 -0
  98. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/recommend.py +0 -0
  99. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/scorer.py +0 -0
  100. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/segmenter.py +0 -0
  101. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/session_meta.py +0 -0
  102. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/style.py +0 -0
  103. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/suggestions.py +0 -0
  104. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/templates.py +0 -0
  105. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/timeutil.py +0 -0
  106. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/trends.py +0 -0
  107. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/wrapped.py +0 -0
  108. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/demo.py +0 -0
  109. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/embeddings/__init__.py +0 -0
  110. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/embeddings/base.py +0 -0
  111. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/embeddings/local_embed.py +0 -0
  112. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/embeddings/ollama.py +0 -0
  113. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/embeddings/openai_embed.py +0 -0
  114. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/embeddings/tfidf.py +0 -0
  115. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/mcp.py +0 -0
  116. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/mcp_main.py +0 -0
  117. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/__init__.py +0 -0
  118. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/chartjs.min.js +0 -0
  119. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/compress_terminal.py +0 -0
  120. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/export.py +0 -0
  121. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/html_report.py +0 -0
  122. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/json_out.py +0 -0
  123. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/markdown.py +0 -0
  124. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/terminal.py +0 -0
  125. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/wrapped_html.py +0 -0
  126. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/wrapped_terminal.py +0 -0
  127. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/py.typed +0 -0
  128. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/sharing/__init__.py +0 -0
  129. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/sharing/client.py +0 -0
  130. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/sharing/clipboard.py +0 -0
  131. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/storage/__init__.py +0 -0
  132. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/telemetry/__init__.py +0 -0
  133. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/telemetry/collector.py +0 -0
  134. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/telemetry/consent.py +0 -0
  135. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/telemetry/events.py +0 -0
  136. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/telemetry/prompt.py +0 -0
  137. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/telemetry/queue.py +0 -0
  138. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/telemetry/sender.py +0 -0
  139. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/__init__.py +0 -0
  140. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/conftest.py +0 -0
  141. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/fixtures/aider_chat_history.md +0 -0
  142. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/fixtures/chatgpt_conversations.json +0 -0
  143. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/fixtures/claude_chat_export.json +0 -0
  144. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/fixtures/claude_session.jsonl +0 -0
  145. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/fixtures/cline_task/api_conversation_history.json +0 -0
  146. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/fixtures/export/default_export.md +0 -0
  147. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/fixtures/export/full_export.md +0 -0
  148. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/fixtures/gemini_session.json +0 -0
  149. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/fixtures/openclaw_session.jsonl +0 -0
  150. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_adapter_aider.py +0 -0
  151. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_adapter_chatgpt.py +0 -0
  152. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_adapter_claude.py +0 -0
  153. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_adapter_claude_chat.py +0 -0
  154. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_adapter_cline.py +0 -0
  155. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_adapter_gemini.py +0 -0
  156. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_adapter_openclaw.py +0 -0
  157. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_analyzer.py +0 -0
  158. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_bridge_cli.py +0 -0
  159. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_bridge_handler.py +0 -0
  160. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_bridge_integration.py +0 -0
  161. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_bridge_manifest.py +0 -0
  162. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_bridge_protocol.py +0 -0
  163. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_cli.py +0 -0
  164. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_clipboard.py +0 -0
  165. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_compare_best_worst.py +0 -0
  166. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_compress.py +0 -0
  167. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_compress_cli.py +0 -0
  168. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_compress_dna.py +0 -0
  169. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_compress_html.py +0 -0
  170. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_compress_insights.py +0 -0
  171. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_config.py +0 -0
  172. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_conversation.py +0 -0
  173. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_coverage_boost.py +0 -0
  174. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_cursor_adapter.py +0 -0
  175. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_db_digest.py +0 -0
  176. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_db_effectiveness.py +0 -0
  177. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_db_trends.py +0 -0
  178. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_dedup.py +0 -0
  179. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_demo.py +0 -0
  180. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_deprecated_commands.py +0 -0
  181. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_digest.py +0 -0
  182. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_digest_cli.py +0 -0
  183. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_distill_weights.py +0 -0
  184. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_effectiveness.py +0 -0
  185. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_embeddings_local.py +0 -0
  186. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_embeddings_ollama.py +0 -0
  187. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_embeddings_openai.py +0 -0
  188. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_empty_state.py +0 -0
  189. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_export.py +0 -0
  190. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_export_cli.py +0 -0
  191. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_export_snapshot.py +0 -0
  192. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_extractors.py +0 -0
  193. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_extractors_routing.py +0 -0
  194. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_extractors_zh.py +0 -0
  195. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_extractors_zh_e2e.py +0 -0
  196. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_html_report.py +0 -0
  197. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_import_cli.py +0 -0
  198. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_import_e2e.py +0 -0
  199. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_insights.py +0 -0
  200. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_insights_cli.py +0 -0
  201. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_insights_expanded.py +0 -0
  202. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_install_hook.py +0 -0
  203. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_lang_detect.py +0 -0
  204. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_library.py +0 -0
  205. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_lint.py +0 -0
  206. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_lint_cli.py +0 -0
  207. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_markdown.py +0 -0
  208. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_mcp.py +0 -0
  209. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_merge_view.py +0 -0
  210. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_models.py +0 -0
  211. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_output.py +0 -0
  212. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_parse_conversation_base.py +0 -0
  213. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_parse_conversation_chatgpt.py +0 -0
  214. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_parse_conversation_claude.py +0 -0
  215. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_persona.py +0 -0
  216. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_pipeline.py +0 -0
  217. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_privacy.py +0 -0
  218. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_privacy_cli.py +0 -0
  219. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_privacy_e2e.py +0 -0
  220. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_privacy_output.py +0 -0
  221. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_prompt_dna.py +0 -0
  222. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_public_api.py +0 -0
  223. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_schema_version.py +0 -0
  224. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_score_cli.py +0 -0
  225. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_scorer.py +0 -0
  226. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_segmenter.py +0 -0
  227. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_share_e2e.py +0 -0
  228. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_sharing_client.py +0 -0
  229. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_source_filter.py +0 -0
  230. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_style.py +0 -0
  231. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_style_trends.py +0 -0
  232. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_suggestions.py +0 -0
  233. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_telemetry_cli.py +0 -0
  234. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_telemetry_collector.py +0 -0
  235. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_telemetry_consent.py +0 -0
  236. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_telemetry_e2e.py +0 -0
  237. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_telemetry_events.py +0 -0
  238. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_telemetry_prompt.py +0 -0
  239. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_telemetry_queue.py +0 -0
  240. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_telemetry_sender.py +0 -0
  241. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_template_cli.py +0 -0
  242. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_templates.py +0 -0
  243. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_timeutil.py +0 -0
  244. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_trends.py +0 -0
  245. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_use_cli.py +0 -0
  246. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_wrapped.py +0 -0
  247. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_wrapped_cli.py +0 -0
  248. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_wrapped_e2e.py +0 -0
  249. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_wrapped_html.py +0 -0
  250. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_wrapped_output.py +0 -0
  251. {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_wrapped_share.py +0 -0
@@ -2,6 +2,94 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [1.5.0] - 2026-03-25
6
+
7
+ ### Added
8
+ - **Instant dashboard** — bare `reprompt` now shows a health overview: total prompts, sessions, avg score, top categories, recent activity. Zero-state guides new users; data-state gives at-a-glance intelligence
9
+ - **Session type detection** — `distill` auto-classifies sessions (debugging, feature-dev, exploration, refactoring, config, learning) and adapts signal weights per type
10
+ - **Hook suggestion throttle** — `reprompt scan` suggests `install-hook` only once, not every run
11
+
12
+ ### Changed
13
+ - **Command consolidation (23 → 20)** — deprecated `library`, `recommend`, `trends` as standalone commands; functionality absorbed into `report --smart` and `style --trends` flags
14
+ - **Signal quality improvements** — reduced false positives in position, length, and error_recovery signals for more accurate distillation
15
+ - Tests: 1350 → 1397
16
+
17
+ ### Deprecated
18
+ - `reprompt library` → use `reprompt report --smart`
19
+ - `reprompt recommend` → use `reprompt insights`
20
+ - `reprompt trends` → use `reprompt style --trends`
21
+
22
+ ## [1.4.1] - 2026-03-25
23
+
24
+ ### Added
25
+ - **`compare --best-worst`** — auto-selects your highest and lowest scoring prompts from the database for instant comparison
26
+ - **`style --trends`** — period-over-period style fingerprint comparison showing how your prompting patterns evolve
27
+
28
+ ## [1.4.0] - 2026-03-24
29
+
30
+ ### Added
31
+ - **Context recovery** — `distill --export` generates a markdown summary of conversation context, ready to paste into a new session when context is lost
32
+ - **`--full` mode** — exports all turns (not just important ones) for complete session records
33
+ - **`--show-weights` / `--weights`** — transparent signal weighting so you can see and tune how importance is scored
34
+ - **Template sub-app** — `reprompt template save|list|use` for managing reusable prompts
35
+ - **Enhanced insights** — effectiveness scoring and similar prompt suggestions
36
+
37
+ ### Changed
38
+ - **Command consolidation (27 → 23)** — deprecated `save`, `templates`, `use`, `effectiveness`, `merge-view` in favor of unified `template` and `insights` commands
39
+ - Tests: 1250 → 1350
40
+
41
+ ### Deprecated
42
+ - `reprompt save` → use `reprompt template save`
43
+ - `reprompt templates` → use `reprompt template list`
44
+ - `reprompt use` → use `reprompt template use`
45
+ - `reprompt effectiveness` → folded into `reprompt insights`
46
+ - `reprompt merge-view` → use `reprompt report --smart`
47
+
48
+ ## [1.3.1] - 2026-03-23
49
+
50
+ ### Added
51
+ - **Actionable suggestions** — 5 core commands now show contextual "→ Try:" hints guiding users to the next useful command
52
+ - **`--source` consistency** — all data commands support `--source` filtering
53
+
54
+ ### Fixed
55
+ - System-injected XML prompts (starting with `<`) filtered from distillation input
56
+
57
+ ## [1.3.0] - 2026-03-23
58
+
59
+ ### Added
60
+ - **Conversation distillation** — `reprompt distill` extracts the most important turns from AI conversations using 6-signal importance scoring: position, length, tool trigger, error recovery, semantic shift, uniqueness
61
+ - **Full conversation parsing** — adapters now return both user and assistant turns (Claude Code and ChatGPT have full implementations; others fall back to user-only)
62
+ - **Rule-based summaries** — `--summary` generates compressed conversation overviews without requiring an LLM
63
+ - **Flexible session selection** — `--last N` for recent sessions, `--threshold` to control importance cutoff
64
+ - **Output options** — `--json`, `--copy` for pipeline integration
65
+
66
+ ### Changed
67
+ - Tests: 1153 → 1217
68
+
69
+ ## [1.2.0] - 2026-03-23
70
+
71
+ ### Added
72
+ - **4-layer prompt compression** — `reprompt compress` optimizes prompts through character normalization, phrase simplification (40+ zh / 50+ en rules), filler word deletion (jieba-aware), and structure cleanup
73
+ - **Compressibility in PromptDNA** — every scanned prompt gets a compressibility score, visible in insights and HTML dashboard
74
+ - **`--copy` flag** — compressed output copies to clipboard
75
+
76
+ ### Changed
77
+ - Tests: 1046 → 1153
78
+
79
+ ### Research
80
+ - Compression rules based on LLMLingua (Microsoft), CompactPrompt, TSC, stopwords-iso/zh, Prompt Report 2406.06608
81
+
82
+ ## [1.1.0] - 2026-03-22
83
+
84
+ ### Added
85
+ - **Privacy exposure analysis** — `reprompt privacy` shows what data you've sent to which AI tools: file paths, error messages, code snippets, personal identifiers
86
+ - **Per-adapter breakdown** — see privacy exposure grouped by source (Claude Code vs ChatGPT vs Cursor etc.)
87
+ - **Instruction repetition scoring** — detects and scores redundant instructions within prompts
88
+ - **Per-source insights** — `reprompt insights --source` shows patterns specific to each tool
89
+
90
+ ### Changed
91
+ - Tests: 923 → 1046
92
+
5
93
  ## [1.0.0] - 2026-03-16
6
94
 
7
95
  ### Changed
@@ -18,7 +18,7 @@ uv run python -m build # build wheel
18
18
 
19
19
  ```
20
20
  src/reprompt/
21
- ├── cli.py # Typer CLI (scan, import, report, search, library, recommend, demo, status, purge, install-hook, install-extension, extension-status, score, compare, insights, digest, style, template [save|list|use], privacy, compress, distill) + plugin loading
21
+ ├── cli.py # Typer CLI (scan, import, report, search, demo, status, purge, install-hook, install-extension, extension-status, score, compare, insights, digest, style, template [save|list|use], privacy, compress, distill, lint, wrapped, telemetry, mcp-serve) + bare `reprompt` dashboard + plugin loading
22
22
  ├── config.py # pydantic-settings, env vars (REPROMPT_ prefix) + TOML config
23
23
  ├── demo.py # Built-in demo data generator (no network required)
24
24
  ├── core/
@@ -124,7 +124,7 @@ reprompt-extension (private) ← Browser extension: Chrome/Firefox prompt capt
124
124
  - Pattern upsert (not clear+re-insert) for stable IDs
125
125
  - Prompts starting with `<` are filtered (system-injected XML)
126
126
  - Config: env vars (REPROMPT_ prefix) > TOML (~/.config/reprompt/config.toml) > defaults
127
- - Tests: pytest, 1295 tests, 95% coverage target
127
+ - Tests: pytest, 1397 tests, 95% coverage target
128
128
 
129
129
  ## Prompt Science Engine
130
130
 
@@ -0,0 +1,201 @@
1
+ Metadata-Version: 2.4
2
+ Name: reprompt-cli
3
+ Version: 1.5.0
4
+ Summary: Discover, analyze, and optimize your prompts from AI coding sessions
5
+ Project-URL: Homepage, https://github.com/reprompt-dev/reprompt
6
+ Project-URL: Repository, https://github.com/reprompt-dev/reprompt
7
+ Project-URL: Issues, https://github.com/reprompt-dev/reprompt/issues
8
+ Project-URL: Changelog, https://github.com/reprompt-dev/reprompt/blob/main/CHANGELOG.md
9
+ License: MIT
10
+ License-File: LICENSE
11
+ Keywords: ai,analytics,claude-code,cli,llm,prompt
12
+ Classifier: Development Status :: 5 - Production/Stable
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Topic :: Software Development :: Libraries
22
+ Classifier: Typing :: Typed
23
+ Requires-Python: >=3.10
24
+ Requires-Dist: pydantic-settings>=2.0
25
+ Requires-Dist: rich>=13.0
26
+ Requires-Dist: scikit-learn>=1.4
27
+ Requires-Dist: typer>=0.9
28
+ Provides-Extra: chinese
29
+ Requires-Dist: jieba>=0.42; extra == 'chinese'
30
+ Provides-Extra: dev
31
+ Requires-Dist: jieba>=0.42; extra == 'dev'
32
+ Requires-Dist: mypy>=1.0; extra == 'dev'
33
+ Requires-Dist: pytest-cov>=5.0; extra == 'dev'
34
+ Requires-Dist: pytest>=8.0; extra == 'dev'
35
+ Requires-Dist: ruff>=0.4; extra == 'dev'
36
+ Provides-Extra: local
37
+ Requires-Dist: sentence-transformers>=2.0; extra == 'local'
38
+ Provides-Extra: mcp
39
+ Requires-Dist: fastmcp>=2.0; extra == 'mcp'
40
+ Provides-Extra: ollama
41
+ Requires-Dist: requests>=2.31; extra == 'ollama'
42
+ Provides-Extra: openai
43
+ Requires-Dist: openai>=1.0; extra == 'openai'
44
+ Description-Content-Type: text/markdown
45
+
46
+ # `re:prompt`
47
+
48
+ **Prompt Intelligence for AI power users** -- understand, optimize, and manage your AI conversations.
49
+
50
+ [![PyPI version](https://img.shields.io/pypi/v/reprompt-cli)](https://pypi.org/project/reprompt-cli/)
51
+ [![Python 3.10+](https://img.shields.io/pypi/pyversions/reprompt-cli)](https://pypi.org/project/reprompt-cli/)
52
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
53
+ [![Tests](https://img.shields.io/badge/tests-1397-brightgreen)](https://github.com/reprompt-dev/reprompt)
54
+ [![Coverage](https://img.shields.io/badge/coverage-95%25-brightgreen)](https://github.com/reprompt-dev/reprompt)
55
+
56
+ ---
57
+
58
+ ## See it in action
59
+
60
+ ```bash
61
+ $ pip install reprompt-cli
62
+ $ reprompt
63
+ ╭─ Prompt Dashboard ─────────────────────────────────────────╮
64
+ │ Prompts: 1,063 (295 unique) Sessions: 890 │
65
+ │ Avg Score: 68/100 Top: debug (31%), impl (24%)│
66
+ │ Sources: claude-code, cursor, chatgpt │
67
+ ╰────────────────────────────────────────────────────────────╯
68
+
69
+ $ reprompt score "Fix the auth bug in src/login.ts where JWT expires"
70
+ Score: 74/100
71
+ Structure: 18/25 | Context: 22/25 | Position: 15/20 | Repetition: 9/15 | Clarity: 10/15
72
+ Tip: Add the error message for +15% accuracy
73
+
74
+ $ reprompt distill --last 3 --summary
75
+ Session: feature-dev (42 turns, 18 important)
76
+ Key moments: initial spec → auth module → test failures → JWT fix → passing
77
+ Context: "Building auth system with JWT refresh tokens for Express API"
78
+
79
+ $ reprompt compress "请帮我看一下这个代码,就是那个 login 的那个文件,好像有点问题"
80
+ Before: 31 tokens → After: 15 tokens (52% saved)
81
+ "看一下 login 文件的问题"
82
+ ```
83
+
84
+ ## What it does
85
+
86
+ ### Analyze
87
+
88
+ | Command | Description |
89
+ |---------|-------------|
90
+ | `reprompt` | Instant dashboard -- prompts, sessions, avg score, top categories |
91
+ | `reprompt scan` | Auto-discover prompts from 8 AI tools |
92
+ | `reprompt score "prompt"` | Research-backed 0-100 scoring with 30+ features |
93
+ | `reprompt compare "a" "b"` | Side-by-side prompt analysis (or `--best-worst` for auto-selection) |
94
+ | `reprompt insights` | Personal patterns vs research-optimal benchmarks |
95
+ | `reprompt style` | Prompting fingerprint with `--trends` for evolution tracking |
96
+
97
+ ### Optimize
98
+
99
+ | Command | Description |
100
+ |---------|-------------|
101
+ | `reprompt compress "prompt"` | 4-layer prompt compression (50%+ token savings typical) |
102
+ | `reprompt distill` | Extract important turns from conversations with 6-signal scoring |
103
+ | `reprompt distill --export` | Recover context when a session runs out -- paste into new session |
104
+ | `reprompt lint` | Prompt quality linter with GitHub Action support |
105
+
106
+ ### Manage
107
+
108
+ | Command | Description |
109
+ |---------|-------------|
110
+ | `reprompt privacy` | See what data you sent where -- file paths, errors, PII exposure |
111
+ | `reprompt report` | Full analytics: hot phrases, clusters, patterns (`--html` for dashboard) |
112
+ | `reprompt digest` | Weekly summary comparing current vs previous period |
113
+ | `reprompt wrapped` | Prompt DNA report -- persona, scores, shareable card |
114
+ | `reprompt template save\|list\|use` | Save and reuse your best prompts |
115
+
116
+ ## Prompt Science
117
+
118
+ Scoring is calibrated against 4 research papers covering 30+ features across 5 dimensions:
119
+
120
+ | Dimension | What it measures | Paper |
121
+ |-----------|-----------------|-------|
122
+ | **Structure** | Markdown, code blocks, explicit constraints | Prompt Report 2406.06608 |
123
+ | **Context** | File paths, error messages, technical specificity | Google 2512.14982 |
124
+ | **Position** | Instruction placement relative to context | Stanford 2307.03172 |
125
+ | **Repetition** | Redundancy that degrades model attention | Google 2512.14982 |
126
+ | **Clarity** | Readability, sentence length, ambiguity | SPELL (EMNLP 2023) |
127
+
128
+ All analysis runs locally in <1ms per prompt. No LLM calls, no network requests.
129
+
130
+ ## Conversation Distillation
131
+
132
+ `reprompt distill` scores every turn in a conversation using 6 signals:
133
+
134
+ - **Position** -- first/last turns carry framing and conclusions
135
+ - **Length** -- substantial turns contain more information
136
+ - **Tool trigger** -- turns that cause tool calls are action-driving
137
+ - **Error recovery** -- turns that follow errors show problem-solving
138
+ - **Semantic shift** -- topic changes mark conversation boundaries
139
+ - **Uniqueness** -- novel phrasing vs repetitive follow-ups
140
+
141
+ Session type (debugging, feature-dev, exploration, refactoring) is auto-detected and signal weights adapt accordingly.
142
+
143
+ ## Supported AI tools
144
+
145
+ | Tool | Format | Auto-discovered by `scan` |
146
+ |------|--------|--------------------------|
147
+ | Claude Code | JSONL | Yes |
148
+ | Cursor | .vscdb | Yes |
149
+ | Aider | Markdown | Yes |
150
+ | Gemini CLI | JSON | Yes |
151
+ | Cline (VS Code) | JSON | Yes |
152
+ | OpenClaw / OpenCode | JSON | Yes |
153
+ | ChatGPT | JSON | Via `reprompt import` |
154
+ | Claude.ai | JSON/ZIP | Via `reprompt import` |
155
+
156
+ ## Installation
157
+
158
+ ```bash
159
+ pip install reprompt-cli # core (all features, zero config)
160
+ pip install reprompt-cli[chinese] # + Chinese prompt analysis (jieba)
161
+ pip install reprompt-cli[mcp] # + MCP server for Claude Code / Continue.dev / Zed
162
+ ```
163
+
164
+ ### Quick start
165
+
166
+ ```bash
167
+ reprompt scan # discover prompts from installed AI tools
168
+ reprompt # see your dashboard
169
+ reprompt score "your prompt here" # score any prompt instantly
170
+ reprompt distill --last 1 # distill your most recent conversation
171
+ ```
172
+
173
+ ### Auto-scan after every session
174
+
175
+ ```bash
176
+ reprompt install-hook # adds post-session hook to Claude Code
177
+ ```
178
+
179
+ ## Privacy
180
+
181
+ - All analysis runs locally. No prompts leave your machine.
182
+ - `reprompt privacy` shows exactly what you've sent to which AI tool.
183
+ - Optional telemetry sends only anonymous 26-dimension feature vectors -- never prompt text.
184
+ - Open source: audit exactly what's collected.
185
+
186
+ [Privacy policy](https://getreprompt.dev/privacy)
187
+
188
+ ## Links
189
+
190
+ - **Website:** [getreprompt.dev](https://getreprompt.dev)
191
+ - **PyPI:** [reprompt-cli](https://pypi.org/project/reprompt-cli/)
192
+ - **Changelog:** [CHANGELOG.md](CHANGELOG.md)
193
+ - **Privacy:** [getreprompt.dev/privacy](https://getreprompt.dev/privacy)
194
+
195
+ ## Contributing
196
+
197
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.
198
+
199
+ ## License
200
+
201
+ MIT
@@ -0,0 +1,156 @@
1
+ # `re:prompt`
2
+
3
+ **Prompt Intelligence for AI power users** -- understand, optimize, and manage your AI conversations.
4
+
5
+ [![PyPI version](https://img.shields.io/pypi/v/reprompt-cli)](https://pypi.org/project/reprompt-cli/)
6
+ [![Python 3.10+](https://img.shields.io/pypi/pyversions/reprompt-cli)](https://pypi.org/project/reprompt-cli/)
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
8
+ [![Tests](https://img.shields.io/badge/tests-1397-brightgreen)](https://github.com/reprompt-dev/reprompt)
9
+ [![Coverage](https://img.shields.io/badge/coverage-95%25-brightgreen)](https://github.com/reprompt-dev/reprompt)
10
+
11
+ ---
12
+
13
+ ## See it in action
14
+
15
+ ```bash
16
+ $ pip install reprompt-cli
17
+ $ reprompt
18
+ ╭─ Prompt Dashboard ─────────────────────────────────────────╮
19
+ │ Prompts: 1,063 (295 unique) Sessions: 890 │
20
+ │ Avg Score: 68/100 Top: debug (31%), impl (24%)│
21
+ │ Sources: claude-code, cursor, chatgpt │
22
+ ╰────────────────────────────────────────────────────────────╯
23
+
24
+ $ reprompt score "Fix the auth bug in src/login.ts where JWT expires"
25
+ Score: 74/100
26
+ Structure: 18/25 | Context: 22/25 | Position: 15/20 | Repetition: 9/15 | Clarity: 10/15
27
+ Tip: Add the error message for +15% accuracy
28
+
29
+ $ reprompt distill --last 3 --summary
30
+ Session: feature-dev (42 turns, 18 important)
31
+ Key moments: initial spec → auth module → test failures → JWT fix → passing
32
+ Context: "Building auth system with JWT refresh tokens for Express API"
33
+
34
+ $ reprompt compress "请帮我看一下这个代码,就是那个 login 的那个文件,好像有点问题"
35
+ Before: 31 tokens → After: 15 tokens (52% saved)
36
+ "看一下 login 文件的问题"
37
+ ```
38
+
39
+ ## What it does
40
+
41
+ ### Analyze
42
+
43
+ | Command | Description |
44
+ |---------|-------------|
45
+ | `reprompt` | Instant dashboard -- prompts, sessions, avg score, top categories |
46
+ | `reprompt scan` | Auto-discover prompts from 8 AI tools |
47
+ | `reprompt score "prompt"` | Research-backed 0-100 scoring with 30+ features |
48
+ | `reprompt compare "a" "b"` | Side-by-side prompt analysis (or `--best-worst` for auto-selection) |
49
+ | `reprompt insights` | Personal patterns vs research-optimal benchmarks |
50
+ | `reprompt style` | Prompting fingerprint with `--trends` for evolution tracking |
51
+
52
+ ### Optimize
53
+
54
+ | Command | Description |
55
+ |---------|-------------|
56
+ | `reprompt compress "prompt"` | 4-layer prompt compression (50%+ token savings typical) |
57
+ | `reprompt distill` | Extract important turns from conversations with 6-signal scoring |
58
+ | `reprompt distill --export` | Recover context when a session runs out -- paste into new session |
59
+ | `reprompt lint` | Prompt quality linter with GitHub Action support |
60
+
61
+ ### Manage
62
+
63
+ | Command | Description |
64
+ |---------|-------------|
65
+ | `reprompt privacy` | See what data you sent where -- file paths, errors, PII exposure |
66
+ | `reprompt report` | Full analytics: hot phrases, clusters, patterns (`--html` for dashboard) |
67
+ | `reprompt digest` | Weekly summary comparing current vs previous period |
68
+ | `reprompt wrapped` | Prompt DNA report -- persona, scores, shareable card |
69
+ | `reprompt template save\|list\|use` | Save and reuse your best prompts |
70
+
71
+ ## Prompt Science
72
+
73
+ Scoring is calibrated against 4 research papers covering 30+ features across 5 dimensions:
74
+
75
+ | Dimension | What it measures | Paper |
76
+ |-----------|-----------------|-------|
77
+ | **Structure** | Markdown, code blocks, explicit constraints | Prompt Report 2406.06608 |
78
+ | **Context** | File paths, error messages, technical specificity | Google 2512.14982 |
79
+ | **Position** | Instruction placement relative to context | Stanford 2307.03172 |
80
+ | **Repetition** | Redundancy that degrades model attention | Google 2512.14982 |
81
+ | **Clarity** | Readability, sentence length, ambiguity | SPELL (EMNLP 2023) |
82
+
83
+ All analysis runs locally in <1ms per prompt. No LLM calls, no network requests.
84
+
85
+ ## Conversation Distillation
86
+
87
+ `reprompt distill` scores every turn in a conversation using 6 signals:
88
+
89
+ - **Position** -- first/last turns carry framing and conclusions
90
+ - **Length** -- substantial turns contain more information
91
+ - **Tool trigger** -- turns that cause tool calls are action-driving
92
+ - **Error recovery** -- turns that follow errors show problem-solving
93
+ - **Semantic shift** -- topic changes mark conversation boundaries
94
+ - **Uniqueness** -- novel phrasing vs repetitive follow-ups
95
+
96
+ Session type (debugging, feature-dev, exploration, refactoring) is auto-detected and signal weights adapt accordingly.
97
+
98
+ ## Supported AI tools
99
+
100
+ | Tool | Format | Auto-discovered by `scan` |
101
+ |------|--------|--------------------------|
102
+ | Claude Code | JSONL | Yes |
103
+ | Cursor | .vscdb | Yes |
104
+ | Aider | Markdown | Yes |
105
+ | Gemini CLI | JSON | Yes |
106
+ | Cline (VS Code) | JSON | Yes |
107
+ | OpenClaw / OpenCode | JSON | Yes |
108
+ | ChatGPT | JSON | Via `reprompt import` |
109
+ | Claude.ai | JSON/ZIP | Via `reprompt import` |
110
+
111
+ ## Installation
112
+
113
+ ```bash
114
+ pip install reprompt-cli # core (all features, zero config)
115
+ pip install reprompt-cli[chinese] # + Chinese prompt analysis (jieba)
116
+ pip install reprompt-cli[mcp] # + MCP server for Claude Code / Continue.dev / Zed
117
+ ```
118
+
119
+ ### Quick start
120
+
121
+ ```bash
122
+ reprompt scan # discover prompts from installed AI tools
123
+ reprompt # see your dashboard
124
+ reprompt score "your prompt here" # score any prompt instantly
125
+ reprompt distill --last 1 # distill your most recent conversation
126
+ ```
127
+
128
+ ### Auto-scan after every session
129
+
130
+ ```bash
131
+ reprompt install-hook # adds post-session hook to Claude Code
132
+ ```
133
+
134
+ ## Privacy
135
+
136
+ - All analysis runs locally. No prompts leave your machine.
137
+ - `reprompt privacy` shows exactly what you've sent to which AI tool.
138
+ - Optional telemetry sends only anonymous 26-dimension feature vectors -- never prompt text.
139
+ - Open source: audit exactly what's collected.
140
+
141
+ [Privacy policy](https://getreprompt.dev/privacy)
142
+
143
+ ## Links
144
+
145
+ - **Website:** [getreprompt.dev](https://getreprompt.dev)
146
+ - **PyPI:** [reprompt-cli](https://pypi.org/project/reprompt-cli/)
147
+ - **Changelog:** [CHANGELOG.md](CHANGELOG.md)
148
+ - **Privacy:** [getreprompt.dev/privacy](https://getreprompt.dev/privacy)
149
+
150
+ ## Contributing
151
+
152
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.
153
+
154
+ ## License
155
+
156
+ MIT
@@ -1,6 +1,6 @@
1
1
  # reprompt Roadmap
2
2
 
3
- > Last updated: 2026-03-25 · Current version: v1.4.1
3
+ > Last updated: 2026-03-25 · Current version: v1.5.0
4
4
 
5
5
  ## Vision
6
6
 
@@ -10,18 +10,19 @@ reprompt is the **prompt intelligence** tool for AI sessions — distill your co
10
10
 
11
11
  ---
12
12
 
13
- ## Current State (v1.4.0) — Production Stable
13
+ ## Current State (v1.5.0) — Production Stable
14
14
 
15
15
  ### Adapters (8)
16
16
  Claude Code · OpenClaw · Cursor IDE · Aider · Gemini CLI · Cline · ChatGPT · Claude.ai
17
17
 
18
- ### Commands (23 visible, 5 deprecated)
19
- `scan` · `import` · `report` · `library` · `trends` · `recommend` · `template [save|list|use]` · `lint` · `search` · `demo` · `status` · `purge` · `install-hook` · `install-extension` · `extension-status` · `score` · `compare` · `insights` · `digest` · `style` · `wrapped` · `telemetry` · `mcp-serve` · `compress` · `distill` · `privacy`
18
+ ### Commands (23 visible, 8 deprecated)
19
+ `scan` · `import` · `report` · `template [save|list|use]` · `lint` · `search` · `demo` · `status` · `purge` · `install-hook` · `install-extension` · `extension-status` · `score` · `compare` · `insights` · `digest` · `style` · `wrapped` · `telemetry` · `mcp-serve` · `compress` · `distill` · `privacy`
20
20
 
21
21
  ### Integrations
22
22
  - MCP server (`reprompt mcp-serve`) for IDE integration
23
23
  - GitHub Action (`action.yml`) for CI prompt quality checks
24
24
  - HTML dashboard (`reprompt report --html`)
25
+ - Bare `reprompt` dashboard (zero-state + data-state)
25
26
  - Browser extension (Chrome/Firefox) via Native Messaging bridge
26
27
  - JSON output on all commands for pipeline integration
27
28
 
@@ -36,15 +37,30 @@ Claude Code · OpenClaw · Cursor IDE · Aider · Gemini CLI · Cline · ChatGPT
36
37
  | v1.3.1 | UX polish | Actionable suggestions on 5 commands, `--source` filter on all data commands |
37
38
  | v1.4.0 | Context recovery + consolidation | `distill --export` context document, signal transparency, command consolidation (27→23) |
38
39
  | v1.4.1 | Compare + style polish | `compare --best-worst` auto-pick, `style --trends` period-over-period deltas |
40
+ | v1.5.0 | Dashboard + signal fixes | Bare `reprompt` dashboard, session type detection, distill signal quality fixes, scan hook shows once |
39
41
 
40
42
  ### Quality
41
- - 1316 tests, ≥90% coverage
43
+ - 1397 tests, ≥90% coverage
42
44
  - Strict mypy, ruff lint/format
43
45
  - CI: coverage gate + pre-publish test step
44
46
  - Stable public API (`score_prompt`, `compare_prompts`, `extract_features`)
45
47
 
46
48
  ---
47
49
 
50
+ ## v1.5.0 — Dashboard + Session Type Detection + Signal Fixes
51
+
52
+ | Priority | Item | Rationale |
53
+ |----------|------|-----------|
54
+ | P1 | Bare `reprompt` dashboard | **DONE** — zero-state shows onboarding guide; data-state shows 7d summary (prompts, sessions, avg score, compressibility, long sessions) with score-by-task-type breakdown and contextual next-step suggestions |
55
+ | P1 | Session type detection | **DONE** — auto-detects session type (debug, feature, refactor, explore, review, etc.) and adjusts distill signal weights per type |
56
+ | P2 | Distill signal quality fixes | **DONE** — position signal no longer over-scores small-talk openers/closers; length signal penalizes error dumps; error_recovery signal filters "ok try again" noise |
57
+ | P3 | Scan hook suggestion shows once | **DONE** — `install-hook` suggestion displays only on first scan, not every time |
58
+ | P3 | `library`/`recommend`/`trends` deprecated | **DONE** — consolidated into `template list`, `template list --smart`, and `digest --trends` respectively |
59
+
60
+ **Status: Dashboard, session-aware distill, and signal quality shipped.**
61
+
62
+ ---
63
+
48
64
  ## v1.4 — Context Recovery + Command Consolidation
49
65
 
50
66
  | Priority | Item | Rationale |
@@ -61,11 +77,10 @@ Claude Code · OpenClaw · Cursor IDE · Aider · Gemini CLI · Cline · ChatGPT
61
77
 
62
78
  ---
63
79
 
64
- ## v1.5+ — Future Work
80
+ ## v1.6+ — Future Work
65
81
 
66
82
  | Feature | Description |
67
83
  |---------|-------------|
68
- | Distill false positive reduction | Position signal breaks on small-talk openers / "thanks bye" closers; long error dumps score high on length+uniqueness but aren't decision points; "ok try again" triggers error_recovery but is noise. Community feedback from r/LLMDevs. |
69
84
  | Sensitive content detection | Privacy narrative; PII in prompts |
70
85
  | Agent workflow analysis | Multi-step agent session patterns |
71
86
  | `.reprompt.yml` configurable lint | Team/Pro direction |
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "reprompt-cli"
3
- version = "1.4.1"
3
+ version = "1.5.0"
4
4
  description = "Discover, analyze, and optimize your prompts from AI coding sessions"
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -1,6 +1,6 @@
1
1
  """reprompt — Discover, analyze, and evolve your best prompts from AI coding sessions."""
2
2
 
3
- __version__ = "1.4.1"
3
+ __version__ = "1.5.0"
4
4
 
5
5
  __all__ = [
6
6
  "__version__",