BeClaude

python-packaging

New
12Community RegistryGeneralby ODH

Tools and skills for Python package management

Community PluginView Source

Overview

This repository is a collaborative place hosting collections of AI plugins to automate and assist with various tasks.

[!NOTE]

Right now the focus is to support Claude Code, OpenCode.ai, Gemini Gems, and Cursor AI.

Other tools are welcome here, please submit Pull Requests.

[!NOTE]

This project was inspired by the OpenShift AI helpers.

Got an Idea?

Have an idea for a new plugin, command, or assistant but not sure how to implement it? We'd love to hear about it! Simply file a GitHub issue with your idea in the title and we'll work together to make it happen.

[!TIP]

Share your idea

No implementation details needed - just describe what you'd like to automate or what workflow you think could be improved. The community can help figure out the best way to build it.

Want to work on an issue? Comment /assign on it to assign yourself.

Tools Development

This repository is made for collaboration. We highly welcome contributions.

For skills, check out the helpers/skills/ directory for examples. For commands, check the helpers/commands/ directory, and for agents see the helpers/agents/ directory. Using AI code assistant itself to develop the tools is highly encouraged.

Adding New Tools

When contributing new tools:

  1. Skills: Add to the helpers/skills/ directory following the agentskills.io format
  2. Commands: Add to the helpers/commands/ directory as Markdown files
  3. Agents: Add to the helpers/agents/ directory with appropriate documentation
  4. Gemini Gems: Add to the helpers/gems/ directory

Once you have added the tool, you'd have to run have to run make update in order to generate the website data. Then you should git commit your change and after than running make lint would run local tests to validate the syntax.

Testing a plugin locally (example with Claude Code)

  1. Open claude
  2. Run /plugin marketplace add ./
  3. Run /plugin then install the local plugin
  4. Test plugin and remove local marketplace after done testing which will remove plugin
  5. You can now reinstall from the git marketplace

Tool Registry

The AI Helpers marketplace uses a centralized category registry in categories.yaml to organize specialized tools by category. Tools not listed in any category are automatically placed in the "General" category - perfect for most contributions!

Category Registry Structure

Specialized tool categories are registered in categories.yaml:

yaml
CategoryName:
  - specialized-tool
  - another-tool

AnotherCategory:
  - domain-specific-tool

Adding a New Category

To add a new category, edit categories.yaml to include the new category as a top-level key:

  1. Add category with tools:

``yaml YourCategory: - your-tool-name - another-tool ``

  1. Update documentation: Run make update to regenerate the website

Automatic Management

The build system automatically handles tool organization and validation:

  • Tools not in categories.yaml are automatically assigned to "General" category
  • Tool types are inferred from filesystem structure
  • Duplicate tool names across categories are prevented
  • All tools require valid names and types

Using with Claude Code

Claude Code Marketplace extends Claude's functionality with custom commands, agents, and skills for specific workflows and tasks. They enable you to automate repetitive development activities, integrate with tools, and create specialized AI assistants tailored to your needs.

For comprehensive information about plugin architecture and development, see the official Claude Code plugins documentation.

Install the tools from the Marketplace

  1. Add the marketplace:

``bash /plugin marketplace add opendatahub-io/ai-helpers ``

  1. Install a plugin:

``bash /plugin install odh-ai-helpers ``

[!TIP]

To browse and install multiple plugins interactively, use /plugin after adding the marketplace.

This will show you all available plugins and allow you to install them selectively.

For a complete list of all available tools, see [categories.yaml](categories.yaml) or visit our website.

  1. Use the commands:

``bash /hello-world:echo Hello from OpenDataHub! ``

Running Claude Code in a Container

For IDE users, we have supplied a devcontainer.json file. For setup and prerequisites, see Dev Container README.

For setup with the standard CLI see the following.

A container image is available with Claude Code and all plugins pre-installed: ghcr.io/opendatahub-io/ai-helpers:latest

You can also build it yourself by running:

bash
podman build -f images/claude/Containerfile -t ai-helpers .

To use Claude Code with Google Cloud's Vertex AI, you need to pass through your gcloud credentials and set the required environment variables:

