@amsterdamdatalabs/enact-extensions 0.1.0
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/.agents/plugins/marketplace.json +20 -0
- package/README.md +88 -0
- package/catalog/enact-context.json +9 -0
- package/catalog/enact-factory.json +7 -0
- package/catalog/enact-operator.json +7 -0
- package/catalog/enact-wiki.json +7 -0
- package/catalog/net-revenue-management.json +8 -0
- package/dist/create/claude.d.ts +3 -0
- package/dist/create/claude.d.ts.map +1 -0
- package/dist/create/claude.js +12 -0
- package/dist/create/claude.js.map +1 -0
- package/dist/create/codex.d.ts +3 -0
- package/dist/create/codex.d.ts.map +1 -0
- package/dist/create/codex.js +14 -0
- package/dist/create/codex.js.map +1 -0
- package/dist/create/cursor.d.ts +3 -0
- package/dist/create/cursor.d.ts.map +1 -0
- package/dist/create/cursor.js +20 -0
- package/dist/create/cursor.js.map +1 -0
- package/dist/create/enact.d.ts +3 -0
- package/dist/create/enact.d.ts.map +1 -0
- package/dist/create/enact.js +32 -0
- package/dist/create/enact.js.map +1 -0
- package/dist/create/index.d.ts +18 -0
- package/dist/create/index.d.ts.map +1 -0
- package/dist/create/index.js +54 -0
- package/dist/create/index.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/install.d.ts +60 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +250 -0
- package/dist/install.js.map +1 -0
- package/dist/internal/claude.d.ts +16 -0
- package/dist/internal/claude.d.ts.map +1 -0
- package/dist/internal/claude.js +35 -0
- package/dist/internal/claude.js.map +1 -0
- package/dist/internal/codex.d.ts +43 -0
- package/dist/internal/codex.d.ts.map +1 -0
- package/dist/internal/codex.js +205 -0
- package/dist/internal/codex.js.map +1 -0
- package/dist/internal/cursor.d.ts +2 -0
- package/dist/internal/cursor.d.ts.map +1 -0
- package/dist/internal/cursor.js +6 -0
- package/dist/internal/cursor.js.map +1 -0
- package/dist/internal/io.d.ts +3 -0
- package/dist/internal/io.d.ts.map +1 -0
- package/dist/internal/io.js +11 -0
- package/dist/internal/io.js.map +1 -0
- package/dist/internal/pick.d.ts +4 -0
- package/dist/internal/pick.d.ts.map +1 -0
- package/dist/internal/pick.js +17 -0
- package/dist/internal/pick.js.map +1 -0
- package/dist/internal/platform.d.ts +21 -0
- package/dist/internal/platform.d.ts.map +1 -0
- package/dist/internal/platform.js +120 -0
- package/dist/internal/platform.js.map +1 -0
- package/dist/internal/schema.d.ts +5 -0
- package/dist/internal/schema.d.ts.map +1 -0
- package/dist/internal/schema.js +37 -0
- package/dist/internal/schema.js.map +1 -0
- package/dist/internal/types.d.ts +49 -0
- package/dist/internal/types.d.ts.map +1 -0
- package/dist/internal/types.js +2 -0
- package/dist/internal/types.js.map +1 -0
- package/dist/validate/claude.d.ts +3 -0
- package/dist/validate/claude.d.ts.map +1 -0
- package/dist/validate/claude.js +11 -0
- package/dist/validate/claude.js.map +1 -0
- package/dist/validate/codex.d.ts +3 -0
- package/dist/validate/codex.d.ts.map +1 -0
- package/dist/validate/codex.js +11 -0
- package/dist/validate/codex.js.map +1 -0
- package/dist/validate/cursor.d.ts +3 -0
- package/dist/validate/cursor.d.ts.map +1 -0
- package/dist/validate/cursor.js +11 -0
- package/dist/validate/cursor.js.map +1 -0
- package/dist/validate/enact.d.ts +4 -0
- package/dist/validate/enact.d.ts.map +1 -0
- package/dist/validate/enact.js +18 -0
- package/dist/validate/enact.js.map +1 -0
- package/dist/validate/index.d.ts +17 -0
- package/dist/validate/index.d.ts.map +1 -0
- package/dist/validate/index.js +99 -0
- package/dist/validate/index.js.map +1 -0
- package/package.json +58 -0
- package/plugins/net-revenue-management/.codex-plugin/plugin.json +35 -0
- package/plugins/net-revenue-management/.mcp.json +9 -0
- package/plugins/net-revenue-management/skills/net-revenue-risks/SKILL.md +30 -0
- package/plugins/net-revenue-management/skills/net-revenue-scenario/SKILL.md +31 -0
- package/scripts/enact-extensions.mjs +105 -0
- package/scripts/install.sh +70 -0
- package/scripts/lib/resolve-plugin-root.mjs +9 -0
- package/scripts/lib/run-install.mjs +66 -0
- package/scripts/lib/run-sync.mjs +24 -0
- package/scripts/lib/run-validate.mjs +36 -0
- package/scripts/rename-supervisor-to-operator.pl +66 -0
- package/scripts/setup-enact-context.sh +23 -0
- package/scripts/sync-manifests.mjs +23 -0
- package/scripts/validate-catalog.mjs +37 -0
- package/scripts/validate-plugin.mjs +10 -0
- package/spec/claude.json +99 -0
- package/spec/claude.md +485 -0
- package/spec/codex.json +154 -0
- package/spec/codex.md +145 -0
- package/spec/cursor.json +88 -0
- package/spec/cursor.md +175 -0
- package/spec/enact.json +211 -0
- package/spec/enact.md +204 -0
package/spec/enact.md
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
# Plugins
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Plugins bundle skills, slash commands, MCP servers, and app integrations into reusable
|
|
6
|
+
workflows for Enact agents.
|
|
7
|
+
|
|
8
|
+
Extend what Enact can do, for example:
|
|
9
|
+
|
|
10
|
+
- Install the enact-context plugin to give agents deep code intelligence and semantic search.
|
|
11
|
+
- Install the enact-wiki plugin to persist knowledge across sessions and projects.
|
|
12
|
+
- Install the enact-operator plugin to unlock factory workflows, team orchestration, and operator oversight.
|
|
13
|
+
|
|
14
|
+
A plugin can contain:
|
|
15
|
+
|
|
16
|
+
- **Skills:** reusable instructions for specific kinds of work. Agents load
|
|
17
|
+
them on demand so they follow the right steps and use the right references
|
|
18
|
+
or helper scripts for a task.
|
|
19
|
+
- **Slash commands:** named commands invoked directly by the user (e.g. `/enact-operator:setup`)
|
|
20
|
+
to trigger specific workflows without relying on automatic skill selection.
|
|
21
|
+
- **MCP servers:** services that give agents access to additional tools or
|
|
22
|
+
shared information, often from systems outside the local project.
|
|
23
|
+
- **Apps:** connections to external tools like GitHub, Azure DevOps, or Slack, so
|
|
24
|
+
agents can read information from those tools and take actions in them.
|
|
25
|
+
- **Hooks:** event handlers that run automatically on session lifecycle events
|
|
26
|
+
(SessionStart, PreToolUse, Stop, etc.) to inject context or enforce guardrails.
|
|
27
|
+
|
|
28
|
+
More plugin capabilities are coming soon.
|
|
29
|
+
|
|
30
|
+
## Use and install plugins
|
|
31
|
+
|
|
32
|
+
### Plugin directory in the CLI
|
|
33
|
+
|
|
34
|
+
In the Enact CLI, run the following command to open the plugins list:
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
enact
|
|
38
|
+
/plugins
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The CLI plugin browser groups plugins by marketplace. Use the marketplace tabs
|
|
42
|
+
to switch sources, open a plugin to inspect details, install or uninstall
|
|
43
|
+
marketplace entries, and press <kbd>Space</kbd> on an installed plugin to toggle
|
|
44
|
+
its enabled state.
|
|
45
|
+
|
|
46
|
+
### Install and use a plugin
|
|
47
|
+
|
|
48
|
+
Once you open the plugin directory:
|
|
49
|
+
|
|
50
|
+
1. Search or browse for a plugin, then open its details.
|
|
51
|
+
2. Select `Install plugin`.
|
|
52
|
+
3. If the plugin requires an MCP server, it starts automatically on the next session.
|
|
53
|
+
4. After installation, start a new session and invoke the plugin by skill or slash command.
|
|
54
|
+
|
|
55
|
+
After you install a plugin, invoke it in two ways:
|
|
56
|
+
|
|
57
|
+
**Describe the task directly** — ask for the outcome you want, such as
|
|
58
|
+
"Set up the Enact Factory environment" or "Run the doctor check on this project."
|
|
59
|
+
Use this when you want the agent to choose the right installed skill for the task.
|
|
60
|
+
|
|
61
|
+
**Use a slash command** — type `/plugin-name:command-name` to invoke a specific
|
|
62
|
+
workflow explicitly. Use this when you want precise control over which skill or
|
|
63
|
+
command runs.
|
|
64
|
+
|
|
65
|
+
### How permissions and data sharing work
|
|
66
|
+
|
|
67
|
+
Installing a plugin makes its workflows available to Enact agents, but your
|
|
68
|
+
existing approval settings still apply. Connected external services remain
|
|
69
|
+
subject to their own authentication, privacy, and data-sharing policies.
|
|
70
|
+
|
|
71
|
+
- Bundled skills and slash commands are available as soon as you install the plugin.
|
|
72
|
+
- If a plugin includes MCP servers, they may require additional setup or
|
|
73
|
+
authentication before first use.
|
|
74
|
+
- If a plugin includes apps, the agent may prompt you to authenticate during
|
|
75
|
+
setup or the first time you use them.
|
|
76
|
+
- Hook scripts run automatically within the session process and have access to
|
|
77
|
+
the same environment as the agent.
|
|
78
|
+
|
|
79
|
+
### Remove or turn off a plugin
|
|
80
|
+
|
|
81
|
+
To remove a plugin, reopen it from the plugin browser and select
|
|
82
|
+
**Uninstall plugin**.
|
|
83
|
+
|
|
84
|
+
If you want to keep a plugin installed but turn it off, set its entry in
|
|
85
|
+
`~/.enact/config.toml` to `enabled = false`, then restart the agent:
|
|
86
|
+
|
|
87
|
+
```toml
|
|
88
|
+
[plugins."enact-operator@enact-curated"]
|
|
89
|
+
enabled = false
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Build your own plugin
|
|
93
|
+
|
|
94
|
+
Plugins live in a directory containing an `.agents/` folder with a `plugin.json`
|
|
95
|
+
manifest. All other components (skills, commands, hooks, MCP servers, apps) sit
|
|
96
|
+
at the plugin root alongside `.agents/`.
|
|
97
|
+
|
|
98
|
+
### Plugin structure
|
|
99
|
+
|
|
100
|
+
```text
|
|
101
|
+
my-plugin/
|
|
102
|
+
├── .agents/
|
|
103
|
+
│ └── plugin.json
|
|
104
|
+
├── skills/
|
|
105
|
+
│ └── my-skill/
|
|
106
|
+
│ └── SKILL.md
|
|
107
|
+
├── commands/
|
|
108
|
+
│ └── my-command.md
|
|
109
|
+
├── hooks/
|
|
110
|
+
│ └── hooks.json
|
|
111
|
+
├── .mcp.json
|
|
112
|
+
├── .app.json
|
|
113
|
+
└── assets/
|
|
114
|
+
├── icon.png
|
|
115
|
+
└── logo.png
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Plugin manifest
|
|
119
|
+
|
|
120
|
+
The manifest at `.agents/plugin.json` declares the plugin identity and points
|
|
121
|
+
to its components. `name` is the only required field; all component paths
|
|
122
|
+
default to the conventional locations shown above.
|
|
123
|
+
|
|
124
|
+
```json
|
|
125
|
+
{
|
|
126
|
+
"name": "my-plugin",
|
|
127
|
+
"version": "1.0.0",
|
|
128
|
+
"description": "A plugin that does something useful",
|
|
129
|
+
"author": {
|
|
130
|
+
"name": "Your Name"
|
|
131
|
+
},
|
|
132
|
+
"skills": "./skills/",
|
|
133
|
+
"commands": "./commands/",
|
|
134
|
+
"hooks": "./hooks/hooks.json",
|
|
135
|
+
"mcpServers": "./.mcp.json",
|
|
136
|
+
"apps": "./.app.json",
|
|
137
|
+
"interface": {
|
|
138
|
+
"displayName": "My Plugin",
|
|
139
|
+
"shortDescription": "Does something useful for Enact agents.",
|
|
140
|
+
"category": "Developer Tools",
|
|
141
|
+
"logo": "./assets/logo.png",
|
|
142
|
+
"capabilities": [
|
|
143
|
+
"skill workflows",
|
|
144
|
+
"slash commands"
|
|
145
|
+
]
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
| Field | Required | Purpose |
|
|
151
|
+
| :------------ | :------- | :-------------------------------------------------------------------------------------------------------- |
|
|
152
|
+
| `name` | Yes | Unique identifier and namespace prefix for skills and slash commands. |
|
|
153
|
+
| `version` | No | Semantic version. If omitted, the git commit SHA is used. |
|
|
154
|
+
| `description` | No | Short description shown in the plugin registry. |
|
|
155
|
+
| `author` | No | Attribution. Requires at minimum `author.name`. |
|
|
156
|
+
| `skills` | No | Path to skills directory (default: `./skills/`). |
|
|
157
|
+
| `commands` | No | Path to slash commands directory (default: `./commands/`). |
|
|
158
|
+
| `hooks` | No | Path to hooks configuration file (default: `./hooks/hooks.json`). |
|
|
159
|
+
| `mcpServers` | No | Path to `.mcp.json` MCP server configuration (default: `./.mcp.json`). |
|
|
160
|
+
| `apps` | No | Path to `.app.json` app connections file (default: `./.app.json`). |
|
|
161
|
+
| `interface` | No | Display metadata for the Enact plugin registry. `displayName` and `shortDescription` required if present. |
|
|
162
|
+
|
|
163
|
+
For the full manifest schema and field reference, see [enact.json](./enact.json).
|
|
164
|
+
|
|
165
|
+
### Slash commands
|
|
166
|
+
|
|
167
|
+
Slash commands are named entry points defined in the plugin's `commands/` directory.
|
|
168
|
+
Each Markdown file becomes one command, prefixed with the plugin namespace:
|
|
169
|
+
|
|
170
|
+
```text
|
|
171
|
+
commands/
|
|
172
|
+
├── setup.md → /my-plugin:setup
|
|
173
|
+
├── doctor.md → /my-plugin:doctor
|
|
174
|
+
└── reset.md → /my-plugin:reset
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Users invoke them directly:
|
|
178
|
+
|
|
179
|
+
```text
|
|
180
|
+
/my-plugin:setup
|
|
181
|
+
/my-plugin:doctor production
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Commands differ from skills in one key way: skills are selected automatically
|
|
185
|
+
by the agent based on context; slash commands are always user-initiated. Both
|
|
186
|
+
accept arguments via the `$ARGUMENTS` placeholder in the Markdown file.
|
|
187
|
+
|
|
188
|
+
### Test your plugin locally
|
|
189
|
+
|
|
190
|
+
Load a plugin directly without installing it:
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
enact --plugin-dir ./my-plugin
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
As you make changes, run `/reload-plugins` to pick up updates without
|
|
197
|
+
restarting. Test skills with `/my-plugin:skill-name` and slash commands with
|
|
198
|
+
`/my-plugin:command-name`.
|
|
199
|
+
|
|
200
|
+
### Distribute your plugin
|
|
201
|
+
|
|
202
|
+
When your plugin is ready to share, add a `README.md`, choose a versioning
|
|
203
|
+
strategy, and submit it to the Enact plugin registry. Internal team plugins can
|
|
204
|
+
be hosted in a private repository and referenced directly.
|