feat(i18n): add new 'Tastes' section to multiple language files

This commit is contained in:
Fatih Kadir Akın
2026-03-02 23:04:16 +03:00
parent c68ec47adf
commit 121e9fd43f
41 changed files with 537 additions and 60 deletions
+36
View File
@@ -0,0 +1,36 @@
# Taste (Continuously Learned by [CommandCode][cmd])
[cmd]: https://commandcode.ai/
# github-actions
- Use `actions/checkout@v6` and `actions/setup-node@v6` (not v4) in GitHub Actions workflows. Confidence: 0.65
- Use Node.js version 24 in GitHub Actions workflows (not 20). Confidence: 0.65
# project
- This project is **prompts.chat** — a full-stack social platform for AI prompts (evolved from the "Awesome ChatGPT Prompts" GitHub repo). Confidence: 0.95
- Package manager is npm (not pnpm or yarn). Confidence: 0.95
# architecture
- Use Next.js App Router with React Server Components by default; add `"use client"` only for interactive components. Confidence: 0.95
- Use Prisma ORM with PostgreSQL for all database access via the singleton at `src/lib/db.ts`. Confidence: 0.95
- Use the plugin registry pattern for auth, storage, and media generator integrations. Confidence: 0.90
- Use `revalidateTag()` for cache invalidation after mutations. Confidence: 0.90
# typescript
- Use TypeScript 5 in strict mode throughout the project. Confidence: 0.95
# styling
- Use Tailwind CSS 4 + Radix UI + shadcn/ui for all UI components. Confidence: 0.95
- Use the `cn()` utility for conditional/merged Tailwind class names. Confidence: 0.90
# api
- Validate all API route inputs with Zod schemas. Confidence: 0.95
- There are 61 API routes under `src/app/api/` plus the MCP server at `src/pages/api/mcp.ts`. Confidence: 0.90
# i18n
- Use `useTranslations()` (client) and `getTranslations()` (server) from next-intl for all user-facing strings. Confidence: 0.95
- Support 17 locales with RTL support for Arabic, Hebrew, and Farsi. Confidence: 0.90
# database
- Use soft deletes (`deletedAt` field) on Prompt and Comment models — never hard-delete these records. Confidence: 0.95
+7 -2
View File
@@ -39,6 +39,7 @@
"promptmasters": "Promptmasters", "promptmasters": "Promptmasters",
"prompts": "الأوامر", "prompts": "الأوامر",
"skills": "المهارات", "skills": "المهارات",
"tastes": "Tastes",
"workflows": "سير العمل", "workflows": "سير العمل",
"categories": "الفئات", "categories": "الفئات",
"tags": "الوسوم", "tags": "الوسوم",
@@ -107,7 +108,9 @@
"title": "الأوامر", "title": "الأوامر",
"create": "إنشاء أمر", "create": "إنشاء أمر",
"createSkill": "إنشاء مهارة", "createSkill": "إنشاء مهارة",
"createTaste": "إنشاء Taste",
"skillsDescription": "مهارات الوكيل هي أوامر متعددة الملفات تمنح وكلاء الذكاء الاصطناعي قدرات متخصصة. تتضمن تعليمات وإعدادات وملفات داعمة يمكن استخدامها مع Claude وCursor وWindsurf ومساعدي البرمجة الآخرين.", "skillsDescription": "مهارات الوكيل هي أوامر متعددة الملفات تمنح وكلاء الذكاء الاصطناعي قدرات متخصصة. تتضمن تعليمات وإعدادات وملفات داعمة يمكن استخدامها مع Claude وCursor وWindsurf ومساعدي البرمجة الآخرين.",
"tastesDescription": "Tastes هي ملفات markdown مفردة تحدد أسلوب البرمجة وتفضيلاتك. تساعد وكلاء البرمجة بالذكاء الاصطناعي على تعلم طريقة كتابتك للكود، حتى يتمكنوا من مطابقة اصطلاحاتك وأنماطك وذوقك.",
"createInfo": "هذه المنصة لا تقوم بتشغيل أو تنفيذ الأوامر — إنها مكتبة مجتمعية لمشاركة واكتشاف أوامر الذكاء الاصطناعي. أنشئ أمرك هنا، ويمكن للآخرين نسخه واستخدامه في أدوات الذكاء الاصطناعي المفضلة لديهم مثل ChatGPT و Claude و Gemini أو أي نموذج لغوي آخر. يمكن للمجتمع أيضاً التعليق على أوامرك واقتراح تحسينات من خلال طلبات التغيير.", "createInfo": "هذه المنصة لا تقوم بتشغيل أو تنفيذ الأوامر — إنها مكتبة مجتمعية لمشاركة واكتشاف أوامر الذكاء الاصطناعي. أنشئ أمرك هنا، ويمكن للآخرين نسخه واستخدامه في أدوات الذكاء الاصطناعي المفضلة لديهم مثل ChatGPT و Claude و Gemini أو أي نموذج لغوي آخر. يمكن للمجتمع أيضاً التعليق على أوامرك واقتراح تحسينات من خلال طلبات التغيير.",
"hfDataStudio": { "hfDataStudio": {
"button": "استوديو بيانات HF", "button": "استوديو بيانات HF",
@@ -189,7 +192,8 @@
"audio": "صوت", "audio": "صوت",
"structured": "منظم", "structured": "منظم",
"document": "مستند", "document": "مستند",
"skill": "مهارة" "skill": "مهارة",
"taste": "Taste"
}, },
"inputType": "أمر المستخدم", "inputType": "أمر المستخدم",
"outputType": "استجابة الذكاء الاصطناعي", "outputType": "استجابة الذكاء الاصطناعي",
@@ -199,7 +203,8 @@
"inputTypes": { "inputTypes": {
"text": "أمر نصي", "text": "أمر نصي",
"structured": "منظم (JSON/YAML)", "structured": "منظم (JSON/YAML)",
"skill": "مهارة (مهارات الوكيل)" "skill": "مهارة (مهارات الوكيل)",
"taste": "Taste (Coding Taste)"
}, },
"outputTypes": { "outputTypes": {
"text": "نص", "text": "نص",
+7 -2
View File
@@ -39,6 +39,7 @@
"promptmasters": "Promptmasterlər", "promptmasters": "Promptmasterlər",
"prompts": "Promptlar", "prompts": "Promptlar",
"skills": "Bacarıqlar", "skills": "Bacarıqlar",
"tastes": "Tastes",
"workflows": "İş axınları", "workflows": "İş axınları",
"categories": "Kateqoriyalar", "categories": "Kateqoriyalar",
"tags": "Etiketlər", "tags": "Etiketlər",
@@ -107,7 +108,9 @@
"title": "Promptlar", "title": "Promptlar",
"create": "Prompt Yarat", "create": "Prompt Yarat",
"createSkill": "Bacarıq Yarat", "createSkill": "Bacarıq Yarat",
"createTaste": "Taste Yarat",
"skillsDescription": "Agent Bacarıqları AI agentlərinə xüsusi qabiliyyətlər verən çox fayllı promptlardır. Claude, Cursor, Windsurf və digər AI kodlaşdırma köməkçiləri ilə istifadə edilə bilən təlimatlar, konfiqurasiyalar və dəstəkləyici fayllar daxildir.", "skillsDescription": "Agent Bacarıqları AI agentlərinə xüsusi qabiliyyətlər verən çox fayllı promptlardır. Claude, Cursor, Windsurf və digər AI kodlaşdırma köməkçiləri ilə istifadə edilə bilən təlimatlar, konfiqurasiyalar və dəstəkləyici fayllar daxildir.",
"tastesDescription": "Tastes kodlaşdırma tərzinizi və üstünlüklərinizi müəyyən edən tək markdown fayllarıdır. AI kodlaşdırma agentlərinə kodunuzu necə yazdığınızı öyrənməyə kömək edir, beləliklə onlar sizin konvensiyalarınızı, nümunələrinizi və zövqünüzü uyğunlaşdıra bilərlər.",
"createInfo": "Bu platforma promptları işlətmir — süni intellekt promptlarını paylaşmaq və kəşf etmək üçün icma tərəfindən idarə olunan bir kitabxanadır. Promptunuzu burada yaradın və başqaları onu ChatGPT, Claude, Gemini və ya hər hansı digər LLM kimi üstünlük verdikləri AI alətlərində kopyalayıb istifadə edə bilərlər.", "createInfo": "Bu platforma promptları işlətmir — süni intellekt promptlarını paylaşmaq və kəşf etmək üçün icma tərəfindən idarə olunan bir kitabxanadır. Promptunuzu burada yaradın və başqaları onu ChatGPT, Claude, Gemini və ya hər hansı digər LLM kimi üstünlük verdikləri AI alətlərində kopyalayıb istifadə edə bilərlər.",
"hfDataStudio": { "hfDataStudio": {
"button": "HF Data Studio", "button": "HF Data Studio",
@@ -189,7 +192,8 @@
"audio": "Audio", "audio": "Audio",
"structured": "Strukturlaşdırılmış", "structured": "Strukturlaşdırılmış",
"document": "Sənəd", "document": "Sənəd",
"skill": "Bacarıq" "skill": "Bacarıq",
"taste": "Taste"
}, },
"inputType": "İstifadəçi Promptu", "inputType": "İstifadəçi Promptu",
"outputType": "AI Cavabı", "outputType": "AI Cavabı",
@@ -199,7 +203,8 @@
"inputTypes": { "inputTypes": {
"text": "Mətn Promptu", "text": "Mətn Promptu",
"structured": "Strukturlaşdırılmış (JSON/YAML)", "structured": "Strukturlaşdırılmış (JSON/YAML)",
"skill": "Bacarıq (Agent Bacarıqları)" "skill": "Bacarıq (Agent Bacarıqları)",
"taste": "Taste (Coding Taste)"
}, },
"outputTypes": { "outputTypes": {
"text": "Mətn", "text": "Mətn",
+7 -2
View File
@@ -39,6 +39,7 @@
"promptmasters": "Promptmasters", "promptmasters": "Promptmasters",
"prompts": "Prompts", "prompts": "Prompts",
"skills": "Fähigkeiten", "skills": "Fähigkeiten",
"tastes": "Tastes",
"workflows": "Workflows", "workflows": "Workflows",
"categories": "Kategorien", "categories": "Kategorien",
"tags": "Tags", "tags": "Tags",
@@ -107,7 +108,9 @@
"title": "Prompts", "title": "Prompts",
"create": "Prompt erstellen", "create": "Prompt erstellen",
"createSkill": "Skill erstellen", "createSkill": "Skill erstellen",
"createTaste": "Taste erstellen",
"skillsDescription": "Agent Skills sind Multi-Datei-Prompts, die KI-Agenten spezialisierte Fähigkeiten verleihen. Sie enthalten Anweisungen, Konfigurationen und unterstützende Dateien, die mit Claude, Cursor, Windsurf und anderen KI-Coding-Assistenten verwendet werden können.", "skillsDescription": "Agent Skills sind Multi-Datei-Prompts, die KI-Agenten spezialisierte Fähigkeiten verleihen. Sie enthalten Anweisungen, Konfigurationen und unterstützende Dateien, die mit Claude, Cursor, Windsurf und anderen KI-Coding-Assistenten verwendet werden können.",
"tastesDescription": "Tastes sind einzelne Markdown-Dateien, die Ihren Codierstil und Ihre Vorlieben definieren. Sie helfen KI-Coding-Agenten zu lernen, wie Sie Code schreiben, damit sie Ihre Konventionen, Muster und Ihren Geschmack übernehmen können.",
"createInfo": "Diese Plattform führt keine Prompts aus — sie ist eine community-gesteuerte Bibliothek zum Teilen und Entdecken von KI-Prompts. Erstellen Sie hier Ihren Prompt, und andere können ihn kopieren und in ihren bevorzugten KI-Tools wie ChatGPT, Claude, Gemini oder anderen LLMs verwenden. Die Community kann auch Ihre Prompts kommentieren und Verbesserungen durch Änderungsanfragen vorschlagen.", "createInfo": "Diese Plattform führt keine Prompts aus — sie ist eine community-gesteuerte Bibliothek zum Teilen und Entdecken von KI-Prompts. Erstellen Sie hier Ihren Prompt, und andere können ihn kopieren und in ihren bevorzugten KI-Tools wie ChatGPT, Claude, Gemini oder anderen LLMs verwenden. Die Community kann auch Ihre Prompts kommentieren und Verbesserungen durch Änderungsanfragen vorschlagen.",
"hfDataStudio": { "hfDataStudio": {
"button": "HF Data Studio", "button": "HF Data Studio",
@@ -189,7 +192,8 @@
"audio": "Audio", "audio": "Audio",
"structured": "Strukturiert", "structured": "Strukturiert",
"document": "Dokument", "document": "Dokument",
"skill": "Skill" "skill": "Skill",
"taste": "Taste"
}, },
"inputType": "Benutzer-Prompt", "inputType": "Benutzer-Prompt",
"outputType": "KI-Antwort", "outputType": "KI-Antwort",
@@ -199,7 +203,8 @@
"inputTypes": { "inputTypes": {
"text": "Text-Prompt", "text": "Text-Prompt",
"structured": "Strukturiert (JSON/YAML)", "structured": "Strukturiert (JSON/YAML)",
"skill": "Skill (Agent Skills)" "skill": "Skill (Agent Skills)",
"taste": "Taste (Coding Taste)"
}, },
"outputTypes": { "outputTypes": {
"text": "Text", "text": "Text",
+7 -2
View File
@@ -39,6 +39,7 @@
"promptmasters": "Promptmasters", "promptmasters": "Promptmasters",
"prompts": "Prompts", "prompts": "Prompts",
"skills": "Δεξιότητες", "skills": "Δεξιότητες",
"tastes": "Tastes",
"workflows": "Ροές εργασίας", "workflows": "Ροές εργασίας",
"categories": "Κατηγορίες", "categories": "Κατηγορίες",
"tags": "Ετικέτες", "tags": "Ετικέτες",
@@ -107,7 +108,9 @@
"title": "Prompts", "title": "Prompts",
"create": "Δημιουργία Prompt", "create": "Δημιουργία Prompt",
"createSkill": "Δημιουργία Δεξιότητας", "createSkill": "Δημιουργία Δεξιότητας",
"createTaste": "Δημιουργία Taste",
"skillsDescription": "Οι Δεξιότητες Πράκτορα είναι prompts πολλαπλών αρχείων που δίνουν στους AI πράκτορες εξειδικευμένες δυνατότητες. Περιλαμβάνουν οδηγίες, ρυθμίσεις και υποστηρικτικά αρχεία που μπορούν να χρησιμοποιηθούν με Claude, Cursor, Windsurf και άλλους βοηθούς προγραμματισμού AI.", "skillsDescription": "Οι Δεξιότητες Πράκτορα είναι prompts πολλαπλών αρχείων που δίνουν στους AI πράκτορες εξειδικευμένες δυνατότητες. Περιλαμβάνουν οδηγίες, ρυθμίσεις και υποστηρικτικά αρχεία που μπορούν να χρησιμοποιηθούν με Claude, Cursor, Windsurf και άλλους βοηθούς προγραμματισμού AI.",
"tastesDescription": "Τα Tastes είναι μεμονωμένα αρχεία markdown που ορίζουν το στυλ κωδικοποίησης και τις προτιμήσεις σας. Βοηθούν τους πράκτορες κωδικοποίησης AI να μάθουν πώς γράφετε κώδικα, ώστε να ταιριάζουν τις συμβάσεις, τα μοτίβα και το γούστο σας.",
"createInfo": "Αυτή η πλατφόρμα δεν εκτελεί prompts — είναι μια κοινοτική βιβλιοθήκη για την κοινοποίηση και ανακάλυψη AI prompts. Δημιουργήστε το prompt σας εδώ και άλλοι μπορούν να το αντιγράψουν και να το χρησιμοποιήσουν στα αγαπημένα τους εργαλεία AI όπως ChatGPT, Claude, Gemini ή οποιοδήποτε άλλο LLM. Η κοινότητα μπορεί επίσης να σχολιάσει τα prompts σας και να προτείνει βελτιώσεις μέσω αιτημάτων αλλαγής.", "createInfo": "Αυτή η πλατφόρμα δεν εκτελεί prompts — είναι μια κοινοτική βιβλιοθήκη για την κοινοποίηση και ανακάλυψη AI prompts. Δημιουργήστε το prompt σας εδώ και άλλοι μπορούν να το αντιγράψουν και να το χρησιμοποιήσουν στα αγαπημένα τους εργαλεία AI όπως ChatGPT, Claude, Gemini ή οποιοδήποτε άλλο LLM. Η κοινότητα μπορεί επίσης να σχολιάσει τα prompts σας και να προτείνει βελτιώσεις μέσω αιτημάτων αλλαγής.",
"hfDataStudio": { "hfDataStudio": {
"button": "HF Data Studio", "button": "HF Data Studio",
@@ -189,7 +192,8 @@
"audio": "Ήχος", "audio": "Ήχος",
"structured": "Δομημένο", "structured": "Δομημένο",
"document": "Έγγραφο", "document": "Έγγραφο",
"skill": "Δεξιότητα" "skill": "Δεξιότητα",
"taste": "Taste"
}, },
"inputType": "Prompt χρήστη", "inputType": "Prompt χρήστη",
"outputType": "Απάντηση AI", "outputType": "Απάντηση AI",
@@ -199,7 +203,8 @@
"inputTypes": { "inputTypes": {
"text": "Prompt κειμένου", "text": "Prompt κειμένου",
"structured": "Δομημένο (JSON/YAML)", "structured": "Δομημένο (JSON/YAML)",
"skill": "Δεξιότητα (Agent Skills)" "skill": "Δεξιότητα (Agent Skills)",
"taste": "Taste (Coding Taste)"
}, },
"outputTypes": { "outputTypes": {
"text": "Κείμενο", "text": "Κείμενο",
+7 -2
View File
@@ -39,6 +39,7 @@
"promptmasters": "Promptmasters", "promptmasters": "Promptmasters",
"prompts": "Prompts", "prompts": "Prompts",
"skills": "Skills", "skills": "Skills",
"tastes": "Tastes",
"workflows": "Workflows", "workflows": "Workflows",
"categories": "Categories", "categories": "Categories",
"tags": "Tags", "tags": "Tags",
@@ -107,7 +108,9 @@
"title": "Prompts", "title": "Prompts",
"create": "Create Prompt", "create": "Create Prompt",
"createSkill": "Create Skill", "createSkill": "Create Skill",
"createTaste": "Create Taste",
"skillsDescription": "Agent Skills are multi-file prompts that give AI agents specialized capabilities. They include instructions, configurations, and supporting files that can be used with Claude, Cursor, Windsurf, and other AI coding assistants.", "skillsDescription": "Agent Skills are multi-file prompts that give AI agents specialized capabilities. They include instructions, configurations, and supporting files that can be used with Claude, Cursor, Windsurf, and other AI coding assistants.",
"tastesDescription": "Tastes are single markdown files that define your coding style and preferences. They help AI coding agents learn how you write code, so they can match your conventions, patterns, and taste.",
"createInfo": "This platform doesn't run or execute prompts — it's a community-driven library for sharing and discovering AI prompts. Create your prompt here, and others can copy and use it in their preferred AI tools like ChatGPT, Claude, Gemini, or any other LLM. The community can also comment on your prompts and suggest improvements through change requests.", "createInfo": "This platform doesn't run or execute prompts — it's a community-driven library for sharing and discovering AI prompts. Create your prompt here, and others can copy and use it in their preferred AI tools like ChatGPT, Claude, Gemini, or any other LLM. The community can also comment on your prompts and suggest improvements through change requests.",
"hfDataStudio": { "hfDataStudio": {
"button": "HF Data Studio", "button": "HF Data Studio",
@@ -189,7 +192,8 @@
"audio": "Audio", "audio": "Audio",
"structured": "Structured", "structured": "Structured",
"document": "Document", "document": "Document",
"skill": "Skill" "skill": "Skill",
"taste": "Taste"
}, },
"inputType": "User Prompt", "inputType": "User Prompt",
"outputType": "AI Response", "outputType": "AI Response",
@@ -199,7 +203,8 @@
"inputTypes": { "inputTypes": {
"text": "Text Prompt", "text": "Text Prompt",
"structured": "Structured (JSON/YAML)", "structured": "Structured (JSON/YAML)",
"skill": "Skill (Agent Skills)" "skill": "Skill (Agent Skills)",
"taste": "Taste (Coding Taste)"
}, },
"outputTypes": { "outputTypes": {
"text": "Text", "text": "Text",
+7 -2
View File
@@ -39,6 +39,7 @@
"promptmasters": "Promptmasters", "promptmasters": "Promptmasters",
"prompts": "Prompts", "prompts": "Prompts",
"skills": "Habilidades", "skills": "Habilidades",
"tastes": "Tastes",
"workflows": "Flujos de trabajo", "workflows": "Flujos de trabajo",
"categories": "Categorías", "categories": "Categorías",
"tags": "Etiquetas", "tags": "Etiquetas",
@@ -107,7 +108,9 @@
"title": "Prompts", "title": "Prompts",
"create": "Crear Prompt", "create": "Crear Prompt",
"createSkill": "Crear Habilidad", "createSkill": "Crear Habilidad",
"createTaste": "Crear Taste",
"skillsDescription": "Las Habilidades de Agente son prompts de múltiples archivos que dan a los agentes de IA capacidades especializadas. Incluyen instrucciones, configuraciones y archivos de soporte que se pueden usar con Claude, Cursor, Windsurf y otros asistentes de codificación de IA.", "skillsDescription": "Las Habilidades de Agente son prompts de múltiples archivos que dan a los agentes de IA capacidades especializadas. Incluyen instrucciones, configuraciones y archivos de soporte que se pueden usar con Claude, Cursor, Windsurf y otros asistentes de codificación de IA.",
"tastesDescription": "Los Tastes son archivos markdown individuales que definen tu estilo de codificación y preferencias. Ayudan a los agentes de codificación de IA a aprender cómo escribes código, para que puedan adaptarse a tus convenciones, patrones y gusto.",
"createInfo": "Esta plataforma no ejecuta prompts — es una biblioteca comunitaria para compartir y descubrir prompts de IA. Crea tu prompt aquí, y otros podrán copiarlo y usarlo en sus herramientas de IA favoritas como ChatGPT, Claude, Gemini o cualquier otro LLM. La comunidad también puede comentar tus prompts y sugerir mejoras a través de solicitudes de cambio.", "createInfo": "Esta plataforma no ejecuta prompts — es una biblioteca comunitaria para compartir y descubrir prompts de IA. Crea tu prompt aquí, y otros podrán copiarlo y usarlo en sus herramientas de IA favoritas como ChatGPT, Claude, Gemini o cualquier otro LLM. La comunidad también puede comentar tus prompts y sugerir mejoras a través de solicitudes de cambio.",
"hfDataStudio": { "hfDataStudio": {
"button": "HF Data Studio", "button": "HF Data Studio",
@@ -189,7 +192,8 @@
"audio": "Audio", "audio": "Audio",
"structured": "Estructurado", "structured": "Estructurado",
"document": "Documento", "document": "Documento",
"skill": "Habilidad" "skill": "Habilidad",
"taste": "Taste"
}, },
"inputType": "Prompt del Usuario", "inputType": "Prompt del Usuario",
"outputType": "Respuesta de IA", "outputType": "Respuesta de IA",
@@ -199,7 +203,8 @@
"inputTypes": { "inputTypes": {
"text": "Prompt de Texto", "text": "Prompt de Texto",
"structured": "Estructurado (JSON/YAML)", "structured": "Estructurado (JSON/YAML)",
"skill": "Habilidad (Agent Skills)" "skill": "Habilidad (Agent Skills)",
"taste": "Taste (Coding Taste)"
}, },
"outputTypes": { "outputTypes": {
"text": "Texto", "text": "Texto",
+7 -2
View File
@@ -39,6 +39,7 @@
"promptmasters": "پرامپت‌مسترها", "promptmasters": "پرامپت‌مسترها",
"prompts": "پرامپت‌ها", "prompts": "پرامپت‌ها",
"skills": "مهارت‌ها", "skills": "مهارت‌ها",
"tastes": "Tastes",
"workflows": "گردش کار", "workflows": "گردش کار",
"categories": "دسته‌بندی‌ها", "categories": "دسته‌بندی‌ها",
"tags": "برچسب‌ها", "tags": "برچسب‌ها",
@@ -107,7 +108,9 @@
"title": "پرامپت‌ها", "title": "پرامپت‌ها",
"create": "ایجاد پرامپت", "create": "ایجاد پرامپت",
"createSkill": "ایجاد مهارت", "createSkill": "ایجاد مهارت",
"createTaste": "ایجاد Taste",
"skillsDescription": "مهارت‌های عامل، پرامپت‌های چند فایلی هستند که به عامل‌های هوش مصنوعی قابلیت‌های تخصصی می‌دهند. شامل دستورالعمل‌ها، تنظیمات و فایل‌های پشتیبانی هستند که می‌توانند با Claude، Cursor، Windsurf و سایر دستیاران برنامه‌نویسی AI استفاده شوند.", "skillsDescription": "مهارت‌های عامل، پرامپت‌های چند فایلی هستند که به عامل‌های هوش مصنوعی قابلیت‌های تخصصی می‌دهند. شامل دستورالعمل‌ها، تنظیمات و فایل‌های پشتیبانی هستند که می‌توانند با Claude، Cursor، Windsurf و سایر دستیاران برنامه‌نویسی AI استفاده شوند.",
"tastesDescription": "Tastes فایل‌های تک markdown هستند که سبک و ترجیحات کدنویسی شما را تعریف می‌کنند. به عامل‌های کدنویسی AI کمک می‌کنند تا نحوه نوشتن کد شما را یاد بگیرند، تا بتوانند قراردادها، الگوها و سلیقه شما را مطابقت دهند.",
"createInfo": "این پلتفرم پرامپت‌ها را اجرا نمی‌کند — این یک کتابخانه مبتنی بر جامعه برای اشتراک‌گذاری و کشف پرامپت‌های هوش مصنوعی است. پرامپت خود را اینجا بسازید و دیگران می‌توانند آن را در ابزارهای هوش مصنوعی مورد علاقه خود مانند ChatGPT، Claude، Gemini یا هر LLM دیگری کپی و استفاده کنند.", "createInfo": "این پلتفرم پرامپت‌ها را اجرا نمی‌کند — این یک کتابخانه مبتنی بر جامعه برای اشتراک‌گذاری و کشف پرامپت‌های هوش مصنوعی است. پرامپت خود را اینجا بسازید و دیگران می‌توانند آن را در ابزارهای هوش مصنوعی مورد علاقه خود مانند ChatGPT، Claude، Gemini یا هر LLM دیگری کپی و استفاده کنند.",
"hfDataStudio": { "hfDataStudio": {
"button": "HF Data Studio", "button": "HF Data Studio",
@@ -189,7 +192,8 @@
"audio": "صدا", "audio": "صدا",
"structured": "ساختارمند", "structured": "ساختارمند",
"document": "سند", "document": "سند",
"skill": "مهارت" "skill": "مهارت",
"taste": "Taste"
}, },
"inputType": "پرامپت کاربر", "inputType": "پرامپت کاربر",
"outputType": "پاسخ هوش مصنوعی", "outputType": "پاسخ هوش مصنوعی",
@@ -199,7 +203,8 @@
"inputTypes": { "inputTypes": {
"text": "پرامپت متنی", "text": "پرامپت متنی",
"structured": "ساختارمند (JSON/YAML)", "structured": "ساختارمند (JSON/YAML)",
"skill": "مهارت (مهارت‌های عامل)" "skill": "مهارت (مهارت‌های عامل)",
"taste": "Taste (Coding Taste)"
}, },
"outputTypes": { "outputTypes": {
"text": "متن", "text": "متن",
+7 -2
View File
@@ -39,6 +39,7 @@
"promptmasters": "Promptmasters", "promptmasters": "Promptmasters",
"prompts": "Prompts", "prompts": "Prompts",
"skills": "Compétences", "skills": "Compétences",
"tastes": "Tastes",
"workflows": "Flux de travail", "workflows": "Flux de travail",
"categories": "Catégories", "categories": "Catégories",
"tags": "Tags", "tags": "Tags",
@@ -107,7 +108,9 @@
"title": "Prompts", "title": "Prompts",
"create": "Créer un Prompt", "create": "Créer un Prompt",
"createSkill": "Créer une Compétence", "createSkill": "Créer une Compétence",
"createTaste": "Créer un Taste",
"skillsDescription": "Les Compétences d'Agent sont des prompts multi-fichiers qui donnent aux agents IA des capacités spécialisées. Ils comprennent des instructions, des configurations et des fichiers de support qui peuvent être utilisés avec Claude, Cursor, Windsurf et d'autres assistants de codage IA.", "skillsDescription": "Les Compétences d'Agent sont des prompts multi-fichiers qui donnent aux agents IA des capacités spécialisées. Ils comprennent des instructions, des configurations et des fichiers de support qui peuvent être utilisés avec Claude, Cursor, Windsurf et d'autres assistants de codage IA.",
"tastesDescription": "Les Tastes sont des fichiers markdown uniques qui définissent votre style de codage et vos préférences. Ils aident les agents de codage IA à apprendre comment vous écrivez du code, afin qu'ils puissent correspondre à vos conventions, modèles et goût.",
"createInfo": "Cette plateforme n'exécute pas les prompts — c'est une bibliothèque communautaire pour partager et découvrir des prompts IA. Créez votre prompt ici, et d'autres pourront le copier et l'utiliser dans leurs outils IA préférés comme ChatGPT, Claude, Gemini ou tout autre LLM. La communauté peut également commenter vos prompts et suggérer des améliorations via des demandes de modification.", "createInfo": "Cette plateforme n'exécute pas les prompts — c'est une bibliothèque communautaire pour partager et découvrir des prompts IA. Créez votre prompt ici, et d'autres pourront le copier et l'utiliser dans leurs outils IA préférés comme ChatGPT, Claude, Gemini ou tout autre LLM. La communauté peut également commenter vos prompts et suggérer des améliorations via des demandes de modification.",
"hfDataStudio": { "hfDataStudio": {
"button": "HF Data Studio", "button": "HF Data Studio",
@@ -189,7 +192,8 @@
"audio": "Audio", "audio": "Audio",
"structured": "Structuré", "structured": "Structuré",
"document": "Document", "document": "Document",
"skill": "Compétence" "skill": "Compétence",
"taste": "Taste"
}, },
"inputType": "Prompt Utilisateur", "inputType": "Prompt Utilisateur",
"outputType": "Réponse IA", "outputType": "Réponse IA",
@@ -199,7 +203,8 @@
"inputTypes": { "inputTypes": {
"text": "Prompt Texte", "text": "Prompt Texte",
"structured": "Structuré (JSON/YAML)", "structured": "Structuré (JSON/YAML)",
"skill": "Compétence (Agent Skills)" "skill": "Compétence (Agent Skills)",
"taste": "Taste (Coding Taste)"
}, },
"outputTypes": { "outputTypes": {
"text": "Texte", "text": "Texte",
+7 -2
View File
@@ -39,6 +39,7 @@
"promptmasters": "מאסטרים", "promptmasters": "מאסטרים",
"prompts": "פרומפטים", "prompts": "פרומפטים",
"skills": "כישורים", "skills": "כישורים",
"tastes": "Tastes",
"workflows": "תהליכי עבודה", "workflows": "תהליכי עבודה",
"categories": "קטגוריות", "categories": "קטגוריות",
"tags": "תגיות", "tags": "תגיות",
@@ -107,7 +108,9 @@
"title": "פרומפטים", "title": "פרומפטים",
"create": "יצירת פרומפט", "create": "יצירת פרומפט",
"createSkill": "יצירת מיומנות", "createSkill": "יצירת מיומנות",
"createTaste": "יצירת Taste",
"skillsDescription": "מיומנויות סוכן הן פרומפטים מרובי קבצים שמעניקים לסוכני AI יכולות מתמחות. הן כוללות הוראות, הגדרות וקבצי תמיכה שניתן להשתמש בהם עם Claude, Cursor, Windsurf ועוזרי קידוד AI אחרים.", "skillsDescription": "מיומנויות סוכן הן פרומפטים מרובי קבצים שמעניקים לסוכני AI יכולות מתמחות. הן כוללות הוראות, הגדרות וקבצי תמיכה שניתן להשתמש בהם עם Claude, Cursor, Windsurf ועוזרי קידוד AI אחרים.",
"tastesDescription": "Tastes הם קבצי markdown בודדים שמגדירים את סגנון הקידוד וההעדפות שלך. הם עוזרים לסוכני קידוד AI ללמוד איך אתה כותב קוד, כך שיוכלו להתאים למוסכמות, לדפוסים ולטעם שלך.",
"createInfo": "פלטפורמה זו לא מריצה פרומפטים — היא ספרייה קהילתית לשיתוף וגילוי פרומפטים של AI. צור את הפרומפט שלך כאן, ואחרים יוכלו להעתיק ולהשתמש בו בכלי ה-AI המועדפים עליהם כמו ChatGPT, Claude, Gemini או כל LLM אחר. הקהילה יכולה גם להגיב על הפרומפטים שלך ולהציע שיפורים דרך בקשות שינוי.", "createInfo": "פלטפורמה זו לא מריצה פרומפטים — היא ספרייה קהילתית לשיתוף וגילוי פרומפטים של AI. צור את הפרומפט שלך כאן, ואחרים יוכלו להעתיק ולהשתמש בו בכלי ה-AI המועדפים עליהם כמו ChatGPT, Claude, Gemini או כל LLM אחר. הקהילה יכולה גם להגיב על הפרומפטים שלך ולהציע שיפורים דרך בקשות שינוי.",
"hfDataStudio": { "hfDataStudio": {
"button": "HF Data Studio", "button": "HF Data Studio",
@@ -189,7 +192,8 @@
"audio": "אודיו", "audio": "אודיו",
"structured": "מובנה", "structured": "מובנה",
"document": "מסמך", "document": "מסמך",
"skill": "מיומנות" "skill": "מיומנות",
"taste": "Taste"
}, },
"inputType": "פרומפט משתמש", "inputType": "פרומפט משתמש",
"outputType": "תגובת AI", "outputType": "תגובת AI",
@@ -199,7 +203,8 @@
"inputTypes": { "inputTypes": {
"text": "פרומפט טקסט", "text": "פרומפט טקסט",
"structured": "מובנה (JSON/YAML)", "structured": "מובנה (JSON/YAML)",
"skill": "מיומנות (Agent Skills)" "skill": "מיומנות (Agent Skills)",
"taste": "Taste (Coding Taste)"
}, },
"outputTypes": { "outputTypes": {
"text": "טקסט", "text": "טקסט",
+7 -2
View File
@@ -39,6 +39,7 @@
"promptmasters": "Promptmaster", "promptmasters": "Promptmaster",
"prompts": "Prompt", "prompts": "Prompt",
"skills": "Competenze", "skills": "Competenze",
"tastes": "Tastes",
"workflows": "Flussi di lavoro", "workflows": "Flussi di lavoro",
"categories": "Categorie", "categories": "Categorie",
"tags": "Tag", "tags": "Tag",
@@ -107,7 +108,9 @@
"title": "Prompt", "title": "Prompt",
"create": "Crea Prompt", "create": "Crea Prompt",
"createSkill": "Crea Competenza", "createSkill": "Crea Competenza",
"createTaste": "Crea Taste",
"skillsDescription": "Le Competenze dell'Agente sono prompt multi-file che danno agli agenti AI capacità specializzate. Includono istruzioni, configurazioni e file di supporto che possono essere utilizzati con Claude, Cursor, Windsurf e altri assistenti di codifica AI.", "skillsDescription": "Le Competenze dell'Agente sono prompt multi-file che danno agli agenti AI capacità specializzate. Includono istruzioni, configurazioni e file di supporto che possono essere utilizzati con Claude, Cursor, Windsurf e altri assistenti di codifica AI.",
"tastesDescription": "I Tastes sono singoli file markdown che definiscono il tuo stile di codifica e le tue preferenze. Aiutano gli agenti di codifica AI a imparare come scrivi codice, così possono adattarsi alle tue convenzioni, pattern e gusto.",
"createInfo": "Questa piattaforma non esegue i prompt — è una libreria comunitaria per condividere e scoprire prompt AI. Crea il tuo prompt qui, e altri potranno copiarlo e usarlo nei loro strumenti AI preferiti come ChatGPT, Claude, Gemini o qualsiasi altro LLM. La community può anche commentare i tuoi prompt e suggerire miglioramenti tramite richieste di modifica.", "createInfo": "Questa piattaforma non esegue i prompt — è una libreria comunitaria per condividere e scoprire prompt AI. Crea il tuo prompt qui, e altri potranno copiarlo e usarlo nei loro strumenti AI preferiti come ChatGPT, Claude, Gemini o qualsiasi altro LLM. La community può anche commentare i tuoi prompt e suggerire miglioramenti tramite richieste di modifica.",
"hfDataStudio": { "hfDataStudio": {
"button": "HF Data Studio", "button": "HF Data Studio",
@@ -189,7 +192,8 @@
"audio": "Audio", "audio": "Audio",
"structured": "Strutturato", "structured": "Strutturato",
"document": "Documento", "document": "Documento",
"skill": "Abilità" "skill": "Abilità",
"taste": "Taste"
}, },
"inputType": "Prompt Utente", "inputType": "Prompt Utente",
"outputType": "Risposta AI", "outputType": "Risposta AI",
@@ -199,7 +203,8 @@
"inputTypes": { "inputTypes": {
"text": "Prompt Testuale", "text": "Prompt Testuale",
"structured": "Strutturato (JSON/YAML)", "structured": "Strutturato (JSON/YAML)",
"skill": "Abilità (Agent Skills)" "skill": "Abilità (Agent Skills)",
"taste": "Taste (Coding Taste)"
}, },
"outputTypes": { "outputTypes": {
"text": "Testo", "text": "Testo",
+7 -2
View File
@@ -39,6 +39,7 @@
"promptmasters": "Promptmasters", "promptmasters": "Promptmasters",
"prompts": "プロンプト", "prompts": "プロンプト",
"skills": "スキル", "skills": "スキル",
"tastes": "Tastes",
"workflows": "ワークフロー", "workflows": "ワークフロー",
"categories": "カテゴリー", "categories": "カテゴリー",
"tags": "タグ", "tags": "タグ",
@@ -107,7 +108,9 @@
"title": "プロンプト", "title": "プロンプト",
"create": "プロンプトを作成", "create": "プロンプトを作成",
"createSkill": "スキルを作成", "createSkill": "スキルを作成",
"createTaste": "Tasteを作成",
"skillsDescription": "エージェントスキルは、AIエージェントに専門的な機能を与えるマルチファイルプロンプトです。Claude、Cursor、Windsurf、その他のAIコーディングアシスタントで使用できる指示、設定、サポートファイルが含まれています。", "skillsDescription": "エージェントスキルは、AIエージェントに専門的な機能を与えるマルチファイルプロンプトです。Claude、Cursor、Windsurf、その他のAIコーディングアシスタントで使用できる指示、設定、サポートファイルが含まれています。",
"tastesDescription": "Tastesは、コーディングスタイルと好みを定義する単一のマークダウンファイルです。AIコーディングエージェントがあなたのコードの書き方を学習し、規約、パターン、テイストに合わせることができます。",
"createInfo": "このプラットフォームはプロンプトを実行しません — AIプロンプトを共有・発見するためのコミュニティライブラリです。ここでプロンプトを作成すると、他のユーザーがChatGPT、Claude、Geminiなどのお気に入りのAIツールでコピーして使用できます。コミュニティはあなたのプロンプトにコメントしたり、変更リクエストを通じて改善を提案することもできます。", "createInfo": "このプラットフォームはプロンプトを実行しません — AIプロンプトを共有・発見するためのコミュニティライブラリです。ここでプロンプトを作成すると、他のユーザーがChatGPT、Claude、Geminiなどのお気に入りのAIツールでコピーして使用できます。コミュニティはあなたのプロンプトにコメントしたり、変更リクエストを通じて改善を提案することもできます。",
"hfDataStudio": { "hfDataStudio": {
"button": "HF Data Studio", "button": "HF Data Studio",
@@ -189,7 +192,8 @@
"audio": "音声", "audio": "音声",
"structured": "構造化", "structured": "構造化",
"document": "ドキュメント", "document": "ドキュメント",
"skill": "スキル" "skill": "スキル",
"taste": "Taste"
}, },
"inputType": "ユーザープロンプト", "inputType": "ユーザープロンプト",
"outputType": "AI応答", "outputType": "AI応答",
@@ -199,7 +203,8 @@
"inputTypes": { "inputTypes": {
"text": "テキストプロンプト", "text": "テキストプロンプト",
"structured": "構造化 (JSON/YAML)", "structured": "構造化 (JSON/YAML)",
"skill": "スキル (Agent Skills)" "skill": "スキル (Agent Skills)",
"taste": "Taste (Coding Taste)"
}, },
"outputTypes": { "outputTypes": {
"text": "テキスト", "text": "テキスト",
+7 -2
View File
@@ -39,6 +39,7 @@
"promptmasters": "프롬프트마스터", "promptmasters": "프롬프트마스터",
"prompts": "프롬프트", "prompts": "프롬프트",
"skills": "스킬", "skills": "스킬",
"tastes": "Tastes",
"workflows": "워크플로우", "workflows": "워크플로우",
"categories": "카테고리", "categories": "카테고리",
"tags": "태그", "tags": "태그",
@@ -107,7 +108,9 @@
"title": "프롬프트", "title": "프롬프트",
"create": "프롬프트 만들기", "create": "프롬프트 만들기",
"createSkill": "스킬 만들기", "createSkill": "스킬 만들기",
"createTaste": "Taste 만들기",
"skillsDescription": "에이전트 스킬은 AI 에이전트에게 전문 기능을 제공하는 멀티 파일 프롬프트입니다. Claude, Cursor, Windsurf 및 기타 AI 코딩 어시스턴트와 함께 사용할 수 있는 지침, 구성 및 지원 파일이 포함되어 있습니다.", "skillsDescription": "에이전트 스킬은 AI 에이전트에게 전문 기능을 제공하는 멀티 파일 프롬프트입니다. Claude, Cursor, Windsurf 및 기타 AI 코딩 어시스턴트와 함께 사용할 수 있는 지침, 구성 및 지원 파일이 포함되어 있습니다.",
"tastesDescription": "Tastes는 코딩 스타일과 선호도를 정의하는 단일 마크다운 파일입니다. AI 코딩 에이전트가 코드 작성 방식을 학습하여 규칙, 패턴 및 취향에 맞출 수 있도록 도와줍니다.",
"createInfo": "이 플랫폼은 프롬프트를 실행하지 않습니다 — AI 프롬프트를 공유하고 발견하는 커뮤니티 라이브러리입니다. 여기서 프롬프트를 만들면 다른 사용자들이 ChatGPT, Claude, Gemini 등 선호하는 AI 도구에서 복사하여 사용할 수 있습니다. 커뮤니티는 프롬프트에 댓글을 달고 변경 요청을 통해 개선 사항을 제안할 수도 있습니다.", "createInfo": "이 플랫폼은 프롬프트를 실행하지 않습니다 — AI 프롬프트를 공유하고 발견하는 커뮤니티 라이브러리입니다. 여기서 프롬프트를 만들면 다른 사용자들이 ChatGPT, Claude, Gemini 등 선호하는 AI 도구에서 복사하여 사용할 수 있습니다. 커뮤니티는 프롬프트에 댓글을 달고 변경 요청을 통해 개선 사항을 제안할 수도 있습니다.",
"hfDataStudio": { "hfDataStudio": {
"button": "HF 데이터 스튜디오", "button": "HF 데이터 스튜디오",
@@ -189,7 +192,8 @@
"audio": "오디오", "audio": "오디오",
"structured": "구조화", "structured": "구조화",
"document": "문서", "document": "문서",
"skill": "스킬" "skill": "스킬",
"taste": "Taste"
}, },
"inputType": "사용자 프롬프트", "inputType": "사용자 프롬프트",
"outputType": "AI 응답", "outputType": "AI 응답",
@@ -199,7 +203,8 @@
"inputTypes": { "inputTypes": {
"text": "텍스트 프롬프트", "text": "텍스트 프롬프트",
"structured": "구조화 (JSON/YAML)", "structured": "구조화 (JSON/YAML)",
"skill": "스킬 (Agent Skills)" "skill": "스킬 (Agent Skills)",
"taste": "Taste (Coding Taste)"
}, },
"outputTypes": { "outputTypes": {
"text": "텍스트", "text": "텍스트",
+7 -2
View File
@@ -39,6 +39,7 @@
"promptmasters": "Promptmasters", "promptmasters": "Promptmasters",
"prompts": "Prompts", "prompts": "Prompts",
"skills": "Vaardigheden", "skills": "Vaardigheden",
"tastes": "Tastes",
"workflows": "Workflows", "workflows": "Workflows",
"categories": "Categorieën", "categories": "Categorieën",
"tags": "Tags", "tags": "Tags",
@@ -107,7 +108,9 @@
"title": "Prompts", "title": "Prompts",
"create": "Prompt aanmaken", "create": "Prompt aanmaken",
"createSkill": "Vaardigheid aanmaken", "createSkill": "Vaardigheid aanmaken",
"createTaste": "Taste aanmaken",
"skillsDescription": "Agent Vaardigheden zijn multi-bestand prompts die AI-agenten gespecialiseerde mogelijkheden geven. Ze bevatten instructies, configuraties en ondersteunende bestanden die kunnen worden gebruikt met Claude, Cursor, Windsurf en andere AI-coderingsassistenten.", "skillsDescription": "Agent Vaardigheden zijn multi-bestand prompts die AI-agenten gespecialiseerde mogelijkheden geven. Ze bevatten instructies, configuraties en ondersteunende bestanden die kunnen worden gebruikt met Claude, Cursor, Windsurf en andere AI-coderingsassistenten.",
"tastesDescription": "Tastes zijn enkele markdown-bestanden die je codeerstijl en voorkeuren definiëren. Ze helpen AI-coderingsagenten te leren hoe je code schrijft, zodat ze je conventies, patronen en smaak kunnen overnemen.",
"createInfo": "Dit platform voert geen prompts uit — het is een door de community beheerde bibliotheek voor het delen en ontdekken van AI-prompts. Maak hier je prompt aan, en anderen kunnen het kopiëren en gebruiken in hun favoriete AI-tools zoals ChatGPT, Claude, Gemini of andere LLM's. De community kan ook reageren op je prompts en verbeteringen voorstellen via wijzigingsverzoeken.", "createInfo": "Dit platform voert geen prompts uit — het is een door de community beheerde bibliotheek voor het delen en ontdekken van AI-prompts. Maak hier je prompt aan, en anderen kunnen het kopiëren en gebruiken in hun favoriete AI-tools zoals ChatGPT, Claude, Gemini of andere LLM's. De community kan ook reageren op je prompts en verbeteringen voorstellen via wijzigingsverzoeken.",
"hfDataStudio": { "hfDataStudio": {
"button": "HF Data Studio", "button": "HF Data Studio",
@@ -189,7 +192,8 @@
"audio": "Audio", "audio": "Audio",
"structured": "Gestructureerd", "structured": "Gestructureerd",
"document": "Document", "document": "Document",
"skill": "Vaardigheid" "skill": "Vaardigheid",
"taste": "Taste"
}, },
"inputType": "Gebruikersprompt", "inputType": "Gebruikersprompt",
"outputType": "AI-antwoord", "outputType": "AI-antwoord",
@@ -199,7 +203,8 @@
"inputTypes": { "inputTypes": {
"text": "Tekstprompt", "text": "Tekstprompt",
"structured": "Gestructureerd (JSON/YAML)", "structured": "Gestructureerd (JSON/YAML)",
"skill": "Vaardigheid (Agent Skills)" "skill": "Vaardigheid (Agent Skills)",
"taste": "Taste (Coding Taste)"
}, },
"outputTypes": { "outputTypes": {
"text": "Tekst", "text": "Tekst",
+7 -2
View File
@@ -39,6 +39,7 @@
"promptmasters": "Promptmasters", "promptmasters": "Promptmasters",
"prompts": "Prompts", "prompts": "Prompts",
"skills": "Habilidades", "skills": "Habilidades",
"tastes": "Tastes",
"workflows": "Fluxos de trabalho", "workflows": "Fluxos de trabalho",
"categories": "Categorias", "categories": "Categorias",
"tags": "Tags", "tags": "Tags",
@@ -107,7 +108,9 @@
"title": "Prompts", "title": "Prompts",
"create": "Criar Prompt", "create": "Criar Prompt",
"createSkill": "Criar Habilidade", "createSkill": "Criar Habilidade",
"createTaste": "Criar Taste",
"skillsDescription": "Habilidades de Agente são prompts multi-arquivo que dão aos agentes de IA capacidades especializadas. Incluem instruções, configurações e arquivos de suporte que podem ser usados com Claude, Cursor, Windsurf e outros assistentes de codificação de IA.", "skillsDescription": "Habilidades de Agente são prompts multi-arquivo que dão aos agentes de IA capacidades especializadas. Incluem instruções, configurações e arquivos de suporte que podem ser usados com Claude, Cursor, Windsurf e outros assistentes de codificação de IA.",
"tastesDescription": "Tastes são arquivos markdown individuais que definem seu estilo de codificação e preferências. Ajudam os agentes de codificação de IA a aprender como você escreve código, para que possam corresponder às suas convenções, padrões e gosto.",
"createInfo": "Esta plataforma não executa prompts — é uma biblioteca comunitária para compartilhar e descobrir prompts de IA. Crie seu prompt aqui, e outros poderão copiá-lo e usá-lo em suas ferramentas de IA favoritas como ChatGPT, Claude, Gemini ou qualquer outro LLM. A comunidade também pode comentar seus prompts e sugerir melhorias através de solicitações de alteração.", "createInfo": "Esta plataforma não executa prompts — é uma biblioteca comunitária para compartilhar e descobrir prompts de IA. Crie seu prompt aqui, e outros poderão copiá-lo e usá-lo em suas ferramentas de IA favoritas como ChatGPT, Claude, Gemini ou qualquer outro LLM. A comunidade também pode comentar seus prompts e sugerir melhorias através de solicitações de alteração.",
"hfDataStudio": { "hfDataStudio": {
"button": "HF Data Studio", "button": "HF Data Studio",
@@ -189,7 +192,8 @@
"audio": "Áudio", "audio": "Áudio",
"structured": "Estruturado", "structured": "Estruturado",
"document": "Documento", "document": "Documento",
"skill": "Habilidade" "skill": "Habilidade",
"taste": "Taste"
}, },
"inputType": "Prompt do Usuário", "inputType": "Prompt do Usuário",
"outputType": "Resposta da IA", "outputType": "Resposta da IA",
@@ -199,7 +203,8 @@
"inputTypes": { "inputTypes": {
"text": "Prompt de Texto", "text": "Prompt de Texto",
"structured": "Estruturado (JSON/YAML)", "structured": "Estruturado (JSON/YAML)",
"skill": "Habilidade (Agent Skills)" "skill": "Habilidade (Agent Skills)",
"taste": "Taste (Coding Taste)"
}, },
"outputTypes": { "outputTypes": {
"text": "Texto", "text": "Texto",
+7 -2
View File
@@ -39,6 +39,7 @@
"promptmasters": "Мастера промптов", "promptmasters": "Мастера промптов",
"prompts": "Промпты", "prompts": "Промпты",
"skills": "Навыки", "skills": "Навыки",
"tastes": "Tastes",
"workflows": "Рабочие процессы", "workflows": "Рабочие процессы",
"categories": "Категории", "categories": "Категории",
"tags": "Теги", "tags": "Теги",
@@ -107,7 +108,9 @@
"title": "Промпты", "title": "Промпты",
"create": "Создать промпт", "create": "Создать промпт",
"createSkill": "Создать навык", "createSkill": "Создать навык",
"createTaste": "Создать Taste",
"skillsDescription": "Навыки агента — это многофайловые промпты, которые дают AI-агентам специализированные возможности. Они включают инструкции, конфигурации и вспомогательные файлы, которые можно использовать с Claude, Cursor, Windsurf и другими AI-помощниками для программирования.", "skillsDescription": "Навыки агента — это многофайловые промпты, которые дают AI-агентам специализированные возможности. Они включают инструкции, конфигурации и вспомогательные файлы, которые можно использовать с Claude, Cursor, Windsurf и другими AI-помощниками для программирования.",
"tastesDescription": "Tastes — это отдельные файлы markdown, которые определяют ваш стиль программирования и предпочтения. Они помогают AI-агентам для программирования изучить, как вы пишете код, чтобы они могли соответствовать вашим соглашениям, шаблонам и вкусу.",
"createInfo": "Эта платформа не выполняет промпты — это библиотека сообщества для обмена и поиска AI-промптов. Создайте свой промпт здесь, и другие смогут скопировать и использовать его в своих любимых AI-инструментах, таких как ChatGPT, Claude, Gemini или любой другой LLM. Сообщество также может комментировать ваши промпты и предлагать улучшения через запросы на изменение.", "createInfo": "Эта платформа не выполняет промпты — это библиотека сообщества для обмена и поиска AI-промптов. Создайте свой промпт здесь, и другие смогут скопировать и использовать его в своих любимых AI-инструментах, таких как ChatGPT, Claude, Gemini или любой другой LLM. Сообщество также может комментировать ваши промпты и предлагать улучшения через запросы на изменение.",
"hfDataStudio": { "hfDataStudio": {
"button": "HF Data Studio", "button": "HF Data Studio",
@@ -189,7 +192,8 @@
"audio": "Аудио", "audio": "Аудио",
"structured": "Структурированный", "structured": "Структурированный",
"document": "Документ", "document": "Документ",
"skill": "Навык" "skill": "Навык",
"taste": "Taste"
}, },
"inputType": "Промпт пользователя", "inputType": "Промпт пользователя",
"outputType": "Ответ ИИ", "outputType": "Ответ ИИ",
@@ -199,7 +203,8 @@
"inputTypes": { "inputTypes": {
"text": "Текстовый промпт", "text": "Текстовый промпт",
"structured": "Структурированный (JSON/YAML)", "structured": "Структурированный (JSON/YAML)",
"skill": "Навык (Agent Skills)" "skill": "Навык (Agent Skills)",
"taste": "Taste (Coding Taste)"
}, },
"outputTypes": { "outputTypes": {
"text": "Текст", "text": "Текст",
+7 -2
View File
@@ -39,6 +39,7 @@
"promptmasters": "Promptmasters", "promptmasters": "Promptmasters",
"prompts": "Promptlar", "prompts": "Promptlar",
"skills": "Yetenekler", "skills": "Yetenekler",
"tastes": "Tastes",
"workflows": "Akışlar", "workflows": "Akışlar",
"categories": "Kategoriler", "categories": "Kategoriler",
"tags": "Etiketler", "tags": "Etiketler",
@@ -107,7 +108,9 @@
"title": "Promptlar", "title": "Promptlar",
"create": "Prompt Oluştur", "create": "Prompt Oluştur",
"createSkill": "Yetenek Oluştur", "createSkill": "Yetenek Oluştur",
"createTaste": "Taste Oluştur",
"skillsDescription": "Ajan Yetenekleri, AI ajanlara uzmanlaşmış yetenekler veren çok dosyalı promptlardır. Claude, Cursor, Windsurf ve diğer AI kodlama asistanlarıyla kullanılabilecek talimatlar, yapılandırmalar ve destek dosyaları içerirler.", "skillsDescription": "Ajan Yetenekleri, AI ajanlara uzmanlaşmış yetenekler veren çok dosyalı promptlardır. Claude, Cursor, Windsurf ve diğer AI kodlama asistanlarıyla kullanılabilecek talimatlar, yapılandırmalar ve destek dosyaları içerirler.",
"tastesDescription": "Tastes, kodlama tarzınızı ve tercihlerinizi tanımlayan tek markdown dosyalarıdır. AI kodlama ajanlarının kodunuzu nasıl yazdığınızı öğrenmesine yardımcı olur, böylece kurallarınıza, kalıplarınıza ve zevkinize uyum sağlayabilirler.",
"createInfo": "Bu platform promptları çalıştırmaz — AI promptlarını paylaşmak ve keşfetmek için topluluk odaklı bir kütüphanedir. Promptunuzu burada oluşturun, diğerleri ChatGPT, Claude, Gemini veya başka herhangi bir LLM gibi tercih ettikleri AI araçlarında kopyalayıp kullanabilir. Topluluk ayrıca promptlarınıza yorum yapabilir ve değişiklik istekleri aracılığıyla iyileştirmeler önerebilir.", "createInfo": "Bu platform promptları çalıştırmaz — AI promptlarını paylaşmak ve keşfetmek için topluluk odaklı bir kütüphanedir. Promptunuzu burada oluşturun, diğerleri ChatGPT, Claude, Gemini veya başka herhangi bir LLM gibi tercih ettikleri AI araçlarında kopyalayıp kullanabilir. Topluluk ayrıca promptlarınıza yorum yapabilir ve değişiklik istekleri aracılığıyla iyileştirmeler önerebilir.",
"hfDataStudio": { "hfDataStudio": {
"button": "HF Veri Stüdyosu", "button": "HF Veri Stüdyosu",
@@ -189,7 +192,8 @@
"audio": "Ses", "audio": "Ses",
"structured": "Yapılandırılmış", "structured": "Yapılandırılmış",
"document": "Doküman", "document": "Doküman",
"skill": "Yetenek" "skill": "Yetenek",
"taste": "Taste"
}, },
"inputType": "Kullanıcı Promptu", "inputType": "Kullanıcı Promptu",
"outputType": "AI Yanıtı", "outputType": "AI Yanıtı",
@@ -199,7 +203,8 @@
"inputTypes": { "inputTypes": {
"text": "Metin Promptu", "text": "Metin Promptu",
"structured": "Yapılandırılmış (JSON/YAML)", "structured": "Yapılandırılmış (JSON/YAML)",
"skill": "Yetenek (Agent Skills)" "skill": "Yetenek (Agent Skills)",
"taste": "Taste (Coding Taste)"
}, },
"outputTypes": { "outputTypes": {
"text": "Metin", "text": "Metin",
+7 -2
View File
@@ -39,6 +39,7 @@
"promptmasters": "Promptmasters", "promptmasters": "Promptmasters",
"prompts": "提示词", "prompts": "提示词",
"skills": "技能", "skills": "技能",
"tastes": "Tastes",
"workflows": "工作流程", "workflows": "工作流程",
"categories": "分类", "categories": "分类",
"tags": "标签", "tags": "标签",
@@ -107,7 +108,9 @@
"title": "提示词", "title": "提示词",
"create": "创建提示词", "create": "创建提示词",
"createSkill": "创建技能", "createSkill": "创建技能",
"createTaste": "创建 Taste",
"skillsDescription": "智能体技能是多文件提示词,可为AI智能体提供专业能力。它们包含指令、配置和支持文件,可与Claude、Cursor、Windsurf及其他AI编程助手配合使用。", "skillsDescription": "智能体技能是多文件提示词,可为AI智能体提供专业能力。它们包含指令、配置和支持文件,可与Claude、Cursor、Windsurf及其他AI编程助手配合使用。",
"tastesDescription": "Tastes 是定义你编码风格和偏好的单个 markdown 文件。它们帮助 AI 编码代理学习你的代码编写方式,从而匹配你的惯例、模式和品味。",
"createInfo": "本平台不运行或执行提示词——这是一个社区驱动的AI提示词分享和发现库。在这里创建您的提示词,其他人可以复制并在他们喜欢的AI工具中使用,如ChatGPT、Claude、Gemini或任何其他LLM。社区还可以评论您的提示词,并通过变更请求提出改进建议。", "createInfo": "本平台不运行或执行提示词——这是一个社区驱动的AI提示词分享和发现库。在这里创建您的提示词,其他人可以复制并在他们喜欢的AI工具中使用,如ChatGPT、Claude、Gemini或任何其他LLM。社区还可以评论您的提示词,并通过变更请求提出改进建议。",
"hfDataStudio": { "hfDataStudio": {
"button": "HF 数据工作室", "button": "HF 数据工作室",
@@ -189,7 +192,8 @@
"audio": "音频", "audio": "音频",
"structured": "结构化", "structured": "结构化",
"document": "文档", "document": "文档",
"skill": "技能" "skill": "技能",
"taste": "Taste"
}, },
"inputType": "用户提示词", "inputType": "用户提示词",
"outputType": "AI 响应", "outputType": "AI 响应",
@@ -199,7 +203,8 @@
"inputTypes": { "inputTypes": {
"text": "文本提示词", "text": "文本提示词",
"structured": "结构化 (JSON/YAML)", "structured": "结构化 (JSON/YAML)",
"skill": "技能 (Agent Skills)" "skill": "技能 (Agent Skills)",
"taste": "Taste (Coding Taste)"
}, },
"outputTypes": { "outputTypes": {
"text": "文本", "text": "文本",
@@ -0,0 +1,2 @@
-- AlterEnum
ALTER TYPE "PromptType" ADD VALUE 'TASTE';
+1
View File
@@ -409,6 +409,7 @@ enum PromptType {
AUDIO AUDIO
STRUCTURED STRUCTURED
SKILL SKILL
TASTE
} }
enum StructuredFormat { enum StructuredFormat {
+1 -1
View File
@@ -84,7 +84,7 @@ export default defineConfig({
{ name: "Sentry", className: 'py-1', logo: '/sponsors/sentry.svg', darkLogo: '/sponsors/sentry-dark.svg', url: "https://sentry.io/?utm_source=prompts.chat" }, { name: "Sentry", className: 'py-1', logo: '/sponsors/sentry.svg', darkLogo: '/sponsors/sentry-dark.svg', url: "https://sentry.io/?utm_source=prompts.chat" },
{ name: "MitteAI", logo: '/sponsors/mitte.svg', darkLogo: '/sponsors/mitte-dark.svg', url: "https://mitte.ai/?utm_source=prompts.chat" }, { name: "MitteAI", logo: '/sponsors/mitte.svg', darkLogo: '/sponsors/mitte-dark.svg', url: "https://mitte.ai/?utm_source=prompts.chat" },
{ name: "eachlabs", className: 'py-[6px]', logo: '/sponsors/eachlabs.png', darkLogo: '/sponsors/eachlabs-dark.png', url: "https://www.eachlabs.ai/?utm_source=promptschat&utm_medium=referral" }, { name: "eachlabs", className: 'py-[6px]', logo: '/sponsors/eachlabs.png', darkLogo: '/sponsors/eachlabs-dark.png', url: "https://www.eachlabs.ai/?utm_source=promptschat&utm_medium=referral" },
{ name: "warp.dev", className: 'py-2', logo: '/sponsors/warp.svg', url: "https://warp.dev/?utm_source=prompts.chat" }, { name: "CommandCode", className: 'py-1', logo: '/sponsors/commandcode.svg', darkLogo: '/sponsors/commandcode-dark.svg', url: "https://commandcode.ai/?utm_source=prompts.chat" },
], ],
}, },
}, },
+16
View File
@@ -0,0 +1,16 @@
<svg width="1210" height="224" viewBox="0 0 1210 224" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 110C0 58.1455 0 32.2183 16.1091 16.1091C32.2183 0 58.1455 0 110 0H1099.25C1151.11 0 1177.03 0 1193.14 16.1091C1209.25 32.2183 1209.25 58.1455 1209.25 110V113.6C1209.25 165.455 1209.25 191.382 1193.14 207.491C1177.03 223.6 1151.11 223.6 1099.25 223.6H110C58.1454 223.6 32.2183 223.6 16.1091 207.491C0 191.382 0 165.455 0 113.6V110Z" fill="white"/>
<path d="M40 110C40 77.0017 40 60.5025 50.2513 50.2513C60.5025 40 77.0017 40 110 40H113.5C146.498 40 162.997 40 173.249 50.2513C183.5 60.5025 183.5 77.0017 183.5 110V113.6C183.5 146.598 183.5 163.097 173.249 173.349C162.997 183.6 146.498 183.6 113.5 183.6H110C77.0017 183.6 60.5025 183.6 50.2513 173.349C40 163.097 40 146.598 40 113.6V110Z" fill="black"/>
<path d="M138.806 67.6172C129.33 67.6172 121.622 75.3252 121.622 84.8007V92.165H101.984V84.8007C101.984 75.3252 94.2761 67.6172 84.8006 67.6172C75.3252 67.6172 67.6172 75.3252 67.6172 84.8007C67.6172 94.2761 75.3252 101.984 84.8006 101.984H92.165V121.622H84.8006C75.3252 121.622 67.6172 129.33 67.6172 138.806C67.6172 148.281 75.3252 155.989 84.8006 155.989C94.2761 155.989 101.984 148.281 101.984 138.806V131.441H121.622V138.806C121.622 148.281 129.33 155.989 138.806 155.989C148.281 155.989 155.989 148.281 155.989 138.806C155.989 129.33 148.281 121.622 138.806 121.622H131.441V101.984H138.806C148.281 101.984 155.989 94.2761 155.989 84.8007C155.989 75.3252 148.281 67.6172 138.806 67.6172ZM131.441 92.165V84.8007C131.441 80.7257 134.731 77.4363 138.806 77.4363C142.881 77.4363 146.17 80.7257 146.17 84.8007C146.17 88.8756 142.881 92.165 138.806 92.165H131.441ZM84.8006 92.165C80.7257 92.165 77.4363 88.8756 77.4363 84.8007C77.4363 80.7257 80.7257 77.4363 84.8006 77.4363C88.8756 77.4363 92.165 80.7257 92.165 84.8007V92.165H84.8006ZM101.984 121.622V101.984H121.622V121.622H101.984ZM138.806 146.17C134.731 146.17 131.441 142.881 131.441 138.806V131.441H138.806C142.881 131.441 146.17 134.731 146.17 138.806C146.17 142.881 142.881 146.17 138.806 146.17ZM84.8006 146.17C80.7257 146.17 77.4363 142.881 77.4363 138.806C77.4363 134.731 80.7257 131.441 84.8006 131.441H92.165V138.806C92.165 142.881 88.8756 146.17 84.8006 146.17Z" fill="white"/>
<path d="M1133.6 163.923C1110.88 163.923 1096.39 148.3 1096.39 124.297C1096.39 100.437 1110.88 84.6719 1133.18 84.6719C1154.91 84.6719 1169.25 99.7267 1169.25 125.291V129.41H1115.28C1115.99 142.761 1122.95 149.436 1133.75 149.436C1141.84 149.436 1147.38 145.601 1149.51 138.926L1168.12 140.062C1164 154.833 1151.07 163.923 1133.6 163.923ZM1150.36 117.196C1149.51 104.84 1142.84 99.0166 1133.18 99.0166C1123.38 99.0166 1116.7 105.408 1115.28 117.196H1150.36Z" fill="black"/>
<path d="M1048.92 163.922C1029.46 163.922 1017.39 148.583 1017.39 124.297C1017.39 100.01 1029.75 84.6713 1048.92 84.6713C1059.43 84.6713 1067.81 89.3581 1071.93 97.1696V61.3789H1090.11V162.218H1072.92L1072.5 150.998C1068.24 159.093 1059.43 163.922 1048.92 163.922ZM1054.32 149.151C1065.54 149.151 1071.93 140.346 1071.93 124.297C1071.93 108.106 1065.68 99.442 1054.32 99.442C1043.24 99.442 1036.28 108.816 1036.28 124.297C1036.28 139.494 1043.38 149.151 1054.32 149.151Z" fill="black"/>
<path d="M977.746 163.923C955.163 163.923 940.393 148.3 940.393 124.297C940.393 100.295 955.163 84.6719 977.746 84.6719C1000.19 84.6719 1014.96 100.295 1014.96 124.297C1014.96 148.3 1000.19 163.923 977.746 163.923ZM977.746 149.152C989.392 149.152 996.209 140.062 996.209 124.297C996.209 108.674 989.392 99.4426 977.746 99.4426C965.957 99.4426 959.282 108.674 959.282 124.297C959.282 140.062 965.957 149.152 977.746 149.152Z" fill="black"/>
<path d="M894.119 164.491C866.708 164.491 847.393 144.891 847.393 111.941C847.393 79.5592 865.998 59.1074 894.403 59.1074C920.11 59.1074 933.887 72.5999 938.148 95.4662L918.832 96.4604C916.418 83.2519 908.322 75.1564 894.403 75.1564C877.218 75.1564 866.566 89.5011 866.566 111.941C866.566 134.666 877.502 148.442 894.261 148.442C909.174 148.442 917.128 139.779 919.4 125.292L938.716 126.286C934.739 150.004 919.684 164.491 894.119 164.491Z" fill="black"/>
<path d="M799.922 163.922C780.465 163.922 768.393 148.583 768.393 124.297C768.393 100.01 780.749 84.6713 799.922 84.6713C810.432 84.6713 818.812 89.3581 822.931 97.1696V61.3789H841.11V162.218H823.925L823.499 150.998C819.238 159.093 810.432 163.922 799.922 163.922ZM805.319 149.151C816.54 149.151 822.931 140.346 822.931 124.297C822.931 108.106 816.682 99.442 805.319 99.442C794.241 99.442 787.282 108.816 787.282 124.297C787.282 139.494 794.383 149.151 805.319 149.151Z" fill="black"/>
<path d="M698.393 162.218V86.3762H714.868L715.294 99.4426C719.271 88.9327 727.934 84.6719 738.018 84.6719C754.777 84.6719 763.867 96.4601 763.867 113.503V162.218H745.687V119.326C745.687 106.544 742.279 99.4426 732.479 99.4426C722.679 99.4426 716.572 106.544 716.572 119.326V162.218H698.393Z" fill="black"/>
<path d="M644.81 163.923C628.903 163.923 618.393 156.395 618.393 143.187C618.393 130.12 626.488 123.161 643.105 119.894L668.244 114.924C668.244 104.272 663.273 98.7325 653.757 98.7325C644.81 98.7325 639.981 102.851 638.276 110.521L619.671 109.669C622.653 93.7616 634.868 84.6719 653.757 84.6719C675.345 84.6719 686.423 96.034 686.423 116.202V143.755C686.423 147.874 687.844 149.01 690.684 149.01H693.099V162.218C691.962 162.502 688.98 162.786 686.565 162.786C678.328 162.786 672.221 159.804 670.658 150.43C666.966 158.526 657.308 163.923 644.81 163.923ZM648.502 150.714C660.574 150.714 668.244 143.045 668.244 131.541V127.28L648.644 131.257C640.549 132.819 637.282 136.228 637.282 141.483C637.282 147.448 641.259 150.714 648.502 150.714Z" fill="black"/>
<path d="M506.393 162.218V86.3762H522.868L523.294 99.1586C526.986 89.9269 534.656 84.6719 544.172 84.6719C555.25 84.6719 562.919 90.495 566.186 100.295C569.594 90.2109 577.406 84.6719 587.916 84.6719C603.539 84.6719 613.197 94.7558 613.197 113.503V162.218H595.017V118.19C595.017 105.692 590.898 99.4426 582.093 99.4426C573.429 99.4426 568.174 106.544 568.174 118.758V162.218H551.273V118.758C551.273 106.402 547.864 99.4426 538.633 99.4426C529.969 99.4426 524.572 106.686 524.572 118.758V162.218H506.393Z" fill="black"/>
<path d="M391.393 162.218V86.3762H407.868L408.294 99.1586C411.986 89.9269 419.656 84.6719 429.172 84.6719C440.25 84.6719 447.919 90.495 451.186 100.295C454.594 90.2109 462.406 84.6719 472.916 84.6719C488.539 84.6719 498.197 94.7558 498.197 113.503V162.218H480.017V118.19C480.017 105.692 475.898 99.4426 467.093 99.4426C458.429 99.4426 453.174 106.544 453.174 118.758V162.218H436.273V118.758C436.273 106.402 432.864 99.4426 423.633 99.4426C414.969 99.4426 409.572 106.686 409.572 118.758V162.218H391.393Z" fill="black"/>
<path d="M347.746 163.923C325.163 163.923 310.393 148.3 310.393 124.297C310.393 100.295 325.163 84.6719 347.746 84.6719C370.186 84.6719 384.957 100.295 384.957 124.297C384.957 148.3 370.186 163.923 347.746 163.923ZM347.746 149.152C359.392 149.152 366.209 140.062 366.209 124.297C366.209 108.674 359.392 99.4426 347.746 99.4426C335.957 99.4426 329.282 108.674 329.282 124.297C329.282 140.062 335.957 149.152 347.746 149.152Z" fill="black"/>
<path d="M264.227 164.491C236.816 164.491 217.5 144.891 217.5 111.941C217.5 79.5592 236.105 59.1074 264.511 59.1074C290.218 59.1074 303.994 72.5999 308.255 95.4662L288.939 96.4604C286.525 83.2519 278.429 75.1564 264.511 75.1564C247.326 75.1564 236.674 89.5011 236.674 111.941C236.674 134.666 247.61 148.442 264.369 148.442C279.282 148.442 287.235 139.779 289.507 125.292L308.823 126.286C304.846 150.004 289.792 164.491 264.227 164.491Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 7.4 KiB

+16
View File
@@ -0,0 +1,16 @@
<svg width="1210" height="224" viewBox="0 0 1210 224" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 110C0 58.1455 0 32.2183 16.1091 16.1091C32.2183 0 58.1455 0 110 0H1099.36C1151.21 0 1177.14 0 1193.25 16.1091C1209.36 32.2183 1209.36 58.1455 1209.36 110V113.605C1209.36 165.459 1209.36 191.386 1193.25 207.496C1177.14 223.605 1151.21 223.605 1099.36 223.605H110C58.1454 223.605 32.2183 223.605 16.1091 207.496C0 191.386 0 165.459 0 113.605V110Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M113.14 45.8721H110.465C93.6901 45.8721 81.6998 45.8845 72.5877 47.1096C63.6446 48.312 58.3583 50.5847 54.4715 54.4715C50.5847 58.3583 48.312 63.6446 47.1096 72.5877C45.8845 81.6998 45.8721 93.6901 45.8721 110.465V113.14C45.8721 129.915 45.8845 141.905 47.1096 151.017C48.312 159.96 50.5847 165.246 54.4715 169.133C58.3583 173.02 63.6446 175.293 72.5877 176.495C81.6998 177.72 93.6901 177.733 110.465 177.733H113.14C129.915 177.733 141.905 177.72 151.017 176.495C159.96 175.293 165.246 173.02 169.133 169.133C173.02 165.246 175.293 159.96 176.495 151.017C177.72 141.905 177.733 129.915 177.733 113.14V110.465C177.733 93.6901 177.72 81.6998 176.495 72.5877C175.293 63.6446 173.02 58.3583 169.133 54.4715C165.246 50.5847 159.96 48.312 151.017 47.1096C141.905 45.8845 129.915 45.8721 113.14 45.8721ZM50.3193 50.3193C40 60.6387 40 77.2474 40 110.465V113.14C40 146.357 40 162.966 50.3193 173.285C60.6387 183.605 77.2474 183.605 110.465 183.605H113.14C146.357 183.605 162.966 183.605 173.285 173.285C183.605 162.966 183.605 146.357 183.605 113.14V110.465C183.605 77.2474 183.605 60.6387 173.285 50.3193C162.966 40 146.357 40 113.14 40H110.465C77.2474 40 60.6387 40 50.3193 50.3193Z" fill="white"/>
<path d="M138.805 67.6163C129.329 67.6163 121.621 75.3243 121.621 84.7997V92.1641H101.983V84.7997C101.983 75.3243 94.2752 67.6163 84.7997 67.6163C75.3243 67.6163 67.6163 75.3243 67.6163 84.7997C67.6163 94.2752 75.3243 101.983 84.7997 101.983H92.1641V121.621H84.7997C75.3243 121.621 67.6163 129.329 67.6163 138.805C67.6163 148.28 75.3243 155.988 84.7997 155.988C94.2752 155.988 101.983 148.28 101.983 138.805V131.441H121.621V138.805C121.621 148.28 129.329 155.988 138.805 155.988C148.28 155.988 155.988 148.28 155.988 138.805C155.988 129.329 148.28 121.621 138.805 121.621H131.441V101.983H138.805C148.28 101.983 155.988 94.2752 155.988 84.7997C155.988 75.3243 148.28 67.6163 138.805 67.6163ZM131.441 92.1641V84.7997C131.441 80.7248 134.73 77.4354 138.805 77.4354C142.88 77.4354 146.169 80.7248 146.169 84.7997C146.169 88.8747 142.88 92.1641 138.805 92.1641H131.441ZM84.7997 92.1641C80.7248 92.1641 77.4354 88.8747 77.4354 84.7997C77.4354 80.7248 80.7248 77.4354 84.7997 77.4354C88.8747 77.4354 92.1641 80.7248 92.1641 84.7997V92.1641H84.7997ZM101.983 121.621V101.983H121.621V121.621H101.983ZM138.805 146.169C134.73 146.169 131.441 142.88 131.441 138.805V131.441H138.805C142.88 131.441 146.169 134.73 146.169 138.805C146.169 142.88 142.88 146.169 138.805 146.169ZM84.7997 146.169C80.7248 146.169 77.4354 142.88 77.4354 138.805C77.4354 134.73 80.7248 131.441 84.7997 131.441H92.1641V138.805C92.1641 142.88 88.8747 146.169 84.7997 146.169Z" fill="white"/>
<path d="M1133.71 163.927C1110.98 163.927 1096.5 148.304 1096.5 124.301C1096.5 100.441 1110.98 84.6758 1133.28 84.6758C1155.01 84.6758 1169.36 99.7306 1169.36 125.295V129.414H1115.39C1116.1 142.765 1123.06 149.44 1133.85 149.44C1141.95 149.44 1147.49 145.605 1149.62 138.93L1168.22 140.066C1164.1 154.837 1151.18 163.927 1133.71 163.927ZM1150.47 117.2C1149.62 104.844 1142.94 99.0205 1133.28 99.0205C1123.48 99.0205 1116.81 105.412 1115.39 117.2H1150.47Z" fill="white"/>
<path d="M1049.03 163.926C1029.57 163.926 1017.5 148.587 1017.5 124.301C1017.5 100.014 1029.85 84.6752 1049.03 84.6752C1059.54 84.6752 1067.92 89.3621 1072.04 97.1735V61.3828H1090.22V162.222H1073.03L1072.6 151.002C1068.34 159.097 1059.54 163.926 1049.03 163.926ZM1054.42 149.155C1065.65 149.155 1072.04 140.35 1072.04 124.301C1072.04 108.11 1065.79 99.4459 1054.42 99.4459C1043.35 99.4459 1036.39 108.82 1036.39 124.301C1036.39 139.497 1043.49 149.155 1054.42 149.155Z" fill="white"/>
<path d="M977.851 163.927C955.269 163.927 940.498 148.304 940.498 124.301C940.498 100.299 955.269 84.6758 977.851 84.6758C1000.29 84.6758 1015.06 100.299 1015.06 124.301C1015.06 148.304 1000.29 163.927 977.851 163.927ZM977.851 149.156C989.497 149.156 996.314 140.066 996.314 124.301C996.314 108.678 989.497 99.4465 977.851 99.4465C966.063 99.4465 959.388 108.678 959.388 124.301C959.388 140.066 966.063 149.156 977.851 149.156Z" fill="white"/>
<path d="M894.225 164.495C866.814 164.495 847.498 144.895 847.498 111.945C847.498 79.5632 866.104 59.1113 894.509 59.1113C920.216 59.1113 933.992 72.6038 938.253 95.4701L918.937 96.4643C916.523 83.2558 908.427 75.1603 894.509 75.1603C877.324 75.1603 866.672 89.505 866.672 111.945C866.672 134.669 877.608 148.446 894.367 148.446C909.28 148.446 917.233 139.782 919.506 125.296L938.821 126.29C934.844 150.008 919.79 164.495 894.225 164.495Z" fill="white"/>
<path d="M800.028 163.926C780.57 163.926 768.498 148.587 768.498 124.301C768.498 100.014 780.854 84.6752 800.028 84.6752C810.538 84.6752 818.917 89.3621 823.036 97.1735V61.3828H841.216V162.222H824.03L823.604 151.002C819.344 159.097 810.538 163.926 800.028 163.926ZM805.425 149.155C816.645 149.155 823.036 140.35 823.036 124.301C823.036 108.11 816.787 99.4459 805.425 99.4459C794.347 99.4459 787.388 108.82 787.388 124.301C787.388 139.497 794.489 149.155 805.425 149.155Z" fill="white"/>
<path d="M698.498 162.222V86.3801H714.973L715.399 99.4465C719.376 88.9366 728.04 84.6758 738.123 84.6758C754.883 84.6758 763.972 96.464 763.972 113.507V162.222H745.793V119.33C745.793 106.548 742.384 99.4465 732.584 99.4465C722.785 99.4465 716.677 106.548 716.677 119.33V162.222H698.498Z" fill="white"/>
<path d="M644.915 163.927C629.008 163.927 618.498 156.399 618.498 143.191C618.498 130.124 626.594 123.165 643.211 119.898L668.349 114.927C668.349 104.275 663.378 98.7364 653.863 98.7364C644.915 98.7364 640.086 102.855 638.382 110.525L619.776 109.672C622.759 93.7655 634.973 84.6758 653.863 84.6758C675.451 84.6758 686.529 96.0379 686.529 116.206V143.759C686.529 147.878 687.949 149.014 690.79 149.014H693.204V162.222C692.068 162.506 689.085 162.79 686.671 162.79C678.433 162.79 672.326 159.808 670.764 150.434C667.071 158.53 657.413 163.927 644.915 163.927ZM648.608 150.718C660.68 150.718 668.349 143.049 668.349 131.545V127.284L648.75 131.26C640.654 132.823 637.388 136.231 637.388 141.486C637.388 147.452 641.364 150.718 648.608 150.718Z" fill="white"/>
<path d="M506.498 162.222V86.3801H522.973L523.399 99.1625C527.092 89.9308 534.761 84.6758 544.277 84.6758C555.355 84.6758 563.025 90.4989 566.291 100.299C569.7 90.2148 577.511 84.6758 588.021 84.6758C603.644 84.6758 613.302 94.7597 613.302 113.507V162.222H595.123V118.194C595.123 105.696 591.004 99.4465 582.198 99.4465C573.535 99.4465 568.28 106.548 568.28 118.762V162.222H551.378V118.762C551.378 106.406 547.97 99.4465 538.738 99.4465C530.074 99.4465 524.677 106.69 524.677 118.762V162.222H506.498Z" fill="white"/>
<path d="M391.498 162.222V86.3801H407.973L408.399 99.1625C412.092 89.9308 419.761 84.6758 429.277 84.6758C440.355 84.6758 448.025 90.4989 451.291 100.299C454.7 90.2148 462.511 84.6758 473.021 84.6758C488.644 84.6758 498.302 94.7597 498.302 113.507V162.222H480.123V118.194C480.123 105.696 476.004 99.4465 467.198 99.4465C458.535 99.4465 453.28 106.548 453.28 118.762V162.222H436.378V118.762C436.378 106.406 432.97 99.4465 423.738 99.4465C415.074 99.4465 409.677 106.69 409.677 118.762V162.222H391.498Z" fill="white"/>
<path d="M347.851 163.927C325.269 163.927 310.498 148.304 310.498 124.301C310.498 100.299 325.269 84.6758 347.851 84.6758C370.291 84.6758 385.062 100.299 385.062 124.301C385.062 148.304 370.291 163.927 347.851 163.927ZM347.851 149.156C359.497 149.156 366.314 140.066 366.314 124.301C366.314 108.678 359.497 99.4465 347.851 99.4465C336.063 99.4465 329.388 108.678 329.388 124.301C329.388 140.066 336.063 149.156 347.851 149.156Z" fill="white"/>
<path d="M264.332 164.495C236.921 164.495 217.605 144.895 217.605 111.945C217.605 79.5632 236.211 59.1113 264.616 59.1113C290.323 59.1113 304.1 72.6038 308.36 95.4701L289.045 96.4643C286.63 83.2558 278.535 75.1603 264.616 75.1603C247.431 75.1603 236.779 89.505 236.779 111.945C236.779 134.669 247.715 148.446 264.474 148.446C279.387 148.446 287.341 139.782 289.613 125.296L308.929 126.29C304.952 150.008 289.897 164.495 264.332 164.495Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 8.3 KiB

+1 -1
View File
@@ -11,7 +11,7 @@ const updatePromptSchema = z.object({
title: z.string().min(1).max(200).optional(), title: z.string().min(1).max(200).optional(),
description: z.string().max(500).optional(), description: z.string().max(500).optional(),
content: z.string().min(1).optional(), content: z.string().min(1).optional(),
type: z.enum(["TEXT", "IMAGE", "VIDEO", "AUDIO", "SKILL"]).optional(), // Output type or SKILL type: z.enum(["TEXT", "IMAGE", "VIDEO", "AUDIO", "SKILL", "TASTE"]).optional(), // Output type, SKILL, or TASTE
structuredFormat: z.enum(["JSON", "YAML"]).optional().nullable(), structuredFormat: z.enum(["JSON", "YAML"]).optional().nullable(),
categoryId: z.string().optional().nullable(), categoryId: z.string().optional().nullable(),
tagIds: z.array(z.string()).optional(), tagIds: z.array(z.string()).optional(),
+1 -1
View File
@@ -13,7 +13,7 @@ const promptSchema = z.object({
title: z.string().min(1).max(200), title: z.string().min(1).max(200),
description: z.string().max(500).optional(), description: z.string().max(500).optional(),
content: z.string().min(1), content: z.string().min(1),
type: z.enum(["TEXT", "IMAGE", "VIDEO", "AUDIO", "SKILL"]), // Output type or SKILL type: z.enum(["TEXT", "IMAGE", "VIDEO", "AUDIO", "SKILL", "TASTE"]), // Output type, SKILL, or TASTE
structuredFormat: z.enum(["JSON", "YAML"]).nullish(), // Input type indicator structuredFormat: z.enum(["JSON", "YAML"]).nullish(), // Input type indicator
categoryId: z.string().optional(), categoryId: z.string().optional(),
tagIds: z.array(z.string()), tagIds: z.array(z.string()),
+1 -1
View File
@@ -87,7 +87,7 @@ export default async function EditPromptPage({ params }: EditPromptPageProps) {
title: prompt.title, title: prompt.title,
description: prompt.description || "", description: prompt.description || "",
content: prompt.content, content: prompt.content,
type: ((prompt.type === "IMAGE" || prompt.type === "VIDEO" || prompt.type === "AUDIO" || prompt.type === "SKILL") ? prompt.type : "TEXT") as "TEXT" | "IMAGE" | "VIDEO" | "AUDIO" | "SKILL", type: ((prompt.type === "IMAGE" || prompt.type === "VIDEO" || prompt.type === "AUDIO" || prompt.type === "SKILL" || prompt.type === "TASTE") ? prompt.type : "TEXT") as "TEXT" | "IMAGE" | "VIDEO" | "AUDIO" | "SKILL" | "TASTE",
structuredFormat: prompt.structuredFormat ? (prompt.structuredFormat as "JSON" | "YAML") : undefined, structuredFormat: prompt.structuredFormat ? (prompt.structuredFormat as "JSON" | "YAML") : undefined,
categoryId: prompt.categoryId || undefined, categoryId: prompt.categoryId || undefined,
tagIds: prompt.tags.map((t) => t.tagId), tagIds: prompt.tags.map((t) => t.tagId),
+14 -2
View File
@@ -570,6 +570,18 @@ export default async function PromptPage({ params }: PromptPageProps) {
promptId={prompt.id} promptId={prompt.id}
promptSlug={prompt.slug ?? undefined} promptSlug={prompt.slug ?? undefined}
/> />
) : prompt.type === "TASTE" ? (
<InteractivePromptContent
content={prompt.content}
title="taste.md"
isLoggedIn={!!session?.user}
promptId={prompt.id}
promptSlug={prompt.slug ?? undefined}
promptType={prompt.type}
shareTitle={prompt.title}
promptTitle={prompt.title}
promptDescription={prompt.description ?? undefined}
/>
) : prompt.structuredFormat ? ( ) : prompt.structuredFormat ? (
<InteractivePromptContent <InteractivePromptContent
content={prompt.content} content={prompt.content}
@@ -659,8 +671,8 @@ export default async function PromptPage({ params }: PromptPageProps) {
</div> </div>
)} )}
{/* Report & Prompt Flow - hide for SKILL type */} {/* Report & Prompt Flow - hide for SKILL and TASTE types */}
{prompt.type !== "SKILL" && ( {prompt.type !== "SKILL" && prompt.type !== "TASTE" && (
<PromptFlowSection <PromptFlowSection
promptId={prompt.id} promptId={prompt.id}
promptTitle={prompt.title} promptTitle={prompt.title}
+1 -1
View File
@@ -18,7 +18,7 @@ interface PageProps {
prompt?: string; prompt?: string;
title?: string; title?: string;
content?: string; content?: string;
type?: "TEXT" | "IMAGE" | "VIDEO" | "AUDIO"; type?: "TEXT" | "IMAGE" | "VIDEO" | "AUDIO" | "SKILL" | "TASTE";
format?: "JSON" | "YAML"; format?: "JSON" | "YAML";
}>; }>;
} }
+164
View File
@@ -0,0 +1,164 @@
import { Metadata } from "next";
import Link from "next/link";
import { getTranslations } from "next-intl/server";
import { unstable_cache } from "next/cache";
import { Plus } from "lucide-react";
import { Button } from "@/components/ui/button";
import { InfinitePromptList } from "@/components/prompts/infinite-prompt-list";
import { db } from "@/lib/db";
export const metadata: Metadata = {
title: "Tastes",
description: "Browse and discover coding taste profiles",
};
// Query for tastes list (cached)
function getCachedTastes(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
orderBy: any,
perPage: number,
searchQuery?: string
) {
const cacheKey = JSON.stringify({ orderBy, perPage, searchQuery });
return unstable_cache(
async () => {
const where: Record<string, unknown> = {
type: "TASTE",
isPrivate: false,
isUnlisted: false,
deletedAt: null,
};
if (searchQuery) {
where.OR = [
{ title: { contains: searchQuery, mode: "insensitive" } },
{ content: { contains: searchQuery, mode: "insensitive" } },
{ description: { contains: searchQuery, mode: "insensitive" } },
];
}
const [tastesRaw, totalCount] = await Promise.all([
db.prompt.findMany({
where,
orderBy,
skip: 0,
take: perPage,
include: {
author: {
select: {
id: true,
name: true,
username: true,
avatar: true,
verified: true,
},
},
category: {
include: {
parent: {
select: { id: true, name: true, slug: true },
},
},
},
tags: {
include: {
tag: true,
},
},
contributors: {
select: {
id: true,
username: true,
name: true,
avatar: true,
},
},
_count: {
select: {
votes: true,
contributors: true,
outgoingConnections: { where: { label: { not: "related" } } },
incomingConnections: { where: { label: { not: "related" } } },
},
},
},
}),
db.prompt.count({ where }),
]);
return {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
tastes: tastesRaw.map((p: any) => ({
...p,
voteCount: p._count.votes,
contributorCount: p._count.contributors,
contributors: p.contributors,
})),
total: totalCount,
};
},
["tastes", cacheKey],
{ tags: ["prompts"] }
)();
}
interface TastesPageProps {
searchParams: Promise<{
q?: string;
sort?: string;
}>;
}
export default async function TastesPage({ searchParams }: TastesPageProps) {
const t = await getTranslations("prompts");
const tNav = await getTranslations("nav");
const tSearch = await getTranslations("search");
const params = await searchParams;
const perPage = 24;
// Build order by clause
// eslint-disable-next-line @typescript-eslint/no-explicit-any
let orderBy: any = { createdAt: "desc" };
if (params.sort === "oldest") {
orderBy = { createdAt: "asc" };
} else if (params.sort === "upvotes") {
orderBy = { votes: { _count: "desc" } };
}
const result = await getCachedTastes(orderBy, perPage, params.q);
const tastes = result.tastes;
const total = result.total;
return (
<div className="container py-6">
<div className="flex flex-col sm:flex-row sm:items-center justify-between gap-4 mb-6">
<div className="flex items-baseline gap-2">
<h1 className="text-lg font-semibold">{tNav("tastes")}</h1>
<span className="text-xs text-muted-foreground">{tSearch("found", { count: total })}</span>
</div>
<Button size="sm" className="h-8 text-xs w-full sm:w-auto" asChild>
<Link href="/prompts/new?type=TASTE">
<Plus className="h-3.5 w-3.5 mr-1" />
{t("createTaste")}
</Link>
</Button>
</div>
<p className="text-sm text-muted-foreground mb-6">
{t("tastesDescription")}
</p>
<InfinitePromptList
initialPrompts={tastes}
initialTotal={total}
filters={{
q: params.q,
type: "TASTE",
sort: params.sort,
}}
/>
</div>
);
}
+32 -3
View File
@@ -213,6 +213,13 @@ export function Header({ authProvider = "credentials", allowRegistration = true
> >
{t("nav.skills")} {t("nav.skills")}
</Link> </Link>
<Link
href="/tastes"
onClick={() => setMobileMenuOpen(false)}
className="flex items-center gap-3 px-3 py-2.5 rounded-md text-sm font-medium text-muted-foreground hover:text-foreground hover:bg-accent transition-colors"
>
{t("nav.tastes")}
</Link>
<Link <Link
href="/workflows" href="/workflows"
onClick={() => setMobileMenuOpen(false)} onClick={() => setMobileMenuOpen(false)}
@@ -370,13 +377,19 @@ export function Header({ authProvider = "credentials", allowRegistration = true
</Link> </Link>
<Link <Link
href="/skills" href="/skills"
className="px-3 py-1.5 rounded-md text-muted-foreground transition-colors hover:text-foreground hover:bg-accent" className="hidden xl:block px-3 py-1.5 rounded-md text-muted-foreground transition-colors hover:text-foreground hover:bg-accent"
> >
{t("nav.skills")} {t("nav.skills")}
</Link> </Link>
<Link
href="/tastes"
className="hidden xl:block px-3 py-1.5 rounded-md text-muted-foreground transition-colors hover:text-foreground hover:bg-accent"
>
{t("nav.tastes")}
</Link>
<Link <Link
href="/workflows" href="/workflows"
className="px-3 py-1.5 rounded-md text-muted-foreground transition-colors hover:text-foreground hover:bg-accent" className="hidden xl:block px-3 py-1.5 rounded-md text-muted-foreground transition-colors hover:text-foreground hover:bg-accent"
> >
{t("nav.workflows")} {t("nav.workflows")}
</Link> </Link>
@@ -399,7 +412,7 @@ export function Header({ authProvider = "credentials", allowRegistration = true
> >
{t("nav.promptmasters")} {t("nav.promptmasters")}
</Link> </Link>
{/* Three-dot dropdown for Categories, Tags, Promptmasters on md screens */} {/* Three-dot dropdown for collapsed nav items */}
<DropdownMenu> <DropdownMenu>
<DropdownMenuTrigger asChild> <DropdownMenuTrigger asChild>
<Button variant="ghost" size="icon" className="2xl:hidden h-8 w-8"> <Button variant="ghost" size="icon" className="2xl:hidden h-8 w-8">
@@ -408,6 +421,22 @@ export function Header({ authProvider = "credentials", allowRegistration = true
</Button> </Button>
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent align="start"> <DropdownMenuContent align="start">
<DropdownMenuItem asChild className="xl:hidden">
<Link href="/skills">
{t("nav.skills")}
</Link>
</DropdownMenuItem>
<DropdownMenuItem asChild className="xl:hidden">
<Link href="/tastes">
{t("nav.tastes")}
</Link>
</DropdownMenuItem>
<DropdownMenuItem asChild className="xl:hidden">
<Link href="/workflows">
{t("nav.workflows")}
</Link>
</DropdownMenuItem>
<DropdownMenuSeparator className="xl:hidden" />
<DropdownMenuItem asChild> <DropdownMenuItem asChild>
<Link href="/categories"> <Link href="/categories">
{t("nav.categories")} {t("nav.categories")}
@@ -24,6 +24,7 @@ export function DownloadPromptDropdown({ promptId, promptSlug, promptType }: Dow
const [copiedFormat, setCopiedFormat] = useState<"md" | "yml" | null>(null); const [copiedFormat, setCopiedFormat] = useState<"md" | "yml" | null>(null);
const isSkill = promptType === "SKILL"; const isSkill = promptType === "SKILL";
const isTaste = promptType === "TASTE";
const getFileName = (format: "md" | "yml") => { const getFileName = (format: "md" | "yml") => {
const base = promptSlug ? `${promptId}_${promptSlug}` : promptId; const base = promptSlug ? `${promptId}_${promptSlug}` : promptId;
@@ -97,6 +98,29 @@ export function DownloadPromptDropdown({ promptId, promptSlug, promptType }: Dow
} }
}; };
const handleDownloadTasteMd = async () => {
const url = `/api/prompts/${promptSlug ? `${promptId}_${promptSlug}` : promptId}/raw`;
try {
const response = await fetch(url);
if (!response.ok) throw new Error("Failed to fetch");
const content = await response.text();
const blob = new Blob([content], { type: "text/plain;charset=utf-8" });
const downloadUrl = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = downloadUrl;
a.download = "taste.md";
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(downloadUrl);
toast.success(t("downloadStarted"));
} catch {
toast.error(t("downloadFailed"));
}
};
// For SKILL type, show a simple button that downloads .skill zip // For SKILL type, show a simple button that downloads .skill zip
if (isSkill) { if (isSkill) {
return ( return (
@@ -107,6 +131,16 @@ export function DownloadPromptDropdown({ promptId, promptSlug, promptType }: Dow
); );
} }
// For TASTE type, show a simple button that downloads taste.md
if (isTaste) {
return (
<Button variant="ghost" size="sm" onClick={handleDownloadTasteMd}>
<Download className="h-4 w-4 mr-1" />
taste.md
</Button>
);
}
return ( return (
<DropdownMenu> <DropdownMenu>
<DropdownMenuTrigger asChild> <DropdownMenuTrigger asChild>
@@ -267,18 +267,19 @@ export function InteractivePromptContent({
setTranslatedContent(translated); setTranslatedContent(translated);
}, []); }, []);
// Check if this is a SKILL type prompt // Check if this is a SKILL or TASTE type prompt
const isSkill = promptType === "SKILL"; const isSkill = promptType === "SKILL";
const isTaste = promptType === "TASTE";
// If no variables, render simple content // If no variables, render simple content
if (variables.length === 0) { if (variables.length === 0) {
if (isSkill) { if (isSkill || isTaste) {
// SKILL type: render with Monaco editor (read-only markdown) // SKILL/TASTE type: render with Monaco editor (read-only markdown)
return ( return (
<div className={className}> <div className={className}>
<div className="flex items-center justify-between mb-3"> <div className="flex items-center justify-between mb-3">
<div className="flex items-center gap-1"> <div className="flex items-center gap-1">
{title && <h3 className="text-base font-semibold">{title}</h3>} <h3 className="text-base font-semibold">{isTaste ? "taste.md" : (title || "SKILL.md")}</h3>
<TranslateButton <TranslateButton
content={content} content={content}
onTranslate={handleTranslate} onTranslate={handleTranslate}
+1 -1
View File
@@ -14,7 +14,7 @@ interface PromptBuilderState {
title: string; title: string;
description: string; description: string;
content: string; content: string;
type: "TEXT" | "IMAGE" | "VIDEO" | "AUDIO" | "SKILL"; // Output type or SKILL type: "TEXT" | "IMAGE" | "VIDEO" | "AUDIO" | "SKILL" | "TASTE"; // Output type, SKILL, or TASTE
structuredFormat?: "JSON" | "YAML"; // Input type indicator structuredFormat?: "JSON" | "YAML"; // Input type indicator
categoryId?: string; categoryId?: string;
tagIds: string[]; tagIds: string[];
+17 -8
View File
@@ -344,7 +344,7 @@ const createPromptSchema = (t: (key: string) => string) => z.object({
title: z.string().min(1, t("titleRequired")).max(200), title: z.string().min(1, t("titleRequired")).max(200),
description: z.string().max(500).optional(), description: z.string().max(500).optional(),
content: z.string().min(1, t("contentRequired")), content: z.string().min(1, t("contentRequired")),
type: z.enum(["TEXT", "IMAGE", "VIDEO", "AUDIO", "SKILL"]), // Output type or SKILL type: z.enum(["TEXT", "IMAGE", "VIDEO", "AUDIO", "SKILL", "TASTE"]), // Output type, SKILL, or TASTE
structuredFormat: z.enum(["JSON", "YAML"]).optional(), structuredFormat: z.enum(["JSON", "YAML"]).optional(),
categoryId: z.string().optional(), categoryId: z.string().optional(),
tagIds: z.array(z.string()), tagIds: z.array(z.string()),
@@ -539,7 +539,7 @@ export function PromptForm({ categories, tags, initialData, initialContributors
title: string; title: string;
description: string; description: string;
content: string; content: string;
type: "TEXT" | "IMAGE" | "VIDEO" | "AUDIO" | "SKILL"; type: "TEXT" | "IMAGE" | "VIDEO" | "AUDIO" | "SKILL" | "TASTE";
structuredFormat?: "JSON" | "YAML"; structuredFormat?: "JSON" | "YAML";
categoryId?: string; categoryId?: string;
tagIds: string[]; tagIds: string[];
@@ -1094,7 +1094,7 @@ export function PromptForm({ categories, tags, initialData, initialContributors
<div className="flex flex-col sm:flex-row sm:items-center gap-3"> <div className="flex flex-col sm:flex-row sm:items-center gap-3">
<div className="flex items-center gap-3"> <div className="flex items-center gap-3">
<Select <Select
value={promptType === "SKILL" ? "SKILL" : (isStructuredInput ? "STRUCTURED" : "TEXT")} value={promptType === "SKILL" ? "SKILL" : promptType === "TASTE" ? "TASTE" : (isStructuredInput ? "STRUCTURED" : "TEXT")}
onValueChange={(v) => { onValueChange={(v) => {
if (v === "STRUCTURED") { if (v === "STRUCTURED") {
form.setValue("structuredFormat", "JSON"); form.setValue("structuredFormat", "JSON");
@@ -1110,6 +1110,14 @@ export function PromptForm({ categories, tags, initialData, initialContributors
if (!currentContent || !currentContent.startsWith("---")) { if (!currentContent || !currentContent.startsWith("---")) {
form.setValue("content", generateSkillContentWithFrontmatter(title, description)); form.setValue("content", generateSkillContentWithFrontmatter(title, description));
} }
} else if (v === "TASTE") {
form.setValue("structuredFormat", undefined);
form.setValue("type", "TASTE");
// Auto-generate placeholder taste content
const currentContent = form.getValues("content");
if (!currentContent || !currentContent.startsWith("# Taste")) {
form.setValue("content", `# Taste\n- Package manager is npm (not pnpm or yarn). Confidence: 0.95\n- Use Next.js App Router with React Server Components by default; add \`"use client"\` only for interactive components. Confidence: 0.95\n`);
}
} else { } else {
form.setValue("structuredFormat", undefined); form.setValue("structuredFormat", undefined);
form.setValue("type", "TEXT"); form.setValue("type", "TEXT");
@@ -1123,6 +1131,7 @@ export function PromptForm({ categories, tags, initialData, initialContributors
<SelectItem value="TEXT">{t("inputTypes.text")}</SelectItem> <SelectItem value="TEXT">{t("inputTypes.text")}</SelectItem>
<SelectItem value="STRUCTURED">{t("inputTypes.structured")}</SelectItem> <SelectItem value="STRUCTURED">{t("inputTypes.structured")}</SelectItem>
<SelectItem value="SKILL">{t("inputTypes.skill")}</SelectItem> <SelectItem value="SKILL">{t("inputTypes.skill")}</SelectItem>
<SelectItem value="TASTE">{t("inputTypes.taste")}</SelectItem>
</SelectContent> </SelectContent>
</Select> </Select>
{isStructuredInput && ( {isStructuredInput && (
@@ -1270,8 +1279,8 @@ export function PromptForm({ categories, tags, initialData, initialContributors
onConvert={(converted) => form.setValue("content", converted)} onConvert={(converted) => form.setValue("content", converted)}
/> />
{/* Structured format detection warning - hide for SKILL type */} {/* Structured format detection warning - hide for SKILL and TASTE types */}
{promptType !== "SKILL" && ( {promptType !== "SKILL" && promptType !== "TASTE" && (
<StructuredFormatWarning <StructuredFormatWarning
content={promptContent} content={promptContent}
isStructuredInput={isStructuredInput} isStructuredInput={isStructuredInput}
@@ -1296,8 +1305,8 @@ export function PromptForm({ categories, tags, initialData, initialContributors
</div> </div>
{/* ===== OUTPUT SECTION ===== */} {/* ===== OUTPUT SECTION ===== */}
{promptType === "SKILL" ? ( {(promptType === "SKILL" || promptType === "TASTE") ? (
/* SKILL type shows a code output preview - code generated BY the skill */ /* SKILL/TASTE type shows a code output preview - code generated BY the skill/taste */
<div className="space-y-4 py-6 border-t"> <div className="space-y-4 py-6 border-t">
<div className="space-y-1"> <div className="space-y-1">
<h2 className="text-base font-semibold">{t("outputType")}</h2> <h2 className="text-base font-semibold">{t("outputType")}</h2>
@@ -1318,7 +1327,7 @@ export function PromptForm({ categories, tags, initialData, initialContributors
{/* Code output content */} {/* Code output content */}
<div className="p-4 text-xs space-y-1" style={{ fontFamily: 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace' }}> <div className="p-4 text-xs space-y-1" style={{ fontFamily: 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace' }}>
{/* eslint-disable-next-line react/jsx-no-comment-textnodes -- Intentional code preview text */} {/* eslint-disable-next-line react/jsx-no-comment-textnodes -- Intentional code preview text */}
<div><span className="text-[#6a9955]">// Code generated by skill...</span></div> <div><span className="text-[#6a9955]">// Code generated by skill, and your taste...</span></div>
<div><span className="text-[#c586c0]">export</span> <span className="text-[#569cd6]">function</span> <span className="text-[#dcdcaa]">handler</span><span className="text-[#d4d4d4]">()</span> <span className="text-[#d4d4d4]">{'{'}</span></div> <div><span className="text-[#c586c0]">export</span> <span className="text-[#569cd6]">function</span> <span className="text-[#dcdcaa]">handler</span><span className="text-[#d4d4d4]">()</span> <span className="text-[#d4d4d4]">{'{'}</span></div>
<div><span className="text-[#d4d4d4]"> </span><span className="text-[#c586c0]">return</span> <span className="text-[#ce9178]">&quot;...&quot;</span><span className="text-[#d4d4d4]">;</span></div> <div><span className="text-[#d4d4d4]"> </span><span className="text-[#c586c0]">return</span> <span className="text-[#ce9178]">&quot;...&quot;</span><span className="text-[#d4d4d4]">;</span></div>
<div><span className="text-[#d4d4d4]">{'}'}</span></div> <div><span className="text-[#d4d4d4]">{'}'}</span></div>
+1 -1
View File
@@ -102,7 +102,7 @@ export function WidgetCard({ prompt }: WidgetCardProps) {
{/* Content Preview */} {/* Content Preview */}
<div className="relative flex-1 mb-3 min-h-0"> <div className="relative flex-1 mb-3 min-h-0">
<pre className="text-xs text-muted-foreground bg-muted p-2 rounded overflow-hidden font-mono h-full whitespace-pre-wrap break-words line-clamp-10"> <pre className="text-xs text-muted-foreground bg-muted p-2 rounded overflow-y-auto font-mono whitespace-pre-wrap break-words max-h-48">
{prompt.content} {prompt.content}
</pre> </pre>
</div> </div>
+1 -1
View File
@@ -5,7 +5,7 @@ export interface PromptBuilderState {
title: string; title: string;
description: string; description: string;
content: string; content: string;
type: "TEXT" | "IMAGE" | "VIDEO" | "AUDIO" | "STRUCTURED"; type: "TEXT" | "IMAGE" | "VIDEO" | "AUDIO" | "STRUCTURED" | "TASTE";
structuredFormat?: "JSON" | "YAML"; structuredFormat?: "JSON" | "YAML";
categoryId?: string; categoryId?: string;
tagIds: string[]; tagIds: string[];
+5 -1
View File
@@ -160,7 +160,11 @@ export const bookWidget: WidgetPlugin = {
repeatEvery: 60, repeatEvery: 60,
maxCount: 4, maxCount: 4,
}, },
shouldInject: () => { shouldInject: (context) => {
// Don't inject on the skills page
if (context.filters?.type === "SKILL") {
return false;
}
return true; return true;
}, },
render: () => <BookWidget />, render: () => <BookWidget />,
+5
View File
@@ -57,6 +57,11 @@ Provide your review in a clear, actionable format with specific line references
shouldInject: (context) => { shouldInject: (context) => {
const { filters } = context; const { filters } = context;
// Don't inject on the skills page
if (filters?.type === "SKILL") {
return false;
}
// Inject when no filters are active // Inject when no filters are active
if (!filters?.q && !filters?.category && !filters?.tag) { if (!filters?.q && !filters?.category && !filters?.tag) {
return true; return true;
+56
View File
@@ -0,0 +1,56 @@
import type { WidgetPlugin } from "./types";
export const commandcodeWidget: WidgetPlugin = {
id: "commandcode",
name: "CommandCode",
prompts: [
{
id: "commandcode-coding-agent",
slug: "commandcode-coding-agent-with-taste",
title: "CommandCode — Coding Agent with Taste",
description: "The first frontier coding agent that both builds software and continuously learns your coding taste. Ships full-stack projects, features, fixes bugs, writes tests, and refactors, all while learning how you write code.",
content: `## Install
npm i -g command-code
## get started
cd my-project
cmd
## Manage Taste with \`npx taste\`
Share and manage taste profiles like Git.
## Push project taste to remote
npx taste push --all
## Pull taste from remote
npx taste pull username/project-name`,
type: "TEXT",
sponsor: {
name: "CommandCode",
logo: "/sponsors/commandcode.svg",
logoDark: "/sponsors/commandcode-dark.svg",
url: "https://commandcode.ai",
},
tags: ["Coding Agents", "Developer Tools", "AI Agents"],
category: "Development",
actionUrl: "https://commandcode.ai",
actionLabel: "Try CommandCode",
positioning: {
position: 2,
mode: "repeat",
repeatEvery: 50,
maxCount: 3,
},
shouldInject: (context) => {
const { filters } = context;
// Only inject on the skills page (type=SKILL)
if (filters?.type === "SKILL") {
return true;
}
return false;
},
},
],
};
+2
View File
@@ -2,6 +2,7 @@ import type { WidgetPlugin, WidgetPrompt, WidgetContext } from "./types";
import { coderabbitWidget } from "./coderabbit"; import { coderabbitWidget } from "./coderabbit";
import { bookWidget } from "./book"; import { bookWidget } from "./book";
import { textreamWidget } from "./textream"; import { textreamWidget } from "./textream";
import { commandcodeWidget } from "./commandcode";
export * from "./types"; export * from "./types";
@@ -10,6 +11,7 @@ const widgetPlugins: WidgetPlugin[] = [
coderabbitWidget, coderabbitWidget,
bookWidget, bookWidget,
textreamWidget, textreamWidget,
commandcodeWidget,
]; ];
/** /**
+5
View File
@@ -122,6 +122,11 @@ export const textreamWidget: WidgetPlugin = {
shouldInject: (context) => { shouldInject: (context) => {
const { filters } = context; const { filters } = context;
// Don't inject on the skills page
if (filters?.type === "SKILL") {
return false;
}
// Show when no filters active // Show when no filters active
if (!filters?.q && !filters?.category && !filters?.tag) { if (!filters?.q && !filters?.category && !filters?.tag) {
return true; return true;