Skip to content

Conversation

@tomazb
Copy link
Owner

@tomazb tomazb commented Jan 14, 2026

This pull request introduces significant improvements and expansions to the kcli documentation, focusing on provider configuration, cluster deployment, provider development, plan authoring, and testing. The changes add new guides, expand API references, clarify usage of custom Jinja2 filters, and provide additional context for testing and provider implementation.

Major documentation additions and updates:

  • Added a comprehensive new guide for configuring kcli and its providers, including configuration file structure, provider types, and troubleshooting tips (.claude/skills/kcli-configuration/SKILL.md).
  • Expanded the provider development reference to include a broader set of provider API methods (VM, storage, networking, images, snapshots, buckets, security groups, DNS, etc.), a provider complexity guide, and more detailed references to existing provider implementations (.claude/skills/kcli-provider-development/SKILL.md). [1] [2]

Cluster deployment documentation improvements:

  • Updated the cluster type table to clarify the difference between generic Kubernetes and kubeadm clusters, and added directory structure details (.claude/skills/kcli-cluster-deployment/SKILL.md).
  • Added new deployment sections for RKE2 and MicroShift, including example commands and key parameters (.claude/skills/kcli-cluster-deployment/SKILL.md). [1] [2]

Plan authoring and Jinja2 filter documentation:

  • Expanded the list of available custom Jinja2 filters, grouped by function (path, string, Kubernetes, version, network, utility), and clarified their usage in plan templates (.claude/skills/kcli-plan-authoring/SKILL.md).

Testing and linting documentation:

  • Added notes about the exclusion of kvirt/bottle.py from linting and clarified differences between Flake8 and CI linting configurations, especially regarding line length enforcement (.claude/skills/kcli-testing/SKILL.md). [1] [2]

Improvements to existing skills:
- kcli-provider-development: Add 50+ missing methods including
  snapshots, buckets, security groups, subnets, DNS, and update
  operations; expand provider reference list with line counts;
  add provider complexity guide
- kcli-plan-authoring: Fix incorrect Jinja filters path; document
  all 25 custom filters organized by category
- kcli-testing: Document bottle.py exclusion; note flake8 E501
  difference from CI linting
- kcli-cluster-deployment: Add generic/kubernetes cluster type;
  add RKE2 and MicroShift deployment sections

New skill:
- kcli-configuration: Comprehensive guide for config.yml setup,
  all provider types (KVM, AWS, GCP, Azure, KubeVirt, OpenStack,
  oVirt, vSphere, Proxmox, Hetzner, IBM), profiles, and
  troubleshooting
New skill combining official documentation and existing skills into
a single user-focused reference covering:

- Quick reference for all major commands
- VM creation with common parameters and advanced examples
- VM management (list, info, state control, snapshots)
- Plans (Infrastructure as Code) with Jinja2 templating
- Kubernetes cluster deployment (all types)
- Image management and common images
- Network and storage operations
- Provider/client management
- Profiles for reusable VM templates
- Debug and troubleshooting tips
- Configuration file reference
- Container mode usage
- Practical tips and shortcuts
Copilot AI review requested due to automatic review settings January 14, 2026 17:16
@coderabbitai
Copy link

coderabbitai bot commented Jan 14, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Comment @coderabbitai help to get the list of available commands and usage tips.

@gemini-code-assist
Copy link

Summary of Changes

Hello @tomazb, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request substantially enhances the documentation for kcli, aiming to improve the user and developer experience by providing more detailed and structured information. The updates cover a broad spectrum of topics, from initial configuration and provider integration to advanced cluster deployment and plan authoring, ensuring that users can more effectively leverage kcli's capabilities for virtual infrastructure management. The changes are designed to make the tool more accessible and its development more transparent.

Highlights

  • Kcli Configuration Guide: A new, comprehensive guide (".claude/skills/kcli-configuration/SKILL.md") has been added, detailing kcli configuration, provider setup (KVM, AWS, GCP, Azure, etc.), default options, profiles, and troubleshooting.
  • Provider Development Reference Expansion: The provider development documentation (".claude/skills/kcli-provider-development/SKILL.md") now includes a significantly expanded list of API methods for VM, storage, networking, images, snapshots, and more, along with a new "Provider Complexity Guide" and updated reference implementation details.
  • Cluster Deployment Documentation Updates: The cluster deployment guide (".claude/skills/kcli-cluster-deployment/SKILL.md") has been improved with clearer distinctions between "generic" and "kubeadm" Kubernetes, and new sections for RKE2 and MicroShift deployments.
  • Jinja2 Custom Filters Documentation: The plan authoring documentation (".claude/skills/kcli-plan-authoring/SKILL.md") now provides an expanded and categorized list of custom Jinja2 filters, clarifying their usage in plan templates.
  • Testing and Linting Clarifications: Notes have been added to the testing documentation (".claude/skills/kcli-testing/SKILL.md") regarding the exclusion of "kvirt/bottle.py" from linting and the differences in line length enforcement between Flake8 and CI configurations.
  • New Comprehensive Kcli User Guide: A new top-level user guide (".claude/skills/kcli/SKILL.md") has been introduced, offering a comprehensive overview of kcli operations, including VM management, plan deployment, Kubernetes clusters, image handling, network and storage configuration, provider/client management, profiles, debugging, and container mode usage.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@tomazb tomazb merged commit c260c72 into SKILLS Jan 14, 2026
