andyawd/antigravity-cli-statusline/agy-cli-statusline
Claude Code and agent skill by andyawd/antigravity-cli-statusline
- community
Checking that the SKILL.md file is still in the repository.
本技能用於設定 Antigravity 命令列介面(CLI)(agy)的狀態列(Statusline / Footer)顯示指標、標籤顯示樣式(文字標籤 text / Emoji 圖示 emoji)、顯示順序與多語系介面(繁體中文 zh-tw / 简体中文 zh-cn / English us / 日本語 jp),並自動部署跨平台 Node.js 掛鉤(Hook)腳本(statusline-quota.mjs、fetch-local-quota.mjs)至 ~/.gemini/antigravity-cli/hooks/,同步註冊三層 settings.json(全域、命令列介面(CLI)專屬、專案)與 trusted_hooks.json 信任機制。適用情境:使用者要求設定 / 客製化 / 啟用命令列介面(CLI)狀態列、調整命令列介面(CLI)頁尾顯示項目、切換文字或 Emoji 圖示標籤模式、顯示應用程式介面(API)額度(含長條圖與絕對重置時間) / 權杖(Token)用量與長條圖 / 上下文(Context)消耗與長條圖 / Git 分支 / 工作區是否乾淨(dirty)/ VCS 類型 / 人工智慧(AI)模型名稱 / 代理狀態(agent state)/ 等你回應的工具確認對話方塊(Dialog Box) / 輸入佇列 / 背景任務 / 子代理數 / 檔案數量(Artifacts) / 沙盒模式 / 命令列介面(CLI)版本 / 對話識別碼(ID) / 使用中代理(agent profile)/ 隨機存取記憶體(RAM)記憶體用量 / 訂閱方案等指標於命令列介面(CLI)底部、切換狀態列語言、在新電腦上啟用此狀態列,或使用者主動以 /antigravity-cli-statusline:agy-cli-statusline 觸發本技能時。支援 macOS、Linux、Windows(含 Windows 10 / 11)跨平台環境,並自動處理 Node.js 跨平台執行相容性(macOS/Linux 絕對路徑防 NVM 127、Windows 裸命令防空白與引號剝除)、sh.exe 缺失、UTF-8 位元組順序記號(BOM)污染、wmic 棄用等系統陷阱。
Install
npx vskill@latest install andyawd/antigravity-cli-statusline/agy-cli-statuslineSKILL.md
Antigravity 狀態列設定技能
本技能提供 Antigravity 命令列介面(CLI)狀態列(Statusline / Footer)的客製化、標籤樣式(文字 / Emoji)、語系設定與跨平台掛鉤(Hook)部署能力。
⚠️ References 載入規範(必讀)
本技能的細節分散於下列三份 references/:
- `references/windows.md` — Windows 特定規範(位元組順序記號(BOM)鐵則、
sh.exe越獄、csc.exe編譯等) - `references/config-files.md` — 三層設定檔結構、
statusLine物件、trusted_hooks.json信任機制 - `references/pitfalls.md` — 常見陷阱對照表
載入規則(強制):
- 禁止透過子代理(subagent / Explore Agent)摘要 references/ 內容,主代理必須親自以 Read 工具讀取原文
- 禁止改寫程式碼區塊與 JSON 結構
- 若內容與你熟悉的其他 CLI 規範不同,一律以本技能檔案為準
🎯 設定檔路徑(三層必同步)
| 層級 | 路徑語法 | 優先級 | |
|---|---|---|---|
| 命令列介面(CLI)專屬(最高) | ~/.gemini/antigravity-cli/settings.json | 🔥 高於全域 | |
| 全域 | ~/.gemini/settings.json | 中 | |
| 專案(條件性) | <workspace>/.gemini/settings.json | 若存在則覆寫 |
[!CAUTION]命令列介面(CLI)專屬設定檔由 agy 命令列介面(CLI)自身維護,優先級高於全域設定檔。若忽略此檔案,全域設定將被無聲覆蓋!這是本技能中最致命且最隱蔽的 Bug。完整路徑解析規則、JSON 結構、跨電腦移植雙保險設計詳見 references/config-files.md。
自訂語系偏好記錄於 ui.language 屬性中;標籤顯示樣式記錄於 ui.footer.labelStyle("text" 或 "emoji")中;指標順序記錄於 ui.footer.items 陣列中;個別指標樣式覆寫記錄於 ui.footer.itemStyles(如 { "quota": "emoji" })中,未設定者一律強制以文字為預設。
🛠️ 技術標準
- 純 Node.js 跨平台實作:
- macOS / Linux:
ps auxww+lsof - Windows:
Get-CimInstance Win32_Process+netstat -ano(不再使用已棄用的wmic)
- 所有 `fs.writeFileSync` 強制加 `{ encoding: 'utf8' }`(防 Windows UTF-16 崩潰)
- 智慧型多行換行(Smart Line Wrapping by Feature):讀取
meta.terminal_width或process.stdout.columns得知終端機寬度。組合狀態列字串時,若下一個加入的指標會讓整行長度(不含 ANSI 碼,並精確計算中日韓全形字元與 Unicode 代理對 Emoji 為 2 格寬度)超過終端機寬度,必須將該指標折疊到新的一行(插入\n)。 - 四階段精確色彩辨識(24-bit truecolor 柔和配色):
100~75%:藍色#57caff(\x1b[38;2;87;202;255m)74~50%:綠色#5cdb6d(\x1b[38;2;92;219;109m)49~25%:黃色#ffd427(\x1b[38;2;255;212;39m)24~0%:紅色#ff7daf(\x1b[38;2;255;125;175m)
- 容量長條圖與相鄰自動合併(Bar Graph & Adjacent Auto-Merge):支援五小時可用額度(
quota-bar)、每週可用額度(quota-weekly-bar)、脈絡用量(context-used-bar)與權杖數(token-count-bar)之長條圖(預設 10 格[████████░░])。當長條圖與對應數值指標相鄰且顯示樣式一致時,自動合併為單一標籤(文字模式如五小時可用: 88% [████████░░],Emoji 模式如🔋 88% [████████░░])。若樣式衝突(一為 text、一為 emoji)則不合併,拆開為兩個獨立區塊顯示。 - 絕對重置時間(Reset Absolute Time):支援五小時重置時間(
quota-reset-time)與每週重置時間(quota-weekly-reset-time),原生轉換為本機時區絕對時間,預設同日顯示HH:mm、跨日顯示yyyy/MM/dd HH:mm,亦支援於設定檔以ui.footer.timeFormat自訂(smart/yyyy/MM/dd HH:mm/12h/24h)。 - 多樣化標籤顯示樣式(Label Style: 全域與個別指標支援):支援於設定檔
ui.footer.itemStyles針對個別指標設定樣式覆寫("emoji"或"text",未設定者一律以文字為預設),亦支援於ui.footer.labelStyle設定全域標籤樣式。在 Emoji 樣式下,以專屬 Emoji 取代文字標籤並省略冒號、僅保留單一空白(如🤖 Gemini 3.1 Pro、🔋 100%、🔀 main),狀態值仍依ui.language顯示本地化文字。
Windows 平台的 位元組順序記號(BOM)鐵則、sh.exe 越獄、csc.exe 編譯、windowsHide: true 規範詳見 references/windows.md。
🌐 語言鎖定規則(Locale Locking — 全域強制)
[!CAUTION]使用者在步驟 1 一旦選定語系(`zh-tw` / `zh-cn` / `us` / `jp`),人工智慧(AI)代理在本次執行的剩餘所有對話輸出,都必須使用該語言。
為什麼必須鎖定:使用者選擇英文(us)或日文(jp)的前提是「他可能不懂中文」,反之亦然。若中間穿插任何非所選語系的訊息,會破壞使用者體驗、甚至讓使用者讀不懂關鍵警告而誤判決策。這也是為什麼語系選擇必須是第一步——所有後續訊息(包括 Node.js 預檢的缺失警告)才能用使用者看得懂的語言呈現。
「對話輸出」涵蓋(不限於):
- 步驟 2 Node.js 缺失時的
ask_question警告對話 - 步驟 3(五大分類分頁勾選指標)與步驟 4 的
ask_question問卷(question文字、options字串) - 步驟 5 / 6 進行中的 any 進度說明、確認語句、警告訊息
- 步驟 5(位元組順序記號(BOM)污染修復)與步驟 6(Windows 缺
sh.exe)的偵測與修復提示 - 步驟 7 的最終回報訊息與舊版腳本溫馨提醒
- 任何例外、錯誤、降級、再次詢問使用者意見時的訊息
例外(保持原文不翻譯):
- 技術識別碼(如
model-name、statusLine、fs.writeFileSync) - 檔案路徑(如
~/.gemini/antigravity-cli/settings.json) - 程式碼區塊內容
- 系統錯誤訊息原文(如
invalid character 'ï' looking for beginning of value)
🔄 執行步驟
步驟 1:第一階段問卷(語系選擇 — 必須最先執行)
為何最先:後續所有訊息(含 Node.js 缺失警告、設定檔讀寫進度、錯誤提示、最終回報)皆須用使用者選定的語言呈現,因此語系必須在 any 其他對話之前確定。
呼叫 ask_question(Antigravity 命令列介面(CLI)原生支援以 /statusline 切換啟用或關閉狀態列,因此無需提供冗長的還原選單):
選擇完成後,將所選語言代碼(`zh-tw` / `zh-cn` / `us` / `jp`)記錄為本次執行的鎖定語系,並依「🌐 語言鎖定規則」於後續所有步驟使用該語系撰寫對話輸出。
步驟 2:Node.js 預檢 + 三層設定檔讀取
本步驟所有與使用者互動的文字必須用步驟 1 所選語系呈現。
【Node.js 環境預檢 — 最優先】:依作業系統執行對應的偵測指令:
- macOS / Linux:
command -v node或which node - Windows:
where node(cmd)或Get-Command node(PowerShell) - 跨平台通用:
node --version
- ✅ 若 Node.js 已安裝:記錄版本號並繼續後續流程。
- ❌ 若 Node.js 未安裝(指令回傳
command not found或非零退出碼):
- 向使用者發出明確警告(以所選語系撰寫),說明缺少 Node.js 將導致:
- CLI 底部狀態列完全空白,不會顯示 any 指標
agy命令列介面(CLI)會反覆記錄statusline: command failed: exit status 127 (stderr: sh: node: command not found),連續失敗 30 次後自動停用 statusline
- 呼叫 `ask_question` 詢問使用者是否繼續(問卷
question、options全部以所選語系撰寫):
zh-tw 範例:
zh-cn 範例:
us 範例:
jp 範例:
- 若使用者選擇「中斷」:以所選語系輸出安裝指引後結束本技能流程,不進行 any 設定檔寫入。
- 若使用者選擇「繼續」:繼續執行後續步驟。設定檔會正確寫入,待使用者安裝 Node.js 並重新啟動
agy命令列介面(CLI)後狀態列即會自動生效。
【動態解析三層設定檔】:在 Node.js 預檢通過(或使用者選擇繼續)後,動態展開 $HOME / USERPROFILE,讀取三層 settings.json。檢查目前 ui.footer.items 啟用了哪些項目、ui.footer.labelStyle 標籤樣式、ui.language 設定,以及各設定檔中是否存在空的或殘缺的 statusLine 物件(如 { "type": "", "command": "", "enabled": true })。
【Windows 平台額外步驟:位元組順序記號(BOM)預檢】:讀取每份 settings.json 與 trusted_hooks.json 時,必須檢查檔案前 3 個位元組是否為 EF BB BF(UTF-8 位元組順序記號(BOM))。若是,記錄該檔案路徑為「需於步驟 5 自動修復」的目標。詳見 references/windows.md §1 與 §3。
步驟 3:第二階段問卷(讀取 questions.json、五大分類分頁勾選指標)
- 讀取靜態問卷:人工智慧(AI)代理必須優先讀取本外掛目錄底下的
skills/agy-cli-statusline/resources/questions.json檔案。 - 根據步驟 1 的語言代碼(`zh-tw` / `zh-cn` / `us` / `jp`),從
questions.json中讀取對應語系的categories(五大分類清單)。
[!NOTE]螢幕高度限制與分頁設計(Issue #1262):目前 Antigravity CLI 的ask_question在選項超過螢幕可容納行數(約 31 項)時存在無法滾動顯示的限制。為提供良好互動體驗,36 項指標拆分為五個分類頁籤(每個分頁 4~14 項,保證在任何終端機螢幕均能完整顯示),由代理依序呼叫ask_question引導使用者勾選:- 分類 1:模型與代理(4 項,model-name,agent-profile,agent-state,mode)- 分類 2:額度、計費與帳號(14 項,quota,quota-bar,quota-reset-countdown,quota-reset-time,quota-weekly,quota-weekly-bar,quota-weekly-countdown,quota-weekly-reset-time,quota-argon,quota-argon-bar,quota-argon-countdown,quota-argon-reset-time,plan-tier,account-email)- 分類 3:脈絡與權杖(4 項,context-used,context-used-bar,token-count,token-count-bar)- 分類 4:工作區與版本控制(5 項,project-path,project-full-path,git-branch,vcs-dirty,vcs-type)- 分類 5:系統狀態與背景任務(9 項,memory-usage,cli-version,conversation-id,sandbox-status,tool-confirmation,pending-input,background-tasks,subagents,artifacts)
在單次 ask_question 工具呼叫的 questions 陣列中,依序傳入五個分類的題目物件。Antigravity CLI 底層 TUI(AskQuestionModel)會原生以分頁精靈(Wizard Pager)形式渲染為 Question 1/5: 至 Question 5/5:。使用者在每一頁使用 Space 鍵勾選後按下 Enter 鍵,終端機會自動平滑翻頁至下一分類,直到五個分類皆作答完成:
作答完畢後,工具會一次性回傳多行答案(A1: ..., A2: ..., A3: ..., A4: ..., A5: ...)。代理將各題回傳的勾選項解析合併為一個完整的字串陣列(selected)。
步驟 4:第三階段問卷(手動排序、樣式前綴與最終篩選)
[!CAUTION]防截斷鐵則(Issue #1262):Antigravity 命令列介面(CLI)底層終端機使用者介面(TUI)在呼叫ask_question時,會將question文字重複渲染兩次(一次在對話歷史區? ...,一次在底部Question 1/1: ...面板)。若question包含多行說明,重複兩次就會佔據 10~15 行垂直空間,進而把上方對話視窗的前幾行頂出畫面並遭終端機緩衝區裁切吃字!因此,必須嚴格遵守以下三點:1. 絕對禁止輸出單欄每項一行的長清單(無論在對話視窗或ask_question內皆禁止)。2. 在同一回合呼叫 `ask_question` 之前,先在一般對話(Chat Response)輸出「單行填寫規則標題 + 三欄 Markdown 表格(3-Column Markdown Table)」,將最多 36 項壓縮在 12 列以內。3. `ask_question` 的 `question` 欄位嚴格限制為「單純 1 行短句」(禁止包含換行 `\n` 或長篇規則說明),將底部面板高度壓到最低,確保上方三欄表格第 1~12 列 100% 留在可視畫面內、免捲動、零截斷!
- 在同一回合呼叫 `ask_question` 之前,先在一般對話(Chat Response)輸出「單行填寫規則標題 + 三欄 Markdown 表格」:
- 將步驟 3 中使用者在五個頁籤所勾選的全部指標選項(共 $N$ 項)按順序標上連續數字編號(從
1到 $N$)。 - 計算每欄列數 $R = \lceil N / 3 \rceil$(例如 $N = 36$ 時 $R = 12$ 列),採直向優先(Column-major:左欄 `1`~$R$、中欄 $R+1$~$2R$、右欄 $2R+1$~$N$)組成三欄 Markdown 表格,每格格式為
🤖 簡稱 (\metric-id\)(保持文字精簡以免單行過寬折行)。 - zh-tw 輸出範例(以全選 36 項為例,標題含填寫規則 + 12 列表格):
``markdown 📋 **目前已選取的狀態列指標(共 36 項)** — *於下方 Write-in 輸入序號或代碼(如 2, e1, n, e:quota;純數字/t 為文字、e 為 Emoji、n` 為換行):*
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/agy-cli-statusline/SKILL.md
Popularity
- Repository stars
- 102
- Repository forks
- 13
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/andyawd/antigravity-cli-statusline/agy-cli-statusline)