@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.
Files changed (111) hide show
  1. package/.agents/plugins/marketplace.json +20 -0
  2. package/README.md +88 -0
  3. package/catalog/enact-context.json +9 -0
  4. package/catalog/enact-factory.json +7 -0
  5. package/catalog/enact-operator.json +7 -0
  6. package/catalog/enact-wiki.json +7 -0
  7. package/catalog/net-revenue-management.json +8 -0
  8. package/dist/create/claude.d.ts +3 -0
  9. package/dist/create/claude.d.ts.map +1 -0
  10. package/dist/create/claude.js +12 -0
  11. package/dist/create/claude.js.map +1 -0
  12. package/dist/create/codex.d.ts +3 -0
  13. package/dist/create/codex.d.ts.map +1 -0
  14. package/dist/create/codex.js +14 -0
  15. package/dist/create/codex.js.map +1 -0
  16. package/dist/create/cursor.d.ts +3 -0
  17. package/dist/create/cursor.d.ts.map +1 -0
  18. package/dist/create/cursor.js +20 -0
  19. package/dist/create/cursor.js.map +1 -0
  20. package/dist/create/enact.d.ts +3 -0
  21. package/dist/create/enact.d.ts.map +1 -0
  22. package/dist/create/enact.js +32 -0
  23. package/dist/create/enact.js.map +1 -0
  24. package/dist/create/index.d.ts +18 -0
  25. package/dist/create/index.d.ts.map +1 -0
  26. package/dist/create/index.js +54 -0
  27. package/dist/create/index.js.map +1 -0
  28. package/dist/index.d.ts +14 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +9 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/install.d.ts +60 -0
  33. package/dist/install.d.ts.map +1 -0
  34. package/dist/install.js +250 -0
  35. package/dist/install.js.map +1 -0
  36. package/dist/internal/claude.d.ts +16 -0
  37. package/dist/internal/claude.d.ts.map +1 -0
  38. package/dist/internal/claude.js +35 -0
  39. package/dist/internal/claude.js.map +1 -0
  40. package/dist/internal/codex.d.ts +43 -0
  41. package/dist/internal/codex.d.ts.map +1 -0
  42. package/dist/internal/codex.js +205 -0
  43. package/dist/internal/codex.js.map +1 -0
  44. package/dist/internal/cursor.d.ts +2 -0
  45. package/dist/internal/cursor.d.ts.map +1 -0
  46. package/dist/internal/cursor.js +6 -0
  47. package/dist/internal/cursor.js.map +1 -0
  48. package/dist/internal/io.d.ts +3 -0
  49. package/dist/internal/io.d.ts.map +1 -0
  50. package/dist/internal/io.js +11 -0
  51. package/dist/internal/io.js.map +1 -0
  52. package/dist/internal/pick.d.ts +4 -0
  53. package/dist/internal/pick.d.ts.map +1 -0
  54. package/dist/internal/pick.js +17 -0
  55. package/dist/internal/pick.js.map +1 -0
  56. package/dist/internal/platform.d.ts +21 -0
  57. package/dist/internal/platform.d.ts.map +1 -0
  58. package/dist/internal/platform.js +120 -0
  59. package/dist/internal/platform.js.map +1 -0
  60. package/dist/internal/schema.d.ts +5 -0
  61. package/dist/internal/schema.d.ts.map +1 -0
  62. package/dist/internal/schema.js +37 -0
  63. package/dist/internal/schema.js.map +1 -0
  64. package/dist/internal/types.d.ts +49 -0
  65. package/dist/internal/types.d.ts.map +1 -0
  66. package/dist/internal/types.js +2 -0
  67. package/dist/internal/types.js.map +1 -0
  68. package/dist/validate/claude.d.ts +3 -0
  69. package/dist/validate/claude.d.ts.map +1 -0
  70. package/dist/validate/claude.js +11 -0
  71. package/dist/validate/claude.js.map +1 -0
  72. package/dist/validate/codex.d.ts +3 -0
  73. package/dist/validate/codex.d.ts.map +1 -0
  74. package/dist/validate/codex.js +11 -0
  75. package/dist/validate/codex.js.map +1 -0
  76. package/dist/validate/cursor.d.ts +3 -0
  77. package/dist/validate/cursor.d.ts.map +1 -0
  78. package/dist/validate/cursor.js +11 -0
  79. package/dist/validate/cursor.js.map +1 -0
  80. package/dist/validate/enact.d.ts +4 -0
  81. package/dist/validate/enact.d.ts.map +1 -0
  82. package/dist/validate/enact.js +18 -0
  83. package/dist/validate/enact.js.map +1 -0
  84. package/dist/validate/index.d.ts +17 -0
  85. package/dist/validate/index.d.ts.map +1 -0
  86. package/dist/validate/index.js +99 -0
  87. package/dist/validate/index.js.map +1 -0
  88. package/package.json +58 -0
  89. package/plugins/net-revenue-management/.codex-plugin/plugin.json +35 -0
  90. package/plugins/net-revenue-management/.mcp.json +9 -0
  91. package/plugins/net-revenue-management/skills/net-revenue-risks/SKILL.md +30 -0
  92. package/plugins/net-revenue-management/skills/net-revenue-scenario/SKILL.md +31 -0
  93. package/scripts/enact-extensions.mjs +105 -0
  94. package/scripts/install.sh +70 -0
  95. package/scripts/lib/resolve-plugin-root.mjs +9 -0
  96. package/scripts/lib/run-install.mjs +66 -0
  97. package/scripts/lib/run-sync.mjs +24 -0
  98. package/scripts/lib/run-validate.mjs +36 -0
  99. package/scripts/rename-supervisor-to-operator.pl +66 -0
  100. package/scripts/setup-enact-context.sh +23 -0
  101. package/scripts/sync-manifests.mjs +23 -0
  102. package/scripts/validate-catalog.mjs +37 -0
  103. package/scripts/validate-plugin.mjs +10 -0
  104. package/spec/claude.json +99 -0
  105. package/spec/claude.md +485 -0
  106. package/spec/codex.json +154 -0
  107. package/spec/codex.md +145 -0
  108. package/spec/cursor.json +88 -0
  109. package/spec/cursor.md +175 -0
  110. package/spec/enact.json +211 -0
  111. 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.