GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — plugin-submissions by jeffreyaven · Pull Request #896 · stackql/stackql

Conversation

@jeffreyaven

@jeffreyaven jeffreyaven commented Nov 4, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

Resolves #893 (ChatGPT plugin directory ZIP) and #895 (Anthropic directory plugin bundle), and rewrites docs/stackql_release_process.md as the single source of truth for publishing a release across every surface.

What changes

Shared launcher. packaging/mcpb/npm/bin/stackql-mcp.js is now dependency-free: an inline zip reader (central directory walk, zip64 aware, stored and deflate) replaces adm-zip, so package.json has no dependencies and the lockfile is empty. It also honours STACKQL_PLUGIN_CONFIG_DIR (default ~/.stackql) and passes --env.file and --configfile from that directory, which the plugins relied on. Both plugin packages vendor this file byte-for-byte under server/bin/ next to server/platforms.json; the validators enforce equality, so the npm package stays the single source.

OpenAI plugin (packaging/openai-plugin/plugins/stackql): portable Agent Plugins layout (plugin.json with $schema and extensions.com.openai: 30-character shortDescription, support and terms URLs, six capabilities, three prompts, five positive and three negative review test cases on credential-free GitHub data, release notes, onboardingSkill, requires_local_executor; mcp.json with a type: stdio entry and ${PLUGIN_ROOT} paths) alongside the Codex overlay. The overlay .codex-plugin/plugin.json is now rendered from plugin.json, and validate.py fails if it drifts. make openai-plugin-zip VERSION=X.Y.Z builds dist/stackql-plugin-X.Y.Z.zip (plugin contents at the ZIP root, deterministic, hooks and app references and credentials refused, size checked).

Claude plugin (packaging/claude-plugin, new): .claude-plugin/plugin.json with the directory listing fields and the server declared inline as node ${CLAUDE_PLUGIN_ROOT}/server/bin/stackql-mcp.js, README (the listing description, states what the plugin runs, fetches and sends), LICENSE, icon, the same skill and payload. scripts/validate-claude-plugin.py applies the directory's rules (no top-level bin/, no lockfile or node_modules, 256 KiB per file, 512 files, text and images only, README of 40 words). make claude-plugin-mirror pushes it to stackql/stackql-claude-plugin through publish-mirror.sh (new vector; handles an empty mirror), because the directory reads plugins from a GitHub repo and holds every version of a subfolder plugin for a reviewer.

Renderer and release flow. render-platforms.sh gains the claude-plugin vector and a shared plugin payload step (launcher, pins, LICENSE, icon, packaging/mcpb/skills/stackql-setup/SKILL.md); make npm-manifest renders both plugins. The openai-plugin.yml workflow becomes plugins.yml: both validators and both smoke tests on four platforms, a render check against the published checksums, claude plugin validate --strict, and the ZIP as a run artifact. npm, PyPI and both plugin pins are bumped to the published 0.12.824 (the stamp from the last release dispatch was never committed).

Docs. docs/stackql_release_process.md now opens with a surfaces table (manual, semi-automatic, automatic) and adds steps 10 to 13: pin PR, ChatGPT directory upload, Claude plugin mirror and directory publish, assurance, plus a credentials table. packaging/mcpb/docs/anthropic-submission.md is rewritten for the developer portal (MCPB listings are deprecated; a local server is listed only inside a plugin bundle). listings.md, packaging/mcpb/README.md, CLAUDE.md, docs/install.md, docs/chatgpt-codex-plugin.md and packaging/openai-plugin/README.md updated to match.

CI. Pins the Linux Test job in build.yml to ubuntu-24.04: ubuntu-latest rolled to Ubuntu 26.04 while this PR's first run was in flight, and on that image the job's nginx apt-key import fails (gpg: /home/runner/.gnupg: directory does not exist) before any test runs. The amd64 Docker Test shards and the Docker Python Test also fail on 26.04: its newer Docker Compose writes container progress lines into the output the mocked robot suite captures, so 33 exact-output assertions fail, while the arm64 legs on ubuntu-24.04-arm pass. The dockertest amd64 leg and dockertestverify are pinned to 24.04 as well. The remaining ubuntu-latest jobs (Linux Build, Python package build, Docker Build) passed on 26.04 and stay unpinned.

