control-plane-worker
Implements local-first CLI, runtime, env, lifecycle, tickets, and macOS companion features for Hack.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Implements local-first CLI, runtime, env, lifecycle, tickets, and macOS companion features for Hack.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Use the hack CLI for local runtime orchestration (compose, DNS/TLS, logs, env, persistent project workspaces) and agent setup. Trigger when asked to run/start/stop services, inspect logs, manage lifecycle/workspace workflows, or update agent integrations. Prefer CLI over MCP when shell access is available.
Stand up or adopt hack in a project (agent-assisted onboarding). Trigger when asked to set a repo up with hack, migrate a project onto hack, or finish/repair a partial hack setup.
Guides and best practices for working with Neon Serverless Postgres. Covers getting started, local development with Neon, choosing a connection method, Neon features, authentication (@neondatabase/auth), PostgREST-style data API (@neondatabase/neon-js), Neon CLI, and Neon's Platform API/SDKs. Use for any Neon-related questions.
Apple Human Interface Guidelines for Mac. Use when building macOS apps with SwiftUI or AppKit, implementing menu bars, toolbars, window management, or keyboard shortcuts. Triggers on tasks involving Mac UI, desktop apps, or Mac Catalyst.
Write, review, or improve SwiftUI code following best practices for state management, view composition, performance, modern APIs, Swift concurrency, and iOS 26+ Liquid Glass adoption. Use when building new SwiftUI features, refactoring existing views, reviewing code quality, or adopting modern SwiftUI patterns.
| name | control-plane-worker |
| description | Implements local-first CLI, runtime, env, lifecycle, tickets, and macOS companion features for Hack. |
NOTE: Startup and cleanup are handled by worker-base. This skill defines the WORK PROCEDURE.
Use this skill for features that primarily touch:
src/** CLI and control-plane code.hack/docker-compose.yml, .hack/hack.config.json, or other source-of-truth Hack runtime filesDo not use this skill for retired v3 surfaces:
hack-cli — invoke when the feature touches .hack/**, runtime orchestration, lifecycle/session flows, tickets, env, or any hack up/ps/open/down verification.mission.md, mission AGENTS.md, .factory/services.yaml, and relevant .factory/library/*.md files. Restate the exact assertions or outcomes the feature must complete.tests/*.test.ts. If the feature has no fulfills claims, still add characterization or regression coverage for the changed behavior..hack/.internal/** or .hack/.branch/**; only change source-of-truth files.typecheck/check commands for the touched surfaces. For repo-bound CLI behavior, build and validate with ./dist/hack or repo-local Bun entrypoints. When invoking bun test from the repo root against files outside ./tests, use absolute paths or explicit ./-prefixed paths that Bun actually honors in this repo so targeted commands do not silently skip files.
dance.hack.github is not enabled in project config yet, use a direct resolver or similarly narrow deterministic smoke and record why the repo-bound path was unavailable.bun index.ts daemon start --foreground smoke is an acceptable validation pattern; record the isolation setup in the handoff.bun run check succeeds and only re-surfaces the known warning-only complexity diagnostics already documented in mission AGENTS.md, do not return to the orchestrator for that reason and do not record them as new discovered issues unless your feature directly worsened the warned files.{
"salientSummary": "Hardened lifecycle singleton behavior for local tunnel helpers so Hack adopts a healthy existing listener set, fails partial conflicts, and avoids duplicate host process churn.",
"whatWasImplemented": "Updated lifecycle config parsing, runtime startup decisions, docs, and regression coverage for singleton ports and adopt/fail behavior.",
"whatWasLeftUndone": "Remote/gateway/node/dispatch were intentionally left untouched because they are unsupported experimental in v3.",
"verification": {
"commandsRun": [
{
"command": "bun test tests/project-lifecycle-singleton.test.ts tests/project-config.test.ts tests/project-config-schema.test.ts",
"exitCode": 0,
"observation": "Targeted lifecycle singleton/config regression suite passed."
},
{
"command": "bun run typecheck",
"exitCode": 0,
"observation": "Workspace typecheck passed."
}
],
"interactiveChecks": [
{
"action": "Ran hack doctor before and after hack down in a repo with stale lifecycle state.",
"observed": "Doctor classified stale lifecycle metadata and pointed to hack down; cleanup removed only the matching lifecycle state."
}
]
},
"tests": {
"added": [
{
"file": "tests/project-lifecycle-singleton.test.ts",
"cases": [
{
"name": "adopts a complete singleton listener set",
"verifies": "Hack does not start duplicate fixed-port tunnel helpers when all configured ports are already listening and onConflict is adopt."
}
]
}
]
},
"discoveredIssues": []
}