From 8f65efd5d118ef58ded827fa7de716dc3133d625 Mon Sep 17 00:00:00 2001 From: AI Assistant Date: Thu, 26 Mar 2026 07:10:56 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20add=20/prompts=20page=20=E2=80=94=20Cla?= =?UTF-8?q?ude=20Code=20prompt=20library?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Personal prompt library at /prompts with: - 6 categories: Module Work, API & Backend, Quality & Security, Session & Continue, Documentation & Meta, Quick Actions - 22 optimized prompt templates for ArchiTools development - Copy-to-clipboard on every prompt - One-time prompts with checkbox persistence (localStorage) - Search/filter across all prompts - Best practices sidebar (10 tips from Claude Code research) - Module name quick-copy badges - Variable placeholders highlighted ({MODULE_NAME}, etc.) - Deploy prep checklist, debug unknown errors, and more Not registered as a module — accessible only via direct URL. Co-Authored-By: Claude Opus 4.6 (1M context) --- src/app/(modules)/prompts/page.tsx | 878 +++++++++++++++++++++++++++++ 1 file changed, 878 insertions(+) create mode 100644 src/app/(modules)/prompts/page.tsx diff --git a/src/app/(modules)/prompts/page.tsx b/src/app/(modules)/prompts/page.tsx new file mode 100644 index 0000000..1805703 --- /dev/null +++ b/src/app/(modules)/prompts/page.tsx @@ -0,0 +1,878 @@ +"use client"; + +import { useState, useCallback, useEffect } from "react"; +import { Button } from "@/shared/components/ui/button"; +import { Badge } from "@/shared/components/ui/badge"; +import { Card, CardContent } from "@/shared/components/ui/card"; +import { Tabs, TabsList, TabsTrigger, TabsContent } from "@/shared/components/ui/tabs"; +import { + Copy, + Check, + ChevronDown, + ChevronRight, + Terminal, + Bug, + Sparkles, + Shield, + TestTube, + Plug, + RefreshCw, + FileText, + Zap, + Rocket, + ListChecks, + Brain, + Wrench, +} from "lucide-react"; + +// ─── Types ───────────────────────────────────────────────────────── + +type PromptCategory = { + id: string; + label: string; + icon: React.ReactNode; + description: string; + prompts: PromptTemplate[]; +}; + +type PromptTemplate = { + id: string; + title: string; + description: string; + prompt: string; + tags: string[]; + oneTime?: boolean; + variables?: string[]; +}; + +// ─── Module list for variable substitution hints ─────────────────── + +const MODULES = [ + "registratura", "address-book", "parcel-sync", "geoportal", "password-vault", + "mini-utilities", "email-signature", "word-xml", "word-templates", "tag-manager", + "it-inventory", "digital-signatures", "prompt-generator", "ai-chat", "hot-desk", + "visual-copilot", "dashboard", +] as const; + +// ─── Prompt Templates ────────────────────────────────────────────── + +const CATEGORIES: PromptCategory[] = [ + { + id: "module-work", + label: "Lucru pe modul", + icon: , + description: "Prompturi pentru lucru general, bugfix-uri si features pe module existente", + prompts: [ + { + id: "module-work-general", + title: "Lucru general pe modul", + description: "Sesiune de lucru pe un modul specific — citeste contextul, propune, implementeaza", + tags: ["regular", "module"], + variables: ["MODULE_NAME"], + prompt: `Scopul acestei sesiuni este sa lucram pe modulul {MODULE_NAME} din ArchiTools. + +Citeste CLAUDE.md si docs/MODULE-MAP.md inainte de orice. +Apoi citeste tipurile si componentele modulului: +- src/modules/{MODULE_NAME}/types.ts +- src/modules/{MODULE_NAME}/config.ts +- src/modules/{MODULE_NAME}/components/ (fisierele principale) +- src/modules/{MODULE_NAME}/services/ (daca exista) + +Dupa ce ai inteles codul existent, intreaba-ma ce vreau sa fac. +Nu propune schimbari pana nu intelegi modulul complet. +npx next build TREBUIE sa treaca dupa fiecare schimbare.`, + }, + { + id: "bugfix", + title: "Bugfix pe modul", + description: "Investigheaza si rezolva un bug specific", + tags: ["regular", "bugfix"], + variables: ["MODULE_NAME", "BUG_DESCRIPTION"], + prompt: `Am un bug in modulul {MODULE_NAME}: {BUG_DESCRIPTION} + +Citeste CLAUDE.md si docs/MODULE-MAP.md pentru context. + +Pasi: +1. Citeste fisierele relevante ale modulului +2. Identifica cauza root — nu ghici, citeste codul +3. Propune fix-ul INAINTE sa-l aplici +4. Aplica fix-ul minimal (nu refactoriza alte lucruri) +5. Verifica ca npx next build trece +6. Explica ce s-a schimbat si de ce + +Daca bug-ul e in interactiunea cu alt modul sau API, citeste si acel cod. +Nu adauga features sau "imbunatatiri" — doar fix bug-ul raportat.`, + }, + { + id: "feature-existing", + title: "Feature nou in modul existent", + description: "Adauga o functionalitate noua intr-un modul care exista deja", + tags: ["regular", "feature"], + variables: ["MODULE_NAME", "FEATURE_DESCRIPTION"], + prompt: `Vreau sa adaug un feature in modulul {MODULE_NAME}: {FEATURE_DESCRIPTION} + +Citeste CLAUDE.md si docs/MODULE-MAP.md pentru context. + +Pasi obligatorii: +1. Citeste types.ts, config.ts si componentele existente ale modulului +2. Verifica daca feature-ul necesita schimbari de tip (types.ts) +3. Verifica daca necesita API route nou sau modificare la cel existent +4. Propune planul de implementare INAINTE de a scrie cod +5. Implementeaza pas cu pas, verificand build dupa fiecare fisier major +6. Pastreaza conventiile existente (English code, Romanian UI) +7. npx next build TREBUIE sa treaca + +Reguli: +- Nu schimba structura modulului fara motiv +- Nu adauga dependinte noi daca nu e necesar +- Pastreaza compatibilitatea cu datele existente in storage/DB +- Daca trebuie migrare de date, propune-o separat`, + }, + { + id: "feature-new-module", + title: "Modul complet nou", + description: "Creeaza un modul nou de la zero urmand pattern-ul standard", + tags: ["one-time", "feature", "architecture"], + oneTime: true, + variables: ["MODULE_NAME", "MODULE_DESCRIPTION"], + prompt: `Vreau sa creez un modul nou: {MODULE_NAME} — {MODULE_DESCRIPTION} + +Citeste CLAUDE.md, docs/MODULE-MAP.md si docs/guides/MODULE-DEVELOPMENT.md. +Studiaza un modul existent similar ca referinta (ex: it-inventory sau hot-desk pentru module simple, registratura pentru module complexe). + +Creeaza structura standard: +src/modules/{MODULE_NAME}/ + components/{MODULE_NAME}-module.tsx + hooks/use-{MODULE_NAME}.ts (daca e nevoie) + services/ (daca e nevoie) + types.ts + config.ts + index.ts + +Plus: +- src/app/(modules)/{MODULE_NAME}/page.tsx (route page) +- Adauga config in src/config/modules.ts +- Adauga flag in src/config/flags.ts +- Adauga navigare in src/config/navigation.ts + +Reguli: +- Urmeaza EXACT pattern-ul celorlalte module +- English code, Romanian UI text +- Feature flag enabled by default +- Storage via useStorage('{MODULE_NAME}') hook +- npx next build TREBUIE sa treaca +- Nu implementa mai mult decat MVP-ul — pot adauga dupa`, + }, + ], + }, + { + id: "api", + label: "API & Backend", + icon: , + description: "Creare si modificare API routes, integrari externe, Prisma schema", + prompts: [ + { + id: "api-new-route", + title: "API route nou", + description: "Creeaza un endpoint API nou cu auth, validare, error handling", + tags: ["regular", "api"], + variables: ["ROUTE_PATH", "ROUTE_DESCRIPTION"], + prompt: `Creeaza un API route nou: /api/{ROUTE_PATH} — {ROUTE_DESCRIPTION} + +Citeste CLAUDE.md (sectiunea Middleware & Large Uploads) si docs/ARCHITECTURE-QUICK.md. + +Cerinte obligatorii: +1. Auth: middleware coverage SAU requireAuth() pentru rute excluse +2. Input validation pe toate parametrii +3. Error handling: try/catch cu mesaje utile (nu stack traces) +4. Prisma queries: parametrizate ($queryRaw cu template literals, NU string concat) +5. TypeScript strict: toate return types explicit + +Pattern de referinta — citeste un API route existent similar: +- CRUD simplu: src/app/api/storage/route.ts +- Cu Prisma raw: src/app/api/registratura/route.ts +- Cu external API: src/app/api/eterra/search/route.ts + +Daca ruta accepta uploads mari: +- Exclude din middleware matcher (src/middleware.ts) +- Adauga requireAuth() manual +- Documenteaza in CLAUDE.md sectiunea Middleware + +npx next build TREBUIE sa treaca.`, + }, + { + id: "prisma-schema", + title: "Modificare Prisma schema", + description: "Adauga model nou sau modifica schema existenta", + tags: ["regular", "database"], + variables: ["CHANGE_DESCRIPTION"], + prompt: `Vreau sa modific Prisma schema: {CHANGE_DESCRIPTION} + +Citeste prisma/schema.prisma complet inainte. + +Pasi: +1. Propune schimbarea de schema INAINTE de a o aplica +2. Verifica impactul asupra codului existent (grep pentru modelul afectat) +3. Aplica in schema.prisma +4. Ruleaza: npx prisma generate +5. Actualizeaza codul care foloseste modelul +6. npx next build TREBUIE sa treaca + +Reguli: +- Adauga @@index pe coloane folosite in WHERE/ORDER BY +- Adauga @@unique pe combinatii care trebuie sa fie unice +- onDelete: SetNull sau Cascade — niciodata default (restrict) +- Foloseste Json? pentru campuri flexibile (enrichment pattern) +- DateTime cu @default(now()) pe createdAt, @updatedAt pe updatedAt + +IMPORTANT: Aceasta schimbare necesita si migrare pe server (prisma migrate). +Nu face breaking changes fara plan de migrare.`, + }, + { + id: "external-integration", + title: "Integrare API extern", + description: "Conectare la un serviciu extern (pattern eTerra/ePay)", + tags: ["one-time", "api", "architecture"], + oneTime: true, + variables: ["SERVICE_NAME", "SERVICE_DESCRIPTION"], + prompt: `Vreau sa integrez un serviciu extern: {SERVICE_NAME} — {SERVICE_DESCRIPTION} + +Citeste CLAUDE.md sectiunile eTerra/ANCPI Rules si Middleware. +Studiaza pattern-ul din src/modules/parcel-sync/services/eterra-client.ts ca referinta. + +Pattern obligatoriu pentru integrari externe: +1. Client class separat in services/ (nu inline in route) +2. Session/token caching cu TTL (global singleton pattern) +3. Periodic cleanup pe cache (setInterval) +4. Health check daca serviciul e instabil +5. Retry logic pentru erori tranziente (ECONNRESET, 500) +6. Timeout explicit pe toate request-urile +7. Error handling granular (nu catch-all generic) +8. Logging cu prefix: console.log("[{SERVICE_NAME}] ...") + +Env vars: +- Adauga in docker-compose.yml +- NU hardcoda credentials in cod +- Documenteaza in docs/ARCHITECTURE-QUICK.md + +npx next build TREBUIE sa treaca.`, + }, + ], + }, + { + id: "quality", + label: "Calitate & Securitate", + icon: , + description: "Audituri de securitate, testing, performance, code review", + prompts: [ + { + id: "security-audit", + title: "Audit securitate complet", + description: "Scanare completa de securitate pe tot codebase-ul", + tags: ["periodic", "security"], + prompt: `Scopul acestei sesiuni este un audit complet de securitate al ArchiTools. +Aplicatia este IN PRODUCTIE la https://tools.beletage.ro. + +Citeste CLAUDE.md si docs/ARCHITECTURE-QUICK.md inainte de orice. + +Scaneaza cu agenti in paralel: + +1. API AUTH: Verifica ca TOATE rutele din src/app/api/ au auth check + (middleware matcher + requireAuth fallback) +2. SQL INJECTION: Cauta $queryRaw/$executeRaw cu string concatenation +3. INPUT VALIDATION: Verifica sanitizarea pe toate endpoint-urile +4. SECRETS: Cauta credentials hardcoded, env vars expuse in client +5. ERROR HANDLING: Catch goale, stack traces in responses +6. RACE CONDITIONS: Write operations concurente fara locks +7. DATA INTEGRITY: Upsert-uri care pot suprascrie date + +Grupeaza in: CRITICAL / IMPORTANT / NICE-TO-HAVE +Pentru fiecare: fisier, linia, problema, solutia propusa. +NU aplica fix-uri fara sa le listezi mai intai. +npx next build TREBUIE sa treaca dupa fiecare fix.`, + }, + { + id: "security-module", + title: "Audit securitate pe modul", + description: "Review de securitate focusat pe un singur modul", + tags: ["regular", "security"], + variables: ["MODULE_NAME"], + prompt: `Fa un audit de securitate pe modulul {MODULE_NAME}. + +Citeste CLAUDE.md si docs/MODULE-MAP.md. + +Verifica: +1. API routes folosite de modul — au auth? Input validation? +2. Prisma queries — SQL injection posibil? +3. User input — sanitizat inainte de stocare/afisare? +4. File uploads (daca exista) — validare tip/dimensiune? +5. Storage operations — race conditions la concurrent access? +6. Error handling — erori silentioase? Stack traces expuse? +7. Cross-module deps — sunt corecte si necesare? + +Raporteaza gasirile cu: fisier, linia, severitate, fix propus.`, + }, + { + id: "testing-hardcore", + title: "Testing hardcore", + description: "Edge cases, stress testing, error scenarios pentru un modul", + tags: ["periodic", "testing"], + variables: ["MODULE_NAME"], + prompt: `Vreau sa testez hardcore modulul {MODULE_NAME}. + +Citeste codul modulului complet, apoi gandeste: + +1. EDGE CASES: Ce se intampla cu input gol? Cu caractere speciale (diacritice, emoji)? Cu valori extreme (numar foarte mare, string foarte lung)? + +2. CONCURRENT ACCESS: Ce se intampla daca 2 useri fac aceeasi operatie simultan? Race conditions la write/update/delete? + +3. ERROR PATHS: Ce se intampla daca DB-ul e down? Daca API-ul extern nu raspunde? Daca sesiunea expira mid-operation? + +4. DATA INTEGRITY: Pot pierde date? Pot crea duplicate? Pot suprascrie datele altcuiva? + +5. UI STATE: Ce se intampla daca user-ul da click dublu pe buton? Daca navigheaza away in timpul unui save? Daca face refresh? + +6. STORAGE: Ce se intampla cu date legacy (format vechi)? Cu valori null/undefined in JSON? + +Pentru fiecare problema gasita: descrie scenariul, impactul, si propune fix. +Aplica doar ce e CRITICAL dupa aprobare.`, + }, + { + id: "performance-audit", + title: "Audit performanta", + description: "Identificare bottleneck-uri, optimizare queries, bundle size", + tags: ["periodic", "performance"], + variables: ["MODULE_NAME"], + prompt: `Analizeaza performanta modulului {MODULE_NAME}. + +Citeste CLAUDE.md (Storage Performance Rules) si codul modulului. + +Verifica: +1. N+1 QUERIES: storage.list() + get() in loop? Ar trebui exportAll() +2. LARGE PAYLOADS: Se incarca date inutile? lightweight: true folosit? +3. RE-RENDERS: useEffect-uri care trigger-uiesc re-render excesiv? +4. BUNDLE SIZE: Import-uri heavy (librarii intregi vs tree-shaking)? +5. API CALLS: Request-uri redundante? Lipseste caching? +6. DB QUERIES: Lipsesc indexuri? SELECT * in loc de select specific? +7. MEMORY: Global singletons care cresc nelimitat? Cache fara TTL? + +Propune optimizarile ordonate dupa impact. +Aplica doar dupa aprobare.`, + }, + ], + }, + { + id: "session", + label: "Sesiune & Continuare", + icon: , + description: "Prompturi pentru inceperea sau continuarea sesiunilor de lucru", + prompts: [ + { + id: "continue-tasklist", + title: "Continuare din sesiunea anterioara", + description: "Reia lucrul de unde am ramas, cu verificare task list", + tags: ["regular", "session"], + prompt: `Continuam din sesiunea anterioara. + +Citeste CLAUDE.md, MEMORY.md si docs/MODULE-MAP.md. +Verifica memory/ pentru context despre ce s-a lucrat recent. + +Apoi: +1. Citeste ROADMAP.md (daca exista) pentru task list-ul curent +2. Verifica git log --oneline -20 sa vezi ce s-a comis recent +3. Verifica git status sa vezi daca sunt schimbari uncommited +4. Rezuma ce s-a facut si ce a ramas +5. Intreaba-ma cum vreau sa continuam + +Nu incepe sa lucrezi fara confirmare. +npx next build TREBUIE sa treaca inainte de orice schimbare.`, + }, + { + id: "fresh-session", + title: "Sesiune noua — orientare", + description: "Prima sesiune sau sesiune dupa pauza lunga — ia-ti bearings", + tags: ["regular", "session"], + prompt: `Sesiune noua pe ArchiTools. + +Citeste in ordine: +1. CLAUDE.md (context proiect + reguli) +2. memory/MEMORY.md (index memorii) +3. Fiecare fisier din memory/ (context sesiuni anterioare) +4. git log --oneline -20 (activitate recenta) +5. git status (stare curenta) +6. docs/MODULE-MAP.md (harta module) + +Dupa ce ai citit tot, da-mi un rezumat de 5-10 randuri: +- Ce s-a facut recent +- Ce e in progress / neterminat +- Ce probleme sunt cunoscute +- Recomandarea ta pentru ce sa facem azi + +Asteapta confirmarea mea inainte de a incepe.`, + }, + { + id: "review-refactor", + title: "Code review & refactoring", + description: "Review si curatare cod pe o zona specifica", + tags: ["periodic", "review"], + variables: ["TARGET"], + prompt: `Fa code review pe: {TARGET} + +Citeste CLAUDE.md si codul tinta complet. + +Verifica: +1. PATTERN COMPLIANCE: Urmeaza conventiile din CLAUDE.md? +2. TYPE SAFETY: TypeScript strict — sunt tipuri corecte? Null checks? +3. ERROR HANDLING: Catch blocks complete? Promise-uri handled? +4. NAMING: English code, Romanian UI? Consistent cu restul? +5. COMPLEXITY: Functii prea lungi? Logica duplicata? +6. SECURITY: Input validation? Auth checks? +7. PERFORMANCE: N+1 queries? Re-renders inutile? + +Raporteaza gasirile ordonate dupa severitate. +NU aplica refactoring fara listarea schimbarilor propuse si aprobare. +Refactoring-ul trebuie sa fie minimal — nu rescrie ce functioneaza.`, + }, + { + id: "full-audit", + title: "Audit complet codebase", + description: "Scanare completa: cod mort, consistenta, securitate, documentatie", + tags: ["periodic", "audit"], + oneTime: true, + prompt: `Scopul acestei sesiuni este un audit complet al codebase-ului ArchiTools cu 3 obiective: + +1. REVIEW & CLEANUP: Cod mort, dependinte neutilizate, TODO/FIXME, consistenta module +2. SIGURANTA IN PRODUCTIE: SQL injection, auth gaps, race conditions, data integrity +3. DOCUMENTATIE: CLAUDE.md actualizat, docs/ la zi, memory/ updatat + +Citeste CLAUDE.md si MEMORY.md inainte de orice. +Foloseste agenti Explore in paralel (minim 5 simultan) pentru scanare. + +Grupeaza gasirile in: CRITICAL / IMPORTANT / NICE-TO-HAVE +NU modifica cod fara sa listezi mai intai toate schimbarile propuse. +npx next build TREBUIE sa treaca dupa fiecare schimbare. +Commit frecvent cu mesaje descriptive.`, + }, + ], + }, + { + id: "docs", + label: "Documentatie & Meta", + icon: , + description: "Update documentatie, CLAUDE.md, memory, si meta-prompting", + prompts: [ + { + id: "update-claudemd", + title: "Actualizeaza CLAUDE.md", + description: "Sincronizeaza CLAUDE.md cu starea actuala a codului", + tags: ["periodic", "docs"], + prompt: `CLAUDE.md trebuie actualizat sa reflecte starea curenta a proiectului. + +Pasi: +1. Citeste CLAUDE.md curent +2. Verifica fiecare sectiune contra codului real: + - Module table: sunt toate modulele? Versiuni corecte? + - Stack: versiuni la zi? + - Conventions: se respecta? + - Common Pitfalls: mai sunt relevante? Lipsesc altele noi? + - Infrastructure: porturi/servicii corecte? +3. Citeste docs/MODULE-MAP.md — e la zi? +4. Citeste docs/ARCHITECTURE-QUICK.md — e la zi? + +Propune schimbarile necesare inainte de a le aplica. +Target: CLAUDE.md sub 200 linii, informatii derivabile din cod mutate in docs/.`, + }, + { + id: "update-memory", + title: "Actualizeaza memory/", + description: "Curata memorii vechi si adauga context nou", + tags: ["periodic", "meta"], + prompt: `Verifica si actualizeaza memory/ files. + +Citeste memory/MEMORY.md si fiecare fisier indexat. + +Pentru fiecare memorie: +1. E inca relevanta? Daca nu, sterge-o. +2. Informatia e la zi? Daca nu, actualizeaz-o. +3. Informatia e derivabila din cod? Daca da, sterge-o (redundanta). + +Adauga memorii NOI pentru: +- Decizii arhitecturale recente care nu sunt in CLAUDE.md +- Feedback-ul meu din aceasta sesiune (daca am corectat ceva) +- Starea task-urilor in progress + +NU salva in memory: cod, structura fisierelor, git history — astea se pot citi direct.`, + }, + { + id: "improve-prompts", + title: "Imbunatateste prompturile", + description: "Meta-prompt: analizeaza si rafineaza prompturile din aceasta pagina", + tags: ["periodic", "meta"], + prompt: `Citeste codul paginii /prompts (src/app/(modules)/prompts/page.tsx). + +Analizeaza fiecare prompt din CATEGORIES: +1. E clar si specific? Lipseste context? +2. Pasii sunt in ordine logica? +3. Include safety nets (build check, aprobare)? +4. E prea lung/scurt? +5. Variabilele sunt utile? + +Apoi gandeste: ce prompturi noi ar fi utile bazat pe: +- Tipurile de task-uri care apar frecvent in git log +- Module care sunt modificate des +- Greseli care se repeta (din memory/ feedback) + +Propune imbunatatiri si prompturi noi. Aplica dupa aprobare.`, + }, + ], + }, + { + id: "quick", + label: "Quick Actions", + icon: , + description: "Prompturi scurte pentru actiuni rapide si frecvente", + prompts: [ + { + id: "quick-build", + title: "Verifica build", + description: "Build check rapid", + tags: ["quick"], + prompt: `Ruleaza npx next build si raporteaza rezultatul. Daca sunt erori, propune fix-uri.`, + }, + { + id: "deploy-prep", + title: "Pregatire deploy", + description: "Checklist complet inainte de push la productie", + tags: ["regular", "deploy"], + prompt: `Pregateste deploy-ul pe productie (tools.beletage.ro). + +Checklist: +1. git status — totul comis? Fisiere untracked suspecte? +2. npx next build — zero erori? +3. docker-compose.yml — env vars noi necesare? +4. prisma/schema.prisma — s-a schimbat? Necesita migrate? +5. middleware.ts — rute noi excluse daca e cazul? +6. Verifica ca nu sunt credentials hardcoded in cod +7. git log --oneline -5 — commit messages descriptive? + +Daca totul e ok, confirma "Ready to push". +Daca sunt probleme, listeaza-le cu fix propus. + +IMPORTANT: Dupa push, deploy-ul e MANUAL in Portainer. +Daca schema Prisma s-a schimbat, trebuie migrate pe server.`, + }, + { + id: "debug-unknown", + title: "Debug eroare necunoscuta", + description: "Investigheaza o eroare fara cauza evidenta", + tags: ["regular", "debug"], + variables: ["ERROR_DESCRIPTION"], + prompt: `Am o eroare: {ERROR_DESCRIPTION} + +Investigheaza: +1. Citeste stack trace-ul (daca exista) — gaseste fisierul root cause +2. Citeste codul relevant — nu ghici, verifica +3. Cauta pattern-uri similare in codebase (grep) +4. Verifica git log recent — s-a schimbat ceva care ar cauza asta? +5. Verifica env vars — lipseste ceva? +6. Verifica Prisma schema — model-ul e in sync? + +Dupa investigatie: +- Explica cauza root (nu simptomul) +- Propune fix minim +- Aplica fix dupa aprobare +- npx next build TREBUIE sa treaca`, + }, + { + id: "quick-deps", + title: "Update dependinte", + description: "Verifica si actualizeaza package.json", + tags: ["quick"], + prompt: `Verifica daca sunt update-uri disponibile pentru dependintele din package.json. + +Ruleaza: npm outdated +Listeaza ce se poate actualiza safe (minor/patch). +NU actualiza major versions fara discutie. +Dupa update: npx next build TREBUIE sa treaca.`, + }, + { + id: "quick-git-cleanup", + title: "Git cleanup", + description: "Verifica starea repo-ului si curata", + tags: ["quick"], + prompt: `Verifica starea repo-ului: +1. git status — fisiere uncommited? +2. git log --oneline -10 — commit-uri recente ok? +3. Fisiere untracked suspecte? (.env, tmp files, build artifacts) +4. .gitignore — lipseste ceva? + +Propune cleanup daca e nevoie.`, + }, + { + id: "quick-type-check", + title: "Verificare tipuri modul", + description: "Verifica typesafety pe un modul specific", + tags: ["quick"], + variables: ["MODULE_NAME"], + prompt: `Citeste src/modules/{MODULE_NAME}/types.ts si verifica: +1. Toate interfetele sunt folosite? (grep imports) +2. Sunt tipuri any sau unknown neutipizate? +3. Optional fields corect marcate cu ? +4. Consistenta cu Prisma schema (daca modulul foloseste DB direct) +Raporteaza rapid ce nu e in regula.`, + }, + ], + }, +]; + +// ─── Copy button component ───────────────────────────────────────── + +function CopyButton({ text, className }: { text: string; className?: string }) { + const [copied, setCopied] = useState(false); + + const handleCopy = useCallback(async () => { + await navigator.clipboard.writeText(text); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + }, [text]); + + return ( + + ); +} + +// ─── Prompt Card ─────────────────────────────────────────────────── + +function PromptCard({ prompt }: { prompt: PromptTemplate }) { + const [expanded, setExpanded] = useState(false); + const [done, setDone] = useState(false); + + // Persist one-time completion in localStorage + useEffect(() => { + if (prompt.oneTime) { + const stored = localStorage.getItem(`prompt-done-${prompt.id}`); + if (stored === "true") setDone(true); + } + }, [prompt.id, prompt.oneTime]); + + const toggleDone = useCallback(() => { + const next = !done; + setDone(next); + localStorage.setItem(`prompt-done-${prompt.id}`, String(next)); + }, [done, prompt.id]); + + return ( + + +
+
+
+ {prompt.oneTime && ( + + )} + +
+