Design choices to debate once

  • Dependency-free launcher instead of vendoring adm-zip (as Package and ship the ChatGPT plugin directory ZIP for the local stdio MCP server #893 proposed): avoids 20 third-party files in two plugin folders, the Anthropic "package install" hold, and a runtime dependency in the npm package. The regression test test_npm_arm64_extracts_exe_into_its_own_cache and the Windows smoke jobs exercise the new extractor on real bundles.
  • Mirror repository for the Claude plugin rather than submitting the monorepo subfolder; the source of truth stays here. The repo does not exist yet (gh repo create is in the checklist).
  • The plugin version equals the StackQL version; metadata-only fixes ship with the next release.
  • Not done here: userConfig for the config directory (Cowork drops a server whose option has no default; left for a follow-up), the review.demo_recording_url (must be recorded; validate.py warns while unset), and stackql.io /terms and /support (Terms, support and OpenAI domain challenge pages for the ChatGPT plugin directory listing stackql.io#305).

Test plan

Local, Windows x64, against the installed 0.12.824 binary and the real stackql-mcp-windows-x64.mcpb:

  • launcher extraction of server/stackql.exe from the real bundle matches Python's zipfile byte-for-byte; spawn args carry --approot, --env.file, --configfile
  • python packaging/openai-plugin/scripts/validate.py and python packaging/mcpb/scripts/validate-claude-plugin.py pass
  • smoke-test.py passes for both vendored launchers (MCP handshake, tools/list, pull_provider, list_services, reload_credentials)
  • make openai-plugin-zip VERSION=0.12.824 writes a 10-entry ZIP that passes build-zip.py --check
  • claude plugin validate ./packaging/claude-plugin --strict (Claude Code 2.1.318, run from WSL): validation passed

CI: stdio-plugins (new), mcp-packaging PR validation (packaging regressions incl. the npm launcher test on ubuntu, windows and windows-arm; smoke-windows runs the npm launcher against freshly built bundles). No Go changes, so no robot scenario; the behaviour change is in packaging scripts covered by the workflows above.

🤖 Generated with Claude Code

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
jeffreyaven and others added 4 commits November 5, 2026 08:27
@jeffreyaven @claude
plugin-submissions
2c42ab3
Package the local stdio MCP server for both vendor directories and make
docs/stackql_release_process.md the source of truth for every surface.

OpenAI (#893): portable Agent Plugins layout (plugin.json with
extensions.com.openai interface, review test cases, publication notes,
onboarding skill, requires_local_executor; mcp.json stdio with
${PLUGIN_ROOT}) alongside the Codex overlay, which is now derived from
plugin.json by the renderer; 30-character short description, support and
terms URLs; vendored launcher under server/bin; make openai-plugin-zip and
build-zip.py; validate.py extended to the directory rules.

Anthropic (#895): packaging/claude-plugin plugin bundle (.claude-plugin
manifest with listing fields, inline mcpServers, README, LICENSE, icon,
skill, same vendored payload); validate-claude-plugin.py; publish-mirror.sh
and make claude-plugin-mirror push it to stackql/stackql-claude-plugin;
Anthropic submission checklist rewritten for the developer portal.

Shared: the npm launcher is now dependency-free (inline zip extraction
replaces adm-zip) and honours STACKQL_PLUGIN_CONFIG_DIR, passing --env.file
and --configfile, so both plugins vendor it verbatim; render-platforms.sh
gains the claude-plugin vector and the shared plugin payload;
skills/stackql-setup/SKILL.md is the onboarding skill for both; the
openai-plugin workflow becomes plugins.yml (both validators, both smoke
tests, render check, claude plugin validate --strict, ZIP artifact);
npm, PyPI and plugin pins bumped to the published 0.12.824.

Resolves #893
Resolves #895

Co-Authored-By: Claude Fable 5.1 <[email protected]>
@jeffreyaven @claude
build: pin the Linux Test job to ubuntu-24.04
f2d8885
ubuntu-latest moved to Ubuntu 26.04 on 2026-11-04. On that image the
nginx apt-key import in the Linux Test job fails (gpg: /home/runner/.gnupg
does not exist) before any test runs, and nginx.org publishes no 26.04
suite yet. Pin the job to the image main was validated on.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
@jeffreyaven @claude
build: correct the ubuntu-24.04 pin comment
41dc9e4
nginx.org does publish a 26.04 (resolute) apt suite; the verified failure
on the 26.04 image is only the gpg home directory abort during the key
import, so the comment now states that alone.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
@jeffreyaven @claude
build: pin the Docker Test jobs to ubuntu-24.04
2ea986f
On the Ubuntu 26.04 image that ubuntu-latest now resolves to, the newer
Docker Compose writes container progress lines (Container ... Running,
Creating, Created) into the output the mocked robot suite captures, so 33
exact-output assertions fail on the amd64 shards and the Docker Python
Test. The arm64 legs on ubuntu-24.04-arm pass. Pin the amd64 leg and the
shard verification job to the image main was validated on.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
@jeffreyaven jeffreyaven self-assigned this Nov 5, 2026
@jeffreyaven
jeffreyaven merged commit f7b4116 into main Nov 5, 2026
78 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@jeffreyaven
jeffreyaven deleted the feature/plugin-submissions branch November 5, 2026 00:11
This was referenced Nov 5, 2026
attach-artifacts-utf8 #897
Merged
post-v1.0.888 directory and release clean-ups #900
Closed
directory listings: outstanding portal steps (OpenAI review, Anthropic review and Verified organization) #902
Open
build: re-validate the pinned test jobs on Ubuntu 26.04 and remove the ubuntu-24.04 pins #903
Open
claude-plugin: expose the StackQL config directory as a userConfig option #904
Open
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

@jeffreyaven jeffreyaven

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Package and ship the ChatGPT plugin directory ZIP for the local stdio MCP server

Uh oh!

There was an error while loading. Please reload this page.

1 participant

@jeffreyaven
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.