-
Notifications
You must be signed in to change notification settings - Fork 0
improve Claude Code SKILLS support #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
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
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the Comment |
Summary of ChangesHello @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
Using Gemini Code AssistThe 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
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 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
|
There was a problem hiding this 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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| type: ovirt | ||
| host: ovirt-engine.local | ||
| user: admin@internal | ||
| password: secret |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| 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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
| Methods can return `{'result': 'success'}` with a `print("not implemented")` for optional features. | |
| Methods can return `{'result': 'failure', 'reason': 'not implemented'}` for optional features. |
There was a problem hiding this 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. |
Copilot
AI
Jan 14, 2026
There was a problem hiding this comment.
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.'
| - `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) |
Copilot
AI
Jan 14, 2026
There was a problem hiding this comment.
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)'
| | `generic` | Generic Kubernetes (alias: `kubernetes`) | `kvirt/cluster/kubernetes/` | | ||
| | `kubeadm` | Standard Kubernetes via kubeadm | `kvirt/cluster/kubeadm/` | |
Copilot
AI
Jan 14, 2026
There was a problem hiding this comment.
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.
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:
.claude/skills/kcli-configuration/SKILL.md)..claude/skills/kcli-provider-development/SKILL.md). [1] [2]Cluster deployment documentation improvements:
genericKubernetes andkubeadmclusters, and added directory structure details (.claude/skills/kcli-cluster-deployment/SKILL.md)..claude/skills/kcli-cluster-deployment/SKILL.md). [1] [2]Plan authoring and Jinja2 filter documentation:
.claude/skills/kcli-plan-authoring/SKILL.md).Testing and linting documentation:
kvirt/bottle.pyfrom linting and clarified differences between Flake8 and CI linting configurations, especially regarding line length enforcement (.claude/skills/kcli-testing/SKILL.md). [1] [2]