{prompt.description}

+
+ {prompt.tags.map((tag) => ( + + {tag} + + ))} + {prompt.variables?.map((v) => ( + + {`{${v}}`} + + ))} +
+
+ +
+ + {expanded && ( +
+
+
+                {prompt.prompt}
+              
+ +
+
+ )} +
+
+ ); +} + +// ─── Stats bar ───────────────────────────────────────────────────── + +function StatsBar() { + const totalPrompts = CATEGORIES.reduce((s, c) => s + c.prompts.length, 0); + const oneTimePrompts = CATEGORIES.reduce( + (s, c) => s + c.prompts.filter((p) => p.oneTime).length, + 0, + ); + return ( +
+ {totalPrompts} prompturi + {oneTimePrompts} one-time + {CATEGORIES.length} categorii +
+ ); +} + +// ─── Best practices sidebar ──────────────────────────────────────── + +const BEST_PRACTICES = [ + { icon: , text: "Incepe cu CLAUDE.md — da context inainte de task" }, + { icon: , text: "Cere plan inainte de implementare" }, + { icon: , text: "npx next build dupa fiecare schimbare" }, + { icon: , text: "Nu refactoriza cand faci bugfix" }, + { icon: , text: "O sesiune = un obiectiv clar" }, + { icon: , text: "Verifica-ti munca: teste, build, manual" }, + { icon: , text: "Listeaza schimbarile inainte de a le aplica" }, + { icon: , text: "Actualizeaza memory/ la sfarsit de sesiune" }, + { icon: , text: "/clear intre task-uri diferite" }, + { icon: , text: "Dupa 2 corectii → /clear + prompt mai bun" }, +]; + +// ─── Main Page ───────────────────────────────────────────────────── + +export default function PromptsPage() { + const [search, setSearch] = useState(""); + + const filtered = CATEGORIES.map((cat) => ({ + ...cat, + prompts: cat.prompts.filter( + (p) => + !search || + p.title.toLowerCase().includes(search.toLowerCase()) || + p.description.toLowerCase().includes(search.toLowerCase()) || + p.tags.some((t) => t.toLowerCase().includes(search.toLowerCase())), + ), + })).filter((cat) => cat.prompts.length > 0); + + return ( +
+ {/* Header */} +
+

+ + Claude Code Prompts +

+

+ Biblioteca de prompturi optimizate pentru ArchiTools. Click pe titlu pentru a vedea, buton pentru a copia. +

+ +
+ + {/* Search */} +
+ setSearch(e.target.value)} + className="flex-1 h-9 rounded-md border bg-background px-3 text-sm placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring" + /> + {search && ( + + )} +
+ +
+ {/* Main content */} + + + {filtered.map((cat) => ( + + {cat.icon} + {cat.label} + + {cat.prompts.length} + + + ))} + + + {filtered.map((cat) => ( + +

{cat.description}

+ {cat.prompts.map((prompt) => ( + + ))} +
+ ))} +
+ + {/* Sidebar */} +
+ + +

+ + Best Practices +

+
+ {BEST_PRACTICES.map((bp, i) => ( +
+ {bp.icon} + {bp.text} +
+ ))} +
+
+
+ + + +

+ + Module disponibile +

+
+ {MODULES.map((m) => ( + { + navigator.clipboard.writeText(m); + }}> + {m} + + ))} +
+

Click pe modul = copiaza numele

+
+
+
+
+
+ ); +}