@amsterdamdatalabs/enact-extensions 0.1.5 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +15 -1
- package/dist/install.js.map +1 -1
- package/dist/internal/agents.d.ts +29 -0
- package/dist/internal/agents.d.ts.map +1 -0
- package/dist/internal/agents.js +83 -0
- package/dist/internal/agents.js.map +1 -0
- package/extensions/enact-context/hooks/hooks.json +20 -0
- package/extensions/enact-core/.agents/plugin.json +39 -0
- package/extensions/enact-core/hooks/hooks.json +14 -0
- package/extensions/enact-factory/.agents/plugin.json +9 -3
- package/extensions/enact-factory/agents/architect.toml +30 -0
- package/extensions/enact-factory/agents/code-reviewer.toml +29 -0
- package/extensions/enact-factory/agents/critic.toml +35 -0
- package/extensions/enact-factory/agents/executor.toml +23 -0
- package/extensions/enact-factory/agents/explore.toml +22 -0
- package/extensions/enact-factory/agents/planner.toml +23 -0
- package/extensions/enact-factory/agents/verifier.toml +29 -0
- package/extensions/enact-factory/skills/ai-slop-cleaner/SKILL.md +52 -0
- package/extensions/enact-factory/skills/azdo-ci-strategy/SKILL.md +262 -0
- package/extensions/enact-factory/skills/azdo-ci-strategy/references/build-failures.md +60 -0
- package/extensions/enact-factory/skills/azdo-ci-strategy/references/cli-reference.md +87 -0
- package/extensions/enact-factory/skills/azdo-ci-strategy/references/policies-and-pipelines.md +132 -0
- package/extensions/enact-factory/skills/azdo-ci-strategy/references/troubleshooting.md +53 -0
- package/extensions/enact-factory/skills/deep-interview/SKILL.md +72 -0
- package/extensions/enact-factory/skills/drive-loop/SKILL.md +259 -0
- package/extensions/enact-factory/skills/drive-loop/references/contract-schema.md +107 -0
- package/extensions/enact-factory/skills/hyperplan/SKILL.md +51 -0
- package/extensions/enact-factory/skills/looplan/SKILL.md +103 -0
- package/extensions/enact-factory/skills/plan/SKILL.md +71 -0
- package/extensions/enact-factory/skills/remove-deadcode/SKILL.md +41 -0
- package/extensions/enact-factory/skills/research/SKILL.md +73 -0
- package/extensions/enact-factory/skills/review/SKILL.md +48 -0
- package/extensions/enact-factory/skills/security-research/SKILL.md +54 -0
- package/extensions/enact-factory/skills/tdd/SKILL.md +56 -0
- package/extensions/enact-factory/skills/trace/SKILL.md +37 -0
- package/extensions/enact-factory/skills/ultraqa/SKILL.md +79 -0
- package/extensions/enact-factory/skills/work-with-workitem/SKILL.md +51 -0
- package/extensions/enact-factory/skills/workitem-triage/SKILL.md +15 -0
- package/extensions/enact-loop/.agents/plugin.json +46 -0
- package/extensions/enact-loop/.mcp.json +1 -0
- package/extensions/enact-loop/hooks/hooks.json +27 -0
- package/extensions/enact-loop/skills/enact-loop/SKILL.md +327 -0
- package/extensions/enact-operator/.agents/plugin.json +0 -1
- package/extensions/enact-operator/hooks/hooks.json +0 -35
- package/extensions/enact-wiki/skills/wiki/SKILL.md +42 -0
- package/extensions/plugin-dev/.agents/plugin.json +4 -6
- package/extensions/plugin-dev/agents/plugin-validator.md +1 -1
- package/extensions/plugin-dev/skills/agent-development/SKILL.md +7 -7
- package/extensions/plugin-dev/{commands/create-plugin.md → skills/create-plugin/SKILL.md} +44 -37
- package/extensions/plugin-dev/skills/plugin-dev-guide/SKILL.md +13 -14
- package/extensions/plugin-dev/skills/skill-development/SKILL.md +0 -2
- package/extensions/plugin-dev/{commands/start.md → skills/start/SKILL.md} +7 -6
- package/package.json +11 -6
- package/scripts/check-hooks.mjs +174 -0
- package/scripts/check-principles.mjs +101 -0
- package/scripts/enact-extensions.mjs +87 -3
- package/scripts/lib/run-validate.mjs +36 -2
- package/scripts/lib/ups-router.mjs +432 -0
- package/spec/enact.json +4 -0
- package/spec/enact.md +5 -2
- package/extensions/cmux/.agents/plugin.json +0 -37
- package/extensions/cmux/skills/cmux/SKILL.md +0 -82
- package/extensions/cmux/skills/cmux/agents/openai.yaml +0 -4
- package/extensions/cmux/skills/cmux/references/handles-and-identify.md +0 -35
- package/extensions/cmux/skills/cmux/references/panes-surfaces.md +0 -37
- package/extensions/cmux/skills/cmux/references/trigger-flash-and-health.md +0 -23
- package/extensions/cmux/skills/cmux/references/windows-workspaces.md +0 -31
- package/extensions/cmux/skills/cmux-vm-monitor/SKILL.md +0 -122
- package/extensions/cmux/skills/cmux-vm-monitor/agents/openai.yaml +0 -4
- package/extensions/cmux/skills/cmux-vm-monitor/references/cmux-commands.md +0 -66
- package/extensions/cmux/skills/cmux-vm-monitor/scripts/codex_vm_monitor.sh +0 -45
- package/extensions/cmux/skills/cmux-workspace/SKILL.md +0 -93
- package/extensions/devops/.agents/plugin.json +0 -36
- package/extensions/devops/skills/azure-devops-cli/SKILL.md +0 -431
- package/extensions/devops/skills/azure-devops-cli/agents/openai.yaml +0 -4
- package/extensions/devops/skills/ci-pipeline-strategy/SKILL.md +0 -217
- package/extensions/devops/skills/ci-pipeline-strategy/agents/openai.yaml +0 -4
- package/extensions/enact-factory/hooks/user-prompt-submit.mjs +0 -67
- package/extensions/enact-operator/commands/doctor.md +0 -39
- package/extensions/enact-operator/commands/setup.md +0 -51
- package/extensions/plugin-dev/.mcp.json +0 -3
- package/extensions/plugin-dev/commands/_archive/create-marketplace.md +0 -427
- package/extensions/plugin-dev/commands/_archive/plugin-dev-guide.md +0 -12
- package/extensions/plugin-dev/hooks/hooks.json +0 -3
- package/extensions/plugin-dev/skills/command-development/SKILL.md +0 -763
- package/extensions/plugin-dev/skills/command-development/examples/plugin-commands.md +0 -612
- package/extensions/plugin-dev/skills/command-development/examples/simple-commands.md +0 -527
- package/extensions/plugin-dev/skills/command-development/references/advanced-workflows.md +0 -762
- package/extensions/plugin-dev/skills/command-development/references/documentation-patterns.md +0 -769
- package/extensions/plugin-dev/skills/command-development/references/frontmatter-reference.md +0 -508
- package/extensions/plugin-dev/skills/command-development/references/interactive-commands.md +0 -966
- package/extensions/plugin-dev/skills/command-development/references/marketplace-considerations.md +0 -943
- package/extensions/plugin-dev/skills/command-development/references/plugin-features-reference.md +0 -637
- package/extensions/plugin-dev/skills/command-development/references/plugin-integration.md +0 -191
- package/extensions/plugin-dev/skills/command-development/references/skill-tool.md +0 -447
- package/extensions/plugin-dev/skills/command-development/references/testing-strategies.md +0 -723
- package/extensions/plugin-dev/skills/command-development/scripts/check-frontmatter.sh +0 -234
- package/extensions/plugin-dev/skills/command-development/scripts/validate-command.sh +0 -160
- /package/extensions/enact-operator/{skills/_variants.md → docs/skill-variants.md} +0 -0
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cmux
|
|
3
|
-
description: End-user control of cmux topology and routing (windows, workspaces, panes/surfaces, focus, moves, reorder, identify, trigger flash). Use when automation needs deterministic placement and navigation in a multi-pane cmux layout.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# cmux Core Control
|
|
7
|
-
|
|
8
|
-
Use this skill to control non-browser cmux topology and routing.
|
|
9
|
-
|
|
10
|
-
## Core Concepts
|
|
11
|
-
|
|
12
|
-
- Window: top-level macOS cmux window.
|
|
13
|
-
- Workspace: tab-like group within a window.
|
|
14
|
-
- Pane: split container in a workspace.
|
|
15
|
-
- Surface: a tab within a pane (terminal or browser panel).
|
|
16
|
-
|
|
17
|
-
## Fast Start
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
# identify current caller context
|
|
21
|
-
cmux identify --json
|
|
22
|
-
|
|
23
|
-
# list topology
|
|
24
|
-
cmux list-windows
|
|
25
|
-
cmux list-workspaces
|
|
26
|
-
cmux list-panes
|
|
27
|
-
cmux list-pane-surfaces --pane pane:1
|
|
28
|
-
|
|
29
|
-
# create/focus/move
|
|
30
|
-
cmux new-workspace
|
|
31
|
-
cmux new-split right --panel pane:1
|
|
32
|
-
cmux move-surface --surface surface:7 --pane pane:2 --focus true
|
|
33
|
-
cmux split-off --surface surface:7 right
|
|
34
|
-
cmux reorder-surface --surface surface:7 --before surface:3
|
|
35
|
-
|
|
36
|
-
# attention cue
|
|
37
|
-
cmux trigger-flash --surface surface:7
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
## Settings and Docs
|
|
41
|
-
|
|
42
|
-
Use `cmux docs settings` before changing cmux-owned settings. It prints the docs URL, schema URL, raw GitHub resources, cmux.json paths, and reload command.
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
cmux docs settings
|
|
46
|
-
cmux settings path
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
cmux-owned settings live in `~/.config/cmux/cmux.json`. Legacy `~/.config/cmux/settings.json` and `~/Library/Application Support/com.cmuxterm.app/settings.json` files are read only as fallback for missing keys. Before editing, copy any existing `cmux.json` file to a timestamped `.bak` next to it so the user can revert. Edit the user file, then reload:
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
cmux reload-config
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
`cmux reload-config` reloads both `cmux.json` and Ghostty config (`~/.config/ghostty/config`) and refreshes terminals in place. No app restart needed.
|
|
56
|
-
|
|
57
|
-
Use cmux settings for app behavior, sidebar, notifications, browser behavior, automation, workspace colors, and cmux-owned shortcuts. Terminal rendering settings such as font, cursor style, theme, scrollback, background transparency (`background-opacity`), and blur (`background-blur`) belong in Ghostty config at `~/.config/ghostty/config`.
|
|
58
|
-
|
|
59
|
-
Open the UI when useful:
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
cmux settings
|
|
63
|
-
cmux settings cmux-json
|
|
64
|
-
cmux settings shortcuts
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## Handle Model
|
|
68
|
-
|
|
69
|
-
- Default output uses short refs: `window:N`, `workspace:N`, `pane:N`, `surface:N`.
|
|
70
|
-
- UUIDs are still accepted as inputs.
|
|
71
|
-
- Request UUID output only when needed: `--id-format uuids|both`.
|
|
72
|
-
|
|
73
|
-
## Deep-Dive References
|
|
74
|
-
|
|
75
|
-
| Reference | When to Use |
|
|
76
|
-
|-----------|-------------|
|
|
77
|
-
| [references/handles-and-identify.md](references/handles-and-identify.md) | Handle syntax, self-identify, caller targeting |
|
|
78
|
-
| [references/windows-workspaces.md](references/windows-workspaces.md) | Window/workspace lifecycle and reorder/move |
|
|
79
|
-
| [references/panes-surfaces.md](references/panes-surfaces.md) | Splits, surfaces, move/reorder, focus routing |
|
|
80
|
-
| [references/trigger-flash-and-health.md](references/trigger-flash-and-health.md) | Flash cue and surface health checks |
|
|
81
|
-
|
|
82
|
-
Use the bundled `cmux-workspace` companion skill when the task is workspace-scoped terminal automation or sibling-surface coordination rather than global topology control. The broader cmux project also ships browser, settings, markdown, and diagnostics companion skills that can be vendored into this bundle separately.
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: "cmux Core"
|
|
3
|
-
short_description: "Control windows/workspaces/panes/surfaces and routing with cmux CLI."
|
|
4
|
-
default_prompt: "Use this skill to inspect and manipulate cmux topology: identify context, target handles, create/focus/move/reorder windows/workspaces/panes/surfaces, and use trigger-flash for visual confirmation."
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# Handles and Identify
|
|
2
|
-
|
|
3
|
-
Use `identify` and short handles for deterministic automation targeting.
|
|
4
|
-
|
|
5
|
-
## Handle Inputs
|
|
6
|
-
|
|
7
|
-
Most v2-backed commands accept:
|
|
8
|
-
- UUID
|
|
9
|
-
- short ref (`window:N`, `workspace:N`, `pane:N`, `surface:N`)
|
|
10
|
-
- index (where legacy/index-based commands still allow it)
|
|
11
|
-
|
|
12
|
-
## Self Identify
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
cmux identify --json
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
Returns current focused topology plus optional caller resolution.
|
|
19
|
-
|
|
20
|
-
## Caller Override
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
cmux identify --workspace workspace:2
|
|
24
|
-
cmux identify --workspace workspace:2 --surface surface:8
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
Useful for agents that need to route relative actions from a known caller anchor.
|
|
28
|
-
|
|
29
|
-
## Output Shaping
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
cmux --json identify
|
|
33
|
-
cmux --json --id-format both identify
|
|
34
|
-
cmux --json --id-format uuids identify
|
|
35
|
-
```
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# Panes and Surfaces
|
|
2
|
-
|
|
3
|
-
Split layout, surface creation, focus, move, and reorder.
|
|
4
|
-
|
|
5
|
-
## Inspect
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
cmux list-panes
|
|
9
|
-
cmux list-pane-surfaces --pane pane:1
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
## Create Splits/Surfaces
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
cmux new-split right --panel pane:1
|
|
16
|
-
cmux new-surface --type terminal --pane pane:1
|
|
17
|
-
cmux new-surface --type browser --pane pane:1 --url https://example.com
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## Focus and Close
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
cmux focus-pane --pane pane:2
|
|
24
|
-
cmux focus-panel --panel surface:7
|
|
25
|
-
cmux close-surface --surface surface:7
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Move/Reorder Surfaces
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
cmux move-surface --surface surface:7 --pane pane:2 --focus true
|
|
32
|
-
cmux move-surface --surface surface:7 --workspace workspace:2 --window window:1 --after surface:4
|
|
33
|
-
cmux split-off --surface surface:7 right
|
|
34
|
-
cmux reorder-surface --surface surface:7 --before surface:3
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
Surface identity is stable across move, reorder, and split-off operations. Layout commands are focus-neutral by default; pass `--focus true` only when you want the moved or created surface selected.
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# Trigger Flash and Surface Health
|
|
2
|
-
|
|
3
|
-
Operational checks useful in automation loops.
|
|
4
|
-
|
|
5
|
-
## Trigger Flash
|
|
6
|
-
|
|
7
|
-
Flash a surface or workspace to provide visual confirmation in UI:
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
cmux trigger-flash --surface surface:7
|
|
11
|
-
cmux trigger-flash --workspace workspace:2
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
## Surface Health
|
|
15
|
-
|
|
16
|
-
Use health output to detect hidden, detached, or non-windowed surfaces:
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
cmux surface-health
|
|
20
|
-
cmux surface-health --workspace workspace:2
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
Use this before routing focused input if UI state may be stale.
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
# Windows and Workspaces
|
|
2
|
-
|
|
3
|
-
Window and workspace lifecycle and ordering operations.
|
|
4
|
-
|
|
5
|
-
## Inspect
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
cmux list-windows
|
|
9
|
-
cmux current-window
|
|
10
|
-
cmux list-workspaces
|
|
11
|
-
cmux current-workspace
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
## Create/Focus/Close
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
cmux new-window
|
|
18
|
-
cmux focus-window --window window:2
|
|
19
|
-
cmux close-window --window window:2
|
|
20
|
-
|
|
21
|
-
cmux new-workspace
|
|
22
|
-
cmux select-workspace --workspace workspace:4
|
|
23
|
-
cmux close-workspace --workspace workspace:4
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Reorder and Move
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
cmux reorder-workspace --workspace workspace:4 --before workspace:2
|
|
30
|
-
cmux move-workspace-to-window --workspace workspace:4 --window window:1
|
|
31
|
-
```
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cmux-vm-monitor
|
|
3
|
-
description: >-
|
|
4
|
-
Runs a remote VM pane with local monitoring and steering via cmux. Use when
|
|
5
|
-
the user wants SSH into a VM, launch work in a dedicated pane, send a long
|
|
6
|
-
autonomous goal, and schedule local periodic check-ins that inspect the VM
|
|
7
|
-
pane and wake the local steering pane without moving the actual coding off
|
|
8
|
-
the VM.
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# cmux VM monitor
|
|
12
|
-
|
|
13
|
-
Use this skill when the user wants:
|
|
14
|
-
|
|
15
|
-
- actual coding and building on a VM
|
|
16
|
-
- the current local machine to remain the monitor and steering surface
|
|
17
|
-
- cmux-driven pane automation instead of manual switching
|
|
18
|
-
- periodic local check-ins against the remote Codex pane
|
|
19
|
-
|
|
20
|
-
## Contract
|
|
21
|
-
|
|
22
|
-
- The VM does the coding.
|
|
23
|
-
- The local machine does the scheduling, pane inspection, and steering.
|
|
24
|
-
- The local monitor does not talk to the VM pane. It only wakes the local pane with an instruction to inspect the VM and act.
|
|
25
|
-
- Prefer `cmux send` followed by `cmux send-key tab` for local wake injection as plain queued text, not as a shell wrapper like `printf`.
|
|
26
|
-
- Do not assume pane ids are stable. Re-identify the workspace, pane, and surface before acting.
|
|
27
|
-
- Keep the wake message explicit enough that the local agent gets the exact cmux command sequence to run: inspect VM, ask for summary, decide `nothing | steer | stop`.
|
|
28
|
-
|
|
29
|
-
## Layout pattern
|
|
30
|
-
|
|
31
|
-
1. Identify the current workspace and panes.
|
|
32
|
-
2. Reuse an existing right-side helper pane when possible.
|
|
33
|
-
3. SSH into the VM inside that pane.
|
|
34
|
-
4. Start `codex` in the target repo on the VM.
|
|
35
|
-
5. Send the long-form goal from the local machine into the VM Codex pane.
|
|
36
|
-
6. Run a local monitor loop that inspects the VM pane every N minutes and wakes the local pane.
|
|
37
|
-
|
|
38
|
-
## Fast start
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
# 1) Find the active workspace and right pane
|
|
42
|
-
cmux identify --json
|
|
43
|
-
cmux list-panes --workspace workspace:1 --json
|
|
44
|
-
cmux list-pane-surfaces --workspace workspace:1 --pane pane:2 --json
|
|
45
|
-
|
|
46
|
-
# 2) Inspect the remote pane
|
|
47
|
-
cmux capture-pane --workspace workspace:1 --surface surface:2 --lines 120
|
|
48
|
-
|
|
49
|
-
# 3) Drive the pane
|
|
50
|
-
cmux send --workspace workspace:1 --surface surface:2 "cd /root/Documents/enact-agent && codex --yolo"
|
|
51
|
-
cmux send-key --workspace workspace:1 --surface surface:2 enter
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
## Monitor loop
|
|
55
|
-
|
|
56
|
-
Use the bundled script:
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
extensions/skills/cmux-vm-monitor/scripts/codex_vm_monitor.sh
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
Default behavior:
|
|
63
|
-
|
|
64
|
-
- captures the VM Codex pane locally
|
|
65
|
-
- appends a local log entry
|
|
66
|
-
- injects a wake message into the local pane with the exact follow-up cmux commands
|
|
67
|
-
- does not send any command to the VM pane
|
|
68
|
-
|
|
69
|
-
Environment variables:
|
|
70
|
-
|
|
71
|
-
- `CMUX_MONITOR_WORKSPACE`
|
|
72
|
-
- `CMUX_MONITOR_SURFACE`
|
|
73
|
-
- `CMUX_MONITOR_LINES`
|
|
74
|
-
- `CMUX_MONITOR_LOG`
|
|
75
|
-
- `CMUX_MONITOR_WAKE_MESSAGE`
|
|
76
|
-
|
|
77
|
-
Example one-shot run:
|
|
78
|
-
|
|
79
|
-
```bash
|
|
80
|
-
CMUX_MONITOR_WORKSPACE=workspace:1 \
|
|
81
|
-
CMUX_MONITOR_SURFACE=surface:2 \
|
|
82
|
-
bash extensions/skills/cmux-vm-monitor/scripts/codex_vm_monitor.sh
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
Example local scheduler:
|
|
86
|
-
|
|
87
|
-
```bash
|
|
88
|
-
nohup bash -lc 'sleep 300; while true; do \
|
|
89
|
-
bash extensions/skills/cmux-vm-monitor/scripts/codex_vm_monitor.sh; \
|
|
90
|
-
sleep 1800; \
|
|
91
|
-
done' >/tmp/codex_vm_monitor.runner.log 2>&1 &
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
This is intentionally local. Do not install the scheduler on the VM unless the user explicitly asks.
|
|
95
|
-
|
|
96
|
-
## Wake contract
|
|
97
|
-
|
|
98
|
-
The monitor is intentionally simple:
|
|
99
|
-
|
|
100
|
-
- capture the VM pane
|
|
101
|
-
- log what it saw locally
|
|
102
|
-
- wake the local pane with a precise instruction
|
|
103
|
-
- include the exact `cmux capture-pane`, `cmux send`, and `cmux send-key Enter` sequence for the target VM surface
|
|
104
|
-
- let the local agent decide whether to do `nothing`, `steer`, or `stop`
|
|
105
|
-
|
|
106
|
-
Do not put VM-side steering logic into the monitor script itself.
|
|
107
|
-
|
|
108
|
-
## Long-goal injection pattern
|
|
109
|
-
|
|
110
|
-
Send the goal text as a single paste payload, then submit separately:
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
cmux send --workspace workspace:1 --surface surface:2 "<goal text>"
|
|
114
|
-
cmux send-key --workspace workspace:1 --surface surface:2 enter
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
After submission, confirm the pane moved into an active state with `cmux capture-pane`.
|
|
118
|
-
|
|
119
|
-
## References
|
|
120
|
-
|
|
121
|
-
- Use [references/cmux-commands.md](references/cmux-commands.md) for the exact commands that worked in this pattern.
|
|
122
|
-
- Use [scripts/codex_vm_monitor.sh](scripts/codex_vm_monitor.sh) instead of retyping the monitor loop.
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: "cmux VM Codex Monitor"
|
|
3
|
-
short_description: "Run Codex on a VM pane and monitor it locally through cmux."
|
|
4
|
-
default_prompt: "Use this skill to drive a Codex session running on a remote VM pane through cmux, send a long goal into the VM pane, and set up a local periodic monitor that captures the pane and only nudges for a summary when Codex is idle."
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
# cmux commands for local-monitor / VM-Codex runs
|
|
2
|
-
|
|
3
|
-
## Topology and targeting
|
|
4
|
-
|
|
5
|
-
```bash
|
|
6
|
-
cmux identify --json
|
|
7
|
-
cmux list-panes --workspace workspace:1 --json
|
|
8
|
-
cmux list-pane-surfaces --workspace workspace:1 --pane pane:2 --json
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
Use these before every mutating step. Pane and surface refs can change across sessions.
|
|
12
|
-
|
|
13
|
-
## Inspect the VM pane
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
cmux capture-pane --workspace workspace:1 --surface surface:2 --lines 120
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
Use for:
|
|
20
|
-
|
|
21
|
-
- checking whether SSH is already connected
|
|
22
|
-
- checking whether Codex is in the TUI
|
|
23
|
-
- checking whether Codex is busy or idle
|
|
24
|
-
- reading the latest progress snapshot from the VM
|
|
25
|
-
|
|
26
|
-
## Send text, then submit separately
|
|
27
|
-
|
|
28
|
-
Preferred pattern:
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
cmux send --workspace workspace:1 --surface surface:2 "cd /root/Documents/enact-agent && codex --yolo"
|
|
32
|
-
cmux send-key --workspace workspace:1 --surface surface:2 enter
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
This is safer than depending on embedded trailing newlines in the payload.
|
|
36
|
-
|
|
37
|
-
## Launch or relaunch the VM task
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
cmux send --workspace workspace:1 --surface surface:2 "ssh root@srv1349818.walrus-morray.ts.net"
|
|
41
|
-
cmux send-key --workspace workspace:1 --surface surface:2 enter
|
|
42
|
-
|
|
43
|
-
cmux send --workspace workspace:1 --surface surface:2 "cd /root/Documents/enact-agent && codex --yolo"
|
|
44
|
-
cmux send-key --workspace workspace:1 --surface surface:2 enter
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Local wake follow-up loop
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
cmux capture-pane --workspace workspace:1 --surface surface:2 --lines 120
|
|
51
|
-
|
|
52
|
-
cmux send --workspace workspace:1 --surface surface:2 "Status check from the local 30-minute monitor. In 8 lines max, summarize: current phase, current file or slice, last completed step, last red proof, last green proof, blocker if any, next exact action, and whether OVERNIGHT_MERGE_STATUS.md is updated."
|
|
53
|
-
cmux send-key --workspace workspace:1 --surface surface:2 enter
|
|
54
|
-
|
|
55
|
-
cmux capture-pane --workspace workspace:1 --surface surface:2 --lines 120
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
Use this exact sequence when the local wake lands. Inspect first, ask for the summary second, then inspect again before deciding `nothing`, `steer`, or `stop`.
|
|
59
|
-
|
|
60
|
-
## Optional right-pane creation
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
cmux new-pane --workspace workspace:1 --type terminal --direction right --focus false
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
Use only when no helper pane already exists.
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
set -euo pipefail
|
|
3
|
-
|
|
4
|
-
WORKSPACE_REF="${CMUX_MONITOR_WORKSPACE:-workspace:1}"
|
|
5
|
-
SURFACE_REF="${CMUX_MONITOR_SURFACE:-surface:2}"
|
|
6
|
-
RELAY_WORKSPACE_REF="${CMUX_MONITOR_RELAY_WORKSPACE:-workspace:1}"
|
|
7
|
-
RELAY_SURFACE_REF="${CMUX_MONITOR_RELAY_SURFACE:-surface:1}"
|
|
8
|
-
LINES="${CMUX_MONITOR_LINES:-180}"
|
|
9
|
-
LOG_FILE="${CMUX_MONITOR_LOG:-/tmp/codex_vm_monitor.log}"
|
|
10
|
-
LOCAL_WAKE_MESSAGE_TEMPLATE="${CMUX_MONITOR_WAKE_MESSAGE:-[VM monitor __TIMESTAMP__] 30-minute check. Use exact cmux commands against __WORKSPACE__/__SURFACE__: 1) cmux capture-pane --workspace __WORKSPACE__ --surface __SURFACE__ --lines 120 2) cmux send --workspace __WORKSPACE__ --surface __SURFACE__ \"Status check from the local monitor. In exactly 8 lines, summarize: current phase, current file or slice, last completed step, last red proof, last green proof, blocker if any, next exact action, and whether OVERNIGHT_MERGE_STATUS.md is updated.\" 3) cmux send-key --workspace __WORKSPACE__ --surface __SURFACE__ Enter 4) cmux capture-pane --workspace __WORKSPACE__ --surface __SURFACE__ --lines 120 Then decide nothing | steer | stop.}"
|
|
11
|
-
|
|
12
|
-
timestamp() {
|
|
13
|
-
date -u +"%Y-%m-%dT%H:%M:%SZ"
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
capture() {
|
|
17
|
-
cmux capture-pane --workspace "$WORKSPACE_REF" --surface "$SURFACE_REF" --lines "$LINES"
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
relay_local() {
|
|
21
|
-
local message="$1"
|
|
22
|
-
cmux send --workspace "$RELAY_WORKSPACE_REF" --surface "$RELAY_SURFACE_REF" "$message"
|
|
23
|
-
cmux send-key --workspace "$RELAY_WORKSPACE_REF" --surface "$RELAY_SURFACE_REF" tab
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
snapshot="$(capture 2>&1 || true)"
|
|
27
|
-
|
|
28
|
-
{
|
|
29
|
-
printf '=== %s ===\n' "$(timestamp)"
|
|
30
|
-
printf 'workspace=%s surface=%s\n' "$WORKSPACE_REF" "$SURFACE_REF"
|
|
31
|
-
printf '%s\n' "$snapshot"
|
|
32
|
-
printf '\n'
|
|
33
|
-
} >> "$LOG_FILE"
|
|
34
|
-
|
|
35
|
-
if grep -q "Error: not_found\\|ERROR: Surface not found" <<<"$snapshot"; then
|
|
36
|
-
printf '[%s] monitor: surface missing\n' "$(timestamp)" >> "$LOG_FILE"
|
|
37
|
-
relay_local "[VM monitor $(timestamp)] surface missing for $WORKSPACE_REF/$SURFACE_REF"
|
|
38
|
-
exit 0
|
|
39
|
-
fi
|
|
40
|
-
|
|
41
|
-
wake_message="${LOCAL_WAKE_MESSAGE_TEMPLATE/__TIMESTAMP__/$(timestamp)}"
|
|
42
|
-
wake_message="${wake_message//__WORKSPACE__/$WORKSPACE_REF}"
|
|
43
|
-
wake_message="${wake_message//__SURFACE__/$SURFACE_REF}"
|
|
44
|
-
printf '[%s] monitor: local wake injected; vm pane captured only\n' "$(timestamp)" >> "$LOG_FILE"
|
|
45
|
-
relay_local "$wake_message"
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cmux-workspace
|
|
3
|
-
description: This skill should be used when work should stay inside the current cmux workspace and terminal, including workspace-scoped pane or surface inspection, non-disruptive terminal automation, and sibling-surface coordination messages.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# cmux Workspace
|
|
7
|
-
Use this skill when work should stay scoped to the caller's cmux workspace and surface.
|
|
8
|
-
|
|
9
|
-
## Default Rule
|
|
10
|
-
Scope actions to the current caller workspace unless the user explicitly names another workspace, tab, or window.
|
|
11
|
-
|
|
12
|
-
Start by resolving the live caller context:
|
|
13
|
-
```bash
|
|
14
|
-
printf 'workspace=%s\nsurface=%s\nsocket=%s\n' \
|
|
15
|
-
"${CMUX_WORKSPACE_ID:-}" \
|
|
16
|
-
"${CMUX_SURFACE_ID:-}" \
|
|
17
|
-
"${CMUX_SOCKET_PATH:-}"
|
|
18
|
-
cmux identify --json
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
If the env vars are empty, use `cmux identify --json` and be explicit that you are falling back to the currently focused cmux context.
|
|
22
|
-
|
|
23
|
-
## Non-Disruptive Automation
|
|
24
|
-
Never change visible focus unless the user explicitly asked for it.
|
|
25
|
-
|
|
26
|
-
Do not call these speculatively:
|
|
27
|
-
- `cmux select-workspace`
|
|
28
|
-
- `cmux focus-pane`
|
|
29
|
-
- `cmux focus-panel`
|
|
30
|
-
|
|
31
|
-
Prefer explicit `--workspace` and `--surface` flags for mutating actions.
|
|
32
|
-
|
|
33
|
-
## Messaging Pattern
|
|
34
|
-
For sibling-surface coordination, the default submission pattern is:
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
cmux send --workspace workspace:N --surface surface:N "<message>"
|
|
38
|
-
cmux send-key --workspace workspace:N --surface surface:N Enter
|
|
39
|
-
cmux capture-pane --workspace workspace:N --surface surface:N --lines 120
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
Rules:
|
|
43
|
-
- Use `cmux send` plus `cmux send-key Enter` as the default pattern.
|
|
44
|
-
- Always verify delivery with `cmux capture-pane`; do not trust `OK` from `cmux send` alone.
|
|
45
|
-
- If the pane is busy, expect the message to remain queued in the composer. Report that exact state instead of claiming the message was accepted.
|
|
46
|
-
- Only interrupt a busy pane if the user explicitly wants immediate submission.
|
|
47
|
-
|
|
48
|
-
## Coordination Prefixes
|
|
49
|
-
When you send a coordination message yourself, prefix it so direction is obvious:
|
|
50
|
-
|
|
51
|
-
- `[sidecar -> enact-agent-config]`
|
|
52
|
-
- `[enact-agent-config -> sidecar]`
|
|
53
|
-
|
|
54
|
-
Rules:
|
|
55
|
-
- Prefix only the coordination messages you send or relay.
|
|
56
|
-
- Do not assume the user's own plain-text messages already carry a prefix.
|
|
57
|
-
- Keep coordination updates short and operational: owner, current status, blocker, next step.
|
|
58
|
-
|
|
59
|
-
## Caller Terminal
|
|
60
|
-
Treat the caller surface as the safest anchor for relative operations:
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
cmux send --surface "${CMUX_SURFACE_ID:-}" "git status"
|
|
64
|
-
cmux send-key --surface "${CMUX_SURFACE_ID:-}" Enter
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## Inspect Workspace State
|
|
68
|
-
Useful inspection commands:
|
|
69
|
-
|
|
70
|
-
```bash
|
|
71
|
-
cmux identify --json
|
|
72
|
-
cmux list-workspaces --json
|
|
73
|
-
cmux list-panes --workspace "${CMUX_WORKSPACE_ID:-}" --json
|
|
74
|
-
cmux list-pane-surfaces --workspace "${CMUX_WORKSPACE_ID:-}" --json
|
|
75
|
-
cmux capture-pane --workspace "${CMUX_WORKSPACE_ID:-}" --surface "${CMUX_SURFACE_ID:-}" --lines 120
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
## Right-Side Helper Policy
|
|
79
|
-
When auxiliary work is needed in the caller workspace:
|
|
80
|
-
- reuse an existing non-caller helper pane if one already exists
|
|
81
|
-
- otherwise create exactly one helper pane to the right
|
|
82
|
-
- avoid creating extra splits when a new surface in the helper pane is enough
|
|
83
|
-
|
|
84
|
-
Example:
|
|
85
|
-
```bash
|
|
86
|
-
cmux new-pane --workspace "${CMUX_WORKSPACE_ID:-}" --type terminal --direction right --focus false
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## Stop Conditions
|
|
90
|
-
Stop and report instead of guessing when:
|
|
91
|
-
- the target workspace or surface cannot be identified confidently
|
|
92
|
-
- the pane stays busy and the message remains queued
|
|
93
|
-
- a command would require focus-changing behavior the user did not request
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "devops",
|
|
3
|
-
"version": "0.1.0",
|
|
4
|
-
"description": "DevOps skills for Enact: Azure DevOps CLI workflows and CI pipeline strategy for branch, build, and release operations.",
|
|
5
|
-
"author": {
|
|
6
|
-
"name": "Amsterdam Data Labs"
|
|
7
|
-
},
|
|
8
|
-
"license": "UNLICENSED",
|
|
9
|
-
"keywords": [
|
|
10
|
-
"devops",
|
|
11
|
-
"azure-devops",
|
|
12
|
-
"ci",
|
|
13
|
-
"pipeline",
|
|
14
|
-
"release"
|
|
15
|
-
],
|
|
16
|
-
"targets": [
|
|
17
|
-
"claude",
|
|
18
|
-
"codex",
|
|
19
|
-
"cursor"
|
|
20
|
-
],
|
|
21
|
-
"skills": "./skills/",
|
|
22
|
-
"interface": {
|
|
23
|
-
"displayName": "DevOps",
|
|
24
|
-
"shortDescription": "Azure DevOps CLI and CI pipeline strategy skills.",
|
|
25
|
-
"developerName": "Amsterdam Data Labs",
|
|
26
|
-
"category": "Developer Tools",
|
|
27
|
-
"capabilities": [
|
|
28
|
-
"azure devops cli",
|
|
29
|
-
"ci pipeline strategy"
|
|
30
|
-
]
|
|
31
|
-
},
|
|
32
|
-
"factory": {
|
|
33
|
-
"firstParty": true,
|
|
34
|
-
"operatorScope": "global"
|
|
35
|
-
}
|
|
36
|
-
}
|