@kym6464/claude-state weekly downloads statistics
By kym6464 · npm · Claude Code
A lightweight CLI for managing session-scoped state in Claude Code hooks
@kym6464/claude-state has 2,884 recorded weekly downloads on npm, ranking #1456 of 2,855 tracked listings.
About @kym6464/claude-state
claude-state
A lightweight CLI for managing session-scoped state in Claude Code hooks.
Why
Claude Code hooks often need to track state across a session (e.g., "only nudge once", "remember if lint errors were pre-existing"). Without a shared mechanism, each hook invents its own marker files, polluting /tmp and duplicating logic.
claude-state provides a single key-value store per session, scoped automatically by session_id.
Installation
brew install kym6464/tap/claude-state
Usage
claude-state [--session-id <id>] <command> <key> [value]
Commands
| Command | Description | Exit code |
|---|---|---|
| has <key> | Check if a key exists | 0 if set, 1 if not |
| get <key> | Print the value of a key | 1 if not set |
| set <key> | Set a flag (boolean true) | |
| set <key> <value> | Set a key to a value | |
| delete <key> | Remove a key | |
| list | Print all key-value pairs |
Session ID
By default, claude-state reads the hook's JSON input from stdin to extract session_id. This means in the simple case you don't need to pass anything — just pipe stdin through.
If your hook needs stdin for other purposes, pass the session ID explicitly:
claude-state --session-id <id> <command> <key> [value]
Storage
State is stored in ${TMPDIR:-/tmp}/claude-state/<session_id>.json. Each session gets its own file, automatically created on first write.
Examples
Simple hook — only fire once per session
A PostToolUse hook that provides feedback to Claude, but only the first time:
#!/bin/bash
claude-state has migration_warning_sent && exit 0
claude-state set migration_warning_sent
cat <<'EOF'
{
"hookSpecificOutput": {
"hookEventName": "PostToolUse",
"additionalContext": "This project uses v2 of the config format. See docs/migration.md before making changes."
}
}
EOF
Hook that also reads stdin
When your hook needs to inspect the tool input/output in addition to managing state, capture stdin first and pass the session ID explicitly:
#!/bin/bash
INPUT=$(cat)
SESSION_ID=$(echo "$INPUT" | jq -r '.session_id')
claude-state --session-id "$SESSION_ID" has deprecation_warning_sent && exit 0
if echo "$INPUT" | grep -q 'legacyApi'; then
claude-state --session-id "$SESSION_ID" set deprecation_warning_sent
# ... output nudge JSON
fi
Description from the npm listing.
- claude
- claude-code
- hooks
- state
README badge
Show your rank in a README or on your website. The badge updates automatically.
Charts
Images: 30d · 1y · all time · 1600×900 dark
Adoption over time
7/30/90-day growth
Ranking history
Listing placement
Listing placement
Filled points are observed values; hollow points come from Internet Archive snapshots of the listing page. Dashed segments span periods with no observations — values between points are not interpolated.
Each band is one page of 20. Weekly downloads on a linear scale. Placement is projected from weekly downloads, so it can differ from the marketplace's own sort order. Hover a dot to see the listing.
Recent observations
Full history (1)Similar npm Claude Code plugins
All 20 @kym6464/claude-state alternativesData source
Weekly downloads (trailing 7 complete days) come from the official npm downloads API. Downloads include CI and mirrors and are not equivalent to installs or users. npm publishes no ratings.
Listing: https://www.npmjs.com/package/@kym6464/claude-state. First seen Nov 4, 2026; last successful collection Nov 4, 2026. See the methodology.