Community程式設計與開發github.com

Gentleman-Programming/gentle-ai-issue-creation

從倉庫證據建立並分類 GitHub 議題。觸發條件:議題建立、錯誤回報、功能請求或議題核准。

gentle-ai-issue-creation 是什麼?

此技能會自動化 GitHub 議題的建立與分類流程,確保完全遵循目標倉庫的貢獻工作流程。它會先以唯讀方式檢查身份驗證、倉庫設定、標籤與貢獻範本,然後將調查結果對應到倉庫提供的 YAML 表單或 Markdown 範本。技能會以結構化方式收集答案,避免空白勾選,並在發佈前進行隱私審查/編輯。它支援使用 `gh` CLI 進行單次建立嘗試,並透過回讀驗證來確認議題確實建立在目標主機上。此技能目的在於防止重複、格式錯誤的輸入或意外的公開操作,使其成為開發者工具生態系(如 Claude Code、Cursor 或 Codex)中可靠議題管理的安全選擇。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Gentleman-Programming/gentle-shell/tree/main/skills/issue-creation

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

議題建立

核心規則

在提議或發佈之前,先探索目標倉庫的貢獻工作流程。YAML 議題表單是預設自動化路徑的格式權威:將審查過的答案具體化為私有的 BODY_FILE,並使用 --body-file 發佈。

安全探索

先執行唯讀檢查:

gh auth status
REPO="$(gh repo view --json nameWithOwner -q .nameWithOwner)"
REPO_URL="$(gh repo view --json url -q .url)"
HOST="${REPO_URL#*://}"
HOST="${HOST%%/*}"
TARGET="$HOST/$REPO"
gh repo view --json nameWithOwner,url,hasDiscussionsEnabled,hasIssuesEnabled,isBlankIssuesEnabled
git ls-files README.md CONTRIBUTING.md CONTRIBUTING.* .github/CONTRIBUTING.md .github/ISSUE_TEMPLATE .github/ISSUE_TEMPLATE/config.yml
gh api --hostname "$HOST" --paginate "repos/$REPO/labels?per_page=100" --jq '.[].name'

檢查 README.md、貢獻說明、.github/ISSUE_TEMPLATE/config.yml 聯絡連結、表單、標籤,以及已開啟和已關閉的議題。對於問題/支援,如果可用,請遵循倉庫規定的 Discussions/聯絡路由;否則請詢問或停止。完成 REPO、HOST 和 TARGET 的目標驗證。當身份驗證、目標驗證、議題可用性、政策、表單選擇或必要中繼資料遺失或不明確時,在進行變更前請失敗關閉。僅當 isBlankIssuesEnabled 明確為 true 時,才允許使用空白後備方案。

僅從已審查過且政策允許參與者套用的標籤建立 LABEL_ARGS:

LABEL_ARGS=()
LABEL_ARGS+=(--label "$LABEL") # 僅對每個允許發現的標籤重複。

重複與表單決定

  1. 用一句話描述報告,推導出 QUERY,然後在已開啟和已關閉的議題中完成一次重複搜尋:

    gh issue list --repo "$TARGET" --state all --search "$QUERY" --limit 1000
    

    代理人必須主動完成重複搜尋並保留其結果的證據。如果結果已飽和或完整性不確定,請縮小唯讀搜尋範圍或停止。如果確認重複,請在該議題上留言,而不是建立新議題。在已確認的重複議題上留言之前,請對確切的留言內容執行與發佈時相同的隱私掃描/編輯。

  2. 僅當倉庫提供的某個表單的聲明用途相符時,才選擇它。如果多個表單相符且政策未區分它們,請停止並要求決策。

  3. 對於 YAML 表單,讀取其架構並按聲明順序建立控制項。僅支援 input、textarea、dropdown 和 checkboxes。Markdown 控制項是非答案指導:在收集和具體化相鄰答案時,請遵守其可見指示,但不要將其渲染為回應區段。如果必要的結構或答案格式錯誤、不受支援、遺失或不明確,請在變更前失敗關閉。格式錯誤的架構,或遺失或不明確的必要答案,都會失敗關閉:請勿開啟瀏覽器或進行變更。僅當使用者明確要求瀏覽器完成,或自動化路徑無法安全/忠實地呈現語法有效的所選表單時,瀏覽器轉交才可用;否則請報告自動化不安全的原因並停止。

