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 세션, 제한 없는 로컬 테스트 러너와 컨텍스트 예산 규칙(셸로 다시 쓴 파일, 전체 파일 덤프, 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 | 동사 | 모든 애플릿이 읽는 저장소별 공유 vybava.config.ts입니다. init은 타입이 지정된 도우미로 뼈대를 만들고, check은 CI를 게이트하며, show는 평가된 JSON을 출력합니다. → docs/config.md |
| shrt | 애플릿 | luko.to의 터미널 안전 단축 링크입니다. 오프라인 저장소 규칙, 팀 공유 동적 규칙, 발급 코드를 제공하며 리디렉터 서버이기도 합니다. → 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용 실물 기기 성능 랩입니다. 휴대폰마다 임대 보유자 한 명만 두며(임대한 휴대폰에서 raw adb/devicectl을 직접 실행하면 claude-guards가 거부), 이식 가능한 Expo 지문을 키로 네이티브 빌드를 관리하고 네이티브 재빌드 없이 JS bundle 변형을 바꿉니다. 프로젝트의 vybava.config.ts perflab 어댑터로 측정 실행을 수행하고 Perfetto와 xctrace 프로브를 사용합니다. 보관한 증거에서 모든 수치를 다시 도출하고 비교 및 예산 게이트를 적용합니다. 이 스킬은 루프, 계측기 선택, 렌더링 비용 규칙을 담당합니다. → docs/perflab.md |
| ingressgen | 애플릿 | 매니페스트에서 완전한 기본 거부 Docker ingress 정책을 렌더링하고 드리프트를 검사합니다. |
| reconcile | 애플릿 | 인프라 박스를 위한 풀 기반 GitOps입니다. 박스별 매니페스트에 따라 VPS를 인프라 저장소의 병합된 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, 앱 맵)를 드리프트 게이트가 있는 저장소에 동기화하고, vybava.config.ts의 uiLoop 섹션에서 패스를 실행하며(Devbox에서도 가능), vitrinka에 분할 게시하고 리뷰 백로그를 점수화합니다. vitrinka 맵과 리뷰 루프 워크플로가 이를 구동합니다. → docs/uiloop.md |
| polish-kit | 애플릿 | 다듬기 스킬의 결정론적 계층입니다. vybava.config.ts의 polish glob을 통해 diff에서 app/ui/api 대상을 추론하고, 기기 레인(iOS 시뮬레이터와 휴대폰, Android 기기와 에뮬레이터, URL)을 정확한 생성/부팅 수정과 함께 해결합니다. 패스 원장(run.json 셀: lane x screen x theme x nav x text size와 불리한 조건 매트릭스 셀)을 보존하고, 시뮬레이터와 Android를 네이티브로 촬영하며, 콘택트 시트와 가장자리 확대 시트, 차이가 포함된 Markdown 보고서를 렌더링합니다. → docs/polish-kit.md |
| prm / push-all / sync / push-back | 스킬 | git 제품군입니다. prm은 유일한 PR 동사(생성 → 리뷰 라운드 → 게이트된 병합 → 해체)이고, push-all은 커밋 원칙, sync는 pull/merge-up 흐름, push-back은 주장 검증기를 담당합니다. vybava install ai-git로 설치합니다. |
| gitkit | 애플릿 | 이 스킬들이 실행하는 결정론적 계층입니다. PR 선택기, 리뷰 트리아지, 병합 게이트, worktree, 경로 분류를 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 스킬과 명령을 Codex가 검색하는 구조인 ~/.agents/skills로 렌더링합니다. 중첩을 유지하고 각 명령을 source-command 스킬로 만들며 중복 검색을 억제합니다. → docs/codexsync.md |
| codex-sidekick | 스킬 | Claude Code는 오케스트레이터이자 앱 소스 작성자로 남습니다. 사용자 테스트, UI 검증, 컴퓨터 사용, 앱 매핑, e2e 작성/실행은 Codex로 보냅니다. cc 세션 안에서는 네이티브 codex 서브에이전트를 쓰고, 아니면 switcheroo codex run을 통한 지속 스레드를 씁니다. 라우팅 표, 모드별 브리프, 재개 루프, 종료 코드, 브라우저 예절, 커밋 의무, Opus 폴백을 제공합니다. |
| codexusage | 애플릿 | Codex 요금제 한도가 어디에 쓰였는지 설명합니다. ~/.codex 롤아웃에서 스레드별 지출과 계산된 허용량을 가져오고 측정된 소모 속도로 남은 여유를 보여 줍니다. → docs/codexusage.md |
| tokentime | 애플릿 | AI 토큰이 어디로 갔는지 보여 줍니다. Claude Code transcript와 Codex 롤아웃을 영구적인 hour × project × model 버킷으로 증분 인덱싱하고(worktree는 저장소로 합침), 일·시간·프로젝트·모델별로 집계해 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 | 애플릿 | 전체 소유자 범위에서 GitHub 저장소 설정을 선언된 정책에 맞춥니다. GitHub는 조직 기본값을 상속하지 않으므로 audit은 드리프트를 보고하고(종료 1), apply는 수렴시키며 정책에 지정된 설정만 건드립니다. → docs/repolicy.md |
| menubar-doctor | 애플릿 | 실행되지만 전혀 나타나지 않는 macOS 메뉴 막대 항목을 찾고 고칩니다. macOS 26부터 Control Center가 상태 항목을 앱을 시작한 프로세스 아래에 기록하므로 터미널에서 시작한 것은 터미널 아래에 기록되어 스위치가 꺼져 있는 동안 보이지 않습니다. → docs/menubar-doctor.md |
| reclaim | 애플릿 | 개발 Mac의 긴급 디스크 회수입니다. 재생성 가능한 캐시를 고정된 단계로 큰 것부터 삭제하고 매 단계 뒤에 실시간 df를 실행하며, 조기 중단 목표와 건드리지 않는 항목의 수기 메모를 제공합니다. → docs/reclaim.md |
| macwatch | 애플릿 | 소유자를 기록하는 Mac 부하 샘플러입니다. 매 간격 부하, 메모리, 가장 무거운 프로세스를 TSV에 추가하고 프로젝트, 디렉터리, 생성한 claude/codex 세션을 태그합니다. report는 파일을 문제 항목, 프로젝트별·세션별 합계와 스파이크 원장으로 통합합니다. → docs/macwatch.md |
| plugin-gc | 애플릿 | Claude Code 플러그인 캐시를 가비지 컬렉션합니다. 설치된 모든 버전은 버려진 세션이 해제하지 않는 PID refcount 뒤에 보관되고 페이로드는 거의 node_modules입니다. 기본값은 보고만 하며 --apply에서만 삭제합니다. → docs/plugin-gc.md |
| vpn | 애플릿 | WireGuard.app 밖의 지속적인 macOS WireGuard 터널입니다. install은 Onyx 프로필을 root 전용이고 재부팅 후에도 남는 LaunchDaemon으로 가져오며, status는 앱의 Disconnected 옆에 실제 라우트(up via wg-quick (utun11)), 데몬 종류와 터널 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/를 사용합니다. 이 저장소를 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.

