Help us improve
Share bugs, ideas, or general feedback.
From infrahub
Reports bugs and feature requests against Infrahub-ecosystem GitHub repos by classifying, routing, and searching for duplicates. Triggers when a user wants to file an issue.
npx claudepluginhub opsmill/claude-marketplace --plugin infrahubHow this skill is triggered — by the user, by Claude, or both
Slash command
/infrahub:infrahub-reporting-issuesThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Help the user file a bug report or feature request
Creates GitHub or GitLab issues with code references, media attachments, labels, and session context. Auto-detects repo from git remote for bug reports or feature requests.
Open-source issue creation: bug reports, feature requests, and structured contribution communication. Invoke whenever task involves any interaction with issues in external repositories — filing bugs, proposing features, reporting problems, or preparing issue content for open-source projects.
Creates GitHub issues in WaterplanAI/agentic-config repo for bugs and feature requests using GitHub CLI. Handles templates, explicit args, or extracts from conversation context. Invoke via /ac-issue.
Share bugs, ideas, or general feedback.
Help the user file a bug report or feature request against the correct Infrahub-ecosystem repository on GitHub. The skill does not auto-submit — it prepares a complete, sanitized issue and stops at the user's review gate. Submission only happens after the user explicitly approves both the content and the submission method.
The ecosystem has 11 candidate repos. Most users will not know which one owns their problem. The skill's job is to make a confident guess from local-repo context, confirm it with the user, search for duplicates, and produce a draft that matches the target repo's intake form.
Trigger this skill when the user says things like:
Do not trigger if the user is debugging locally and hasn't expressed an intent to file an issue. Filing is the action that distinguishes this skill from general troubleshooting.
Follow these steps in order. Stop at every user-gate step — never proceed past one without explicit confirmation.
Ask the user to describe the problem in their own words if they haven't already. Don't probe yet — just listen. Take note of any product names, version numbers, error messages, or workflow context they mention; they feed every later step.
Decide whether this is a bug, feature request, or question/usage help. Use 1-2 follow-ups only if classification is ambiguous:
If the user describes a workaround they're already using, lean toward "feature request" (the bug has a workaround → real problem is the missing ergonomics). If the user describes a crash, wrong output, or 500-level error, lean toward "bug". If the user is asking how to do something, route them to Discord/discussions instead of filing an issue — don't open issues for support questions.
Read reference.md for the full 11-repo registry,
detection cues, and template availability. Apply this
detection logic in order:
infrahub.toml, pyproject.toml deps,
galaxy.yml, .claude-plugin/plugin.json, etc.)The default-to-main rule: if detection is
ambiguous, if multiple repos match equally, if the
user expresses any uncertainty about which component
is at fault, or if the symptom plausibly lives at
the platform layer — default to opsmill/infrahub.
The main repo can re-route an incoming issue to a
sub-repo more easily than a sub-repo can re-route
back. Erring toward main is cheaper than erring
toward a wrong specialized repo.
Present your guess to the user with a one-sentence rationale and ask them to confirm or correct. Example:
"Based on
infrahub-sdkin yourpyproject.tomland the error mentioningInfrahubClient, this looks like anopsmill/infrahub-sdk-pythonissue. Confirm?"
Always search both bugs and features. Use the first available method:
gh CLI — gh search issues --repo <owner/repo> --state all "<keywords>". Pull keywords from the
user's description plus any error message strings.
Run a second pass with synonyms if the first
returns nothing.gh is not installed,
use whichever GitHub MCP tool is available in the
user's environment.Show the user the top 3-5 matches with title, state (open/closed), and a one-line excerpt. Ask:
"Is your issue covered by any of these? If yes, we'll add a comment instead of opening a new one."
If a match exists, switch to comment mode: prepare a comment that adds the user's new information (their version, reproduction, etc.) to the existing issue. Otherwise, proceed.
For features, skip this step. For bugs, collect only:
macOS 14 arm64, Ubuntu 22.04 x86_64).That's it. Do not collect file paths, project
structure, logs verbatim, env dumps, docker compose ps output, or anything that could leak
internal state. The
environment-info-sanitization rule
governs what is and is not allowed in the issue body
— read it before composing the bug section.
Where to find versions:
| Component | Command |
|---|---|
| Infrahub server | infrahubctl --version, or check image: tag in compose file |
| Python SDK | pip show infrahub-sdk |
| Ansible collection | ansible-galaxy collection list opsmill.infrahub |
| Nornir plugin | pip show nornir-infrahub |
| Helm chart | helm list -n <namespace> |
| infrahub-sync | infrahub-sync --version |
| infrahub-backup | infrahub-backup --version |
| MCP server | check MCP client config or pip show infrahub-mcp |
| VS Code extension | Extensions panel in VS Code |
| Skills plugin | .claude-plugin/plugin.json version field |
If a version can't be determined cleanly, mark it
unknown rather than guessing or running broader
discovery commands.
If the target repo has a .github/ISSUE_TEMPLATE/
directory, fetch the matching template (bug_report.yml
for bugs, feature_request.yml for features) and
follow its form fields. Use:
gh api repos/<owner>/<repo>/contents/.github/ISSUE_TEMPLATE/bug_report.yml --jq '.content' | base64 -d
Repos that ship issue templates:
opsmill/infrahubopsmill/infrahub-sdk-pythonopsmill/infrahub-ansibleopsmill/nornir-infrahubRepos without templates fall back to
templates/bug.md or templates/feature.md in this
skill.
Title conventions: use the form
<area>: <imperative summary>, keep it under 72
characters, no trailing punctuation. Examples:
SDK: InfrahubClient.create() raises on empty list payloadSchema: hierarchical generic loses parent on renameDocs: clarify human_friendly_id behavior for inherited nodesPresent the rendered issue to the user. Show:
Ask: "Does the content look right? Anything to add or remove before we proceed?"
Do not skip this step. Iterate with the user until they explicitly approve the content.
Once content is approved, ask the user how they want to submit:
gh issue create — direct via the CLI. Use
gh issue create --repo <owner/repo> --title "..." --body "...". Show the resulting URL.https://github.com/<owner>/<repo>/issues/new.Never assume a default — always ask. After the user picks a method, execute it.
After submission, give the user:
| Prefix | Category | Description |
|---|---|---|
| env | Environment info | What can and cannot appear in issue bodies |
See rules/_sections.md for the index.
.github/ISSUE_TEMPLATE/.opsmill/infrahub and let the maintainers
re-route. Wrong sub-repo issues create more work
for everyone.docker compose output.
These leak hostnames, IPs, container names, and
sometimes secrets. Stick to versions + OS for v1.