happier-session-control
Manage Happier sessions (list/status/send/wait/history/stop + execution runs) via the happier CLI JSON contract.
Best use case
happier-session-control is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Manage Happier sessions (list/status/send/wait/history/stop + execution runs) via the happier CLI JSON contract.
Teams using happier-session-control should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/happier-session-control/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How happier-session-control Compares
| Feature / Agent | happier-session-control | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Manage Happier sessions (list/status/send/wait/history/stop + execution runs) via the happier CLI JSON contract.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Happier Session Control (CLI JSON)
This skill enables an agent framework (for example OpenClaw) to control Happier sessions using the **existing** `happier` CLI in `--json` mode.
## Prerequisites
- The `happier` CLI is installed and authenticated.
- If using multiple servers/profiles, pass server selection flags **before** `session` (prefix-only):
- `happier --server <profile-id-or-name> session list --json`
- `happier --server-url <url> --webapp-url <url> session list --json`
## Contract
All JSON outputs are a pure-stdout envelope:
```json
{ "v": 1, "ok": true, "kind": "...", "data": {} }
```
or:
```json
{ "v": 1, "ok": false, "kind": "...", "error": { "code": "..." } }
```
Common error codes to handle:
- `not_authenticated`: run `happier auth login` on the host (or mount/provide a valid `HAPPIER_HOME_DIR`).
- `session_id_ambiguous`: pick deterministically from `error.candidates` (prefer exact id; otherwise ask the user).
- `session_not_found`: call `happier session list --json` and retry.
- `unsupported`: feature disabled by server policy or backend doesn’t support the requested intent.
## Auth Commands (JSON)
Check auth status without scraping human output:
```bash
happier auth status --json
```
## Session Commands
List sessions:
```bash
happier session list --json
```
Inspect session status (server snapshot):
```bash
happier session status <session-id-or-prefix> --json
```
Inspect session status with a best-effort live refresh:
```bash
happier session status <session-id-or-prefix> --live --json
```
Create/load a session by tag:
```bash
happier session create --tag <tag> --json
```
Send a message to a session:
```bash
happier session send <session-id-or-prefix> "<message>" --json
```
Send a message and wait until the session is idle:
```bash
happier session send <session-id-or-prefix> "<message>" --wait --timeout 300 --json
```
Wait for a session to become idle:
```bash
happier session wait <session-id-or-prefix> --timeout 300 --json
```
Stop a session:
```bash
happier session stop <session-id-or-prefix> --json
```
Read session history (compact is recommended for prompt stuffing):
```bash
happier session history <session-id-or-prefix> --limit 50 --format compact --json
```
## Execution Run Commands
Start an execution run:
```bash
happier session run start <session-id-or-prefix> --intent review --backend claude --json
```
List runs for a session:
```bash
happier session run list <session-id-or-prefix> --json
```
Get a run:
```bash
happier session run get <session-id-or-prefix> <run-id> --include-structured --json
```
Send input to a run:
```bash
happier session run send <session-id-or-prefix> <run-id> "<message>" --json
```
Stop a run:
```bash
happier session run stop <session-id-or-prefix> <run-id> --json
```
Execute an action on a run:
```bash
happier session run action <session-id-or-prefix> <run-id> <action-id> --input-json '<json>' --json
```
Wait for a run to finish:
```bash
happier session run wait <session-id-or-prefix> <run-id> --timeout 300 --json
```
Stream turn IO for a streaming run (e.g. `intent=voice_agent`):
```bash
happier session run stream-start <session-id-or-prefix> <run-id> "<message>" --json
happier session run stream-read <session-id-or-prefix> <run-id> <stream-id> --cursor 0 --json
happier session run stream-cancel <session-id-or-prefix> <run-id> <stream-id> --json
```
## Server Commands (JSON)
List server profiles:
```bash
happier server list --json
```
Current active server:
```bash
happier server current --json
```
Add a server profile non-interactively:
```bash
happier server add --name "My Server" --server-url https://example.com --webapp-url https://example.com --use --json
```
Switch active server:
```bash
happier server use <id-or-name> --json
```
Remove a server profile:
```bash
happier server remove <id-or-name> --force --json
```
Probe server reachability/version:
```bash
happier server test [<id-or-name>] --json
```
Set a one-off custom server as active:
```bash
happier server set --server-url https://example.com --webapp-url https://example.com --json
```Related Skills
happier-testing
Repo-specific TDD and test-validation workflow for Happier changes, with lane selection, fixture policy, and anti-flake guardrails.
happier-github-ops
Run GitHub CLI commands as the Happier bot account via `yarn ghops` (forced PAT auth + non-interactive).
hig-components-controls
Check for .claude/apple-design-context.md before asking questions. Use existing context and only ask for information not already covered.
Pest Control Operations Agent
You are an expert pest control business operations advisor. Help operators with licensing, EPA/FIFRA compliance, pricing, route optimization, seasonal planning, technician management, and growth strategy.
Export Compliance & Trade Controls
Analyze products, destinations, and end-users against US export control regulations (EAR, ITAR, OFAC sanctions). Generate classification recommendations, license requirements, and compliance checklists.
ecovacs-robot-control
Control Ecovacs/DEEBOT robot vacuums via the Ecovacs IoT API. Use when the user wants to control a robot vacuum, check battery, start/stop/pause cleaning, return to dock, check clean status, set suction/water level, manage schedules, check consumables, or control auto-empty station. Covers all mainstream Ecovacs protocols including clean_V2, charge, getBattery, getCleanInfo_V2, getStats, getSpeed/setSpeed, getWaterInfo/setWaterInfo, getWorkMode/setWorkMode, getLifeSpan, getAutoEmpty/setAutoEmpty, getCachedMapInfo, getMapSet, getSched_V2/setSched_V2.
unified-session
Unify all chat channels into one shared AI session for seamless cross-device continuity. Start a conversation on your laptop, continue from your phone — same context, same memory, zero loss. Use this skill whenever: - User wants multiple messaging channels (DingTalk, Feishu/Lark, Telegram, Discord, WhatsApp, Signal, Slack, webchat) to share one conversation - User mentions "shared session", "cross-device", "multi-channel", "unified session", "continue conversation", "seamless", "context lost", "memory lost", "上下文丢失", "记忆丢失", "多端共享" - User says their bot "forgets" what was said when they switch from one app to another - User asks how to make Telegram/Discord/DingTalk/Feishu/WhatsApp share context with webchat - User wants to switch between desktop and mobile without losing conversation history - User mentions dmScope, session routing, channel isolation, or session merging - User describes wanting to pick up where they left off on a different device or chat app - User complains about having separate conversations on each channel when they only have one agent - Even if the user doesn't use technical terms — if they describe the pain of "switching apps and the AI doesn't remember", this is the skill to use
session-guardian
Never lose a conversation again. Auto-backup, smart recovery, and health monitoring for OpenClaw sessions. Protects against gateway crashes, model disconnections, and token overflow. Use this skill when: - User worries about losing conversations after gateway restart or model crash - User mentions session backup, conversation recovery, session protection, or data loss - User's agent is slow or timing out (likely token overflow from large sessions) - User runs multiple agents and needs to track collaboration across sessions - User asks about session health, backup strategy, or disaster recovery - User mentions "对话丢失", "会话备份", "上下文溢出", "token超限", "Gateway重启后记忆丢失" - Even if user just says "my agent lost everything after a restart" — this is the skill
session-rotate-80
Auto-create a new session when OpenClaw context usage reaches 80% without requiring Mem0 or file memory systems. Use when users want default OpenClaw to proactively rotate sessions and avoid context overflow in long chats.
session-pack
세션 종료 시 Memory, Handoff를 자동 정리. /pack
mijia-control
Control and monitor Xiaomi Mijia smart home devices. Use this skill when the user wants to: 1) Switch device status (on/off, brightness, etc.) 2) List available home devices 3) Run automation scenes 4) Check environmental statistics.
session-handoff
Creates comprehensive handoff documents for seamless AI agent session transfers. Triggered when: (1) user requests handoff/memory/context save, (2) context window approaches capacity, (3) major task milestone completed, (4) work session ending, (5) user says 'save state', 'create handoff', 'I need to pause', 'context is getting full', (6) resuming work with 'load handoff', 'resume from', 'continue where we left off'. Proactively suggests handoffs after substantial work (multiple file edits, complex debugging, architecture decisions). Solves long-running agent context exhaustion by enabling fresh agents to continue with zero ambiguity.