@amsterdamdatalabs/enact-extensions 0.1.0 → 0.1.3
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 +96 -21
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/install.d.ts +171 -1
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +402 -49
- package/dist/install.js.map +1 -1
- package/dist/internal/codex.d.ts.map +1 -1
- package/dist/internal/codex.js +7 -1
- package/dist/internal/codex.js.map +1 -1
- package/dist/internal/platform.d.ts +8 -0
- package/dist/internal/platform.d.ts.map +1 -1
- package/dist/internal/platform.js +46 -2
- package/dist/internal/platform.js.map +1 -1
- package/dist/provision.d.ts +30 -0
- package/dist/provision.d.ts.map +1 -0
- package/dist/provision.js +202 -0
- package/dist/provision.js.map +1 -0
- package/dist/validate/index.d.ts +44 -0
- package/dist/validate/index.d.ts.map +1 -1
- package/dist/validate/index.js +157 -0
- package/dist/validate/index.js.map +1 -1
- package/extensions/cmux/.agents/plugin.json +37 -0
- package/extensions/cmux/skills/cmux/SKILL.md +82 -0
- package/extensions/cmux/skills/cmux/agents/openai.yaml +4 -0
- package/extensions/cmux/skills/cmux/references/handles-and-identify.md +35 -0
- package/extensions/cmux/skills/cmux/references/panes-surfaces.md +37 -0
- package/extensions/cmux/skills/cmux/references/trigger-flash-and-health.md +23 -0
- package/extensions/cmux/skills/cmux/references/windows-workspaces.md +31 -0
- package/extensions/cmux/skills/cmux-vm-monitor/SKILL.md +122 -0
- package/extensions/cmux/skills/cmux-vm-monitor/agents/openai.yaml +4 -0
- package/extensions/cmux/skills/cmux-vm-monitor/references/cmux-commands.md +66 -0
- package/extensions/cmux/skills/cmux-vm-monitor/scripts/codex_vm_monitor.sh +45 -0
- package/extensions/cmux/skills/cmux-workspace/SKILL.md +93 -0
- package/extensions/dev-state/.agents/plugin.json +35 -0
- package/extensions/dev-state/skills/dev-state-plan-graduation/SKILL.md +194 -0
- package/extensions/dev-state/skills/dev-state-plan-graduation/agents/openai.yaml +4 -0
- package/extensions/dev-state/skills/dev-state-plan-graduation/references/reference.md +130 -0
- package/extensions/devops/.agents/plugin.json +36 -0
- package/extensions/devops/skills/azure-devops-cli/SKILL.md +431 -0
- package/extensions/devops/skills/azure-devops-cli/agents/openai.yaml +4 -0
- package/extensions/devops/skills/ci-pipeline-strategy/SKILL.md +217 -0
- package/extensions/devops/skills/ci-pipeline-strategy/agents/openai.yaml +4 -0
- package/extensions/enact-context/.agents/plugin.json +40 -0
- package/extensions/enact-context/.mcp.json +8 -0
- package/extensions/enact-context/README.md +25 -0
- package/extensions/enact-context/assets/icon.png +0 -0
- package/extensions/enact-context/assets/logo.png +0 -0
- package/extensions/enact-context/hooks/hooks.json +115 -0
- package/extensions/enact-context/skills/enact-context/SKILL.md +149 -0
- package/extensions/enact-context/skills/enact-context/scripts/install.sh +69 -0
- package/extensions/enact-factory/.agents/plugin.json +42 -0
- package/extensions/enact-factory/.mcp.json +8 -0
- package/extensions/enact-factory/assets/icon.png +0 -0
- package/extensions/enact-factory/assets/logo.png +0 -0
- package/extensions/enact-factory/hooks/user-prompt-submit.mjs +67 -0
- package/extensions/enact-factory/skills/testing-strategy/SKILL.md +167 -0
- package/extensions/enact-factory/skills/workitem-triage/SKILL.md +22 -0
- package/extensions/enact-operator/.agents/plugin.json +57 -0
- package/extensions/enact-operator/.app.json +3 -0
- package/extensions/enact-operator/.mcp.json +10 -0
- package/extensions/enact-operator/_taxonomy.md +86 -0
- package/extensions/enact-operator/agents/README.md +5 -0
- package/extensions/enact-operator/agents/architect.toml +25 -0
- package/extensions/enact-operator/agents/code-reviewer.toml +24 -0
- package/extensions/enact-operator/agents/critic.toml +30 -0
- package/extensions/enact-operator/agents/executor.toml +24 -0
- package/extensions/enact-operator/agents/explore.toml +23 -0
- package/extensions/enact-operator/agents/planner.toml +24 -0
- package/extensions/enact-operator/agents/verifier.toml +24 -0
- package/extensions/enact-operator/assets/icon.png +0 -0
- package/extensions/enact-operator/assets/logo.png +0 -0
- package/extensions/enact-operator/commands/doctor.md +39 -0
- package/extensions/enact-operator/commands/setup.md +51 -0
- package/extensions/enact-operator/hooks/hooks.json +146 -0
- package/extensions/enact-operator/skills/_variants.md +44 -0
- package/extensions/enact-operator/skills/ai-slop-cleaner/SKILL.md +50 -0
- package/extensions/enact-operator/skills/analyze/SKILL.md +91 -0
- package/extensions/enact-operator/skills/ask/SKILL.md +47 -0
- package/extensions/enact-operator/skills/autopilot/SKILL.md +170 -0
- package/extensions/enact-operator/skills/autoresearch-goal/SKILL.md +79 -0
- package/extensions/enact-operator/skills/cancel/SKILL.md +99 -0
- package/extensions/enact-operator/skills/configure-notifications/SKILL.md +77 -0
- package/extensions/enact-operator/skills/deep-interview/SKILL.md +80 -0
- package/extensions/enact-operator/skills/doctor/SKILL.md +48 -0
- package/extensions/enact-operator/skills/hud/SKILL.md +49 -0
- package/extensions/enact-operator/skills/hyperplan/SKILL.md +47 -0
- package/extensions/enact-operator/skills/plan/SKILL.md +78 -0
- package/extensions/enact-operator/skills/ralph/SKILL.md +201 -0
- package/extensions/enact-operator/skills/ralph/gemini.md +18 -0
- package/extensions/enact-operator/skills/ralplan/SKILL.md +151 -0
- package/extensions/enact-operator/skills/remove-deadcode/SKILL.md +45 -0
- package/extensions/enact-operator/skills/research/SKILL.md +74 -0
- package/extensions/enact-operator/skills/review/SKILL.md +58 -0
- package/extensions/enact-operator/skills/security-research/SKILL.md +54 -0
- package/extensions/enact-operator/skills/setup/SKILL.md +91 -0
- package/extensions/enact-operator/skills/setup/scripts/install.sh +50 -0
- package/extensions/enact-operator/skills/skill/SKILL.md +82 -0
- package/extensions/enact-operator/skills/tdd/SKILL.md +59 -0
- package/extensions/enact-operator/skills/team/SKILL.md +199 -0
- package/extensions/enact-operator/skills/trace/SKILL.md +41 -0
- package/extensions/enact-operator/skills/ultragoal/SKILL.md +99 -0
- package/extensions/enact-operator/skills/ultraqa/SKILL.md +113 -0
- package/extensions/enact-operator/skills/ultrawork/SKILL.md +145 -0
- package/extensions/enact-operator/skills/ultrawork/planner.md +28 -0
- package/extensions/enact-operator/skills/wiki/SKILL.md +41 -0
- package/extensions/enact-operator/skills/work-with-workitem/SKILL.md +51 -0
- package/extensions/enact-wiki/.agents/plugin.json +42 -0
- package/extensions/enact-wiki/.mcp.json +15 -0
- package/extensions/enact-wiki/README.md +44 -0
- package/extensions/enact-wiki/assets/icon.png +0 -0
- package/extensions/enact-wiki/assets/logo.png +0 -0
- package/extensions/enact-wiki/skills/document-parser/SKILL.md +17 -0
- package/extensions/enact-wiki/skills/document-parser/scripts/parse.sh +60 -0
- package/extensions/enact-wiki/skills/document-parser/skill.json +9 -0
- package/extensions/enact-wiki/skills/enact-wiki/SKILL.md +30 -0
- package/extensions/enact-wiki/skills/enact-wiki/references/ingest.md +62 -0
- package/extensions/enact-wiki/skills/enact-wiki/references/manage.md +34 -0
- package/extensions/enact-wiki/skills/enact-wiki/references/query.md +59 -0
- package/extensions/enact-wiki/skills/search-lab/SKILL.md +57 -0
- package/extensions/enact-wiki/skills/search-lab/scripts/analyze.ts +23 -0
- package/{plugins/net-revenue-management/.codex-plugin → extensions/net-revenue-management/.agents}/plugin.json +10 -6
- package/extensions/plugin-dev/.agents/plugin.json +42 -0
- package/extensions/plugin-dev/.mcp.json +3 -0
- package/extensions/plugin-dev/agents/agent-creator.md +199 -0
- package/extensions/plugin-dev/agents/plugin-validator.md +91 -0
- package/extensions/plugin-dev/agents/skill-reviewer.md +212 -0
- package/extensions/plugin-dev/commands/_archive/create-marketplace.md +427 -0
- package/extensions/plugin-dev/commands/_archive/plugin-dev-guide.md +12 -0
- package/extensions/plugin-dev/commands/create-plugin.md +498 -0
- package/extensions/plugin-dev/commands/start.md +81 -0
- package/extensions/plugin-dev/hooks/hooks.json +3 -0
- package/extensions/plugin-dev/skills/agent-development/SKILL.md +641 -0
- package/extensions/plugin-dev/skills/agent-development/examples/agent-creation-prompt.md +250 -0
- package/extensions/plugin-dev/skills/agent-development/examples/complete-agent-examples.md +461 -0
- package/extensions/plugin-dev/skills/agent-development/references/advanced-agent-fields.md +246 -0
- package/extensions/plugin-dev/skills/agent-development/references/agent-creation-system-prompt.md +216 -0
- package/extensions/plugin-dev/skills/agent-development/references/permission-modes-rules.md +226 -0
- package/extensions/plugin-dev/skills/agent-development/references/system-prompt-design.md +464 -0
- package/extensions/plugin-dev/skills/agent-development/references/triggering-examples.md +474 -0
- package/extensions/plugin-dev/skills/agent-development/scripts/create-agent-skeleton.sh +176 -0
- package/extensions/plugin-dev/skills/agent-development/scripts/test-agent-trigger.sh +227 -0
- package/extensions/plugin-dev/skills/agent-development/scripts/validate-agent.sh +227 -0
- package/extensions/plugin-dev/skills/command-development/SKILL.md +763 -0
- package/extensions/plugin-dev/skills/command-development/examples/plugin-commands.md +612 -0
- package/extensions/plugin-dev/skills/command-development/examples/simple-commands.md +527 -0
- package/extensions/plugin-dev/skills/command-development/references/advanced-workflows.md +762 -0
- package/extensions/plugin-dev/skills/command-development/references/documentation-patterns.md +769 -0
- package/extensions/plugin-dev/skills/command-development/references/frontmatter-reference.md +508 -0
- package/extensions/plugin-dev/skills/command-development/references/interactive-commands.md +966 -0
- package/extensions/plugin-dev/skills/command-development/references/marketplace-considerations.md +943 -0
- package/extensions/plugin-dev/skills/command-development/references/plugin-features-reference.md +637 -0
- package/extensions/plugin-dev/skills/command-development/references/plugin-integration.md +191 -0
- package/extensions/plugin-dev/skills/command-development/references/skill-tool.md +447 -0
- package/extensions/plugin-dev/skills/command-development/references/testing-strategies.md +723 -0
- package/extensions/plugin-dev/skills/command-development/scripts/check-frontmatter.sh +234 -0
- package/extensions/plugin-dev/skills/command-development/scripts/validate-command.sh +160 -0
- package/extensions/plugin-dev/skills/hook-development/SKILL.md +861 -0
- package/extensions/plugin-dev/skills/hook-development/examples/load-context.sh +55 -0
- package/extensions/plugin-dev/skills/hook-development/examples/validate-bash.sh +57 -0
- package/extensions/plugin-dev/skills/hook-development/examples/validate-write.sh +48 -0
- package/extensions/plugin-dev/skills/hook-development/references/advanced.md +871 -0
- package/extensions/plugin-dev/skills/hook-development/references/hook-input-schemas.md +145 -0
- package/extensions/plugin-dev/skills/hook-development/references/migration.md +392 -0
- package/extensions/plugin-dev/skills/hook-development/references/patterns.md +430 -0
- package/extensions/plugin-dev/skills/hook-development/scripts/README.md +181 -0
- package/extensions/plugin-dev/skills/hook-development/scripts/hook-linter.sh +153 -0
- package/extensions/plugin-dev/skills/hook-development/scripts/test-hook.sh +276 -0
- package/extensions/plugin-dev/skills/hook-development/scripts/validate-hook-schema.sh +159 -0
- package/extensions/plugin-dev/skills/mcp-integration/SKILL.md +775 -0
- package/extensions/plugin-dev/skills/mcp-integration/examples/http-server.json +20 -0
- package/extensions/plugin-dev/skills/mcp-integration/examples/sse-server.json +19 -0
- package/extensions/plugin-dev/skills/mcp-integration/examples/stdio-server.json +38 -0
- package/extensions/plugin-dev/skills/mcp-integration/examples/ws-server.json +26 -0
- package/extensions/plugin-dev/skills/mcp-integration/references/authentication.md +601 -0
- package/extensions/plugin-dev/skills/mcp-integration/references/server-discovery.md +190 -0
- package/extensions/plugin-dev/skills/mcp-integration/references/server-types.md +572 -0
- package/extensions/plugin-dev/skills/mcp-integration/references/tool-usage.md +623 -0
- package/extensions/plugin-dev/skills/plugin-dev-guide/SKILL.md +222 -0
- package/extensions/plugin-dev/skills/plugin-structure/SKILL.md +705 -0
- package/extensions/plugin-dev/skills/plugin-structure/examples/advanced-plugin.md +774 -0
- package/extensions/plugin-dev/skills/plugin-structure/examples/minimal-plugin.md +83 -0
- package/extensions/plugin-dev/skills/plugin-structure/examples/standard-plugin.md +611 -0
- package/extensions/plugin-dev/skills/plugin-structure/references/advanced-topics.md +289 -0
- package/extensions/plugin-dev/skills/plugin-structure/references/component-patterns.md +592 -0
- package/extensions/plugin-dev/skills/plugin-structure/references/github-actions.md +233 -0
- package/extensions/plugin-dev/skills/plugin-structure/references/headless-ci-mode.md +193 -0
- package/extensions/plugin-dev/skills/plugin-structure/references/manifest-reference.md +625 -0
- package/extensions/plugin-dev/skills/plugin-structure/references/output-styles.md +116 -0
- package/extensions/plugin-dev/skills/skill-development/SKILL.md +564 -0
- package/extensions/plugin-dev/skills/skill-development/examples/complete-skill.md +465 -0
- package/extensions/plugin-dev/skills/skill-development/examples/frontmatter-templates.md +167 -0
- package/extensions/plugin-dev/skills/skill-development/examples/minimal-skill.md +111 -0
- package/extensions/plugin-dev/skills/skill-development/references/advanced-frontmatter.md +225 -0
- package/extensions/plugin-dev/skills/skill-development/references/commands-vs-skills.md +39 -0
- package/extensions/plugin-dev/skills/skill-development/references/skill-creation-workflow.md +379 -0
- package/extensions/plugin-dev/skills/skill-development/references/skill-creator-original.md +210 -0
- package/package.json +8 -11
- package/scripts/enact-extensions.mjs +823 -21
- package/scripts/hooks/session-start-drift-check.mjs +58 -0
- package/scripts/lib/build-index.mjs +50 -0
- package/scripts/lib/bundle-hash.mjs +137 -0
- package/scripts/lib/hooks.mjs +741 -0
- package/scripts/lib/ledger.mjs +163 -0
- package/scripts/lib/list-bundles.mjs +70 -0
- package/scripts/lib/outdated.mjs +144 -0
- package/scripts/lib/provision-mcp.mjs +16 -0
- package/scripts/lib/resolve-bundle.mjs +121 -0
- package/scripts/lib/run-install.mjs +402 -38
- package/scripts/lib/run-prune.mjs +73 -0
- package/scripts/lib/run-sync.mjs +9 -1
- package/scripts/lib/run-uninstall.mjs +244 -0
- package/scripts/lib/run-update.mjs +152 -0
- package/scripts/lib/run-validate.mjs +21 -18
- package/scripts/lib/serve.mjs +472 -0
- package/scripts/postinstall.mjs +63 -0
- package/scripts/setup-enact-context.sh +2 -2
- package/scripts/version-bump.sh +463 -0
- package/spec/codex.json +1 -11
- package/spec/index.json +59 -0
- package/web/assets/README.md +111 -0
- package/web/assets/logo-full.png +0 -0
- package/web/assets/logo-slim.png +0 -0
- package/web/assets/tokens/base.css +45 -0
- package/web/assets/tokens/colors.css +248 -0
- package/web/assets/tokens/effects.css +24 -0
- package/web/assets/tokens/fonts.css +8 -0
- package/web/assets/tokens/index.css +18 -0
- package/web/assets/tokens/spacing.css +50 -0
- package/web/index.html +1188 -0
- package/.agents/plugins/marketplace.json +0 -20
- package/catalog/enact-context.json +0 -9
- package/catalog/enact-factory.json +0 -7
- package/catalog/enact-operator.json +0 -7
- package/catalog/enact-wiki.json +0 -7
- package/catalog/net-revenue-management.json +0 -8
- package/scripts/rename-supervisor-to-operator.pl +0 -66
- package/scripts/sync-manifests.mjs +0 -23
- package/scripts/validate-catalog.mjs +0 -37
- package/scripts/validate-plugin.mjs +0 -10
- /package/{plugins → extensions}/net-revenue-management/.mcp.json +0 -0
- /package/{plugins → extensions}/net-revenue-management/skills/net-revenue-risks/SKILL.md +0 -0
- /package/{plugins → extensions}/net-revenue-management/skills/net-revenue-scenario/SKILL.md +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ai-slop-cleaner
|
|
3
|
+
description: "Walk the diff for TODO/placeholder/silent-catch noise and replace each with a concrete implementation or remove it entirely."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# AI Slop Cleaner
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
Removes low-quality AI-generated residue from code produced in a Operator session: `// TODO`, "for now", "later", silent empty catch blocks, unreachable fallback layers, and placeholder strings. Each removal is replaced with a real implementation or an explicit compile-time error — never just deleted.
|
|
10
|
+
|
|
11
|
+
## Use When
|
|
12
|
+
- After an implementation pass before the operator accepts the result
|
|
13
|
+
- Before running `$ultraqa` verification gates
|
|
14
|
+
- When a diff review reveals TODO comments, "for now" strings, or swallowed exceptions
|
|
15
|
+
|
|
16
|
+
## Workflow
|
|
17
|
+
1. Identify the files changed in the current session (operator-driven; use `git diff --name-only`).
|
|
18
|
+
2. For each changed file, scan for these patterns:
|
|
19
|
+
- `// TODO`, `// FIXME`, `// HACK`, `// XXX`
|
|
20
|
+
- String literals containing "for now", "placeholder", "stub", "later", "not yet implemented"
|
|
21
|
+
- Empty catch blocks or catch blocks that only log without re-throwing or handling
|
|
22
|
+
- Fallback return values that hide real errors (e.g., `return null`, `return []` with no explanation)
|
|
23
|
+
- Dead code gated on `if (false)` or `if (process.env.NEVER)`
|
|
24
|
+
3. For each hit, choose one action:
|
|
25
|
+
- Replace with a real implementation if the intent is clear
|
|
26
|
+
- Replace with an explicit thrown error if the path should never be reached
|
|
27
|
+
- Remove the dead code entirely if it adds no value
|
|
28
|
+
4. After cleanup, re-run `enact-operator doctor` to confirm nothing broken:
|
|
29
|
+
```
|
|
30
|
+
enact-operator doctor
|
|
31
|
+
```
|
|
32
|
+
5. Re-run the project's test suite to confirm no regressions.
|
|
33
|
+
6. Run a second grep pass to confirm zero hits remain:
|
|
34
|
+
```
|
|
35
|
+
grep -rE "TODO|FIXME|HACK|for now|placeholder|stub" <changed-files>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## State Contract
|
|
39
|
+
- Reads: changed files in the working tree
|
|
40
|
+
- Writes: same files (in-place edits only); no new files, no new state in `.enact/operator/`
|
|
41
|
+
|
|
42
|
+
## Activation
|
|
43
|
+
|
|
44
|
+
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.
|
|
45
|
+
## Final Check
|
|
46
|
+
- Zero `TODO`, `FIXME`, `HACK`, or placeholder strings in changed files
|
|
47
|
+
- No empty or swallowed catch blocks remain
|
|
48
|
+
- `enact-operator doctor` still passes after cleanup
|
|
49
|
+
- Test suite still passes after cleanup
|
|
50
|
+
- No code was deleted without a replacement or explicit error
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: analyze
|
|
3
|
+
description: "Read-only analysis of a Operator repo, runtime, or codebase surface. No mutations; output is plain text findings."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Analyze
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
Performs a structured, read-only investigation of Operator runtime state, plugin surfaces, provider boundaries, hooks, or codebase structure. Nothing is written or changed. Output is a structured findings report delivered as text. Use this skill before proposing changes so that recommendations are grounded in observed state.
|
|
10
|
+
|
|
11
|
+
## Use When
|
|
12
|
+
- You need to understand what exists before planning a change
|
|
13
|
+
- Diagnosing why a Operator surface behaves unexpectedly
|
|
14
|
+
- Producing an audit report for operator review
|
|
15
|
+
- Checking provider boundary ownership before a team hand-off
|
|
16
|
+
|
|
17
|
+
## Workflow
|
|
18
|
+
1. Identify the target surface (codebase, runtime state, hooks, plugins, or provider boundaries).
|
|
19
|
+
2. Run the relevant read-only commands in order:
|
|
20
|
+
- Operator health:
|
|
21
|
+
```
|
|
22
|
+
enact-operator doctor
|
|
23
|
+
```
|
|
24
|
+
- Plugin and hook inventory:
|
|
25
|
+
```
|
|
26
|
+
enact-operator plugins status
|
|
27
|
+
enact-operator hooks status
|
|
28
|
+
```
|
|
29
|
+
- Provider boundary audit:
|
|
30
|
+
```
|
|
31
|
+
enact-operator audit provider-boundary
|
|
32
|
+
```
|
|
33
|
+
- Replacement readiness:
|
|
34
|
+
```
|
|
35
|
+
enact-operator audit replacement-readiness
|
|
36
|
+
```
|
|
37
|
+
- Task and session state:
|
|
38
|
+
```
|
|
39
|
+
enact-operator task list
|
|
40
|
+
enact-operator session status
|
|
41
|
+
```
|
|
42
|
+
- For codebase-level exploration, use `enact-context` tools such as `ctx_search`, `ctx_semantic_search`, `ctx_graph`, and `ctx_tree`.
|
|
43
|
+
3. Read relevant state files directly if CLI output is insufficient:
|
|
44
|
+
- `.enact/operator/state/`
|
|
45
|
+
- `.enact/operator/sessions/<id>/`
|
|
46
|
+
4. Synthesize findings into a structured report with sections: Summary, Observations, Gaps, Recommendations.
|
|
47
|
+
5. Deliver report as plain text. Do not write it to disk unless the operator explicitly requests an artifact.
|
|
48
|
+
|
|
49
|
+
## Complex Investigation
|
|
50
|
+
|
|
51
|
+
If a single read pass cannot answer the question, escalate with a required two-call delegation pattern before concluding.
|
|
52
|
+
|
|
53
|
+
1. Run one broad, repository-wide call to map candidate surfaces and narrow the search space.
|
|
54
|
+
2. Run one targeted follow-up call scoped to the highest-signal surface from step 1.
|
|
55
|
+
|
|
56
|
+
Required 2-call escalation/delegation example:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Call 1: broad sweep to locate candidate ownership and state surfaces
|
|
60
|
+
ctx_search query="provider boundary hooks runtime state orchestration" path="."
|
|
61
|
+
|
|
62
|
+
# Call 2: delegated deep read on the most likely owner from call 1
|
|
63
|
+
ctx_read path="enact-factory/<resolved-file-or-dir>" mode="summary"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Do not skip the second call when the first call returns multiple plausible surfaces.
|
|
67
|
+
|
|
68
|
+
## State Contract
|
|
69
|
+
- Reads: all `.enact/operator/` state, CLI output from `doctor`, `audit`, `plugins status`, `hooks status`
|
|
70
|
+
- Writes: nothing (read-only mode)
|
|
71
|
+
|
|
72
|
+
## Commands
|
|
73
|
+
```
|
|
74
|
+
enact-operator doctor
|
|
75
|
+
enact-operator plugins status
|
|
76
|
+
enact-operator hooks status
|
|
77
|
+
enact-operator audit provider-boundary
|
|
78
|
+
enact-operator audit replacement-readiness
|
|
79
|
+
enact-operator task list
|
|
80
|
+
enact-operator session status
|
|
81
|
+
enact-operator hud
|
|
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
|
+
- No files were modified during this skill's execution
|
|
89
|
+
- Findings are grounded in actual CLI output, not assumptions
|
|
90
|
+
- Report includes a Gaps section if any expected surfaces are missing
|
|
91
|
+
- Recommendations are labeled as recommendations, not implemented changes
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ask
|
|
3
|
+
description: "Narrow question-answer mode: answer a specific question about Operator state, behavior, or configuration without mutating anything."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Ask
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
Handles a single, scoped question about Operator runtime state, CLI behavior, configuration, or codebase structure. No files are written, no sessions are started, and no state is mutated. If the question requires deep research, delegate to `$autoresearch-goal` rather than expanding scope here.
|
|
10
|
+
|
|
11
|
+
## Use When
|
|
12
|
+
- The operator has a specific factual question about Operator behavior
|
|
13
|
+
- Clarifying what a CLI command does or what a state file contains
|
|
14
|
+
- Answering "what is the current value of X" without modifying anything
|
|
15
|
+
|
|
16
|
+
## Workflow
|
|
17
|
+
1. Read the question and determine the minimum set of sources needed to answer it.
|
|
18
|
+
2. Consult available sources in this order:
|
|
19
|
+
- Operator CLI output (doctor, status, hooks status, plugins status)
|
|
20
|
+
- `.enact/operator/state/` files (read via `enact-operator state read <key>`)
|
|
21
|
+
- Source code or configuration files (read-only)
|
|
22
|
+
- Skill files in `enact-operator/extensions/skills/` for behavioral questions
|
|
23
|
+
3. If the question requires more than a read pass (e.g., multi-file research or external docs), route to `$autoresearch-goal` and stop here.
|
|
24
|
+
4. Compose a direct, specific answer. Include the exact CLI output or file excerpt that supports it.
|
|
25
|
+
5. If the answer reveals a problem, flag it but do not fix it — report only.
|
|
26
|
+
|
|
27
|
+
## State Contract
|
|
28
|
+
- Reads: CLI output, `.enact/operator/state/`, source and config files as needed
|
|
29
|
+
- Writes: nothing
|
|
30
|
+
|
|
31
|
+
## Commands
|
|
32
|
+
```
|
|
33
|
+
enact-operator state read <key>
|
|
34
|
+
enact-operator doctor
|
|
35
|
+
enact-operator plugins status
|
|
36
|
+
enact-operator hooks status
|
|
37
|
+
enact-operator session status
|
|
38
|
+
enact-operator task list
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Activation
|
|
42
|
+
|
|
43
|
+
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.
|
|
44
|
+
## Final Check
|
|
45
|
+
- Answer is specific and references the source (file path, CLI output, or line reference)
|
|
46
|
+
- No files were written or mutated
|
|
47
|
+
- If the answer cannot be determined from available sources, that is stated explicitly rather than guessed
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: autopilot
|
|
3
|
+
description: "Autonomous end-to-end Operator loop: classify intent, plan, execute, verify, and wrap until the requested outcome is complete."
|
|
4
|
+
lane: true
|
|
5
|
+
mcpToolPrefix: operator_autopilot_
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Autopilot
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
|
|
12
|
+
Use `$autopilot` when the user wants unattended end-to-end delivery rather than a single command. Autopilot classifies the incoming request, routes it through the appropriate sub-skills, and drives the work to a verified conclusion without requiring the user to advance each step manually.
|
|
13
|
+
|
|
14
|
+
Autopilot is not a single command. It is a routing and orchestration wrapper over `$plan`, `$ralph`, `$ultrawork`, and `$team`.
|
|
15
|
+
|
|
16
|
+
## Use When
|
|
17
|
+
|
|
18
|
+
- The request is clear enough to execute but spans multiple steps or files
|
|
19
|
+
- The user wants delivery, not a plan to review before proceeding
|
|
20
|
+
- Work needs to continue across pauses without re-explanation
|
|
21
|
+
- Multiple agents or executors would benefit from a shared local task queue
|
|
22
|
+
|
|
23
|
+
## Do Not Use When
|
|
24
|
+
|
|
25
|
+
- The request is ambiguous — route through `$deep-interview` first
|
|
26
|
+
- The user wants to review a plan before any execution begins — use `$ralplan`
|
|
27
|
+
- The change is a trivial single-file edit with obvious acceptance criteria
|
|
28
|
+
|
|
29
|
+
## Execution Policy
|
|
30
|
+
|
|
31
|
+
- start from the repo and `.enact/operator/` truth, not chat memory
|
|
32
|
+
- drive the workflow through MCP tools when running inside Codex; CLI commands are the equivalent operator surface
|
|
33
|
+
- keep session, ralph, ultrawork, task, inbox, and review state current as you go
|
|
34
|
+
- when no external `taskId` is linked, local Operator task discipline is mandatory; autopilot owns a local task and must keep it authoritative
|
|
35
|
+
- do not stop at a partial handoff unless the next owner is explicit
|
|
36
|
+
- if closure criteria exist, resolve them through `operator_contract_parity_run`
|
|
37
|
+
before declaring success
|
|
38
|
+
|
|
39
|
+
## Routing Rules
|
|
40
|
+
|
|
41
|
+
Classify the request before executing:
|
|
42
|
+
|
|
43
|
+
| Signal | Route |
|
|
44
|
+
|---|---|
|
|
45
|
+
| Ambiguous intent, unclear scope | `$deep-interview` → `$ralplan` |
|
|
46
|
+
| Clear intent, multi-step, single agent sufficient | `$ralph` |
|
|
47
|
+
| Clear intent, high-throughput or parallel work | `$ultrawork` |
|
|
48
|
+
| Clear intent, requires multiple executors or review gates | `$team` |
|
|
49
|
+
| Any route above, needs a durable plan artifact first | `$plan` before execution |
|
|
50
|
+
|
|
51
|
+
## Workflow
|
|
52
|
+
|
|
53
|
+
1. Read current Operator state to orient:
|
|
54
|
+
- MCP: `operator_session_status`, `operator_state_read`, `operator_task_list`
|
|
55
|
+
- CLI:
|
|
56
|
+
```
|
|
57
|
+
enact-operator session status
|
|
58
|
+
enact-operator state read
|
|
59
|
+
enact-operator task list # local Task runtime state
|
|
60
|
+
```
|
|
61
|
+
2. Check the HUD for a summary view:
|
|
62
|
+
- MCP: `operator_hud`
|
|
63
|
+
- CLI: `enact-operator hud`
|
|
64
|
+
3. Classify the request using the routing table above.
|
|
65
|
+
4. If the request needs a plan artifact, write it to `.enact/operator/plans/` via `$plan` before advancing.
|
|
66
|
+
5. Start the appropriate execution mode:
|
|
67
|
+
- Single-agent loop:
|
|
68
|
+
- MCP: `operator_ralph_start` with `goal`
|
|
69
|
+
- CLI: `enact-operator ralph start "<goal>"`
|
|
70
|
+
- High-throughput:
|
|
71
|
+
- MCP: `operator_ultrawork_start` with `goal`
|
|
72
|
+
- CLI: `enact-operator ultrawork start "<goal>"`
|
|
73
|
+
- Multi-executor:
|
|
74
|
+
- MCP: `operator_team_init`, then `operator_team_queue`
|
|
75
|
+
- CLI fallback: `enact-operator team init && enact-operator team queue "<title>"`
|
|
76
|
+
6. Monitor progress:
|
|
77
|
+
- MCP: `operator_ralph_status`, `operator_ultrawork_status`, `operator_team_status`, `operator_inbox_list`
|
|
78
|
+
- CLI:
|
|
79
|
+
```
|
|
80
|
+
enact-operator ralph status
|
|
81
|
+
enact-operator ultrawork status
|
|
82
|
+
enact-operator team status
|
|
83
|
+
enact-operator team inbox
|
|
84
|
+
```
|
|
85
|
+
7. Advance through verification gates:
|
|
86
|
+
- MCP: `operator_ralph_verify` with `gateId` and `status`, `operator_ralph_advance` with `toPhase`
|
|
87
|
+
- CLI:
|
|
88
|
+
```
|
|
89
|
+
enact-operator ralph verify <gateId> passed --evidence "<text>"
|
|
90
|
+
enact-operator ralph advance verifying
|
|
91
|
+
enact-operator ralph advance completed
|
|
92
|
+
```
|
|
93
|
+
8. Run `$review` before declaring the work complete.
|
|
94
|
+
9. Close the active mode on success:
|
|
95
|
+
- MCP: `operator_ralph_complete` with `summary`, `operator_ultrawork_complete`
|
|
96
|
+
- CLI:
|
|
97
|
+
```
|
|
98
|
+
enact-operator ralph complete
|
|
99
|
+
enact-operator ultrawork complete
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Runtime Clarification
|
|
103
|
+
|
|
104
|
+
- `$autopilot` is a router/orchestrator with durable task, session, team, and
|
|
105
|
+
ultrawork state.
|
|
106
|
+
- It must record the concrete delegated runtime (`ralph`, `ultrawork`, `team`,
|
|
107
|
+
future runtimes) rather than claiming closure itself through narrative only.
|
|
108
|
+
|
|
109
|
+
## State Contract
|
|
110
|
+
|
|
111
|
+
Reads:
|
|
112
|
+
- `.enact/operator/state/` (active mode state)
|
|
113
|
+
- `.enact/operator/plans/` (plan and verification map)
|
|
114
|
+
- `.enact/operator/state/tasks.json` (local task tracker and queue state)
|
|
115
|
+
|
|
116
|
+
Writes:
|
|
117
|
+
- `.enact/operator/plans/<phase>.md` (if plan is created inline)
|
|
118
|
+
- State transitions via ralph, ultrawork, and team MCP tools or CLI commands
|
|
119
|
+
|
|
120
|
+
## MCP Tools
|
|
121
|
+
|
|
122
|
+
The full Autopilot lifecycle is driven through the `enact-operator` MCP server:
|
|
123
|
+
|
|
124
|
+
- `operator_session_start` — start or refresh the session record
|
|
125
|
+
- `operator_session_status` — read current session state
|
|
126
|
+
- `operator_session_resume` — resume an existing session
|
|
127
|
+
- `operator_state_read` — read active operator state
|
|
128
|
+
- `operator_task_list` — list current local tasks (current enumerated MCP surface)
|
|
129
|
+
- `operator_inbox_list` — read the inbox
|
|
130
|
+
- `operator_hud` — summary view of all active modes
|
|
131
|
+
- `operator_ralph_start` — start a ralph loop
|
|
132
|
+
- `operator_ralph_status` — read ralph state
|
|
133
|
+
- `operator_ralph_advance` — transition ralph to a new phase
|
|
134
|
+
- `operator_ralph_verify` — record a gate verdict with evidence
|
|
135
|
+
- `operator_ralph_pause` — pause an active loop
|
|
136
|
+
- `operator_ralph_resume` — resume a paused loop
|
|
137
|
+
- `operator_ralph_block` — mark ralph blocked with a reason
|
|
138
|
+
- `operator_ralph_complete` — close the ralph loop
|
|
139
|
+
- `operator_ralph_abort` — abort the ralph loop
|
|
140
|
+
- `operator_ultrawork_start` — start an ultrawork session
|
|
141
|
+
- `operator_ultrawork_status` — read ultrawork state
|
|
142
|
+
- `operator_ultrawork_advance` — advance the ultrawork session
|
|
143
|
+
- `operator_ultrawork_complete` — close the ultrawork session
|
|
144
|
+
- `operator_ultrawork_abort` — abort the ultrawork session
|
|
145
|
+
- `operator_team_status` — read team session state
|
|
146
|
+
- `operator_team_inbox` — read team inbox
|
|
147
|
+
|
|
148
|
+
## Activation
|
|
149
|
+
|
|
150
|
+
When a prompt contains an explicit marker like `$enact-operator:autopilot "<goal>"`
|
|
151
|
+
or `$autopilot "<goal>"`, Operator's UserPromptSubmit hook can start the durable
|
|
152
|
+
Autopilot state before the agent reads its first turn of context. The hook also
|
|
153
|
+
records the invocation in `.enact/operator/state/skill-active.json` and adds an
|
|
154
|
+
MCP-first context note telling the agent to load/search the Enact Operator MCP
|
|
155
|
+
namespace immediately if `operator_*` tools are not visible yet, then prefer
|
|
156
|
+
`operator_*` tools over the `enact-operator` CLI. That injected startup note is
|
|
157
|
+
not AzDo-only: if no external `taskId` is linked, treat the local
|
|
158
|
+
lane task as mandatory runtime state and keep it current through
|
|
159
|
+
`operator_task_list`.
|
|
160
|
+
|
|
161
|
+
If hooks are unavailable or explicit control is preferred, use
|
|
162
|
+
`operator_operator_activate { skill: 'autopilot', goal: '<goal>' }` and follow the
|
|
163
|
+
returned required action (`operator_autopilot_start` or
|
|
164
|
+
`operator_autopilot_retarget`).
|
|
165
|
+
## Final Check
|
|
166
|
+
|
|
167
|
+
- The active mode is closed (ralph, ultrawork, or team) — no dangling state
|
|
168
|
+
- Verification gates have evidence, not just a passed status
|
|
169
|
+
- `$review` verdict is approved before work is reported complete
|
|
170
|
+
- `.enact/operator/state/` contains no stale active-mode files
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: autoresearch-goal
|
|
3
|
+
description: "Autoresearch directed at a specific durable goal: findings persist to .enact/operator/research/ and can be linked into ultrawork state."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Autoresearch Goal
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Drives a research cycle that is anchored to a concrete, long-running goal rather than a one-off question. Findings are persisted to `.enact/operator/research/` and linked into ultrawork state so the next session can resume with full context. The research is complete only when the findings are specific enough to drive a concrete implementation or rollout decision.
|
|
11
|
+
|
|
12
|
+
## Use When
|
|
13
|
+
|
|
14
|
+
- a goal requires understanding a codebase, API, or system before implementation can begin
|
|
15
|
+
- research must span multiple sessions and accumulate incrementally
|
|
16
|
+
- findings need to be accessible to future execution sessions without re-running the research
|
|
17
|
+
|
|
18
|
+
## Workflow
|
|
19
|
+
|
|
20
|
+
1. Define the research goal clearly. It must end in a concrete decision or artifact, not an open-ended survey.
|
|
21
|
+
2. Start durable state for the research session:
|
|
22
|
+
- MCP: `operator_session_start`
|
|
23
|
+
- CLI fallback: `enact-operator session start`
|
|
24
|
+
3. Start ultrawork to track the research lane:
|
|
25
|
+
- MCP: `operator_ultrawork_start`
|
|
26
|
+
- CLI fallback: `enact-operator ultrawork start "Research: <goal description>" --route plan-only`
|
|
27
|
+
4. Link the research handle into ultrawork:
|
|
28
|
+
- MCP: `operator_ultrawork_link_research`
|
|
29
|
+
- CLI fallback: `enact-operator ultrawork link-research <goalId>`
|
|
30
|
+
5. Conduct the research:
|
|
31
|
+
- use `ctx_search`, `ctx_semantic_search`, `ctx_graph`, and `ctx_tree` for codebase-level investigation
|
|
32
|
+
- use `operator_audit_provider_boundary` for boundary questions
|
|
33
|
+
- use external documentation tools for API or SDK questions
|
|
34
|
+
6. Write incremental findings to `.enact/operator/research/<goalId>.md` as the research progresses. Each write appends a dated section.
|
|
35
|
+
7. When findings are sufficient to drive a decision, summarize them in a Conclusion section in the research file.
|
|
36
|
+
8. Record verification evidence for the research pass:
|
|
37
|
+
- MCP: `operator_ultrawork_verify`
|
|
38
|
+
- CLI fallback: `enact-operator ultrawork verify "<evidence>"`
|
|
39
|
+
9. When the research goal is met, complete the ultrawork session:
|
|
40
|
+
- MCP: `operator_ultrawork_complete`
|
|
41
|
+
- CLI fallback: `enact-operator ultrawork complete "<summary>"`
|
|
42
|
+
|
|
43
|
+
## Runtime Clarification
|
|
44
|
+
|
|
45
|
+
- `autoresearch` / `autoresearch-goal` remain future lane candidates, not
|
|
46
|
+
current exposed AzDo runtime values.
|
|
47
|
+
- If research is being used as closure evidence for a live task, prefer the
|
|
48
|
+
real parity/hygiene surfaces over narrative-only conclusions:
|
|
49
|
+
- `operator_contract_parity_run`
|
|
50
|
+
- `operator_workflow_reconcile`
|
|
51
|
+
- `operator_operator_snapshot`
|
|
52
|
+
|
|
53
|
+
## State Contract
|
|
54
|
+
|
|
55
|
+
- reads: codebase files, CLI output, external docs
|
|
56
|
+
- writes:
|
|
57
|
+
- `.enact/operator/research/<goalId>.md`
|
|
58
|
+
- ultrawork session state via `operator_ultrawork_*`
|
|
59
|
+
|
|
60
|
+
## Commands
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
enact-operator session start
|
|
64
|
+
enact-operator ultrawork start "Research: <goal description>" --route plan-only
|
|
65
|
+
enact-operator ultrawork link-research <goalId>
|
|
66
|
+
enact-operator ultrawork verify "<evidence>"
|
|
67
|
+
enact-operator ultrawork complete "<summary>"
|
|
68
|
+
enact-operator audit provider-boundary
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Activation
|
|
72
|
+
|
|
73
|
+
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.
|
|
74
|
+
## Final Check
|
|
75
|
+
|
|
76
|
+
- `.enact/operator/research/<goalId>.md` contains a Conclusion section with a concrete decision or recommendation
|
|
77
|
+
- ultrawork session is verified or completed, not left dangling
|
|
78
|
+
- research artifact is linked to ultrawork state
|
|
79
|
+
- no research session is left active across context boundaries without recorded evidence
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cancel
|
|
3
|
+
description: "Explicit termination of any active Operator mode (ralph, ultrawork, team). Cleans up state and leaves no dangling sessions."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Cancel
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
Stops all active Operator execution modes cleanly. Each running mode (ralph loops, ultrawork sessions, team sessions) must be explicitly aborted or shut down — not just ignored. After cancel completes, no session remains in a running, claimed, or paused state.
|
|
10
|
+
|
|
11
|
+
## Use When
|
|
12
|
+
- A ralph loop, ultrawork session, or team session must be stopped before it completes
|
|
13
|
+
- A session is stuck, blocked indefinitely, or no longer relevant
|
|
14
|
+
- The operator wants a clean slate before starting a new workflow
|
|
15
|
+
|
|
16
|
+
## Execution Policy
|
|
17
|
+
|
|
18
|
+
- start from the repo and `.enact/operator/` truth, not chat memory
|
|
19
|
+
- if `operator_*` tools are not visible yet, load/search the Enact Operator MCP namespace before doing cancellation work
|
|
20
|
+
- drive cancellation through MCP tools when running inside Codex; CLI commands are the equivalent operator surface
|
|
21
|
+
- keep state current as you go — confirm each abort before moving to the next mode
|
|
22
|
+
|
|
23
|
+
## Lifecycle
|
|
24
|
+
|
|
25
|
+
### Step 1 — Inventory active modes
|
|
26
|
+
Check each execution surface for active state:
|
|
27
|
+
- MCP: `operator_ralph_status`, `operator_ultrawork_status`, `operator_team_status`
|
|
28
|
+
- CLI:
|
|
29
|
+
```
|
|
30
|
+
enact-operator ralph status
|
|
31
|
+
enact-operator ultrawork status
|
|
32
|
+
enact-operator team status
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Step 2 — Cancel ralph loops
|
|
36
|
+
For each loop returned by ralph status that is not already complete:
|
|
37
|
+
- MCP: `operator_ralph_abort` with `reason`
|
|
38
|
+
- CLI: `enact-operator ralph abort <loopId>`
|
|
39
|
+
|
|
40
|
+
### Step 3 — Cancel ultrawork sessions
|
|
41
|
+
For each session returned by ultrawork status that is not already complete:
|
|
42
|
+
- MCP: `operator_ultrawork_abort` with `reason`
|
|
43
|
+
- CLI: `enact-operator ultrawork abort <sessionId>`
|
|
44
|
+
|
|
45
|
+
### Step 4 — Shut down team sessions
|
|
46
|
+
For each team session returned by team status that is live:
|
|
47
|
+
- MCP: `operator_team_shutdown`
|
|
48
|
+
- CLI fallback: `enact-operator team shutdown`
|
|
49
|
+
|
|
50
|
+
### Step 5 — Verify clean state
|
|
51
|
+
Re-run each status command and confirm no active sessions remain:
|
|
52
|
+
- MCP: `operator_ralph_status`, `operator_ultrawork_status`, `operator_team_status`
|
|
53
|
+
- CLI:
|
|
54
|
+
```
|
|
55
|
+
enact-operator ralph status
|
|
56
|
+
enact-operator ultrawork status
|
|
57
|
+
enact-operator team status
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Step 6 — Confirm with doctor
|
|
61
|
+
- MCP: `operator_doctor`
|
|
62
|
+
- CLI: `enact-operator doctor`
|
|
63
|
+
|
|
64
|
+
## State Contract
|
|
65
|
+
- Reads: active session IDs from ralph status, ultrawork status, team status
|
|
66
|
+
- Writes: abort/shutdown records in `.enact/operator/state/` (managed by MCP tools or CLI commands)
|
|
67
|
+
- Does NOT delete `.enact/operator/` audit history unless the operator explicitly requests it
|
|
68
|
+
|
|
69
|
+
## MCP Tools
|
|
70
|
+
|
|
71
|
+
- `operator_ralph_status` — read current ralph state
|
|
72
|
+
- `operator_ralph_abort` — abort a ralph loop with a reason
|
|
73
|
+
- `operator_ultrawork_status` — read current ultrawork state
|
|
74
|
+
- `operator_ultrawork_abort` — abort an ultrawork session with a reason
|
|
75
|
+
- `operator_team_status` — read current team session state
|
|
76
|
+
- `operator_doctor` — confirm runtime health after cancellation
|
|
77
|
+
|
|
78
|
+
Prefer `operator_team_shutdown` when the Operator MCP namespace is available. The CLI remains a fallback operator surface.
|
|
79
|
+
|
|
80
|
+
## Commands
|
|
81
|
+
```
|
|
82
|
+
enact-operator ralph status
|
|
83
|
+
enact-operator ralph abort <loopId>
|
|
84
|
+
enact-operator ultrawork status
|
|
85
|
+
enact-operator ultrawork abort <sessionId>
|
|
86
|
+
enact-operator team status
|
|
87
|
+
enact-operator team shutdown
|
|
88
|
+
enact-operator doctor
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Activation
|
|
92
|
+
|
|
93
|
+
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.
|
|
94
|
+
## Final Check
|
|
95
|
+
- `operator_ralph_status` shows no loops in `running` or `paused` state
|
|
96
|
+
- `operator_ultrawork_status` shows no sessions in `running` or `blocked` state
|
|
97
|
+
- `operator_team_status` shows no active team session
|
|
98
|
+
- `operator_doctor` reports clean
|
|
99
|
+
- Audit history in `.enact/operator/` is intact unless operator requested a clear
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: configure-notifications
|
|
3
|
+
description: "Operator-level notification configuration: read and write .enact/operator/state/notifications.json to control Operator runtime visibility."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Configure Notifications
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
Manages operator notification preferences for Operator runtime events. Notification configuration is stored in `.enact/operator/state/notifications.json`. This skill reads the current config, applies the requested changes, and verifies that Operator health is unaffected. There is no dedicated CLI command for notifications yet; this skill is operator-driven via direct file editing.
|
|
10
|
+
|
|
11
|
+
## Use When
|
|
12
|
+
- The operator wants to change which Operator events trigger notifications
|
|
13
|
+
- Notification delivery is broken or generating noise and needs to be adjusted
|
|
14
|
+
- Setting up notification preferences for the first time in a new project
|
|
15
|
+
|
|
16
|
+
## Workflow
|
|
17
|
+
1. Read the current notification configuration:
|
|
18
|
+
```
|
|
19
|
+
enact-operator state read notifications
|
|
20
|
+
```
|
|
21
|
+
If no file exists, the default is all events enabled.
|
|
22
|
+
|
|
23
|
+
2. Identify the notification contract. The file at `.enact/operator/state/notifications.json` is the operator's truth. Its shape:
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"events": {
|
|
27
|
+
"ralph.complete": true,
|
|
28
|
+
"ralph.fail": true,
|
|
29
|
+
"ultrawork.complete": true,
|
|
30
|
+
"ultrawork.block": true,
|
|
31
|
+
"team.task.complete": true,
|
|
32
|
+
"team.task.blocked": true,
|
|
33
|
+
"doctor.fail": true
|
|
34
|
+
},
|
|
35
|
+
"delivery": {
|
|
36
|
+
"console": true,
|
|
37
|
+
"hud": true
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
3. Edit `.enact/operator/state/notifications.json` with the requested changes.
|
|
43
|
+
|
|
44
|
+
4. Verify the configuration is valid JSON (no trailing commas, well-formed):
|
|
45
|
+
```
|
|
46
|
+
node -e "JSON.parse(require('fs').readFileSync('.enact/operator/state/notifications.json','utf8'))"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
5. Run doctor to confirm Operator runtime is unaffected:
|
|
50
|
+
```
|
|
51
|
+
enact-operator doctor
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
6. Check the HUD to confirm visibility settings reflect the new configuration:
|
|
55
|
+
```
|
|
56
|
+
enact-operator hud
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## State Contract
|
|
60
|
+
- Reads: `.enact/operator/state/notifications.json`
|
|
61
|
+
- Writes: `.enact/operator/state/notifications.json`
|
|
62
|
+
|
|
63
|
+
## Commands
|
|
64
|
+
```
|
|
65
|
+
enact-operator state read notifications
|
|
66
|
+
enact-operator doctor
|
|
67
|
+
enact-operator hud
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Activation
|
|
71
|
+
|
|
72
|
+
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.
|
|
73
|
+
## Final Check
|
|
74
|
+
- `.enact/operator/state/notifications.json` is valid JSON
|
|
75
|
+
- Requested event flags match the operator's intent
|
|
76
|
+
- `enact-operator doctor` passes after the edit
|
|
77
|
+
- `enact-operator hud` reflects updated visibility settings
|