bash
podman run -it --rm \
  --pull newer \
  --userns=keep-id \
  -e CLAUDE_CODE_USE_VERTEX=1 \
  -e CLOUD_ML_REGION=your-ml-region \
  -e ANTHROPIC_VERTEX_PROJECT_ID=your-project-id \
  -e DISABLE_AUTOUPDATER=1 \
  -v ~/.config/gcloud:/home/claude/.config/gcloud:ro,z \
  -v ~/.claude:/home/claude/.claude:z \
  -v ~/.claude.json:/home/claude/.claude.json:z \
  -v $(pwd):$(pwd):z \
  -w $(pwd) \
  ghcr.io/opendatahub-io/ai-helpers:latest

You can execute Claude Code commands directly without entering an interactive session using the -p or --print flag.

Environment Variables:

  • CLAUDE_CODE_USE_VERTEX=1 - Enable Vertex AI integration
  • CLOUD_ML_REGION - Your GCP region (e.g., us-east5)
  • ANTHROPIC_VERTEX_PROJECT_ID - Your GCP project ID

Rootless Podman:

  • --userns=keep-id - Preserves host user ID mapping, required for the claude user to access mounted volumes

Volume Mounts:

  • -v ~/.claude:/home/claude/.claude:z - Mounts your local Claude sessions and project data
  • -v ~/.claude.json:/home/claude/.claude.json:z - Mounts your user configuration (onboarding state, preferences)
  • -v $(pwd):$(pwd):z - Mounts the project at the same absolute path as on the host to reuse Claude's session data
  • -w $(pwd) - Sets the working directory to match the host path

CLI Authentication (GitHub and GitLab):

The container includes gh (GitHub CLI) and glab (GitLab CLI). To authenticate them inside the container, pass your host credentials via environment variables or volume mounts:

  • -e GH_TOKEN=$(gh auth token) - Pass your GitHub token from the host keyring
  • -v ~/.config/glab-cli:/home/claude/.config/glab-cli:ro,z - Mount your GitLab CLI config (contains auth token)

Add this to your ~/.bashrc for easy launching of the container:

bash
claude-container() {
  podman run -it --rm \
    --pull newer \
    --userns=keep-id \
    -e CLAUDE_CODE_USE_VERTEX=1 \
    -e CLOUD_ML_REGION="${CLOUD_ML_REGION}" \
    -e ANTHROPIC_VERTEX_PROJECT_ID="${ANTHROPIC_VERTEX_PROJECT_ID}" \
    -e DISABLE_AUTOUPDATER=1 \
    -v ~/.config/gcloud:/home/claude/.config/gcloud:ro,z \
    -v ~/.claude:/home/claude/.claude:z \
    -v ~/.claude.json:/home/claude/.claude.json:z \
    -v "$(pwd):$(pwd):z" \
    -w "$(pwd)" \
    ghcr.io/opendatahub-io/ai-helpers:latest "$@"
}

CI Streaming Mode

When running Claude Code non-interactively in CI pipelines, set CLAUDE_CI_STREAM=1 to get human-readable streaming output instead of raw JSON. The container automatically adds the required flags and pipes output through a built-in parser that renders thinking blocks, tool use, token stats, and errors as readable log lines.

bash
podman run --rm \
  --userns=keep-id:uid=1000,gid=1000 \
  -e CLAUDE_CODE_USE_VERTEX=1 \
  -e CLOUD_ML_REGION=your-ml-region \
  -e ANTHROPIC_VERTEX_PROJECT_ID=your-project-id \
  -e DISABLE_AUTOUPDATER=1 \
  -e CLAUDE_CI_STREAM=1 \
  -e CLAUDE_CI_LOG_FILE=/workspace/.claude-output.txt \
  -v ~/.config/gcloud:/home/claude/.config/gcloud:ro,z \
  -v $(pwd):/workspace:z \
  -w /workspace \
  ghcr.io/opendatahub-io/ai-helpers:latest \
  --permission-mode bypassPermissions \
  -p "Fix the bug described in ISSUE-123"

CI Streaming Environment Variables:

VariableDefaultDescription
CLAUDE_CI_STREAM_(unset)_Set to 1 to enable streaming mode
CLAUDE_CI_LOG_FILE_(unset)_Path (inside the container) to write a plain-text log without ANSI codes
CLAUDE_CI_WRAP0Word-wrap output at N columns (0 = no wrapping)
NO_COLOR_(unset)_Set to 1 to disable ANSI color codes in output

