cockpit
Use only when the user explicitly asks to use Cockpit, invokes a Cockpit command or skill, or asks to install, configure, develop, debug, inspect, or verify Cockpit itself; do not activate for generic app, Flutter, UI, or E2E work.
Install / Use
npx skills add cockpit-dev/cockpit --skill cockpitInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Development & EngineeringSupported Platforms
Tags
Our assessment of cockpit
cockpit scores 61/100 on our quality scale, 4085th of 4,640 Development & Engineering skills we index.
Its SKILL.md is 70 KB long, well organised into 25 sections with 35 code examples: long enough that it reads more like full documentation than a focused instruction file, which agents can find harder to follow.
It has no GitHub stars yet, so there is no community track record; judge it on its content.
Maintenance, license and trust
- We could not determine when the repository was last updated.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 68/100, with 3 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands.
Automated pattern scan on 2026-10-28. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
cockpit compared with similar skills
All 4 of these similar skills score higher than cockpit; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| cockpit (this skill)by cockpit-dev | 61 | 0 | — | SKILL.md |
| taste-skillby Leonxlnx | 100 | 104.0k | today | CLAUDE.md |
| ai-job-searchby ai-job-search-dev | 100 | 67.0k | 1d ago | CLAUDE.md |
| claude-howtoby luongnv89 | 100 | 45.7k | 1d ago | CLAUDE.md |
| algorithmic-artby anthropics | 100 | 177.9k | 35d ago | SKILL.md |
Frequently asked questions
- How do I install cockpit?
- Run
npx skills add cockpit-dev/cockpit --skill cockpit. The install tabs above show the steps for each supported agent. - Which AI agents does cockpit work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is cockpit safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. It declares no license and scores 68/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is cockpit still maintained?
- We could not determine when the repository was last updated.
Skill content
View source on GitHubname: cockpit description: Use only when the user explicitly asks to use Cockpit, invokes a Cockpit command or skill, or asks to install, configure, develop, debug, inspect, or verify Cockpit itself; do not activate for generic app, Flutter, UI, or E2E work.
Cockpit
Activation Boundary
Cockpit is opt-in. Activate this Skill only after an explicit user request to use Cockpit or to work on Cockpit itself. A generic request about app development, Flutter, UI, debugging, screenshots, mobile, desktop, browser, or E2E does not activate it. Before activation, do not invoke Cockpit commands, inspect sessions or targets, start or stop a daemon or app, load Cockpit MCP resources, or suggest a Cockpit workflow. Do not carry Cockpit into an unrelated later task unless the user explicitly activates it again.
cockpit dev owns Flutter discovery, processes, ports, and Supervisor state.
Development handles are short lowercase base-36 values (1 through 9, then
a, b, ...). Copy other generated IDs exactly; never replace them with paths.
Use the globally installed cockpit executable everywhere. Live capabilities
are authoritative.
Flutter Preflight
Before running any cockpit dev command in a Flutter source checkout, first
confirm that its Cockpit bridge entrypoint is integrated. A normal Flutter app
does not expose a Cockpit bridge by itself, so dev start rejects it during
bridge-shell preflight before launching Flutter.
Cockpit accepts two layouts:
- Direct entrypoint (recommended):
cockpit/main.dartand its bootstrap are ordinary Dart files in the application's existing Flutter package. Putflutter_cockpitin that package'sdev_dependencies, runflutter pub getat the application root, and keep the productionlib/entrypoint unchanged. This preserves the real Android/iOS/macOS host, identifiers, entitlements, permissions, flavors, and deep links. - Separate module:
cockpit/pubspec.yamlpluscockpit/main.dartform a non-published Flutter package that depends on the real application locally. Use this only when package and native-host isolation is intentional; it has a separate Dart package name and, with platform folders, a separate native app identity that must be configured deliberately.
In either layout, the entrypoint must resolve flutter_cockpit, wrap the real
application root in FlutterCockpitApp, and install the Cockpit navigator
observer for every Navigator the app owns. Run flutter pub get in the package
resolution root after changing dependencies. If any part is absent or does not
match the app's actual public bootstrap/router API, read and complete
flutter.md before cockpit dev start.
Only an already integrated checkout takes the fast path below. cockpit/main.dart
is the default development entrypoint; pass another entrypoint only when the
checkout intentionally uses one.
Select The Device Explicitly
Device choice is a deliberate input, not a host heuristic. Never infer a device from row order, the last Flutter target, a platform name, the host platform, or a remembered session. A connected macOS host must not win over an iOS/Android simulator or physical device. Before the first launch in a project, and whenever the target is ambiguous, discover the current devices:
cockpit target discover
This returns a bounded targets list with the exact id, name, platform,
emulator, and sdk. Use the exact id in the next command. If the user did
not provide a device and more than one compatible target is listed, stop and
ask which exact row to use; never choose the first, last, host, or an emulator
implicitly. If exactly one compatible target exists, state its id, name, and
platform before using that exact id. Never silently switch between a simulator
and a physical device.
The copy-ready selection flow is always:
cockpit target discover
# choose one row by its exact id; do not guess from the name alone
cockpit dev start --device <chosenId>
cockpit session show <handle>
If dev start reports deviceAmbiguous, use the listed candidates and rerun
with one exact --device; if it reports deviceNotFound, reconnect or boot
that same intended device and rediscover it. Do not fall through to another
device or start a second app. For a fresh project with multiple active sessions,
inspect cockpit session list and select the intended handle before reusing it.
cockpit target discover
cockpit dev start --device <deviceId>
cockpit session list
cockpit session show <handle>
cockpit dev status --session <handle>
For a registered black-box target, select the exact target after discovery and prove its live capabilities before any mutation:
cockpit target list
cockpit target get --target-id <targetId>
cockpit target inspect --target-id <targetId> --profile evidence
Physical-device work requires an online, unlocked, trusted device and its
native control path (Android ADB; iOS WDA/devicectl where native control is
needed). A connected row alone is not proof of E2E readiness: after the app is
registered, target inspect --profile evidence must advertise the required
tree, input, capture, lifecycle, and (for integration tests) VM capabilities.
Probe with a read-only inspect, a system-first screenshot, and dev wait before
running a real flow. Keep the same selected device id and session handle for
Flutter launches, tests, reloads, screenshots, network reads, and recovery.
For a wired physical iOS Flutter development session, Cockpit automatically
owns the Flutter SDK's iproxy forwarder for the selected device and remote
bridge port. Do not start iproxy manually, guess a host port, or launch a
second app. If forwarding is unavailable, repair the same Flutter SDK/device
connection (for example with flutter precache --ios and devicectl), then
rerun the same dev start --device <id>; Cockpit keeps the existing handle.
The app still needs a valid development signature, trusted computer,
Developer Mode, and an unlocked device. Wireless sessions use the device
network path instead and require local-network access.
These are external iOS prerequisites, not Cockpit settings. Before reporting a launch or VM timeout, verify them once on the selected device:
- macOS must have the intended Xcode selected, first-launch components and iOS
platform runtime installed.
flutter doctor -v,xcode-select -p, andxcodebuild -checkFirstLaunchStatusare the read-only checks. - A physical device must be paired and trusted, unlocked, and have Developer Mode enabled. The app's development team/signing profile must be valid; a successful Xcode build alone does not prove installation or VM reachability.
- The host app running Flutter (Terminal, IDE, or Codex) must be allowed to control Xcode in macOS System Settings > Privacy & Security > Automation. When this grant is missing, Xcode can finish building while install/launch waits and the Dart VM Service never appears. Grant only the requested Xcode automation access, then rerun the same command and device.
- For a wired device, keep the USB connection alive and use the Cockpit-owned
iproxy; for a wireless device, allow the app's iOS Local Network prompt and publish the VM port withflutter drive --publish-port. Current Flutterflutter test integration_test/...cannot publish that port wirelessly, so use USB for it. Do not switch transport or device mid-run. - ReplayKit consent is required only for native screen recording. Native WDA control additionally needs a reachable, signed WDA endpoint; neither is required for Flutter-tree-only integration actions.
Integration tests follow the same explicit selection; always pass the exact discovered id even when Flutter currently reports a single default:
flutter test integration_test/<test>.dart -d <deviceId>
flutter drive --profile --no-dds --driver=integration_test/driver.dart \
--target=integration_test/<test>.dart -d <deviceId>
Use flutter test for ordinary integration tests and flutter drive --profile --no-dds for VM-backed performance evidence. iOS Simulator supports debug
integration only; Flutter rejects iOS Simulator profile/AOT builds because
profile is physical-device-only. Before a physical run, verify the
exact device again; after it starts, require a live status, a current
screen/anchor, and no disqualifying runtime or native-driver error. For a
source-owned test, flutter_cockpit_test still uses Flutter's official runner;
it does not select a device for you. If the device disappears, repair that
device and rediscover it; do not fall through to another target or create a
second session.
A wirelessly connected iOS device is a distinct case. Current Flutter
flutter test integration_test/... cannot publish its VM service port and may
fail with Cannot start app on wirelessly tethered iOS device. Use a USB
connection for that command, or run the same integration target through
flutter drive --publish-port (plus --profile --no-dds when profiling).
On Xcode 26+ physical profile runs, add --ios-profile-debugger to use
Flutter's direct LLDB path and avoid the Xcode fallback that can wait for
CONFIGURATION_BUILD_DIR.
Keep the chosen device unlocked, accept Xcode Automation and local-network
access when required, and treat a launch that stalls before the app process is
visible as blocked rather than switching devices.
Choose The Command
Choose One AI Control Surface
CLI and MCP are two transports over the same authenticated Supervisor API; they
do not provide separate runtime state or extra capabilities. Install the
Cockpit runtime once because it supplies both cockpit and cockpit_mcp, but
choose one surface as the primary interface for a task. CLI + Skill is the
default because it is portable, compact, scriptable, and does not inject a
large tool catalog into every turn:
- Use the CLI with this Skill for normal development, CI, batch actions, and hosts that can execute shell commands.
- Choose MCP only when the host cannot reliably run shell commands or when
typed tool/resource discovery is materially useful. Keep its profile limited
to the domains needed by the task (
core,flutter, ore2e) and do not shell out to the CLI for the same operation. - A native plugin may bundle Skill + MCP; that is one logical integration. Do not add a second standalone Skill copy or MCP server on top of it.
The Skill is guidance, not a third control plane. When both surfaces are installed, one Supervisor, one selected session, and one request path remain the source of truth. Never execute the same mutation through CLI and MCP, and never load the full MCP catalog when a narrow profile or one CLI command proves the next state.
Use the highest-level command that owns the task:
| Need | Command |
| --- | --- |
| Install or refresh the current AI host integration | cockpit skill |
| Check for a newer CLI release without changing anything | cockpit update --check |
| Update the installed CLI and running Supervisor | cockpit update |
| Start, inspect, control, debug, resize, capture, or reload Flutter | cockpit dev |
| Validate or run reusable Flutter/black-box tests | cockpit case / cockpit suite |
| Read a durable run, event stream, report, or artifact | cockpit run / cockpit artifact |
| Confirm session identity, checkout, entrypoint, or reachability | cockpit session |
| Discover one generic live capability | cockpit op list --kind KIND |
| Learn an operation schema and its safer task command | cockpit explain KIND |
| Execute an advertised operation without a task command | cockpit op run KIND |
Use dev for normal Flutter work; it resolves the required project resources.
case runs one journey, suite runs a durable campaign, and op executes an
advertised operation that has no task command.
Flutter Fast Path
Start
Truncated for display — read the full file on GitHub.
Related Skills
taste-skill
104.0kAgent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
ai-job-search
67.0kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
claude-howto
45.7kA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
