reprompt-cli 0.9.2__tar.gz → 1.2.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 (220) hide show
  1. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.github/workflows/ci.yml +1 -1
  2. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.github/workflows/publish.yml +8 -0
  3. reprompt_cli-1.2.0/.testmondata +0 -0
  4. reprompt_cli-1.2.0/.testmondata-shm +0 -0
  5. reprompt_cli-1.2.0/.testmondata-wal +0 -0
  6. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/CHANGELOG.md +88 -0
  7. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/CLAUDE.md +20 -4
  8. reprompt_cli-1.2.0/PKG-INFO +143 -0
  9. reprompt_cli-1.2.0/README.md +98 -0
  10. reprompt_cli-1.2.0/docs/roadmap.md +74 -0
  11. reprompt_cli-1.2.0/docs/superpowers/specs/2026-03-22-prompt-compress-design.md +512 -0
  12. reprompt_cli-1.2.0/module.yaml +12 -0
  13. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/pyproject.toml +11 -5
  14. reprompt_cli-1.2.0/src/reprompt/__init__.py +88 -0
  15. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/cli.py +108 -3
  16. reprompt_cli-1.2.0/src/reprompt/core/compress.py +634 -0
  17. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/extractors.py +14 -2
  18. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/insights.py +29 -0
  19. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/pipeline.py +28 -4
  20. reprompt_cli-1.2.0/src/reprompt/core/privacy.py +146 -0
  21. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/prompt_dna.py +1 -0
  22. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/scorer.py +4 -1
  23. reprompt_cli-1.2.0/src/reprompt/output/compress_terminal.py +42 -0
  24. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/output/html_report.py +25 -1
  25. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/output/terminal.py +90 -0
  26. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/storage/db.py +40 -19
  27. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_cli.py +2 -2
  28. reprompt_cli-1.2.0/tests/test_compress.py +488 -0
  29. reprompt_cli-1.2.0/tests/test_compress_cli.py +133 -0
  30. reprompt_cli-1.2.0/tests/test_compress_dna.py +53 -0
  31. reprompt_cli-1.2.0/tests/test_compress_html.py +46 -0
  32. reprompt_cli-1.2.0/tests/test_compress_insights.py +89 -0
  33. reprompt_cli-1.2.0/tests/test_coverage_boost.py +764 -0
  34. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_digest_cli.py +8 -3
  35. reprompt_cli-1.2.0/tests/test_empty_state.py +104 -0
  36. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_insights.py +89 -0
  37. reprompt_cli-1.2.0/tests/test_privacy.py +241 -0
  38. reprompt_cli-1.2.0/tests/test_privacy_cli.py +47 -0
  39. reprompt_cli-1.2.0/tests/test_privacy_e2e.py +65 -0
  40. reprompt_cli-1.2.0/tests/test_privacy_output.py +185 -0
  41. reprompt_cli-1.2.0/tests/test_public_api.py +33 -0
  42. reprompt_cli-1.2.0/tests/test_schema_version.py +128 -0
  43. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_scorer.py +30 -0
  44. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/uv.lock +4 -774
  45. reprompt_cli-0.9.2/PKG-INFO +0 -318
  46. reprompt_cli-0.9.2/README.md +0 -270
  47. reprompt_cli-0.9.2/docs/roadmap.md +0 -116
  48. reprompt_cli-0.9.2/src/reprompt/__init__.py +0 -5
  49. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.editorconfig +0 -0
  50. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  51. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  52. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  53. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  54. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  55. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.github/dependabot.yml +0 -0
  56. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.gitignore +0 -0
  57. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.pre-commit-config.yaml +0 -0
  58. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/CODE_OF_CONDUCT.md +0 -0
  59. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/CONTRIBUTING.md +0 -0
  60. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/LICENSE +0 -0
  61. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/SECURITY.md +0 -0
  62. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/action.yml +0 -0
  63. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/docs/launch-post.md +0 -0
  64. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/docs/superpowers/specs/2026-03-11-html-dashboard-design.md +0 -0
  65. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/docs/superpowers/specs/2026-03-11-merge-view-design.md +0 -0
  66. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/docs/superpowers/specs/2026-03-11-prompt-templates-design.md +0 -0
  67. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/scripts/generate_demo_data.py +0 -0
  68. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/scripts/launch/hn_monitor.py +0 -0
  69. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/scripts/launch/reddit_helper.py +0 -0
  70. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/__init__.py +0 -0
  71. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/aider.py +0 -0
  72. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/base.py +0 -0
  73. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/chatgpt.py +0 -0
  74. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/claude_chat.py +0 -0
  75. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/claude_code.py +0 -0
  76. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/cline.py +0 -0
  77. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/cursor.py +0 -0
  78. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/filters.py +0 -0
  79. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/gemini.py +0 -0
  80. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/openclaw.py +0 -0
  81. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/bridge/__init__.py +0 -0
  82. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/bridge/handler.py +0 -0
  83. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/bridge/host.py +0 -0
  84. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/bridge/manifest.py +0 -0
  85. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/bridge/protocol.py +0 -0
  86. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/commands/__init__.py +0 -0
  87. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/commands/telemetry.py +0 -0
  88. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/commands/wrapped.py +0 -0
  89. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/config.py +0 -0
  90. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/__init__.py +0 -0
  91. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/analyzer.py +0 -0
  92. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/dedup.py +0 -0
  93. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/digest.py +0 -0
  94. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/effectiveness.py +0 -0
  95. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/extractors_zh.py +0 -0
  96. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/lang_detect.py +0 -0
  97. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/library.py +0 -0
  98. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/lint.py +0 -0
  99. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/merge_view.py +0 -0
  100. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/models.py +0 -0
  101. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/persona.py +0 -0
  102. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/recommend.py +0 -0
  103. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/segmenter.py +0 -0
  104. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/session_meta.py +0 -0
  105. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/style.py +0 -0
  106. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/templates.py +0 -0
  107. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/timeutil.py +0 -0
  108. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/trends.py +0 -0
  109. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/wrapped.py +0 -0
  110. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/demo.py +0 -0
  111. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/embeddings/__init__.py +0 -0
  112. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/embeddings/base.py +0 -0
  113. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/embeddings/local_embed.py +0 -0
  114. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/embeddings/ollama.py +0 -0
  115. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/embeddings/openai_embed.py +0 -0
  116. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/embeddings/tfidf.py +0 -0
  117. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/mcp.py +0 -0
  118. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/mcp_main.py +0 -0
  119. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/output/__init__.py +0 -0
  120. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/output/chartjs.min.js +0 -0
  121. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/output/json_out.py +0 -0
  122. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/output/markdown.py +0 -0
  123. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/output/wrapped_html.py +0 -0
  124. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/output/wrapped_terminal.py +0 -0
  125. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/py.typed +0 -0
  126. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/sharing/__init__.py +0 -0
  127. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/sharing/client.py +0 -0
  128. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/sharing/clipboard.py +0 -0
  129. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/storage/__init__.py +0 -0
  130. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/telemetry/__init__.py +0 -0
  131. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/telemetry/collector.py +0 -0
  132. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/telemetry/consent.py +0 -0
  133. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/telemetry/events.py +0 -0
  134. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/telemetry/prompt.py +0 -0
  135. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/telemetry/queue.py +0 -0
  136. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/telemetry/sender.py +0 -0
  137. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/__init__.py +0 -0
  138. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/conftest.py +0 -0
  139. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/fixtures/aider_chat_history.md +0 -0
  140. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/fixtures/chatgpt_conversations.json +0 -0
  141. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/fixtures/claude_chat_export.json +0 -0
  142. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/fixtures/claude_session.jsonl +0 -0
  143. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/fixtures/cline_task/api_conversation_history.json +0 -0
  144. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/fixtures/gemini_session.json +0 -0
  145. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/fixtures/openclaw_session.jsonl +0 -0
  146. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_adapter_aider.py +0 -0
  147. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_adapter_chatgpt.py +0 -0
  148. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_adapter_claude.py +0 -0
  149. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_adapter_claude_chat.py +0 -0
  150. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_adapter_cline.py +0 -0
  151. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_adapter_gemini.py +0 -0
  152. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_adapter_openclaw.py +0 -0
  153. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_analyzer.py +0 -0
  154. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_bridge_cli.py +0 -0
  155. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_bridge_handler.py +0 -0
  156. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_bridge_integration.py +0 -0
  157. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_bridge_manifest.py +0 -0
  158. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_bridge_protocol.py +0 -0
  159. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_cli_library_effectiveness.py +0 -0
  160. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_clipboard.py +0 -0
  161. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_config.py +0 -0
  162. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_cursor_adapter.py +0 -0
  163. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_db.py +0 -0
  164. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_db_digest.py +0 -0
  165. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_db_effectiveness.py +0 -0
  166. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_db_trends.py +0 -0
  167. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_dedup.py +0 -0
  168. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_demo.py +0 -0
  169. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_digest.py +0 -0
  170. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_e2e.py +0 -0
  171. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_effectiveness.py +0 -0
  172. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_embeddings_local.py +0 -0
  173. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_embeddings_ollama.py +0 -0
  174. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_embeddings_openai.py +0 -0
  175. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_extractors.py +0 -0
  176. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_extractors_routing.py +0 -0
  177. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_extractors_zh.py +0 -0
  178. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_extractors_zh_e2e.py +0 -0
  179. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_html_report.py +0 -0
  180. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_import_cli.py +0 -0
  181. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_import_e2e.py +0 -0
  182. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_insights_cli.py +0 -0
  183. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_install_hook.py +0 -0
  184. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_lang_detect.py +0 -0
  185. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_library.py +0 -0
  186. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_lint.py +0 -0
  187. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_lint_cli.py +0 -0
  188. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_markdown.py +0 -0
  189. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_mcp.py +0 -0
  190. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_merge_view.py +0 -0
  191. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_models.py +0 -0
  192. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_output.py +0 -0
  193. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_persona.py +0 -0
  194. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_pipeline.py +0 -0
  195. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_prompt_dna.py +0 -0
  196. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_recommend.py +0 -0
  197. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_score_cli.py +0 -0
  198. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_segmenter.py +0 -0
  199. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_share_e2e.py +0 -0
  200. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_sharing_client.py +0 -0
  201. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_style.py +0 -0
  202. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_telemetry_cli.py +0 -0
  203. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_telemetry_collector.py +0 -0
  204. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_telemetry_consent.py +0 -0
  205. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_telemetry_e2e.py +0 -0
  206. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_telemetry_events.py +0 -0
  207. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_telemetry_prompt.py +0 -0
  208. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_telemetry_queue.py +0 -0
  209. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_telemetry_sender.py +0 -0
  210. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_templates.py +0 -0
  211. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_timeutil.py +0 -0
  212. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_trends.py +0 -0
  213. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_trends_cli.py +0 -0
  214. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_use_cli.py +0 -0
  215. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_wrapped.py +0 -0
  216. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_wrapped_cli.py +0 -0
  217. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_wrapped_e2e.py +0 -0
  218. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_wrapped_html.py +0 -0
  219. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_wrapped_output.py +0 -0
  220. {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_wrapped_share.py +0 -0
@@ -28,7 +28,7 @@ jobs:
28
28
  - name: Format check
29
29
  run: ruff format --check src/ tests/
30
30
  - name: Test
31
- run: pytest tests/ -v --cov=reprompt --cov-report=xml
31
+ run: pytest tests/ -v --cov=reprompt --cov-report=xml --cov-fail-under=88
32
32
  - name: Upload coverage
33
33
  if: matrix.python-version == '3.12' && matrix.os == 'ubuntu-latest'
34
34
  uses: codecov/codecov-action@v5
@@ -15,6 +15,14 @@ jobs:
15
15
  - uses: actions/setup-python@v6
16
16
  with:
17
17
  python-version: "3.12"
18
+ - name: Install uv
19
+ uses: astral-sh/setup-uv@v7
20
+ - name: Install dependencies
21
+ run: uv pip install --system -e ".[dev]"
22
+ - name: Lint
23
+ run: ruff check src/ tests/
24
+ - name: Test
25
+ run: pytest tests/ -v --cov=reprompt --cov-fail-under=88
18
26
  - name: Install build tools
19
27
  run: pip install build
20
28
  - name: Build
Binary file
Binary file
Binary file
@@ -2,6 +2,94 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [1.0.0] - 2026-03-16
6
+
7
+ ### Changed
8
+ - **Stability release** — no new features, focused on reliability and trust
9
+ - Empty-state guidance for `report` and `digest` commands
10
+ - Scan shows "Try next" hints for new users
11
+ - Feature extraction errors logged instead of silently swallowed
12
+
13
+ ### Infrastructure
14
+ - DB schema versioning via `PRAGMA user_version` — ordered migrations, no more ad-hoc ALTER TABLE
15
+ - CI enforces ≥90% test coverage; publish workflow runs tests before PyPI upload
16
+ - Removed unused `[science]` optional dependency group
17
+ - CHANGELOG backfill for all versions since v0.7.4
18
+
19
+ ## [0.9.3] - 2026-03-16
20
+
21
+ ### Added
22
+ - `reprompt report --source` and `reprompt search --source` — filter by source adapter
23
+
24
+ ## [0.9.2] - 2026-03-15
25
+
26
+ ### Added
27
+ - **Wrapped reports** — `reprompt wrapped` generates an annual Prompt DNA report (terminal, HTML, shareable)
28
+ - **6 prompt personas** — Architect, Debugger, Explorer, Novelist, Sniper, Teacher (auto-classified)
29
+ - **Telemetry** — opt-in anonymous 26-dimension feature vectors (no prompt text, no PII)
30
+ - **Share** — HMAC-SHA256 signed upload to getreprompt.dev/api/share
31
+ - Open-core plugin system: `entry_points(group="reprompt.plugins")` loaded at startup
32
+
33
+ ### Changed
34
+ - Migrated wrapped, personas, telemetry, share into open-source CLI (from reprompt-pro)
35
+
36
+ ## [0.9.1] - 2026-03-14
37
+
38
+ ### Added
39
+ - **Multi-language PromptDNA** — Chinese feature extraction via jieba (optional `[chinese]` extra)
40
+ - **Native messaging bridge** — Chrome/Firefox extension support (`reprompt install-extension`)
41
+ - **Style fingerprint** — `reprompt style` shows personal prompting patterns
42
+ - **Template variables** — `reprompt use template_name key=value` with `{placeholder}` substitution
43
+ - **Enhanced recommendations** — `reprompt recommend` uses effectiveness data
44
+
45
+ ### Infrastructure
46
+ - Plugin system for open-core architecture (reprompt-pro registers via entry_points)
47
+ - DB aggregation queries for plugin data access
48
+
49
+ ## [0.9.0] - 2026-03-13
50
+
51
+ ### Added
52
+ - **ChatGPT import** — `reprompt import conversations.json` parses OpenAI export format
53
+ - **Claude.ai import** — `reprompt import claude-export.zip` parses Claude web chat exports
54
+ - **`reprompt import` command** — unified import with auto-detection of source format
55
+ - 7 non-coding prompt categories for Chat AI support (brainstorm, summarize, explain, translate, roleplay, creative, casual)
56
+
57
+ ### Changed
58
+ - Tests: 580 → 680+
59
+
60
+ ## [0.8.2] - 2026-03-13
61
+
62
+ ### Added
63
+ - **Digest category deltas** — `reprompt digest` shows per-category % change with arrows
64
+ - **`reprompt digest --history`** — view past digest log entries
65
+
66
+ ## [0.8.1] - 2026-03-12
67
+
68
+ ### Added
69
+ - **HTML dashboard** — `reprompt report --html` generates interactive Chart.js dashboard
70
+ - Digest + cluster data wired into HTML report
71
+
72
+ ## [0.8.0] - 2026-03-12
73
+
74
+ ### Added
75
+ - **Effectiveness columns** — `prompts.effectiveness_score`, `prompt_patterns.effectiveness_avg`
76
+ - **`reprompt library`** shows Eff column with score + star rating
77
+ - **`reprompt digest`** shows avg session quality
78
+ - **OpenClaw `parse_session_meta()`** — session quality scoring for OpenClaw/OpenCode sessions
79
+ - `db.update_prompt_effectiveness()` and `db.compute_pattern_effectiveness()` methods
80
+ - Pipeline: `run_scan()` propagates session scores to prompts; `build_report_data()` recomputes pattern averages
81
+
82
+ ### Infrastructure
83
+ - `_migrate_v08()` adds effectiveness columns via safe ALTER TABLE
84
+
85
+ ### Changed
86
+ - Tests: 480 → 510+
87
+
88
+ ## [0.7.5] - 2026-03-12
89
+
90
+ ### Added
91
+ - Expanded Chinese stop words — 65 function words from stopwords-iso added
92
+
5
93
  ## [0.7.4] - 2026-03-12
6
94
 
7
95
  ### Improved
@@ -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, use) + plugin loading
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, use, privacy, compress) + 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/
@@ -38,7 +38,9 @@ src/reprompt/
38
38
  │ ├── lang_detect.py # Language detection (zh/ja/ko/en) via Unicode ranges
