Claude Code Plugins

Community-maintained marketplace

Feedback

clink-standalone

@VCnoC/clink-standalone
2
0

Standalone CLI bridge - launch external AI CLIs (gemini, codex, claude) directly without MCP server. Use when you need to delegate tasks to specialized CLI tools with their own context windows. Supports role-based prompts and file references.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name clink-standalone
description Standalone CLI bridge - launch external AI CLIs (gemini, codex, claude) directly without MCP server. Use when you need to delegate tasks to specialized CLI tools with their own context windows. Supports role-based prompts and file references.

Clink Standalone - CLI Bridge Skill (No MCP Required)

Overview

This skill provides a standalone interface to launch external AI CLI tools (gemini, codex, claude) without requiring an MCP server. It runs as a local Python script that directly executes CLI commands.

Key Benefits:

  • No MCP Server Needed: Runs standalone as a Python script
  • Isolated Context: Fresh context window for each CLI
  • Full CLI Capabilities: Web search, file tools, native features
  • Role-based Prompts: Pre-configured personas (default, planner, codereviewer)

Prerequisites

Before using this skill, install the CLIs you want to use:

# Gemini CLI (Google)
npm install -g @google/gemini-cli
gemini auth login

# Codex CLI (Sourcegraph)
# Visit https://docs.sourcegraph.com/codex

# Claude Code (Anthropic)
# Visit https://www.anthropic.com/claude-code

Installation

  1. Copy the skill to your Claude skills directory:
cp -r vc/clink-standalone ~/.claude/skills/clink-standalone
  1. Install Python dependencies:
pip install pydantic

Usage

Basic Usage

# Run from the skill directory
cd ~/.claude/skills/clink-standalone
python bin/clink.py <cli_name> "<prompt>"

Examples

# Ask Gemini a question
python bin/clink.py gemini "Explain async/await in Python"

# Use Codex for code review
python bin/clink.py codex "Review this code" --files src/auth.py

# Use planner role
python bin/clink.py gemini "Plan a microservices migration" --role planner

# Output as JSON
python bin/clink.py gemini "What is Rust?" --json

# List available CLIs
python bin/clink.py --list-clients

# List roles for a CLI
python bin/clink.py --list-roles gemini

In Claude Code

When using this skill in Claude Code, Claude will execute the clink script:

User: "Use gemini to explain Rust ownership"

Claude will run:
python bin/clink.py gemini "Explain Rust ownership system"

Available CLIs and Roles

CLI Install Strengths Roles
gemini npm install -g @google/gemini-cli 1M context, web search default, planner, codereviewer
codex Sourcegraph Codex Code analysis, review default, planner, codereviewer
claude Claude Code General purpose default, planner, codereviewer

Role Definitions

Role Purpose Best For
default General tasks Questions, summaries, quick answers
planner Strategic planning Multi-phase plans, architecture, migrations
codereviewer Code analysis Security review, quality checks, bug hunting

Command Reference

python bin/clink.py <cli_name> <prompt> [OPTIONS]

Options:
  --role, -r       Role to use (default: default)
  --files, -f      File paths to reference
  --images, -i     Image paths to include
  --config-dir     Custom config directory
  --json           Output as JSON
  --list-clients   List available CLIs
  --list-roles     List roles for a CLI

Directory Structure

clink-standalone/
├── bin/
│   └── clink.py           # Main CLI script
├── clink_core/
│   ├── __init__.py
│   ├── models.py          # Pydantic models
│   ├── registry.py        # Config loader
│   └── runner.py          # CLI execution
├── config/
│   ├── gemini.json        # Gemini CLI config
│   ├── codex.json         # Codex CLI config
│   └── claude.json        # Claude CLI config
├── systemprompts/
│   ├── gemini/
│   ├── codex/
│   └── claude/
└── SKILL.md               # This file

Configuration

CLI configurations are in config/*.json:

{
  "name": "gemini",
  "command": "gemini",
  "additional_args": ["--telemetry", "false", "--yolo", "-o", "json"],
  "timeout_seconds": 300,
  "roles": {
    "default": {"prompt_path": "systemprompts/gemini/default.txt"},
    "planner": {"prompt_path": "systemprompts/gemini/planner.txt"},
    "codereviewer": {"prompt_path": "systemprompts/gemini/codereviewer.txt"}
  }
}

Customize by editing these files.

System Prompts

Role-specific prompts are in systemprompts/<cli>/<role>.txt. Edit these to customize behavior.

Error Handling

CLI Not Found

Error: Executable 'gemini' not found in PATH

Solution: Install the CLI first (see Prerequisites)

Timeout

Error: CLI 'gemini' timed out after 300 seconds

Solution: Increase timeout_seconds in config or break into smaller tasks

Invalid Output

Output was 75000 characters, exceeding limit

Solution: Narrow your prompt or request a summary

Best Practices

  1. Choose the Right CLI

    • Large context → gemini
    • Code tasks → codex
    • General tasks → claude
  2. Use Appropriate Roles

    • Strategic work → planner
    • Code review → codereviewer
    • Everything else → default
  3. File References

    • Pass file paths via --files, CLI reads what it needs
    • More efficient than embedding full content
  4. Break Down Large Tasks

    • If timeout occurs, split into smaller subtasks

Python API

You can also use clink as a Python module:

from clink_core import get_registry, run_cli

# Get registry
registry = get_registry()

# Get CLI and role
client = registry.get_client("gemini")
role = client.get_role("default")

# Run
result = run_cli(
    client=client,
    role=role,
    prompt="Explain async/await in Python",
    files=["/path/to/file.py"],
)

print(result.content)
print(result.metadata)

License

This is a standalone extraction of the clink functionality from zen-mcp-server.