henderson-tech/vybava/tree/main/mods/wake
wake
當受到監看的 PR、CI 執行、Eve 審查、devbox、vitrinka 工作或 deployik 部署達到它等待的狀態時,喚醒閒置的工作階段——使用一個共用輪詢器(vybava watch),而不是每個工作階段各自的休眠迴圈。
關於這個 mod
Výbava
Výbava 是 FixIt Technologies 的可攜式工程環境:由小型工具、代理程式技能和工作站診斷組成,以一個目錄發布,其中每個項目都能獨立安裝。
套件
| ID | 類型 | 功能 |
|---|---|---|
| memorylint | 小工具 | 驗證並維護 AI 記憶目錄——結構描述、索引、wikilink、fixture 和寫入掛勾。→ docs/memorylint.md |
| claude-guards | 小工具 | Claude Code 的 PreToolUse 防護掛勾——防止破壞性 git/docker 操作、秘密傾印、主機輸入自動化、提交秘密、走訪整個磁碟、每次查看都建立 Appium 工作階段、沒有上限的本機測試執行器,以及內容長度預算規則(不透過 shell 重寫檔案、不傾印整個檔案、不讀取 transcript);doctor 會重新接上被 settings.json 重寫操作丟掉的掛勾,vybava setup mac 套用主機設定。→ docs/claude-guards.md |
| lok | 小工具 | AI 工作階段的語系目錄——在 vybava.config.ts 中設定,依索引鍵查詢,依動詞寫入並讓所有語系保持同步,從原始碼擷取,再於 CI 設下門檻。→ docs/lok.md |
| merge-assist | 小工具 | 合併 main 而不留下機械式衝突——目錄依索引鍵合併,產生檔案採用對方版本後重新產生,未合併的 migration 在基線之後重新編號;用一張表列出剩餘內容。→ docs/merge-assist.md |
| vybava config | 動詞 | 每個小工具都會讀取的共用 repo 級 vybava.config.ts——init 用具型別的輔助函式建立它,check 為 CI 設門檻,show 列印評估後的 JSON。→ docs/config.md |
| shrt | 小工具 | luko.to 上適合終端機的短連結——離線 repo 規則、團隊共用的動態規則和產生的程式碼;同時也是重新導向伺服器。→ docs/shrt.md |
| posta | 小工具 | 端到端驅動共用測試信箱——為每次執行產生 plus-address,等待某個流程觸發的郵件,再取得其中的連結和附件。→ docs/posta.md |
| fontfreeze | 小工具 | 將可變網頁字型固定在轉譯後的軸位置,並依語言製作子集。 |
| perfrig | 小工具 | 根據 testing/<project>/perf 清單進行效能演練——逐步加壓直到首次失敗,產生百分位報告。 |
| framestats | 小工具 | 面向代理程式的 Android 畫格指標——parse 解析 gfxinfo framestats 傾印(節奏、呈現間隔、每個手勢的首次輸入與釋放視窗畫格),perfetto 解析追蹤(每畫格的 UI 和 RenderThread 工作、紋理上傳、ART 暫停、FrameTimeline 卡頓)。→ docs/framestats.md |
| perflab / expo-device-perf | 小工具 + 技能 | Expo / React Native 的實體裝置效能實驗室——每支手機只有一個租約持有者(claude-guards 會拒絕在租用手機上直接使用 raw adb/devicectl),原生建置以可攜式 Expo 指紋為鍵,不重建原生部分即可切換 JS bundle 變體,透過專案的 vybava.config.ts perflab 配接器執行測量,使用 Perfetto 和 xctrace 探針,並從保留的證據重新推導每個數字,再透過比較和預算門檻。這項技能負責迴圈、儀器選擇和轉譯成本規則。→ docs/perflab.md |
| ingressgen | 小工具 | 根據清單轉譯完整的預設拒絕 Docker 輸入策略,並檢查漂移。 |
| reconcile | 小工具 | 面向基礎設施主機的拉取式 GitOps——依每部主機的清單,讓 VPS 收斂到其基礎設施 repo 已合併的 main:HELD hotfix、交易式 nginx 掛勾、提交回滾、文字檔指標,以及僅限網格的狀態頁和資產中心。→ docs/reconcile.md |
| readiness / release-readiness | 小工具 + 技能 | 整個整合分支的發布準備:技能執行權威問題、附完整性審查員的庫存盤點、每個旅程群組一名命名車道代理程式(自己的故事、QA 工作、使用者測試看板)、容量治理、合併分支彙總和準備度看板。小工具驗證 vybava.config.ts 的 readiness 配接器,凍結 production..integration 範圍,並建立和轉譯執行目錄。→ docs/readiness.md |
| ui-loop | 小工具 | UI 打磨迴圈的確定性層:將 TypeScript/Playwright 擷取工具(具型別的畫面清單、擷取 + lint、應用程式地圖)同步到有漂移門檻的 repo,依 vybava.config.ts 的 uiLoop 區段執行輪次(Devbox 也可以),將結果拆分發布到 vitrinka,並為審查待辦評分。vitrinka 地圖和審查迴圈工作流程負責驅動它。→ docs/uiloop.md |
| polish-kit | 小工具 | 打磨技能的確定性層:透過 vybava.config.ts 的 polish glob,從差異推斷 app/ui/api 目標;解析裝置車道(iOS 模擬器和手機、Android 裝置和模擬器、URL),使用精確的建立/啟動修正;保留輪次帳本(run.json 儲存格:車道 x 畫面 x 主題 x 導覽 x 文字大小,以及不利條件矩陣儲存格),原生拍攝模擬器和 Android,轉譯接觸表和邊緣縮放表,並產生帶差異的 Markdown 報告。→ docs/polish-kit.md |
| prm / push-all / sync / push-back | 技能 | git 家族——prm 是唯一的 PR 動詞(建立 → 審查輪次 → 設門檻的合併 → 拆除),push-all 是提交準則,sync 是拉取/向上合併流程,push-back 是宣稱驗證器。使用 vybava install ai-git 安裝。 |
| gitkit | 小工具 | 這些技能執行的確定性層——PR 選擇器、審查分流、合併門檻、工作樹和路徑分類——透過 vybava gitkit <script> 提供。→ docs/gitkit.md |
| vybava setup team | 動詞 | 一鍵設定 henderson-tech Mac——透過各自的頻道提供 henderson 群組的工具(Onyx + Helium,以及延遲載入的瀏覽器 MCP、vitrinka、SwitcherooBar、Pultík;devbox 可選)和 git 家族,可用清單或 --yes --json 執行。→ docs/setup-team.md |
| codexsync | 小工具 | 將 ~/.claude 技能和命令轉譯到 ~/.agents/skills,也就是 Codex 能發現的結構——保留巢狀關係,每個命令都是一項 source-command 技能,並抑制重複發現。→ docs/codexsync.md |
| codex-sidekick | 技能 | Claude Code 繼續擔任編排器和應用程式原始碼作者;使用者測試、UI 驗證、電腦操作、應用程式對應以及 e2e 的撰寫/執行交給 Codex——在 cc 工作階段內使用原生 codex 子代理程式,否則透過 switcheroo codex run 使用持久執行緒——路由表、各模式簡報、恢復迴圈、結束程式碼、瀏覽器禮儀、提交職責和 Opus fallback。 |
| codexusage | 小工具 | 解釋 Codex 方案額度花到哪裡——來自 ~/.codex rollout 的每執行緒花費、推導出的額度,以及依測得消耗率計算的剩餘續航。→ docs/codexusage.md |
| tokentime | 小工具 | AI token 去了哪裡——將 Claude Code transcript 和 Codex rollout 增量索引到永久的 小時 × 專案 × 模型 分桶中(工作樹併入其 repo),再依日、時、專案和模型彙總,提供等價於 API 的 USD 值。→ docs/tokentime.md |
| readeff | 小工具 | 代理程式如何瀏覽程式碼——對照 Claude Code 和 Codex 讀取、搜尋放進上下文的內容與它們修改的內容:重讀、大檔案整檔讀取、搜尋命中率,以及依儲存庫、工作階段和檔案統計的最常讀檔案。→ docs/readeff.md |
| find-session | 小工具 + 技能 | 找出貼上的對話來自哪個 Claude Code 工作階段——其作者會排在只引用該對話的工作階段之前——並提供一行指令,從啟動目錄在它開始時使用的 switcheroo 預設中恢復它(cc、cco、ccoo、…);/find-session 技能負責包裝。使用 vybava install find-session-cli find-session 安裝。→ docs/find-session.md |
| repolicy | 小工具 | 讓整個 owner 範圍內的 GitHub repo 設定遵守宣告的政策——GitHub 不會繼承組織預設值,所以 audit 回報漂移(結束 1),apply 使其收斂,只碰政策指定的設定。→ docs/repolicy.md |
| menubar-doctor | 小工具 | 找出並修復會執行卻永遠不出現的 macOS 選單列項目——從 macOS 26 起,控制中心會把狀態項目歸到啟動應用程式的程序下,因此從終端機啟動的任何項目都會歸到終端機下,開關關閉時就一直隱形。→ docs/menubar-doctor.md |
| reclaim | 小工具 | 為開發 Mac 緊急回收磁碟——固定階梯會按大小從大到小刪除可再生快取,每一步後即時執行 df,設有提前停止目標,並以手寫備註說明它拒絕碰觸的內容。→ docs/reclaim.md |
| macwatch | 小工具 | 帶有擁有者歸因的 Mac 負載取樣器——每個間隔將負載、記憶體和最繁重的程序附加到 TSV,每筆都標上專案、目錄以及產生它的 claude/codex 工作階段;report 將檔案整合為問題項目、依專案和工作階段的總計,以及尖峰帳本。→ docs/macwatch.md |
| plugin-gc | 小工具 | 對 Claude Code 外掛快取執行垃圾回收——曾安裝過的每個版本都由被遺棄工作階段從未釋放的 PID 參照計數保護,而承載內容幾乎全是 node_modules;預設只回報,只有 --apply 才刪除。→ docs/plugin-gc.md |
| vpn | 小工具 | WireGuard.app 之外的持久 macOS WireGuard 通道——install 將 Onyx 設定拉進僅 root 可讀、能跨重開機存活的 LaunchDaemon;status 在應用程式的 Disconnected 旁回報路由真相(up via wg-quick (utun11))、daemon 類型,以及通道 DNS 是否回應。→ docs/vpn.md |
| onyx-rest | 小工具 | 使用 Onyx 注入的秘密執行一次 REST 呼叫——Bearer 或 HTTP Basic,將回應寫入權限為 0600 的 --out 檔案;先且只執行一次 --base,讓 Onyx 的 allowed_commands 前綴鎖定主機。→ docs/onyx-rest.md |
| handoffs | 小工具 | 維護交接帳本——handoffs reconcile 依每次交接的分支和 PR 是否仍存活來判斷開啟中的交接,並封存失效的交接;未知項目永遠不碰。→ docs/handoffs.md |
| press | 小工具 | 文件家族的確定性狀態——專案解析、~/Exports/<project>/ 設定與索引、ARES 查詢,以及共用準則。→ docs/press.md |
| press-pdf / press-logo / press-offer / press-email | 技能 | 報價、文件與法律 PDF;品牌標誌;捷克商用 DOCX;可貼到 Outlook 的客戶郵件。發行者身分只保留在本機。→ docs/press.md |
群組(recommended、experimental、claude-hooks、ai-git、press-family、everything)是目錄中可組合的預設集——不是程式碼。
claude-hooks 是 Claude home 的掛勾所呼叫的內容;在 Linux(Devbox 入口主機)上,同一個發布封存也會安裝它:vybava install claude-hooks。
安裝
Homebrew(全部公開——不需要驗證):
brew install --cask FixIt-Technologies/tap/vybava
CI 映像、工作流程和佈建腳本使用發布安裝程式中的 ci/——絕不是這個 repo 的 checkout:
curl -fsSL -o /tmp/vybava-install.sh \
https://raw.githubusercontent.com/FixIt-Technologies/vybava/v0.3.3/ci/install.sh \
&& bash /tmp/vybava-install.sh --version 0.3.3 --bin-dir /usr/local/bin --install memorylint,hotfix
從原始碼建置:
go build -o ./bin/vybava ./cmd/vybava
./bin/vybava catalog list
./bin/vybava install recommended
install 接受項目或群組選擇器(預設為 recommended 群組),
並支援 --agent claude|codex|all、
--scope user|project、--dry-run 和 --json。已安裝的小工具是指向
vybava 二進位檔的連結,因此 vybava memory lint . 和 memorylint .
等價。
目錄配置
catalog/catalog.yaml 套件和群組的單一事實來源
cmd/vybava/ 多呼叫進入點
internal/<id>/ 每種能力一個專注的 Go 套件
skills/<id>/ 跨代理程式的標準
安裝
請先查看作者 README,確認 marketplace 與外掛名稱;指令可能隨儲存庫結構而變動。
claude plugin marketplace add henderson-tech/vybava claude plugin install wake
原文 / README
Výbava
Výbava is FixIt Technologies' portable engineering environment: small tools, agent skills, and workstation diagnostics, distributed as one catalog where every item installs independently.
Packages
| ID | Kind | What it does |
|---|---|---|
| memorylint | applet | Validate and maintain AI memory homes — schema, indexes, wikilinks, fixtures, write hooks. → docs/memorylint.md |
| claude-guards | applet | PreToolUse guard hooks for Claude Code — destructive git/docker, secret dumps, host-input automation, commit secrets, whole-disk walks, per-look Appium sessions, uncapped local test runners, and the context-budget rules (no shell-rewritten files, no whole-file dumps, no transcript reads); doctor re-wires hooks a settings.json rewrite dropped, vybava setup mac applies host settings. → docs/claude-guards.md |
| lok | applet | Locale catalogs for AI sessions — configured in vybava.config.ts, queried by key, written by verb with every locale kept in sync, extracted from source, gated in CI. → docs/lok.md |
| merge-assist | applet | Merge main without the mechanical conflicts — catalogs merge by key, generated files take theirs and regenerate, unmerged migrations renumber past the base; one table of what is left. → docs/merge-assist.md |
| vybava config | verb | The shared per-repo vybava.config.ts every applet reads — init scaffolds it with typed helpers, check gates CI, show prints the evaluated JSON. → docs/config.md |
| shrt | applet | Terminal-safe short links on luko.to — offline repo rules, team-shared dynamic rules, minted codes; also the redirector server. → docs/shrt.md |
| posta | applet | Drive a shared test mailbox end to end — mint a per-run plus-address, wait for the mail a journey triggered, take its links and attachments. → docs/posta.md |
| fontfreeze | applet | Freeze variable webfonts at rendered axis positions and subset per language. |
| perfrig | applet | Performance drills from a testing/<project>/perf manifest — ramp to first failure, percentile report. |
| framestats | applet | Android frame metrics for agents - parse gfxinfo framestats dumps (cadence, present intervals, per-gesture first-input and release-window frames) and perfetto traces (per-frame UI and RenderThread work, texture uploads, ART pauses, FrameTimeline jank). → docs/framestats.md |
| perflab / expo-device-perf | applet + skill | Physical-device performance lab for Expo / React Native - one lease holder per phone (raw adb/devicectl on a leased phone is refused by claude-guards), native builds keyed by a portable Expo fingerprint, JS bundle variants without native rebuilds, measured runs through the project's vybava.config.ts perflab adapter, Perfetto and xctrace probes, and every number re-derived from kept evidence with compare and budget gates. The skill carries the loop, the instrument choice and the render-cost rules. → docs/perflab.md |
| ingressgen | applet | Render and drift-check complete default-deny Docker ingress policies from a manifest. |
| reconcile | applet | Pull-based GitOps for the infra boxes — converge a VPS to its infra repo's merged main from a per-box manifest: HELD hotfixes, transactional nginx hooks, commit rollback, textfile metrics, mesh-only status page + estate hub. → docs/reconcile.md |
| readiness / release-readiness | applet + skill | Release prep of a whole integration branch: the skill runs authority questions, an inventory with a completeness critic, one named lane agent per journey cluster (own story, QA task, usertest board), capacity governance, a merged-branch roll-up and a readiness board. The applet validates the vybava.config.ts readiness adapter, freezes production..integration ranges, and seeds and renders the run directory. → docs/readiness.md |
| ui-loop | applet | The UI polish loop's deterministic layer: syncs the TypeScript/Playwright capture harness (typed screen manifest, capture + lint, app map) into a repo with a drift gate, runs passes from the vybava.config.ts uiLoop section (on a Devbox too), split-publishes them to vitrinka and scores the review backlog. The vitrinka map / review-loop workflows drive it. → docs/uiloop.md |
| polish-kit | applet | The polish skill's deterministic layer: infers app/ui/api targets from the diff through the vybava.config.ts polish globs, resolves device lanes (iOS simulators and phones, Android devices and emulators, URLs) with the exact create/boot fix, keeps the pass ledger (run.json cells: lane x screen x theme x nav x text size, plus adverse-condition matrix cells), shoots simulators and Android natively, renders contact and edge-zoom sheets and the Markdown report with a delta. → docs/polish-kit.md |
| prm / push-all / sync / push-back | skills | The git family — prm is the one PR verb (create → review rounds → gated merge → teardown), push-all the commit doctrine, sync the pull/merge-up flow, push-back the claim verifier. Install with vybava install ai-git. |
| gitkit | applet | The deterministic layer those skills execute — PR selectors, review triage, merge gates, worktrees, path classification — as vybava gitkit <script>. → docs/gitkit.md |
| vybava setup team | verb | One-click henderson-tech Mac — the henderson group's tools (Onyx + Helium with the lazy browser MCPs, vitrinka, SwitcherooBar, Pultík; devbox opt-in) through their own channels plus the git family, as a checklist or --yes --json. → docs/setup-team.md |
| codexsync | applet | Render ~/.claude skills and commands into ~/.agents/skills, the structure Codex discovers — nesting preserved, each command a source-command skill, duplicate discovery suppressed. → docs/codexsync.md |
| codex-sidekick | skill | Claude Code stays orchestrator and app-source author; usertests, UI verification, computer use, app mapping and e2e writing/running go to Codex — the native codex subagent inside cc sessions, else a persistent thread via switcheroo codex run — routing table, briefs per mode, resume loop, exit codes, browser etiquette, commit duties, Opus fallback. |
| codexusage | applet | Explain where the Codex plan limit went — per-thread spend from ~/.codex rollouts, the derived allowance, and the runway left at the measured burn rate. → docs/codexusage.md |
| tokentime | applet | Where your AI tokens went — Claude Code transcripts and Codex rollouts indexed incrementally into permanent hour × project × model buckets (worktrees fold into their repo), rolled up by day, hour, project and model with an API-equivalent USD value. → docs/tokentime.md |
| readeff | applet | How agents navigate code — what Claude Code and Codex reads and searches put into context against what they changed: re-reads, whole-file reads of big files, search hit rates and the most-read files, per repository, session and file. → docs/readeff.md |
| find-session | applet + skill | Find the Claude Code session a pasted conversation came from — its author ranked above sessions that only quoted it — and the one line that resumes it from its launch directory under the switcheroo preset it started with (cc, cco, ccoo, …); the /find-session skill wraps it. Install with vybava install find-session-cli find-session. → docs/find-session.md |
| repolicy | applet | Hold GitHub repository settings to a declared policy across whole owners — GitHub inherits no organization default, so audit reports the drift (exit 1) and apply converges it, touching only the settings the policy names. → docs/repolicy.md |
| menubar-doctor | applet | Find and fix macOS menu-bar items that run but never appear — since macOS 26 Control Center files a status item under the process that launched the app, so anything started from a terminal is filed under the terminal and stays invisible while its switch is off. → docs/menubar-doctor.md |
| reclaim | applet | Emergency disk reclaim for a dev Mac — a fixed ladder of regenerating caches deleted biggest-first with live df after every step, an early-stop target, and by-hand notes for what it refuses to touch. → docs/reclaim.md |
| macwatch | applet | Mac load sampler with owner attribution - append load, memory and the heaviest processes to a TSV every interval, each tagged with project, directory and the claude/codex session that spawned it; report integrates the file into offenders, per-project and per-session totals and a spike ledger. → docs/macwatch.md |
| plugin-gc | applet | Garbage-collect the Claude Code plugin cache — every version ever installed is kept behind a PID refcount that abandoned sessions never release, and the payload is almost all node_modules; reports by default, deletes only on --apply. → docs/plugin-gc.md |
| vpn | applet | Persistent macOS WireGuard tunnels outside WireGuard.app — install pulls the Onyx profile into a root-only LaunchDaemon that survives reboots; status reports the route truth (up via wg-quick (utun11)) beside the app's Disconnected, the daemon kind and whether the tunnel DNS answers. → docs/vpn.md |
| onyx-rest | applet | One REST call with an Onyx-injected secret — Bearer or HTTP Basic, the response in a 0600 --out file; --base first and once, so an Onyx allowed_commands prefix pins the host. → docs/onyx-rest.md |
| handoffs | applet | Handoff ledger upkeep — handoffs reconcile judges every open handoff by whether its branches and PRs are still alive and archives the dead ones; unknown is never touched. → docs/handoffs.md |
| press | applet | Deterministic state for the document family — project resolution, ~/Exports/<project>/ config and index, ARES lookups, shared doctrine. → docs/press.md |
| press-pdf / press-logo / press-offer / press-email | skills | Offer, documentation and legal PDFs; brand marks; Czech commercial DOCX; Outlook-paste client emails. Issuer identity stays machine-local. → docs/press.md |
Groups (recommended, experimental, claude-hooks, ai-git, press-family,
everything) are composable presets in the catalog — never code.
claude-hooks is what a Claude home's hooks call; on Linux (a Devbox portal
box) the same release archive installs it: vybava install claude-hooks.
Install
Homebrew (everything is public — no authentication needed):
brew install --cask FixIt-Technologies/tap/vybava
CI images, workflows and provisioning scripts use the release installer in
ci/ — never a checkout of this repository:
curl -fsSL -o /tmp/vybava-install.sh \
https://raw.githubusercontent.com/FixIt-Technologies/vybava/v0.3.3/ci/install.sh \
&& bash /tmp/vybava-install.sh --version 0.3.3 --bin-dir /usr/local/bin --install memorylint,hotfix
From source:
go build -o ./bin/vybava ./cmd/vybava
./bin/vybava catalog list
./bin/vybava install recommended
install takes item or group selectors (default: the recommended group)
and supports --agent claude|codex|all,
--scope user|project, --dry-run, and --json. Installed applets are links
to the vybava binary, so vybava memory lint . and memorylint . are
equivalent.
Layout
catalog/catalog.yaml package and group source of truth
cmd/vybava/ multicall entrypoint
internal/<id>/ one focused Go package per capability
skills/<id>/ canonical cross-agent skill payloads (SKILL.md plus any
references/ and assets/ the skill ships)
docs/ per-tool references, release flow, decisions
Dockerfile the luko.to redirector image (deployik app "luko")
Extending
One payload + one catalog entry = one package; presets are one more catalog line. Contract: docs/decisions/0001-modular-catalog.md · checklist: CONTRIBUTING.md · releases: docs/homebrew.md.

