Skip to content

Instantly share code, notes, and snippets.

@vjt
Created April 30, 2026 12:03
Show Gist options
  • Select an option

  • Save vjt/63d21e3e315f1808ca6fbff999a0bd37 to your computer and use it in GitHub Desktop.

Select an option

Save vjt/63d21e3e315f1808ca6fbff999a0bd37 to your computer and use it in GitHub Desktop.
my-cc-statusline plugin packaging plan

my-cc-statusline — plugin packaging plan

Package ~/.claude/statusline.sh (actually Python 3, stdlib only) as a Claude Code plugin distributable from a public GitHub repo.

Findings

CC plugins can ship a statusline, but not via plugin.json. Mechanism: ship a settings.json at plugin root with a statusLine block. CC merges plugin settings when the plugin is enabled (user ~/.claude/settings.json wins on conflict). Install flow: /plugin marketplace add vjt/my-cc-statusline then /plugin install my-cc-statusline@vjt/my-cc-statusline. Refs:

Repo: vjt/my-cc-statusline

Public, GPL-3.0 (consistent with hugo-sindrome-theme).

my-cc-statusline/
├── .claude-plugin/
│   └── plugin.json
├── settings.json
├── statusline.py        # renamed from .sh — Python 3
├── README.md
├── LICENSE              # GPL-3.0
└── .gitignore

.claude-plugin/plugin.json

{
  "name": "my-cc-statusline",
  "version": "1.0.0",
  "description": "Colored, reflow-aware Claude Code statusline: cwd, git, model, context bar, cost, duration, version.",
  "author": { "name": "Marcello Barnaba", "url": "https://sindro.me" },
  "homepage": "https://github.com/vjt/my-cc-statusline",
  "repository": "https://github.com/vjt/my-cc-statusline",
  "license": "GPL-3.0"
}

settings.json

{
  "statusLine": {
    "type": "command",
    "command": "${CLAUDE_PLUGIN_ROOT}/statusline.py",
    "padding": 0
  }
}

(If ${CLAUDE_PLUGIN_ROOT} isn't a recognised expansion, fall back to ./statusline.py — verify in research step before commit.)

statusline.py

Rename from .sh. Same content as ~/.claude/statusline.sh. Add shebang #!/usr/bin/env python3 (already there) and chmod +x.

README.md

  • One-line pitch + screenshot.
  • Features list (cwd shortening, git status glyphs, context bar with color thresholds, cost, duration, think%, CC version).
  • Install:
    /plugin marketplace add vjt/my-cc-statusline
    /plugin install my-cc-statusline@vjt/my-cc-statusline
    
  • Manual install fallback (clone + symlink + edit ~/.claude/settings.json).
  • Config: CC_CHROME env (default 20) for tuning frame width.
  • Credits / license.

LICENSE

GPL-3.0 boilerplate.

.gitignore

__pycache__/, *.pyc.

Open questions for vjt

  1. Repo namespace: vjt/my-cc-statusline confirmed?
  2. License: GPL-3.0 ok, or MIT/BSD per other CC plugins convention?
  3. Author block: name + sindro.me — strip if you want it anonymous-ish?
  4. Plugin name: my-cc-statusline keeps the CLI flag my- even after install. Alternative: cc-statusline or vjt-statusline. Which?
  5. Screenshot in README: I can describe but not produce one. Add yourself or skip?

Steps after sign-off

  1. gh repo create vjt/my-cc-statusline --public --license=gpl-3.0 --description "..."
  2. Local clone, drop files, commit, push.
  3. Sanity: git clone into a tmp dir, run claude --print '/plugin marketplace add ./tmp/my-cc-statusline' style verification (or just visual walk-through).
  4. Ping #bofh with link.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment