一键导入
openspec-sync-github-issues
Synchronize OpenSpec specs with bound GitHub issues, and enforce frequent commits while applying changes.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Synchronize OpenSpec specs with bound GitHub issues, and enforce frequent commits while applying changes.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Apply the Battle Ops tactical brand to UI work, including theme tokens, logo usage, PrimeNG styling, and microcopy.
Orchestrates Aspire distributed applications using the Aspire CLI for running, debugging, deploying, and managing distributed apps. USE FOR: aspire start, aspire stop, start aspire app, aspire describe, list aspire integrations, debug aspire issues, view aspire logs, add aspire resource, aspire dashboard, update aspire apphost, aspire publish, aspire deploy, aspire secrets, aspire config. DO NOT USE FOR: non-Aspire .NET apps (use dotnet CLI), container-only deployments (use docker/podman). INVOKES: Aspire CLI commands (aspire start, aspire describe, aspire otel logs, aspire docs search, aspire add, aspire publish, aspire deploy), bash. FOR SINGLE OPERATIONS: Use Aspire CLI commands directly for quick resource status or doc lookups.
| name | openspec-sync-github-issues |
| description | Synchronize OpenSpec specs with bound GitHub issues, and enforce frequent commits while applying changes. |
| license | MIT |
| compatibility | Requires openspec CLI and a GitHub MCP server with the `issues` toolset enabled and write operations available. |
| metadata | {"author":"nikneem","version":"1.0","generatedBy":"manual"} |
Synchronize OpenSpec specs with GitHub issues.
This skill supports two workflows:
GitHub issues are never imported automatically. If the user wants an issue represented as a spec, pull it in manually by reading the issue and writing the spec yourself.
A spec only syncs back to GitHub when it is explicitly bound to an issue. A spec is considered bound only when it contains this exact marker near the top of the file:
<!-- openspec:github-issue owner/repo#123 -->
Do not overwrite the entire issue body blindly. Manage only a bounded section in the issue body between these markers:
<!-- openspec-sync:start -->
<!-- openspec-sync:end -->
Preserve any user-written text outside that managed block.
When applying changes, commit frequently. Create small, coherent commits after every meaningful unit of progress. Do not wait until the end.
When recovering from a mistake, use a sarcastic commit message. Keep it playful, not hostile.
Before doing any sync work:
Confirm the repository owner and repo name.
Confirm GitHub MCP can write issues.
issues toolsetIdentify the target spec file.
openspec/changes/<change>/specs/<capability>/spec.mdUse this when the user says a GitHub issue should become a spec.
Read the GitHub issue with GitHub MCP. Capture:
Decide where the spec belongs.
Write the spec manually in normal OpenSpec format.
Bind the spec to the issue by inserting this marker near the top:
<!-- openspec:github-issue owner/repo#123 -->
Optionally include a short provenance note directly below the marker:
> Synced from GitHub issue #123 by manual import.
If the issue is now represented by the spec, update the issue body's managed block to point back to the spec path and summarize the imported requirements.
Commit immediately after the import.
Use this whenever a bound spec changes.
A spec is eligible for GitHub sync only if it contains:
<!-- openspec:github-issue owner/repo#123 -->
Parse owner, repo, and issue number from that marker. If the marker is missing, do not sync.
Whenever the bound spec changes, update the linked issue's managed block so it reflects:
openspec/changes/<change>/...tasks.md exists and is easy to inferGenerate or replace only this block:
<!-- openspec-sync:start -->
## OpenSpec sync
- Spec: `openspec/.../spec.md`
- Change: `add-example-change`
- Last synced from branch: `<branch-name>`
### Requirements
- Requirement A: ...
- Requirement B: ...
### Scenarios
- Scenario: ...
- Scenario: ...
<!-- openspec-sync:end -->
When this skill is used during implementation, it adds two behaviors:
Commit after any of these:
Do not batch unrelated work into one commit.
When a task changes both code and a bound spec:
Use concise, convenient messages that explain the change plainly.
Good patterns:
spec(game-lobbies): sync issue #123 with lobby join rulesfeat(lobby): allow guest join by game codefix(auth): renew anonymous player tokenchore(tasks): mark lobby lifecycle task 3 doneIf you made a mistake and are correcting or reverting it, intentionally use a sarcastic commit message.
Examples:
fix: undo my brilliant mistakefix: apparently that assumption was nonsenserevert: because that went spectacularly wrongfix(sync): correct the mess I just madeKeep it witty, not cruel, and still understandable in git history.
For each implementation step:
If a mistake is discovered:
When this skill is active, keep the user updated with:
Example:
Bound spec detected: `openspec/changes/add-games-lobby-lifecycle/specs/game-lobbies/spec.md` -> `nikneem/battleship-on-aspire#123`
Synced managed issue block successfully.
Committed:
`spec(game-lobbies): sync issue #123 with lobby join rules`
If sync is blocked:
The spec is bound to `nikneem/battleship-on-aspire#123`, but the current GitHub MCP configuration appears read-only.
I updated the spec locally and committed the change, but the GitHub issue still needs a sync once write-capable MCP access is available.