An open API service indexing awesome lists of open source software.

https://github.com/jsveron23/v23cc

A set of Claude Code slash commands that offload repetitive tasks to a local LLM
https://github.com/jsveron23/v23cc

claude-code

Last synced: 2 months ago
JSON representation

A set of Claude Code slash commands that offload repetitive tasks to a local LLM

Awesome Lists containing this project

README

          

# v23cc · [![npm](https://img.shields.io/npm/v/v23cc)](https://www.npmjs.com/package/v23cc)

A set of Claude Code slash commands that offload repetitive tasks to a local LLM — no cloud API calls, no tokens spent on boilerplate.

Instead of asking Claude to summarize a video or draft a commit message (burning context and API quota), v23cc pipes the work to a locally running model (e.g. Gemma via [mlx-lm](https://github.com/ml-explore/mlx-lm)). Claude stays focused on what it's good at; the local model handles the grunt work.

**What's included:**

- `/v23cc:model` — manage which local model preset is active
- `/v23cc:config` — show config list
- `/v23cc:youtube` — fetch subtitles from a YouTube video and summarize them in any language
- `/v23cc:commit` — generate a git commit message from staged changes
- `/v23cc:sync-docs` — update README.md and CLAUDE.md using local LLM
- `/v23cc:branch` — create, switch, rename, track, or list git branches
- `/v23cc:pr` — generate a PR title and description from branch diff
- **Atlassian MCP** — search Jira and Confluence directly in Claude Code via a local MCP server

## Requirements

- **Node.js** >= 18
- **Python 3** — for the local LLM caller script (installed automatically to `~/.v23cc/`)
- **Local LLM server** — an OpenAI-compatible endpoint running locally (e.g. [mlx-lm](https://github.com/ml-explore/mlx-lm) on port 9000)
- **yt-dlp** — required for `/v23cc:youtube` (`pip install yt-dlp`)
- **gh** — required for `/v23cc:pr` ([GitHub CLI](https://cli.github.com/))

## Install

```bash
# Interactive (prompts global or local)
npx v23cc@latest

# Global (works in all projects)
npx v23cc@latest --global

# Local (current project only)
npx v23cc@latest --local

# Custom namespace (commands become /wp:commit, /wp:pr, etc.)
npx v23cc@latest --local --namespace wp
```

The `--namespace` flag lets you rename the command prefix to anything you like. The internal tool home (`~/.v23cc/`) stays the same regardless of namespace. Re-installing with a different namespace automatically removes the old one.

**Notes:**
- `--local` requires a `.claude/` directory in the current directory. If one is not found, the install exits with an error — you are likely in the wrong directory, or should use `--global`.
- Running `--local` from `$HOME` is also an error, since that path resolves to the same location as `--global`.
- Multiple installs (e.g. one global, one or more local) are tracked in `~/.v23cc/config.json`. Shared scripts and MCP files in `~/.v23cc/` are only removed when the last install scope is uninstalled.

## Commands

| Command | Description |
|---------|-------------|
| `/v23cc:model [list\|use\|add\|remove]` | Manage local LLM model presets |
| `/v23cc:config` | Show config list |
| `/v23cc:youtube [--lang ko] [--percent 20]` | Summarize a YouTube video using local LLM |
| `/v23cc:commit [--max 72] [--no-prefix] [--only-msg] [--all]` | Generate and commit using local LLM |
| `/v23cc:sync-docs [--lines 100] [--keep "section name"]` | Update README.md and CLAUDE.md using local LLM |
| `/v23cc:branch [create\|switch\|rename\|track\|list\|current]` | Create, switch, rename, track, or list git branches |
| `/v23cc:pr [--only-msg]` | Generate a PR title and description using the local LLM |
| `/v23cc:atlassian [init\|status]` | Set up Jira & Confluence credentials |
| `/v23cc:jira [--deep] [--note "..."]` | Analyze a Jira issue and suggest implementation approach |

## Workflow

```
# Add a local LLM model preset
/v23cc:model add gemma mlx-community/gemma-4-e4b-it-4bit 9000

# Switch active model
/v23cc:model use gemma

# Summarize a YouTube video in Korean (default)
/v23cc:youtube https://youtube.com/watch?v=...

# Summarize in English, shorter output
/v23cc:youtube https://youtube.com/watch?v=... --lang en --percent 10

# Generate and commit (conventional prefix style by default)
/v23cc:commit

# Commit without conventional prefix
/v23cc:commit --no-prefix

# Print message only, no commit
/v23cc:commit --only-msg

# Stage all files then commit
/v23cc:commit --all

# Update README.md and CLAUDE.md
/v23cc:sync-docs

# Create a new branch and switch to it
/v23cc:branch create feature/my-feature

# Rename current branch
/v23cc:branch rename feature/new-name

# Rename another branch
/v23cc:branch rename old-name new-name

# Track and checkout a remote branch (auto-detects remote)
/v23cc:branch track feature/my-feature

# Track a branch from a specific remote
/v23cc:branch track upstream/feature/my-feature

# Switch to an existing local branch
/v23cc:branch switch main

# List local branches
/v23cc:branch list

# List all branches including remotes
/v23cc:branch list --all

# Print current branch name
/v23cc:branch current

# Generate PR title and description
/v23cc:pr

# Print PR message only, no PR creation
/v23cc:pr --only-msg

# Analyze a Jira issue for implementation approach
/v23cc:jira WPN-123

# Deeper analysis with source snippets
/v23cc:jira WPN-123 --deep

# Add extra context (use @file for file content)
/v23cc:jira WPN-123 --note "related to WPN-100, must avoid breaking the auth flow"
```

## Direct shell usage

When your Claude token budget is low, run the scripts directly:

```bash
# Manage model presets
bash ~/.v23cc/bin/model.sh list
bash ~/.v23cc/bin/model.sh use gemma
bash ~/.v23cc/bin/model.sh add gemma mlx-community/gemma-4-e4b-it-4bit 9000
bash ~/.v23cc/bin/model.sh remove gemma

# Summarize a YouTube video
bash ~/.v23cc/bin/youtube.sh https://youtube.com/watch?v=...
bash ~/.v23cc/bin/youtube.sh https://youtube.com/watch?v=... --lang en --percent 10

# Generate and commit
bash ~/.v23cc/bin/commit.sh
bash ~/.v23cc/bin/commit.sh --no-prefix
bash ~/.v23cc/bin/commit.sh --only-msg
bash ~/.v23cc/bin/commit.sh --all

# Update README.md and CLAUDE.md
bash ~/.v23cc/bin/sync-docs.sh
bash ~/.v23cc/bin/sync-docs.sh --lines 80 --keep "Architecture"

# Create, switch, rename, track, or list branches
bash ~/.v23cc/bin/branch.sh create feature/my-feature
bash ~/.v23cc/bin/branch.sh switch main
bash ~/.v23cc/bin/branch.sh rename new-name
bash ~/.v23cc/bin/branch.sh rename old-name new-name
bash ~/.v23cc/bin/branch.sh track feature/my-feature
bash ~/.v23cc/bin/branch.sh track upstream/feature/my-feature
bash ~/.v23cc/bin/branch.sh list
bash ~/.v23cc/bin/branch.sh list --all
bash ~/.v23cc/bin/branch.sh current

# Generate PR title/description
bash ~/.v23cc/bin/pr.sh

# Analyze a Jira issue
bash ~/.v23cc/bin/jira.sh WPN-123
bash ~/.v23cc/bin/jira.sh WPN-123 --deep
bash ~/.v23cc/bin/jira.sh WPN-123 --note "extra context here"

# Show config
bash ~/.v23cc/bin/config.sh
```

## Atlassian MCP (Jira & Confluence)

v23cc includes a local MCP server that integrates Jira and Confluence directly into Claude Code. No slash commands needed — just talk to Claude naturally.

### Setup

1. Install and restart Claude Code:
```bash
npx v23cc@latest --global
# Restart Claude Code to load the MCP server
```

2. Configure your Atlassian credentials once:
```
/v23cc:atlassian init
```
Claude will ask for your domain, email, and API token one at a time.

Generate an API token at [id.atlassian.com/manage-profile/security/api-tokens](https://id.atlassian.com/manage-profile/security/api-tokens).

### Usage

Just ask Claude naturally — no commands to remember:

| What you say | What happens |
|---|---|
| "search jira for ocr" | Searches Jira, groups results by Bug/Story/Task, writes `v23cc/jira/.md` |
| "search jira for payment bugs in project CORE" | Filtered by project and type |
| "search confluence for deployment guide" | Fetches pages, summarizes each via local LLM, writes `v23cc/confluence/.md` |

Results are written as markdown files to `v23cc/jira/` and `v23cc/confluence/` in your project (git-ignored automatically).

### Jira tool parameters

| Parameter | Description | Default |
|---|---|---|
| `query` | Search text | required |
| `project` | Project key filter (e.g. `CORE`) | — |
| `max` | Max results | 20 |
| `type` | Issue type: `Bug`, `Story`, `Task` | — |

### Confluence tool parameters

| Parameter | Description | Default |
|---|---|---|
| `query` | Search text | required |
| `space` | Space key filter | — |
| `max` | Max results | 10 |

> **Note:** Confluence summaries require a local LLM server running (configured via `/v23cc:model`). If no model is active, raw content is shown instead.

## Uninstall

```bash
npx v23cc@latest --global --uninstall
npx v23cc@latest --local --uninstall
```

## Legal

This tool uses [yt-dlp](https://github.com/yt-dlp/yt-dlp) to download subtitles from YouTube. Users are responsible for complying with YouTube's Terms of Service and applicable copyright laws in their jurisdiction.

## License

MIT