@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.
Files changed (245) hide show
  1. package/README.md +96 -21
  2. package/dist/index.d.ts +5 -3
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +3 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/install.d.ts +171 -1
  7. package/dist/install.d.ts.map +1 -1
  8. package/dist/install.js +402 -49
  9. package/dist/install.js.map +1 -1
  10. package/dist/internal/codex.d.ts.map +1 -1
  11. package/dist/internal/codex.js +7 -1
  12. package/dist/internal/codex.js.map +1 -1
  13. package/dist/internal/platform.d.ts +8 -0
  14. package/dist/internal/platform.d.ts.map +1 -1
  15. package/dist/internal/platform.js +46 -2
  16. package/dist/internal/platform.js.map +1 -1
  17. package/dist/provision.d.ts +30 -0
  18. package/dist/provision.d.ts.map +1 -0
  19. package/dist/provision.js +202 -0
  20. package/dist/provision.js.map +1 -0
  21. package/dist/validate/index.d.ts +44 -0
  22. package/dist/validate/index.d.ts.map +1 -1
  23. package/dist/validate/index.js +157 -0
  24. package/dist/validate/index.js.map +1 -1
  25. package/extensions/cmux/.agents/plugin.json +37 -0
  26. package/extensions/cmux/skills/cmux/SKILL.md +82 -0
  27. package/extensions/cmux/skills/cmux/agents/openai.yaml +4 -0
  28. package/extensions/cmux/skills/cmux/references/handles-and-identify.md +35 -0
  29. package/extensions/cmux/skills/cmux/references/panes-surfaces.md +37 -0
  30. package/extensions/cmux/skills/cmux/references/trigger-flash-and-health.md +23 -0
  31. package/extensions/cmux/skills/cmux/references/windows-workspaces.md +31 -0
  32. package/extensions/cmux/skills/cmux-vm-monitor/SKILL.md +122 -0
  33. package/extensions/cmux/skills/cmux-vm-monitor/agents/openai.yaml +4 -0
  34. package/extensions/cmux/skills/cmux-vm-monitor/references/cmux-commands.md +66 -0
  35. package/extensions/cmux/skills/cmux-vm-monitor/scripts/codex_vm_monitor.sh +45 -0
  36. package/extensions/cmux/skills/cmux-workspace/SKILL.md +93 -0
  37. package/extensions/dev-state/.agents/plugin.json +35 -0
  38. package/extensions/dev-state/skills/dev-state-plan-graduation/SKILL.md +194 -0
  39. package/extensions/dev-state/skills/dev-state-plan-graduation/agents/openai.yaml +4 -0
  40. package/extensions/dev-state/skills/dev-state-plan-graduation/references/reference.md +130 -0
  41. package/extensions/devops/.agents/plugin.json +36 -0
  42. package/extensions/devops/skills/azure-devops-cli/SKILL.md +431 -0
  43. package/extensions/devops/skills/azure-devops-cli/agents/openai.yaml +4 -0
  44. package/extensions/devops/skills/ci-pipeline-strategy/SKILL.md +217 -0
  45. package/extensions/devops/skills/ci-pipeline-strategy/agents/openai.yaml +4 -0
  46. package/extensions/enact-context/.agents/plugin.json +40 -0
  47. package/extensions/enact-context/.mcp.json +8 -0
  48. package/extensions/enact-context/README.md +25 -0
  49. package/extensions/enact-context/assets/icon.png +0 -0
  50. package/extensions/enact-context/assets/logo.png +0 -0
  51. package/extensions/enact-context/hooks/hooks.json +115 -0
  52. package/extensions/enact-context/skills/enact-context/SKILL.md +149 -0
  53. package/extensions/enact-context/skills/enact-context/scripts/install.sh +69 -0
  54. package/extensions/enact-factory/.agents/plugin.json +42 -0
  55. package/extensions/enact-factory/.mcp.json +8 -0
  56. package/extensions/enact-factory/assets/icon.png +0 -0
  57. package/extensions/enact-factory/assets/logo.png +0 -0
  58. package/extensions/enact-factory/hooks/user-prompt-submit.mjs +67 -0
  59. package/extensions/enact-factory/skills/testing-strategy/SKILL.md +167 -0
  60. package/extensions/enact-factory/skills/workitem-triage/SKILL.md +22 -0
  61. package/extensions/enact-operator/.agents/plugin.json +57 -0
  62. package/extensions/enact-operator/.app.json +3 -0
  63. package/extensions/enact-operator/.mcp.json +10 -0
  64. package/extensions/enact-operator/_taxonomy.md +86 -0
  65. package/extensions/enact-operator/agents/README.md +5 -0
  66. package/extensions/enact-operator/agents/architect.toml +25 -0
  67. package/extensions/enact-operator/agents/code-reviewer.toml +24 -0
  68. package/extensions/enact-operator/agents/critic.toml +30 -0
  69. package/extensions/enact-operator/agents/executor.toml +24 -0
  70. package/extensions/enact-operator/agents/explore.toml +23 -0
  71. package/extensions/enact-operator/agents/planner.toml +24 -0
  72. package/extensions/enact-operator/agents/verifier.toml +24 -0
  73. package/extensions/enact-operator/assets/icon.png +0 -0
  74. package/extensions/enact-operator/assets/logo.png +0 -0
  75. package/extensions/enact-operator/commands/doctor.md +39 -0
  76. package/extensions/enact-operator/commands/setup.md +51 -0
  77. package/extensions/enact-operator/hooks/hooks.json +146 -0
  78. package/extensions/enact-operator/skills/_variants.md +44 -0
  79. package/extensions/enact-operator/skills/ai-slop-cleaner/SKILL.md +50 -0
  80. package/extensions/enact-operator/skills/analyze/SKILL.md +91 -0
  81. package/extensions/enact-operator/skills/ask/SKILL.md +47 -0
  82. package/extensions/enact-operator/skills/autopilot/SKILL.md +170 -0
  83. package/extensions/enact-operator/skills/autoresearch-goal/SKILL.md +79 -0
  84. package/extensions/enact-operator/skills/cancel/SKILL.md +99 -0
  85. package/extensions/enact-operator/skills/configure-notifications/SKILL.md +77 -0
  86. package/extensions/enact-operator/skills/deep-interview/SKILL.md +80 -0
  87. package/extensions/enact-operator/skills/doctor/SKILL.md +48 -0
  88. package/extensions/enact-operator/skills/hud/SKILL.md +49 -0
  89. package/extensions/enact-operator/skills/hyperplan/SKILL.md +47 -0
  90. package/extensions/enact-operator/skills/plan/SKILL.md +78 -0
  91. package/extensions/enact-operator/skills/ralph/SKILL.md +201 -0
  92. package/extensions/enact-operator/skills/ralph/gemini.md +18 -0
  93. package/extensions/enact-operator/skills/ralplan/SKILL.md +151 -0
  94. package/extensions/enact-operator/skills/remove-deadcode/SKILL.md +45 -0
  95. package/extensions/enact-operator/skills/research/SKILL.md +74 -0
  96. package/extensions/enact-operator/skills/review/SKILL.md +58 -0
  97. package/extensions/enact-operator/skills/security-research/SKILL.md +54 -0
  98. package/extensions/enact-operator/skills/setup/SKILL.md +91 -0
  99. package/extensions/enact-operator/skills/setup/scripts/install.sh +50 -0
  100. package/extensions/enact-operator/skills/skill/SKILL.md +82 -0
  101. package/extensions/enact-operator/skills/tdd/SKILL.md +59 -0
  102. package/extensions/enact-operator/skills/team/SKILL.md +199 -0
  103. package/extensions/enact-operator/skills/trace/SKILL.md +41 -0
  104. package/extensions/enact-operator/skills/ultragoal/SKILL.md +99 -0
  105. package/extensions/enact-operator/skills/ultraqa/SKILL.md +113 -0
  106. package/extensions/enact-operator/skills/ultrawork/SKILL.md +145 -0
  107. package/extensions/enact-operator/skills/ultrawork/planner.md +28 -0
  108. package/extensions/enact-operator/skills/wiki/SKILL.md +41 -0
  109. package/extensions/enact-operator/skills/work-with-workitem/SKILL.md +51 -0
  110. package/extensions/enact-wiki/.agents/plugin.json +42 -0
  111. package/extensions/enact-wiki/.mcp.json +15 -0
  112. package/extensions/enact-wiki/README.md +44 -0
  113. package/extensions/enact-wiki/assets/icon.png +0 -0
  114. package/extensions/enact-wiki/assets/logo.png +0 -0
  115. package/extensions/enact-wiki/skills/document-parser/SKILL.md +17 -0
  116. package/extensions/enact-wiki/skills/document-parser/scripts/parse.sh +60 -0
  117. package/extensions/enact-wiki/skills/document-parser/skill.json +9 -0
  118. package/extensions/enact-wiki/skills/enact-wiki/SKILL.md +30 -0
  119. package/extensions/enact-wiki/skills/enact-wiki/references/ingest.md +62 -0
  120. package/extensions/enact-wiki/skills/enact-wiki/references/manage.md +34 -0
  121. package/extensions/enact-wiki/skills/enact-wiki/references/query.md +59 -0
  122. package/extensions/enact-wiki/skills/search-lab/SKILL.md +57 -0
  123. package/extensions/enact-wiki/skills/search-lab/scripts/analyze.ts +23 -0
  124. package/{plugins/net-revenue-management/.codex-plugin → extensions/net-revenue-management/.agents}/plugin.json +10 -6
  125. package/extensions/plugin-dev/.agents/plugin.json +42 -0
  126. package/extensions/plugin-dev/.mcp.json +3 -0
  127. package/extensions/plugin-dev/agents/agent-creator.md +199 -0
  128. package/extensions/plugin-dev/agents/plugin-validator.md +91 -0
  129. package/extensions/plugin-dev/agents/skill-reviewer.md +212 -0
  130. package/extensions/plugin-dev/commands/_archive/create-marketplace.md +427 -0
  131. package/extensions/plugin-dev/commands/_archive/plugin-dev-guide.md +12 -0
  132. package/extensions/plugin-dev/commands/create-plugin.md +498 -0
  133. package/extensions/plugin-dev/commands/start.md +81 -0
  134. package/extensions/plugin-dev/hooks/hooks.json +3 -0
  135. package/extensions/plugin-dev/skills/agent-development/SKILL.md +641 -0
  136. package/extensions/plugin-dev/skills/agent-development/examples/agent-creation-prompt.md +250 -0
  137. package/extensions/plugin-dev/skills/agent-development/examples/complete-agent-examples.md +461 -0
  138. package/extensions/plugin-dev/skills/agent-development/references/advanced-agent-fields.md +246 -0
  139. package/extensions/plugin-dev/skills/agent-development/references/agent-creation-system-prompt.md +216 -0
  140. package/extensions/plugin-dev/skills/agent-development/references/permission-modes-rules.md +226 -0
  141. package/extensions/plugin-dev/skills/agent-development/references/system-prompt-design.md +464 -0
  142. package/extensions/plugin-dev/skills/agent-development/references/triggering-examples.md +474 -0
  143. package/extensions/plugin-dev/skills/agent-development/scripts/create-agent-skeleton.sh +176 -0
  144. package/extensions/plugin-dev/skills/agent-development/scripts/test-agent-trigger.sh +227 -0
  145. package/extensions/plugin-dev/skills/agent-development/scripts/validate-agent.sh +227 -0
  146. package/extensions/plugin-dev/skills/command-development/SKILL.md +763 -0
  147. package/extensions/plugin-dev/skills/command-development/examples/plugin-commands.md +612 -0
  148. package/extensions/plugin-dev/skills/command-development/examples/simple-commands.md +527 -0
  149. package/extensions/plugin-dev/skills/command-development/references/advanced-workflows.md +762 -0
  150. package/extensions/plugin-dev/skills/command-development/references/documentation-patterns.md +769 -0
  151. package/extensions/plugin-dev/skills/command-development/references/frontmatter-reference.md +508 -0
  152. package/extensions/plugin-dev/skills/command-development/references/interactive-commands.md +966 -0
  153. package/extensions/plugin-dev/skills/command-development/references/marketplace-considerations.md +943 -0
  154. package/extensions/plugin-dev/skills/command-development/references/plugin-features-reference.md +637 -0
  155. package/extensions/plugin-dev/skills/command-development/references/plugin-integration.md +191 -0
  156. package/extensions/plugin-dev/skills/command-development/references/skill-tool.md +447 -0
  157. package/extensions/plugin-dev/skills/command-development/references/testing-strategies.md +723 -0
  158. package/extensions/plugin-dev/skills/command-development/scripts/check-frontmatter.sh +234 -0
  159. package/extensions/plugin-dev/skills/command-development/scripts/validate-command.sh +160 -0
  160. package/extensions/plugin-dev/skills/hook-development/SKILL.md +861 -0
  161. package/extensions/plugin-dev/skills/hook-development/examples/load-context.sh +55 -0
  162. package/extensions/plugin-dev/skills/hook-development/examples/validate-bash.sh +57 -0
  163. package/extensions/plugin-dev/skills/hook-development/examples/validate-write.sh +48 -0
  164. package/extensions/plugin-dev/skills/hook-development/references/advanced.md +871 -0
  165. package/extensions/plugin-dev/skills/hook-development/references/hook-input-schemas.md +145 -0
  166. package/extensions/plugin-dev/skills/hook-development/references/migration.md +392 -0
  167. package/extensions/plugin-dev/skills/hook-development/references/patterns.md +430 -0
  168. package/extensions/plugin-dev/skills/hook-development/scripts/README.md +181 -0
  169. package/extensions/plugin-dev/skills/hook-development/scripts/hook-linter.sh +153 -0
  170. package/extensions/plugin-dev/skills/hook-development/scripts/test-hook.sh +276 -0
  171. package/extensions/plugin-dev/skills/hook-development/scripts/validate-hook-schema.sh +159 -0
  172. package/extensions/plugin-dev/skills/mcp-integration/SKILL.md +775 -0
  173. package/extensions/plugin-dev/skills/mcp-integration/examples/http-server.json +20 -0
  174. package/extensions/plugin-dev/skills/mcp-integration/examples/sse-server.json +19 -0
  175. package/extensions/plugin-dev/skills/mcp-integration/examples/stdio-server.json +38 -0
  176. package/extensions/plugin-dev/skills/mcp-integration/examples/ws-server.json +26 -0
  177. package/extensions/plugin-dev/skills/mcp-integration/references/authentication.md +601 -0
  178. package/extensions/plugin-dev/skills/mcp-integration/references/server-discovery.md +190 -0
  179. package/extensions/plugin-dev/skills/mcp-integration/references/server-types.md +572 -0
  180. package/extensions/plugin-dev/skills/mcp-integration/references/tool-usage.md +623 -0
  181. package/extensions/plugin-dev/skills/plugin-dev-guide/SKILL.md +222 -0
  182. package/extensions/plugin-dev/skills/plugin-structure/SKILL.md +705 -0
  183. package/extensions/plugin-dev/skills/plugin-structure/examples/advanced-plugin.md +774 -0
  184. package/extensions/plugin-dev/skills/plugin-structure/examples/minimal-plugin.md +83 -0
  185. package/extensions/plugin-dev/skills/plugin-structure/examples/standard-plugin.md +611 -0
  186. package/extensions/plugin-dev/skills/plugin-structure/references/advanced-topics.md +289 -0
  187. package/extensions/plugin-dev/skills/plugin-structure/references/component-patterns.md +592 -0
  188. package/extensions/plugin-dev/skills/plugin-structure/references/github-actions.md +233 -0
  189. package/extensions/plugin-dev/skills/plugin-structure/references/headless-ci-mode.md +193 -0
  190. package/extensions/plugin-dev/skills/plugin-structure/references/manifest-reference.md +625 -0
  191. package/extensions/plugin-dev/skills/plugin-structure/references/output-styles.md +116 -0
  192. package/extensions/plugin-dev/skills/skill-development/SKILL.md +564 -0
  193. package/extensions/plugin-dev/skills/skill-development/examples/complete-skill.md +465 -0
  194. package/extensions/plugin-dev/skills/skill-development/examples/frontmatter-templates.md +167 -0
  195. package/extensions/plugin-dev/skills/skill-development/examples/minimal-skill.md +111 -0
  196. package/extensions/plugin-dev/skills/skill-development/references/advanced-frontmatter.md +225 -0
  197. package/extensions/plugin-dev/skills/skill-development/references/commands-vs-skills.md +39 -0
  198. package/extensions/plugin-dev/skills/skill-development/references/skill-creation-workflow.md +379 -0
  199. package/extensions/plugin-dev/skills/skill-development/references/skill-creator-original.md +210 -0
  200. package/package.json +8 -11
  201. package/scripts/enact-extensions.mjs +823 -21
  202. package/scripts/hooks/session-start-drift-check.mjs +58 -0
  203. package/scripts/lib/build-index.mjs +50 -0
  204. package/scripts/lib/bundle-hash.mjs +137 -0
  205. package/scripts/lib/hooks.mjs +741 -0
  206. package/scripts/lib/ledger.mjs +163 -0
  207. package/scripts/lib/list-bundles.mjs +70 -0
  208. package/scripts/lib/outdated.mjs +144 -0
  209. package/scripts/lib/provision-mcp.mjs +16 -0
  210. package/scripts/lib/resolve-bundle.mjs +121 -0
  211. package/scripts/lib/run-install.mjs +402 -38
  212. package/scripts/lib/run-prune.mjs +73 -0
  213. package/scripts/lib/run-sync.mjs +9 -1
  214. package/scripts/lib/run-uninstall.mjs +244 -0
  215. package/scripts/lib/run-update.mjs +152 -0
  216. package/scripts/lib/run-validate.mjs +21 -18
  217. package/scripts/lib/serve.mjs +472 -0
  218. package/scripts/postinstall.mjs +63 -0
  219. package/scripts/setup-enact-context.sh +2 -2
  220. package/scripts/version-bump.sh +463 -0
  221. package/spec/codex.json +1 -11
  222. package/spec/index.json +59 -0
  223. package/web/assets/README.md +111 -0
  224. package/web/assets/logo-full.png +0 -0
  225. package/web/assets/logo-slim.png +0 -0
  226. package/web/assets/tokens/base.css +45 -0
  227. package/web/assets/tokens/colors.css +248 -0
  228. package/web/assets/tokens/effects.css +24 -0
  229. package/web/assets/tokens/fonts.css +8 -0
  230. package/web/assets/tokens/index.css +18 -0
  231. package/web/assets/tokens/spacing.css +50 -0
  232. package/web/index.html +1188 -0
  233. package/.agents/plugins/marketplace.json +0 -20
  234. package/catalog/enact-context.json +0 -9
  235. package/catalog/enact-factory.json +0 -7
  236. package/catalog/enact-operator.json +0 -7
  237. package/catalog/enact-wiki.json +0 -7
  238. package/catalog/net-revenue-management.json +0 -8
  239. package/scripts/rename-supervisor-to-operator.pl +0 -66
  240. package/scripts/sync-manifests.mjs +0 -23
  241. package/scripts/validate-catalog.mjs +0 -37
  242. package/scripts/validate-plugin.mjs +0 -10
  243. /package/{plugins → extensions}/net-revenue-management/.mcp.json +0 -0
  244. /package/{plugins → extensions}/net-revenue-management/skills/net-revenue-risks/SKILL.md +0 -0
  245. /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