Files
Brandon Martin 2232aae10c fix(plugins): remove unsupported manifest path fields (#7)
## Summary
- remove explicit `agents`, `skills`, and `commands` fields from
generated plugin manifests
- rely on Claude Code's standard auto-discovery for plugin-root
`agents/`, `skills/`, and `commands/` directories
- flatten packaged agents to `agents/*.md` so discovery does not depend
on nested-path recursion
- keep the fix minimal by only retaining the explicit `hooks` entry for
`cce-core`

## Why
A local plugin install failed with:

```text
Plugin has an invalid manifest file ... Validation errors: agents: Invalid input
```

Our packaged plugins already follow the standard directory structure, so
the extra manifest path fields were unnecessary and were the most likely
validator mismatch. Greptile also flagged that many generated plugin
agents were nested under paths like `agents/specialized/...`, which
could silently fail if discovery is non-recursive. This change aligns
the packages with the default plugin structure instead of relying on
special manifest fields or recursive discovery.

## Changes
- update `scripts/sync_plugin_packages.py` to stop emitting manifest
path overrides
- flatten generated packaged agents to plugin-root `agents/*.md`
- regenerate all packaged plugin manifests with minimal metadata-only
manifests
- regenerate all packaged plugin agent files into the flat standard
layout

## Verification
- `python3 scripts/sync_plugin_packages.py`
- `python3 -m py_compile scripts/sync_plugin_packages.py
install_extensions.py`
- validated all 19 generated plugin manifests as JSON
- confirmed no generated manifest still contains `agents`, `skills`, or
`commands`
- confirmed packaged agents are flat: `flat_agents=78 nested_agents=0`
2026-04-01 22:25:42 -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