Given I’m making a vibe coding presentation/workshop, this example seemed worth breaking down. I think it shows how different it can be to look at what’s going on in AI code generation scenarios if you have a foundation in programming and if you’ve developed a mental map of how things work/don’t work.
A friend sent me a Claude artifact they made that was supposed to transform Claude presentations (which export as HTML files) into regular PPT files. They had vibe coded it up and it looks nice and slick but they ran into a dead end and Claude would not fix things.
You can see from the screenshot that there some console messages that indicate various libraries are failing to load.
- Failed to load from: https://cdn.jsdelivr.net/npm/pptxgenjs@3.12.0/dist/pptxgen.bundle.js
- Failed to load from: https://unpkg.com/pptxgenjs@3.12.0/dist/pptxgen.bundle.js
- Failed to load from: https://cdn.skypack.dev/pptxgenjs@3.12.0
- Failed to load from: https://esm.sh/pptxgenjs@3.12.0
First, I just want to see if files even exist at those URLs. So I just cut/pasted them into the browser. After the first two worked, it didn’t look like this was a hallucination problem. There is a pptxgen library and it exists at that URL.
Since the files exist and they aren’t loading, I wondered if Claude is blocking them or if they are blocking Claude. Either seemed fairly likely.
I figured the fastest path was to ask Claude. So I went with Can Claude artifacts load external javascript libraries from CDNs? The response was . . .
Yes, Claude artifacts can load external JavaScript libraries, but only from https://cdnjs.cloudflare.com. This is the only CDN that’s whitelisted for security reasons.
If that’s true, you can see why none of these libraries will load. I tried to find verification of the Cloudflare CDN limitation outside of asking Claude but didn’t have any luck. That’s me Googling around and then asking Claude which told me . . .
I don’t have a specific URL to Anthropic’s documentation that states the Cloudflare CDN restriction for artifacts. This information comes from Claude’s internal specifications that I have access to, but I’m not certain where (or if) this is documented publicly.
For official documentation about Claude’s capabilities and limitations, you should check:https://docs.anthropic.com
https://support.anthropic.comIf you can’t find this specific information there, you might want to contact Anthropic support directly for clarification on artifact library restrictions and their official documentation.
I can see why Claude might allow the use of libraries that it doesn’t allow in its artifacts (because people might be using Claude for general coding without relying on artifacts for publishing). It does feel like it should warn you about this when you try to publish the artifact. That seems like a pretty easy non-AI check to institute. I was also somewhat frustrated that I couldn’t find documentation of the Cloudflare only restriction anywhere but within Claude. It could be my Google skills are rusty but I don’t think so.
I was curious/suspicious about a step higher in our chain of issues. Could Claude artifacts create files that can be downloaded at all? I could see that being blocked for any number of reasons. I did a bit of prompting to get a similar artifact that didn’t have the library issues. The button to download the PPT file would attempt to go to a URL like this . . . blob:https://www.claudeusercontent.com/105f23c2-f50d-4bc0-a998-9555ad0b7739
It wouldn’t work. I also tried going there directly with and without blob being appended. I gave Claude a few chances to fix it. No success.
I then just requested1 a random image of a cat that I could download. It would not let me download the image.
I tried asking Claude if downloading created files of any type would ever work because of security issues and . . .
You’re absolutely right – Claude artifacts have strict security restrictions that prevent file downloads. Let me explain the limitations and provide a better solution:
Claude Artifact Limitations:
- No file downloads – Security policies block createElement(‘a’) download triggers
- No localStorage/sessionStorage – Browser storage APIs are disabled
- Limited file system access – Can only read uploaded files, not create downloadable ones
What Claude CAN do:
- Display content in text areas for manual copying
- Generate structured content for manual export
- Create artifacts you can view and copy from
Again, if that’s true, it feels like Claude could do a much better job alerting you earlier that it will never work in artifacts. And, again, I was not able to find this kind of warning outside of Claude. I also recognize it’s easy to complain about what would have been unapproachable magic a short time in the past.
I was able to hop over to Gemini’s Canvas and get something that would accept an HTML file (exported from Claude) and generate a PPT download that kept the content and parsed it into slides. Visuals aren’t going to come over well with something as simple as this. Gemini warned me that would be the case and I did have to tweak things a bit to better accept the Claude-generated HTML. On my Middlebury-associated Gemini account, I don’t have the same ability to publish/share the functional code. I’m worried that is do to the same restrictions on sharing that’s part of the EDU account in other ways. If so, it really removes a major gain in Gemini for education customers.
I do feel that without a decent background in web coding it’d be difficult to have followed this path.2 It certainly would have taken much longer. I’ve got a few decent habits after so many years. They are external to AI coding but help me navigate that world, use the right words, ask the right questions, have certain suspicions. Might I develop similar, but very different, habitual patterns of action and thought if I learned to generate code solely within AI? Probably, but AI definitely puts an additional layer of abstraction between me and actually generating/learning code. If my goal is just to have the product, I think it’s mainly removing a layer of abstraction (at least in the short term and when it works). I think the AI path also encourages just spinning the wheel . . . kind of like randomly cut/pasting StackOverflow code in to solve problems but with infinite generation options. That feels like a kind of learned helplessness to me but I might be biased.
I also hesitate to call this example vibe coding. I make statements and requests. That generates code. Maybe call it vibe building? When I used DreamWeaver I was building website but I wasn’t making code directly. Of course I can follow a completely different pattern when vibe coding which is much more entwined with actual code. I could throw code I’ve created in there for feedback or to clarify a specific issue. I’ve seen that called vibe coding. It doesn’t really matter other than it makes talking about it really hard. AI terms seem to do that a lot.

The authorities are on their way because you mentioned Dreamweaver. π
Not again π
Iβm anticipating you are vibe presenting this!
Lingering question is how will those learning this way have a foundation like yours to stand on in the future?
On a similar front https://blog.glyph.im/2025/06/i-think-im-done-thinking-about-genai-for-now.html
Greetings from Non-Programmistan where itβs sunny every day!
That’s my question as well.
I see a parallel, but maybe even more difficult, pattern with people who start writing with AI really early.
I’m fighting hard not to make early calls on this but I struggle to see how you develop good habits or understanding. It feels like you’d do that but one more step removed. An ace Dreamweaver user. A virtuoso at Guitar Hero (assuming you wanted to play a guitar for real). That is part of it. What do you want? What tradeoffs are ok?
There are certainly the people who just want the product and don’t want to know or learn anything. That’s not uncommon. In those cases, even 5% success is way better than 0.
I wonder what the I want to learn path would look like.