@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,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deep-interview
|
|
3
|
+
description: "Intent-first clarification loop for vague, risky, or product-heavy work before planning or execution."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Deep Interview
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Use `$deep-interview` to turn a fuzzy request into an execution-ready spec. This is not generic brainstorming. It is a focused clarification loop that removes ambiguity before planning or coding.
|
|
11
|
+
|
|
12
|
+
## Use When
|
|
13
|
+
|
|
14
|
+
- the request describes outcomes, not behavior
|
|
15
|
+
- the user is still discovering what they want
|
|
16
|
+
- scope, non-goals, or decision boundaries are unclear
|
|
17
|
+
- a wrong assumption would create expensive rework
|
|
18
|
+
|
|
19
|
+
## Do Not Use When
|
|
20
|
+
|
|
21
|
+
- the request already names files, symbols, and acceptance criteria
|
|
22
|
+
- the user explicitly wants immediate execution and the risk is low
|
|
23
|
+
- the only missing work is architectural decomposition, not intent clarity
|
|
24
|
+
|
|
25
|
+
## Execution Policy
|
|
26
|
+
|
|
27
|
+
- ask one question at a time
|
|
28
|
+
- ask only the highest-leverage unresolved question
|
|
29
|
+
- use repo facts before asking about codebase internals
|
|
30
|
+
- force clarity on non-goals and decision boundaries before handoff
|
|
31
|
+
- keep the interview moving toward a durable artifact, not an endless conversation
|
|
32
|
+
|
|
33
|
+
## Question Order
|
|
34
|
+
|
|
35
|
+
1. Why does this need to exist?
|
|
36
|
+
2. What should be true when it is done?
|
|
37
|
+
3. How far should it go?
|
|
38
|
+
4. What should explicitly stay out?
|
|
39
|
+
5. What may Enact Operator decide without checking again?
|
|
40
|
+
6. What constraints or preferences are hard?
|
|
41
|
+
|
|
42
|
+
## Workflow
|
|
43
|
+
|
|
44
|
+
1. Read current `.enact/operator/` artifacts and inspect the repo if this is brownfield work.
|
|
45
|
+
2. Capture the current hypothesis in `.enact/operator/plans/<phase>-requirements.md`.
|
|
46
|
+
3. Run a one-question loop until these are explicit:
|
|
47
|
+
- goal
|
|
48
|
+
- in-scope
|
|
49
|
+
- out-of-scope
|
|
50
|
+
- acceptance criteria
|
|
51
|
+
- decision boundaries
|
|
52
|
+
4. Refresh the session/state record when the interview starts or resumes:
|
|
53
|
+
- MCP: `operator_session_start`
|
|
54
|
+
- CLI fallback: `enact-operator session start`
|
|
55
|
+
5. Update:
|
|
56
|
+
- `.enact/operator/plans/<phase>-requirements.md`
|
|
57
|
+
- `.enact/operator/research/summary.md`
|
|
58
|
+
- `.enact/operator/state/planning-state.json`
|
|
59
|
+
6. Hand off to `$plan` when the spec is concrete.
|
|
60
|
+
|
|
61
|
+
## Output Standard
|
|
62
|
+
|
|
63
|
+
The finished interview should leave behind:
|
|
64
|
+
|
|
65
|
+
- clear goal
|
|
66
|
+
- explicit non-goals
|
|
67
|
+
- decision boundaries
|
|
68
|
+
- testable acceptance criteria
|
|
69
|
+
- constraints that downstream execution must honor
|
|
70
|
+
|
|
71
|
+
## Stop Conditions
|
|
72
|
+
|
|
73
|
+
Do not hand off while either of these is missing:
|
|
74
|
+
|
|
75
|
+
- non-goals
|
|
76
|
+
- decision boundaries
|
|
77
|
+
|
|
78
|
+
## Activation
|
|
79
|
+
|
|
80
|
+
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.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: doctor
|
|
3
|
+
description: "Health-check mode for Enact Operator install, repo state, plugin wiring, hook status, and runtime degradation."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Doctor
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Use `$doctor` when setup, runtime behavior, hooks, or the source plugin bundle feels wrong. This skill is for diagnosis plus the shortest correct remediation path.
|
|
11
|
+
|
|
12
|
+
## Workflow
|
|
13
|
+
|
|
14
|
+
1. Run the primary health surface:
|
|
15
|
+
- MCP: `operator_doctor`
|
|
16
|
+
- CLI fallback: `enact-operator doctor`
|
|
17
|
+
2. If the problem is plugin-source-related, inspect:
|
|
18
|
+
- MCP: `operator_plugin_list` / `operator_plugin_validate`
|
|
19
|
+
- CLI fallback: `enact-operator plugins validate`
|
|
20
|
+
3. If the problem is hook-related, inspect:
|
|
21
|
+
- MCP: `operator_hooks_status`
|
|
22
|
+
- CLI fallback: `enact-operator hooks status`
|
|
23
|
+
4. If the problem is session or team-runtime-related, inspect:
|
|
24
|
+
- `operator_session_status`
|
|
25
|
+
- `operator_team_status`
|
|
26
|
+
- `operator_hud`
|
|
27
|
+
5. Turn findings into concrete fixes, not generic advice.
|
|
28
|
+
|
|
29
|
+
## What to Check
|
|
30
|
+
|
|
31
|
+
- Node and Codex availability
|
|
32
|
+
- MCP server configured in `~/.codex/config.toml`
|
|
33
|
+
- `.enact/operator/` initialized in the current repo
|
|
34
|
+
- tmux availability vs degraded mock mode
|
|
35
|
+
- source plugin bundle validity; host install and marketplace drift are owned by enact-extensions
|
|
36
|
+
- hook installation state vs feature availability
|
|
37
|
+
- session, inbox, review, and task drift
|
|
38
|
+
|
|
39
|
+
## Output Standard
|
|
40
|
+
|
|
41
|
+
- what is healthy
|
|
42
|
+
- what is degraded
|
|
43
|
+
- what is broken
|
|
44
|
+
- the exact command or file change to fix each issue
|
|
45
|
+
|
|
46
|
+
## Activation
|
|
47
|
+
|
|
48
|
+
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.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: hud
|
|
3
|
+
description: "Runtime-truth mode for reading tasks, sessions, reviews, inbox, and team state before acting."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# HUD
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Use `$hud` before trusting your memory of what the runtime is doing. The HUD is the fastest way to catch task drift, stale executor state, or fake progress.
|
|
11
|
+
|
|
12
|
+
## Primary Surfaces
|
|
13
|
+
|
|
14
|
+
- MCP: `operator_hud`
|
|
15
|
+
- CLI fallback: `enact-operator hud`
|
|
16
|
+
|
|
17
|
+
## Read It For
|
|
18
|
+
|
|
19
|
+
- current session and branch
|
|
20
|
+
- active modes
|
|
21
|
+
- queued vs active vs review tasks
|
|
22
|
+
- inbox and review pressure
|
|
23
|
+
- team backend state and stale executors
|
|
24
|
+
- install-registry drift
|
|
25
|
+
- doctor warnings that change operator decisions
|
|
26
|
+
- if `operator_*` tools are not visible yet, load/search the Enact Operator MCP namespace before reading runtime state
|
|
27
|
+
|
|
28
|
+
## Workflow
|
|
29
|
+
|
|
30
|
+
1. Read the HUD.
|
|
31
|
+
2. If anything looks wrong, drill down with:
|
|
32
|
+
- `operator_session_status`
|
|
33
|
+
- `operator_task_list`
|
|
34
|
+
- `operator_reviews_list`
|
|
35
|
+
- `operator_inbox_list`
|
|
36
|
+
- `operator_team_status`
|
|
37
|
+
- `operator_ledger_recent`
|
|
38
|
+
3. Compare it against the actual `.enact/operator/` artifacts if needed.
|
|
39
|
+
4. Fix state drift before continuing execution.
|
|
40
|
+
|
|
41
|
+
## Rules
|
|
42
|
+
|
|
43
|
+
- if the HUD says a mode is active, there must be durable evidence
|
|
44
|
+
- if the HUD says the team is healthy but inbox or reviews are piling up, the runtime is not healthy
|
|
45
|
+
- prefer MCP state tools when another agent needs machine-readable output
|
|
46
|
+
|
|
47
|
+
## Activation
|
|
48
|
+
|
|
49
|
+
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.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: hyperplan
|
|
3
|
+
description: "Three-round adversarial planning debate that hands a distilled bundle to $plan instead of writing the final plan directly."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Hyperplan
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Use `$hyperplan` when a plan needs adversarial pressure before execution starts.
|
|
11
|
+
|
|
12
|
+
## Debate Team
|
|
13
|
+
|
|
14
|
+
Use exactly this 4-agent team:
|
|
15
|
+
|
|
16
|
+
- `critic`
|
|
17
|
+
- `critic`
|
|
18
|
+
- `architect`
|
|
19
|
+
- `explore`
|
|
20
|
+
|
|
21
|
+
The original openagent placeholder names are not used here.
|
|
22
|
+
|
|
23
|
+
## Rounds
|
|
24
|
+
|
|
25
|
+
Run exactly 3 rounds:
|
|
26
|
+
|
|
27
|
+
1. independent analysis
|
|
28
|
+
2. cross-attack
|
|
29
|
+
3. defend, refine, or concede
|
|
30
|
+
|
|
31
|
+
Persist each round under:
|
|
32
|
+
|
|
33
|
+
- `.enact/operator/hyperplan/<sessionId>/round-1.md`
|
|
34
|
+
- `.enact/operator/hyperplan/<sessionId>/round-2.md`
|
|
35
|
+
- `.enact/operator/hyperplan/<sessionId>/round-3.md`
|
|
36
|
+
|
|
37
|
+
## Handoff Rule
|
|
38
|
+
|
|
39
|
+
The lead agent does not write the final implementation plan directly.
|
|
40
|
+
After round 3, hand the distilled debate bundle to a separate `$plan` invocation.
|
|
41
|
+
|
|
42
|
+
## Execution Notes
|
|
43
|
+
|
|
44
|
+
- use `explore` to gather the evidence bundle before critique
|
|
45
|
+
- use the two `critic` agents to take opposing positions in the cross-attack round
|
|
46
|
+
- use `architect` to synthesize the final structured verdict and tradeoffs
|
|
47
|
+
- do not skip a round because the first opinion looked sufficient
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plan
|
|
3
|
+
description: "Execution-plan mode that turns intent into small, verifiable slices backed by durable .enact/operator artifacts."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Plan
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Use `$plan` to create execution-ready slices. The output is not a strategy memo. It is the prompt-quality plan that downstream execution can follow without improvising core behavior.
|
|
11
|
+
|
|
12
|
+
## Use When
|
|
13
|
+
|
|
14
|
+
- the work is bigger than a one-shot edit
|
|
15
|
+
- the request is clear enough to plan but not yet safe to execute
|
|
16
|
+
- verification, dependencies, or sequencing need to be locked in
|
|
17
|
+
|
|
18
|
+
## Do Not Use When
|
|
19
|
+
|
|
20
|
+
- the task is still ambiguous enough for `$deep-interview`
|
|
21
|
+
- the change is a trivial single-file fix
|
|
22
|
+
- the user explicitly wants direct execution and the risk is low
|
|
23
|
+
|
|
24
|
+
## Execution Policy
|
|
25
|
+
|
|
26
|
+
- gather repo facts before asking about internals
|
|
27
|
+
- plans are prompts for execution, not prose for humans only
|
|
28
|
+
- every slice must fit in one focused context window
|
|
29
|
+
- every slice must have explicit verification
|
|
30
|
+
- prefer a small number of high-quality slices over a long TODO dump
|
|
31
|
+
|
|
32
|
+
## Plan Anatomy
|
|
33
|
+
|
|
34
|
+
Each slice should answer:
|
|
35
|
+
|
|
36
|
+
- what files are likely to change
|
|
37
|
+
- what the slice must do
|
|
38
|
+
- how to verify it
|
|
39
|
+
- what counts as done
|
|
40
|
+
- what it depends on
|
|
41
|
+
|
|
42
|
+
## Workflow
|
|
43
|
+
|
|
44
|
+
1. Read current intent artifacts:
|
|
45
|
+
- `.enact/operator/plans/*-requirements.md`
|
|
46
|
+
- `.enact/operator/plans/brownfield-map.md`
|
|
47
|
+
- `.enact/operator/research/summary.md`
|
|
48
|
+
2. Derive the must-haves from the goal backward:
|
|
49
|
+
- what must be true when this is done?
|
|
50
|
+
- what artifacts and connections are required for those truths?
|
|
51
|
+
3. Split the work into waves and slices:
|
|
52
|
+
- interface or contracts first
|
|
53
|
+
- implementation second
|
|
54
|
+
- verification and wiring last
|
|
55
|
+
4. Write or refine:
|
|
56
|
+
- active phase plan
|
|
57
|
+
- verification map
|
|
58
|
+
- any required task queue items
|
|
59
|
+
5. If Ultrawork is active, link the plan id into session state:
|
|
60
|
+
- MCP: `operator_ultrawork_link_plan`
|
|
61
|
+
- CLI fallback: `enact-operator ultrawork link-plan <planId>`
|
|
62
|
+
|
|
63
|
+
## Quality Bar
|
|
64
|
+
|
|
65
|
+
- no vague acceptance criteria
|
|
66
|
+
- no "make it work" tasks
|
|
67
|
+
- no giant slice that hides three subsystems
|
|
68
|
+
- no verify step that depends on hope
|
|
69
|
+
|
|
70
|
+
## Deliverables
|
|
71
|
+
|
|
72
|
+
- `.enact/operator/plans/<phase>.md`
|
|
73
|
+
- `.enact/operator/plans/<phase>-verification.md`
|
|
74
|
+
- updated brownfield map or research summary when needed
|
|
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.
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ralph
|
|
3
|
+
description: "Self-referential execution loop with mandatory verification gates. Use when the user wants work completed end-to-end with fresh evidence before stopping."
|
|
4
|
+
lane: true
|
|
5
|
+
mcpToolPrefix: operator_ralph_
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Ralph
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
|
|
12
|
+
`$ralph` is the persistence wrapper for Operator work. It runs a goal forward through implementation, records gate verifications, and refuses to exit until all mandatory gates pass. It is the right mode when partial completion is unacceptable and fresh evidence is required before closeout.
|
|
13
|
+
|
|
14
|
+
## Use When
|
|
15
|
+
|
|
16
|
+
- the user wants work shipped without a premature stop
|
|
17
|
+
- verification must be recorded, not assumed
|
|
18
|
+
- multiple audit gates (doctor, provider-boundary, replacement-readiness, tests) must all pass before done
|
|
19
|
+
- a previous attempt left work in an incomplete or unverified state
|
|
20
|
+
|
|
21
|
+
## Execution Policy
|
|
22
|
+
|
|
23
|
+
- start from the repo and `.enact/operator/` truth, not chat memory
|
|
24
|
+
- if `operator_*` tools are not visible yet, load/search the Enact Operator MCP namespace before doing ralph lifecycle actions
|
|
25
|
+
- drive ralph through MCP tools when running inside Codex; CLI commands are the equivalent operator surface
|
|
26
|
+
- keep ralph, task, inbox, and review state current as you go
|
|
27
|
+
- when no external `taskId` is linked, local Operator task discipline is mandatory; Ralph owns a local task and must keep it authoritative
|
|
28
|
+
- do not stop until every mandatory gate is recorded as `passed` or the loop is explicitly aborted
|
|
29
|
+
|
|
30
|
+
## Routing Rules
|
|
31
|
+
|
|
32
|
+
- ambiguous goal -> run `$deep-interview` first, then start ralph with the clarified goal
|
|
33
|
+
- goal is clear -> start ralph immediately (MCP: `operator_ralph_start`)
|
|
34
|
+
- work is blocked on an external dependency -> `operator_ralph_block` with the reason, resolve, then advance back to `running`
|
|
35
|
+
- all gates pass -> `operator_ralph_complete` is allowed only from phase=verifying
|
|
36
|
+
|
|
37
|
+
## Lifecycle
|
|
38
|
+
|
|
39
|
+
Phases in order: `idle` -> `running` -> `verifying` -> `completed`
|
|
40
|
+
|
|
41
|
+
Side exits from `running`: `blocked` (returns to `running` after resolution) or `aborted`
|
|
42
|
+
|
|
43
|
+
1. Start:
|
|
44
|
+
- MCP: `operator_ralph_start` with `goal`
|
|
45
|
+
- CLI: `enact-operator ralph start "<goal>"`
|
|
46
|
+
2. Implement the work while in phase `running`.
|
|
47
|
+
3. Advance to verification:
|
|
48
|
+
- MCP: `operator_ralph_advance` with `toPhase=verifying`
|
|
49
|
+
- CLI: `enact-operator ralph advance verifying`
|
|
50
|
+
4. Record each gate verdict:
|
|
51
|
+
- MCP: `operator_ralph_verify` with `gateId` and `status`
|
|
52
|
+
- CLI: `enact-operator ralph verify <gateId> <passed|failed> --evidence "<text>"`
|
|
53
|
+
5. All gates green:
|
|
54
|
+
- MCP: `operator_ralph_complete` with `summary`
|
|
55
|
+
- CLI: `enact-operator ralph complete "<summary>"`
|
|
56
|
+
6. If a gate fails: fix the underlying task, stay in phase `verifying`, re-verify.
|
|
57
|
+
|
|
58
|
+
## Mandatory Gates
|
|
59
|
+
|
|
60
|
+
| Gate ID | Name |
|
|
61
|
+
|----------------------------|-----------------------------|
|
|
62
|
+
| `doctor` | Operator doctor |
|
|
63
|
+
| `provider-boundary` | Provider boundary audit |
|
|
64
|
+
| `replacement-readiness` | Replacement readiness audit |
|
|
65
|
+
| `tests` | Real test suite |
|
|
66
|
+
|
|
67
|
+
These four gates are present by default. Do not skip them. Each must be recorded as `passed` before `complete` is allowed.
|
|
68
|
+
|
|
69
|
+
Additional rule:
|
|
70
|
+
|
|
71
|
+
- if the current Ralph run also carries a `contract-parity` gate in state,
|
|
72
|
+
treat it as mandatory and resolve it through the real gate output before
|
|
73
|
+
completion. Do not fabricate parity evidence.
|
|
74
|
+
|
|
75
|
+
## Workflow
|
|
76
|
+
|
|
77
|
+
1. Read current state:
|
|
78
|
+
- MCP: `operator_ralph_status`
|
|
79
|
+
- CLI: `enact-operator ralph status`
|
|
80
|
+
2. If no ralph is active, start one:
|
|
81
|
+
- MCP: `operator_ralph_start` with `goal`
|
|
82
|
+
- CLI: `enact-operator ralph start "<goal>"`
|
|
83
|
+
3. Implement the work. Keep changes atomic and verifiable.
|
|
84
|
+
4. When implementation is done, advance to `verifying`:
|
|
85
|
+
- MCP: `operator_ralph_advance` with `toPhase=verifying`, `note="Implementation complete"`
|
|
86
|
+
5. Run the doctor and record:
|
|
87
|
+
- Run: `operator_doctor` (or CLI `enact-operator doctor`)
|
|
88
|
+
- Record: `operator_ralph_verify` with `gateId=doctor`, `status=passed`, `evidence="doctor output clean"`
|
|
89
|
+
6. Run the provider-boundary audit and record:
|
|
90
|
+
- Run: `operator_audit_provider_boundary`
|
|
91
|
+
- Record: `operator_ralph_verify` with `gateId=provider-boundary`, `status=passed`, `evidence="<audit output>"`
|
|
92
|
+
7. Run the replacement-readiness audit and record:
|
|
93
|
+
- Run: `operator_audit_replacement_readiness`
|
|
94
|
+
- Record: `operator_ralph_verify` with `gateId=replacement-readiness`, `status=passed`, `evidence="<audit output>"`
|
|
95
|
+
8. Run the test suite and record:
|
|
96
|
+
- Record: `operator_ralph_verify` with `gateId=tests`, `status=passed`, `evidence="N tests passed"`
|
|
97
|
+
9. If a `contract-parity` gate is present, run it through the MCP surface:
|
|
98
|
+
- `operator_contract_parity_run`
|
|
99
|
+
- use its returned status/evidence directly when recording the gate
|
|
100
|
+
10. If state drift is suspected during verification, run the hygiene gate
|
|
101
|
+
through the Operator surface and fail closed on contradictions:
|
|
102
|
+
- `runStateHygieneCheck` is the underlying verifier
|
|
103
|
+
- use `operator_operator_snapshot` / `operator_hud` / `operator_workflow_reconcile`
|
|
104
|
+
to gather state evidence before recording verdicts
|
|
105
|
+
11. If any verification fails: fix the root cause, do NOT fabricate evidence. Re-run and re-record.
|
|
106
|
+
12. Once all four gates are `passed`:
|
|
107
|
+
- MCP: `operator_ralph_complete` with `summary`
|
|
108
|
+
- CLI: `enact-operator ralph complete "<one-line summary>"`
|
|
109
|
+
13. Check HUD:
|
|
110
|
+
- MCP: `operator_hud`
|
|
111
|
+
- CLI: `enact-operator hud`
|
|
112
|
+
|
|
113
|
+
## State Contract
|
|
114
|
+
|
|
115
|
+
- State file: `.enact/operator/state/ralph.json`
|
|
116
|
+
- Ralph reads and writes this file throughout the loop.
|
|
117
|
+
- On completion, the file reflects phase=completed, all gates passed, evidence recorded.
|
|
118
|
+
- On abort, phase=aborted with a reason string.
|
|
119
|
+
- Do not manually edit the state file. Use the MCP tools or equivalent CLI commands.
|
|
120
|
+
|
|
121
|
+
## MCP Tools
|
|
122
|
+
|
|
123
|
+
The full Ralph lifecycle is exposed through the `enact-operator` MCP server:
|
|
124
|
+
|
|
125
|
+
- `operator_ralph_start` — start a new ralph loop
|
|
126
|
+
- `operator_ralph_status` — read current ralph state
|
|
127
|
+
- `operator_ralph_advance` — transition to a new phase
|
|
128
|
+
- `operator_ralph_verify` — record a gate verdict with evidence
|
|
129
|
+
- `operator_ralph_pause` — pause an active loop
|
|
130
|
+
- `operator_ralph_resume` — resume a paused loop
|
|
131
|
+
- `operator_ralph_block` — mark blocked with a reason
|
|
132
|
+
- `operator_ralph_complete` — close the loop with a summary (phase=verifying with all gates passed)
|
|
133
|
+
- `operator_ralph_abort` — abort with a reason
|
|
134
|
+
|
|
135
|
+
Supporting tools used during the workflow: `operator_doctor`, `operator_audit_provider_boundary`, `operator_audit_replacement_readiness`, `operator_hud`.
|
|
136
|
+
|
|
137
|
+
Important:
|
|
138
|
+
|
|
139
|
+
- `contract-parity` is provider-first. Operator may call the running
|
|
140
|
+
`enact-context` server surface through its adapter layer to prove declared
|
|
141
|
+
commands/events/UI/tests/hooks. That is expected and correct.
|
|
142
|
+
- `state-hygiene` is no longer a stub. If it fails, Ralph should not close.
|
|
143
|
+
|
|
144
|
+
## CLI Equivalents
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
# Start a new loop
|
|
148
|
+
enact-operator ralph start "Implement provider hot-swap without downtime"
|
|
149
|
+
|
|
150
|
+
# Start with explicit task links and custom gates
|
|
151
|
+
enact-operator ralph start "Fix install path" --task-id abc123 --gate "lint:Lint check"
|
|
152
|
+
|
|
153
|
+
# Read state
|
|
154
|
+
enact-operator ralph status
|
|
155
|
+
|
|
156
|
+
# Advance phase
|
|
157
|
+
enact-operator ralph advance verifying --note "All code written"
|
|
158
|
+
|
|
159
|
+
# Record a gate
|
|
160
|
+
enact-operator ralph verify doctor passed --evidence "No errors, 3 warnings"
|
|
161
|
+
enact-operator ralph verify tests failed --evidence "2 failures in suite"
|
|
162
|
+
|
|
163
|
+
# Pause and resume
|
|
164
|
+
enact-operator ralph pause --note "Waiting on upstream merge"
|
|
165
|
+
enact-operator ralph resume --note "Upstream merged"
|
|
166
|
+
|
|
167
|
+
# Block and return
|
|
168
|
+
enact-operator ralph block "Cannot proceed without env var ENACT_API_KEY"
|
|
169
|
+
enact-operator ralph advance running --note "Env var added"
|
|
170
|
+
|
|
171
|
+
# Complete or abort
|
|
172
|
+
enact-operator ralph complete "Provider hot-swap ships cleanly, all 4 gates green"
|
|
173
|
+
enact-operator ralph abort "Goal invalidated by architecture change"
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Activation
|
|
177
|
+
|
|
178
|
+
This skill is wired to Operator's UserPromptSubmit hook. When a prompt contains
|
|
179
|
+
an explicit marker like `$enact-operator:ralph "<goal>"` or `$ralph "<goal>"`
|
|
180
|
+
and the workspace-context hook preset is installed (verified via
|
|
181
|
+
`operator_hooks_status`), the hook automatically:
|
|
182
|
+
|
|
183
|
+
1. Detects the marker
|
|
184
|
+
2. Starts the durable state at `.enact/operator/state/ralph.json` before the agent reads its first turn of context
|
|
185
|
+
3. Adds an MCP-first context note telling the agent to load/search the Enact Operator MCP namespace immediately and continue through `operator_*` tools
|
|
186
|
+
4. Records the activation in `.enact/operator/state/skill-active.json`
|
|
187
|
+
|
|
188
|
+
That injected startup note is not AzDo-only. If no external `taskId` is linked, treat the local task as mandatory runtime state: read it through `operator_task_list` and keep it current throughout the run.
|
|
189
|
+
|
|
190
|
+
If hooks are not installed, OR the marker did not include a goal, OR you
|
|
191
|
+
want explicit control, call `operator_operator_activate` with `{skill: 'ralph',
|
|
192
|
+
goal: '<goal>'}` from the MCP tool surface. The result is idempotent — if
|
|
193
|
+
a ralph loop is already active, the activation is a no-op.
|
|
194
|
+
|
|
195
|
+
## Final Check
|
|
196
|
+
|
|
197
|
+
- Phase is `completed`, not `running` or `verifying` (check via `operator_ralph_status`).
|
|
198
|
+
- All four mandatory gates show `passed` in the ralph state.
|
|
199
|
+
- Every gate has non-empty evidence text — not a placeholder.
|
|
200
|
+
- `operator_hud` shows no active ralph loop outstanding.
|
|
201
|
+
- No fabricated evidence. Each gate result comes from a real command run.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Ralph (Gemini Variant)
|
|
2
|
+
|
|
3
|
+
You are running Ralph with a Gemini model identity.
|
|
4
|
+
|
|
5
|
+
Keep the same durable runtime contract as the default Ralph skill:
|
|
6
|
+
|
|
7
|
+
- drive the goal to completion with real state updates
|
|
8
|
+
- record evidence for every mandatory gate
|
|
9
|
+
- fail closed when evidence is missing or contradictory
|
|
10
|
+
- do not claim completion until all required gates are passed
|
|
11
|
+
|
|
12
|
+
## TOOL_CALL_MANDATE
|
|
13
|
+
|
|
14
|
+
- keep tool usage explicit, short, and sequential
|
|
15
|
+
- prefer direct MCP/tool results over narrative summaries
|
|
16
|
+
- when a gate depends on a command or runtime check, run it first and cite the result
|
|
17
|
+
- if a required tool is not visible, load/search the operator MCP namespace before continuing
|
|
18
|
+
- do not substitute inferred status for tool-backed evidence
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ralplan
|
|
3
|
+
description: "Plan-first Operator execution wrapper: write a durable plan, enter the Ralph loop, drive to verified completion."
|
|
4
|
+
lane: true
|
|
5
|
+
mcpToolPrefix: operator_ralplan_
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Ralplan
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
|
|
12
|
+
Use `$ralplan` when the work needs a reviewable execution plan before the Ralph loop starts. Ralplan is the disciplined alternative to `$autopilot` — it gates execution behind a plan the user or reviewer can inspect, then advances into Ralph's self-referential loop with explicit verification checkpoints.
|
|
13
|
+
|
|
14
|
+
Ralplan is the combination of `$plan` (write artifacts, define slices and verification) and `$ralph` (durable execution loop with phase gates). Neither sub-skill is optional.
|
|
15
|
+
|
|
16
|
+
## Use When
|
|
17
|
+
|
|
18
|
+
- The request is clear enough to plan but carries meaningful risk or complexity
|
|
19
|
+
- A written plan artifact needs to exist before any code changes
|
|
20
|
+
- Verification gates need to be defined up front, not discovered mid-execution
|
|
21
|
+
- The user wants to review the plan before execution begins
|
|
22
|
+
|
|
23
|
+
## Do Not Use When
|
|
24
|
+
|
|
25
|
+
- The request is still ambiguous — route through `$deep-interview` first, then return here
|
|
26
|
+
- The work is trivial and a plan would add no value
|
|
27
|
+
- The user explicitly wants unattended delivery without a plan review — use `$autopilot`
|
|
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 ralph, task, and review state current as you go
|
|
34
|
+
- do not advance to the Ralph loop before the plan artifact exists and is reviewed
|
|
35
|
+
|
|
36
|
+
## Lifecycle
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
intent → $plan (write plan + verification map) → user review → $ralph start → running → verifying → completed
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Each transition is explicit. Never advance to the Ralph loop before the plan artifact exists and is reviewed.
|
|
43
|
+
|
|
44
|
+
## Workflow
|
|
45
|
+
|
|
46
|
+
### Phase 1 — Plan
|
|
47
|
+
|
|
48
|
+
1. Read current Operator artifacts:
|
|
49
|
+
- MCP: `operator_session_status`, `operator_state_read`
|
|
50
|
+
- CLI:
|
|
51
|
+
```
|
|
52
|
+
enact-operator session status
|
|
53
|
+
enact-operator state read
|
|
54
|
+
```
|
|
55
|
+
2. Write the plan to `.enact/operator/plans/<phase>.md` following `$plan` conventions:
|
|
56
|
+
- Named files per slice
|
|
57
|
+
- Explicit verification per slice
|
|
58
|
+
- Exit conditions stated
|
|
59
|
+
3. Write the verification map to `.enact/operator/plans/<phase>-verification.md`.
|
|
60
|
+
4. Link the plan artifact to ultrawork if an ultrawork session is active:
|
|
61
|
+
- MCP: `operator_ultrawork_link_plan` with the plan id
|
|
62
|
+
5. Present the plan for review. Do not advance until it is approved.
|
|
63
|
+
|
|
64
|
+
### Phase 2 — Execute
|
|
65
|
+
|
|
66
|
+
6. Start the Ralph loop with the goal and verification gates from the plan:
|
|
67
|
+
- MCP: `operator_ralph_start` with `goal`
|
|
68
|
+
- CLI: `enact-operator ralph start "<goal>" --gate g1:"<Gate Name>" --gate g2:"<Gate Name>"`
|
|
69
|
+
7. Confirm Ralph is running:
|
|
70
|
+
- MCP: `operator_ralph_status`
|
|
71
|
+
- CLI: `enact-operator ralph status`
|
|
72
|
+
8. Execute each plan slice. After each slice, record evidence:
|
|
73
|
+
- MCP: `operator_ralph_verify` with `gateId` and `status=passed`
|
|
74
|
+
- CLI: `enact-operator ralph verify <gateId> passed --evidence "<evidence text>"`
|
|
75
|
+
9. If blocked, record the blocker and pause:
|
|
76
|
+
- MCP: `operator_ralph_block` with reason, then `operator_ralph_pause`
|
|
77
|
+
- CLI:
|
|
78
|
+
```
|
|
79
|
+
enact-operator ralph block --note "<reason>"
|
|
80
|
+
enact-operator ralph pause
|
|
81
|
+
```
|
|
82
|
+
Resolve the block, then resume:
|
|
83
|
+
- MCP: `operator_ralph_resume`
|
|
84
|
+
- CLI: `enact-operator ralph resume`
|
|
85
|
+
|
|
86
|
+
### Phase 3 — Verify and Complete
|
|
87
|
+
|
|
88
|
+
10. When all gates have evidence, advance to the verifying phase:
|
|
89
|
+
- MCP: `operator_ralph_advance` with `toPhase=verifying`
|
|
90
|
+
- CLI: `enact-operator ralph advance verifying`
|
|
91
|
+
11. Run `$review` against the completed work and plan artifacts.
|
|
92
|
+
12. If review passes, complete the Ralph session:
|
|
93
|
+
- MCP: `operator_ralph_complete` with `summary`
|
|
94
|
+
- CLI: `enact-operator ralph complete`
|
|
95
|
+
13. If review returns changes requested, advance back to running and address findings:
|
|
96
|
+
- MCP: `operator_ralph_advance` with `toPhase=running`
|
|
97
|
+
- CLI: `enact-operator ralph advance running --note "<what changed>"`
|
|
98
|
+
|
|
99
|
+
## State Contract
|
|
100
|
+
|
|
101
|
+
Reads:
|
|
102
|
+
- `.enact/operator/plans/` (plan and verification map written in Phase 1)
|
|
103
|
+
- `.enact/operator/state/ralph-state.json` (Ralph loop state)
|
|
104
|
+
|
|
105
|
+
Writes:
|
|
106
|
+
- `.enact/operator/plans/<phase>.md`
|
|
107
|
+
- `.enact/operator/plans/<phase>-verification.md`
|
|
108
|
+
- Ralph state via MCP tools or CLI commands
|
|
109
|
+
|
|
110
|
+
## MCP Tools
|
|
111
|
+
|
|
112
|
+
- `operator_session_status` — read current session state
|
|
113
|
+
- `operator_state_read` — read active operator state
|
|
114
|
+
- `operator_ralph_start` — start a new ralph loop with goal and gates
|
|
115
|
+
- `operator_ralph_status` — read current ralph state
|
|
116
|
+
- `operator_ralph_advance` — transition to a new phase
|
|
117
|
+
- `operator_ralph_verify` — record a gate verdict with evidence
|
|
118
|
+
- `operator_ralph_block` — mark blocked with a reason
|
|
119
|
+
- `operator_ralph_pause` — pause the active loop
|
|
120
|
+
- `operator_ralph_resume` — resume a paused loop
|
|
121
|
+
- `operator_ralph_complete` — close the loop with a summary
|
|
122
|
+
- `operator_ralph_abort` — abort the loop with a reason
|
|
123
|
+
- `operator_ultrawork_link_plan` — link the plan artifact to an active ultrawork session
|
|
124
|
+
|
|
125
|
+
## Commands
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
enact-operator session status
|
|
129
|
+
enact-operator state read
|
|
130
|
+
enact-operator ralph start "<goal>" --gate <id>:<name>
|
|
131
|
+
enact-operator ralph status
|
|
132
|
+
enact-operator ralph advance <phase>
|
|
133
|
+
enact-operator ralph verify <gateId> passed --evidence "<text>"
|
|
134
|
+
enact-operator ralph verify <gateId> failed --evidence "<text>"
|
|
135
|
+
enact-operator ralph block --note "<reason>"
|
|
136
|
+
enact-operator ralph pause
|
|
137
|
+
enact-operator ralph resume
|
|
138
|
+
enact-operator ralph complete
|
|
139
|
+
enact-operator ralph abort
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Activation
|
|
143
|
+
|
|
144
|
+
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.
|
|
145
|
+
## Final Check
|
|
146
|
+
|
|
147
|
+
- Plan artifact exists at `.enact/operator/plans/<phase>.md` before Ralph was started
|
|
148
|
+
- All verification gates have evidence recorded, not just a passed status
|
|
149
|
+
- `$review` verdict is approved
|
|
150
|
+
- `operator_ralph_status` shows phase as `completed`
|
|
151
|
+
- No stale Ralph state file remains active under `.enact/operator/state/`
|