Back to the catalog

osado-ai-assistant

OSADO developer productivity skills and commands for openQA/openSUSE work (os-autoinst-distri-opensuse).

Open source Open in the app JSON README (API)

About

OSADO developer productivity skills and commands for openQA/openSUSE work (os-autoinst-distri-opensuse).

Details

Kind
Plugins
Topic
No topic detected
Publisher
mpagot
Origin
gemini
Category
ferramentas
Version
1.0.0
Stars
4
Forks
1
Last push
2026-08-11T15:36:23Z
Repository state
ativo
Language
Perl
Added
2026-08-30 14:13:39
Updated
2026-08-30 14:13:39
Origin id
mpagot/os-autoinst-distri-opensuse-skills

README

# OSADO AI Assistant

AI-powered developer productivity skills for the
[os-autoinst-distri-opensuse](https://github.com/os-autoinst/os-autoinst-distri-opensuse)
(OSADO) project. Provides modular **Skills** and **Commands** that act as an
on-demand pair programmer aware of OSADO architecture and workflows.

## See It in Action

A few examples of what the assistant can do during a typical OSADO session.

### 🔍 Plan what to test after a code change

```
You: I changed lib/sles4sap/azure_cli.pm -- what do I need to test?

AI:  Your change touches 1 library file. Here's the verification plan:
     - Unit test: prove -l -Ios-autoinst/ t/sles4sap/azure_cli.t
     - Affected tests: tests/sles4sap/hana_install.pm, tests/sles4sap/azure_deploy.pm
     - Schedules: schedule/sles4sap/hana_node.yaml
     To get a clonable openQA job, confirm the target instance (osd or o3).
```

### 🩺 Understand openQA log files

```
You: I have the autoinst-log.txt from a failed job. The hana_install module
     timed out -- was it a real failure or infrastructure lag?

AI:  Running health check on autoinst-log.txt... 1 timeout detected in hana_install.
     Running lag detection... backend loop count: 243,891 (threshold: 100,000).
     Verdict: infrastructure stress on the worker host. The SUT likely had no issue.
     Recommend: re-run the job on a different worker.
```

### ✅ Run the right checks before pushing

```
You: I edited lib/sles4sap/azure_cli.pm and schedule/sles4sap/hana_node.yaml
     -- what should I run locally?

AI:  Analysing 2 changed files...

     TIER 1 (instant):
       perl -c lib/sles4sap/azure_cli.pm ... PASS
       yamllint schedule/sles4sap/hana_node.yaml ... PASS

     TIER 2 (before commit):
       prove -lv -Ios-autoinst/ t/sles4sap/azure_cli.t ... 12 tests passed
       make tidy ... no changes needed

     All local checks passed. Ready to push.
```

### 📝 Generate Perldoc headers for the test catalog

```
You: Add a documentation header to tests/sles4sap/qesap_ansible.pm

AI:  Reading file... identified 3 openQA variables (ANSIBLE_PLAYBOOK, PUBLIC_CLOUD_PROVIDER,
     QESAP_DEPLOYMENT_DIR) and 2 library dependencies (lib/sles4sap/qesapdeployment.pm,
     lib/publiccloud/utils.pm).
     Header generated from template. Running audit... PASS.
     Metadata check... OK. POD whitespace... OK.
```

### 🧪 Scaffold or review a unit test

```
You: I added a new function az_disk_create to lib/sles4sap/azure_cli.pm.
     Generate a unit test for it.

AI:  Scanning az_disk_create... 3 mandatory args (resource_group, name, size_gb),
     1 optional (sku). Generating test skeleton with @calls capture pattern,
     dies_ok for mandatory args, and separate subtest for the optional arg.
     Written to t/21_sles4sap_azure_cli.t (appended 3 new subtests).
     Run: prove -lv -Ios-autoinst/ t/21_sles4sap_azure_cli.t
```

### 🚀 Commit and open a PR in one shot

```
You: /github_pr_create

AI:  Inspecting staged changes... 2 files modified (lib/sles4sap/azure_cli.pm, t/sles4sap/azure_cli.t).
     Proposed commit message:
       "Add retry logic to azure_cli resource group creation"
     Written to commit_message.txt -- please review and confirm.

You: Looks good, go ahead.

AI:  Committed. Pushing to origin/add-retry-azure-cli...
     Creating PR against os-autoinst/os-autoinst-distri-opensuse...
     PR #18742 created: https://github.com/os-autoinst/os-autoinst-distri-opensuse/pull/18742
```

For a complete list of use cases and detailed explanations, see
[Use Cases and Workflows](docs/USE_CASES.md).

## Skills Included

| Skill | Description |
|-------|-------------|
| `local-lint-test` | Answers: *"What's the fastest local command to validate my edit right now?"* |
| `unit-test-wizard` | Write and review unit tests for OSADO Perl library modules |
| `test-catalog` | Add/audit Perldoc documentation headers on test modules |
| `vr-planner` | Answers: *"What remote openQA jobs should I clone to verify my change?"* |
| `git-commit` | Write OSADO-compliant commit messages for staged changes |
| `github-pr-create` | End-to-end workflow: commit, push, and create PR upstream |
| `openqa-log-analyzer` | Parse and extract sections from `autoinst-log.txt` |

## Dependencies

- `gh` (GitHub CLI) for PR operations.
- `jq` for JSON processing.
- `perl` for compilation checks.

## Installation

See the [installation](INSTALL.md) document.


## Contributing

### Development Setup

```bash
# Clone and link for local development
git clone https://github.com/mpagot/os-autoinst-distri-opensuse-gemini
cd os-autoinst-distri-opensuse-gemini
gemini extensions link .
```

For OpenCode skill testing within this repo, create a local symlink:

```bash
mkdir -p .opencode && ln -s ../skills .opencode/skills
```

Changes to skills, commands, and context files are picked up on the next
Gemini CLI session.

### References

- [Agent Skills specification](https://agentskills.io/specification)
- [OpenCode Skills docs](https://opencode.ai/docs/skills/)
- [OCX Extension Manager](https://github.com/kdcokenny/ocx)
- [Gemini CLI Skills](https://geminicli.com/docs/cli/skills/)
- [Gemini CLI Custom Commands](https://geminicli.com/docs/cli/custom-commands/)
- [Gemini CLI Extensions](https://geminicli.com/docs/extensions/)
- [Claude Code Plugin Marketplaces](https://code.claude.com/docs/en/plugin-marketplaces)

### Testing

```bash
# Run all local tests (installer + lint)
make test

# Run integration tests (requires podman or docker)
make test-integration

# Or with docker instead of podman
make test-integration CONTAINER_RT=docker

# Use a custom container image
IMAGE_REPO=my-registry.io/my-tester IMAGE_TAG=v2 make test-integration
```

Integration tests run inside `ghcr.io/mpagot/osado-gemini-tester:latest` which
ships with `gemini`, `claude`, and `opencode` pre-installed. The Makefile
automatically pulls the latest image and verifies the digest against the remote
registry before running.

To run the integration test script directly (bypassing the pull + digest check):

```bash
podman run --rm -v "$(pwd):/src:ro" \
  ghcr.io/mpagot/osado-gemini-tester:latest /src/t/test_integration.sh
```

Both `IMAGE_REPO` and `IMAGE_TAG` can be overridden via environment variables
(the test script uses sensible defaults if unset).

## License

Licensed under the same terms as OSADO (GPL-2.0-or-later).

More