# go-pr-fetcher > Fetches Change (CL) information from golang/go repository via Gerrit REST API. Use when user says "fetch Go changes", "latest CLs from golang/go", "check Go changes", etc. - Author: daisuke_karasawa - Repository: DaisukeKarasawa/upgo - Version: 20260201173039 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-06 - Source: https://github.com/DaisukeKarasawa/upgo - Web: https://mule.run/skillshub/@@DaisukeKarasawa/upgo~go-pr-fetcher:20260201173039 --- --- name: go-pr-fetcher description: | Fetches Change (CL) information from golang/go repository via Gerrit REST API. Use when user says "fetch Go changes", "latest CLs from golang/go", "check Go changes", etc. allowed-tools: - Bash --- # Go Change Fetcher Fetches Change (CL) information from golang/go repository using Gerrit REST API. ## Side Effects - **Network Access**: Makes API calls to Gerrit server (default: `https://go-review.googlesource.com`) using anonymous access - **Anonymous Access**: Uses anonymous API access (no authentication required). Some Gerrit instances may not support anonymous access and may return 401/403 errors. Rate limits may be stricter for anonymous access. - **No Local File Changes**: Does not create or modify local files ## Prerequisites ### Required Commands - `curl`: HTTP client for API requests - `jq`: JSON processor for parsing responses - `sed`: Text processing for XSSI prefix removal ### Optional Environment Variables - `GERRIT_BASE_URL`: Gerrit server URL (default: `https://go-review.googlesource.com`) ## Quick Start Use the `gerrit_api()` helper function from `go-gerrit-reference` skill. See [go-gerrit-reference/REFERENCE.md](../go-gerrit-reference/REFERENCE.md) for complete helper function. ## Fetching Change List ### Get recent changes (default: 30) ```bash # Get all changes from go project, limit 30, with labels and detailed accounts gerrit_api "/changes/?q=project:go+status:open&n=30&o=LABELS&o=DETAILED_ACCOUNTS" | jq '.[] | {_number, subject, status, owner, updated, labels}' ``` ### Get merged changes only ```bash # Get merged changes from go project gerrit_api "/changes/?q=project:go+status:merged&n=30&o=LABELS&o=DETAILED_ACCOUNTS" | jq '.[] | {_number, subject, owner, submitted, labels}' ``` ### Get changes from specific period ```bash # Last 7 days (updated after date) DATE_7DAYS_AGO=$(date -v-7d +%Y-%m-%d 2>/dev/null || date -d '7 days ago' +%Y-%m-%d) gerrit_api "/changes/?q=project:go+after:${DATE_7DAYS_AGO}&n=50&o=LABELS&o=DETAILED_ACCOUNTS" | jq '.[] | {_number, subject, status, owner, updated}' ``` ### Get changes updated in last month ```bash # Last 30 days using -age operator gerrit_api "/changes/?q=project:go+-age:30d&n=50&o=LABELS&o=DETAILED_ACCOUNTS" | jq '.[] | {_number, subject, status, owner, updated, labels}' ``` ## Fetching Individual Change Details For complete API reference including helper function, change ID formats, and error handling, see [go-gerrit-reference/REFERENCE.md](../go-gerrit-reference/REFERENCE.md). ### Change basic info ```bash CHANGE_ID="" # e.g., 3965 or go~master~I8473b95934b5732ac55d26311a706c9c2bde9940 gerrit_api "/changes/${CHANGE_ID}/detail?o=LABELS&o=DETAILED_LABELS&o=MESSAGES&o=REVIEWER_UPDATES&o=CURRENT_REVISION&o=CURRENT_COMMIT&o=CURRENT_FILES" | jq '{_number, subject, status, owner, created, updated, labels, messages}' ``` ### Change comments and discussions ```bash # Get all published comments across all revisions gerrit_api "/changes/${CHANGE_ID}/comments" | jq '.' # Get change messages (cover messages and system messages) gerrit_api "/changes/${CHANGE_ID}/messages" | jq '.[] | {id, author, date, message, _revision_number}' ``` ### Change diff ```bash # Get raw patch (unified diff format) gerrit_api "/changes/${CHANGE_ID}/revisions/current/patch?raw" | cat # Get structured diff for a specific file FILE_PATH="src/example.go" # URL encode if needed gerrit_api "/changes/${CHANGE_ID}/revisions/current/files/${FILE_PATH}/diff" | jq '.' ``` ### Change commit message ```bash # Get commit message gerrit_api "/changes/${CHANGE_ID}/message" | jq '{subject, full_message, footers}' ``` ## Output Format Format fetched Change information as follows: ```markdown ## Change #: **Status**: | **Owner**: | **Updated**: **Labels**: - Code-Review: - Verified: ### Summary ### Changed Files - - ``` ## Change ID Formats For supported Change ID formats, see [go-gerrit-reference/REFERENCE.md](../go-gerrit-reference/REFERENCE.md). ## Error Handling For common errors and handling patterns, see [go-gerrit-reference/REFERENCE.md](../go-gerrit-reference/REFERENCE.md).