Without CLAUDE_CI_STREAM, the container behaves identically to running claude directly.

Running Cursor Agent CLI in a Container

A container image is also available with the Cursor Agent CLI and all development tools pre-installed: ghcr.io/opendatahub-io/ai-helpers-cursor:latest

You can also build it yourself by running:

bash
podman build -f images/cursor/Containerfile -t ai-helpers-cursor .

Or using make:

bash
make build-cursor

To use the Cursor Agent CLI, you need to pass your CURSOR_API_KEY:

bash
podman run -it --rm \
  --pull newer \
  --userns=keep-id \
  -e CURSOR_API_KEY=your-api-key \
  -v $(pwd):$(pwd):z \
  -w $(pwd) \
  ghcr.io/opendatahub-io/ai-helpers-cursor:latest

Environment Variables:

  • CURSOR_API_KEY - Your Cursor API key (required for authentication)

Add this to your ~/.bashrc for easy launching of the container:

bash
cursor-container() {
  podman run -it --rm \
    --pull newer \
    --userns=keep-id \
    -e CURSOR_API_KEY="${CURSOR_API_KEY}" \
    -v "$(pwd):$(pwd):z" \
    -w "$(pwd)" \
    ghcr.io/opendatahub-io/ai-helpers-cursor:latest "$@"
}

Using with OpenCode.ai

OpenCode.ai is an open-source AI coding assistant that supports custom skills and commands. Our helpers can be integrated as OpenCode skills and commands to enhance your development workflow.

Note: OpenCode.ai agents are not currently compatible due to format differences. Only skills and commands are supported at this time.

Setup

  1. Clone the helpers repository:

``bash git clone https://github.com/opendatahub-io/ai-helpers.git cd ai-helpers ``

  1. Install globally:

``bash mkdir -p ~/.config/opencode/skills ~/.config/opencode/commands ln -sf $(pwd)/helpers/skills/* ~/.config/opencode/skills/ ln -sf $(pwd)/helpers/commands/* ~/.config/opencode/commands/ ``

These helpers are available when loading the odh-ai-helpers plugin from the marketplace as instructed above.

Gemini Gems

The helpers/gems/ directory contains a curated collection of Gemini Gems - specialized AI assistants for various development tasks. These can be accessed directly through Google's Gemini platform.

For detailed information about using and contributing Gemini Gems, see helpers/gems/README.md.

Validating Tools

Run all linters at once with:

bash
make lint

This runs the following checks in order:

  1. [skillsaw](https://github.com/stbenjam/skillsaw) — lints skills, plugins, and commands against the agentskills.io spec with content intelligence
  2. [ruff](https://docs.astral.sh/ruff/) check — Python syntax and style errors
  3. ruff format --check — Python formatting consistency
  4. [shellcheck](https://www.shellcheck.net/) — shell script analysis for all *.sh files
  5. Staleness check — runs make update and fails if it produces uncommitted changes

You can auto-fix some skillsaw issues with make skillsaw-fix.

Ethical Guidelines

This project follows strict ethical guidelines for AI tool development, particularly regarding the use of real people's names and personas.

For detailed ethical guidelines and best practices, see ETHICS.md.

Pre-commit Hooks (Optional)

For additional validation, the repository includes .pre-commit-config.yaml with Red Hat security and AI-readiness hooks:

bash
pre-commit install
pre-commit install --hook-type pre-push
pre-commit run --all-files  # Test all files

This automatically scans all tools and regenerates the complete documentation and website data.

License

See LICENSE for details.

Install & Usage

1
Create the skills directory
mkdir -p .claude/skills
2
Download the skill file
mkdir -p .claude/skills && curl -o .claude/skills/python-packaging.md https://raw.githubusercontent.com/opendatahub-io/ai-helpers/main/SKILL.md
3
Invoke in Claude Code
/python-packaging
View source on GitHub
python

Frequently Asked Questions

What is python-packaging?

Tools and skills for Python package management

How to install python-packaging?

To install python-packaging, create the .claude/skills directory in your project, then run the curl command to download the skill file. Once installed, invoke it in Claude Code with /python-packaging.

What is python-packaging best for?

python-packaging is a community categorized under General. It is designed for: python. Created by ODH.