@amsterdamdatalabs/enact-extensions 0.1.12 → 0.1.25

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.
Files changed (148) hide show
  1. package/README.md +11 -12
  2. package/dist/create/enact.js +1 -1
  3. package/dist/create/enact.js.map +1 -1
  4. package/dist/create/index.d.ts +4 -3
  5. package/dist/create/index.d.ts.map +1 -1
  6. package/dist/create/index.js +9 -2
  7. package/dist/create/index.js.map +1 -1
  8. package/dist/index.d.ts +8 -6
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +4 -3
  11. package/dist/index.js.map +1 -1
  12. package/dist/install.d.ts +5 -0
  13. package/dist/install.d.ts.map +1 -1
  14. package/dist/install.js +10 -3
  15. package/dist/install.js.map +1 -1
  16. package/dist/internal/agents.d.ts +6 -1
  17. package/dist/internal/agents.d.ts.map +1 -1
  18. package/dist/internal/agents.js +8 -4
  19. package/dist/internal/agents.js.map +1 -1
  20. package/dist/internal/claude.d.ts +24 -0
  21. package/dist/internal/claude.d.ts.map +1 -1
  22. package/dist/internal/claude.js +99 -0
  23. package/dist/internal/claude.js.map +1 -1
  24. package/dist/internal/platform.d.ts +3 -1
  25. package/dist/internal/platform.d.ts.map +1 -1
  26. package/dist/internal/platform.js +7 -1
  27. package/dist/internal/platform.js.map +1 -1
  28. package/dist/internal/types.d.ts +2 -1
  29. package/dist/internal/types.d.ts.map +1 -1
  30. package/dist/principles.d.ts +28 -0
  31. package/dist/principles.d.ts.map +1 -0
  32. package/dist/principles.js +159 -0
  33. package/dist/principles.js.map +1 -0
  34. package/extensions/dev-state/.agents/plugin.json +2 -1
  35. package/extensions/enact-context/.agents/plugin.json +2 -1
  36. package/extensions/enact-context/hooks/hooks.json +0 -10
  37. package/extensions/enact-context/skills/enact-context/SKILL.md +14 -12
  38. package/extensions/enact-context/skills/enact-context/scripts/install.sh +7 -7
  39. package/extensions/enact-core/.agents/plugin.json +2 -1
  40. package/extensions/enact-core/OPERATING-PRINCIPLES.md +7 -0
  41. package/extensions/enact-core/hooks/hooks.json +12 -0
  42. package/extensions/enact-evolve/.agents/plugin.json +47 -0
  43. package/extensions/enact-evolve/agents/evolve-session-analyst.toml +37 -0
  44. package/extensions/enact-evolve/skills/session-analysis/SKILL.md +98 -0
  45. package/extensions/enact-evolve/skills/session-analysis/scripts/run-evolve-analysis.sh +343 -0
  46. package/extensions/enact-factory/.agents/plugin.json +2 -2
  47. package/extensions/enact-factory/agents/architect.toml +9 -5
  48. package/extensions/enact-factory/agents/code-reviewer.toml +9 -5
  49. package/extensions/enact-factory/agents/critic.toml +9 -5
  50. package/extensions/enact-factory/agents/executor.toml +4 -1
  51. package/extensions/enact-factory/agents/explore.toml +4 -1
  52. package/extensions/enact-factory/agents/planner.toml +4 -1
  53. package/extensions/enact-factory/agents/verifier.toml +9 -5
  54. package/extensions/enact-factory/skills/advisor/SKILL.md +82 -0
  55. package/extensions/enact-factory/skills/ai-slop-cleaner/SKILL.md +6 -1
  56. package/extensions/enact-factory/skills/autonomous-runner/SKILL.md +347 -0
  57. package/extensions/enact-factory/skills/azdo-ci-strategy/SKILL.md +42 -15
  58. package/extensions/enact-factory/skills/committee/SKILL.md +80 -0
  59. package/extensions/enact-factory/skills/deep-interview/SKILL.md +9 -13
  60. package/extensions/enact-factory/skills/drive-loop/SKILL.md +161 -31
  61. package/extensions/enact-factory/skills/drive-loop/references/contract-schema.md +26 -6
  62. package/extensions/enact-factory/skills/handoff/SKILL.md +72 -0
  63. package/extensions/enact-factory/skills/hyperplan/SKILL.md +11 -3
  64. package/extensions/enact-factory/skills/looplan/SKILL.md +34 -17
  65. package/extensions/enact-factory/skills/plan/SKILL.md +40 -8
  66. package/extensions/enact-factory/skills/remove-deadcode/SKILL.md +6 -1
  67. package/extensions/enact-factory/skills/research/SKILL.md +14 -4
  68. package/extensions/enact-factory/skills/review/SKILL.md +21 -2
  69. package/extensions/enact-factory/skills/security-research/SKILL.md +5 -2
  70. package/extensions/enact-factory/skills/tdd/SKILL.md +7 -1
  71. package/extensions/enact-factory/skills/testing-strategy/SKILL.md +5 -0
  72. package/extensions/enact-factory/skills/trace/SKILL.md +5 -0
  73. package/extensions/enact-factory/skills/ultraqa/SKILL.md +21 -15
  74. package/extensions/enact-factory/skills/work-with-workitem/SKILL.md +5 -0
  75. package/extensions/enact-factory/skills/workitem-triage/SKILL.md +5 -0
  76. package/extensions/enact-loop/.agents/plugin.json +5 -4
  77. package/extensions/enact-loop/scripts/validate.mjs +123 -0
  78. package/extensions/enact-loop/skills/enact-loop/SKILL.md +189 -30
  79. package/extensions/enact-wiki/.agents/plugin.json +2 -1
  80. package/extensions/net-revenue-management/.agents/plugin.json +2 -1
  81. package/extensions/plugin-dev/.agents/plugin.json +2 -1
  82. package/extensions/plugin-dev/skills/start/SKILL.md +3 -3
  83. package/package.json +1 -1
  84. package/scripts/check-hooks.mjs +5 -5
  85. package/scripts/check-principles.mjs +19 -4
  86. package/scripts/enact-extensions.mjs +237 -90
  87. package/scripts/lib/hooks.mjs +61 -217
  88. package/scripts/lib/migrate-artifacts.mjs +144 -0
  89. package/scripts/lib/principles.mjs +109 -0
  90. package/scripts/lib/provision-mcp.mjs +1 -1
  91. package/scripts/lib/run-install.mjs +72 -2
  92. package/scripts/lib/run-prune.mjs +23 -2
  93. package/scripts/lib/run-sync.mjs +4 -1
  94. package/scripts/postinstall.mjs +6 -6
  95. package/scripts/setup-enact-context.sh +20 -15
  96. package/scripts/version-bump.sh +22 -1
  97. package/spec/codex.json +5 -0
  98. package/spec/enact.json +3 -3
  99. package/spec/enact.md +1 -4
  100. package/spec/index.json +1 -1
  101. package/extensions/enact-factory/hooks/hooks.json +0 -14
  102. package/extensions/enact-operator/.agents/plugin.json +0 -56
  103. package/extensions/enact-operator/.app.json +0 -3
  104. package/extensions/enact-operator/.mcp.json +0 -10
  105. package/extensions/enact-operator/_taxonomy.md +0 -86
  106. package/extensions/enact-operator/agents/README.md +0 -5
  107. package/extensions/enact-operator/agents/architect.toml +0 -25
  108. package/extensions/enact-operator/agents/code-reviewer.toml +0 -24
  109. package/extensions/enact-operator/agents/critic.toml +0 -30
  110. package/extensions/enact-operator/agents/executor.toml +0 -24
  111. package/extensions/enact-operator/agents/explore.toml +0 -23
  112. package/extensions/enact-operator/agents/planner.toml +0 -24
  113. package/extensions/enact-operator/agents/verifier.toml +0 -24
  114. package/extensions/enact-operator/docs/skill-variants.md +0 -44
  115. package/extensions/enact-operator/hooks/hooks.json +0 -91
  116. package/extensions/enact-operator/skills/ai-slop-cleaner/SKILL.md +0 -50
  117. package/extensions/enact-operator/skills/analyze/SKILL.md +0 -91
  118. package/extensions/enact-operator/skills/ask/SKILL.md +0 -47
  119. package/extensions/enact-operator/skills/autopilot/SKILL.md +0 -170
  120. package/extensions/enact-operator/skills/autoresearch-goal/SKILL.md +0 -79
  121. package/extensions/enact-operator/skills/cancel/SKILL.md +0 -99
  122. package/extensions/enact-operator/skills/configure-notifications/SKILL.md +0 -77
  123. package/extensions/enact-operator/skills/deep-interview/SKILL.md +0 -80
  124. package/extensions/enact-operator/skills/doctor/SKILL.md +0 -48
  125. package/extensions/enact-operator/skills/hud/SKILL.md +0 -49
  126. package/extensions/enact-operator/skills/hyperplan/SKILL.md +0 -47
  127. package/extensions/enact-operator/skills/plan/SKILL.md +0 -78
  128. package/extensions/enact-operator/skills/ralph/SKILL.md +0 -201
  129. package/extensions/enact-operator/skills/ralph/gemini.md +0 -18
  130. package/extensions/enact-operator/skills/ralplan/SKILL.md +0 -151
  131. package/extensions/enact-operator/skills/remove-deadcode/SKILL.md +0 -45
  132. package/extensions/enact-operator/skills/research/SKILL.md +0 -74
  133. package/extensions/enact-operator/skills/review/SKILL.md +0 -58
  134. package/extensions/enact-operator/skills/security-research/SKILL.md +0 -54
  135. package/extensions/enact-operator/skills/setup/SKILL.md +0 -91
  136. package/extensions/enact-operator/skills/setup/scripts/install.sh +0 -50
  137. package/extensions/enact-operator/skills/skill/SKILL.md +0 -82
  138. package/extensions/enact-operator/skills/tdd/SKILL.md +0 -59
  139. package/extensions/enact-operator/skills/team/SKILL.md +0 -199
  140. package/extensions/enact-operator/skills/trace/SKILL.md +0 -41
  141. package/extensions/enact-operator/skills/ultragoal/SKILL.md +0 -99
  142. package/extensions/enact-operator/skills/ultraqa/SKILL.md +0 -113
  143. package/extensions/enact-operator/skills/ultrawork/SKILL.md +0 -145
  144. package/extensions/enact-operator/skills/ultrawork/planner.md +0 -28
  145. package/extensions/enact-operator/skills/wiki/SKILL.md +0 -41
  146. package/extensions/enact-operator/skills/work-with-workitem/SKILL.md +0 -51
  147. /package/extensions/{enact-operator → enact-evolve}/assets/icon.png +0 -0
  148. /package/extensions/{enact-operator → enact-evolve}/assets/logo.png +0 -0
