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.
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/CHANGELOG.md +88 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/CLAUDE.md +2 -2
- reprompt_cli-1.5.0/PKG-INFO +201 -0
- reprompt_cli-1.5.0/README.md +156 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/docs/roadmap.md +22 -7
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/pyproject.toml +1 -1
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/__init__.py +1 -1
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/cli.py +64 -90
- reprompt_cli-1.5.0/src/reprompt/core/dashboard.py +150 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/distill.py +66 -5
- reprompt_cli-1.5.0/src/reprompt/core/session_type.py +112 -0
- reprompt_cli-1.5.0/src/reprompt/output/dashboard_terminal.py +103 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/distill_terminal.py +4 -1
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/storage/db.py +29 -0
- reprompt_cli-1.5.0/tests/test_cli_deprecations.py +140 -0
- reprompt_cli-1.5.0/tests/test_cli_library_effectiveness.py +44 -0
- reprompt_cli-1.5.0/tests/test_dashboard.py +423 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_db.py +39 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_distill.py +105 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_distill_cli.py +81 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_e2e.py +4 -19
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_recommend.py +3 -5
- reprompt_cli-1.5.0/tests/test_session_type.py +184 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_trends_cli.py +6 -21
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/uv.lock +1 -1
- reprompt_cli-1.4.1/PKG-INFO +0 -143
- reprompt_cli-1.4.1/README.md +0 -98
- reprompt_cli-1.4.1/tests/test_cli_library_effectiveness.py +0 -87
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.editorconfig +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.github/dependabot.yml +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.github/workflows/ci.yml +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.github/workflows/publish.yml +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.gitignore +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.pre-commit-config.yaml +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/.testmondata +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/CODE_OF_CONDUCT.md +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/CONTRIBUTING.md +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/LICENSE +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/SECURITY.md +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/action.yml +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/docs/launch-post.md +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/docs/superpowers/specs/2026-03-11-html-dashboard-design.md +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/docs/superpowers/specs/2026-03-11-merge-view-design.md +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/docs/superpowers/specs/2026-03-11-prompt-templates-design.md +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/docs/superpowers/specs/2026-03-22-prompt-compress-design.md +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/docs/superpowers/specs/2026-03-23-distill-design.md +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/docs/superpowers/specs/2026-03-23-v131-suggestions-source-design.md +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/docs/superpowers/specs/2026-03-24-v14-context-recovery-design.md +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/docs/superpowers/specs/2026-03-24-v141-polish-design.md +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/module.yaml +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/scripts/generate_demo_data.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/scripts/launch/hn_monitor.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/scripts/launch/reddit_helper.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/__init__.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/aider.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/base.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/chatgpt.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/claude_chat.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/claude_code.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/cline.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/cursor.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/filters.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/gemini.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/adapters/openclaw.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/bridge/__init__.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/bridge/handler.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/bridge/host.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/bridge/manifest.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/bridge/protocol.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/commands/__init__.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/commands/telemetry.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/commands/wrapped.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/config.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/__init__.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/analyzer.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/compress.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/conversation.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/dedup.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/digest.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/effectiveness.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/extractors.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/extractors_zh.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/insights.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/lang_detect.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/library.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/lint.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/merge_view.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/models.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/persona.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/pipeline.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/privacy.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/prompt_dna.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/recommend.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/scorer.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/segmenter.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/session_meta.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/style.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/suggestions.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/templates.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/timeutil.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/trends.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/core/wrapped.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/demo.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/embeddings/__init__.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/embeddings/base.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/embeddings/local_embed.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/embeddings/ollama.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/embeddings/openai_embed.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/embeddings/tfidf.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/mcp.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/mcp_main.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/__init__.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/chartjs.min.js +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/compress_terminal.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/export.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/html_report.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/json_out.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/markdown.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/terminal.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/wrapped_html.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/output/wrapped_terminal.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/py.typed +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/sharing/__init__.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/sharing/client.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/sharing/clipboard.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/storage/__init__.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/telemetry/__init__.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/telemetry/collector.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/telemetry/consent.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/telemetry/events.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/telemetry/prompt.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/telemetry/queue.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/src/reprompt/telemetry/sender.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/__init__.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/conftest.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/fixtures/aider_chat_history.md +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/fixtures/chatgpt_conversations.json +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/fixtures/claude_chat_export.json +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/fixtures/claude_session.jsonl +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/fixtures/cline_task/api_conversation_history.json +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/fixtures/export/default_export.md +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/fixtures/export/full_export.md +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/fixtures/gemini_session.json +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/fixtures/openclaw_session.jsonl +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_adapter_aider.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_adapter_chatgpt.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_adapter_claude.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_adapter_claude_chat.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_adapter_cline.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_adapter_gemini.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_adapter_openclaw.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_analyzer.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_bridge_cli.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_bridge_handler.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_bridge_integration.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_bridge_manifest.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_bridge_protocol.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_cli.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_clipboard.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_compare_best_worst.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_compress.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_compress_cli.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_compress_dna.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_compress_html.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_compress_insights.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_config.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_conversation.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_coverage_boost.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_cursor_adapter.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_db_digest.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_db_effectiveness.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_db_trends.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_dedup.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_demo.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_deprecated_commands.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_digest.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_digest_cli.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_distill_weights.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_effectiveness.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_embeddings_local.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_embeddings_ollama.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_embeddings_openai.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_empty_state.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_export.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_export_cli.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_export_snapshot.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_extractors.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_extractors_routing.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_extractors_zh.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_extractors_zh_e2e.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_html_report.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_import_cli.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_import_e2e.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_insights.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_insights_cli.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_insights_expanded.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_install_hook.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_lang_detect.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_library.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_lint.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_lint_cli.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_markdown.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_mcp.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_merge_view.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_models.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_output.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_parse_conversation_base.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_parse_conversation_chatgpt.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_parse_conversation_claude.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_persona.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_pipeline.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_privacy.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_privacy_cli.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_privacy_e2e.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_privacy_output.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_prompt_dna.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_public_api.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_schema_version.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_score_cli.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_scorer.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_segmenter.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_share_e2e.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_sharing_client.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_source_filter.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_style.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_style_trends.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_suggestions.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_telemetry_cli.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_telemetry_collector.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_telemetry_consent.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_telemetry_e2e.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_telemetry_events.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_telemetry_prompt.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_telemetry_queue.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_telemetry_sender.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_template_cli.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_templates.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_timeutil.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_trends.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_use_cli.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_wrapped.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_wrapped_cli.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_wrapped_e2e.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_wrapped_html.py +0 -0
- {reprompt_cli-1.4.1 → reprompt_cli-1.5.0}/tests/test_wrapped_output.py +0 -0
- {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,
|
|
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,
|
|
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
|
+
[](https://pypi.org/project/reprompt-cli/)
|
|
51
|
+
[](https://pypi.org/project/reprompt-cli/)
|
|
52
|
+
[](https://opensource.org/licenses/MIT)
|
|
53
|
+
[](https://github.com/reprompt-dev/reprompt)
|
|
54
|
+
[](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
|
+
[](https://pypi.org/project/reprompt-cli/)
|
|
6
|
+
[](https://pypi.org/project/reprompt-cli/)
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
[](https://github.com/reprompt-dev/reprompt)
|
|
9
|
+
[](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.
|
|
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.
|
|
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,
|
|
19
|
-
`scan` · `import` · `report` · `
|
|
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
|
-
-
|
|
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.
|
|
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 |
|