Create a small issue-management system that fits the target repository. This skill
works in Claude Code and Codex using ordinary file operations and available GitHub
tools; GitHub CLI (gh) is a fallback, not a required agent-specific integration.
Resolve paths in this document relative to this skill’s directory.
Read the target repository’s AGENTS.md, CLAUDE.md, contribution guide, existing
issue templates, and issue-management instructions. Inspect the working tree before
editing. Resolve the intended GitHub repository from the user’s request and remotes;
if a fork or several remotes make the destination ambiguous, prepare local files
and ask which remote to use before changing GitHub.
Use the repository’s required GitHub account, if specified. Before authenticated GitHub operations, verify the active login with the same credentials used for those operations. Do not change a global account as a shortcut.
Read references/taxonomy.md for definitions and examples. Start from these defaults and preserve an established equivalent convention:
| Axis | Default | Where it lives |
|---|---|---|
| Work type | bug, feature, improvement, maintenance, docs | Exactly one type:* label |
| Review needed | needs-triage, needs-info |
Labels |
| Priority | P0, P1, P2, P3; unset until assessed | Existing Priority field, otherwise priority:* labels |
| Progress | Backlog, Ready, In progress, Done | Existing board if present |
Do not create a board just to represent progress. With no board, open/closed issues,
assignees, and linked PRs are sufficient until a board is requested. If a board is
already established, retain its status options; In review is optional.
type:* labels. This works independently of organization administration.type:* labels by default.priority:* labels.Area labels, Impact/Severity, customers, platforms, versions, contributor labels, release blockers, and automatic stale closing are extensions, not baseline defaults. Add them only when supported by the repository’s needs or requested explicitly. Do not import domains, customer names, or operating rules from a different project.
Use the prose language already used by the repository unless the user specifies another. Translate form names, field text, label descriptions, and the guide; keep chosen label identifiers stable. The bundled assets are English starting points.
If the target has no local issue templates or chooser configuration, inspect the
effective owner-level .github repository before creating local files. This
repository is internal for organizations with managed users and public for other
eligible accounts.
A valid local template or config.yml disables the entire inherited
.github/ISSUE_TEMPLATE/ directory. Carry forward its forms, contact links, and
security-reporting guidance in the local replacement. If inherited defaults cannot
be inspected, report that limitation before publishing the replacement; missing
local files do not prove that no effective templates exist.
.github/labels.json from assets/labels.json, including
only the selected labels. Exclude type:* for native-type-only setups and
priority:* when a Priority field is used. Match existing names when equivalent.
This file is a desired-label manifest, not an automatic synchronization service..github/ISSUE_TEMPLATE/. Map every form label to the name selected in
step 1, including work-type labels and the triage label (needs-triage by default),
so both forms match the manifest when reusing equivalent existing names.
When using native Issue Types, set each form’s top-level type to its verified
organization type name. In native-type-only mode, omit work-type labels.
Keep the feature form for new capabilities. Route improvements to blank issues,
with maintainers assigning the selected work type during triage.
Do not preassign priority, area, or people..github/ISSUE_TRIAGE.md with the selected definitions, type and
priority storage, what each form collects, and the review/close procedure from
the taxonomy reference. Document actual choices, not unused alternatives.Preserve existing files and user edits. Improve an equivalent existing form in place instead of adding a competing form. Inspect Markdown templates as well as YAML. Before setting native Issue Types in an existing Markdown template, verify that GitHub supports the intended metadata there. If automatic assignment is unavailable or unverified, retain the template and document manual type selection during triage, or convert it in place when in scope while preserving its content. Do not invent frontmatter keys or add a duplicate form to gain YAML-only functionality. For overlapping changes, merge compatible content and show any substantive policy conflict instead of overwriting it. Running the skill again should produce no duplicate forms, labels, or guide sections. Keep unrelated repository files intact.
Read references/github.md when reading or applying live
GitHub configuration. Discover available GitHub tools first; use gh if they do
not support the required operation. Verify the account and explicit owner/repo.
Read all current labels, then create only missing selected labels. Preserve existing colors and descriptions unless their update is requested; report any conflicts. Never delete or rename labels, force-sync the manifest, or relabel old issues as part of an initial setup. If a write fails, inspect live state before retrying; stop at an authentication/permission boundary rather than looping writes.
Local forms become active only after they reach the repository’s default branch. Do not claim that local files are already live, or push them without user scope.
type names against organization configuration
when accessible. Do not claim unverified names are available.needs-info requires a concrete request and that unknown priority is
allowed. Review the diff for overwrites or repeated artifacts.Report the target repository, changed files, selected model, checks actually run, and live changes separately from pending ones. Make any missing permissions or default-branch publication requirement explicit without labeling partial setup complete. Do not create test issues just to validate a form unless requested.