From f341cbf91be4b1732a008e88dc1ebdc1113eb14f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 7 Feb 2026 15:26:16 +0000 Subject: [PATCH 01/11] Initial plan From 7f1704f1ceb59a6f64720412e8757719c587041f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 7 Feb 2026 15:32:57 +0000 Subject: [PATCH 02/11] Add anthropics/claude-code plugin to smoke workflows Co-authored-by: patrickcarnahan <17889693+patrickcarnahan@users.noreply.github.com> --- .github/workflows/smoke-claude.lock.yml | 9 +++++++-- .github/workflows/smoke-claude.md | 2 ++ .github/workflows/smoke-codex.lock.yml | 9 +++++++-- .github/workflows/smoke-codex.md | 2 ++ .github/workflows/smoke-copilot.lock.yml | 11 ++++++++--- .github/workflows/smoke-copilot.md | 2 ++ .github/workflows/smoke-opencode.lock.yml | 2 +- .github/workflows/smoke-opencode.md | 2 ++ .github/workflows/smoke-project.lock.yml | 9 +++++++-- .github/workflows/smoke-project.md | 2 ++ .github/workflows/smoke-test-tools.lock.yml | 11 ++++++++--- .github/workflows/smoke-test-tools.md | 2 ++ 12 files changed, 50 insertions(+), 13 deletions(-) diff --git a/.github/workflows/smoke-claude.lock.yml b/.github/workflows/smoke-claude.lock.yml index 78723dff4e..c5b56e4d78 100644 --- a/.github/workflows/smoke-claude.lock.yml +++ b/.github/workflows/smoke-claude.lock.yml @@ -31,7 +31,7 @@ # - shared/mcp/tavily.md # - shared/reporting.md # -# frontmatter-hash: 78071d0b5aa3dd18c2e0a148703429c5c3859fc89d33b92309116cbbfdcd314c +# frontmatter-hash: 79ca466b4cb54ff771714f9c9f8810b3afd8b06b11549231951fe66cda5a5dd2 name: "Smoke Claude" "on": @@ -232,6 +232,10 @@ jobs: run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 - name: Install Claude Code CLI run: npm install -g --silent @anthropic-ai/claude-code@2.1.34 + - name: 'Install plugin: anthropics/claude-code' + env: + GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + run: claude plugin install anthropics/claude-code - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: @@ -1785,11 +1789,12 @@ jobs: const { main } = require('/opt/gh-aw/actions/redact_secrets.cjs'); await main(); env: - GH_AW_SECRET_NAMES: 'ANTHROPIC_API_KEY,CLAUDE_CODE_OAUTH_TOKEN,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GITHUB_TOKEN,TAVILY_API_KEY' + GH_AW_SECRET_NAMES: 'ANTHROPIC_API_KEY,CLAUDE_CODE_OAUTH_TOKEN,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GH_AW_PLUGINS_TOKEN,GITHUB_TOKEN,TAVILY_API_KEY' SECRET_ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} SECRET_CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} SECRET_GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }} SECRET_GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }} + SECRET_GH_AW_PLUGINS_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN }} SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SECRET_TAVILY_API_KEY: ${{ secrets.TAVILY_API_KEY }} - name: Upload Safe Outputs diff --git a/.github/workflows/smoke-claude.md b/.github/workflows/smoke-claude.md index fad5b3daa2..c73660737c 100644 --- a/.github/workflows/smoke-claude.md +++ b/.github/workflows/smoke-claude.md @@ -18,6 +18,8 @@ name: Smoke Claude engine: id: claude max-turns: 15 +plugins: + - anthropics/claude-code strict: true imports: - shared/mcp-pagination.md diff --git a/.github/workflows/smoke-codex.lock.yml b/.github/workflows/smoke-codex.lock.yml index b7a58aa9a8..393d16ac5f 100644 --- a/.github/workflows/smoke-codex.lock.yml +++ b/.github/workflows/smoke-codex.lock.yml @@ -28,7 +28,7 @@ # - shared/mcp/tavily.md # - shared/reporting.md # -# frontmatter-hash: 5691d6b2fb5b4a342e31efa58f8a1323febdcf304084799dd7071dafaecb5ee0 +# frontmatter-hash: ffdd95802f1401c975c8372cdae62924fdf1f2b660f8d9d8f1cd1d7e6564ca7a name: "Smoke Codex" "on": @@ -198,6 +198,10 @@ jobs: run: npm install -g --silent @openai/codex@0.98.0 - name: Install awf binary run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 + - name: 'Install plugin: anthropics/claude-code' + env: + GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + run: codex plugin install anthropics/claude-code - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: @@ -1539,10 +1543,11 @@ jobs: const { main } = require('/opt/gh-aw/actions/redact_secrets.cjs'); await main(); env: - GH_AW_SECRET_NAMES: 'CODEX_API_KEY,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GITHUB_TOKEN,OPENAI_API_KEY,TAVILY_API_KEY' + GH_AW_SECRET_NAMES: 'CODEX_API_KEY,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GH_AW_PLUGINS_TOKEN,GITHUB_TOKEN,OPENAI_API_KEY,TAVILY_API_KEY' SECRET_CODEX_API_KEY: ${{ secrets.CODEX_API_KEY }} SECRET_GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }} SECRET_GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }} + SECRET_GH_AW_PLUGINS_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN }} SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SECRET_OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} SECRET_TAVILY_API_KEY: ${{ secrets.TAVILY_API_KEY }} diff --git a/.github/workflows/smoke-codex.md b/.github/workflows/smoke-codex.md index e6b7266b58..b19165865f 100644 --- a/.github/workflows/smoke-codex.md +++ b/.github/workflows/smoke-codex.md @@ -14,6 +14,8 @@ permissions: discussions: read name: Smoke Codex engine: codex +plugins: + - anthropics/claude-code strict: true imports: - shared/gh.md diff --git a/.github/workflows/smoke-copilot.lock.yml b/.github/workflows/smoke-copilot.lock.yml index a2c007fbec..a22736b83c 100644 --- a/.github/workflows/smoke-copilot.lock.yml +++ b/.github/workflows/smoke-copilot.lock.yml @@ -27,7 +27,7 @@ # - shared/github-queries-safe-input.md # - shared/reporting.md # -# frontmatter-hash: df8bdffae79339d3f5310982a1b77d3b57f5a89c9ac800b357ace0c79f9cb682 +# frontmatter-hash: 97ed96f0dace6514eb74ca1331579b7e8e8ad656254dce2d815b906021789197 name: "Smoke Copilot" "on": @@ -222,6 +222,10 @@ jobs: run: /opt/gh-aw/actions/install_copilot_cli.sh 0.0.405 - name: Install awf binary run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 + - name: 'Install plugin: anthropics/claude-code' + env: + GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + run: copilot plugin install anthropics/claude-code - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: @@ -1486,7 +1490,7 @@ jobs: run: | set -o pipefail sudo -E awf --enable-chroot --env-all --container-workdir "${GITHUB_WORKSPACE}" --allow-domains '*.githubusercontent.com,*.jsr.io,api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,api.npms.io,api.snapcraft.io,archive.ubuntu.com,azure.archive.ubuntu.com,bun.sh,cdn.playwright.dev,codeload.github.com,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,deb.nodesource.com,deno.land,get.pnpm.io,github-cloud.githubusercontent.com,github-cloud.s3.amazonaws.com,github.com,github.githubassets.com,go.dev,golang.org,goproxy.io,host.docker.internal,json-schema.org,json.schemastore.org,jsr.io,keyserver.ubuntu.com,lfs.github.com,nodejs.org,npm.pkg.github.com,npmjs.com,npmjs.org,objects.githubusercontent.com,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,pkg.go.dev,playwright.download.prss.microsoft.com,ppa.launchpad.net,proxy.golang.org,raw.githubusercontent.com,registry.bower.io,registry.npmjs.com,registry.npmjs.org,registry.yarnpkg.com,repo.yarnpkg.com,s.symcb.com,s.symcd.com,security.ubuntu.com,skimdb.npmjs.com,sum.golang.org,telemetry.enterprise.githubcopilot.com,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com,www.npmjs.com,www.npmjs.org,yarnpkg.com' --log-level info --proxy-logs-dir /tmp/gh-aw/sandbox/firewall/logs --enable-host-access --image-tag 0.13.12 --skip-pull \ - -- '/usr/local/bin/copilot --add-dir /tmp/gh-aw/ --log-level all --log-dir /tmp/gh-aw/sandbox/agent/logs/ --add-dir "${GITHUB_WORKSPACE}" --disable-builtin-mcps --allow-all-tools --add-dir /tmp/gh-aw/cache-memory/ --allow-all-paths --share /tmp/gh-aw/sandbox/agent/logs/conversation.md --prompt "$(cat /tmp/gh-aw/aw-prompts/prompt.txt)"${GH_AW_MODEL_AGENT_COPILOT:+ --model "$GH_AW_MODEL_AGENT_COPILOT"}' \ + -- '/usr/local/bin/copilot --add-dir /tmp/gh-aw/ --log-level all --log-dir /tmp/gh-aw/sandbox/agent/logs/ --add-dir "${GITHUB_WORKSPACE}" --add-dir /home/runner/.copilot/ --disable-builtin-mcps --allow-all-tools --add-dir /tmp/gh-aw/cache-memory/ --allow-all-paths --share /tmp/gh-aw/sandbox/agent/logs/conversation.md --prompt "$(cat /tmp/gh-aw/aw-prompts/prompt.txt)"${GH_AW_MODEL_AGENT_COPILOT:+ --model "$GH_AW_MODEL_AGENT_COPILOT"}' \ 2>&1 | tee /tmp/gh-aw/agent-stdio.log env: COPILOT_AGENT_RUNNER_TYPE: STANDALONE @@ -1537,10 +1541,11 @@ jobs: const { main } = require('/opt/gh-aw/actions/redact_secrets.cjs'); await main(); env: - GH_AW_SECRET_NAMES: 'COPILOT_GITHUB_TOKEN,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GITHUB_TOKEN' + GH_AW_SECRET_NAMES: 'COPILOT_GITHUB_TOKEN,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GH_AW_PLUGINS_TOKEN,GITHUB_TOKEN' SECRET_COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }} SECRET_GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }} SECRET_GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }} + SECRET_GH_AW_PLUGINS_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN }} SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload Safe Outputs if: always() diff --git a/.github/workflows/smoke-copilot.md b/.github/workflows/smoke-copilot.md index a6895154d6..5060e44418 100644 --- a/.github/workflows/smoke-copilot.md +++ b/.github/workflows/smoke-copilot.md @@ -15,6 +15,8 @@ permissions: actions: read name: Smoke Copilot engine: copilot +plugins: + - anthropics/claude-code imports: - shared/gh.md - shared/reporting.md diff --git a/.github/workflows/smoke-opencode.lock.yml b/.github/workflows/smoke-opencode.lock.yml index c1ebe9ce52..678a410b96 100644 --- a/.github/workflows/smoke-opencode.lock.yml +++ b/.github/workflows/smoke-opencode.lock.yml @@ -27,7 +27,7 @@ # - shared/github-queries-safe-input.md # - shared/opencode.md # -# frontmatter-hash: 8048975ef16e92f9381b252166bb75b0c5bba9faf07e18bf69d7c2404edc0168 +# frontmatter-hash: 999ba273bbd97eb9c31fc2b41cc6416f381b60c5ea310a049ed6a2b72c264aeb name: "Smoke OpenCode" "on": diff --git a/.github/workflows/smoke-opencode.md b/.github/workflows/smoke-opencode.md index 4ad81517e8..d91c7f2d0c 100644 --- a/.github/workflows/smoke-opencode.md +++ b/.github/workflows/smoke-opencode.md @@ -14,6 +14,8 @@ permissions: discussions: read name: Smoke OpenCode +plugins: + - anthropics/claude-code imports: - shared/opencode.md - shared/gh.md diff --git a/.github/workflows/smoke-project.lock.yml b/.github/workflows/smoke-project.lock.yml index 9554627ae0..3afc1c5e94 100644 --- a/.github/workflows/smoke-project.lock.yml +++ b/.github/workflows/smoke-project.lock.yml @@ -26,7 +26,7 @@ # - shared/gh.md # - shared/reporting.md # -# frontmatter-hash: a455dbc6f9efd58fe53f18496559f39f27cf6285ba98edf7970e1baffc4fb505 +# frontmatter-hash: 50d4e5d6b448d6605cbb87f253baf6d9987797f6faecc085c05f92937386aafc name: "Smoke Project" "on": @@ -152,6 +152,10 @@ jobs: run: npm install -g --silent @openai/codex@0.98.0 - name: Install awf binary run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 + - name: 'Install plugin: anthropics/claude-code' + env: + GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + run: codex plugin install anthropics/claude-code - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: @@ -1068,10 +1072,11 @@ jobs: const { main } = require('/opt/gh-aw/actions/redact_secrets.cjs'); await main(); env: - GH_AW_SECRET_NAMES: 'CODEX_API_KEY,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GITHUB_TOKEN,OPENAI_API_KEY' + GH_AW_SECRET_NAMES: 'CODEX_API_KEY,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GH_AW_PLUGINS_TOKEN,GITHUB_TOKEN,OPENAI_API_KEY' SECRET_CODEX_API_KEY: ${{ secrets.CODEX_API_KEY }} SECRET_GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }} SECRET_GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }} + SECRET_GH_AW_PLUGINS_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN }} SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SECRET_OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} - name: Upload Safe Outputs diff --git a/.github/workflows/smoke-project.md b/.github/workflows/smoke-project.md index b716f2a159..db6ce8b38c 100644 --- a/.github/workflows/smoke-project.md +++ b/.github/workflows/smoke-project.md @@ -14,6 +14,8 @@ permissions: actions: read name: Smoke Project engine: codex +plugins: + - anthropics/claude-code imports: - shared/gh.md - shared/reporting.md diff --git a/.github/workflows/smoke-test-tools.lock.yml b/.github/workflows/smoke-test-tools.lock.yml index 0b3fcb43e3..005a3c80c1 100644 --- a/.github/workflows/smoke-test-tools.lock.yml +++ b/.github/workflows/smoke-test-tools.lock.yml @@ -21,7 +21,7 @@ # # Smoke test to validate common development tools are available in the agent container # -# frontmatter-hash: 798e01a94a89407a4b4102b0551de2d8376a5c3b5ef4a3622ab601229694cf78 +# frontmatter-hash: 3b06a7ddc9a2912bc2daa463763d6a74d877d206a25b916dec7ba11ea6868ec6 name: "Agent Container Smoke Test" "on": @@ -175,6 +175,10 @@ jobs: run: /opt/gh-aw/actions/install_copilot_cli.sh 0.0.405 - name: Install awf binary run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 + - name: 'Install plugin: anthropics/claude-code' + env: + GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + run: copilot plugin install anthropics/claude-code - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: @@ -610,7 +614,7 @@ jobs: run: | set -o pipefail sudo -E awf --enable-chroot --env-all --container-workdir "${GITHUB_WORKSPACE}" --allow-domains '*.githubusercontent.com,*.jsr.io,*.pythonhosted.org,adoptium.net,anaconda.org,api.adoptium.net,api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.foojay.io,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,api.npms.io,api.nuget.org,api.snapcraft.io,archive.apache.org,archive.ubuntu.com,azure.archive.ubuntu.com,azuresearch-usnc.nuget.org,azuresearch-ussc.nuget.org,binstar.org,bootstrap.pypa.io,builds.dotnet.microsoft.com,bun.sh,cdn.azul.com,ci.dot.net,codeload.github.com,conda.anaconda.org,conda.binstar.org,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,dc.services.visualstudio.com,deb.nodesource.com,deno.land,dist.nuget.org,dlcdn.apache.org,dot.net,dotnet.microsoft.com,dotnetcli.blob.core.windows.net,download.eclipse.org,download.java.net,download.oracle.com,files.pythonhosted.org,get.pnpm.io,github-cloud.githubusercontent.com,github-cloud.s3.amazonaws.com,github.com,github.githubassets.com,go.dev,golang.org,goproxy.io,gradle.org,host.docker.internal,jcenter.bintray.com,jdk.java.net,json-schema.org,json.schemastore.org,jsr.io,keyserver.ubuntu.com,lfs.github.com,maven.apache.org,maven.oracle.com,maven.pkg.github.com,nodejs.org,npm.pkg.github.com,npmjs.com,npmjs.org,nuget.org,nuget.pkg.github.com,nugetregistryv2prod.blob.core.windows.net,objects.githubusercontent.com,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,oneocsp.microsoft.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,pip.pypa.io,pkg.go.dev,pkgs.dev.azure.com,plugins-artifacts.gradle.org,plugins.gradle.org,ppa.launchpad.net,proxy.golang.org,pypi.org,pypi.python.org,raw.githubusercontent.com,registry.bower.io,registry.npmjs.com,registry.npmjs.org,registry.yarnpkg.com,repo.anaconda.com,repo.continuum.io,repo.grails.org,repo.maven.apache.org,repo.spring.io,repo.yarnpkg.com,repo1.maven.org,s.symcb.com,s.symcd.com,security.ubuntu.com,services.gradle.org,skimdb.npmjs.com,sum.golang.org,telemetry.enterprise.githubcopilot.com,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com,www.java.com,www.microsoft.com,www.npmjs.com,www.npmjs.org,yarnpkg.com' --log-level info --proxy-logs-dir /tmp/gh-aw/sandbox/firewall/logs --enable-host-access --image-tag 0.13.12 --skip-pull \ - -- '/usr/local/bin/copilot --add-dir /tmp/gh-aw/ --log-level all --log-dir /tmp/gh-aw/sandbox/agent/logs/ --add-dir "${GITHUB_WORKSPACE}" --disable-builtin-mcps --allow-all-tools --allow-all-paths --share /tmp/gh-aw/sandbox/agent/logs/conversation.md --prompt "$(cat /tmp/gh-aw/aw-prompts/prompt.txt)"${GH_AW_MODEL_AGENT_COPILOT:+ --model "$GH_AW_MODEL_AGENT_COPILOT"}' \ + -- '/usr/local/bin/copilot --add-dir /tmp/gh-aw/ --log-level all --log-dir /tmp/gh-aw/sandbox/agent/logs/ --add-dir "${GITHUB_WORKSPACE}" --add-dir /home/runner/.copilot/ --disable-builtin-mcps --allow-all-tools --allow-all-paths --share /tmp/gh-aw/sandbox/agent/logs/conversation.md --prompt "$(cat /tmp/gh-aw/aw-prompts/prompt.txt)"${GH_AW_MODEL_AGENT_COPILOT:+ --model "$GH_AW_MODEL_AGENT_COPILOT"}' \ 2>&1 | tee /tmp/gh-aw/agent-stdio.log env: COPILOT_AGENT_RUNNER_TYPE: STANDALONE @@ -660,10 +664,11 @@ jobs: const { main } = require('/opt/gh-aw/actions/redact_secrets.cjs'); await main(); env: - GH_AW_SECRET_NAMES: 'COPILOT_GITHUB_TOKEN,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GITHUB_TOKEN' + GH_AW_SECRET_NAMES: 'COPILOT_GITHUB_TOKEN,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GH_AW_PLUGINS_TOKEN,GITHUB_TOKEN' SECRET_COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }} SECRET_GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }} SECRET_GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }} + SECRET_GH_AW_PLUGINS_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN }} SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload Safe Outputs if: always() diff --git a/.github/workflows/smoke-test-tools.md b/.github/workflows/smoke-test-tools.md index 09c231cf57..b809090554 100644 --- a/.github/workflows/smoke-test-tools.md +++ b/.github/workflows/smoke-test-tools.md @@ -12,6 +12,8 @@ permissions: pull-requests: read name: Agent Container Smoke Test engine: copilot +plugins: + - anthropics/claude-code strict: true runtimes: node: From 02968695380bfc53003e03124bcbbf711df9f661 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 7 Feb 2026 15:46:11 +0000 Subject: [PATCH 03/11] Update plugin path to sub-plugin and add schema support for sub-plugin paths Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/smoke-claude.lock.yml | 6 +++--- .github/workflows/smoke-claude.md | 2 +- .github/workflows/smoke-codex.lock.yml | 6 +++--- .github/workflows/smoke-codex.md | 2 +- .github/workflows/smoke-copilot.lock.yml | 6 +++--- .github/workflows/smoke-copilot.md | 2 +- .github/workflows/smoke-opencode.lock.yml | 2 +- .github/workflows/smoke-opencode.md | 2 +- .github/workflows/smoke-project.lock.yml | 6 +++--- .github/workflows/smoke-project.md | 2 +- .github/workflows/smoke-test-tools.lock.yml | 6 +++--- .github/workflows/smoke-test-tools.md | 2 +- pkg/parser/schemas/main_workflow_schema.json | 11 ++++++----- 13 files changed, 28 insertions(+), 27 deletions(-) diff --git a/.github/workflows/smoke-claude.lock.yml b/.github/workflows/smoke-claude.lock.yml index c5b56e4d78..05d8e1d4fe 100644 --- a/.github/workflows/smoke-claude.lock.yml +++ b/.github/workflows/smoke-claude.lock.yml @@ -31,7 +31,7 @@ # - shared/mcp/tavily.md # - shared/reporting.md # -# frontmatter-hash: 79ca466b4cb54ff771714f9c9f8810b3afd8b06b11549231951fe66cda5a5dd2 +# frontmatter-hash: 473fcdd15b69df94d597c84f0f8d300ff892519984a5837c676fd4a83144cfb5 name: "Smoke Claude" "on": @@ -232,10 +232,10 @@ jobs: run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 - name: Install Claude Code CLI run: npm install -g --silent @anthropic-ai/claude-code@2.1.34 - - name: 'Install plugin: anthropics/claude-code' + - name: 'Install plugin: anthropics/claude-code/plugins/explanatory-output-style' env: GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - run: claude plugin install anthropics/claude-code + run: claude plugin install anthropics/claude-code/plugins/explanatory-output-style - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: diff --git a/.github/workflows/smoke-claude.md b/.github/workflows/smoke-claude.md index c73660737c..1b163a95f6 100644 --- a/.github/workflows/smoke-claude.md +++ b/.github/workflows/smoke-claude.md @@ -19,7 +19,7 @@ engine: id: claude max-turns: 15 plugins: - - anthropics/claude-code + - anthropics/claude-code/plugins/explanatory-output-style strict: true imports: - shared/mcp-pagination.md diff --git a/.github/workflows/smoke-codex.lock.yml b/.github/workflows/smoke-codex.lock.yml index 393d16ac5f..0835204236 100644 --- a/.github/workflows/smoke-codex.lock.yml +++ b/.github/workflows/smoke-codex.lock.yml @@ -28,7 +28,7 @@ # - shared/mcp/tavily.md # - shared/reporting.md # -# frontmatter-hash: ffdd95802f1401c975c8372cdae62924fdf1f2b660f8d9d8f1cd1d7e6564ca7a +# frontmatter-hash: b0e6887807c131347cebc65a6fa996f0d5dd6a67a6cda403b6261452f665a197 name: "Smoke Codex" "on": @@ -198,10 +198,10 @@ jobs: run: npm install -g --silent @openai/codex@0.98.0 - name: Install awf binary run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 - - name: 'Install plugin: anthropics/claude-code' + - name: 'Install plugin: anthropics/claude-code/plugins/explanatory-output-style' env: GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - run: codex plugin install anthropics/claude-code + run: codex plugin install anthropics/claude-code/plugins/explanatory-output-style - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: diff --git a/.github/workflows/smoke-codex.md b/.github/workflows/smoke-codex.md index b19165865f..0e92625dae 100644 --- a/.github/workflows/smoke-codex.md +++ b/.github/workflows/smoke-codex.md @@ -15,7 +15,7 @@ permissions: name: Smoke Codex engine: codex plugins: - - anthropics/claude-code + - anthropics/claude-code/plugins/explanatory-output-style strict: true imports: - shared/gh.md diff --git a/.github/workflows/smoke-copilot.lock.yml b/.github/workflows/smoke-copilot.lock.yml index a22736b83c..14973ac1a4 100644 --- a/.github/workflows/smoke-copilot.lock.yml +++ b/.github/workflows/smoke-copilot.lock.yml @@ -27,7 +27,7 @@ # - shared/github-queries-safe-input.md # - shared/reporting.md # -# frontmatter-hash: 97ed96f0dace6514eb74ca1331579b7e8e8ad656254dce2d815b906021789197 +# frontmatter-hash: 8e255fd1a453e5db4695257f01d5368dc6d249ab22a41dc7fa885b7a9135e07f name: "Smoke Copilot" "on": @@ -222,10 +222,10 @@ jobs: run: /opt/gh-aw/actions/install_copilot_cli.sh 0.0.405 - name: Install awf binary run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 - - name: 'Install plugin: anthropics/claude-code' + - name: 'Install plugin: anthropics/claude-code/plugins/explanatory-output-style' env: GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - run: copilot plugin install anthropics/claude-code + run: copilot plugin install anthropics/claude-code/plugins/explanatory-output-style - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: diff --git a/.github/workflows/smoke-copilot.md b/.github/workflows/smoke-copilot.md index 5060e44418..630599bf79 100644 --- a/.github/workflows/smoke-copilot.md +++ b/.github/workflows/smoke-copilot.md @@ -16,7 +16,7 @@ permissions: name: Smoke Copilot engine: copilot plugins: - - anthropics/claude-code + - anthropics/claude-code/plugins/explanatory-output-style imports: - shared/gh.md - shared/reporting.md diff --git a/.github/workflows/smoke-opencode.lock.yml b/.github/workflows/smoke-opencode.lock.yml index 678a410b96..c2ecc3c078 100644 --- a/.github/workflows/smoke-opencode.lock.yml +++ b/.github/workflows/smoke-opencode.lock.yml @@ -27,7 +27,7 @@ # - shared/github-queries-safe-input.md # - shared/opencode.md # -# frontmatter-hash: 999ba273bbd97eb9c31fc2b41cc6416f381b60c5ea310a049ed6a2b72c264aeb +# frontmatter-hash: 49ec83ff9eaad09101bfa12d5bd71c985eaae32c6764a461ec9c7c79e9654cca name: "Smoke OpenCode" "on": diff --git a/.github/workflows/smoke-opencode.md b/.github/workflows/smoke-opencode.md index d91c7f2d0c..027f5186ba 100644 --- a/.github/workflows/smoke-opencode.md +++ b/.github/workflows/smoke-opencode.md @@ -15,7 +15,7 @@ permissions: name: Smoke OpenCode plugins: - - anthropics/claude-code + - anthropics/claude-code/plugins/explanatory-output-style imports: - shared/opencode.md - shared/gh.md diff --git a/.github/workflows/smoke-project.lock.yml b/.github/workflows/smoke-project.lock.yml index 3afc1c5e94..6c03d0b095 100644 --- a/.github/workflows/smoke-project.lock.yml +++ b/.github/workflows/smoke-project.lock.yml @@ -26,7 +26,7 @@ # - shared/gh.md # - shared/reporting.md # -# frontmatter-hash: 50d4e5d6b448d6605cbb87f253baf6d9987797f6faecc085c05f92937386aafc +# frontmatter-hash: a67d3c5c014c587d1cbae91ccb7f5323d52ad8d586a5cac21c1d729b1981215e name: "Smoke Project" "on": @@ -152,10 +152,10 @@ jobs: run: npm install -g --silent @openai/codex@0.98.0 - name: Install awf binary run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 - - name: 'Install plugin: anthropics/claude-code' + - name: 'Install plugin: anthropics/claude-code/plugins/explanatory-output-style' env: GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - run: codex plugin install anthropics/claude-code + run: codex plugin install anthropics/claude-code/plugins/explanatory-output-style - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: diff --git a/.github/workflows/smoke-project.md b/.github/workflows/smoke-project.md index db6ce8b38c..dc5d933b78 100644 --- a/.github/workflows/smoke-project.md +++ b/.github/workflows/smoke-project.md @@ -15,7 +15,7 @@ permissions: name: Smoke Project engine: codex plugins: - - anthropics/claude-code + - anthropics/claude-code/plugins/explanatory-output-style imports: - shared/gh.md - shared/reporting.md diff --git a/.github/workflows/smoke-test-tools.lock.yml b/.github/workflows/smoke-test-tools.lock.yml index 005a3c80c1..2605c66ba6 100644 --- a/.github/workflows/smoke-test-tools.lock.yml +++ b/.github/workflows/smoke-test-tools.lock.yml @@ -21,7 +21,7 @@ # # Smoke test to validate common development tools are available in the agent container # -# frontmatter-hash: 3b06a7ddc9a2912bc2daa463763d6a74d877d206a25b916dec7ba11ea6868ec6 +# frontmatter-hash: 751749c1e89d903e362e78c316a5573962c7bb145a0e9eb95ce04ab7496cb8dd name: "Agent Container Smoke Test" "on": @@ -175,10 +175,10 @@ jobs: run: /opt/gh-aw/actions/install_copilot_cli.sh 0.0.405 - name: Install awf binary run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 - - name: 'Install plugin: anthropics/claude-code' + - name: 'Install plugin: anthropics/claude-code/plugins/explanatory-output-style' env: GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - run: copilot plugin install anthropics/claude-code + run: copilot plugin install anthropics/claude-code/plugins/explanatory-output-style - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: diff --git a/.github/workflows/smoke-test-tools.md b/.github/workflows/smoke-test-tools.md index b809090554..f2a13db4b1 100644 --- a/.github/workflows/smoke-test-tools.md +++ b/.github/workflows/smoke-test-tools.md @@ -13,7 +13,7 @@ permissions: name: Agent Container Smoke Test engine: copilot plugins: - - anthropics/claude-code + - anthropics/claude-code/plugins/explanatory-output-style strict: true runtimes: node: diff --git a/pkg/parser/schemas/main_workflow_schema.json b/pkg/parser/schemas/main_workflow_schema.json index 44c6ae1fc7..abc8ea7a5f 100644 --- a/pkg/parser/schemas/main_workflow_schema.json +++ b/pkg/parser/schemas/main_workflow_schema.json @@ -2483,9 +2483,10 @@ ] }, "plugins": { - "description": "Plugin configuration for installing plugins before workflow execution. Supports both array format (list of repos) and object format (repos + custom token).", + "description": "Plugin configuration for installing plugins before workflow execution. Supports both array format (list of repos) and object format (repos + custom token). Plugin paths can include sub-paths to specific plugins within a repository.", "examples": [ ["github/copilot-plugin", "acme/custom-tools"], + ["anthropics/claude-code/plugins/explanatory-output-style"], { "repos": ["github/copilot-plugin", "acme/custom-tools"], "github-token": "${{ secrets.CUSTOM_PLUGIN_TOKEN }}" @@ -2497,8 +2498,8 @@ "description": "List of plugin repository slugs to install. Each plugin is installed using the engine's plugin installation command with default token resolution.", "items": { "type": "string", - "pattern": "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$", - "description": "Plugin repository slug in the format 'org/repo' (e.g., 'github/example-plugin')" + "pattern": "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+(/[a-zA-Z0-9_-]+)*$", + "description": "Plugin repository slug in the format 'org/repo' or 'org/repo/path/to/plugin' (e.g., 'github/example-plugin', 'anthropics/claude-code/plugins/explanatory-output-style')" } }, { @@ -2511,8 +2512,8 @@ "description": "List of plugin repository slugs to install", "items": { "type": "string", - "pattern": "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$", - "description": "Plugin repository slug in the format 'org/repo' (e.g., 'github/example-plugin')" + "pattern": "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+(/[a-zA-Z0-9_-]+)*$", + "description": "Plugin repository slug in the format 'org/repo' or 'org/repo/path/to/plugin' (e.g., 'github/example-plugin', 'anthropics/claude-code/plugins/explanatory-output-style')" } }, "github-token": { From c9f77068484c0098ef8401616ff6685dcc59bbbf Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 7 Feb 2026 16:45:41 +0000 Subject: [PATCH 04/11] Recompile smoke workflows after merging main Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/smoke-claude.lock.yml | 6 +----- .github/workflows/smoke-codex.lock.yml | 6 +----- .github/workflows/smoke-copilot.lock.yml | 6 +----- .github/workflows/smoke-opencode.lock.yml | 6 +----- .github/workflows/smoke-project.lock.yml | 6 +----- .github/workflows/smoke-test-tools.lock.yml | 6 +----- 6 files changed, 6 insertions(+), 30 deletions(-) diff --git a/.github/workflows/smoke-claude.lock.yml b/.github/workflows/smoke-claude.lock.yml index 1d95dd0e49..93acd8121e 100644 --- a/.github/workflows/smoke-claude.lock.yml +++ b/.github/workflows/smoke-claude.lock.yml @@ -32,11 +32,7 @@ # - shared/mood.md # - shared/reporting.md # -<<<<<<< HEAD -# frontmatter-hash: 473fcdd15b69df94d597c84f0f8d300ff892519984a5837c676fd4a83144cfb5 -======= -# frontmatter-hash: 0837bbb92b5a6973ee2770c91b853a91e6e5113d590fd52ff842d31d1a8bcfd5 ->>>>>>> origin/main +# frontmatter-hash: 814364c13cedc40d83bd313a6a4fb190c33e8b2361c298259e94560c394117ec name: "Smoke Claude" "on": diff --git a/.github/workflows/smoke-codex.lock.yml b/.github/workflows/smoke-codex.lock.yml index c696c31a78..6e81de00e7 100644 --- a/.github/workflows/smoke-codex.lock.yml +++ b/.github/workflows/smoke-codex.lock.yml @@ -29,11 +29,7 @@ # - shared/mood.md # - shared/reporting.md # -<<<<<<< HEAD -# frontmatter-hash: b0e6887807c131347cebc65a6fa996f0d5dd6a67a6cda403b6261452f665a197 -======= -# frontmatter-hash: ac29812a15c891a9fb12b2d8e331ba0cbce798cc8d23e5e8b9718a6dfea56e8f ->>>>>>> origin/main +# frontmatter-hash: bc47a357e02ab180565c78cec6eb95979502b40d34bf033eed4f1ca642fb1ce6 name: "Smoke Codex" "on": diff --git a/.github/workflows/smoke-copilot.lock.yml b/.github/workflows/smoke-copilot.lock.yml index bd4ffdfcf0..b436a30c38 100644 --- a/.github/workflows/smoke-copilot.lock.yml +++ b/.github/workflows/smoke-copilot.lock.yml @@ -28,11 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -<<<<<<< HEAD -# frontmatter-hash: 8e255fd1a453e5db4695257f01d5368dc6d249ab22a41dc7fa885b7a9135e07f -======= -# frontmatter-hash: b81319e0683d2730b59ce3601546860e0914e8a155eb123d3c913de9f7737264 ->>>>>>> origin/main +# frontmatter-hash: 875717e5ae342cffe17b69a248ab1eacf41332cc6cb9e332995967f31013e6d8 name: "Smoke Copilot" "on": diff --git a/.github/workflows/smoke-opencode.lock.yml b/.github/workflows/smoke-opencode.lock.yml index 80740fef52..c982e1aaaf 100644 --- a/.github/workflows/smoke-opencode.lock.yml +++ b/.github/workflows/smoke-opencode.lock.yml @@ -28,11 +28,7 @@ # - shared/mood.md # - shared/opencode.md # -<<<<<<< HEAD -# frontmatter-hash: 49ec83ff9eaad09101bfa12d5bd71c985eaae32c6764a461ec9c7c79e9654cca -======= -# frontmatter-hash: 1378f6a6cfb514d196a1e4788301ea292d9944fa5fb9cd9b1750bdd2b19bc278 ->>>>>>> origin/main +# frontmatter-hash: 986e18029968db8cac31be00f1851ee7236b4be8b692ee5960c80b27e9fafc4c name: "Smoke OpenCode" "on": diff --git a/.github/workflows/smoke-project.lock.yml b/.github/workflows/smoke-project.lock.yml index 80b4c57039..0d87155b5a 100644 --- a/.github/workflows/smoke-project.lock.yml +++ b/.github/workflows/smoke-project.lock.yml @@ -27,11 +27,7 @@ # - shared/mood.md # - shared/reporting.md # -<<<<<<< HEAD -# frontmatter-hash: a67d3c5c014c587d1cbae91ccb7f5323d52ad8d586a5cac21c1d729b1981215e -======= -# frontmatter-hash: 444a34a300c5972bb914d3c10b44ef630d57544b9654a07681fed0038bf51692 ->>>>>>> origin/main +# frontmatter-hash: 6b156db0729a740b5637b61953f291f8439aebda05cd394904d7c4a5dfbd2c01 name: "Smoke Project" "on": diff --git a/.github/workflows/smoke-test-tools.lock.yml b/.github/workflows/smoke-test-tools.lock.yml index 9e22e32402..d82e5f718f 100644 --- a/.github/workflows/smoke-test-tools.lock.yml +++ b/.github/workflows/smoke-test-tools.lock.yml @@ -21,15 +21,11 @@ # # Smoke test to validate common development tools are available in the agent container # -<<<<<<< HEAD -# frontmatter-hash: 751749c1e89d903e362e78c316a5573962c7bb145a0e9eb95ce04ab7496cb8dd -======= # Resolved workflow manifest: # Imports: # - shared/mood.md # -# frontmatter-hash: 7d3e13ff178d7cd42b27a1498d76b1ba1b3ecda4d8027c84c8b6611647084fba ->>>>>>> origin/main +# frontmatter-hash: 0897bff6c9f6cc36ba1c2bb267dfb3f5517ac7af6dfe29f6c1d95fe23a18cf9d name: "Agent Container Smoke Test" "on": From bf70d048cd57b9ed5d7d8b92af08197c47493591 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 7 Feb 2026 16:53:25 +0000 Subject: [PATCH 05/11] Add marketplace URL support for plugins and remove plugin from smoke-opencode Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/smoke-opencode.lock.yml | 2 +- .github/workflows/smoke-opencode.md | 2 -- docs/src/content/docs/reference/frontmatter.md | 10 +++++++++- pkg/parser/schemas/main_workflow_schema.json | 11 ++++++----- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/.github/workflows/smoke-opencode.lock.yml b/.github/workflows/smoke-opencode.lock.yml index c982e1aaaf..0c403cda1a 100644 --- a/.github/workflows/smoke-opencode.lock.yml +++ b/.github/workflows/smoke-opencode.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/opencode.md # -# frontmatter-hash: 986e18029968db8cac31be00f1851ee7236b4be8b692ee5960c80b27e9fafc4c +# frontmatter-hash: 1378f6a6cfb514d196a1e4788301ea292d9944fa5fb9cd9b1750bdd2b19bc278 name: "Smoke OpenCode" "on": diff --git a/.github/workflows/smoke-opencode.md b/.github/workflows/smoke-opencode.md index 168072aa06..15e3b2c89b 100644 --- a/.github/workflows/smoke-opencode.md +++ b/.github/workflows/smoke-opencode.md @@ -14,8 +14,6 @@ permissions: discussions: read name: Smoke OpenCode -plugins: - - anthropics/claude-code/plugins/explanatory-output-style imports: - shared/mood.md - shared/opencode.md diff --git a/docs/src/content/docs/reference/frontmatter.md b/docs/src/content/docs/reference/frontmatter.md index ebb3da56f1..a06a89938a 100644 --- a/docs/src/content/docs/reference/frontmatter.md +++ b/docs/src/content/docs/reference/frontmatter.md @@ -107,6 +107,8 @@ Specifies plugins to install before workflow execution. Plugins are installed us plugins: - github/test-plugin - acme/custom-tools + - anthropics/claude-code/plugins/explanatory-output-style + - pyright-lsp@claude-plugins-official ``` **Object format** (with custom token): @@ -118,6 +120,12 @@ plugins: github-token: ${{ secrets.CUSTOM_PLUGIN_TOKEN }} ``` +**Plugin identifier formats:** +- **GitHub repository**: `org/repo` (e.g., `github/test-plugin`) +- **Sub-plugin path**: `org/repo/path/to/plugin` (e.g., `anthropics/claude-code/plugins/explanatory-output-style`) +- **Marketplace reference**: `plugin-name@marketplace` (e.g., `pyright-lsp@claude-plugins-official`) +- **Repository with marketplace**: `org/repo@marketplace` (e.g., `anthropics/claude-code@anthropic-plugins`) + **Token precedence** for plugin installation (highest to lowest): 1. Custom `plugins.github-token` from object format 2. Custom top-level `github-token` @@ -125,7 +133,7 @@ plugins: 4. `${{ secrets.GH_AW_GITHUB_TOKEN }}` 5. `${{ secrets.GITHUB_TOKEN }}` (default) -Each plugin repository must be specified in `org/repo` format. The compiler generates installation steps that run after the engine CLI is installed but before workflow execution begins. +The compiler generates installation steps that run after the engine CLI is installed but before workflow execution begins. ### Runtimes (`runtimes:`) diff --git a/pkg/parser/schemas/main_workflow_schema.json b/pkg/parser/schemas/main_workflow_schema.json index abc8ea7a5f..240797815b 100644 --- a/pkg/parser/schemas/main_workflow_schema.json +++ b/pkg/parser/schemas/main_workflow_schema.json @@ -2483,10 +2483,11 @@ ] }, "plugins": { - "description": "Plugin configuration for installing plugins before workflow execution. Supports both array format (list of repos) and object format (repos + custom token). Plugin paths can include sub-paths to specific plugins within a repository.", + "description": "Plugin configuration for installing plugins before workflow execution. Supports both array format (list of repos) and object format (repos + custom token). Plugin paths can include sub-paths to specific plugins within a repository, or marketplace references using @marketplace syntax.", "examples": [ ["github/copilot-plugin", "acme/custom-tools"], ["anthropics/claude-code/plugins/explanatory-output-style"], + ["pyright-lsp@claude-plugins-official"], { "repos": ["github/copilot-plugin", "acme/custom-tools"], "github-token": "${{ secrets.CUSTOM_PLUGIN_TOKEN }}" @@ -2498,8 +2499,8 @@ "description": "List of plugin repository slugs to install. Each plugin is installed using the engine's plugin installation command with default token resolution.", "items": { "type": "string", - "pattern": "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+(/[a-zA-Z0-9_-]+)*$", - "description": "Plugin repository slug in the format 'org/repo' or 'org/repo/path/to/plugin' (e.g., 'github/example-plugin', 'anthropics/claude-code/plugins/explanatory-output-style')" + "pattern": "^([a-zA-Z0-9_-]+(/[a-zA-Z0-9_-]+)+|[a-zA-Z0-9_-]+)(@[a-zA-Z0-9_-]+)?$", + "description": "Plugin identifier in one of these formats: 'org/repo', 'org/repo/path/to/plugin', 'plugin-name@marketplace', or 'org/repo@marketplace' (e.g., 'github/example-plugin', 'anthropics/claude-code/plugins/explanatory-output-style', 'pyright-lsp@claude-plugins-official')" } }, { @@ -2512,8 +2513,8 @@ "description": "List of plugin repository slugs to install", "items": { "type": "string", - "pattern": "^[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+(/[a-zA-Z0-9_-]+)*$", - "description": "Plugin repository slug in the format 'org/repo' or 'org/repo/path/to/plugin' (e.g., 'github/example-plugin', 'anthropics/claude-code/plugins/explanatory-output-style')" + "pattern": "^([a-zA-Z0-9_-]+(/[a-zA-Z0-9_-]+)+|[a-zA-Z0-9_-]+)(@[a-zA-Z0-9_-]+)?$", + "description": "Plugin identifier in one of these formats: 'org/repo', 'org/repo/path/to/plugin', 'plugin-name@marketplace', or 'org/repo@marketplace' (e.g., 'github/example-plugin', 'anthropics/claude-code/plugins/explanatory-output-style', 'pyright-lsp@claude-plugins-official')" } }, "github-token": { From 9a65c21d2a11a4609bfa77b19c04e31c4f9318df Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 7 Feb 2026 17:39:13 +0000 Subject: [PATCH 06/11] Recompile after merging main with plugin MCP config support Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/smoke-codex.lock.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/smoke-codex.lock.yml b/.github/workflows/smoke-codex.lock.yml index 9a6d1c2b17..02ea7142a9 100644 --- a/.github/workflows/smoke-codex.lock.yml +++ b/.github/workflows/smoke-codex.lock.yml @@ -27,7 +27,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 3854250bdfed2a509135850e0617de23d37184ebc8395ab1c19e997046734794 +# frontmatter-hash: f94bc20b93fbe2e3e1482c0def2e21b9a27e8d1fbdfaf3c2f77c03c604302864 name: "Smoke Codex" "on": @@ -196,6 +196,10 @@ jobs: run: npm install -g --silent @openai/codex@0.98.0 - name: Install awf binary run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 + - name: 'Install plugin: anthropics/claude-code/plugins/explanatory-output-style' + env: + GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + run: codex plugin install anthropics/claude-code/plugins/explanatory-output-style - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: @@ -1047,10 +1051,11 @@ jobs: const { main } = require('/opt/gh-aw/actions/redact_secrets.cjs'); await main(); env: - GH_AW_SECRET_NAMES: 'CODEX_API_KEY,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GITHUB_TOKEN,OPENAI_API_KEY' + GH_AW_SECRET_NAMES: 'CODEX_API_KEY,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GH_AW_PLUGINS_TOKEN,GITHUB_TOKEN,OPENAI_API_KEY' SECRET_CODEX_API_KEY: ${{ secrets.CODEX_API_KEY }} SECRET_GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }} SECRET_GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }} + SECRET_GH_AW_PLUGINS_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN }} SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SECRET_OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} - name: Upload Safe Outputs From c448c2a4212ddf54f7383c0f63d1620f3afd69a2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 7 Feb 2026 17:52:20 +0000 Subject: [PATCH 07/11] Use marketplace URL style for explanatory-output-style plugin Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/smoke-claude.lock.yml | 6 +++--- .github/workflows/smoke-claude.md | 2 +- .github/workflows/smoke-codex.lock.yml | 6 +++--- .github/workflows/smoke-codex.md | 2 +- .github/workflows/smoke-copilot.lock.yml | 6 +++--- .github/workflows/smoke-copilot.md | 2 +- .github/workflows/smoke-project.lock.yml | 6 +++--- .github/workflows/smoke-project.md | 2 +- .github/workflows/smoke-test-tools.lock.yml | 6 +++--- .github/workflows/smoke-test-tools.md | 2 +- 10 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.github/workflows/smoke-claude.lock.yml b/.github/workflows/smoke-claude.lock.yml index 54c29c2834..77cd22e06e 100644 --- a/.github/workflows/smoke-claude.lock.yml +++ b/.github/workflows/smoke-claude.lock.yml @@ -32,7 +32,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 814364c13cedc40d83bd313a6a4fb190c33e8b2361c298259e94560c394117ec +# frontmatter-hash: 4b3fae7b2569ba8726058dda4de7f6810cd8a51da5a1d788ad92482df8d76f75 name: "Smoke Claude" "on": @@ -233,10 +233,10 @@ jobs: run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 - name: Install Claude Code CLI run: npm install -g --silent @anthropic-ai/claude-code@2.1.34 - - name: 'Install plugin: anthropics/claude-code/plugins/explanatory-output-style' + - name: 'Install plugin: explanatory-output-style@claude-plugins-official' env: GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - run: claude plugin install anthropics/claude-code/plugins/explanatory-output-style + run: claude plugin install explanatory-output-style@claude-plugins-official - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: diff --git a/.github/workflows/smoke-claude.md b/.github/workflows/smoke-claude.md index 57597f066e..af1b4bc367 100644 --- a/.github/workflows/smoke-claude.md +++ b/.github/workflows/smoke-claude.md @@ -19,7 +19,7 @@ engine: id: claude max-turns: 15 plugins: - - anthropics/claude-code/plugins/explanatory-output-style + - explanatory-output-style@claude-plugins-official strict: true imports: - shared/mood.md diff --git a/.github/workflows/smoke-codex.lock.yml b/.github/workflows/smoke-codex.lock.yml index 02ea7142a9..9cdd424787 100644 --- a/.github/workflows/smoke-codex.lock.yml +++ b/.github/workflows/smoke-codex.lock.yml @@ -27,7 +27,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: f94bc20b93fbe2e3e1482c0def2e21b9a27e8d1fbdfaf3c2f77c03c604302864 +# frontmatter-hash: acbcf393cf7928409b0f29bf6746c794a9991028c2155a64c2667bd45ef42b39 name: "Smoke Codex" "on": @@ -196,10 +196,10 @@ jobs: run: npm install -g --silent @openai/codex@0.98.0 - name: Install awf binary run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 - - name: 'Install plugin: anthropics/claude-code/plugins/explanatory-output-style' + - name: 'Install plugin: explanatory-output-style@claude-plugins-official' env: GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - run: codex plugin install anthropics/claude-code/plugins/explanatory-output-style + run: codex plugin install explanatory-output-style@claude-plugins-official - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: diff --git a/.github/workflows/smoke-codex.md b/.github/workflows/smoke-codex.md index c7bb3226da..07a9418005 100644 --- a/.github/workflows/smoke-codex.md +++ b/.github/workflows/smoke-codex.md @@ -14,7 +14,7 @@ permissions: name: Smoke Codex engine: codex plugins: - - anthropics/claude-code/plugins/explanatory-output-style + - explanatory-output-style@claude-plugins-official strict: true imports: - shared/mood.md diff --git a/.github/workflows/smoke-copilot.lock.yml b/.github/workflows/smoke-copilot.lock.yml index 786300494d..fb09629ff0 100644 --- a/.github/workflows/smoke-copilot.lock.yml +++ b/.github/workflows/smoke-copilot.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 875717e5ae342cffe17b69a248ab1eacf41332cc6cb9e332995967f31013e6d8 +# frontmatter-hash: d4a80e7549cf82bfbc3ee9f85286bf574d9cd44fd192a866f55a1e39b48fe3a2 name: "Smoke Copilot" "on": @@ -223,10 +223,10 @@ jobs: run: /opt/gh-aw/actions/install_copilot_cli.sh 0.0.405 - name: Install awf binary run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 - - name: 'Install plugin: anthropics/claude-code/plugins/explanatory-output-style' + - name: 'Install plugin: explanatory-output-style@claude-plugins-official' env: GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - run: copilot plugin install anthropics/claude-code/plugins/explanatory-output-style + run: copilot plugin install explanatory-output-style@claude-plugins-official - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: diff --git a/.github/workflows/smoke-copilot.md b/.github/workflows/smoke-copilot.md index 5a47849920..3b1e129231 100644 --- a/.github/workflows/smoke-copilot.md +++ b/.github/workflows/smoke-copilot.md @@ -16,7 +16,7 @@ permissions: name: Smoke Copilot engine: copilot plugins: - - anthropics/claude-code/plugins/explanatory-output-style + - explanatory-output-style@claude-plugins-official imports: - shared/mood.md - shared/gh.md diff --git a/.github/workflows/smoke-project.lock.yml b/.github/workflows/smoke-project.lock.yml index 20250fef3d..a49b47cb6b 100644 --- a/.github/workflows/smoke-project.lock.yml +++ b/.github/workflows/smoke-project.lock.yml @@ -27,7 +27,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 6b156db0729a740b5637b61953f291f8439aebda05cd394904d7c4a5dfbd2c01 +# frontmatter-hash: 1a19cc6d450d2660aed67a43699e03d38308953660647e3c9ba2253071dd5935 name: "Smoke Project" "on": @@ -153,10 +153,10 @@ jobs: run: npm install -g --silent @openai/codex@0.98.0 - name: Install awf binary run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 - - name: 'Install plugin: anthropics/claude-code/plugins/explanatory-output-style' + - name: 'Install plugin: explanatory-output-style@claude-plugins-official' env: GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - run: codex plugin install anthropics/claude-code/plugins/explanatory-output-style + run: codex plugin install explanatory-output-style@claude-plugins-official - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: diff --git a/.github/workflows/smoke-project.md b/.github/workflows/smoke-project.md index ae52e073bc..9e92607bed 100644 --- a/.github/workflows/smoke-project.md +++ b/.github/workflows/smoke-project.md @@ -15,7 +15,7 @@ permissions: name: Smoke Project engine: codex plugins: - - anthropics/claude-code/plugins/explanatory-output-style + - explanatory-output-style@claude-plugins-official imports: - shared/mood.md - shared/gh.md diff --git a/.github/workflows/smoke-test-tools.lock.yml b/.github/workflows/smoke-test-tools.lock.yml index 8576136c1e..82f4a10b6d 100644 --- a/.github/workflows/smoke-test-tools.lock.yml +++ b/.github/workflows/smoke-test-tools.lock.yml @@ -25,7 +25,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 0897bff6c9f6cc36ba1c2bb267dfb3f5517ac7af6dfe29f6c1d95fe23a18cf9d +# frontmatter-hash: 72ba32a133819f05b1e261c22ffb6b8b8f3ba8d20e79d38d48c22d128efc4d14 name: "Agent Container Smoke Test" "on": @@ -179,10 +179,10 @@ jobs: run: /opt/gh-aw/actions/install_copilot_cli.sh 0.0.405 - name: Install awf binary run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 - - name: 'Install plugin: anthropics/claude-code/plugins/explanatory-output-style' + - name: 'Install plugin: explanatory-output-style@claude-plugins-official' env: GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - run: copilot plugin install anthropics/claude-code/plugins/explanatory-output-style + run: copilot plugin install explanatory-output-style@claude-plugins-official - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: diff --git a/.github/workflows/smoke-test-tools.md b/.github/workflows/smoke-test-tools.md index bc35489a9e..61765ea19b 100644 --- a/.github/workflows/smoke-test-tools.md +++ b/.github/workflows/smoke-test-tools.md @@ -13,7 +13,7 @@ permissions: name: Agent Container Smoke Test engine: copilot plugins: - - anthropics/claude-code/plugins/explanatory-output-style + - explanatory-output-style@claude-plugins-official strict: true runtimes: node: From dec1fcd5537dfc28e5284c280021dce40bee2241 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 7 Feb 2026 21:09:40 +0000 Subject: [PATCH 08/11] Add changeset [skip-ci] --- .changeset/patch-add-explanatory-output-style-plugin.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/patch-add-explanatory-output-style-plugin.md diff --git a/.changeset/patch-add-explanatory-output-style-plugin.md b/.changeset/patch-add-explanatory-output-style-plugin.md new file mode 100644 index 0000000000..b59b455a55 --- /dev/null +++ b/.changeset/patch-add-explanatory-output-style-plugin.md @@ -0,0 +1,5 @@ +--- +"gh-aw": patch +--- + +Documented the explanatory-output-style plugin updates in the smoke workflows, including marketplace URL syntax, schema support, and MCP configuration guidance so the new plugin is tracked in the release notes. From 805ee163daa6e6e15fe0b6c91dc205595b02aa3b Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sat, 7 Feb 2026 13:32:29 -0800 Subject: [PATCH 09/11] Fix plugin installation format from marketplace URL to GitHub repository path (#14425) --- .changeset/patch-add-explanatory-output-style-plugin.md | 2 +- .github/workflows/smoke-claude.lock.yml | 6 +++--- .github/workflows/smoke-claude.md | 2 +- .github/workflows/smoke-codex.lock.yml | 6 +++--- .github/workflows/smoke-codex.md | 2 +- .github/workflows/smoke-copilot.lock.yml | 6 +++--- .github/workflows/smoke-copilot.md | 2 +- .github/workflows/smoke-project.lock.yml | 6 +++--- .github/workflows/smoke-project.md | 2 +- .github/workflows/smoke-test-tools.lock.yml | 6 +++--- .github/workflows/smoke-test-tools.md | 2 +- docs/src/content/docs/reference/frontmatter.md | 5 ++--- pkg/parser/schemas/main_workflow_schema.json | 9 ++++----- 13 files changed, 27 insertions(+), 29 deletions(-) diff --git a/.changeset/patch-add-explanatory-output-style-plugin.md b/.changeset/patch-add-explanatory-output-style-plugin.md index b59b455a55..14dc4eb852 100644 --- a/.changeset/patch-add-explanatory-output-style-plugin.md +++ b/.changeset/patch-add-explanatory-output-style-plugin.md @@ -2,4 +2,4 @@ "gh-aw": patch --- -Documented the explanatory-output-style plugin updates in the smoke workflows, including marketplace URL syntax, schema support, and MCP configuration guidance so the new plugin is tracked in the release notes. +Fixed plugin import format in smoke workflows from marketplace URL syntax (`explanatory-output-style@claude-plugins-official`) to GitHub repository path (`anthropics/claude-code/plugins/explanatory-output-style`). The marketplace URL format was not recognized by the Copilot CLI, causing smoke test failures. Updated documentation and schema to clarify that plugins must use GitHub repository paths. diff --git a/.github/workflows/smoke-claude.lock.yml b/.github/workflows/smoke-claude.lock.yml index 77cd22e06e..54c29c2834 100644 --- a/.github/workflows/smoke-claude.lock.yml +++ b/.github/workflows/smoke-claude.lock.yml @@ -32,7 +32,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 4b3fae7b2569ba8726058dda4de7f6810cd8a51da5a1d788ad92482df8d76f75 +# frontmatter-hash: 814364c13cedc40d83bd313a6a4fb190c33e8b2361c298259e94560c394117ec name: "Smoke Claude" "on": @@ -233,10 +233,10 @@ jobs: run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 - name: Install Claude Code CLI run: npm install -g --silent @anthropic-ai/claude-code@2.1.34 - - name: 'Install plugin: explanatory-output-style@claude-plugins-official' + - name: 'Install plugin: anthropics/claude-code/plugins/explanatory-output-style' env: GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - run: claude plugin install explanatory-output-style@claude-plugins-official + run: claude plugin install anthropics/claude-code/plugins/explanatory-output-style - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: diff --git a/.github/workflows/smoke-claude.md b/.github/workflows/smoke-claude.md index af1b4bc367..57597f066e 100644 --- a/.github/workflows/smoke-claude.md +++ b/.github/workflows/smoke-claude.md @@ -19,7 +19,7 @@ engine: id: claude max-turns: 15 plugins: - - explanatory-output-style@claude-plugins-official + - anthropics/claude-code/plugins/explanatory-output-style strict: true imports: - shared/mood.md diff --git a/.github/workflows/smoke-codex.lock.yml b/.github/workflows/smoke-codex.lock.yml index 9cdd424787..02ea7142a9 100644 --- a/.github/workflows/smoke-codex.lock.yml +++ b/.github/workflows/smoke-codex.lock.yml @@ -27,7 +27,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: acbcf393cf7928409b0f29bf6746c794a9991028c2155a64c2667bd45ef42b39 +# frontmatter-hash: f94bc20b93fbe2e3e1482c0def2e21b9a27e8d1fbdfaf3c2f77c03c604302864 name: "Smoke Codex" "on": @@ -196,10 +196,10 @@ jobs: run: npm install -g --silent @openai/codex@0.98.0 - name: Install awf binary run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 - - name: 'Install plugin: explanatory-output-style@claude-plugins-official' + - name: 'Install plugin: anthropics/claude-code/plugins/explanatory-output-style' env: GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - run: codex plugin install explanatory-output-style@claude-plugins-official + run: codex plugin install anthropics/claude-code/plugins/explanatory-output-style - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: diff --git a/.github/workflows/smoke-codex.md b/.github/workflows/smoke-codex.md index 07a9418005..c7bb3226da 100644 --- a/.github/workflows/smoke-codex.md +++ b/.github/workflows/smoke-codex.md @@ -14,7 +14,7 @@ permissions: name: Smoke Codex engine: codex plugins: - - explanatory-output-style@claude-plugins-official + - anthropics/claude-code/plugins/explanatory-output-style strict: true imports: - shared/mood.md diff --git a/.github/workflows/smoke-copilot.lock.yml b/.github/workflows/smoke-copilot.lock.yml index fb09629ff0..786300494d 100644 --- a/.github/workflows/smoke-copilot.lock.yml +++ b/.github/workflows/smoke-copilot.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: d4a80e7549cf82bfbc3ee9f85286bf574d9cd44fd192a866f55a1e39b48fe3a2 +# frontmatter-hash: 875717e5ae342cffe17b69a248ab1eacf41332cc6cb9e332995967f31013e6d8 name: "Smoke Copilot" "on": @@ -223,10 +223,10 @@ jobs: run: /opt/gh-aw/actions/install_copilot_cli.sh 0.0.405 - name: Install awf binary run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 - - name: 'Install plugin: explanatory-output-style@claude-plugins-official' + - name: 'Install plugin: anthropics/claude-code/plugins/explanatory-output-style' env: GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - run: copilot plugin install explanatory-output-style@claude-plugins-official + run: copilot plugin install anthropics/claude-code/plugins/explanatory-output-style - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: diff --git a/.github/workflows/smoke-copilot.md b/.github/workflows/smoke-copilot.md index 3b1e129231..5a47849920 100644 --- a/.github/workflows/smoke-copilot.md +++ b/.github/workflows/smoke-copilot.md @@ -16,7 +16,7 @@ permissions: name: Smoke Copilot engine: copilot plugins: - - explanatory-output-style@claude-plugins-official + - anthropics/claude-code/plugins/explanatory-output-style imports: - shared/mood.md - shared/gh.md diff --git a/.github/workflows/smoke-project.lock.yml b/.github/workflows/smoke-project.lock.yml index a49b47cb6b..20250fef3d 100644 --- a/.github/workflows/smoke-project.lock.yml +++ b/.github/workflows/smoke-project.lock.yml @@ -27,7 +27,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 1a19cc6d450d2660aed67a43699e03d38308953660647e3c9ba2253071dd5935 +# frontmatter-hash: 6b156db0729a740b5637b61953f291f8439aebda05cd394904d7c4a5dfbd2c01 name: "Smoke Project" "on": @@ -153,10 +153,10 @@ jobs: run: npm install -g --silent @openai/codex@0.98.0 - name: Install awf binary run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 - - name: 'Install plugin: explanatory-output-style@claude-plugins-official' + - name: 'Install plugin: anthropics/claude-code/plugins/explanatory-output-style' env: GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - run: codex plugin install explanatory-output-style@claude-plugins-official + run: codex plugin install anthropics/claude-code/plugins/explanatory-output-style - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: diff --git a/.github/workflows/smoke-project.md b/.github/workflows/smoke-project.md index 9e92607bed..ae52e073bc 100644 --- a/.github/workflows/smoke-project.md +++ b/.github/workflows/smoke-project.md @@ -15,7 +15,7 @@ permissions: name: Smoke Project engine: codex plugins: - - explanatory-output-style@claude-plugins-official + - anthropics/claude-code/plugins/explanatory-output-style imports: - shared/mood.md - shared/gh.md diff --git a/.github/workflows/smoke-test-tools.lock.yml b/.github/workflows/smoke-test-tools.lock.yml index 82f4a10b6d..8576136c1e 100644 --- a/.github/workflows/smoke-test-tools.lock.yml +++ b/.github/workflows/smoke-test-tools.lock.yml @@ -25,7 +25,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 72ba32a133819f05b1e261c22ffb6b8b8f3ba8d20e79d38d48c22d128efc4d14 +# frontmatter-hash: 0897bff6c9f6cc36ba1c2bb267dfb3f5517ac7af6dfe29f6c1d95fe23a18cf9d name: "Agent Container Smoke Test" "on": @@ -179,10 +179,10 @@ jobs: run: /opt/gh-aw/actions/install_copilot_cli.sh 0.0.405 - name: Install awf binary run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 - - name: 'Install plugin: explanatory-output-style@claude-plugins-official' + - name: 'Install plugin: anthropics/claude-code/plugins/explanatory-output-style' env: GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - run: copilot plugin install explanatory-output-style@claude-plugins-official + run: copilot plugin install anthropics/claude-code/plugins/explanatory-output-style - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: diff --git a/.github/workflows/smoke-test-tools.md b/.github/workflows/smoke-test-tools.md index 61765ea19b..bc35489a9e 100644 --- a/.github/workflows/smoke-test-tools.md +++ b/.github/workflows/smoke-test-tools.md @@ -13,7 +13,7 @@ permissions: name: Agent Container Smoke Test engine: copilot plugins: - - explanatory-output-style@claude-plugins-official + - anthropics/claude-code/plugins/explanatory-output-style strict: true runtimes: node: diff --git a/docs/src/content/docs/reference/frontmatter.md b/docs/src/content/docs/reference/frontmatter.md index a06a89938a..b2c3d475c8 100644 --- a/docs/src/content/docs/reference/frontmatter.md +++ b/docs/src/content/docs/reference/frontmatter.md @@ -108,7 +108,6 @@ plugins: - github/test-plugin - acme/custom-tools - anthropics/claude-code/plugins/explanatory-output-style - - pyright-lsp@claude-plugins-official ``` **Object format** (with custom token): @@ -123,8 +122,8 @@ plugins: **Plugin identifier formats:** - **GitHub repository**: `org/repo` (e.g., `github/test-plugin`) - **Sub-plugin path**: `org/repo/path/to/plugin` (e.g., `anthropics/claude-code/plugins/explanatory-output-style`) -- **Marketplace reference**: `plugin-name@marketplace` (e.g., `pyright-lsp@claude-plugins-official`) -- **Repository with marketplace**: `org/repo@marketplace` (e.g., `anthropics/claude-code@anthropic-plugins`) + +**Note**: The plugin format must be compatible with the engine's CLI `plugin install` command. Currently, GitHub repository paths (with optional sub-paths) are the standard format supported across engines. **Token precedence** for plugin installation (highest to lowest): 1. Custom `plugins.github-token` from object format diff --git a/pkg/parser/schemas/main_workflow_schema.json b/pkg/parser/schemas/main_workflow_schema.json index ec4a3b9597..bcb9bf2e10 100644 --- a/pkg/parser/schemas/main_workflow_schema.json +++ b/pkg/parser/schemas/main_workflow_schema.json @@ -2483,11 +2483,10 @@ ] }, "plugins": { - "description": "Plugin configuration for installing plugins before workflow execution. Supports array format (list of repos/plugin configs) and object format (repos + custom token). Plugin paths can include sub-paths to specific plugins within a repository, or marketplace references using @marketplace syntax.", + "description": "Plugin configuration for installing plugins before workflow execution. Supports array format (list of repos/plugin configs) and object format (repos + custom token). Plugin paths can include sub-paths to specific plugins within a repository (e.g., 'anthropics/claude-code/plugins/explanatory-output-style').", "examples": [ ["github/copilot-plugin", "acme/custom-tools"], ["anthropics/claude-code/plugins/explanatory-output-style"], - ["pyright-lsp@claude-plugins-official"], [ "github/simple-plugin", { @@ -2513,7 +2512,7 @@ { "type": "string", "pattern": "^([a-zA-Z0-9_-]+(/[a-zA-Z0-9_-]+)+|[a-zA-Z0-9_-]+)(@[a-zA-Z0-9_-]+)?$", - "description": "Plugin identifier in one of these formats: 'org/repo', 'org/repo/path/to/plugin', 'plugin-name@marketplace', or 'org/repo@marketplace' (e.g., 'github/example-plugin', 'anthropics/claude-code/plugins/explanatory-output-style', 'pyright-lsp@claude-plugins-official')" + "description": "Plugin identifier in GitHub repository format: 'org/repo' or 'org/repo/path/to/plugin' (e.g., 'github/example-plugin', 'anthropics/claude-code/plugins/explanatory-output-style'). The pattern allows @marketplace syntax for potential future support, but current engines only support GitHub repository paths." }, { "type": "object", @@ -2523,7 +2522,7 @@ "id": { "type": "string", "pattern": "^([a-zA-Z0-9_-]+(/[a-zA-Z0-9_-]+)+|[a-zA-Z0-9_-]+)(@[a-zA-Z0-9_-]+)?$", - "description": "Plugin repository slug in the format 'org/repo', 'org/repo/path/to/plugin', 'plugin-name@marketplace', or 'org/repo@marketplace' (e.g., 'github/example-plugin', 'anthropics/claude-code/plugins/explanatory-output-style')" + "description": "Plugin repository slug in GitHub repository format: 'org/repo' or 'org/repo/path/to/plugin' (e.g., 'github/example-plugin', 'anthropics/claude-code/plugins/explanatory-output-style')" }, "mcp": { "type": "object", @@ -2564,7 +2563,7 @@ { "type": "string", "pattern": "^([a-zA-Z0-9_-]+(/[a-zA-Z0-9_-]+)+|[a-zA-Z0-9_-]+)(@[a-zA-Z0-9_-]+)?$", - "description": "Plugin identifier in one of these formats: 'org/repo', 'org/repo/path/to/plugin', 'plugin-name@marketplace', or 'org/repo@marketplace' (e.g., 'github/example-plugin', 'anthropics/claude-code/plugins/explanatory-output-style', 'pyright-lsp@claude-plugins-official')" + "description": "Plugin identifier in GitHub repository format: 'org/repo' or 'org/repo/path/to/plugin' (e.g., 'github/example-plugin', 'anthropics/claude-code/plugins/explanatory-output-style'). The pattern allows @marketplace syntax for potential future support, but current engines only support GitHub repository paths." }, { "type": "object", From f89daf96d6309804fca75001db26babe709f69df Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 8 Feb 2026 00:57:44 +0000 Subject: [PATCH 10/11] Add SupportsPlugins() capability and validate plugin support per engine Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/smoke-codex.lock.yml | 9 ++------- .github/workflows/smoke-codex.md | 2 -- .github/workflows/smoke-project.lock.yml | 9 ++------- .github/workflows/smoke-project.md | 2 -- pkg/workflow/agentic_engine.go | 9 +++++++++ pkg/workflow/claude_engine.go | 11 ++++++----- pkg/workflow/codex_engine.go | 1 + pkg/workflow/compiler_orchestrator_tools.go | 9 +++++++++ pkg/workflow/copilot_engine.go | 1 + pkg/workflow/custom_engine.go | 1 + 10 files changed, 31 insertions(+), 23 deletions(-) diff --git a/.github/workflows/smoke-codex.lock.yml b/.github/workflows/smoke-codex.lock.yml index 02ea7142a9..9a6d1c2b17 100644 --- a/.github/workflows/smoke-codex.lock.yml +++ b/.github/workflows/smoke-codex.lock.yml @@ -27,7 +27,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: f94bc20b93fbe2e3e1482c0def2e21b9a27e8d1fbdfaf3c2f77c03c604302864 +# frontmatter-hash: 3854250bdfed2a509135850e0617de23d37184ebc8395ab1c19e997046734794 name: "Smoke Codex" "on": @@ -196,10 +196,6 @@ jobs: run: npm install -g --silent @openai/codex@0.98.0 - name: Install awf binary run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 - - name: 'Install plugin: anthropics/claude-code/plugins/explanatory-output-style' - env: - GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - run: codex plugin install anthropics/claude-code/plugins/explanatory-output-style - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: @@ -1051,11 +1047,10 @@ jobs: const { main } = require('/opt/gh-aw/actions/redact_secrets.cjs'); await main(); env: - GH_AW_SECRET_NAMES: 'CODEX_API_KEY,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GH_AW_PLUGINS_TOKEN,GITHUB_TOKEN,OPENAI_API_KEY' + GH_AW_SECRET_NAMES: 'CODEX_API_KEY,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GITHUB_TOKEN,OPENAI_API_KEY' SECRET_CODEX_API_KEY: ${{ secrets.CODEX_API_KEY }} SECRET_GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }} SECRET_GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }} - SECRET_GH_AW_PLUGINS_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN }} SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SECRET_OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} - name: Upload Safe Outputs diff --git a/.github/workflows/smoke-codex.md b/.github/workflows/smoke-codex.md index c7bb3226da..f09867a255 100644 --- a/.github/workflows/smoke-codex.md +++ b/.github/workflows/smoke-codex.md @@ -13,8 +13,6 @@ permissions: pull-requests: read name: Smoke Codex engine: codex -plugins: - - anthropics/claude-code/plugins/explanatory-output-style strict: true imports: - shared/mood.md diff --git a/.github/workflows/smoke-project.lock.yml b/.github/workflows/smoke-project.lock.yml index 20250fef3d..52f518295f 100644 --- a/.github/workflows/smoke-project.lock.yml +++ b/.github/workflows/smoke-project.lock.yml @@ -27,7 +27,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 6b156db0729a740b5637b61953f291f8439aebda05cd394904d7c4a5dfbd2c01 +# frontmatter-hash: 444a34a300c5972bb914d3c10b44ef630d57544b9654a07681fed0038bf51692 name: "Smoke Project" "on": @@ -153,10 +153,6 @@ jobs: run: npm install -g --silent @openai/codex@0.98.0 - name: Install awf binary run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.13.12 - - name: 'Install plugin: anthropics/claude-code/plugins/explanatory-output-style' - env: - GITHUB_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} - run: codex plugin install anthropics/claude-code/plugins/explanatory-output-style - name: Determine automatic lockdown mode for GitHub MCP server id: determine-automatic-lockdown env: @@ -992,11 +988,10 @@ jobs: const { main } = require('/opt/gh-aw/actions/redact_secrets.cjs'); await main(); env: - GH_AW_SECRET_NAMES: 'CODEX_API_KEY,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GH_AW_PLUGINS_TOKEN,GITHUB_TOKEN,OPENAI_API_KEY' + GH_AW_SECRET_NAMES: 'CODEX_API_KEY,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GITHUB_TOKEN,OPENAI_API_KEY' SECRET_CODEX_API_KEY: ${{ secrets.CODEX_API_KEY }} SECRET_GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }} SECRET_GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }} - SECRET_GH_AW_PLUGINS_TOKEN: ${{ secrets.GH_AW_PLUGINS_TOKEN }} SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SECRET_OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} - name: Upload Safe Outputs diff --git a/.github/workflows/smoke-project.md b/.github/workflows/smoke-project.md index ae52e073bc..9998d72493 100644 --- a/.github/workflows/smoke-project.md +++ b/.github/workflows/smoke-project.md @@ -14,8 +14,6 @@ permissions: actions: read name: Smoke Project engine: codex -plugins: - - anthropics/claude-code/plugins/explanatory-output-style imports: - shared/mood.md - shared/gh.md diff --git a/pkg/workflow/agentic_engine.go b/pkg/workflow/agentic_engine.go index 2c1a446549..c6b696b8d5 100644 --- a/pkg/workflow/agentic_engine.go +++ b/pkg/workflow/agentic_engine.go @@ -125,6 +125,10 @@ type CapabilityProvider interface { // SupportsFirewall returns true if this engine supports network firewalling/sandboxing // When true, the engine can enforce network restrictions defined in the workflow SupportsFirewall() bool + + // SupportsPlugins returns true if this engine supports plugin installation + // When true, plugins can be installed using the engine's plugin install command + SupportsPlugins() bool } // WorkflowExecutor handles workflow compilation and execution @@ -199,6 +203,7 @@ type BaseEngine struct { supportsWebFetch bool supportsWebSearch bool supportsFirewall bool + supportsPlugins bool } func (e *BaseEngine) GetID() string { @@ -241,6 +246,10 @@ func (e *BaseEngine) SupportsFirewall() bool { return e.supportsFirewall } +func (e *BaseEngine) SupportsPlugins() bool { + return e.supportsPlugins +} + // GetDeclaredOutputFiles returns an empty list by default (engines can override) func (e *BaseEngine) GetDeclaredOutputFiles() []string { return []string{} diff --git a/pkg/workflow/claude_engine.go b/pkg/workflow/claude_engine.go index 3c1f0eda90..6618a75820 100644 --- a/pkg/workflow/claude_engine.go +++ b/pkg/workflow/claude_engine.go @@ -25,11 +25,12 @@ func NewClaudeEngine() *ClaudeEngine { description: "Uses Claude Code with full MCP tool support and allow-listing", experimental: false, supportsToolsAllowlist: true, - supportsHTTPTransport: true, // Claude supports both stdio and HTTP transport - supportsMaxTurns: true, // Claude supports max-turns feature - supportsWebFetch: true, // Claude has built-in WebFetch support - supportsWebSearch: true, // Claude has built-in WebSearch support - supportsFirewall: true, // Claude supports network firewalling via AWF + supportsHTTPTransport: true, // Claude supports both stdio and HTTP transport + supportsMaxTurns: true, // Claude supports max-turns feature + supportsWebFetch: true, // Claude has built-in WebFetch support + supportsWebSearch: true, // Claude has built-in WebSearch support + supportsFirewall: true, // Claude supports network firewalling via AWF + supportsPlugins: true, // Claude supports plugin installation }, } } diff --git a/pkg/workflow/codex_engine.go b/pkg/workflow/codex_engine.go index 6f8d49e593..193edb6553 100644 --- a/pkg/workflow/codex_engine.go +++ b/pkg/workflow/codex_engine.go @@ -41,6 +41,7 @@ func NewCodexEngine() *CodexEngine { supportsWebFetch: false, // Codex does not have built-in web-fetch support supportsWebSearch: true, // Codex has built-in web-search support supportsFirewall: true, // Codex supports network firewalling via AWF + supportsPlugins: false, // Codex does not support plugin installation }, } } diff --git a/pkg/workflow/compiler_orchestrator_tools.go b/pkg/workflow/compiler_orchestrator_tools.go index 964f8a9a8c..5147f95ae1 100644 --- a/pkg/workflow/compiler_orchestrator_tools.go +++ b/pkg/workflow/compiler_orchestrator_tools.go @@ -180,6 +180,15 @@ func (c *Compiler) processToolsAndMarkdown(result *parser.FrontmatterResult, cle orchestratorToolsLog.Printf("Merged plugins: %d total unique plugins", len(pluginInfo.Plugins)) } + // Validate that the engine supports plugins if plugins are configured + if pluginInfo != nil && len(pluginInfo.Plugins) > 0 { + if !agenticEngine.SupportsPlugins() { + pluginList := strings.Join(pluginInfo.Plugins, ", ") + return nil, fmt.Errorf("engine '%s' does not support plugin installation. Plugins specified: %s. Only Copilot and Claude engines support plugins. Please remove the 'plugins:' field from your workflow or use a different engine", agenticEngine.GetID(), pluginList) + } + orchestratorToolsLog.Printf("Plugin support validation passed for engine: %s", agenticEngine.GetID()) + } + // Add MCP fetch server if needed (when web-fetch is requested but engine doesn't support it) tools, _ = AddMCPFetchServerIfNeeded(tools, agenticEngine) diff --git a/pkg/workflow/copilot_engine.go b/pkg/workflow/copilot_engine.go index cef6673186..4549c4075f 100644 --- a/pkg/workflow/copilot_engine.go +++ b/pkg/workflow/copilot_engine.go @@ -45,6 +45,7 @@ func NewCopilotEngine() *CopilotEngine { supportsWebFetch: true, // Copilot CLI has built-in web-fetch support supportsWebSearch: false, // Copilot CLI does not have built-in web-search support supportsFirewall: true, // Copilot supports network firewalling via AWF + supportsPlugins: true, // Copilot supports plugin installation }, } } diff --git a/pkg/workflow/custom_engine.go b/pkg/workflow/custom_engine.go index f938409a83..6ee322d7e9 100644 --- a/pkg/workflow/custom_engine.go +++ b/pkg/workflow/custom_engine.go @@ -26,6 +26,7 @@ func NewCustomEngine() *CustomEngine { supportsMaxTurns: true, // Custom engine supports max-turns for consistency supportsWebFetch: false, // Custom engine does not have built-in web-fetch support supportsWebSearch: false, // Custom engine does not have built-in web-search support + supportsPlugins: false, // Custom engine does not support plugin installation }, } } From a044562c8878a532a01d176cf3505360dda41e3c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 8 Feb 2026 01:27:35 +0000 Subject: [PATCH 11/11] Add changeset [skip-ci] --- .changeset/patch-explanatory-output-style-plugin.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/patch-explanatory-output-style-plugin.md diff --git a/.changeset/patch-explanatory-output-style-plugin.md b/.changeset/patch-explanatory-output-style-plugin.md new file mode 100644 index 0000000000..07e0e9a326 --- /dev/null +++ b/.changeset/patch-explanatory-output-style-plugin.md @@ -0,0 +1,5 @@ +--- +"gh-aw": patch +--- + +Document the smoke workflow changes that install the explanatory-output-style plugin via the marketplace URL syntax, plus schema updates and MCP config support.