skill-system-github
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSkill System GitHub
GitHub技能系统
Run consistent GitHub operations through with explicit safety checks for workflow writes and predictable return shapes.
gh通过执行标准化的GitHub操作,针对工作流写入操作提供明确的安全检查,并返回可预测格式的结果。
ghDecision Matrix
决策矩阵
| Task Intent | Operation | Primary Backend | Notes |
|---|---|---|---|
| Create/list/comment/close/reopen issues | | | Check duplicates before creating new issues |
| Create/update/delete labels, apply labels to issue | | | Confirm destructive delete before execution |
| Bootstrap/update issue templates | | file read/write tools | Edit |
| List/check/create/update workflows | | | Run |
| Decide workflow push path based on token scope | | | Use API fallback when |
| 任务目标 | 操作 | 核心后端工具 | 说明 |
|---|---|---|---|
| 创建/列出/评论/关闭/重新打开Issue | | | 创建新Issue前检查是否重复 |
| 创建/更新/删除标签、为Issue添加标签 | | | 执行删除操作前需确认 |
| 初始化/更新Issue模板 | | 文件读写工具 | 直接编辑 |
| 列出/检查/创建/更新工作流 | | | 推送工作流变更前运行 |
| 根据令牌权限范围决定工作流推送路径 | | | 当缺少 |
Core Patterns
核心模式
Pattern 1: Resolve repository and perform issue operation
模式1:解析仓库并执行Issue操作
bash
gh issue list --repo <owner/repo> --state open --limit 50
gh issue create --repo <owner/repo> --title "<title>" --body "<body>"bash
gh issue list --repo <owner/repo> --state open --limit 50
gh issue create --repo <owner/repo> --title "<title>" --body "<body>"Pattern 2: Label lifecycle and issue label application
模式2:标签生命周期与Issue标签应用
bash
gh label create "<name>" --repo <owner/repo> --description "<desc>" --color "<hex>"
gh label edit "<name>" --repo <owner/repo> --new-name "<new>" --description "<desc>" --color "<hex>"
gh issue edit --repo <owner/repo> <number> --add-label "<label1>,<label2>"bash
gh label create "<name>" --repo <owner/repo> --description "<desc>" --color "<hex>"
gh label edit "<name>" --repo <owner/repo> --new-name "<new>" --description "<desc>" --color "<hex>"
gh issue edit --repo <owner/repo> <number> --add-label "<label1>,<label2>"Pattern 3: Workflow visibility and recent run checks
模式3:工作流可见性与最近运行记录检查
bash
gh workflow list --repo <owner/repo>
gh run list --repo <owner/repo> --workflow "<name>" --limit 5bash
gh workflow list --repo <owner/repo>
gh run list --repo <owner/repo> --workflow "<name>" --limit 5Pattern 4: Workflow scope gate before writing .github/workflows/*
.github/workflows/*模式4:写入.github/workflows/*
前的工作流权限校验
.github/workflows/*bash
gh auth status
gh api repos/<owner>/<repo>/contents/.github/workflows/<file> \
--method PUT \
-f message="update workflow via api" \
-f content="<base64-content>" \
-f branch="<branch>"bash
gh auth status
gh api repos/<owner>/<repo>/contents/.github/workflows/<file> \
--method PUT \
-f message="update workflow via api" \
-f content="<base64-content>" \
-f branch="<branch>"Guidelines
指导原则
- Always resolve first; infer from
owner/repowhen not provided.git remote get-url origin - Always check duplicate issue titles before issue creation.
- Always ask for explicit confirmation before label deletion.
- Always run before workflow writes that require push permissions.
safety-check - Always use file tools for and
.github/ISSUE_TEMPLATE/*edits..github/workflows/* - Never include secrets in issue/comment/template/workflow bodies.
- Return structured output with ,
status, andurlfields for all operations.error
skill
{
"schema_version": "2.0",
"id": "skill-system-github",
"version": "1.0.0",
"capabilities": ["github-issue", "github-label", "github-template", "github-workflow", "github-safety"],
"effects": ["net.fetch", "proc.exec", "git.read", "fs.read", "fs.write"],
"operations": {
"manage-issues": {
"description": "Create, list, comment on, close, or reopen GitHub issues with duplicate detection before create.",
"input": {
"action": { "type": "string", "required": true, "description": "One of: create, list, comment, close, reopen" },
"repo": { "type": "string", "required": false, "description": "Target repo in owner/repo format" },
"title": { "type": "string", "required": false, "description": "Issue title for create" },
"body": { "type": "string", "required": false, "description": "Issue body for create or comment body" },
"number": { "type": "number", "required": false, "description": "Issue number for comment/close/reopen" },
"state": { "type": "string", "required": false, "description": "Issue listing state: open, closed, all" },
"limit": { "type": "number", "required": false, "description": "List limit" },
"label": { "type": "string", "required": false, "description": "Optional label filter for listing" }
},
"output": {
"description": "Operation status and issue URL when applicable.",
"fields": { "status": "string", "url": "string", "error": "string" }
},
"entrypoints": {
"agent": "scripts/manage-issues.md"
}
},
"manage-labels": {
"description": "Create, update, delete labels, and apply labels to issues in a GitHub repository.",
"input": {
"action": { "type": "string", "required": true, "description": "One of: create, update, delete, apply" },
"repo": { "type": "string", "required": false, "description": "Target repo in owner/repo format" },
"name": { "type": "string", "required": false, "description": "Label name for create/update/delete" },
"new_name": { "type": "string", "required": false, "description": "New label name for update" },
"description": { "type": "string", "required": false, "description": "Label description for create/update" },
"color": { "type": "string", "required": false, "description": "Hex color without #, for create/update" },
"number": { "type": "number", "required": false, "description": "Issue number for apply" },
"labels": { "type": "string", "required": false, "description": "Comma-separated labels for apply" },
"confirm_delete": { "type": "boolean", "required": false, "description": "Explicit confirmation for delete" }
},
"output": {
"description": "Operation status and optional resource URL.",
"fields": { "status": "string", "url": "string", "error": "string" }
},
"entrypoints": {
"agent": "scripts/manage-labels.md"
}
},
"manage-templates": {
"description": "Bootstrap and update repository issue templates under .github/ISSUE_TEMPLATE.",
"input": {
"action": { "type": "string", "required": true, "description": "One of: bootstrap, update" },
"repo": { "type": "string", "required": false, "description": "Target repo in owner/repo format" },
"template_type": { "type": "string", "required": false, "description": "Template selector: bug_report, feature_request, config" },
"content": { "type": "string", "required": false, "description": "Updated YAML content for update action" }
},
"output": {
"description": "Operation status and changed path details.",
"fields": { "status": "string", "url": "string", "error": "string" }
},
"entrypoints": {
"agent": "scripts/manage-templates.md"
}
},
"manage-workflows": {
"description": "List or check workflow runs and create/update workflow YAML files safely.",
"input": {
"action": { "type": "string", "required": true, "description": "One of: list, check, create, update" },
"repo": { "type": "string", "required": false, "description": "Target repo in owner/repo format" },
"workflow_name": { "type": "string", "required": false, "description": "Workflow display name or filename for check/update" },
"workflow_file": { "type": "string", "required": false, "description": "Workflow filename under .github/workflows" },
"content": { "type": "string", "required": false, "description": "Workflow YAML content for create/update" },
"branch": { "type": "string", "required": false, "description": "Branch for API fallback updates" }
},
"output": {
"description": "Operation status and workflow URL when available.",
"fields": { "status": "string", "url": "string", "error": "string" }
},
"entrypoints": {
"agent": "scripts/manage-workflows.md"
}
},
"safety-check": {
"description": "Check gh auth token scopes for workflow writes and choose push or gh api fallback path.",
"input": {
"repo": { "type": "string", "required": false, "description": "Target repo in owner/repo format" },
"workflow_file": { "type": "string", "required": false, "description": "Workflow filename to write under .github/workflows" },
"workflow_content": { "type": "string", "required": false, "description": "Workflow YAML content used for API fallback" },
"branch": { "type": "string", "required": false, "description": "Target branch name" },
"commit_message": { "type": "string", "required": false, "description": "Commit message for API fallback" }
},
"output": {
"description": "Decision and recommended write path.",
"fields": { "status": "string", "url": "string", "error": "string" }
},
"entrypoints": {
"agent": "scripts/safety-check.md"
}
}
},
"stdout_contract": {
"last_line_json": false,
"note": "Agent-executed operations; procedures are defined in markdown entrypoint scripts."
}
}- 始终优先解析;当未提供时,从
owner/repo中推断。git remote get-url origin - 创建Issue前始终检查标题是否重复。
- 删除标签前始终要求明确确认。
- 执行需要推送权限的工作流写入操作前,始终运行。
safety-check - 编辑和
.github/ISSUE_TEMPLATE/*时始终使用文件工具。.github/workflows/* - 切勿在Issue、评论、模板或工作流内容中包含敏感信息。
- 所有操作返回包含、
status和url字段的结构化输出。error
skill
{
"schema_version": "2.0",
"id": "skill-system-github",
"version": "1.0.0",
"capabilities": ["github-issue", "github-label", "github-template", "github-workflow", "github-safety"],
"effects": ["net.fetch", "proc.exec", "git.read", "fs.read", "fs.write"],
"operations": {
"manage-issues": {
"description": "Create, list, comment on, close, or reopen GitHub issues with duplicate detection before create.",
"input": {
"action": { "type": "string", "required": true, "description": "One of: create, list, comment, close, reopen" },
"repo": { "type": "string", "required": false, "description": "Target repo in owner/repo format" },
"title": { "type": "string", "required": false, "description": "Issue title for create" },
"body": { "type": "string", "required": false, "description": "Issue body for create or comment body" },
"number": { "type": "number", "required": false, "description": "Issue number for comment/close/reopen" },
"state": { "type": "string", "required": false, "description": "Issue listing state: open, closed, all" },
"limit": { "type": "number", "required": false, "description": "List limit" },
"label": { "type": "string", "required": false, "description": "Optional label filter for listing" }
},
"output": {
"description": "Operation status and issue URL when applicable.",
"fields": { "status": "string", "url": "string", "error": "string" }
},
"entrypoints": {
"agent": "scripts/manage-issues.md"
}
},
"manage-labels": {
"description": "Create, update, delete labels, and apply labels to issues in a GitHub repository.",
"input": {
"action": { "type": "string", "required": true, "description": "One of: create, update, delete, apply" },
"repo": { "type": "string", "required": false, "description": "Target repo in owner/repo format" },
"name": { "type": "string", "required": false, "description": "Label name for create/update/delete" },
"new_name": { "type": "string", "required": false, "description": "New label name for update" },
"description": { "type": "string", "required": false, "description": "Label description for create/update" },
"color": { "type": "string", "required": false, "description": "Hex color without #, for create/update" },
"number": { "type": "number", "required": false, "description": "Issue number for apply" },
"labels": { "type": "string", "required": false, "description": "Comma-separated labels for apply" },
"confirm_delete": { "type": "boolean", "required": false, "description": "Explicit confirmation for delete" }
},
"output": {
"description": "Operation status and optional resource URL.",
"fields": { "status": "string", "url": "string", "error": "string" }
},
"entrypoints": {
"agent": "scripts/manage-labels.md"
}
},
"manage-templates": {
"description": "Bootstrap and update repository issue templates under .github/ISSUE_TEMPLATE.",
"input": {
"action": { "type": "string", "required": true, "description": "One of: bootstrap, update" },
"repo": { "type": "string", "required": false, "description": "Target repo in owner/repo format" },
"template_type": { "type": "string", "required": false, "description": "Template selector: bug_report, feature_request, config" },
"content": { "type": "string", "required": false, "description": "Updated YAML content for update action" }
},
"output": {
"description": "Operation status and changed path details.",
"fields": { "status": "string", "url": "string", "error": "string" }
},
"entrypoints": {
"agent": "scripts/manage-templates.md"
}
},
"manage-workflows": {
"description": "List or check workflow runs and create/update workflow YAML files safely.",
"input": {
"action": { "type": "string", "required": true, "description": "One of: list, check, create, update" },
"repo": { "type": "string", "required": false, "description": "Target repo in owner/repo format" },
"workflow_name": { "type": "string", "required": false, "description": "Workflow display name or filename for check/update" },
"workflow_file": { "type": "string", "required": false, "description": "Workflow filename under .github/workflows" },
"content": { "type": "string", "required": false, "description": "Workflow YAML content for create/update" },
"branch": { "type": "string", "required": false, "description": "Branch for API fallback updates" }
},
"output": {
"description": "Operation status and workflow URL when available.",
"fields": { "status": "string", "url": "string", "error": "string" }
},
"entrypoints": {
"agent": "scripts/manage-workflows.md"
}
},
"safety-check": {
"description": "Check gh auth token scopes for workflow writes and choose push or gh api fallback path.",
"input": {
"repo": { "type": "string", "required": false, "description": "Target repo in owner/repo format" },
"workflow_file": { "type": "string", "required": false, "description": "Workflow filename to write under .github/workflows" },
"workflow_content": { "type": "string", "required": false, "description": "Workflow YAML content used for API fallback" },
"branch": { "type": "string", "required": false, "description": "Target branch name" },
"commit_message": { "type": "string", "required": false, "description": "Commit message for API fallback" }
},
"output": {
"description": "Decision and recommended write path.",
"fields": { "status": "string", "url": "string", "error": "string" }
},
"entrypoints": {
"agent": "scripts/safety-check.md"
}
}
},
"stdout_contract": {
"last_line_json": false,
"note": "Agent-executed operations; procedures are defined in markdown entrypoint scripts."
}
}