@enactprotocol/cli 2.1.28 → 2.1.29

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 (41) hide show
  1. package/dist/commands/index.d.ts +1 -0
  2. package/dist/commands/index.d.ts.map +1 -1
  3. package/dist/commands/index.js +2 -0
  4. package/dist/commands/index.js.map +1 -1
  5. package/dist/commands/init/templates/claude.d.ts +1 -1
  6. package/dist/commands/init/templates/claude.d.ts.map +1 -1
  7. package/dist/commands/init/templates/claude.js +267 -27
  8. package/dist/commands/init/templates/claude.js.map +1 -1
  9. package/dist/commands/init/templates/tool-agents.d.ts +1 -1
  10. package/dist/commands/init/templates/tool-agents.d.ts.map +1 -1
  11. package/dist/commands/init/templates/tool-agents.js +82 -7
  12. package/dist/commands/init/templates/tool-agents.js.map +1 -1
  13. package/dist/commands/learn/index.d.ts.map +1 -1
  14. package/dist/commands/learn/index.js +4 -11
  15. package/dist/commands/learn/index.js.map +1 -1
  16. package/dist/commands/run/index.d.ts.map +1 -1
  17. package/dist/commands/run/index.js +86 -5
  18. package/dist/commands/run/index.js.map +1 -1
  19. package/dist/commands/validate/index.d.ts +11 -0
  20. package/dist/commands/validate/index.d.ts.map +1 -0
  21. package/dist/commands/validate/index.js +299 -0
  22. package/dist/commands/validate/index.js.map +1 -0
  23. package/dist/index.d.ts +1 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +4 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/types.d.ts +2 -0
  28. package/dist/types.d.ts.map +1 -1
  29. package/dist/types.js.map +1 -1
  30. package/package.json +5 -5
  31. package/src/commands/index.ts +3 -0
  32. package/src/commands/init/templates/claude.ts +267 -27
  33. package/src/commands/init/templates/tool-agents.ts +82 -7
  34. package/src/commands/run/README.md +17 -0
  35. package/src/commands/run/index.ts +105 -5
  36. package/src/commands/validate/index.ts +344 -0
  37. package/src/index.ts +5 -1
  38. package/src/types.ts +2 -0
  39. package/tests/commands/init.test.ts +1 -1
  40. package/tests/commands/validate.test.ts +81 -0
  41. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AA8BH,eAAO,MAAM,OAAO,WAAW,CAAC;AAGhC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AA+BH,eAAO,MAAM,OAAO,WAAW,CAAC;AAGhC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -7,9 +7,9 @@
7
7
  */
8
8
  import { ensureGlobalSetup } from "@enactprotocol/shared";
9
9
  import { Command } from "commander";
10
- import { configureAuthCommand, configureCacheCommand, configureConfigCommand, configureEnvCommand, configureExecCommand, configureInfoCommand, configureInitCommand, configureInspectCommand, configureInstallCommand, configureLearnCommand, configureListCommand, configureMcpCommand, configurePublishCommand, configureReportCommand, configureRunCommand, configureSearchCommand, configureSetupCommand, configureSignCommand, configureTrustCommand, configureUnyankCommand, configureVisibilityCommand, configureYankCommand, } from "./commands";
10
+ import { configureAuthCommand, configureCacheCommand, configureConfigCommand, configureEnvCommand, configureExecCommand, configureInfoCommand, configureInitCommand, configureInspectCommand, configureInstallCommand, configureLearnCommand, configureListCommand, configureMcpCommand, configurePublishCommand, configureReportCommand, configureRunCommand, configureSearchCommand, configureSetupCommand, configureSignCommand, configureTrustCommand, configureUnyankCommand, configureValidateCommand, configureVisibilityCommand, configureYankCommand, } from "./commands";
11
11
  import { error, formatError } from "./utils";
12
- export const version = "2.1.28";
12
+ export const version = "2.1.29";
13
13
  // Main CLI entry point