39
39
  │ ├── extractors_zh.py # Chinese feature extraction (jieba + Chinese regex)
40
40
  │ ├── persona.py # 6 prompt personas (Architect/Debugger/Explorer/Novelist/Sniper/Teacher)
41
- └── wrapped.py # WrappedReport dataclass + build_wrapped(db) aggregation
41
+ ├── wrapped.py # WrappedReport dataclass + build_wrapped(db) aggregation
42
+ │ ├── privacy.py # Privacy metadata registry + exposure summary per adapter
43
+ │ └── compress.py # 4-layer prompt compression (char norm + phrase simplify + filler delete + structure cleanup)
42
44
  ├── adapters/
43
45
  │ ├── base.py # BaseAdapter ABC
44
46
  │ ├── claude_code.py # Claude Code JSONL parser
@@ -80,7 +82,8 @@ src/reprompt/
80
82
  ├── json_out.py # JSON for pipelines
81
83
  ├── markdown.py # Markdown export
82
84
  ├── wrapped_terminal.py # Rich Prompt Wrapped report rendering
83
- └── wrapped_html.py # Self-contained HTML share card (dark theme)
85
+ ├── wrapped_html.py # Self-contained HTML share card (dark theme)
86
+ └── compress_terminal.py # Rich output for compress command
84
87
  ```
85
88
 
86
89
  ## Data Flow
@@ -117,7 +120,7 @@ reprompt-extension (private) ← Browser extension: Chrome/Firefox prompt capt
117
120
  - Pattern upsert (not clear+re-insert) for stable IDs
118
121
  - Prompts starting with `<` are filtered (system-injected XML)
119
122
  - Config: env vars (REPROMPT_ prefix) > TOML (~/.config/reprompt/config.toml) > defaults
120
- - Tests: pytest, 923 tests, 95% coverage target
123
+ - Tests: pytest, 1153 tests, 95% coverage target
121
124
 
122
125
  ## Prompt Science Engine
123
126
 
@@ -128,3 +131,16 @@ Research-backed prompt analysis (added v0.6.0):
128
131
 
129
132
  Papers: Google 2512.14982 (repetition), Stanford 2307.03172 (position),
130
133
  SPELL EMNLP 2023 (perplexity), Prompt Report 2406.06608 (taxonomy).
134
+
135
+ ## Prompt Compression Engine
136
+
137
+ Rule-based prompt optimization (added v1.2.0):
138
+ - `reprompt compress "prompt"` — 4-layer compression with token savings display
139
+ - Layer 0: Character normalization (curly quotes, zero-width chars, NFKC)
140
+ - Layer 2: Phrase simplification (40+ zh, 50+ en rules)
141
+ - Layer 1: Filler word deletion (50+ zh, 40+ en phrases, jieba-aware)
142
+ - Layer 3: Structure cleanup (markdown strip, emoji, LLM output artifacts)
143
+ - `--json` for pipeline integration, `--copy` to clipboard
144
+ - `compressibility` field in PromptDNA, visible in insights + HTML dashboard
145
+
146
+ Sources: LLMLingua (Microsoft), CompactPrompt, TSC, stopwords-iso/zh, Prompt Report 2406.06608.
@@ -0,0 +1,143 @@
1
+ Metadata-Version: 2.4
2
+ Name: reprompt-cli
3
+ Version: 1.2.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
+ **Grammarly for Prompts** -- analyze your AI conversations with research-backed scoring.
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-923-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 scan --source claude-code
63
+ Scanning 890 sessions... Found 1,063 prompts (295 unique)
64
+
65
+ $ reprompt score "Fix the auth bug in src/login.ts where JWT expires"
66
+ Score: 74/100
67
+ Structure: 18/25 | Context: 22/25 | Position: 15/20 | Repetition: 9/15 | Clarity: 10/15
68
+ Tip: Add the error message for +15% accuracy
69
+
70
+ $ reprompt wrapped --share
71
+ Your Prompt DNA: Architect (Score 78, better than 72% of prompters)
72
+ Share link: https://getreprompt.dev/w/abc123
73
+ ```
74
+
75
+ ## What it does
76
+
77
+ | Command | Description |
78
+ |---------|-------------|
79
+ | `reprompt scan` | Scan 8+ AI tools for prompts (Claude Code, Cursor, Aider, Gemini CLI, Cline, OpenClaw, ChatGPT, Claude.ai) |
80
+ | `reprompt score` | Instant 0-100 scoring with 30+ research-backed features |
81
+ | `reprompt compare` | Side-by-side analysis of two prompts |
82
+ | `reprompt wrapped` | Your Prompt DNA report -- persona, scores, shareable card |
83
+ | `reprompt insights` | Personal patterns vs research-optimal |
84
+ | `reprompt digest` | Weekly summary comparing current vs previous period |
85
+ | `reprompt report` | Full analytics with hot terms, clusters, patterns |
86
+ | `reprompt library` | Auto-extracted prompt patterns and templates |
87
+
88
+ ## Prompt Science
89
+
90
+ Scoring is based on 4 research papers (Google, Stanford, EMNLP, Prompt Report) covering 30+ features across 5 dimensions:
91
+
92
+ | Dimension | What it measures |
93
+ |-----------|-----------------|
94
+ | **Structure** | Markdown formatting, code blocks, explicit constraints |
95
+ | **Context** | File paths, error messages, technical specificity |
96
+ | **Position** | Instruction placement relative to context |
97
+ | **Repetition** | Redundancy that degrades model attention |
98
+ | **Clarity** | Readability, sentence length, ambiguity |
99
+
100
+ All analysis runs locally in <1ms per prompt. No LLM calls, no network requests.
101
+
102
+ ## Supported AI tools
103
+
104
+ | Tool | Format | Session location |
105
+ |------|--------|-----------------|
106
+ | Claude Code | JSONL | `~/.claude/projects/` |
107
+ | Cursor | .vscdb | `~/Library/Application Support/Cursor/User/` |
108
+ | Aider | Markdown | `.aider.chat.history.md` |
109
+ | Gemini CLI | JSON | `~/.gemini/tmp/` |
110
+ | Cline (VS Code) | JSON | `globalStorage/saoudrizwan.claude-dev/` |
111
+ | OpenClaw / OpenCode | JSON | `~/.openclaw/` / `~/.opencode/sessions/` |
112
+ | ChatGPT | JSON | `conversations.json` export |
113
+ | Claude.ai | JSON/ZIP | Web chat export |
114
+
115
+ ## Installation
116
+
117
+ ```bash
118
+ pip install reprompt-cli # core
119
+ pip install reprompt-cli[chinese] # + Chinese prompt support
120
+ pip install reprompt-cli[mcp] # + MCP server for Claude Code / Continue.dev / Zed
121
+ ```
122
+
123
+ ## Privacy
124
+
125
+ - All analysis runs locally. No prompts leave your machine.
126
+ - Optional telemetry sends only anonymous 26-dimension feature vectors -- never prompt text.
127
+ - Open source: audit exactly what's collected.
128
+
129
+ [Privacy policy](https://getreprompt.dev/privacy)
130
+
131
+ ## Links
132
+
133
+ - **Website:** [getreprompt.dev](https://getreprompt.dev)
134
+ - **PyPI:** [reprompt-cli](https://pypi.org/project/reprompt-cli/)
135
+ - **Privacy:** [getreprompt.dev/privacy](https://getreprompt.dev/privacy)
136
+
137
+ ## Contributing
138
+
139
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.
140
+
141
+ ## License
142
+
143
+ MIT
@@ -0,0 +1,98 @@
1
+ # `re:prompt`
2
+
3
+ **Grammarly for Prompts** -- analyze your AI conversations with research-backed scoring.
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-923-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 scan --source claude-code
18
+ Scanning 890 sessions... Found 1,063 prompts (295 unique)
19
+
20
+ $ reprompt score "Fix the auth bug in src/login.ts where JWT expires"
21
+ Score: 74/100
22
+ Structure: 18/25 | Context: 22/25 | Position: 15/20 | Repetition: 9/15 | Clarity: 10/15
23
+ Tip: Add the error message for +15% accuracy
24
+
25
+ $ reprompt wrapped --share
26
+ Your Prompt DNA: Architect (Score 78, better than 72% of prompters)
27
+ Share link: https://getreprompt.dev/w/abc123
28
+ ```
29
+
30
+ ## What it does
31
+
32
+ | Command | Description |
33
+ |---------|-------------|
34
+ | `reprompt scan` | Scan 8+ AI tools for prompts (Claude Code, Cursor, Aider, Gemini CLI, Cline, OpenClaw, ChatGPT, Claude.ai) |
35
+ | `reprompt score` | Instant 0-100 scoring with 30+ research-backed features |
36
+ | `reprompt compare` | Side-by-side analysis of two prompts |
37
+ | `reprompt wrapped` | Your Prompt DNA report -- persona, scores, shareable card |
38
+ | `reprompt insights` | Personal patterns vs research-optimal |
39
+ | `reprompt digest` | Weekly summary comparing current vs previous period |
40
+ | `reprompt report` | Full analytics with hot terms, clusters, patterns |
41
+ | `reprompt library` | Auto-extracted prompt patterns and templates |
42
+
43
+ ## Prompt Science
44
+
45
+ Scoring is based on 4 research papers (Google, Stanford, EMNLP, Prompt Report) covering 30+ features across 5 dimensions:
46
+
47
+ | Dimension | What it measures |
48
+ |-----------|-----------------|
49
+ | **Structure** | Markdown formatting, code blocks, explicit constraints |
50
+ | **Context** | File paths, error messages, technical specificity |
51
+ | **Position** | Instruction placement relative to context |
52
+ | **Repetition** | Redundancy that degrades model attention |
53
+ | **Clarity** | Readability, sentence length, ambiguity |
54
+
55
+ All analysis runs locally in <1ms per prompt. No LLM calls, no network requests.
56
+
57
+ ## Supported AI tools
58
+
59
+ | Tool | Format | Session location |
60
+ |------|--------|-----------------|
61
+ | Claude Code | JSONL | `~/.claude/projects/` |
62
+ | Cursor | .vscdb | `~/Library/Application Support/Cursor/User/` |
63
+ | Aider | Markdown | `.aider.chat.history.md` |
64
+ | Gemini CLI | JSON | `~/.gemini/tmp/` |
65
+ | Cline (VS Code) | JSON | `globalStorage/saoudrizwan.claude-dev/` |
66
+ | OpenClaw / OpenCode | JSON | `~/.openclaw/` / `~/.opencode/sessions/` |
67
+ | ChatGPT | JSON | `conversations.json` export |
68
+ | Claude.ai | JSON/ZIP | Web chat export |
69
+
70
+ ## Installation
71
+
72
+ ```bash
73
+ pip install reprompt-cli # core
74
+ pip install reprompt-cli[chinese] # + Chinese prompt support
75
+ pip install reprompt-cli[mcp] # + MCP server for Claude Code / Continue.dev / Zed
76
+ ```
77
+
78
+ ## Privacy
79
+
80
+ - All analysis runs locally. No prompts leave your machine.
81
+ - Optional telemetry sends only anonymous 26-dimension feature vectors -- never prompt text.
82
+ - Open source: audit exactly what's collected.
83
+
84
+ [Privacy policy](https://getreprompt.dev/privacy)
85
+
86
+ ## Links
87
+
88
+ - **Website:** [getreprompt.dev](https://getreprompt.dev)
89
+ - **PyPI:** [reprompt-cli](https://pypi.org/project/reprompt-cli/)
90
+ - **Privacy:** [getreprompt.dev/privacy](https://getreprompt.dev/privacy)
91
+
92
+ ## Contributing
93
+
94
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.
95
+
96
+ ## License
97
+
98
+ MIT
@@ -0,0 +1,74 @@
1
+ # reprompt Roadmap
2
+
3
+ > Last updated: 2026-03-16 · Current version: v1.0.0
4
+
5
+ ## Vision
6
+
7
+ reprompt is the **prompt analytics** tool for AI sessions — understand your patterns, improve your prompting, track your progress. Zero-config, privacy-first, CLI-first.
8
+
9
+ **Category definition:** reprompt analyzes *human inputs* (how you prompt), not *LLM outputs* (how models respond). Every other tool in the eval/observability space — Promptfoo, Braintrust, DeepEval, Langfuse — answers "did my AI system answer correctly?" reprompt answers "am I asking well?" This is an unoccupied category.
10
+
11
+ ---
12
+
13
+ ## Current State (v1.0.0) — Production Stable
14
+
15
+ ### Adapters (8)
16
+ Claude Code · OpenClaw · Cursor IDE · Aider · Gemini CLI · Cline · ChatGPT · Claude.ai
17
+
18
+ ### Commands (23)
19
+ `scan` · `import` · `report` · `library` · `trends` · `recommend` · `effectiveness` · `merge-view` · `save` · `templates` · `use` · `lint` · `search` · `demo` · `status` · `purge` · `install-hook` · `install-extension` · `extension-status` · `score` · `compare` · `insights` · `digest` · `style` · `wrapped` · `telemetry` · `mcp-serve`
20
+
21
+ ### Integrations
22
+ - MCP server (`reprompt mcp-serve`) for IDE integration
23
+ - GitHub Action (`action.yml`) for CI prompt quality checks
24
+ - HTML dashboard (`reprompt report --html`)
25
+ - Browser extension (Chrome/Firefox) via Native Messaging bridge
26
+ - JSON output on all commands for pipeline integration
27
+
28
+ ### v1.0.0 Hardening (this release)
29
+ - Empty-state UX guidance for `report` and `digest`
30
+ - Scan "Try next" onboarding hints for new users
31
+ - Feature extraction errors logged (no more silent swallowing)
32
+ - DB schema versioning via `PRAGMA user_version`
33
+ - CI: ≥90% coverage gate, pre-publish test step
34
+ - Stable public API (`score_prompt`, `compare_prompts`, `extract_features`)
35
+ - 935+ tests, ≥90% coverage
36
+
37
+ ---
38
+
39
+ ## v1.1+ — Future Work
40
+
41
+ | Feature | Description |
42
+ |---------|-------------|
43
+ | `reprompt consolidate` | Automated prompt merging (currently read-only `merge-view` is sufficient) |
44
+ | Homebrew formula | `brew install reprompt` via `homebrew-reprompt` tap |
45
+ | SSE transport for MCP | Alternative to stdio for remote IDE setups |
46
+ | More adapters | Perplexity, Mistral, Grok, Gemini Takeout |
47
+ | `reprompt suggest` | Ollama-powered prompt improvement suggestions |
48
+ | `.repromptignore` | Per-project filtering rules |
49
+ | Team features | Anonymized pattern sharing, CI lint standards |
50
+ | Windows Native Messaging | Extension support on Windows |
51
+
52
+ Nothing beyond v1.1 is formally scheduled.
53
+
54
+ ---
55
+
56
+ ## Architecture Principles
57
+
58
+ 1. **Zero-config first** — Every feature works without LLM by default
59
+ 2. **Privacy by design** — All data stays local; extension has zero server
60
+ 3. **Adapter pattern** — New AI tools supported by adding ~50 lines
61
+ 4. **Input not output** — We analyze human prompts (inputs); LLM eval tools analyze model responses (outputs)
62
+ 5. **CLI first, GUI second** — Terminal is primary, HTML dashboard is secondary
63
+ 6. **Composable** — Every command supports JSON output for piping
64
+
65
+ ---
66
+
67
+ ## How to Contribute
68
+
69
+ - **New adapter** (~50 lines) — see `src/reprompt/adapters/base.py`
70
+ - **New lint rules** — see `src/reprompt/core/lint.py`
71
+ - **Better categorization** — improve keyword rules in `core/library.py`
72
+ - **Browser extension** — see `reprompt-extension` repo
73
+
74
+ See [CONTRIBUTING.md](../CONTRIBUTING.md) for details.