5 checks passed
@tomazb tomazb deleted the claude/verify-skills-support-bHupe branch January 14, 2026 17:17
Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request significantly improves the documentation for kcli, especially for the Claude AI assistant's skills. It adds comprehensive guides on configuration, provider development, and general usage, and clarifies existing documentation on cluster deployment, plan authoring, and testing. The new documentation is well-structured and detailed.

My review focuses on ensuring the new documentation promotes best practices. I've suggested improvements in the configuration examples to encourage better password security and recommended a change in the provider development guide to ensure unimplemented methods report failure instead of success, preventing silent errors. Overall, this is a valuable contribution that greatly enhances the usability and developer experience of kcli.

type: openstack
auth_url: https://openstack:5000/v3
user: admin
password: secret

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Using "secret" as an example password, even in documentation, can promote poor security practices. It's better to use a more secure placeholder like <your_secret_password> to encourage users to choose strong passwords.

Suggested change
password: secret
password: <your_secret_password>

type: ovirt
host: ovirt-engine.local
user: admin@internal
password: secret

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Similar to the OpenStack configuration example, using "secret" as an example password is not recommended as it can encourage weak security practices. Please use a placeholder that suggests a strong, unique password should be used.

Suggested change
password: secret
password: <your_secret_password>

4. **Images**: `volumes`, `add_image`, `delete_image`
5. **Advanced**: Snapshots, cloning, export, buckets, security groups (as needed)

Methods can return `{'result': 'success'}` with a `print("not implemented")` for optional features.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The guidance to return {'result': 'success'} for unimplemented methods can be misleading and may hide issues, as a client could interpret this as a successful operation. It is better practice to explicitly signal that the feature is not implemented by returning a failure status. This ensures that the calling code is aware of the unimplemented feature and can handle it appropriately.

Suggested change
Methods can return `{'result': 'success'}` with a `print("not implemented")` for optional features.
Methods can return `{'result': 'failure', 'reason': 'not implemented'}` for optional features.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request expands and improves the kcli Claude Code Skills documentation by adding comprehensive guides for configuration and user workflows, and enhancing existing guides with more detailed API references, deployment examples, and clarifications about testing and development practices.

Changes:

  • Added new comprehensive user guide and configuration guide for kcli
  • Expanded provider development documentation with complete API method listings and complexity guidance
  • Enhanced cluster deployment guide with RKE2 and MicroShift sections, and clarified cluster type differences
  • Updated plan authoring guide with detailed Jinja2 filter reference organized by category
  • Clarified testing documentation regarding linting script exclusions and configuration differences

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
.claude/skills/kcli/SKILL.md New comprehensive user guide covering VM operations, plans, clusters, images, networks, and troubleshooting
.claude/skills/kcli-configuration/SKILL.md New guide detailing config.yml structure, provider types, and configuration for all supported backends
.claude/skills/kcli-provider-development/SKILL.md Expanded API method reference with snapshots, updates, buckets, security groups, DNS operations; added provider complexity guide and implementation line counts
.claude/skills/kcli-cluster-deployment/SKILL.md Added RKE2 and MicroShift deployment sections; clarified generic vs kubeadm cluster types
.claude/skills/kcli-plan-authoring/SKILL.md Expanded Jinja2 custom filters with detailed categorization and descriptions
.claude/skills/kcli-testing/SKILL.md Added notes about bottle.py exclusion from linting and Flake8 vs CI configuration differences

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

ignore = E722,E402,E741,W504,E721,E501
```

**Note:** Flake8 config also ignores `E501` (line too long) which is stricter than the CI linting script. The CI script uses pycodestyle directly without E501 ignore.
Copy link

Copilot AI Jan 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The explanation is backwards. The Flake8 configuration ignores E501 (making it less strict), while the CI script does NOT ignore E501 (making it more strict about line length). The note should read: 'The CI linting script is stricter than Flake8 config regarding line length. Flake8 ignores E501 (line too long), but the CI script enforces it via pycodestyle.'

Copilot uses AI. Check for mistakes.
- `create()` - Create VM with all parameters (cpus, memory, disks, nets, etc.)
- `start(name)` - Start VM
- `stop(name, soft=False)` - Stop VM
- `restart(name)` - Restart VM (default calls start)
Copy link

Copilot AI Jan 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The description is misleading. According to the sampleprovider.py implementation, the default restart() method only calls start(), not a full restart sequence. It should clarify: 'Restart VM (default implementation only calls start; providers should override for proper restart behavior)'

Copilot uses AI. Check for mistakes.
Comment on lines +16 to +17
| `generic` | Generic Kubernetes (alias: `kubernetes`) | `kvirt/cluster/kubernetes/` |
| `kubeadm` | Standard Kubernetes via kubeadm | `kvirt/cluster/kubeadm/` |
Copy link

Copilot AI Jan 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These two entries should clarify the functional difference between 'generic' and 'kubeadm' cluster types, not just their implementation directories. Currently, it's unclear why there are two separate Kubernetes deployment options and when to use each.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants