{
  "markdown": "# OSADO AI Assistant\n\nAI-powered developer productivity skills for the\n[os-autoinst-distri-opensuse](https://github.com/os-autoinst/os-autoinst-distri-opensuse)\n(OSADO) project. Provides modular **Skills** and **Commands** that act as an\non-demand pair programmer aware of OSADO architecture and workflows.\n\n## See It in Action\n\nA few examples of what the assistant can do during a typical OSADO session.\n\n### 🔍 Plan what to test after a code change\n\n```\nYou: I changed lib/sles4sap/azure_cli.pm -- what do I need to test?\n\nAI:  Your change touches 1 library file. Here's the verification plan:\n     - Unit test: prove -l -Ios-autoinst/ t/sles4sap/azure_cli.t\n     - Affected tests: tests/sles4sap/hana_install.pm, tests/sles4sap/azure_deploy.pm\n     - Schedules: schedule/sles4sap/hana_node.yaml\n     To get a clonable openQA job, confirm the target instance (osd or o3).\n```\n\n### 🩺 Understand openQA log files\n\n```\nYou: I have the autoinst-log.txt from a failed job. The hana_install module\n     timed out -- was it a real failure or infrastructure lag?\n\nAI:  Running health check on autoinst-log.txt... 1 timeout detected in hana_install.\n     Running lag detection... backend loop count: 243,891 (threshold: 100,000).\n     Verdict: infrastructure stress on the worker host. The SUT likely had no issue.\n     Recommend: re-run the job on a different worker.\n```\n\n### ✅ Run the right checks before pushing\n\n```\nYou: I edited lib/sles4sap/azure_cli.pm and schedule/sles4sap/hana_node.yaml\n     -- what should I run locally?\n\nAI:  Analysing 2 changed files...\n\n     TIER 1 (instant):\n       perl -c lib/sles4sap/azure_cli.pm ... PASS\n       yamllint schedule/sles4sap/hana_node.yaml ... PASS\n\n     TIER 2 (before commit):\n       prove -lv -Ios-autoinst/ t/sles4sap/azure_cli.t ... 12 tests passed\n       make tidy ... no changes needed\n\n     All local checks passed. Ready to push.\n```\n\n### 📝 Generate Perldoc headers for the test catalog\n\n```\nYou: Add a documentation header to tests/sles4sap/qesap_ansible.pm\n\nAI:  Reading file... identified 3 openQA variables (ANSIBLE_PLAYBOOK, PUBLIC_CLOUD_PROVIDER,\n     QESAP_DEPLOYMENT_DIR) and 2 library dependencies (lib/sles4sap/qesapdeployment.pm,\n     lib/publiccloud/utils.pm).\n     Header generated from template. Running audit... PASS.\n     Metadata check... OK. POD whitespace... OK.\n```\n\n### 🧪 Scaffold or review a unit test\n\n```\nYou: I added a new function az_disk_create to lib/sles4sap/azure_cli.pm.\n     Generate a unit test for it.\n\nAI:  Scanning az_disk_create... 3 mandatory args (resource_group, name, size_gb),\n     1 optional (sku). Generating test skeleton with @calls capture pattern,\n     dies_ok for mandatory args, and separate subtest for the optional arg.\n     Written to t/21_sles4sap_azure_cli.t (appended 3 new subtests).\n     Run: prove -lv -Ios-autoinst/ t/21_sles4sap_azure_cli.t\n```\n\n### 🚀 Commit and open a PR in one shot\n\n```\nYou: /github_pr_create\n\nAI:  Inspecting staged changes... 2 files modified (lib/sles4sap/azure_cli.pm, t/sles4sap/azure_cli.t).\n     Proposed commit message:\n       \"Add retry logic to azure_cli resource group creation\"\n     Written to commit_message.txt -- please review and confirm.\n\nYou: Looks good, go ahead.\n\nAI:  Committed. Pushing to origin/add-retry-azure-cli...\n     Creating PR against os-autoinst/os-autoinst-distri-opensuse...\n     PR #18742 created: https://github.com/os-autoinst/os-autoinst-distri-opensuse/pull/18742\n```\n\nFor a complete list of use cases and detailed explanations, see\n[Use Cases and Workflows](docs/USE_CASES.md).\n\n## Skills Included\n\n| Skill | Description |\n|-------|-------------|\n| `local-lint-test` | Answers: *\"What's the fastest local command to validate my edit right now?\"* |\n| `unit-test-wizard` | Write and review unit tests for OSADO Perl library modules |\n| `test-catalog` | Add/audit Perldoc documentation headers on test modules |\n| `vr-planner` | Answers: *\"What remote openQA jobs should I clone to verify my change?\"* |\n| `git-commit` | Write OSADO-compliant commit messages for staged changes |\n| `github-pr-create` | End-to-end workflow: commit, push, and create PR upstream |\n| `openqa-log-analyzer` | Parse and extract sections from `autoinst-log.txt` |\n\n## Dependencies\n\n- `gh` (GitHub CLI) for PR operations.\n- `jq` for JSON processing.\n- `perl` for compilation checks.\n\n## Installation\n\nSee the [installation](INSTALL.md) document.\n\n\n## Contributing\n\n### Development Setup\n\n```bash\n# Clone and link for local development\ngit clone https://github.com/mpagot/os-autoinst-distri-opensuse-gemini\ncd os-autoinst-distri-opensuse-gemini\ngemini extensions link .\n```\n\nFor OpenCode skill testing within this repo, create a local symlink:\n\n```bash\nmkdir -p .opencode && ln -s ../skills .opencode/skills\n```\n\nChanges to skills, commands, and context files are picked up on the next\nGemini CLI session.\n\n### References\n\n- [Agent Skills specification](https://agentskills.io/specification)\n- [OpenCode Skills docs](https://opencode.ai/docs/skills/)\n- [OCX Extension Manager](https://github.com/kdcokenny/ocx)\n- [Gemini CLI Skills](https://geminicli.com/docs/cli/skills/)\n- [Gemini CLI Custom Commands](https://geminicli.com/docs/cli/custom-commands/)\n- [Gemini CLI Extensions](https://geminicli.com/docs/extensions/)\n- [Claude Code Plugin Marketplaces](https://code.claude.com/docs/en/plugin-marketplaces)\n\n### Testing\n\n```bash\n# Run all local tests (installer + lint)\nmake test\n\n# Run integration tests (requires podman or docker)\nmake test-integration\n\n# Or with docker instead of podman\nmake test-integration CONTAINER_RT=docker\n\n# Use a custom container image\nIMAGE_REPO=my-registry.io/my-tester IMAGE_TAG=v2 make test-integration\n```\n\nIntegration tests run inside `ghcr.io/mpagot/osado-gemini-tester:latest` which\nships with `gemini`, `claude`, and `opencode` pre-installed. The Makefile\nautomatically pulls the latest image and verifies the digest against the remote\nregistry before running.\n\nTo run the integration test script directly (bypassing the pull + digest check):\n\n```bash\npodman run --rm -v \"$(pwd):/src:ro\" \\\n  ghcr.io/mpagot/osado-gemini-tester:latest /src/t/test_integration.sh\n```\n\nBoth `IMAGE_REPO` and `IMAGE_TAG` can be overridden via environment variables\n(the test script uses sensible defaults if unset).\n\n## License\n\nLicensed under the same terms as OSADO (GPL-2.0-or-later).\n",
  "bytes": 6357,
  "sha": "12c40e218124a8e9eb11183596c7cc30b92c92a71e5e67be62d8cd41d27abb9c",
  "repo_slug": "mpagot/os-autoinst-distri-opensuse-skills",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_mpagot_os_autoinst_distri_opensuse_skill_6e1dec67/readme"
}