Browser automation CLI for AI agents. Use this when asked to test something in a real browser.
日本語の概要は準備中です。原文の説明を表示しています。
Local development guide for the AgentRejoin monorepo. How to build, install, test, and run the CLI, server, mobile app, and desktop (Tauri) locally. Use when the user types /dev, asks how to "build", "start dev", "install locally", or "run the ___ package".
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
AgentRejoin is a pnpm monorepo. Everything uses pnpm workspaces - do not use npm or yarn directly.
pnpm install # installs deps for every package
pnpm --filter happy cli:install # builds agentrejoin-cli + links it as the global `happy` binary
cli:install replaces whatever happy is on your PATH (npm-installed or not) with a symlink to packages/agentrejoin-cli/. Daemon is restarted as part of the script. Uses ~/.agentrejoin/ — same as production.
To undo: npm unlink -g happy && npm i -g happy@latest.
packages/agentrejoin-cli # the `happy` CLI and daemon, published to npm
packages/agentrejoin-server # Node + Prisma server, deployed via TeamCity
packages/agentrejoin-app # Expo app: iOS, Android, web, Tauri desktop
packages/agentrejoin-agent # agent runtime
packages/agentrejoin-wire # shared Zod schemas + wire types
packages/agentrejoin-cli
scripts in package.json:
typecheck # tsc --noEmit
build # rm -rf dist && tsc --noEmit && pkgroll
test # build + vitest run
cli:install # build + stop daemon + npm link + start daemon
prepublishOnly # pnpm test (runs build inside test)
postinstall # unpacks difft + rg binaries into tools/unpacked/
Work loop:
pnpm --filter happy cli:install # rebuild + relink + restart daemon
happy daemon status # confirm your build is running
happy doctor # list all happy processes
tail -f ~/.agentrejoin/logs/$(ls -t ~/.agentrejoin/logs/ | head -1)
Run a single test file quickly:
pnpm --filter happy exec vitest run src/path/to/file.test.ts
Unit-only (fast, ~1 min):
pnpm --filter happy exec vitest run --project unit
Integration tests hit real APIs and are flaky — run on demand, never in the release gate.
happy reads AGENTREJOIN_HOME_DIR to override ~/.agentrejoin/. To run two versions side-by-side without touching your prod auth:
AGENTREJOIN_HOME_DIR=~/.agentrejoin-dev happy daemon start
AGENTREJOIN_HOME_DIR=~/.agentrejoin-dev happy auth
Point at a local server the same way:
AGENTREJOIN_SERVER_URL=http://localhost:3005 happy daemon start
pnpm --filter agentrejoin-server standalone:dev # localhost:3005, embedded PGlite, no Docker
App auto-reloads on source changes. Point the CLI or the Expo app at it with AGENTREJOIN_SERVER_URL=http://localhost:3005 / EXPO_PUBLIC_AGENTREJOIN_SERVER_URL=....
pnpm --filter agentrejoin-app start # expo start (Metro bundler)
pnpm --filter agentrejoin-app ios:dev # iOS simulator, development variant
pnpm --filter agentrejoin-app android:dev
pnpm --filter agentrejoin-app web # web build, served locally
pnpm --filter agentrejoin-app tauri:dev # macOS desktop app
Variants:
development com.slopus.happy.dev # hot reload, internal
preview com.slopus.happy.preview # OTA / beta testing
production com.ex3ndr.happy # App Store
When the user asks to "rebuild the desktop app", "kill the running one and reinstall", or anything in that shape — do all four steps in order, do not stop after building.
Variants → product name → build script:
production AgentRejoin.app pnpm --filter agentrejoin-app tauri:build:production
preview AgentRejoin (preview).app pnpm --filter agentrejoin-app tauri:build:preview
dev AgentRejoin.app pnpm --filter agentrejoin-app tauri:build:dev
Build output for all variants:
packages/agentrejoin-app/src-tauri/target/release/bundle/macos/<ProductName>.app
If the variant is ambiguous, check what's running with ps aux | grep "/Applications/.*AgentRejoin" | grep -v grep and match. Production is the default.
Steps (substitute $NAME with the product name, e.g. AgentRejoin):
# 1. build (slow: ~3–10 min, expo web export then cargo release build)
pnpm --filter agentrejoin-app tauri:build:production
# 2. quit the running app gracefully (no-op if not running)
osascript -e 'tell application "$NAME" to quit' || true
# 3. replace the installed bundle
rm -rf "/Applications/$NAME.app"
cp -R "packages/agentrejoin-app/src-tauri/target/release/bundle/macos/$NAME.app" /Applications/
# 4. relaunch
open -a "$NAME"
Notes:
run_in_background: true on Bash) and poll the output file. It prints Finished \release` profile` near the end.osascript ... to quit is graceful — it gives the app a chance to flush state. Only fall back to pkill -f "/Applications/$NAME.app/Contents/MacOS/app" if the quit hangs.rm -rf before cp — cp -R over an existing .app merges directories and leaves stale files.xattr -dr com.apple.quarantine "/Applications/$NAME.app" clears it. Local builds are unsigned.pnpm --filter agentrejoin-app-logs dev # starts on http://0.0.0.0:8787
Receives POST requests to /logs from the mobile app's patched console (see consoleLogging.ts).
Logs to stdout and ~/.agentrejoin/app-logs/<timestamp>.log.
To connect: set the log server URL in the app's dev settings to http://<LAN_IP>:8787.
The app's consoleLogging.ts sends all console.log/warn/error to this endpoint when configured.
Console output must be enabled in the app (dev/preview variants default on, production defaults off, togglable from the dev settings screen).
packages/*/node_modules/ is mostly empty. Node's resolution walks up, so imports work transparently."agentrejoin-wire": "workspace:*" resolves to packages/agentrejoin-wire/ — edits are picked up live.$npm_execpath: legacy; agentrejoin-cli uses pnpm literally. Windows cmd.exe doesn't expand $VAR.pnpm test runs build first. Do not remove.Do not publish by hand. Use /release — it handles npm publish, git tags, GitHub releases, and the smoke check.
happy: command not found → pnpm --filter happy cli:install
daemon won't start → happy daemon stop; rm ~/.agentrejoin/daemon.state.json.lock; happy daemon start
wrong `happy` version → which happy && ls -la $(which happy) — confirms where it resolves to
tools/unpacked missing → pnpm install (postinstall re-extracts)
stale deps after branch swap → pnpm install (pnpm is picky about lockfile drift)
npm install or yarn install — only pnpm.dev / cli tsx-based script back to agentrejoin-cli. The build step is not optional — daemon spawns the built binary and would desync.release-it. Releases go through /release.~/.agentrejoin-dev as a default. It exists as an opt-in via AGENTREJOIN_HOME_DIR, nothing more.まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Browser automation CLI for AI agents. Use this when asked to test something in a real browser.
日本語の概要は準備中です。原文の説明を表示しています。
Analyze and design control flows and data structures. Produces compact ASCII tree diagrams showing triggers, call chains, payload shapes, state mutations, and re-render effects. Use when user asks to diagram, trace, visualize, or design a flow or data structure.
日本語の概要は準備中です。原文の説明を表示しています。
Maintain the slopus/happy open source project. Triage issues, manage the GitHub project board, draft closing comments, find duplicates, check if bugs are fixed on main, and engage with community contributors. NEVER posts comments or closes issues without showing exact text and getting approval first.
日本語の概要は準備中です。原文の説明を表示しています。
Query and manage Grafana dashboards and Prometheus metrics for Happy infrastructure. Covers grafanactl CLI usage, direct Prometheus queries through Grafana proxy, and dashboard-as-code workflows. Use when user asks about metrics, dashboards, monitoring, Grafana, Prometheus, or wants to add/modify panels.
日本語の概要は準備中です。原文の説明を表示しています。
MANUAL TRIGGER ONLY: invoke only when user types /office-hours. YC Office Hours — two modes. Startup mode: six forcing questions that expose demand reality, status quo, desperate specificity, narrowest wedge, observation, and future-fit. Builder mode: design thinking brainstorming for side projects, hackathons, learning, and open source. Saves a design doc. Use when asked to "brainstorm this", "I have an idea", "help me think through this", "office hours", or "is this worth building". Proactively suggest when the user describes a new product idea or is exploring whether something is worth building — before any code is written.
日本語の概要は準備中です。原文の説明を表示しています。
Release pipeline for CLI, mobile, web, and server. Guides through version bumping, building, testing, publishing, and deploying. Replaces the old interactive release-it flow with a Claude Code-native experience. Use when user types /release or asks to release, publish, deploy, or ship any component.
日本語の概要は準備中です。原文の説明を表示しています。