Repository navigation
feat(visualization): build slide decks through the claude.ai Slides Artifact type - #6117
Conversation
…rtifact type Add /visualization:present. It writes the markdown outline as the record, finds the Slides type through the Artifact tool's quickstart at run time, and fills the deck as the type instructs. check-deck.mjs runs before the type's create call: it refuses a deck folder inside a working tree, refuses a K2 deck carrying anything but text and uploaded images, and runs the shared publish gate over every file. Move explain-change's publish gate and credential patterns into lib/publish-gate.mjs, with generated copies in review and visualization. The rendered-views convention gains an Artifact types section. Closes #5867 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…layers in the gate - check-deck replaces the K2 deny-list over a naive tag regex with a quote-aware tokenizer and an allowlist of text and layout elements, attributes, and uploaded image sources. Attribute values are decoded before checking, a K2 style may not hold (, \ or &, and anything the tokenizer cannot parse is refused. Every reviewer reproducer is a must-refuse test. - The deck folder, project/, and every file inside must be plain files reached through no symlink. - The script resolves the medium layers itself (argument, plugin option, ~/.claude/rendered-views.md, untracked gitignored overlay); a tracked team file can keep a deck local but never publish it. --explicit is gone. - The deck title is gated and printed; the create call uses that title. - The overlay guard and project-root lookup move to lib/publish-gate.mjs, which digest-policy now imports. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Claude finished @kyle-sexton's task in 3m 8s —— View job Claude's code review (
|
|
Claude finished @kyle-sexton's task in 4m 9s —— View job Security review (
|
|
claude-review has reviewed this pull request through c3b1a03; a later push is reviewed from there. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: bbac6b9eb9
ℹ️ 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".
|
claude-security-review has reviewed this pull request through c3b1a03; a later push is reviewed from there. |
…oss-plugin registry Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 24s —— View job Security review (
|
|
Claude finished @kyle-sexton's task in 1m 0s —— View job Claude's code review (
|
Add the visualize successor section, K2 untrusted-content framing, a dated pointer for the Artifact quickstart specifics, and slash-prefixed skill references in the rendered-views convention. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 1m 8s —— View job Security review (
|
|
Claude finished @kyle-sexton's task in 1m 9s —— View job Claude's code review (
|
…artifact-types # Conflicts: # plugins/review/.claude-plugin/plugin.json # plugins/review/CHANGELOG.md
|
Claude finished @kyle-sexton's task in 1m 26s —— View job Claude's code review (
|
|
Claude finished @kyle-sexton's task in 50s —— View job Security review (
|
Closes #5867
Summary
Adds
/visualization:present, a skill that builds slide decks with the claude.ai Slides Artifact type. The markdown outline is the record. The deck is a view of it, made from the type that the Artifact tool'squickstartreturns at run time. The skill never stores atype_url.skills/present/scripts/check-deck.mjsmakes three checks. It refuses a deck folder inside a working tree. It refuses a K2 deck that carries anything beyond text and uploaded images: a live embed, script, inline SVG, link, event handler, CSSurl(), or a foreign image. It then runs the shared publish gate over every deck file. It runs before the type's create call, because that call already publishes the title.lib/publish-gate.mjsnow holds the explain-change publish gate (feat(review): check the explain-change risk map blind, add a quiz and a recording link, and publish as an Artifact by default #6102) and its credential patterns. Review and visualization each carry a generated copy.digest-policy.mjsimports it, and the digest gate makes the same decisions as before; its 71 tests pass unchanged.artifact. Only layers that a checked-out branch cannot write count as an explicitartifact: the user's argument, the plugin option,~/.claude/rendered-views.md, or an overlay that is untracked and gitignored. A team-layerartifactis not explicit.artifact. The skill names the destination ("a private Artifact on claude.ai") before it publishes. It keeps the deck local when the source repository is notPUBLICor a file looks like a credential, and it names the opt-in.NONEstands for K0 content with no repository source.presentis registered as an emitter and as the secondartifactdefault. Both are recorded in the convention's CHANGELOG.visualize. It now hands slide decks topresent.Fix
plugins/visualization/skills/present/(SKILL.md,scripts/check-deck.mjs, evals),lib/publish-gate.mjsplus tests, andplugins/visualization/tests/present.test.*.plugins/review/skills/explain-change/scripts/digest-policy.mjsnow imports the shared gate.scripts/shared-copies.txtregisters two copies.docs/catalog.mdanddocs/skill-cheat-sheet.mdare regenerated.Verification
node --test plugins/visualization/tests/present.test.mjs: 19/19 pass.node --test lib/publish-gate.test.mjs: 13/13 pass.node --test plugins/review/tests/explain-change.test.mjs: 71/71 pass. The other review suites pass too.scripts/sync-shared-copies.sh --checkand--check-bump origin/main,scripts/validate-plugins.sh,scripts/check-changed-skills.sh origin/main,check-skill-description-voice,check-skill-portability,check-shell-portability,check-changelog-parity --check-bump/--check-order,check-skill-leaf-names.sh --check,check-contract-clause-coverage.py,check-evals-quality.sh(0 warnings), markdownlint (0 issues), and typos.scripts/check-html-assets.sh, becausehtmlhintis not installed and this change adds no.htmlasset.NONE, gate resultartifact): https://claude.ai/artifact/MWHBPC3WwG3vBie9J1aXe1. It is private, and you can delete it after review.Owner review still open (needs-human):
list scope: typeson 2026-10-03 returned these core types: Slides, Design, Design System, and Docs. The account lists no design systems.Related
review:explain-change)🤖 Generated with Claude Code