@@ -1,91 +0,0 @@
1
- ---
2
- name: enact-operator-setup
3
- description: "Initialize the Enact Operator control-plane: install the enact-operator CLI if needed, then install hooks and agents and verify the runtime is healthy."
4
- ---
5
-
6
- # Enact Operator Setup
7
-
8
- ## Runtime Prerequisite
9
-
10
- Before running the workflow, make sure the `enact-operator` CLI exists:
11
-
12
- ```bash
13
- which enact-operator || bash scripts/install.sh
14
- ```
15
-
16
- ## Purpose
17
- Bootstraps a project to use Enact Operator by laying out the `.enact/operator/` directory tree and installing Operator hooks and agents. Plugin installation and host registry ownership belongs to enact-extensions.
18
-
19
- ## Use When
20
- - First-time installation of enact-operator in a project
21
- - Reinstalling after a version bump or broken hook state
22
- - Validating that an existing installation is coherent before running team or staged review workflows
23
-
24
- ## Execution Policy
25
-
26
- - start from the repo and `.enact/operator/` truth, not chat memory
27
- - if `operator_*` tools are not visible yet, load/search the Enact Operator MCP namespace before running setup/readiness checks
28
- - drive setup through MCP tools when running inside Codex; CLI commands are the equivalent operator surface
29
- - keep state current as you go — confirm each step before advancing
30
-
31
- ## Workflow
32
- 1. Run the top-level installer:
33
- - MCP: `operator_setup`
34
- - CLI: `enact-operator setup`
35
- 2. Install Claude Code hooks (pre/post tool hooks that integrate with the operator runtime):
36
- - No MCP tool for hooks install — use CLI: `enact-operator hooks install`
37
- 3. Check hook registration status:
38
- - MCP: `operator_hooks_status`
39
- - CLI: `enact-operator hooks status`
40
- 4. Install the Core 7 Codex agent roster into the project:
41
- - MCP: `operator_agents_pack_install`
42
- - CLI: `enact-operator agents install-pack`
43
- 5. Validate the plugin bundle source is coherent (skills, hooks, agents all present):
44
- - MCP: `operator_plugin_validate`
45
- - CLI: `enact-operator plugins validate`
46
- 6. Check the install registry for operator-owned hooks and agents:
47
- - MCP: `operator_install_registry`
48
- - CLI: (no direct equivalent — use `operator_install_registry`)
49
- 7. Run the doctor to confirm runtime health:
50
- - MCP: `operator_doctor`
51
- - CLI: `enact-operator doctor`
52
- 8. Check replacement-readiness to confirm Operator is ready to take over provider roles:
53
- - MCP: `operator_audit_replacement_readiness`
54
- - CLI: `enact-operator audit replacement-readiness`
55
-
56
- ## State Contract
57
- - Reads: project root, existing `.claude/settings.json`, existing hook files
58
- - Writes: `.enact/operator/` directory tree (`cache`, `jobs`, `logs`, `memory`, `plans`, `reports`, `research`, `sessions`, `state`, `team`, `ultragoal`, `metrics.json`), hook entries in `.claude/settings.json`
59
-
60
- ## MCP Tools
61
-
62
- - `operator_setup` — run the top-level installer
63
- - `operator_hooks_status` — verify hook registration state
64
- - `operator_agents_install` — install individual agent templates
65
- - `operator_agents_pack_install` — install the full Core 7 Codex agent roster
66
- - `operator_plugin_validate` — check plugin bundle source coherence
67
- - `operator_install_registry` — read the install registry
68
- - `operator_doctor` — confirm runtime health
69
- - `operator_audit_replacement_readiness` — confirm Operator is ready to take over provider roles
70
-
71
- Note: hooks install has no MCP equivalent — use `enact-operator hooks install` via CLI.
72
-
73
- ## Commands
74
- ```
75
- enact-operator setup
76
- enact-operator hooks install
77
- enact-operator hooks status
78
- enact-operator agents install-pack
79
- enact-operator plugins validate
80
- enact-operator doctor
81
- enact-operator audit replacement-readiness
82
- ```
83
-
84
- ## Activation
85
-
86
- When a prompt contains `$enact-operator:<skill-name>` or `$<skill-name>`, Operator's UserPromptSubmit hook records the invocation in `.enact/operator/state/skill-active.json` and adds an MCP-first context note for the agent. That note tells the agent to load/search the Enact Operator MCP namespace immediately if `operator_*` tools are not visible yet, then prefer `operator_*` tools over the `enact-operator` CLI. This skill is operator-driven — there is no durable workflow state to start automatically. The activation log gives operators and the HUD a trace of which skills were explicitly invoked.
87
- ## Final Check
88
- - `operator_doctor` (or `enact-operator doctor`) reports no errors
89
- - `operator_plugin_validate` reports the enact-operator source bundle is valid
90
- - `operator_hooks_status` shows all required hooks registered
91
- - `.enact/operator/` directory exists with expected subdirectories
@@ -1,50 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- PACKAGE_NAME="@amsterdamdatalabs/enact-operator"
5
- BIN_NAME="enact-operator"
6
-
7
- already_installed() {
8
- command -v "${BIN_NAME}" >/dev/null 2>&1
9
- }
10
-
11
- require_npm() {
12
- if command -v npm >/dev/null 2>&1; then
13
- return 0
14
- fi
15
-
16
- echo "ERROR: npm is required to install ${PACKAGE_NAME}." >&2
17
- echo "Install Node.js + npm from https://nodejs.org/ and rerun this script." >&2
18
- exit 1
19
- }
20
-
21
- install_cli() {
22
- echo "Installing ${PACKAGE_NAME} via npm..."
23
- npm install -g "${PACKAGE_NAME}"
24
- }
25
-
26
- main() {
27
- if already_installed; then
28
- local current
29
- current="$(${BIN_NAME} --version 2>/dev/null | head -1 || echo 'unknown')"
30
- echo "${BIN_NAME} already installed: ${current}"
31
- echo "Run '${BIN_NAME} setup' in your repo to initialize Operator state."
32
- exit 0
33
- fi
34
-
35
- require_npm
36
- install_cli
37
-
38
- if ! already_installed; then
39
- echo "ERROR: ${BIN_NAME} was installed but is not on PATH." >&2
40
- echo "Open a new shell or update your npm global bin PATH, then rerun '${BIN_NAME} --version'." >&2
41
- exit 1
42
- fi
43
-
44
- local current
45
- current="$(${BIN_NAME} --version 2>/dev/null | head -1 || echo 'unknown')"
46
- echo "${BIN_NAME} installed: ${current}"
47
- echo "Next step: run '${BIN_NAME} setup' in the target workspace."
48
- }
49
-
50
- main "$@"
@@ -1,82 +0,0 @@
1
- ---
2
- name: skill
3
- description: "Meta-skill: list, discover, and route to available Operator skills. Use when the operator wants to know what skills exist or which skill handles a given task."
4
- ---
5
-
6
- # Skill
7
-
8
- ## Purpose
9
- Provides a navigable index of all skills available in the enact-operator plugin. When the operator asks "what can Operator do?" or "which skill should I use for X?", this skill answers by listing the catalog and routing to the correct skill. It does not execute work itself.
10
-
11
- ## Use When
12
- - The operator wants to see all available Operator skills
13
- - Choosing between skills for a given task type
14
- - Checking whether a skill exists before invoking it
15
- - Auditing the plugin's skill surface for completeness
16
-
17
- ## Execution Policy
18
-
19
- - start from the repo and `.enact/operator/` truth, not chat memory
20
- - drive discovery through MCP tools when running inside Codex; CLI commands are the equivalent operator surface
21
- - this skill is read-only — it writes nothing
22
-
23
- ## Workflow
24
- 1. List all source skills in the operator bundle:
25
- - MCP: `operator_plugin_list`
26
- - CLI: `ls enact-operator/extensions/skills/`
27
-
28
- Plugin installation and host registry state are owned by enact-extensions.
29
-
30
- 2. For a raw directory listing of skill names:
31
- ```
32
- ls enact-operator/extensions/skills/
33
- ```
34
-
35
- 3. To validate that all skill files are well-formed:
36
- ```
37
- enact-operator plugins validate
38
- ```
39
-
40
- 4. To read a specific skill's playbook, open its `SKILL.md` directly:
41
- ```
42
- enact-operator/extensions/skills/<skill-name>/SKILL.md
43
- ```
44
-
45
- 5. Route the operator to the correct skill based on their task:
46
-
47
- | Task type | Skill |
48
- |-----------|-------|
49
- | First-time install or reinstall | `$setup` |
50
- | Durable multi-executor implementation flow | `$team` |
51
- | Single executor execution lane | `$executor` |
52
- | Long-horizon multi-session goal | `$ultragoal` |
53
- | QA cycling with hard-stop gates | `$ultraqa` |
54
- | Remove TODO/placeholder noise | `$ai-slop-cleaner` |
55
- | Read-only investigation | `$analyze` |
56
- | Specific factual question | `$ask` |
57
- | Research anchored to a goal | `$autoresearch-goal` |
58
- | Stop all active modes | `$cancel` |
59
- | Findings-first review | `$review` |
60
- | Notification preferences | `$configure-notifications` |
61
- | Wiki/reference lookup | `$wiki` |
62
-
63
- ## State Contract
64
- - Reads: `enact-operator/extensions/skills/` directory, `operator_plugin_list` output
65
- - Writes: nothing
66
-
67
- ## MCP Tools
68
-
69
- - `operator_plugin_list` — list local operator plugin bundle sources
70
-
71
- ## Commands
72
- ```
73
- enact-operator plugins validate
74
- ```
75
-
76
- ## Activation
77
-
78
- When a prompt contains `$enact-operator:<skill-name>` or `$<skill-name>`, Operator's UserPromptSubmit hook records the invocation in `.enact/operator/state/skill-active.json` and adds an MCP-first context note for the agent. That note tells the agent to load/search the Enact Operator MCP namespace immediately if `operator_*` tools are not visible yet, then prefer `operator_*` tools over the `enact-operator` CLI. This skill is operator-driven — there is no durable workflow state to start automatically. The activation log gives operators and the HUD a trace of which skills were explicitly invoked.
79
- ## Final Check
80
- - All skills listed in the routing table are present in `enact-operator/extensions/skills/`
81
- - `enact-operator plugins validate` passes with no errors
82
- - The operator was routed to a specific skill, not left with a general answer
@@ -1,59 +0,0 @@
1
- ---
2
- name: tdd
3
- description: "Red-green-refactor mode for behavior with clear inputs, outputs, and regression value."
4
- ---
5
-
6
- # TDD
7
-
8
- ## Purpose
9
-
10
- Use `$tdd` when behavior can be specified before implementation. TDD is for design pressure and regression safety, not for ritual.
11
-
12
- ## Good TDD Candidates
13
-
14
- - business rules
15
- - API contracts
16
- - parsing, formatting, or validation
17
- - state transitions
18
- - algorithms and utility behavior
19
-
20
- ## Skip TDD For
21
-
22
- - pure layout and styling work
23
- - config-only changes
24
- - trivial glue code
25
- - exploratory prototypes where behavior is not yet known
26
-
27
- ## Iron Law
28
-
29
- No production code without a failing test first.
30
-
31
- ## Cycle
32
-
33
- 1. Red
34
- - write the smallest failing test for the next behavior
35
- - run it and prove it fails for the right reason
36
- 2. Green
37
- - write the minimum code to make it pass
38
- - rerun the test and the relevant suite
39
- 3. Refactor
40
- - clean up only after green
41
- - keep the suite green after every change
42
-
43
- ## Rules
44
-
45
- - one behavior per cycle
46
- - do not batch multiple features into one red-green pass
47
- - prefer regression tests for changed behavior
48
- - record the verify command in the plan or task notes
49
-
50
- ## Output Standard
51
-
52
- - what behavior the test locked in
53
- - the failing signal
54
- - the minimal implementation
55
- - the final verification command
56
-
57
- ## Activation
58
-
59
- When a prompt contains `$enact-operator:<skill-name>` or `$<skill-name>`, Operator's UserPromptSubmit hook records the invocation in `.enact/operator/state/skill-active.json` and adds an MCP-first context note for the agent. That note tells the agent to load/search the Enact Operator MCP namespace immediately if `operator_*` tools are not visible yet, then prefer `operator_*` tools over the `enact-operator` CLI. This skill is operator-driven — there is no durable workflow state to start automatically. The activation log gives operators and the HUD a trace of which skills were explicitly invoked.
@@ -1,199 +0,0 @@
1
- ---
2
- name: team
3
- description: "Durable multi-executor orchestration with queueing, claims, inbox, review gates, and tmux-aware lifecycle control."
4
- lane: true
5
- mcpToolPrefix: operator_team_
6
- ---
7
-
8
- # Team
9
-
10
- ## Purpose
11
-
12
- `$team` is the durable execution mode. Use it when you need a shared queue, executor leases, review handoffs, and a runtime that survives beyond one reasoning burst.
13
-
14
- ## Team vs Native Fanout
15
-
16
- - use native subagents for small, in-session parallelism
17
- - use `$team` when the work needs durable state, tmux executors, inbox coordination, resumability, or explicit review gates
18
-
19
- ## Use When
20
-
21
- - the work splits into parallel slices
22
- - one operator needs durable coordination and review history
23
- - tasks need claims, heartbeats, inbox messages, and resumable state
24
-
25
- ## Do Not Use When
26
-
27
- - the task is sequential and small
28
- - there is no meaningful slice boundary
29
- - the cost of queueing and review would exceed the value of parallelism
30
-
31
- ## Preconditions
32
-
33
- Before launching team mode:
34
-
35
- 1. the current task has a clear objective
36
- 2. the first slices are identifiable
37
- 3. the likely file areas are known
38
- 4. there is a verify path
39
-
40
- If those are missing, run `$deep-interview`, `$trace`, or `$plan` first.
41
-
42
- ## Runtime Contract
43
-
44
- - if `operator_*` tools are not visible yet, load/search the Enact Operator MCP namespace before doing team work
45
- - initialize with `operator_team_init`
46
- - queue work with `operator_team_queue`
47
- - claim with executor ids via `operator_team_claim`
48
- - complete into review with `operator_team_complete`, never straight to done
49
- - record review decisions with `operator_team_review`
50
- - use `operator_team_inbox`, `operator_team_logs`, `operator_team_status`, and `operator_hud` to monitor real progress
51
- - shut down only after terminal state or explicit abort via `operator_team_shutdown`
52
- - for every `operator_team_*` call, `root` means the repository root that owns `.enact/operator`
53
- - it is **not** the task subdirectory
54
- - task subdirectories are for code edits and verification only
55
- - during bootstrap, use sequential MCP calls
56
- - first confirm `operator_team_status`
57
- - then `operator_team_init` if absent
58
- - only after that move to queue / claim / complete / review
59
- - when no external `taskId` exists, local Operator task discipline is mandatory
60
- - queue or bootstrap the first local task immediately
61
- - claim, review, and close by local `taskId`
62
- - current MCP note: some lifecycle calls still carry that local task id in a `taskId` field
63
- - do not defer tracker ownership to AzDo
64
- - executor semantics are team-internal and are not a separate callable skill:
65
- - executor is the team-internal execution lane, not a root skill
66
- - executor claims exactly one task at a time
67
- - executor sends regular heartbeats while active
68
- - executor reports completion with non-empty summary
69
- - blocked work must be reported explicitly (`BLOCKED: ...`)
70
-
71
- ## Proof And Closure
72
-
73
- - `$team` is a current operator lane and should use real Operator proof
74
- surfaces when its work contributes to closure:
75
- - `operator_contract_parity_run`
76
- - `operator_workflow_reconcile`
77
- - `operator_operator_snapshot`
78
- - `operator_hud`
79
- - `contract-parity` should be read from the real gate output, not inferred from
80
- queue state or reviewer prose alone.
81
- - Provider note: Operator may use its adapter over the running
82
- `enact-context` server for proof. That is expected and preferable to
83
- duplicating analysis in team-local logic.
84
-
85
- ## Lifecycle
86
-
87
- 1. Launch the runtime and inspect backend health.
88
- 2. Queue explicit slices, not vague goals.
89
- 3. Ensure every local task claim maps to a real executor id.
90
- 4. Keep heartbeats and logs current.
91
- 5. Move completions into review with a concrete handoff note.
92
- 6. Monitor:
93
- - MCP only: `operator_team_init`, `operator_team_status`, `operator_team_spawn`, `operator_team_claim`, `operator_team_heartbeat`, `operator_team_complete`, `operator_team_review`, `operator_team_inbox`, `operator_team_logs`, `operator_team_resume`, `operator_team_shutdown`, `operator_hud`
94
- 7. Shutdown only when active work is terminal or the user wants an abort.
95
-
96
- ## Closure Protocol
97
-
98
- Use this exact closeout order with the current live `operator_team_*` MCP tools:
99
-
100
- 1. Confirm no in-flight executor work:
101
- - `operator_team_status`
102
- 2. Verify task queue is terminal (no `queued` or `claimed` tasks remain):
103
- - `operator_team_task_list`
104
- 3. Ensure task completions and reviewer notes are persisted:
105
- - `operator_team_complete`
106
- - `operator_team_review`
107
- 4. Run shutdown:
108
- - `operator_team_shutdown`
109
- 5. Re-check there is no active team:
110
- - `operator_team_status`
111
-
112
- Do not use non-existent shutdown lifecycle tools (for example `shutdown_request`, `shutdown_approve`, or `shutdown_delete`). The active shutdown surface is `operator_team_shutdown`.
113
-
114
- ## Root semantics
115
-
116
- When the task says “work inside `<path>`”, separate two concepts:
117
-
118
- 1. **Operator root**
119
- - the repository root that owns `.enact/operator`
120
- - this is the value passed as `root` to `operator_team_*`
121
- 2. **Task workspace**
122
- - the subdirectory where code changes happen
123
- - this is where file reads/edits and verification commands should run
124
-
125
- Do not point `operator_team_status`, `operator_team_init`, or any other
126
- `operator_team_*` call at the task subdirectory unless that subdirectory itself
127
- owns a separate `.enact/operator`.
128
-
129
- ## Degraded Mode
130
-
131
- If tmux is missing, the runtime may fall back to mock mode. That is acceptable for state flow and testing, not as proof of real detached-executor behavior.
132
-
133
- ## Rules
134
-
135
- - no silent completions
136
- - no review without a readable result note
137
- - no shutdown while work is still active unless aborting
138
- - no CLI fallback for lifecycle operations; use the `operator_team_*` MCP surface
139
- - prefer runtime/state MCP tools over ad-hoc pane hacking
140
-
141
- ## Activation
142
-
143
- When a prompt contains `$enact-operator:<skill-name>` or `$<skill-name>`, Operator's UserPromptSubmit hook records the invocation in `.enact/operator/state/skill-active.json` and adds an MCP-first context note for the agent. That note tells the agent to load/search the Enact Operator MCP namespace immediately if `operator_*` tools are not visible yet, then prefer `operator_*` tools over the `enact-operator` CLI. When no external `taskId` exists, the injected note also means local Operator task discipline is mandatory: queue the first local task immediately and keep queue/review state authoritative in Operator. This skill is operator-driven — there is no durable workflow state to start automatically. The activation log gives operators and the HUD a trace of which skills were explicitly invoked.
144
-
145
- Team-driven activation is a separate path: observe/MCP should start the runtime directly with `operator_team_init`, not through `operator_operator_activate`.
146
-
147
-
148
- # Executor (team-internal role)
149
-
150
- This page captures the in-team **executor** semantics for the `team` runtime.
151
- It is reference-only documentation and **not** a standalone callable skill.
152
-
153
- Within `$team`, executor-capable work is carried by claimed executor lanes and
154
- coordinated by team mechanics (spawn, claim, heartbeat, acknowledge, complete).
155
-
156
- ## Purpose
157
-
158
- An executor is the in-team assignee for a single task slice inside a team session.
159
- The executor claims one task at a time, maintains heartbeat cadence, and
160
- reports completion or explicit blockage.
161
-
162
- ## Workflow
163
-
164
- 1. Check available tasks:
165
- - `operator_team_status`
166
- 2. Claim a task:
167
- - `operator_team_claim`
168
- 3. Keep heartbeat cadence (typically every 60 seconds):
169
- - `operator_team_heartbeat`
170
- 4. Report for clarification or status updates:
171
- - `operator_team_message`
172
- 5. Acknowledge injected instructions after applying them:
173
- - `operator_team_message_ack`
174
- 6. Complete with summary:
175
- - `operator_team_complete`
176
- 7. Report blocked work explicitly:
177
- - `operator_team_complete` with a `BLOCKED: ...` summary
178
- 8. Check inbox for operator instructions:
179
- - `operator_team_inbox`
180
- 9. Check execution context:
181
- - `operator_team_logs`
182
-
183
- Example acknowledgement call:
184
-
185
- ```json
186
- {
187
- "tool": "operator_team_message_ack",
188
- "root": "/path/to/repo-root",
189
- "executorId": "executor",
190
- "messageId": "msg_123"
191
- }
192
- ```
193
-
194
- ## Contract checks
195
-
196
- - claimed tasks stay in claimed state only with recent heartbeat
197
- - completed tasks include a non-empty summary
198
- - blocked completions include a specific reason
199
- - no second claim without completing or unblocking the first task
@@ -1,41 +0,0 @@
1
- ---
2
- name: trace
3
- description: "Execution-path mapping for entry points, data flow, side effects, and blast radius before risky work."
4
- ---
5
-
6
- # Trace
7
-
8
- ## Purpose
9
-
10
- Use `$trace` before a risky edit or review when you need to know what code path actually runs, what it touches, and what could break downstream.
11
-
12
- ## Workflow
13
-
14
- 1. Find the entry points.
15
- 2. Follow data flow through the changed or targeted path.
16
- 3. Map side effects:
17
- - storage writes
18
- - network calls
19
- - UI state changes
20
- - background work
21
- 4. Identify risky branches and missing guards.
22
- 5. Name the concrete files the next pass should touch.
23
-
24
- ## Suggested Tools
25
-
26
- - `ctx_search` for symbol and path discovery
27
- - `ctx_read` for call-path confirmation
28
- - `ctx_semantic_search` or `ctx_graph` when lexical search is not enough
29
- - `operator_hud` when runtime state matters to the path
30
-
31
- ## Output Standard
32
-
33
- - entry points
34
- - downstream side effects
35
- - risky branches
36
- - likely blast radius
37
- - recommended edit boundary
38
-
39
- ## Activation
40
-
41
- When a prompt contains `$enact-operator:<skill-name>` or `$<skill-name>`, Operator's UserPromptSubmit hook records the invocation in `.enact/operator/state/skill-active.json` and adds an MCP-first context note for the agent. That note tells the agent to load/search the Enact Operator MCP namespace immediately if `operator_*` tools are not visible yet, then prefer `operator_*` tools over the `enact-operator` CLI. This skill is operator-driven — there is no durable workflow state to start automatically. The activation log gives operators and the HUD a trace of which skills were explicitly invoked.
@@ -1,99 +0,0 @@
1
- ---
2
- name: ultragoal
3
- description: "Long-horizon goal mode that manages cross-session continuity for a durable objective, using ultrawork for each individual session."
4
- lane: true
5
- mcpToolPrefix: operator_ultragoal_
6
- ---
7
-
8
- # Ultragoal
9
-
10
- ## Purpose
11
-
12
- Wraps a multi-session, long-running objective that cannot be completed in a single context window. Ultragoal continuity lives in reviewable artifacts under `.enact/operator/ultragoal/`, while each individual execution burst is tracked through the real Operator runtime state (`$ultrawork`, and when needed `$autopilot`, `$ralph`, or `$team`).
13
-
14
- ## Use When
15
-
16
- - a goal spans multiple days or context-window boundaries
17
- - you need cross-session continuity for a complex engineering objective
18
- - individual `$ultrawork` sessions should contribute to a shared, durable goal artifact
19
- - you need one authoritative goal artifact listing remaining vs completed slices across sessions
20
-
21
- ## Workflow
22
-
23
- 1. Define the goal and create or update the goal artifact in `.enact/operator/ultragoal/<goalId>.json`.
24
- - Prefer MCP: `operator_ultragoal_update`
25
- - Record at least: `title`, `goal`, `planPath`, `status`, `remainingPbis`, `completedPbis`, `updatedAt`
26
- 2. Start or refresh the current session:
27
- - MCP: `operator_session_start`
28
- - CLI fallback: `enact-operator session start`
29
- 3. Start ultrawork for the current execution burst:
30
- - MCP: `operator_ultrawork_start`
31
- - CLI fallback: `enact-operator ultrawork start "<goal>"`
32
- - Do not depend on custom `activationMetadata` shapes for continuity.
33
- Goal-level continuity belongs in the ultragoal artifact itself; runtime
34
- activation metadata is only optional provenance.
35
- 4. Link the relevant plan ids and external task ids into ultrawork state when those
36
- concrete ids exist:
37
- - MCP: `operator_ultrawork_link_plan`, `operator_ultrawork_link_task`
38
- - CLI fallback: `enact-operator ultrawork link-plan <planId>`
39
- - The linked external identifier parameter is `taskId`.
40
- 5. Within each burst, run tasks using `$ultrawork` and keep the ultragoal
41
- artifact updated as slices move from `remainingPbis` to `completedPbis`.
42
- 6. At natural stopping points, record verified progress:
43
- - MCP: `operator_ultrawork_verify`
44
- - CLI fallback: `enact-operator ultrawork verify "<evidence>"`
45
- 7. For closure-sensitive goals, also keep the real parity/hygiene surfaces in
46
- view across sessions:
47
- - `operator_contract_parity_run`
48
- - `operator_operator_snapshot`
49
- - `operator_hud`
50
- - `operator_workflow_reconcile`
51
- 8. On the next session, resume by reading:
52
- - `.enact/operator/ultragoal/<goalId>.json`
53
- - `operator_ultrawork_status`
54
- - `operator_session_status`
55
- - `operator_hud`
56
- 9. When the goal is fully achieved:
57
- - complete the active runtime burst (`operator_ultrawork_complete`)
58
- - update the ultragoal artifact to `status: completed`
59
- - ensure no dangling active runtime remains in HUD/state
60
-
61
- ## State Contract
62
-
63
- - reads:
64
- - `.enact/operator/ultragoal/<goalId>.json`
65
- - plan files
66
- - session / ultrawork / HUD state
67
- - writes:
68
- - `.enact/operator/ultragoal/<goalId>.json`
69
- - linked ultrawork state via `operator_ultrawork_*`
70
- - optional parity evidence via `operator_contract_parity_run`
71
-
72
- ## Commands
73
-
74
- ```
75
- enact-operator session start
76
- enact-operator ultragoal status <goalId>
77
- enact-operator ultragoal update <goalId>
78
- enact-operator ultrawork start "<goal>"
79
- enact-operator ultrawork status
80
- enact-operator ultrawork verify "<evidence>"
81
- enact-operator ultrawork link-plan <planId>
82
- enact-operator ultrawork link-task <taskId>
83
- enact-operator ultrawork complete "<summary>"
84
- enact-operator ultrawork abort "<reason>"
85
- enact-operator session status
86
- ```
87
-
88
- ## Activation
89
-
90
- When a prompt contains `$enact-operator:<skill-name>` or `$<skill-name>`, Operator's UserPromptSubmit hook records the invocation in `.enact/operator/state/skill-active.json` and adds an MCP-first context note for the agent. That note tells the agent to load/search the Enact Operator MCP namespace immediately if `operator_*` tools are not visible yet, then prefer `operator_*` tools over the `enact-operator` CLI. This skill is operator-driven — there is no durable workflow state to start automatically. The activation log gives operators and the HUD a trace of which skills were explicitly invoked.
91
- ## Final Check
92
-
93
- - `.enact/operator/ultragoal/<goalId>.json` reflects current progress after each session
94
- - `remainingPbis` and `completedPbis` stay truthful to the codebase
95
- - no session ends without either verification evidence or a completion summary
96
- - plan files stay in sync with actual completed work
97
- - when the goal is done, ultrawork is completed and no dangling execution session remains
98
- - if closure criteria exist, use the real `contract-parity` gate rather than a
99
- purely narrative reviewer summary