Skip to content
| Marketplace
Sign in
Visual Studio Code>AI>RTL PowerPoint GeneratorNew to Visual Studio Code? Get it now.
RTL PowerPoint Generator

RTL PowerPoint Generator

NGPowerToys

|
3 installs
| (0) | Free
Generate Hebrew and right-to-left PowerPoint decks from GitHub Copilot Chat. Correct RTL text direction, mirrored bullets and tables, and the bidi fixes PowerPoint actually needs.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

RTL PowerPoint Generator

Build Hebrew and right-to-left PowerPoint decks from GitHub Copilot Chat.

python-pptx cannot produce a correct RTL deck on its own — it has no API for the paragraph rtl attribute, the complex-script font, or the presentation-level RTL flag. This extension ships a skill that supplies all of them, installs it into your workspace so Copilot can find it, and removes it again when the extension goes away.

Getting started

There are two ways in, and the agent is the one you have to pick deliberately.

1. Select the agent (recommended)

Open Copilot Chat and choose RTL PowerPoint Generator from the agent dropdown — the picker at the bottom-left of the chat input, next to the model selector, that normally reads Agent or Ask. Selecting it is what loads the RTL rules; if you leave the default agent selected, Copilot answers as usual and may hand-roll python-pptx, which produces a deck with the text on the wrong side.

Once selected, just describe the deck:

סקירה רבעונית לצוות הפיתוח, 8 שקפים

The agent stays selected for the rest of the conversation. Switch back to the default agent the same way.

If it is not in the dropdown, see Troubleshooting.

2. Use the chat participant

@hebrew-deck works from any agent without switching — type it at the start of your message. It runs the build itself using the extension's own interpreter discovery, so it is the more reliable of the two.

Chat

@hebrew-deck in Copilot Chat:

/build Describe a deck; get a spec, a built .pptx, and a validation report
/spec Draft the JSON spec without building
/validate Check that a .pptx is genuinely right-to-left
/setup Check Python and python-pptx are ready
@hebrew-deck /build סקירה רבעונית לצוות הפיתוח, 8 שקפים

Styling

Before building, /build asks how the deck should look:

  • Default theme — the one set in hebrewPptx.defaultTheme.
  • Describe the styling — in your own words; it shapes tone and density.
  • Match a reference image — pick a screenshot, logo or brand slide and the palette is taken from it. The accent comes from the image; background and text colours are pinned to whatever stays readable, so a busy reference still produces a legible deck. The image is also shown to the model, when the model accepts images, so it can match how formal and how dense the slides are.

The question is skipped when your prompt already mentions styling ("in dark theme", "בעיצוב המותג"). Turn it off entirely with hebrewPptx.askForStyling.

Without a slash command it answers questions about Hebrew and RTL decks using the skill's own documentation.

What the model decides, and what it does not

The slide content is written by whichever language model you have selected in Copilot Chat — this extension does not write Hebrew. So the wording, the structure, how well the Hebrew reads, and whether anything is invented all depend on the model you pick. A stronger model gives better decks; a weaker or faster one gives thinner content, clumsier Hebrew, and a greater tendency to pad a slide with numbers nobody supplied.

What does not depend on the model, because it is enforced by the skill's Python rather than generated:

  • right-to-left direction, right alignment, mirrored bullets and table columns
  • the bidi fixes for +18%, .NET, C# and friends
  • the complex-script font on every Hebrew run
  • palette contrast when matching a reference image
  • the validate_rtl.py check that the shipped file is genuinely RTL

In other words the deck is always correctly Hebrew; whether it is any good is down to the model.

Two practical consequences:

  • Read the deck before presenting it. validate_rtl.py verifies structure, not truth. It cannot tell you a figure is wrong, only that it renders on the correct side. Give the model your real numbers rather than asking it to supply them — the spec prompt tells it to invent none, but that is an instruction, not a guarantee.
  • Reference images need a vision-capable model. The palette is extracted locally and always works, but the image is only shown to the model if the selected model accepts images. If it does not, the extension falls back to text-only and the reference influences colours but not slide density.

