Skip to content

[codex] Add slide deck MCP tool#18

Merged
mikeylong merged 1 commit into
mainfrom
codex/create-slide-deck-mcp
Jul 5, 2026
Merged

[codex] Add slide deck MCP tool#18
mikeylong merged 1 commit into
mainfrom
codex/create-slide-deck-mcp

Conversation

@mikeylong

Copy link
Copy Markdown
Owner

Summary

  • Add create_slide_deck to the JudgmentKit MCP surface for dry-run deck planning and guarded local PPTX export.
  • Wire the tool through library metadata, stdio, Streamable HTTP, installer/smoke checks, and site docs.
  • Update the Codex plugin manifest, README, skill, and OpenAI metadata so deck, presentation, PowerPoint, and PPTX requests are discoverable.

Validation

  • node tests/mcp.test.mjs
  • node tests/mcp-stdio.test.mjs
  • node tests/mcp-http.test.mjs
  • npm run mcp:smoke
  • node tests/install-mcp.test.mjs
  • node tests/codex-plugin.test.mjs
  • npm run codex-plugin:check
  • node tests/skills.test.mjs
  • node tests/site.test.mjs
  • node tests/site-local-server.test.mjs
  • npm run test:presentation-theme
  • git diff --check
  • Direct local PPTX export smoke
  • Stdio MCP actual PPTX export smoke

Full npm test was not run.

@vercel

vercel Bot commented Jul 5, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
judgmentkit-ai Ready Ready Preview, Comment Jul 5, 2026 11:29pm

@mikeylong
mikeylong merged commit 87da637 into main Jul 5, 2026
5 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9990b83c8e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/mcp.mjs
await fsp.mkdir(parent, { recursive: true });

const [realRoot, realParent] = await Promise.all([
fsp.realpath(root),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Reject symlinked deck output roots

When outputs/judgmentkit-slide-decks (or a parent directory) already exists as a symlink, resolving root here makes the symlink target the trusted base, so create_slide_deck with artifact export can pass the parent check and rename the PPTX outside the workspace while returning an outputs/... path. Since this tool explicitly promises writes only under the guarded output directory, the guard should reject symlinked output roots/components or validate against the intended workspace path before writing.

Useful? React with 👍 / 👎.

Comment thread src/mcp.mjs
{
code: "artifact_runtime_unavailable",
details: {
checked_candidates: candidates,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Redact runtime paths from artifact errors

When a caller requests artifact creation (dry_run:false or an output.path) on an installation without a usable artifact runtime, the structured error now returns every checked candidate path, including paths derived from HOME and CODEX_* environment variables. On the public MCP endpoint this leaks server filesystem layout despite diagnostics being opt-in/redacted by default, so these candidates should be omitted or gated to explicit local diagnostics.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant