en un clic
happier-session-control
// Manage Happier sessions (list/status/send/wait/history/stop + execution runs) via the happier CLI JSON contract.
// Manage Happier sessions (list/status/send/wait/history/stop + execution runs) via the happier CLI JSON contract.
Author, update, validate, and publish-ready Happier release-note story decks. Use when creating curated release notes, analyzing commits/diffs/tags to discover user-facing changes, brainstorming detailed and short release notes, adding story-deck cards, adding release-note images/videos/posters, validating translation keys and asset references, preparing happier-assets upload inputs, or updating onboarding showcase story content.
Promote a Happier release only after validation and human review approval. Runs release dry-run first, requires explicit human approval for external side effects, then executes preview or production promotion through the repo release orchestrator.
Review a completed Happier release-validation worktree before any preview promotion. Audits validation fixes, diffs, evidence, lane completion, unresolved risks, and dry-run output. Read-only by default and never releases.
Run a local-first Happier release validation cycle for a candidate version before preview promotion. Creates a validation worktree and ignored tracking workspace, orchestrates parallel checks, deep manual QA on Lima/macOS/Windows, root-cause fixes, evidence capture, independent reviews, and a final dry-run. This skill never promotes or releases.
Diagnose a problem with a Happier session, the daemon, a provider (Claude/Codex/OpenCode), auth, or connectivity. Pulls the correct logs, finds a true root cause from evidence only, presents findings, and optionally uploads a private diagnostics bundle to Happier developers and/or files a sanitized public GitHub issue (the two are complementary). Use when the user reports a bug, says Happier is broken/stuck/misbehaving, asks to debug/diagnose/triage/troubleshoot Happier, or shares a Happier session ID and asks what went wrong.
Repo-specific TDD and test-validation workflow for Happier changes, with lane selection, fixture policy, and anti-flake guardrails.
| name | happier-session-control |
| description | Manage Happier sessions (list/status/send/wait/history/stop + execution runs) via the happier CLI JSON contract. |
| metadata | {"openclaw":{"requires":{"bins":["happier"]},"homepage":"https://github.com/happier-dev/happier"}} |
This skill enables an agent framework (for example OpenClaw) to control Happier sessions using the existing happier CLI in --json mode.
happier CLI is installed and authenticated.session (prefix-only):
happier --server <profile-id-or-name> session list --jsonhappier --server-url <url> --webapp-url <url> session list --jsonAll JSON outputs are a pure-stdout envelope:
{ "v": 1, "ok": true, "kind": "...", "data": {} }
or:
{ "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.Check auth status without scraping human output:
happier auth status --json
List sessions:
happier session list --json
Inspect session status (server snapshot):
happier session status <session-id-or-prefix> --json
Inspect session status with a best-effort live refresh:
happier session status <session-id-or-prefix> --live --json
Create/load a session by tag:
happier session create --tag <tag> --json
Send a message to a session:
happier session send <session-id-or-prefix> "<message>" --json
Send a message and wait until the session is idle:
happier session send <session-id-or-prefix> "<message>" --wait --timeout 300 --json
Wait for a session to become idle:
happier session wait <session-id-or-prefix> --timeout 300 --json
Stop a session:
happier session stop <session-id-or-prefix> --json
Read session history (compact is recommended for prompt stuffing):
happier session history <session-id-or-prefix> --limit 50 --format compact --json
Start an execution run:
happier session run start <session-id-or-prefix> --intent review --backend claude --json
List runs for a session:
happier session run list <session-id-or-prefix> --json
Get a run:
happier session run get <session-id-or-prefix> <run-id> --include-structured --json
Send input to a run:
happier session run send <session-id-or-prefix> <run-id> "<message>" --json
Stop a run:
happier session run stop <session-id-or-prefix> <run-id> --json
Execute an action on a run:
happier session run action <session-id-or-prefix> <run-id> <action-id> --input-json '<json>' --json
Wait for a run to finish:
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):
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
List server profiles:
happier server list --json
Current active server:
happier server current --json
Add a server profile non-interactively:
happier server add --name "My Server" --server-url https://example.com --webapp-url https://example.com --use --json
Switch active server:
happier server use <id-or-name> --json
Remove a server profile:
happier server remove <id-or-name> --force --json
Probe server reachability/version:
happier server test [<id-or-name>] --json
Set a one-off custom server as active:
happier server set --server-url https://example.com --webapp-url https://example.com --json