Switch models with the picker at the bottom of the Copilot Chat input.

Commands

All under RTL PowerPoint in the palette: New Deck Spec, Build Deck from Spec, Validate Presentation, Check Python Setup, Open Skill Documentation. Build and Validate also appear on the right-click menu for .json and .pptx files.

Requirements

Python 3.9+ with python-pptx:

python3 -m pip install python-pptx      # macOS / Linux
py -3 -m pip install python-pptx        # Windows

The extension finds interpreters by absolute path as well as by name — a VS Code launched from Finder or the Dock does not inherit your shell's PATH, so a bare python3 there is often Apple's /usr/bin/python3, which has no third-party packages. Homebrew, /usr/local/bin, python.org framework builds, pyenv and the Python extension's selected interpreter are all checked. On Windows py -3 is preferred, because a bare python3 hits an app-execution alias that opens the Microsoft Store.

If it still cannot find yours, set hebrewPptx.pythonPath to the full path. RTL PowerPoint: Check Python Setup lists everything that was tried.

PowerPoint itself is not required to generate or validate decks.

Where the skill lives

Nowhere on your disk. The skill and the agent ship inside the extension and are registered declaratively through contributes.chatSkills and contributes.chatAgents. VS Code hands the model the skill's absolute path when it loads it.

That means:

  • Your repositories are never touched. No .github/skills/, no .github/prompts/, and copilot-instructions.md is never written or appended to.
  • Uninstalling is clean by construction. The registration disappears with the extension; there is nothing left to delete. Earlier versions relied on the vscode:uninstall hook, which VS Code declares in its package.json schema but no runtime code actually reads or spawns — so uninstall genuinely left files behind.
  • You are always on the current version. A copy written into a workspace or a user folder would be discovered at a higher priority than the shipped one and would silently override it, pinning you to whatever version wrote it.

Trade-off: because nothing is written to ~/.copilot/skills, the skill is visible to VS Code only — not to Copilot CLI or Claude Code.

Upgrading from 1.0.0

1.0.0 wrote the skill into every workspace it saw. On first run 2.0.0 removes those copies, using the install manifest as proof of authorship, and tells you what it removed. A repository that committed its own copy has no manifest entry and is never touched — but it will override the shipped skill, so /setup warns when it sees one. RTL PowerPoint: Clean Up Files from Earlier Versions… removes it after a modal confirmation.

Requires chat.useAgentSkills

If that setting is off, VS Code loads no agent skills at all, including contributed ones. /setup reports it.

Troubleshooting

"RTL PowerPoint Generator" is not in the agent dropdown. Reload the window first (Developer: Reload Window) — a newly installed extension's contributions do not appear until the window reloads. Then run RTL PowerPoint: Check Python Setup, which asks VS Code what it actually registered and prints the resolved paths.

Copilot ignores the RTL rules. Check the agent dropdown actually says RTL PowerPoint Generator. Selecting a different agent, or the default one, does not load the skill.

The deck builds but Hebrew renders left-aligned. A copy of the skill left in your workspace by version 1.0.0 overrides the one shipped with the extension, so you are running old scripts. /setup warns when it sees one; RTL PowerPoint: Clean Up Files from Earlier Versions… removes it.

Settings## Settings

Setting Default
hebrewPptx.deckFolder "" Where decks go when no folder is open
hebrewPptx.pythonPath "" Interpreter override
hebrewPptx.askForStyling true Ask about styling before building
hebrewPptx.defaultTheme navy light, dark, navy, warm
hebrewPptx.deckOutputFolder out Where .pptx files land

Building from source

cd extension
npm install
npm run compile      # syncs the skill from the repo, then compiles
npx @vscode/vsce package --no-dependencies

The skill has one source of truth: .github/skills/hebrew-rtl-pptx/ at the repository root. npm run compile copies it into assets/, so the extension payload cannot drift from the skill the repo tests.

License

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft