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.
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.github/workflows/ci.yml +1 -1
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.github/workflows/publish.yml +8 -0
- reprompt_cli-1.2.0/.testmondata +0 -0
- reprompt_cli-1.2.0/.testmondata-shm +0 -0
- reprompt_cli-1.2.0/.testmondata-wal +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/CHANGELOG.md +88 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/CLAUDE.md +20 -4
- reprompt_cli-1.2.0/PKG-INFO +143 -0
- reprompt_cli-1.2.0/README.md +98 -0
- reprompt_cli-1.2.0/docs/roadmap.md +74 -0
- reprompt_cli-1.2.0/docs/superpowers/specs/2026-03-22-prompt-compress-design.md +512 -0
- reprompt_cli-1.2.0/module.yaml +12 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/pyproject.toml +11 -5
- reprompt_cli-1.2.0/src/reprompt/__init__.py +88 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/cli.py +108 -3
- reprompt_cli-1.2.0/src/reprompt/core/compress.py +634 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/extractors.py +14 -2
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/insights.py +29 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/pipeline.py +28 -4
- reprompt_cli-1.2.0/src/reprompt/core/privacy.py +146 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/prompt_dna.py +1 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/scorer.py +4 -1
- reprompt_cli-1.2.0/src/reprompt/output/compress_terminal.py +42 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/output/html_report.py +25 -1
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/output/terminal.py +90 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/storage/db.py +40 -19
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_cli.py +2 -2
- reprompt_cli-1.2.0/tests/test_compress.py +488 -0
- reprompt_cli-1.2.0/tests/test_compress_cli.py +133 -0
- reprompt_cli-1.2.0/tests/test_compress_dna.py +53 -0
- reprompt_cli-1.2.0/tests/test_compress_html.py +46 -0
- reprompt_cli-1.2.0/tests/test_compress_insights.py +89 -0
- reprompt_cli-1.2.0/tests/test_coverage_boost.py +764 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_digest_cli.py +8 -3
- reprompt_cli-1.2.0/tests/test_empty_state.py +104 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_insights.py +89 -0
- reprompt_cli-1.2.0/tests/test_privacy.py +241 -0
- reprompt_cli-1.2.0/tests/test_privacy_cli.py +47 -0
- reprompt_cli-1.2.0/tests/test_privacy_e2e.py +65 -0
- reprompt_cli-1.2.0/tests/test_privacy_output.py +185 -0
- reprompt_cli-1.2.0/tests/test_public_api.py +33 -0
- reprompt_cli-1.2.0/tests/test_schema_version.py +128 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_scorer.py +30 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/uv.lock +4 -774
- reprompt_cli-0.9.2/PKG-INFO +0 -318
- reprompt_cli-0.9.2/README.md +0 -270
- reprompt_cli-0.9.2/docs/roadmap.md +0 -116
- reprompt_cli-0.9.2/src/reprompt/__init__.py +0 -5
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.editorconfig +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.github/dependabot.yml +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.gitignore +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/.pre-commit-config.yaml +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/CODE_OF_CONDUCT.md +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/CONTRIBUTING.md +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/LICENSE +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/SECURITY.md +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/action.yml +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/docs/launch-post.md +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/docs/superpowers/specs/2026-03-11-html-dashboard-design.md +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/docs/superpowers/specs/2026-03-11-merge-view-design.md +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/docs/superpowers/specs/2026-03-11-prompt-templates-design.md +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/scripts/generate_demo_data.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/scripts/launch/hn_monitor.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/scripts/launch/reddit_helper.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/__init__.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/aider.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/base.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/chatgpt.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/claude_chat.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/claude_code.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/cline.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/cursor.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/filters.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/gemini.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/adapters/openclaw.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/bridge/__init__.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/bridge/handler.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/bridge/host.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/bridge/manifest.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/bridge/protocol.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/commands/__init__.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/commands/telemetry.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/commands/wrapped.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/config.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/__init__.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/analyzer.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/dedup.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/digest.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/effectiveness.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/extractors_zh.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/lang_detect.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/library.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/lint.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/merge_view.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/models.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/persona.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/recommend.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/segmenter.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/session_meta.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/style.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/templates.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/timeutil.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/trends.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/core/wrapped.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/demo.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/embeddings/__init__.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/embeddings/base.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/embeddings/local_embed.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/embeddings/ollama.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/embeddings/openai_embed.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/embeddings/tfidf.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/mcp.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/mcp_main.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/output/__init__.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/output/chartjs.min.js +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/output/json_out.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/output/markdown.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/output/wrapped_html.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/output/wrapped_terminal.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/py.typed +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/sharing/__init__.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/sharing/client.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/sharing/clipboard.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/storage/__init__.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/telemetry/__init__.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/telemetry/collector.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/telemetry/consent.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/telemetry/events.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/telemetry/prompt.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/telemetry/queue.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/src/reprompt/telemetry/sender.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/__init__.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/conftest.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/fixtures/aider_chat_history.md +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/fixtures/chatgpt_conversations.json +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/fixtures/claude_chat_export.json +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/fixtures/claude_session.jsonl +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/fixtures/cline_task/api_conversation_history.json +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/fixtures/gemini_session.json +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/fixtures/openclaw_session.jsonl +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_adapter_aider.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_adapter_chatgpt.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_adapter_claude.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_adapter_claude_chat.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_adapter_cline.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_adapter_gemini.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_adapter_openclaw.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_analyzer.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_bridge_cli.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_bridge_handler.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_bridge_integration.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_bridge_manifest.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_bridge_protocol.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_cli_library_effectiveness.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_clipboard.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_config.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_cursor_adapter.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_db.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_db_digest.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_db_effectiveness.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_db_trends.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_dedup.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_demo.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_digest.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_e2e.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_effectiveness.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_embeddings_local.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_embeddings_ollama.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_embeddings_openai.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_extractors.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_extractors_routing.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_extractors_zh.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_extractors_zh_e2e.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_html_report.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_import_cli.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_import_e2e.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_insights_cli.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_install_hook.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_lang_detect.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_library.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_lint.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_lint_cli.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_markdown.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_mcp.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_merge_view.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_models.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_output.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_persona.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_pipeline.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_prompt_dna.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_recommend.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_score_cli.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_segmenter.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_share_e2e.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_sharing_client.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_style.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_telemetry_cli.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_telemetry_collector.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_telemetry_consent.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_telemetry_e2e.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_telemetry_events.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_telemetry_prompt.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_telemetry_queue.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_telemetry_sender.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_templates.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_timeutil.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_trends.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_trends_cli.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_use_cli.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_wrapped.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_wrapped_cli.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_wrapped_e2e.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_wrapped_html.py +0 -0
- {reprompt_cli-0.9.2 → reprompt_cli-1.2.0}/tests/test_wrapped_output.py +0 -0
- {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
|
-
│
|
|
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
|
-
|
|
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,
|
|
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
|
+
[](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 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
|
+
[](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 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.
|