控制項必要處理方式
input / textarea保留可見標籤。當 validations.required 為 true 時需要回答;否則渲染 _No response_。
dropdown保留可見標籤和選項。需要確切的所選選項文字;單選有一個選項,多選則按聲明的選項順序保留選取。必要的下拉選單需要至少一個有效選取;可選的下拉選單若無選取則渲染 _No response_。
checkboxes保留可見標籤和每個選項,格式為 - [x] 或 - [ ] 並按聲明順序排列。強制執行個別必要的核取方塊。對於代理人可驗證的操作選項,請主動完成動作並僅以保留的證據標記;代理人只能明確證明其自身有證據支持的工作,且不得將其行動歸因於使用者。個人事實、同意、法律聲明及其他第一人稱的使用者斷言需要明確的使用者確認;對於此類使用者聲明,需要明確的第一人稱確認。不要全部勾選核取方塊:發佈請求並不確認任何核取方塊。

對於每個答案,渲染 ### <visible label> 及其具體化的值。對於 textarea.attributes.render,請使用聲明的語言和足夠長的圍欄來包裹答案。切勿編造答案、選取、確認或標籤。

Markdown 範本只能從已知證據完成到同一個私有的 BODY_FILE。如果沒有相符的範本,則僅在明確啟用空白議題時使用審查過的結構化空白後備方案;否則停止而不發佈。

審查與發佈

在單次建立嘗試之前,審查目標、標題、所選表單或允許的後備方案、確切內文以及允許的標籤。代理人必須在發佈前立即完成對確切內文的隱私掃描/編輯並保留其證據:將私有專案名稱、使用者名稱、主機名稱、家目錄路徑、憑證和私有網路位址替換為有用的預留位置,同時保留重現結構。

在倉庫外部建立一個僅限擁有者的暫存目錄,用於存放兩個私有檔案;限制為目前使用者,並在每次退出/結束時清理這兩個檔案:

umask 077
REPO_ROOT="$(git rev-parse --show-toplevel)" || exit 1
REPO_ROOT="$(cd "$REPO_ROOT" && pwd -P)" || exit 1
if [ "$REPO_ROOT" = "/" ]; then
  printf '%s\n' "Temporary directory is inside the repository" >&2; exit 1
fi
TMP_DIR="$(TMPDIR=/tmp mktemp -d /tmp/gentle-ai-issue.XXXXXXXX)" || exit 1
trap 'rm -rf -- "$TMP_DIR"' EXIT
TMP_DIR_REAL="$(cd "$TMP_DIR" && pwd -P)" || exit 1
case "$TMP_DIR_REAL/" in
  "$REPO_ROOT/") printf '%s\n' "Temporary directory is inside the repository" >&2; exit 1 ;;
esac
chmod 700 "$TMP_DIR_REAL"
BODY_FILE="$TMP_DIR_REAL/body.md"
READBACK_FILE="$TMP_DIR_REAL/readback.json"

透過自動化路徑進行一次變更嘗試,並僅發佈一次:

gh issue create --repo "$TARGET" --title "$TITLE" --body-file "$BODY_FILE" "${LABEL_ARGS[@]}"

當根據上述表單決定允許瀏覽器完成時,可選的、獨立的瀏覽器轉交可以開啟倉庫表單。它絕不能證明已發佈,也絕不能回應格式錯誤的架構或遺失/不明確的必要答案:

gh issue create --repo "$TARGET" --web

請勿重試逾時、網路失敗、遺失身份或其他不確定的結果。擷取返回的議題編號,然後在報告成功之前從已驗證的目標主機讀回該議題:

gh issue view "$NUMBER" --repo "$TARGET" --json number,url,title,body,state,labels >"$READBACK_FILE"

確認回讀能識別目標主機上的議題,且標題和內文在僅進行 CRLF 轉 LF 和結尾換行正規化後相符。僅在目標主機回讀之後才報告 confirmed。否則,當權威性的拒絕證明未建立議題時報告 no_write,或報告 unknown 並停止所有後續變更。

分類

在核准或關閉議題之前,請驗證其是否具體、不重複、有充分證據、在範圍內,且與倉庫的標籤/狀態政策一致。如果任何點不確定,請保留倉庫審查狀態,並請求最小的遺失證據。

Individual skills in this repo

This repo contains 7 individual skills — each has its own dedicated page.

相關技能