Help us improve
Share bugs, ideas, or general feedback.
From lt-showroom
Creates, updates, and manages showcases on the lenne.tech Showroom platform (showroom.lenne.tech). Implements a 5-phase workflow: (1) project analysis, (2) screenshot capture with Docker/app startup and demo data, (3) SHOWCASE.md creation as single source of truth in the project repository, (4) showcase creation via API using SHOWCASE.md + customer feedback + web research, (5) interactive presentation with modern content blocks. Fetches customer feedback from https://lenne.tech/kundenerfolge. Uses MCP tools (showroom-api) or REST API for CRUD operations. Activates when creating, editing, managing showcases, portfolio entries, or the Showroom platform. NOT for platform development on the showroom codebase itself (use generating-nest-servers or developing-lt-frontend).
npx claudepluginhub lennetech/claude-code --plugin lt-showroomHow this skill is triggered — by the user, by Claude, or both
Slash command
/lt-showroom:creating-showcasesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill implements a **5-phase workflow** built around SHOWCASE.md as the single source of truth. Every showcase starts from a versioned Markdown file in the project repository and is then published to showroom.lenne.tech.
Generates multi-page marketing websites for web apps using captured screenshots, animated GIF workflows, and feature demos from the running app via browser tools.
Guides creation of production-ready Power Pages code sites as SPAs using React, Angular, Vue, or Astro, from requirements discovery to deployment with live dev server previews and git commits.
Recommends and installs shadcn/ui components plus 1,338 premium ShadcnBlocks and 1,189 free components for React/Next.js + Tailwind frontends like landing pages, dashboards, heroes, and pricing sections.
Share bugs, ideas, or general feedback.
This skill implements a 5-phase workflow built around SHOWCASE.md as the single source of truth. Every showcase starts from a versioned Markdown file in the project repository and is then published to showroom.lenne.tech.
/lt-showroom:showroom:analyze, /lt-showroom:showroom:screenshot, /lt-showroom:showroom:create, /lt-showroom:showroom:updateanalyzing-projects — Provides the evidence-based analysis report that populates SHOWCASE.mdgenerating-nest-servers / developing-lt-frontend — For platform developmentAll showcase operations go through the showroom-api MCP server. Screenshot capture uses the chrome-devtools MCP server.
The default MCP endpoint is https://api.showroom.lenne.tech/mcp (production). When working inside the showroom project repository, the project-level .mcp.json overrides this to http://localhost:3000/mcp for local development.
If MCP is unavailable (e.g. OAuth not configured), use the REST API directly via curl with session cookies:
# Login
curl -s -c /tmp/showroom-cookies.txt -X POST http://localhost:3000/iam/sign-in/email \
-H 'Content-Type: application/json' -d '{"email":"...","password":"..."}'
# Create showcase
curl -s -b /tmp/showroom-cookies.txt -X POST http://localhost:3000/showcases \
-H 'Content-Type: application/json' -d '{"title":"...","description":"...","contentBlocks":[...]}'
# Update showcase (add content blocks)
curl -s -b /tmp/showroom-cookies.txt -X PATCH http://localhost:3000/showcases/{id} \
-H 'Content-Type: application/json' -d '{"contentBlocks":[...]}'
# Publish
curl -s -b /tmp/showroom-cookies.txt -X POST http://localhost:3000/showcases/{id}/publish
${CLAUDE_SKILL_DIR}/reference/showcase-model.md — Showcase data model and status lifecycle${CLAUDE_SKILL_DIR}/reference/content-blocks.md — All content block types with schemas${CLAUDE_SKILL_DIR}/reference/screenshot-workflow.md — Docker-based startup, demo data, feature screenshots${CLAUDE_SKILL_DIR}/reference/best-practices.md — Content guidelines and block structure${CLAUDE_SKILL_DIR}/reference/showcase-markdown.md — SHOWCASE.md format specificationSHOWCASE.md is the single source of truth. Everything flows from this file.
Phase 1: Analyze → structured report with features + pages + startup info
Phase 2: Screenshots → start app, create demo data, capture per feature
Phase 3: SHOWCASE.md → versioned Markdown in project repository
Phase 4: Publish → SHOWCASE.md + feedback + research → showcase via API
Phase 5: Present → modern blocks with glassmorphism, scroll-reveal, 3D-tilt
Run the project-analyzer agent (or use analyzing-projects skill inline) for a full 8-dimension report. The report MUST include:
startupInfo block (how to start the app, database requirements, seed command)pagesInventory list (all routes with auth level and associated feature)Every claim must have a file:line evidence reference.
Check for Docker Compose first — it is the preferred startup method:
# Option A: Docker Compose (preferred)
[ -f "docker-compose.yml" ] || [ -f "compose.yaml" ] && docker compose up -d
# Option B: Standalone MongoDB if needed but not in compose
docker run -d --name showcase-mongo -p 27018:27017 mongo:7
# Option C: npm/pnpm dev server
pnpm run dev # or npm run dev
Always use run_in_background: true for server processes. Poll for readiness before proceeding.
package.json: seed, db:seed, demo, fixturespnpm run seedFor each feature in the analysis report:
docs/showcase/screenshots/ in the project directoryFilename convention: {feature-slug}-desktop.png, {feature-slug}-mobile.png
# Ensure the screenshot directory exists
mkdir -p docs/showcase/screenshots
After all screenshots are captured:
pkill -f "nuxt dev" / pkill -f "next dev" / pkill -f "nest start"docker compose down or docker stop showcase-mongolsof -ti :<port>Full details in ${CLAUDE_SKILL_DIR}/reference/screenshot-workflow.md.
Write SHOWCASE.md in the project root (or docs/showcase/SHOWCASE.md for monorepos).
The file format is defined in ${CLAUDE_SKILL_DIR}/reference/showcase-markdown.md.
Key requirements:
version in frontmatter MUST match package.json versionanalyzed_at is the ISO date of the analysisdocs/showcase/screenshots/Parse the SHOWCASE.md frontmatter and sections as the primary content source.
https://lenne.tech/kundenerfolge:
Block 1: tech-stack — Technology badges from SHOWCASE.md tech stack section
Block 2: text "Überblick" — 3-5 paragraphs from SHOWCASE.md overview section
Block 3: feature-grid — 6-8 features from SHOWCASE.md features section
Block 4: text "Architektur" — From SHOWCASE.md architecture section
Block 5: screenshot-gallery — Screenshots from docs/showcase/screenshots/
Block 6: text "Highlights" — From SHOWCASE.md technical highlights section
Block 7: timeline — Project milestones (if derivable from git or SHOWCASE.md)
Block 8: testimonial — Customer feedback from lenne.tech/kundenerfolge
Block 9: team — Team members (if known)
Block 10: text "Ergebnis" — From SHOWCASE.md results section
Block 11: cta — "Termin vereinbaren" + meeting URL
# Auth
curl -s -c /tmp/showroom-cookies.txt -X POST http://localhost:3000/iam/sign-in/email \
-H 'Content-Type: application/json' -d '{"email":"...","password":"..."}'
# Create with all content blocks
curl -s -b /tmp/showroom-cookies.txt -X POST http://localhost:3000/showcases \
-H 'Content-Type: application/json' -d '{ "title": "...", "description": "...", "contentBlocks": [...] }'
# Publish
curl -s -b /tmp/showroom-cookies.txt -X POST http://localhost:3000/showcases/{id}/publish
Use modern content blocks that align with lt-website-reloaded styling:
Visual design principles:
feature-grid cards use glass-style background with blurfeature-grid itemsContent block choices:
feature-grid for capabilities (not a plain list)screenshot-gallery with viewport switcher (desktop/tablet/mobile tabs)testimonial for social prooftech-stack with category grouping (Frontend, Backend, Database, Infrastructure)timeline for project history or phasesText quality standards (same as best-practices.md):
<h3>, <p>, <ul>/<li>, <strong>{
"contentBlocks": [
{
"type": "tech-stack",
"title": "Technologien",
"order": 0,
"visible": true,
"showInToc": true,
"content": {
"technologies": [
{"name": "NestJS", "category": "backend"},
{"name": "Nuxt", "category": "frontend"}
]
}
},
{
"type": "text",
"title": "Projektübersicht",
"order": 1,
"visible": true,
"showInToc": true,
"content": {
"html": "<h3>Was ist das Projekt?</h3><p>Detailed description...</p><h3>Das Problem</h3><p>...</p><h3>Die Lösung</h3><p>...</p>"
}
},
{
"type": "feature-grid",
"title": "Features",
"order": 2,
"visible": true,
"showInToc": true,
"content": {
"features": [
{"title": "Feature Name", "description": "What it does and why it matters", "icon": "lucide:icon-name"}
]
}
},
{
"type": "testimonial",
"title": "Kundenfeedback",
"order": 7,
"visible": true,
"showInToc": false,
"content": {
"quote": "The customer quote...",
"author": "Person Name",
"company": "Company Name"
}
}
]
}
docs/showcase/screenshots/