5.0 KiB
5.0 KiB
name, description
| name | description |
|---|---|
| prompt-writer | تولید فایل پرامپت .md برای یک قابلیت یا باگفیکس در پروژه ClinicPro. استفاده کن وقتی کاربر میگوید «یک پرامپت بنویس»، «پرامپت بساز»، «write a prompt»، «برام پرامپت بنویس برای X». این skill پروژه را تحلیل میکند، سپس یک فایل .md کامل در .claude/prompt/ میسازد و دستور اجرا را نمایش میدهد. |
نحوه دریافت ورودی
کاربر موضوع یا مشکل را توضیح میدهد. اگر توضیح کافی نبود، یک سوال کوتاه بپرس.
مراحل اجرا
مرحله ۱ — درک موضوع
قبل از نوشتن پرامپت:
- موضوع را تحلیل کن: باگفیکس است یا قابلیت جدید؟
- فایلهای مرتبط را شناسایی کن:
- Backend:
src/— Controllers، Services، Entities، Repositories - Frontend:
assets/admin/pages/،assets/admin/components/ - مستندات:
docs/api/
- Backend:
- APIهای موجود را بررسی کن:
ddev exec php bin/console debug:router | grep api - کد مرتبط را بخوان: فقط فایلهایی که مستقیم به موضوع مربوطند
مرحله ۲ — نامگذاری فایل
نام فایل: kebab-case، توصیفی، کوتاه.
مثالها:
fix-invitation-accept.mddoctor-dashboard-stats.mdclinic-gallery-upload.mdappointment-sms-notification.md
مرحله ۳ — ساخت فایل پرامپت
فایل را در .claude/prompt/<name>.md بساز با این ساختار:
# <عنوان واضح>
## زمینه
<یک پاراگراف: چرا این تغییر لازم است؟ وضعیت فعلی چیست؟>
## مشکل / هدف
<توضیح دقیق مشکل یا قابلیت مورد نیاز>
## فایلهای مرتبط
| فایل | نقش |
|------|-----|
| `src/...` | ... |
| `assets/admin/...` | ... |
## وضعیت فعلی
<کد یا رفتار فعلی — فقط بخش مرتبط>
```php / tsx
// کد فعلی مشکلدار یا ناقص
وظایف
۱. <اولین وظیفه>
<توضیح دقیق + راهحل پیشنهادی>
// نمونه کد یا pseudocode
۲. <دومین وظیفه>
...
نکات مهم
- <نکته معماری یا محدودیت مهم>
- <edge case که باید پوشش داده شود>
- <الگوی پروژه که باید رعایت شود>
---
### قوانین محتوای پرامپت
**باید داشته باشد:**
- مسیر دقیق فایلهایی که باید تغییر کنند
- وضعیت فعلی کد (کپی از کد واقعی، نه توصیف کلی)
- راهحل پیشنهادی با نمونه کد
- edge caseها
- الگوهای پروژه که باید رعایت شوند (BaseController، TanStack Query، Zod، ...)
**نباید داشته باشد:**
- توضیحات کلی و بدیهی
- کدی که از پروژه واقعی کپی نشده
- وظایف نامشخص مثل «بررسی کن» بدون مشخص کردن چه چیزی
**قوانین خاص پروژه که باید در پرامپت منعکس شود:**
- Backend: همه controllerها از `BaseController` ارث میبرند؛ پاسخها با `$this->success()` / `$this->paginated()` / `$this->error()`
- Frontend paginated: items از `data?.data`، total از `data?.meta?.totalRecords`
- Frontend single: از `data?.data` (ممکن است double-nested باشد)
- Category API: triple-nested → `data?.data?.data ?? []`
- تاریخها: Unix timestamp صحیح؛ نمایش با `formatDate()` شمسی
- اگر Entity تغییر کرد: migration لازم است
- مستندات: بعد از هر تغییر API، فایل مربوطه در `docs/api/` باید بهروز شود
### مرحله ۴ — خروجی نهایی
بعد از ساخت فایل، فقط این سه مورد را نمایش بده:
توضیح: <یک جمله توصیف پرامپت> فایل پرامپت: .claude/prompt/.md دستور اجرا:
/run-prompt .claude/prompt/.md
---
## مثال
کاربر: برام یک پرامپت بنویس — وقتی دکتر دعوت کلینیک را قبول میکند به لیست پزشکان اضافه نمیشود
→ بررسی میکنم...
- src/ClinicInvitation/Service/ClinicInvitationService.php خوانده شد
- متد accept() فقط status تغییر میدهد، clinic->getDoctors()->add() صدا نمیزند
- Clinic entity دارای ManyToMany $doctors است
→ فایل .claude/prompt/fix-invitation-accept.md ساخته شد
توضیح: رفع باگ پذیرش دعوت — پزشک باید پس از accept به clinic_doctors اضافه شود. فایل پرامپت: .claude/prompt/fix-invitation-accept.md دستور اجرا:
/run-prompt .claude/prompt/fix-invitation-accept.md