14
14
  async function main() {
15
15
  // Ensure global setup is complete on first run
@@ -47,6 +47,8 @@ async function main() {
47
47
  configureVisibilityCommand(program);
48
48
  // MCP integration commands
49
49
  configureMcpCommand(program);
50
+ // Validation command
51
+ configureValidateCommand(program);
50
52
  // Global error handler - handle Commander's help/version exits gracefully
51
53
  program.exitOverride((err) => {
52
54
  // Commander throws errors for help, version, and other "exit" scenarios
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -14,6 +14,8 @@ export interface GlobalOptions {
14
14
  quiet?: boolean;
15
15
  /** Run without making changes (preview mode) */
16
16
  dryRun?: boolean;
17
+ /** Enable debug mode - show detailed parameter and environment information */
18
+ debug?: boolean;
17
19
  }
18
20
  /**
19
21
  * Context passed to command handlers
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qBAAqB;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wCAAwC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gDAAgD;IAChD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,qBAAqB;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,wCAAwC;IACxC,IAAI,EAAE,OAAO,CAAC;IACd,0CAA0C;IAC1C,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CACxD,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,cAAc,KACpB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,kEAAkE;IAClE,SAAS,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;CAOX,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAGhE,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qBAAqB;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wCAAwC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gDAAgD;IAChD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,qBAAqB;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,wCAAwC;IACxC,IAAI,EAAE,OAAO,CAAC;IACd,0CAA0C;IAC1C,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CACxD,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,cAAc,KACpB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,kEAAkE;IAClE,SAAS,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;CAOX,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAGhE,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AA+DH;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,WAAW,EAAE,CAAC;IACd,QAAQ,EAAE,CAAC;IACX,gBAAgB,EAAE,CAAC;IACnB,SAAS,EAAE,GAAG,EAAE,sBAAsB;CAC9B,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiEH;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,WAAW,EAAE,CAAC;IACd,QAAQ,EAAE,CAAC;IACX,gBAAgB,EAAE,CAAC;IACnB,SAAS,EAAE,GAAG,EAAE,sBAAsB;CAC9B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enactprotocol/cli",
3
- "version": "2.1.28",
3
+ "version": "2.1.29",
4
4
  "description": "Command-line interface for Enact - the npm for AI tools",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -34,10 +34,10 @@
34
34
  },
35
35
  "dependencies": {
36
36
  "@clack/prompts": "^0.11.0",
37
- "@enactprotocol/api": "2.1.28",
38
- "@enactprotocol/execution": "2.1.28",
39
- "@enactprotocol/secrets": "2.1.28",
40
- "@enactprotocol/shared": "2.1.28",
37
+ "@enactprotocol/api": "2.1.29",
38
+ "@enactprotocol/execution": "2.1.29",
39
+ "@enactprotocol/secrets": "2.1.29",
40
+ "@enactprotocol/shared": "2.1.29",
41
41
  "commander": "^12.1.0",
42
42
  "picocolors": "^1.1.1"
43
43
  },
@@ -35,3 +35,6 @@ export { configureUnyankCommand } from "./unyank";
35
35
  export { configureVisibilityCommand } from "./visibility";
36
36
  // MCP integration commands
37
37
  export { configureMcpCommand } from "./mcp";
38
+
39
+ // Validation command
40
+ export { configureValidateCommand } from "./validate";
@@ -3,18 +3,24 @@
3
3
  */
4
4
  export const claudeTemplate = `# CLAUDE.md
5
5
 
6
- This project uses Enact tools — containerized, signed executables you can run via CLI.
6
+ This project uses Enact tools — containerized, cryptographically-signed executables you can run via CLI.
7
7
 
8
8
  ## Quick Reference
9
- \`\`\`bash
10
- enact run <tool> --args '{"key": "value"}' # Run a tool
11
- enact search "keyword" # Find tools
12
- enact learn author/tool # View tool documentation
13
- enact install author/tool # Install tool
14
- enact list # List installed tools
15
- \`\`\`
9
+
10
+ | Task | Command |
11
+ |------|---------|
12
+ | Run with JSON | \`enact run <tool> --args '{"key": "value"}'\` |
13
+ | Run from file | \`enact run <tool> --input-file inputs.json\` |
14
+ | Dry run | \`enact run <tool> --args '{}' --dry-run\` |
15
+ | Debug params | \`enact run <tool> --args '{}' --debug\` |
16
+ | Search tools | \`enact search "keyword"\` |
17
+ | View docs | \`enact learn author/tool\` |
18
+ | Install tool | \`enact install author/tool\` |
19
+ | List installed | \`enact list\` |
20
+ | Sign & publish | \`enact sign ./ && enact publish ./\` |
16
21
 
17
22
  ## Running Tools
23
+
18
24
  Tools take JSON input and return JSON output:
19
25
  \`\`\`bash
20
26
  # Run and capture output
@@ -24,47 +30,281 @@ result=$(enact run author/utils/formatter --args '{"code": "const x=1"}')
24
30
  enact run tool --args '{}' | jq '.data'
25
31
  \`\`\`
26
32
 
27
- ## Creating Tools
28
- Create \`SKILL.md\` in a directory:
33
+ ## SKILL.md Structure
34
+
35
+ Each tool is defined by a \`SKILL.md\` file (YAML frontmatter + Markdown docs):
36
+
29
37
  \`\`\`yaml
30
38
  ---
31
39
  name: namespace/category/tool
32
- description: Clear description for search
40
+ description: What the tool does
33
41
  version: 1.0.0
34
- from: python:3.12-slim # Docker image
35
- build: pip install requests # Install dependencies (cached)
42
+ enact: "2.0.0"
43
+
44
+ from: python:3.12-slim # Docker image (pin versions, not :latest)
45
+ build: pip install requests # Build steps (cached by Dagger)
36
46
  command: python /workspace/main.py \${input}
47
+ timeout: 30s
48
+
37
49
  inputSchema:
38
50
  type: object
39
51
  properties:
40
- input: { type: string, description: "The input to process" }
52
+ input:
53
+ type: string
54
+ description: "Input to process"
41
55
  required: [input]
56
+
57
+ outputSchema:
58
+ type: object
59
+ properties:
60
+ result:
61
+ type: string
62
+
63
+ env:
64
+ API_KEY:
65
+ description: "External API key"
66
+ secret: true # Set via: enact env set API_KEY --secret
42
67
  ---
43
68
  # Tool Name
44
- Usage documentation here.
69
+ Documentation here.
70
+ \`\`\`
71
+
72
+ ## Field Reference
73
+
74
+ | Field | Description |
75
+ |-------|-------------|
76
+ | \`name\` | Hierarchical ID: \`org/category/tool\` |
77
+ | \`description\` | What the tool does |
78
+ | \`version\` | Semver version |
79
+ | \`from\` | Docker image |
80
+ | \`build\` | Build commands (string or array, cached) |
81
+ | \`command\` | Shell command with \`\${param}\` substitution |
82
+ | \`timeout\` | Max execution time (e.g., "30s", "5m") |
83
+ | \`inputSchema\` | JSON Schema for inputs |
84
+ | \`outputSchema\` | JSON Schema for outputs |
85
+ | \`env\` | Environment variables and secrets |
86
+
87
+ ## Parameter Substitution
88
+
89
+ Enact auto-quotes parameters. **Never manually quote:**
90
+
91
+ \`\`\`yaml
92
+ # WRONG - causes double-quoting
93
+ command: python /workspace/main.py "\${input}"
94
+
95
+ # RIGHT - Enact handles quoting
96
+ command: python /workspace/main.py \${input}
97
+ \`\`\`
98
+
99
+ **Optional vs Required Parameters:**
100
+
101
+ Parameters listed in the \`required\` array must be provided. All other properties are optional.
102
+
103
+ \`\`\`yaml
104
+ inputSchema:
105
+ type: object
106
+ properties:
107
+ url: # Required (in required array)
108
+ type: string
109
+ user_agent: # Optional (not in required array)
110
+ type: string
111
+ default: "Mozilla/5.0" # Provide default for optional params
112
+ timeout:
113
+ type: number
114
+ default: 30
115
+ required: [url] # Only url is required
116
+ \`\`\`
117
+
118
+ **Best practices for optional parameters:**
119
+ 1. Always provide a \`default\` value in the schema when possible
120
+ 2. Optional params without defaults become empty strings in commands
121
+ 3. Use \`--debug\` to see how parameters are resolved: \`enact run ./ --debug\`
122
+
123
+ Handle optional params in shell commands:
124
+ \`\`\`yaml
125
+ command: "curl \${url} -A '\${user_agent:-Mozilla/5.0}' --max-time \${timeout:-30}"
126
+ \`\`\`
127
+
128
+ Modifiers:
129
+ - \`\${param}\` — auto-quoted (handles spaces, JSON, special chars)
130
+ - \`\${param:raw}\` — raw, no quoting (use carefully)
131
+
132
+ ## Output
133
+
134
+ Output valid JSON to stdout when \`outputSchema\` is defined:
135
+
136
+ \`\`\`python
137
+ import json, sys
138
+
139
+ try:
140
+ result = do_work()
141
+ print(json.dumps({"status": "success", "result": result}))
142
+ except Exception as e:
143
+ print(json.dumps({"status": "error", "message": str(e)}))
144
+ sys.exit(1) # non-zero = error
145
+ \`\`\`
146
+
147
+ ## Build Steps by Language
148
+
149
+ **Python:**
150
+ \`\`\`yaml
151
+ from: python:3.12-slim
152
+ build: pip install requests pandas
153
+ \`\`\`
154
+
155
+ **Node.js:**
156
+ \`\`\`yaml
157
+ from: node:20-alpine
158
+ build:
159
+ - npm install
160
+ - npm run build
45
161
  \`\`\`
46
162
 
47
- Key points:
48
- - \`\${param}\` is auto-quoted — never add manual quotes
49
- - \`from:\` pin image versions (not \`:latest\`)
50
- - \`build:\` steps are cached by Dagger
51
- - Output JSON to stdout, errors to stderr
52
- - Non-zero exit = failure
163
+ **Rust:**
164
+ \`\`\`yaml
165
+ from: rust:1.83-slim
166
+ build: rustc /workspace/main.rs -o /workspace/tool
167
+ command: /workspace/tool \${input}
168
+ \`\`\`
169
+
170
+ **Go:**
171
+ \`\`\`yaml
172
+ from: golang:1.22-alpine
173
+ build: cd /workspace && go build -o tool main.go
174
+ command: /workspace/tool \${input}
175
+ \`\`\`
176
+
177
+ **System packages:**
178
+ \`\`\`yaml
179
+ build: apt-get update && apt-get install -y libfoo-dev
180
+ \`\`\`
181
+
182
+ Build steps are cached — first run slow, subsequent runs instant.
183
+
184
+ ## Base Image Requirements
185
+
186
+ Not all Docker images work as Enact base images. Requirements:
187
+
188
+ **Must have:**
189
+ - \`/bin/sh\` (POSIX shell) - Enact wraps commands with \`sh -c\`
190
+ - Standard filesystem layout
53
191
 
54
- ## Tool Development Workflow
192
+ **Recommended base images:**
193
+ | Language | Image | Notes |
194
+ |----------|-------|-------|
195
+ | Python | \`python:3.12-slim\` | Best balance of size/features |
196
+ | Node.js | \`node:20-alpine\` | Smallest, may need build tools |
197
+ | Ruby | \`ruby:3.2-slim\` | For Ruby tools |
198
+ | Go | \`golang:1.22-alpine\` | Compile in build step |
199
+ | Rust | \`rust:1.83-slim\` | Compile in build step |
200
+ | General | \`alpine:3.18\` | Minimal, use apk for packages |
201
+ | Debian | \`debian:bookworm-slim\` | More packages, larger |
202
+
203
+ **Images that may NOT work:**
204
+ - Distroless images (no shell)
205
+ - Scratch images (no shell)
206
+ - Some specialized images with custom entrypoints
207
+
208
+ **Debugging image issues:**
55
209
  \`\`\`bash
56
- enact run ./ --args '{"input": "test"}' # Test locally
57
- enact run ./ --args '{}' --dry-run # Preview command
58
- enact sign ./ && enact publish ./ # Publish
210
+ # Test if an image works with Enact
211
+ enact exec . "echo test" # Run simple command in tool's container
212
+ enact run ./ --verbose # See detailed container output
59
213
  \`\`\`
60
214
 
215
+ ## File Access
216
+
217
+ Tools run in a container with \`/workspace\` as the working directory. All source files are copied there.
218
+
61
219
  ## Secrets
62
- Declare in SKILL.md, set via CLI:
220
+
221
+ Declare in \`SKILL.md\`:
63
222
  \`\`\`yaml
64
223
  env:
65
- API_KEY: # Declared but not set
224
+ API_KEY:
225
+ description: "API key for service"
226
+ secret: true
66
227
  \`\`\`
228
+
229
+ Set before running:
67
230
  \`\`\`bash
68
231
  enact env set API_KEY --secret --namespace author/tool
69
232
  \`\`\`
233
+
234
+ Access in code:
235
+ \`\`\`python
236
+ import os
237
+ api_key = os.environ.get('API_KEY')
238
+ \`\`\`
239
+
240
+ ## LLM Instruction Tools
241
+
242
+ Tools without a \`command\` field are interpreted by LLMs:
243
+
244
+ \`\`\`yaml
245
+ ---
246
+ name: myorg/ai/reviewer
247
+ description: AI-powered code review
248
+ inputSchema:
249
+ type: object
250
+ properties:
251
+ code: { type: string }
252
+ required: [code]
253
+ outputSchema:
254
+ type: object
255
+ properties:
256
+ issues: { type: array }
257
+ score: { type: number }
258
+ ---
259
+ # Code Reviewer
260
+
261
+ You are a senior engineer. Review the code for bugs, style, and security.
262
+ Return JSON: {"issues": [...], "score": 75}
263
+ \`\`\`
264
+
265
+ ## Publishing Checklist
266
+
267
+ - [ ] \`name\` follows \`namespace/category/tool\` pattern
268
+ - [ ] \`version\` set (semver)
269
+ - [ ] \`description\` is clear and searchable
270
+ - [ ] \`inputSchema\` / \`outputSchema\` defined
271
+ - [ ] \`from\` uses pinned image version
272
+ - [ ] \`timeout\` set appropriately
273
+ - [ ] Tool tested locally with \`enact run ./\`
274
+
275
+ ## Troubleshooting
276
+
277
+ \`\`\`bash
278
+ enact run ./ --args '{"x": "y"}' --verbose # Verbose output
279
+ enact run ./ --args '{}' --dry-run # Preview command without running
280
+ enact run ./ --args '{}' --debug # Show parameter resolution details
281
+ enact list # List installed tools
282
+ \`\`\`
283
+
284
+ **Common issues:**
285
+
286
+ | Issue | Solution |
287
+ |-------|----------|
288
+ | "Missing required parameter" | Check your \`required\` array in inputSchema |
289
+ | Parameters not substituting | Use \`--debug\` to see what values are being passed |
290
+ | Optional params failing | Add \`default\` values or handle empty strings |
291
+ | Build step fails | Use \`--verbose\` to see build output |
292
+ | Base image not working | Use recommended images (see Base Image Requirements) |
293
+ | Command exit code 2 | Check if command exists in the container |
294
+
295
+ **Debugging build failures:**
296
+ \`\`\`bash
297
+ enact run ./ --args '{}' --verbose # See build output
298
+ enact exec . "which python" # Check if command exists
299
+ enact exec . "ls /workspace" # Check file mounts
300
+ enact validate ./ # Validate SKILL.md structure
301
+ \`\`\`
302
+
303
+ **Multi-step builds:** Use YAML array syntax for clearer error reporting:
304
+ \`\`\`yaml
305
+ build:
306
+ - apk add --no-cache ruby ruby-dev
307
+ - gem install bundler
308
+ - bundle install
309
+ \`\`\`
70
310
  `;
@@ -12,6 +12,7 @@ Enact tools are containerized, cryptographically-signed executables. Each tool i
12
12
  | Run with JSON | \`enact run ./ --args '{"key": "value"}'\` |
13
13
  | Run from file | \`enact run ./ --input-file inputs.json\` |
14
14
  | Dry run | \`enact run ./ --args '{}' --dry-run\` |
15
+ | Debug params | \`enact run ./ --args '{}' --debug\` |
15
16
  | Sign & publish | \`enact sign ./ && enact publish ./\` |
16
17
 
17
18
  ## SKILL.md Structure
@@ -78,18 +79,33 @@ command: python /workspace/main.py "\${input}"
78
79
  command: python /workspace/main.py \${input}
79
80
  \`\`\`
80
81
 
81
- **Optional params:** Missing optional params become empty strings. Always provide defaults:
82
+ **Optional vs Required Parameters:**
83
+
84
+ Parameters listed in the \`required\` array must be provided. All other properties are optional.
85
+
82
86
  \`\`\`yaml
83
87
  inputSchema:
88
+ type: object
84
89
  properties:
85
- greeting:
90
+ url: # Required (in required array)
86
91
  type: string
87
- default: "Hello" # Recommended for optional params
92
+ user_agent: # Optional (not in required array)
93
+ type: string
94
+ default: "Mozilla/5.0" # Provide default for optional params
95
+ timeout:
96
+ type: number
97
+ default: 30
98
+ required: [url] # Only url is required
88
99
  \`\`\`
89
100
 
90
- Or handle empty in shell:
101
+ **Best practices for optional parameters:**
102
+ 1. Always provide a \`default\` value in the schema when possible
103
+ 2. Optional params without defaults become empty strings in commands
104
+ 3. Use \`--debug\` to see how parameters are resolved: \`enact run ./ --debug\`
105
+
106
+ Handle optional params in shell commands:
91
107
  \`\`\`yaml
92
- command: "echo \${greeting:-Hello} \${name}"
108
+ command: "curl \${url} -A '\${user_agent:-Mozilla/5.0}' --max-time \${timeout:-30}"
93
109
  \`\`\`
94
110
 
95
111
  Modifiers:
@@ -148,6 +164,37 @@ build: apt-get update && apt-get install -y libfoo-dev
148
164
 
149
165
  Build steps are cached — first run slow, subsequent runs instant.
150
166
 
167
+ ## Base Image Requirements
168
+
169
+ Not all Docker images work as Enact base images. Requirements:
170
+
171
+ **Must have:**
172
+ - \`/bin/sh\` (POSIX shell) - Enact wraps commands with \`sh -c\`
173
+ - Standard filesystem layout
174
+
175
+ **Recommended base images:**
176
+ | Language | Image | Notes |
177
+ |----------|-------|-------|
178
+ | Python | \`python:3.12-slim\` | Best balance of size/features |
179
+ | Node.js | \`node:20-alpine\` | Smallest, may need build tools |
180
+ | Ruby | \`ruby:3.2-slim\` | For Ruby tools |
181
+ | Go | \`golang:1.22-alpine\` | Compile in build step |
182
+ | Rust | \`rust:1.83-slim\` | Compile in build step |
183
+ | General | \`alpine:3.18\` | Minimal, use apk for packages |
184
+ | Debian | \`debian:bookworm-slim\` | More packages, larger |
185
+
186
+ **Images that may NOT work:**
187
+ - Distroless images (no shell)
188
+ - Scratch images (no shell)
189
+ - Some specialized images with custom entrypoints
190
+
191
+ **Debugging image issues:**
192
+ \`\`\`bash
193
+ # Test if an image works with Enact
194
+ enact exec . "echo test" # Run simple command in tool's container
195
+ enact run ./ --verbose # See detailed container output
196
+ \`\`\`
197
+
151
198
  ## File Access
152
199
 
153
200
  Tools run in a container with \`/workspace\` as the working directory. All source files are copied there.
@@ -212,7 +259,35 @@ Return JSON: {"issues": [...], "score": 75}
212
259
 
213
260
  \`\`\`bash
214
261
  enact run ./ --args '{"x": "y"}' --verbose # Verbose output
215
- enact run ./ --args '{}' --dry-run # Preview command
216
- enact list # List installed tools
262
+ enact run ./ --args '{}' --dry-run # Preview command without running
263
+ enact run ./ --args '{}' --debug # Show parameter resolution details
264
+ enact list # List installed tools
265
+ \`\`\`
266
+
267
+ **Common issues:**
268
+
269
+ | Issue | Solution |
270
+ |-------|----------|
271
+ | "Missing required parameter" | Check your \`required\` array in inputSchema |
272
+ | Parameters not substituting | Use \`--debug\` to see what values are being passed |
273
+ | Optional params failing | Add \`default\` values or handle empty strings |
274
+ | Build step fails | Use \`--verbose\` to see build output |
275
+ | Base image not working | Use recommended images (see Base Image Requirements) |
276
+ | Command exit code 2 | Check if command exists in the container |
277
+
278
+ **Debugging build failures:**
279
+ \`\`\`bash
280
+ enact run ./ --args '{}' --verbose # See build output
281
+ enact exec . "which python" # Check if command exists
282
+ enact exec . "ls /workspace" # Check file mounts
283
+ enact validate ./ # Validate SKILL.md structure
284
+ \`\`\`
285
+
286
+ **Multi-step builds:** Use YAML array syntax for clearer error reporting:
287
+ \`\`\`yaml
288
+ build:
289
+ - apk add --no-cache ruby ruby-dev
290
+ - gem install bundler
291
+ - bundle install
217
292
  \`\`\`
218
293
  `;
@@ -35,6 +35,7 @@ The `run` command executes a tool using the command defined in its manifest (`en
35
35
  | `--no-cache` | Disable container caching |
36
36
  | `--local` | Only resolve from local sources |
37
37
  | `--dry-run` | Show what would be executed without running |
38
+ | `--debug` | Show detailed parameter and environment resolution |
38
39
  | `-v, --verbose` | Show detailed output including stderr and timing |
39
40
  | `--json` | Output result as JSON |
40
41
 
@@ -67,6 +68,9 @@ enact run alice/utils/greeter --args '{"name":"World"}' --json
67
68
 
68
69
  # Verbose mode for debugging
69
70
  enact run alice/utils/greeter --args '{"name":"World"}' --verbose
71
+
72
+ # Debug parameter resolution
73
+ enact run alice/utils/greeter --args '{"name":"World"}' --debug
70
74
  ```
71
75
 
72
76
  ### Multiple inputs
@@ -158,6 +162,19 @@ When using `--dry-run`, the command shows:
158
162
  - Environment variables (secrets masked as `***`)
159
163
  - The interpolated command
160
164
 
165
+ ## Debug Output
166
+
167
+ When using `--debug`, the command shows detailed parameter resolution:
168
+
169
+ - Schema properties with types and required/optional status
170
+ - Raw inputs (exactly what was provided)
171
+ - Inputs after defaults were applied
172
+ - Final inputs after validation and type coercion
173
+ - Environment variables (sensitive values masked)
174
+ - The final interpolated command
175
+
176
+ This is useful for troubleshooting parameter issues and understanding how optional parameters are handled.
177
+
161
178
  ## Exit Codes
162
179
 
163
180
  | Code | Description |