Stats
Actions
Tags
From vibe-toolkit
Crea una página nueva en el route group correcto según el rol que la puede ver
How this command is triggered — by the user, by Claude, or both
Slash command
/vibe-toolkit:add-pageFiles this command reads when invoked
The summary Claude sees in its command listing — used to decide when to auto-load this command
# /add-page — Agregá una página a tu app Argumentos esperados: `<ruta> <rol>` - `<ruta>`: la URL de la página (sin slash inicial). Ej: `dashboard`, `perfil`, `agentes/nuevo`. - `<rol>`: uno de `public`, `internal`, `agents`, `client`. ## Validaciones 1. Si faltan argumentos: pediles al usuario los faltantes. 2. Si el `<rol>` no es uno de los 4: avisale y pediselos de nuevo. 3. Si la página ya existe en otro route group: advertí y preguntale qué quiere hacer. 4. **Si `<ruta>` está vacía y `<rol>` NO es `public`**: rechazá. Solo `(public)/` puede tener `page.tsx` en la raíz (URL `/`). Si ...
Argumentos esperados: <ruta> <rol>
<ruta>: la URL de la página (sin slash inicial). Ej: dashboard, perfil, agentes/nuevo.<rol>: uno de public, internal, agents, client.<rol> no es uno de los 4: avisale y pediselos de nuevo.<ruta> está vacía y <rol> NO es public: rechazá. Solo (public)/ puede tener page.tsx en la raíz (URL /). Si el usuario quiere una "home" para otro rol, pediles una ruta concreta (ej. dashboard, agentes, portal).Generá el archivo src/app/(<rol>)/<ruta>/page.tsx con este contenido (reemplazando placeholders):
public:export default function Page() {
return (
<main className="mx-auto max-w-4xl px-6 py-10">
<h1 className="text-2xl font-semibold">Página: <ruta></h1>
<p className="mt-2 text-ole-muted">
Esta página es pública: cualquier persona puede verla.
Revisá ${CLAUDE_PLUGIN_ROOT}/docs/03-datos-sensibles.md antes de mostrar datos personales.
</p>
</main>
);
}
internal, agents o client:import { getCurrentUser } from "@/lib/auth/current-user";
export default async function Page() {
const { user, role } = await getCurrentUser();
return (
<main className="mx-auto max-w-4xl px-6 py-10">
<h1 className="text-2xl font-semibold">Página: <ruta></h1>
<p className="mt-2 text-ole-muted">
Esta página solo la ven usuarios con rol: <rol>.
</p>
<p className="mt-4 text-sm">
Hola, {user?.email} (rol: {role}).
</p>
</main>
);
}
(NO duplicar el requireAccess acá — el layout.tsx del route group ya lo hace.)
Decile al usuario:
✅ Creé src/app/(<rol>)/<ruta>/page.tsx.
Tu página va a estar en: http://localhost:3000/<ruta>
(El nombre del route group "(<rol>)" no aparece en la URL — es solo para organizar).
Editala con Claude para agregar el contenido que querés.
¿Querés que te ayude a hacer algo más?
${CLAUDE_PLUGIN_ROOT}/docs/04-roles-y-secciones.md con él para entender.src/config/access.ts desde acá. Si el usuario quiere cambiar las reglas, hay que hacerlo a propósito.npx claudepluginhub olelife/claude-vibe-marketplace --plugin vibe-toolkit/add-pageAdds a new page to a web app with routing, data fetching from APIs, SEO metadata, layout using existing patterns, and loading/error/empty states.