@amsterdamdatalabs/enact-extensions 0.1.0 → 0.1.1
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 +94 -20
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/install.d.ts +89 -0
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +219 -18
- package/dist/install.js.map +1 -1
- package/dist/validate/index.d.ts +21 -0
- package/dist/validate/index.d.ts.map +1 -1
- package/dist/validate/index.js +77 -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/{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 +751 -16
- 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 +389 -0
- package/scripts/lib/ledger.mjs +162 -0
- package/scripts/lib/list-bundles.mjs +70 -0
- package/scripts/lib/outdated.mjs +144 -0
- package/scripts/lib/provision-mcp.mjs +369 -0
- package/scripts/lib/resolve-bundle.mjs +121 -0
- package/scripts/lib/run-install.mjs +321 -39
- package/scripts/lib/run-uninstall.mjs +220 -0
- package/scripts/lib/run-update.mjs +152 -0
- package/scripts/lib/run-validate.mjs +12 -18
- package/scripts/lib/serve.mjs +454 -0
- package/scripts/postinstall.mjs +63 -0
- package/scripts/setup-enact-context.sh +2 -2
- 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,233 @@
|
|
|
1
|
+
# GitHub Actions Integration for Plugins
|
|
2
|
+
|
|
3
|
+
Plugins interact with GitHub Actions through `claude-code-action`, Anthropic's official action for running Claude Code in CI workflows. Understanding this integration helps plugin developers ensure their plugins work seamlessly in automated pipelines.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The `claude-code-action@v1` runs Claude Code inside GitHub Actions, enabling:
|
|
8
|
+
|
|
9
|
+
- Automated code review on PRs
|
|
10
|
+
- Issue implementation from comments
|
|
11
|
+
- Custom automation triggered by @claude mentions
|
|
12
|
+
- Scheduled analysis and reporting
|
|
13
|
+
|
|
14
|
+
## Setup
|
|
15
|
+
|
|
16
|
+
### Quick Setup
|
|
17
|
+
|
|
18
|
+
From inside Claude Code:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
/install-github-app
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
This guides through installing the Claude GitHub app and configuring workflows.
|
|
25
|
+
|
|
26
|
+
### Manual Setup
|
|
27
|
+
|
|
28
|
+
1. Install the Claude GitHub App: `https://github.com/apps/claude`
|
|
29
|
+
2. Add `ANTHROPIC_API_KEY` to repository secrets
|
|
30
|
+
3. Create workflow file at `.github/workflows/claude.yml`
|
|
31
|
+
|
|
32
|
+
### Basic Workflow
|
|
33
|
+
|
|
34
|
+
```yaml
|
|
35
|
+
name: Claude Code
|
|
36
|
+
on:
|
|
37
|
+
issue_comment:
|
|
38
|
+
types: [created]
|
|
39
|
+
pull_request_review_comment:
|
|
40
|
+
types: [created]
|
|
41
|
+
|
|
42
|
+
jobs:
|
|
43
|
+
claude:
|
|
44
|
+
runs-on: ubuntu-latest
|
|
45
|
+
steps:
|
|
46
|
+
- uses: anthropics/claude-code-action@v1
|
|
47
|
+
with:
|
|
48
|
+
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## How Plugins Work in Actions
|
|
52
|
+
|
|
53
|
+
### CLAUDE.md Integration
|
|
54
|
+
|
|
55
|
+
The most direct way plugins interact with CI is through CLAUDE.md. Project-level instructions (`.claude/CLAUDE.md`) load automatically in CI runs, providing:
|
|
56
|
+
|
|
57
|
+
- Code style requirements
|
|
58
|
+
- Review criteria
|
|
59
|
+
- Project-specific rules
|
|
60
|
+
- Plugin references
|
|
61
|
+
|
|
62
|
+
### Hooks in CI
|
|
63
|
+
|
|
64
|
+
Plugin hooks execute in the CI environment:
|
|
65
|
+
|
|
66
|
+
- **Command hooks:** Run normally (ensure scripts are executable and dependencies available)
|
|
67
|
+
- **Prompt hooks:** Work as expected
|
|
68
|
+
- **SessionStart hooks:** Fire at the beginning of each CI run
|
|
69
|
+
- **Environment:** `$CI=true` is set, use for conditional logic
|
|
70
|
+
|
|
71
|
+
**CI-aware hook example:**
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
#!/bin/bash
|
|
75
|
+
# Skip interactive checks in CI
|
|
76
|
+
if [ "$CI" = "true" ]; then
|
|
77
|
+
echo '{"continue": true}'
|
|
78
|
+
exit 0
|
|
79
|
+
fi
|
|
80
|
+
# Full validation in local development
|
|
81
|
+
# ...
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Skills via prompt Parameter
|
|
85
|
+
|
|
86
|
+
Reference plugin skills in the workflow's `prompt` parameter:
|
|
87
|
+
|
|
88
|
+
```yaml
|
|
89
|
+
- uses: anthropics/claude-code-action@v1
|
|
90
|
+
with:
|
|
91
|
+
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
92
|
+
prompt: "Review this PR for security issues following our coding standards"
|
|
93
|
+
claude_args: "--max-turns 15"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Since slash commands don't work in headless mode, describe the task instead. If the skill has `user-invocable: false`, Claude will use it automatically based on context.
|
|
97
|
+
|
|
98
|
+
## Configuration Options
|
|
99
|
+
|
|
100
|
+
### Key Parameters
|
|
101
|
+
|
|
102
|
+
| Parameter | Purpose | Example |
|
|
103
|
+
| ------------------- | ----------------------- | -------------------------------------- |
|
|
104
|
+
| `prompt` | Instructions for Claude | `"Review this PR"` |
|
|
105
|
+
| `claude_args` | CLI arguments | `"--max-turns 10 --model haiku"` |
|
|
106
|
+
| `anthropic_api_key` | API key secret | `${{ secrets.ANTHROPIC_API_KEY }}` |
|
|
107
|
+
| `github_token` | GitHub API access | `${{ secrets.GITHUB_TOKEN }}` |
|
|
108
|
+
| `trigger_phrase` | Custom trigger | `"@review-bot"` (default: `"@claude"`) |
|
|
109
|
+
|
|
110
|
+
### claude_args for Plugin Control
|
|
111
|
+
|
|
112
|
+
Pass CLI flags through `claude_args`:
|
|
113
|
+
|
|
114
|
+
```yaml
|
|
115
|
+
claude_args: >-
|
|
116
|
+
--max-turns 20
|
|
117
|
+
--model claude-sonnet-4-5-20250929
|
|
118
|
+
--allowedTools "Read,Grep,Glob,Bash(npm:*)"
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Custom Trigger Phrases
|
|
122
|
+
|
|
123
|
+
Change the default `@claude` trigger:
|
|
124
|
+
|
|
125
|
+
```yaml
|
|
126
|
+
trigger_phrase: "@security-review"
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Users then mention `@security-review` in PR comments to trigger the workflow.
|
|
130
|
+
|
|
131
|
+
## Provider Configurations
|
|
132
|
+
|
|
133
|
+
### AWS Bedrock
|
|
134
|
+
|
|
135
|
+
```yaml
|
|
136
|
+
- uses: anthropics/claude-code-action@v1
|
|
137
|
+
with:
|
|
138
|
+
use_bedrock: "true"
|
|
139
|
+
claude_args: "--model us.anthropic.claude-sonnet-4-5-20250929-v1:0"
|
|
140
|
+
env:
|
|
141
|
+
AWS_ROLE_TO_ASSUME: ${{ secrets.AWS_ROLE_TO_ASSUME }}
|
|
142
|
+
AWS_REGION: us-east-1
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Requires AWS OIDC configuration with Bedrock permissions.
|
|
146
|
+
|
|
147
|
+
### Google Vertex AI
|
|
148
|
+
|
|
149
|
+
```yaml
|
|
150
|
+
- uses: anthropics/claude-code-action@v1
|
|
151
|
+
with:
|
|
152
|
+
use_vertex: "true"
|
|
153
|
+
claude_args: "--model claude-sonnet-4@20250514"
|
|
154
|
+
env:
|
|
155
|
+
ANTHROPIC_VERTEX_PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }}
|
|
156
|
+
CLOUD_ML_REGION: us-east5
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Requires GCP Workload Identity Federation.
|
|
160
|
+
|
|
161
|
+
## Cost Management
|
|
162
|
+
|
|
163
|
+
### Limit Turns
|
|
164
|
+
|
|
165
|
+
```yaml
|
|
166
|
+
claude_args: "--max-turns 10"
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Each tool call is one turn. Start low and increase as needed.
|
|
170
|
+
|
|
171
|
+
### Use Cheaper Models
|
|
172
|
+
|
|
173
|
+
```yaml
|
|
174
|
+
claude_args: "--model haiku"
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Use Haiku for routine checks, Sonnet for standard reviews, Opus for complex analysis.
|
|
178
|
+
|
|
179
|
+
### Set Workflow Timeouts
|
|
180
|
+
|
|
181
|
+
```yaml
|
|
182
|
+
jobs:
|
|
183
|
+
claude:
|
|
184
|
+
runs-on: ubuntu-latest
|
|
185
|
+
timeout-minutes: 15
|
|
186
|
+
steps:
|
|
187
|
+
- uses: anthropics/claude-code-action@v1
|
|
188
|
+
# ...
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Restrict Tool Access
|
|
192
|
+
|
|
193
|
+
```yaml
|
|
194
|
+
claude_args: "--allowedTools 'Read,Grep,Glob'"
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Read-only tools prevent expensive write/execute loops.
|
|
198
|
+
|
|
199
|
+
## Plugin Design for CI
|
|
200
|
+
|
|
201
|
+
### Document CI Workflows
|
|
202
|
+
|
|
203
|
+
Include example workflow snippets in your plugin README:
|
|
204
|
+
|
|
205
|
+
```markdown
|
|
206
|
+
## GitHub Actions Usage
|
|
207
|
+
|
|
208
|
+
Add to `.github/workflows/claude.yml`:
|
|
209
|
+
|
|
210
|
+
\`\`\`yaml
|
|
211
|
+
|
|
212
|
+
- uses: anthropics/claude-code-action@v1
|
|
213
|
+
with:
|
|
214
|
+
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
215
|
+
prompt: "Analyze code using [your-plugin] standards"
|
|
216
|
+
claude_args: "--max-turns 15 --allowedTools 'Read,Grep,Glob'"
|
|
217
|
+
\`\`\`
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Ensure CI Compatibility
|
|
221
|
+
|
|
222
|
+
- Test hooks with `CI=true` environment variable
|
|
223
|
+
- Ensure scripts don't require interactive input
|
|
224
|
+
- Handle missing dependencies gracefully (not all CI images have `jq`, etc.)
|
|
225
|
+
- Use `${CLAUDE_PLUGIN_ROOT}` for all paths (cache directories differ in CI)
|
|
226
|
+
|
|
227
|
+
### MCP Servers in CI
|
|
228
|
+
|
|
229
|
+
MCP servers bundled with plugins start in CI, but:
|
|
230
|
+
|
|
231
|
+
- OAuth-based servers won't have tokens (configure environment variables instead)
|
|
232
|
+
- Local stdio servers need their dependencies installed in the CI image
|
|
233
|
+
- Document required CI setup in README
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# Headless & CI Mode Plugin Compatibility
|
|
2
|
+
|
|
3
|
+
Plugins behave differently in headless mode (`claude -p`) versus interactive sessions. Understanding these differences is critical for building plugins that work reliably across all runtime contexts.
|
|
4
|
+
|
|
5
|
+
## Headless Mode Basics
|
|
6
|
+
|
|
7
|
+
Headless mode executes Claude Code as a single-shot command-line tool:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
claude -p "Analyze this codebase for security issues" --allowedTools "Read,Grep,Glob"
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### What Works in Headless Mode
|
|
14
|
+
|
|
15
|
+
- **Hooks:** Command hooks execute normally. Prompt hooks work for supported events.
|
|
16
|
+
- **MCP servers:** Start and connect as usual. Tools are available.
|
|
17
|
+
- **CLAUDE.md:** Project and user memory files load normally.
|
|
18
|
+
- **Agents:** Can be spawned via Task tool during execution.
|
|
19
|
+
- **Skills (as context):** Skill content with `user-invocable: false` loads into context and is available for Claude to use.
|
|
20
|
+
|
|
21
|
+
### What Does NOT Work in Headless Mode
|
|
22
|
+
|
|
23
|
+
- **Slash commands:** `/skill-name` invocation requires an interactive session. Skills cannot be invoked via slash commands in `-p` mode.
|
|
24
|
+
- **Interactive prompts:** `AskUserQuestion` tool is not available — there's no user to answer.
|
|
25
|
+
- **Skill tool (manual):** Users can't type `/` to invoke skills. Instead, describe the task and let Claude use the skill content if loaded.
|
|
26
|
+
|
|
27
|
+
### Workaround for Skills
|
|
28
|
+
|
|
29
|
+
Instead of invoking `/review` in headless mode, describe the task:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Won't work:
|
|
33
|
+
claude -p "/review"
|
|
34
|
+
|
|
35
|
+
# Works — describe what you want:
|
|
36
|
+
claude -p "Review the codebase for code quality issues"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
If the skill has `user-invocable: false` and is loaded via plugin, Claude can still use its knowledge automatically.
|
|
40
|
+
|
|
41
|
+
## Permission Control
|
|
42
|
+
|
|
43
|
+
### --allowedTools
|
|
44
|
+
|
|
45
|
+
Auto-approve specific tools without interactive prompts:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
claude -p "Fix the bug" --allowedTools "Read,Write,Edit,Bash(git *)"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Permission rule syntax:**
|
|
52
|
+
|
|
53
|
+
| Pattern | Matches |
|
|
54
|
+
| ---------------------- | ------------------------------------------------------------ |
|
|
55
|
+
| `Read` | All Read tool calls |
|
|
56
|
+
| `Bash(git *)` | Bash commands starting with "git " (prefix match with space) |
|
|
57
|
+
| `mcp__*` | All MCP tool calls |
|
|
58
|
+
| `mcp__plugin_myplug_*` | Tools from a specific plugin's MCP server |
|
|
59
|
+
| `Write,Edit` | Multiple tools (comma-separated) |
|
|
60
|
+
|
|
61
|
+
**Plugin design tip:** Document recommended `--allowedTools` values in your plugin README for CI usage.
|
|
62
|
+
|
|
63
|
+
### --max-turns
|
|
64
|
+
|
|
65
|
+
Limit autonomous tool-use iterations to control cost and runtime:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
claude -p "Run tests and fix failures" --allowedTools "Read,Edit,Bash" --max-turns 10
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Each tool call counts as one turn. Without this limit, Claude may iterate indefinitely on complex tasks.
|
|
72
|
+
|
|
73
|
+
## Structured Output
|
|
74
|
+
|
|
75
|
+
### JSON Output
|
|
76
|
+
|
|
77
|
+
Get machine-readable responses:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
claude -p "List all TODO comments" --output-format json
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Returns:
|
|
84
|
+
|
|
85
|
+
```json
|
|
86
|
+
{
|
|
87
|
+
"result": "Found 5 TODO comments...",
|
|
88
|
+
"session_id": "abc123",
|
|
89
|
+
"metadata": { ... }
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### JSON Schema Validation
|
|
94
|
+
|
|
95
|
+
Enforce a specific output structure:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
claude -p "Extract function signatures from auth.py" \
|
|
99
|
+
--output-format json \
|
|
100
|
+
--json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Plugin design tip:** If your plugin provides analysis workflows, document example JSON schemas users can use for structured CI output.
|
|
104
|
+
|
|
105
|
+
## System Prompt Interaction
|
|
106
|
+
|
|
107
|
+
### --append-system-prompt
|
|
108
|
+
|
|
109
|
+
Add instructions alongside the default system prompt (and any loaded plugin content):
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
claude -p "Review code" --append-system-prompt "Focus on security vulnerabilities only"
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Plugin skill content loads before system prompt overrides. The append adds to (not replaces) existing context.
|
|
116
|
+
|
|
117
|
+
### --system-prompt
|
|
118
|
+
|
|
119
|
+
Replace the default system prompt entirely:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
claude -p "Analyze" --system-prompt "You are a security auditor..."
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**Caution:** This replaces the default prompt but plugin content still loads. The interaction between `--system-prompt` and plugin skills may produce unexpected behavior.
|
|
126
|
+
|
|
127
|
+
## Session Management
|
|
128
|
+
|
|
129
|
+
### Continue Last Session
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
claude -p "What was the last change you made?" --continue
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Resume Specific Session
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
claude -p "Continue fixing the auth bug" --resume "$SESSION_ID"
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Plugin state (hooks, MCP servers, skill context) reloads when resuming a session.
|
|
142
|
+
|
|
143
|
+
## Plugin Design Guidelines for CI Compatibility
|
|
144
|
+
|
|
145
|
+
### 1. Test in Headless Mode
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
# Test your plugin works in non-interactive mode
|
|
149
|
+
claude -p "Run the plugin's primary workflow" \
|
|
150
|
+
--plugin-dir /path/to/plugin \
|
|
151
|
+
--allowedTools "Read,Write,Edit,Bash"
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### 2. Avoid Interactive-Only Patterns
|
|
155
|
+
|
|
156
|
+
- Don't rely on `AskUserQuestion` for critical workflows
|
|
157
|
+
- Provide sensible defaults when user input is unavailable
|
|
158
|
+
- Design hooks that work without user confirmation
|
|
159
|
+
|
|
160
|
+
### 3. Document CI Usage
|
|
161
|
+
|
|
162
|
+
Include a CI section in your plugin README:
|
|
163
|
+
|
|
164
|
+
```markdown
|
|
165
|
+
## CI/Headless Usage
|
|
166
|
+
|
|
167
|
+
This plugin works in headless mode. Example:
|
|
168
|
+
|
|
169
|
+
\`\`\`bash
|
|
170
|
+
claude -p "Run security audit" \
|
|
171
|
+
--allowedTools "Read,Grep,Glob,Bash(npm:\*)" \
|
|
172
|
+
--max-turns 20 \
|
|
173
|
+
--output-format json
|
|
174
|
+
\`\`\`
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### 4. Handle Missing Environment Gracefully
|
|
178
|
+
|
|
179
|
+
In CI environments, some tools or context may be unavailable:
|
|
180
|
+
|
|
181
|
+
- MCP servers may not have authentication tokens
|
|
182
|
+
- Git history may be shallow clones
|
|
183
|
+
- Environment variables may differ from local dev
|
|
184
|
+
|
|
185
|
+
Design hooks and skills to handle these cases without failing hard.
|
|
186
|
+
|
|
187
|
+
### 5. Cost-Conscious Design
|
|
188
|
+
|
|
189
|
+
CI runs can accumulate significant API costs. Help users control spending:
|
|
190
|
+
|
|
191
|
+
- Recommend `--max-turns` values for common workflows
|
|
192
|
+
- Use `haiku` model for simple analysis skills
|
|
193
|
+
- Document expected token usage for key workflows
|