# Portfolio

> Agent-ready portfolio of Ruben Marcus, AI Fullstack Engineer. A cinematic WebGL site for humans and a protocol surface for agents: a remote MCP server (io.github.rubenmarcus/portfolio, on the official MCP Registry), a public Agent Skill, llms.txt and a plain-text resume over curl. Built with Astro 5, Svelte 5, Three.js and GSAP.

- **Type:** MCP server
- **Install:** `agentstack add mcp-rubenmarcus-portfolio`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [rubenmarcus](https://agentstack.voostack.com/s/rubenmarcus)
- **Installs:** 0
- **Category:** [Developer Tools](https://agentstack.voostack.com/c/developer-tools)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [rubenmarcus](https://github.com/rubenmarcus)
- **Source:** https://github.com/rubenmarcus/portfolio
- **Website:** https://www.rubenmarcus.dev

## Install

```sh
agentstack add mcp-rubenmarcus-portfolio
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# rubenmarcus.dev

Personal portfolio. **Agent-ready · humans welcome.** Terminal-green and agent-first: a cinematic 3D hero, a blog
written for humans and machines, and an MCP server so AI agents can read the
resume and book a call without ever rendering the page.

**Live:** [rubenmarcus.dev](https://rubenmarcus.dev)

## Stack

- [Astro 5](https://astro.build) (islands, content collections, i18n EN/PT)
- [Svelte 5](https://svelte.dev) (runes) for interactive components
- [Three.js](https://threejs.org) — custom GLSL shaders (ice-flow background,
  contour/wireframe/ASCII render states)
- [GSAP](https://gsap.com) + [Lenis](https://lenis.darkroom.engineering) — scroll choreography
- [Tailwind CSS 3](https://tailwindcss.com)
- Vercel (adapter with edge middleware, Analytics)

## Features

- Hero with an AI-generated, auto-rigged 3D character that types at a desk and
  dissolves through render states (contour isolines → wireframe → scanline
  point cloud → ASCII) driven by scroll
- Live HUD telemetry fed by GitHub/npм stats, degrading gracefully offline
- Bilingual blog (EN + PT mirrors) with generated particle-art covers,
  copy-button code blocks, view counter (optional Supabase)
- `/api/mcp` — a hand-rolled JSON-RPC 2.0 MCP server (`tools/list`,
  `tools/call`) exposing resume data and a `book_intro` tool
- `/api/hire` — contact endpoint with field caps + honeypot, relayed via
  formsubmit.co
- `llms.txt`, `robots.txt` with AI-crawler rules, RSS (EN/PT), sitemap with
  hreflang, JSON-LD — built for answer engines, not just search
- Edge middleware easter egg: `curl rubenmarcus.dev` returns a plain-text resume
- Bottom-right audio deck (YouTube IFrame API) persisted across page
  transitions
- Visual QA gauntlet (`scripts/visual-gauntlet.mjs`) that screenshots every
  page on desktop + mobile and captures console errors

## Getting started

```bash
pnpm install
pnpm dev
```

Production build:

```bash
pnpm build
pnpm preview
```

Quality gates:

```bash
pnpm check       # astro check (types)
pnpm text:gate   # prose lint for the blog voice (scripts/text-gate.mjs)
```

## Environment variables

Everything degrades gracefully without env vars. Optional:

- `PUBLIC_SUPABASE_URL` + `PUBLIC_SUPABASE_ANON_KEY` — blog view counter
- `OPENROUTER_API_KEY` — only for the asset-generation scripts in `scripts/`

## Project structure

```
src/
  components/        # Svelte/Astro components (hero, deck, cards, lab demos)
  content/           # blog (EN) + blog-pt collections, zod-validated
  layouts/           # BaseLayout: SEO, OG, JSON-LD, analytics, audio deck
  lib/               # data (projects, agents, tools), three/, motion/, assets/
  pages/
    api/             # hire.ts, mcp.ts, resume.json.ts, resume.txt.ts
    pt/              # PT mirrors of every page
    work/            # case studies
  middleware.ts      # edge: curl user-agent → text resume
scripts/             # asset generators (OpenRouter) + text-gate + visual gauntlet
public/art/          # generated covers, logos, frames
qa/                  # gauntlet shots + scoring log
```

## License

MIT

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [rubenmarcus](https://github.com/rubenmarcus)
- **Source:** [rubenmarcus/portfolio](https://github.com/rubenmarcus/portfolio)
- **License:** MIT
- **Homepage:** https://www.rubenmarcus.dev

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** yes
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-rubenmarcus-portfolio
- Seller: https://agentstack.voostack.com/s/rubenmarcus
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
