Continuing my experiments with agent-assisted development (this time with Opus 4.8 via Claude Code), I finally tackled an idea that had been sitting in my head for years: what if my collection of projects wasn’t a website, but a virtual space you could wander through? The result is Slashie’s Keep (desktop and mobile), whose first version was built in under a day using the structured data behind slashie.net. Play online or check the video below to get an idea of what it is about, and read on for full details on why and how it came to be.
Why build it?
This was as much a product design experiment as it was a development one. The main question was: what can an immersive 3D environment add, when it’s built on information that’s already available on a website? At first glance, it seems like it would just bring new accessibility challenges and unnecessary friction for accessing the same content.
The idea of presenting websites with 3D environments is far from new. Technologies like VRML were already exploring it back in the 90s, yet the concept never really caught on. I think people ultimately found it more convenient to browse a conventional website than to navigate a virtual space where finding and interacting with information simply took longer.
And yet, the question stands: could this medium prove useful, provided the experience is designed with a clear purpose? Let me share a bit of what this little experiment revealed to me upon its completion, as I could visualize these years of work “from their insides”.
One aspect that you will notice immediately as you enter The Keep is that it’s not just a static museum of information about the projects; there are characters inhabiting this place, they represent the people I have worked with, and depending on what year you teleport to, you’ll notice vast differences in population.

The first years, around the turn of the century, are completely desolate… but as years go by all varieties of characters start giving life to the place, each one bringing their own personality and contributing to the richness of the world simply by being there. This evolution reflects how the “social” aspect of the development of my projects fluctuates over time in a way that is harder to feel on a website.
The geometry of each level also reflects something less obvious: how focused I was on a handful of large projects versus spending the year experimenting through game jams and smaller ideas. Spaces with a “deep” main hall, or lacking side halls, reflect more focus on long term projects, while levels featuring large side-halls represent years of more experimentation… with potential learning and growth into different areas.
Finally, I ended up introducing personal elements from my life, such as characters for my wife and daughter, evolving through the years. Having them exist alongside the projects introduced another dimension, where the world wasn’t just about what I built, but who was in my life while I was building it.
So, I think one key thing that this format allowed was attempting to convey the experience of building a multitude of projects through the years, not just to showcase their execution, but also their evolution and the context under which they were developed.
Of course, there’s a lot of room to explore on this beyond a single day experiment but, in summary, I think there is potential in this kind of web-based immersive environments, but only when the medium can be used to communicate something that a traditional website cannot do efficiently. Simply presenting the same information in three dimensions probably isn’t enough.
Building the Keep
Now let’s talk about how this came to be. All in all, I think this was a positive agent-assisted development experience, taking under 2 hours of API time and a morning of fiddling around with Opus 4.8 I was able to create a Three.js app that did the job pretty well.
Here are a few of the prompts that shaped the project:
- Create a three.js app in typescript, first person view WASD movement, the player is exploring a kind of castle reflecting the projects shown in slashie.net, kind of as a gallery/museum. there are different floors, each floor is a year and has rooms for each project that was started that year, including a painting of the project, a panel with info the user can read, and buttons or levers that navigate to external sites such as portals to play online. Also in case of youtube videos, they can be played from within the app. The main source of data is slashie.net, which in turn uses https://slashie.net/data/projects.json for data. The tags for each project (like the collaborators, technologies, genre) should be represented somehow.
With this, it produced something that worked already and gave me the foundations to experience it. As I explored the floors I noticed that just having the projects was a bit boring, so I added a big “tapestry” with a picture and a summary for that year’s work, which would serve as a highlight for that year.

Another big change was improving the layout of the levels, whose geometry is generated on the fly based on the projects data. On the first versions it created a long corridor with info of all the projects on its walls, which was clearly boring and called to be redesigned. However, I didn’t want to ask the model to “make it more interesting.”; I believe there’s value on keeping this kind of creative decisions on the human side because those are the decisions that may ultimately give a product its personality.
- we need to change each floor’s geometry so it’s not a long stretched corridor and the tapestry is easier to reach; make it so that the tapestry is on a wall you see in front of you as soon as you enter the floor, then divide the projects into 2 halls in addition to the current corridor, these halls are placed with doors left and right of the elevator. The corridor holds 6 projects, then overflows into the halls dividing the number of remaining projects between them. The halls only exist if there are projects to place on them.
That was the initial idea, but as I explored again I noticed just spreading them around was missing the opportunity to give a meaning to their location inside the level, so I decided instead the “big” projects would be placed at a more prominent place, in the main halls, while there would be “side halls” for the smaller projects, making the levels more balanced and hopefully less boring.
- let’s change it so that the criteria to determine what projects are in the main corridor, and which are in the side hall, changes. the main corridor should be reserved for big projects over 20 days of dev (or, if effortMeasures data is not available, only projects belonging to the games1 and games2 categories)
And then, as detailed in the design section above, came the change to suggested by my daughter to add some NPCs to breathe life into the world. For this, I used the “collaborators” data (i.e. a map of the people I worked it, and in what projects), which is already part of the website’s data.
- Add NPCs in the map, simple roblox-like characters with a cube head, representing the persons I worked with each year (we already have the data). We can fetch the picture for each in the slashie.net website, which would be shown in the sides of the cube in the head. they are placed randomly in the map and stare at the player.
As I shared this with friends, I found out we also needed a mobile version, a request which Claude could handle without breaking a sweat, that meant adding a virtual joystick, an action button, plus swipe gestures to look around, the usual 2026 mobile game ui pattern.
Interestingly, what Claude struggled the most with was an UI issue when interacting with the “orb”, which allows the player to teleport between years; since there were so many year options (it’s been 26 years after all), the overlay overflowed the screen and wasn’t swipe-able in mobile, which broke it. After about 1 hour of debugging it ended up being a missing HTML element id, which had been likely removed in one of the iterations when I switched the object from being an elevator to an orb.
It’s interesting how the agent handled procedural geometry work surprisingly well, yet still stumbled over a tiny missing HTML id. I had to manually debug and fix the issue.
There were a lot more prompts of course, fixing small bugs and jumping over technical hurdles for accessing the resources, but I think these are interesting and may be useful if you want to make something similar.
Some Conclusions?
I think one reason why this can be considered a successful experiment is that the project had clear constraints and a vision in place from the beginning (technologies to use, interactions from the user), as well as an existing data model and assets that could be pulled from. The agents weren’t generating content of dubious quality, but rather reinterpreting an existing structured, honest, dataset built over the years with real experiences.
One question is, without the coding agents, would I even have attempted it? Probably not, given the evidence of how many years this idea had been sitting in the back of my mind. So I guess one takeaway is how agent-assisted development lowers the cost of exploring ideas that might otherwise stay in the back burner forever.
The biggest takeaway for me isn’t just that development became faster, it’s that I could experience the product after every iteration, notice what felt wrong, and reshape it immediately. Walking through empty halls made it obvious they needed inhabitants… that insight didn’t come from the model, it came from experiencing the prototype. Using agents just made that feedback loop short enough that I could discover it quickly, and helped make the design of the experience evolve in parallel with the implementation.
Now it’s your turn, if you were turning your own website into a place rather than a collection of pages, what would the architecture represent?
