Classify issue type, activate the matching agent mode for type-specific drafting, and enforce shared safety gates before GitHub mutation.
43
43%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./.agents/skills/fusion-issue-authoring/SKILL.mdThis skill uses internal agent modes for type-specific drafting logic:
agents/bug.agent.md: bug-focused issue drafting and triage structureagents/feature.agent.md: feature-focused scope and acceptance structureagents/user-story.agent.md: role/workflow/scenario-driven story structureagents/task.agent.md: checklist-first task decomposition and dependency planningagents/devils-advocate.agent.md: always-on quality collaborator that raises key concerns after classification (moderate mode) and runs a full structured interview when explicitly asked, when scope/criteria gaps are significant, or when invoked from fusion-issue-task-planning with two or more architecture-ambiguity signals present (interrogator mode)Agent modes are activated internally based on issue type classification. Users never reference agent files directly. Shared gates (labels, assignee confirmation, draft review, publish confirmation, and mutation sequencing) remain in this skill.
Use when turning ideas, bugs, feature requests, or user needs into clear, actionable GitHub issues, and as top-level router for creating and updating issues.
Typical triggers:
Collect before publishing:
.tmp/ cache file (never committed).@me, specific person, or unassigned). Reuse cached assignee-candidate results; skip searches when user gave @me or exact login.If required details are missing, ask concise clarifying questions from references/questions.md.
If issue destination is unclear, ask explicitly where the issue should be created/updated before drafting mutation commands.
Classify request as Bug, Feature, User Story, or Task, then activate the matching agent mode:
agents/bug.agent.mdagents/feature.agent.mdagents/user-story.agent.mdagents/task.agent.mdIf ambiguous, ask only essential clarifying questions.
Devil's advocate pass: agents/devils-advocate.agent.md is always active in moderate mode — it surfaces the 2–3 most important concerns after classification without interrupting flow. When the user asks to be "grilled", says "stress-test this", when scope/criteria gaps are significant, or when invoked from fusion-issue-task-planning with two or more architecture-ambiguity signals present, escalate to interrogator mode for a full structured interview before the type-specific agent. The devil's advocate returns confirmed decisions and noted risks, then hands off to the type-specific drafting agent.
CONTRIBUTING.md, contribute/) that define default issue routing by type. Apply any routing rules found there before asking the user..github/ISSUE_TEMPLATE/)Run one focused duplicate search with mcp_github::search_issues and surface matches before drafting/publishing.
Do not run repeated broad duplicate scans unless the user changes scope/title materially.
Before writing, check user preferences and session memory for a preferred draft location. If a stored preference exists, use it. If no preference is found and the intent is ambiguous, ask once and remember the answer for the session. Default to .tmp/{TYPE}-{CONTEXT}.md when no preference is found and there is nothing to ask about. Write the draft using GitHub Flavored Markdown.
Before mutation, confirm:
@me, specific login, or unassigned)Shared gate cache policy:
owner/repo, fetch the repository label set once and cache it for the active session. Prefer /memories/session/<owner>-<repo>-labels.json when the host exposes session memory; otherwise use .tmp/issue-authoring-labels-<owner>-<repo>.json.mcp_github::issue_write call and handle a single rejection path.mcp_github::search_users when the user already gave @me or an exact GitHub login./memories/session/<owner>-<repo>-assignee-candidates.json or /memories/session/<owner>-assignee-candidates.json; otherwise use .tmp/issue-authoring-assignee-candidates-<owner>-<repo>.json.After explicit confirmation, execute MCP mutations in this order:
mcp_github::issue_write create/update with the full known payload (title, body, and include labels, assignees, type only when supported)mcp_github::issue_write only when required fields were unknown in step 1 and become available latermcp_github::sub_issue_write only when relationship/order changes are requestedmcp_github::add_issue_comment only when blocker/status notes are explicitly requestedIf mutation fails due to missing MCP server/auth/config:
references/mcp-server.mdRate-limit behavior:
API rate limit exceeded, secondary rate limit, GraphQL quota exhaustion).gh api/GraphQL retries when equivalent MCP capability exists.retry-after and x-ratelimit-reset headers before retrying any request.type rule:
type if the repository has issue types configured.mcp_github::list_issue_types only on cache miss or invalid cache.type for the rest of the session.Before linking:
Use detailed behavior and payload examples in references/instructions.md and references/mcp-server.md.
Use detailed authoring guidance in references/instructions.md.
Fallback template locations:
assets/issue-templates/bug.mdassets/issue-templates/feature.mdassets/issue-templates/user-story.mdassets/issue-templates/task*.md.tmp/Awaiting user content approval before any publish/update commandNever:
mcp_github::issue_write create/update without explicit user confirmationAlways:
owner/repo#123)fixes owner/repo#123, resolves owner/repo#123, or closes owner/repo#123)060e3af
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.