# Close Issue Flow

> Use this skill when the user asks to close an issue, wrap up an issue, "close issue", "close-issue-flow", or finish up after a fix has been merged. Requires Gitee MCP Server to be configured.

- Skill: `oschina/close-issue-flow` (Agent Skill)
- Install (CLI): `npx skillmds@latest add oschina/close-issue-flow`
- Raw SKILL.md: https://api.skillmd.com/api/skills/oschina/close-issue-flow/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: oschina (https://skillmd.com/u/oschina)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/oschina/close-issue-flow

---


> **Note**: If you have `mcporter` installed locally, you should use `mcporter` to invoke the MCP tool instead of directly calling the MCP tool. The `mcporter` CLI provides a more convenient interface and better error handling.

# Close Issue Flow via Gitee MCP

Execute the complete Issue closing workflow: verify the fix is merged → post a closing comment → update the Issue status.

## Prerequisites

- Gitee MCP Server configured (tools: `get_repo_issue_detail`, `list_repo_pulls`, `create_comment` (resource_type: issue), `update_issue`)
- User must provide: repository owner, repository name, Issue number
- Typically run after the related PR has been merged or the problem has been resolved

## Steps

### Step 1: Fetch Issue Details

Use `get_repo_issue_detail` to retrieve Issue information:
- Title, description, labels
- Current state (check if it's already closed)
- Existing comments (to understand how it was resolved)

If the Issue is already closed, notify the user and stop.

### Step 2: Confirm Linked PR Status

Use `list_repo_pulls` to query the repository's PRs, filtering for:
- State: `merged`
- Description containing `closes #[issue number]` or `fixes #[issue number]`

Based on the results:
- If a merged linked PR is found → confirm the fix is live
- If the related PR is still open → notify the user that the PR has not been merged yet
- If no linked PR exists → ask the user how the Issue was resolved

### Step 3: Post Closing Comment

Use `create_comment` (resource_type: issue) to post a closing note. Choose the appropriate template:

**When a linked PR was merged:**
```
This issue has been fixed and merged via PR #[number].

**Fix summary**: [brief description of the fix]

Thanks for the report! If the problem persists, feel free to reopen this issue or submit a new one.
```

**When resolved directly (no PR):**
```
This issue has been resolved.

**Solution**: [description of how it was resolved]

If the problem persists, feel free to reopen this issue or submit a new one.
```

**When unable to reproduce or request was declined:**
```
[Explanation, e.g., "Unable to reproduce this issue" or "After discussion, we've decided not to implement this feature at this time."]

If you have new information, feel free to reopen the issue with additional details.
```

### Step 4: Close the Issue

Use `update_issue` to update the Issue state:
- `state`: `closed`

Optionally:
- Update labels (e.g., add `fixed` or `resolved`)
- Assign to a milestone (add to a completed milestone)

### Step 5: Output Summary

```
## Issue Closed

- Issue: #[number] [title]
- Reason: [Fixed / Cannot reproduce / Declined]
- Linked PR: #[number] (if any)
- Closing comment posted ✅
- Issue status updated to closed ✅
```

## Notes

- Always confirm the issue is genuinely resolved before closing, to avoid premature closure
- When closing a bug reported by a user, thank them for the report
- When declining a feature request, explain the reason and close politely
- Using `closes #N` in a PR description will auto-close the Issue on merge — this skill is for cases where manual closure or an explanatory comment is needed

