Files
Brandon Martin d801f391f3 fix(plugins): regenerate flat agent packages
Resync packaged plugin agents into flat agents directories so every marketplace package follows the standard plugin layout.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-01 22:18:50 -05:00
..

CCE Python Plugin

Python CLI development with Typer for type-hint driven applications, validation, and testing.

Overview

The cce-python plugin provides expert Typer CLI development capabilities for building robust, type-safe Python command-line applications with rich formatting, validation, and comprehensive testing.

Features

  • Type-Hint Driven: Automatic CLI generation from Python type hints
  • Rich Terminal UI: Progress bars, tables, colors, panels via Rich integration
  • Validation: Comprehensive input validation patterns
  • Testing: pytest integration with Click's CliRunner
  • Documentation: Auto-generated help from docstrings
  • Distribution: Packaging for PyPI with setuptools/poetry

Plugin Components

Agents (1)

  • typer-expert: Complete Typer CLI development specialist
    • Command structure and organization
    • Type annotations and validation
    • Rich terminal formatting
    • Configuration file handling
    • Testing strategies
    • Distribution and packaging

Installation

# Add the CCE marketplace
/plugin marketplace add github:nodnarbnitram/claude-code-extensions

# Install Python plugin
/plugin install cce-python@cce-marketplace

From Local Source

git clone https://github.com/nodnarbnitram/claude-code-extensions.git
/plugin marketplace add /path/to/claude-code-extensions
/plugin install cce-python@cce-marketplace

Usage

Agents (Automatic Activation)

> Create a Typer CLI app for managing tasks
# Uses typer-expert

> Add rich progress bars to the upload command
# Uses typer-expert with Rich integration

> Implement file path validation with type hints
# Uses typer-expert validation patterns

> Add comprehensive tests for the CLI commands
# Uses typer-expert testing strategies

Example Workflows

Basic CLI App:

> Create a Typer app with commands: list, add, delete for managing tasks
# Generates type-hint driven CLI with automatic help

Rich Terminal UI:

> Add a progress bar for the file processing command using Rich
# Implements Progress context manager with rich formatting

Validation:

> Validate that the port argument is between 1024 and 65535
# Uses Annotated[int, typer.Argument(min=1024, max=65535)]

Configuration:

> Add support for reading config from ~/.myapp/config.toml
# Implements config loading with validation

Testing:

> Write pytest tests for all CLI commands using CliRunner
# Creates comprehensive test suite with fixtures

Requirements

  • Claude Code: Latest version
  • Python: 3.11+ (for advanced type hints)
  • Typer: 0.9.0+
  • Optional: Rich (for terminal formatting), pytest (for testing)

Key Capabilities

Command Patterns:

  • Single command apps
  • Multi-command apps with subcommands
  • Command groups and nesting
  • Callback functions for shared setup

Type Annotations:

  • Automatic type conversion
  • Optional parameters with defaults
  • Variadic arguments (*args)
  • Choices with Literal types
  • Custom validators

Rich Integration:

  • Progress bars
  • Tables and panels
  • Syntax highlighting
  • Markdown rendering
  • Prompts and confirmations

Validation:

  • Range validation (min/max)
  • File/path existence checks
  • Email, URL validation patterns
  • Custom validators with callbacks

Testing:

  • CliRunner for command testing
  • Fixture patterns for CLI apps
  • Mocking external dependencies
  • Output verification

Example Code

import typer
from typing import Annotated
from rich.progress import track

app = typer.Typer()

@app.command()
def process(
    files: Annotated[list[Path], typer.Argument(exists=True)],
    output: Annotated[Path, typer.Option("--output", "-o")],
    verbose: Annotated[bool, typer.Option("--verbose", "-v")] = False
):
    """Process multiple files with progress tracking."""
    for file in track(files, description="Processing..."):
        # Processing logic
        if verbose:
            typer.echo(f"Processing {file}")

License

MIT License - see LICENSE for details.

Support