Metadata-Version: 2.4
Name: cc-sentiment
Version: 0.2.110
Summary: Local Claude Code session scorer that contributes metrics to sentiments.cc
Author-email: Yasyf Mohamedali <yasyfm@gmail.com>
License: MIT
Project-URL: Homepage, https://sentiments.cc
Project-URL: Repository, https://github.com/yasyf/cc-sentiment
Project-URL: Issues, https://github.com/yasyf/cc-sentiment/issues
Keywords: claude-code,sentiment,mlx,apple-silicon
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: MacOS
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.13
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: typer>=0.12
Requires-Dist: httpx>=0.27
Requires-Dist: pydantic>=2.7
Requires-Dist: anyio>=4.4
Requires-Dist: rich>=13.0
Requires-Dist: sentry-sdk>=2.20
Requires-Dist: tenacity>=8.0
Requires-Dist: orjson>=3.10
Requires-Dist: textual>=3.0
Requires-Dist: python-gnupg>=0.5.4
Requires-Dist: spacy>=3.8
Requires-Dist: afinn>=0.1
Requires-Dist: zstandard>=0.25.0
Requires-Dist: mlx-lm>=0.31.3; sys_platform == "darwin" and platform_machine == "arm64"
Requires-Dist: asyncstdlib>=3.14.0
Dynamic: license-file

# cc-sentiment

A CLI that scores your Claude Code conversations and contributes aggregate numbers to an open dashboard at [sentiments.cc](https://sentiments.cc).

Your conversations stay on your device. Only signed aggregate numeric scores are uploaded to sentiments.cc; the server verifies signatures using a public key you control.

## Run it

```bash
uvx cc-sentiment
```

Needs [uv](https://docs.astral.sh/uv/). Local scoring uses MLX on Apple Silicon when available; on other platforms the CLI still runs setup, upload, and dashboard sharing, and asks before using the configured fallback engine. The first run sets up a verification key (GitHub or GPG), scores transcripts in `~/.claude/projects/`, and uploads the numbers.

## What gets uploaded

The client uploads only numbers and timestamps for each 5-minute bucket of a conversation.

- Sentiment score on a 1–5 scale
- Read:edit ratio, edits-without-prior-read %, write:edit ratio, tool calls per turn, subagent spawn rate
- Turn count, thinking present/chars
- Claude model and Claude Code version
- A public verification handle (GitHub username or GPG fingerprint) used only to find a public key and verify signatures

Your conversation text, file contents, file paths, prompts, tool inputs, and tool outputs are not uploaded to sentiments.cc.

## Commands

| Command | Description |
|---------|-------------|
| `cc-sentiment` | Run the whole flow. Sets up if needed, then scans and uploads. |
| `cc-sentiment setup` | Set up a verification key (GitHub or GPG) so uploads can be signed |
| `cc-sentiment scan --upload` | Score new transcripts and upload |
| `cc-sentiment scan` | Score transcripts without uploading |
| `cc-sentiment upload` | Upload previously scored results |
| `cc-sentiment rescan` | Clear state and re-score everything |

## Links

Dashboard at [sentiments.cc](https://sentiments.cc). Source and issues live on [GitHub](https://github.com/yasyf/cc-sentiment).
