원클릭으로
github-actions
GitHub Actions CI/CD 最佳實踐指南。當需要設定 workflow、cron 排程、GitHub Pages 部署、使用 Octokit API、或處理 rate limiting 時使用。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
GitHub Actions CI/CD 最佳實踐指南。當需要設定 workflow、cron 排程、GitHub Pages 部署、使用 Octokit API、或處理 rate limiting 時使用。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Zod v4 schema validation 最佳實踐指南。當需要定義 schema、驗證/解析 JSON 資料、type inference、或處理 unknown data 時使用。
Svelte 5 + Astro 整合最佳實踐指南。當需要建立 Svelte 元件、使用 runes API、整合 Astro islands、或用 Testing Library 測試 Svelte 元件時使用。
GitHub GraphQL API 最佳實踐指南。當需要使用 GraphQL 查詢使用者資料、處理 cursor pagination、計算 rate limit、或除錯 GraphQL errors 時使用。
gayanvoice/top-github-users 架構參考指南。當需要了解 GitHub 使用者排行榜的資料抓取管線、國家設定、排行計算邏輯、已知問題、或社群需求時使用。
Commander.js v14 CLI 框架最佳實踐。當需要建立 CLI 工具、解析命令列參數、設計 subcommands 時使用。
Globe.GL 3D 地球視覺化指南。當需要建立互動式 3D 地球、國家熱力圖、點擊導航、或整合 Astro 時使用。
| name | github-actions |
| description | GitHub Actions CI/CD 最佳實踐指南。當需要設定 workflow、cron 排程、GitHub Pages 部署、使用 Octokit API、或處理 rate limiting 時使用。 |
| Runner | OS | Node.js |
|---|---|---|
ubuntu-latest | Ubuntu 24.04 | Node 20(2026-06 起預設 Node 24) |
ubuntu-24.04 | Ubuntu 24.04(固定版本) | 同上 |
Node 20 EOL:2026-04。建議新專案直接用 Node 22。
on:
schedule:
- cron: '17 3 * * 1' # 每週一 03:17 UTC(避開整點)
workflow_dispatch: # 搭配手動觸發做測試
注意事項:
:00 — GitHub 尖峰負載,延遲較大。用 :17、:43 等偏移name: Deploy to GitHub Pages
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: 'npm'
- run: npm ci
- run: npm run build
- uses: actions/upload-pages-artifact@v4
with:
path: ./dist
deploy:
needs: build
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v4
必要:pages: write + id-token: write 權限、actions/upload-pages-artifact@v4。
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Generate data
run: node scripts/collect-data.js
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Commit and push
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add data/
git diff --staged --quiet || git commit -m "Update data [skip ci]"
git push
重要:
[skip ci] 防止無限觸發git diff --staged --quiet || git commit 避免空 commit 失敗import { Octokit } from '@octokit/rest';
import { throttling } from '@octokit/plugin-throttling';
import { retry } from '@octokit/plugin-retry';
const MyOctokit = Octokit.plugin(throttling, retry);
const octokit = new MyOctokit({
auth: process.env.GITHUB_TOKEN,
throttle: {
onRateLimit: (retryAfter, options) => {
console.warn(`Rate limit hit, retrying after ${retryAfter}s`);
return true;
},
onSecondaryRateLimit: (retryAfter, options) => {
console.warn(`Secondary rate limit hit`);
return true;
},
},
});
const { data } = await octokit.rest.search.users({
q: 'location:Taiwan followers:>10',
sort: 'followers',
order: 'desc',
per_page: 100,
page: 1,
});
// data.total_count, data.items[]
Rate limits:
@octokit/plugin-throttling 自動處理# 被觸發的 workflow
on:
workflow_run:
workflows: ["Data Collection"]
types: [completed]
- name: Trigger deploy
run: |
curl -X POST \
-H "Authorization: token ${{ secrets.PAT_TOKEN }}" \
https://api.github.com/repos/owner/repo/dispatches \
-d '{"event_type":"deploy"}'
注意:GITHUB_TOKEN 無法觸發 workflow_dispatch 或 repository_dispatch。
jobs:
deploy:
uses: ./.github/workflows/reusable-deploy.yml
secrets: inherit
- uses: actions/setup-node@v4
with:
node-version: 22
cache: 'npm' # 內建 cache 支援
- run: npm ci
快取 ~/.npm(不要快取 node_modules,因為 npm ci 會先刪除它)。
快取限制:10 GB/repo,7 天無存取自動過期。
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
permissions# 錯誤:run: echo "${{ github.event.issue.title }}"
# 正確:用 env
env:
TITLE: ${{ github.event.issue.title }}
run: echo "$TITLE"
pull_request_target(fork PR 有 secrets 存取權)[skip ci] 的自動 commit → 無限迴圈