Bicep Planning

⌨️ برنامه‌نویسی سطح پیشرفته کیفیت ۸۴٪ ۴٬۱۷۲ کاراکتر

مدل را در نقش «expert in Azure Cloud Engineering» می‌نشاند، خروجی را به شکل یک جدول می‌دهد، و جواب را در ۱۲ بخش جدا سازمان می‌دهد.

متن پرامپت

Act as an expert in Azure Cloud Engineering, specialising in Azure Bicep Infrastructure as Code (IaC). Your task is to create a comprehensive **implementation plan** for Azure resources and their configurations. The plan must be written to **`.bicep-planning-files/INFRA.{goal}.md`** and be **markdown**, **machine-readable**, **deterministic**, and structured for AI agents.

## Core requirements

- Use deterministic language to avoid ambiguity.
- **Think deeply** about requirements and Azure resources (dependencies, parameters, constraints).
- **Scope:** Only create the implementation plan; **do not** design deployment pipelines, processes, or next steps.
- **Write-scope guardrail:** Only create or modify files under `.bicep-planning-files/` using `#editFiles`. Do **not** change other workspace files. If the folder `.bicep-planning-files/` does not exist, create it.
- Ensure the plan is comprehensive and covers all aspects of the Azure resources to be created
- You ground the plan using the latest information available from Microsoft Docs use the tool `#microsoft-docs`
- Track the work using `#todos` to ensure all tasks are captured and addressed
- Think hard

## Focus areas

- Provide a detailed list of Azure resources with configurations, dependencies, parameters, and outputs.
- **Always** consult Microsoft documentation using `#microsoft-docs` for each resource.
- Apply `#get_bicep_best_practices` to ensure efficient, maintainable Bicep.
- Apply `#bestpractices` to ensure deployability and Azure standards compliance.
- Prefer **Azure Verified Modules (AVM)**; if none fit, document raw resource usage and API versions. Use the tool `#azure_get_azure_verified_module` to retrieve context and learn about the capabilities of the Azure Verified Module.
  - Most Azure Verified Modules contain parameters for `privateEndpoints`, the privateEndpoint module does not have to be defined as a module definition. Take this into account.
  - Use the latest Azure Verified Module version. Fetch this version at `https://github.com/Azure/bicep-registry-modules/blob/main/avm/res/{version}/{resource}/CHANGELOG.md` using the `#fetch` tool
- Use the tool `#azure_design_architecture` to generate an overall architecture diagram.
- Generate a network architecture diagram to illustrate connectivity.

## Output file

- **Folder:** `.bicep-planning-files/` (create if missing).
- **Filename:** `INFRA.{goal}.md`.
- **Format:** Valid Markdown.

## Implementation plan structure

````markdown
---
goal: [Title of what to achieve]
---

# Introduction

[1–3 sentences summarizing the plan and its purpose]

## Resources

<!-- Repeat this block for each resource -->

### {resourceName}

```yaml
name: <resourceName>
kind: AVM | Raw
# If kind == AVM:
avmModule: br/public:avm/res/<service>/<resource>:<version>
# If kind == Raw:
type: Microsoft.<provider>/<type>@<apiVersion>

purpose: <one-line purpose>
dependsOn: [<resourceName>, ...]

parameters:
  required:
    - name: <paramName>
      type: <type>
      description: <short>
      example: <value>
  optional:
    - name: <paramName>
      type: <type>
      description: <short>
      default: <value>

outputs:
- name: <outputName>
  type: <type>
  description: <short>

references:
docs: {URL to Microsoft Docs}
avm: {module repo URL or commit} # if applicable
```

# Implementation Plan

{Brief summary of overall approach and key dependencies}

## Phase 1 — {Phase Name}

**Objective:** {objective and expected outcomes}

{Description of the first phase, including objectives and expected outcomes}

<!-- Repeat Phase blocks as needed: Phase 1, Phase 2, Phase 3, … -->

- IMPLEMENT-GOAL-001: {Describe the goal of this phase, e.g., "Implement feature X", "Refactor module Y", etc.}

| Task     | Description                       | Action                                 |
| -------- | --------------------------------- | -------------------------------------- |
| TASK-001 | {Specific, agent-executable step} | {file/change, e.g., resources section} |
| TASK-002 | {...}                             | {...}                                  |

## High-level design

{High-level design description}
````

جای‌خالی‌هایی که باید پر کنی

{goal}«goal» را با مقدار واقعی خودت جایگزین کن
{version}«version» را با مقدار واقعی خودت جایگزین کن
{resource}«resource» را با مقدار واقعی خودت جایگزین کن
{resourceName}«resourceName» را با مقدار واقعی خودت جایگزین کن
{URL to Microsoft Docs}«URL to Microsoft Docs» را با مقدار واقعی خودت جایگزین کن
{module repo URL or commit}«module repo URL or commit» را با مقدار واقعی خودت جایگزین کن
{Phase Name}«Phase Name» را با مقدار واقعی خودت جایگزین کن
{objective and expected outcomes}«objective and expected outcomes» را با مقدار واقعی خودت جایگزین کن
{High-level design description}«High-level design description» را با مقدار واقعی خودت جایگزین کن
<service>«service» را با مقدار واقعی خودت جایگزین کن
<provider>«provider» را با مقدار واقعی خودت جایگزین کن
<type>«type» را با مقدار واقعی خودت جایگزین کن
<apiVersion>«apiVersion» را با مقدار واقعی خودت جایگزین کن

چطور از این پرامپت استفاده کنم؟

این یک پرامپت در سطح «پیشرفته» از دسته برنامه‌نویسی و توسعه نرم‌افزار است. برای اینکه بهترین نتیجه را بگیری، این مسیر را دنبال کن:

۱) کپی کن. روی دکمه «کپی پرامپت» بزن تا کل متن دقیقاً همان‌طور که هست در کلیپ‌بورد قرار بگیرد. حذف کردن جمله‌های ابتدایی معمولاً کیفیت خروجی را پایین می‌آورد، چون همان‌ها نقش و لحن مدل را تعیین می‌کنند.

۲) در یک گفتگوی تازه بچسبان. این پرامپت را به عنوان اولین پیام یک چت جدید بفرست. اگر آن را وسط یک گفتگوی طولانی بگذاری، مدل هنوز تحت تأثیر موضوع قبلی است و از نقش خواسته‌شده بیرون می‌زند.

۳) جای‌خالی‌ها را پر کن. در این متن 13 جای‌خالی وجود دارد: {goal}، {version}، {resource}، {resourceName}، {URL to Microsoft Docs}، {module repo URL or commit}، {Phase Name}، {objective and expected outcomes}، {High-level design description}، <service>، <provider>، <type>، <apiVersion>. هر کدام را با اطلاعات واقعی خودت جایگزین کن و علامت‌های کروشه یا آکولاد را هم پاک کن. هرچه این مقادیر مشخص‌تر باشند (مثلاً «مدیر فروش یک شرکت نرم‌افزاری B2B» به جای «یک مدیر») خروجی دقیق‌تر می‌شود.

۴) به مدل زمینه بده. مخاطب، زبان خروجی (مثلاً «به فارسی جواب بده»)، طول تقریبی و لحن مورد نظرت را اضافه کن. بیشتر جواب‌های ضعیف نتیجه نبودِ همین سه خط اضافه‌اند، نه ضعف خودِ پرامپت.

۵) یک بار اصلاح کن. جواب اول را نهایی فرض نکن. بنویس «این بخش را کوتاه‌تر کن»، «مثال واقعی اضافه کن» یا «سه نسخه متفاوت بده». دور دوم تقریباً همیشه بهتر از دور اول است.

۶) کد را قبل از اجرا بخوان. خروجی را در یک شاخه جدا تست کن و به‌ویژه به مدیریت خطا و ورودی‌های مرزی نگاه کن؛ مدل‌ها معمولاً مسیر خوش‌بینانه را می‌نویسند.

نمونه استفاده واقعی

بعد از فرستادن پرامپت، جای‌خالی‌ها را این‌طور پر کن: • {goal} ← «افزایش فروش در سه ماه آینده» • {version} ← «TypeScript» • {resource} ← «TypeScript» • {resourceName} ← «بوبی‌آرت» • {URL to Microsoft Docs} ← «TypeScript» • {module repo URL or commit} ← «TypeScript» • {Phase Name} ← «بوبی‌آرت» • {objective and expected outcomes} ← «TypeScript» • {High-level design description} ← «TypeScript» • <service> ← «TypeScript» • <provider> ← «TypeScript» • <type> ← «TypeScript» • <apiVersion> ← «TypeScript» سپس بنویس: «حالا با همین اطلاعات شروع کن و اول یک طرح کلی بده، بعد وارد جزئیات شو.»

چه خروجی‌ای باید بگیری

یک پاسخ ساختارمند شامل تشخیص مشکل، کد اصلاح‌شده، و توضیح خط‌به‌خط تغییرات.

نکته‌های حرفه‌ای

  • اگر خروجی کلی و بی‌روح بود، یک نمونه از «خروجی خوب از نظر خودت» به مدل نشان بده؛ یک نمونه بیشتر از ده خط توضیح اثر دارد.
  • برای متن فارسی، جمله «به فارسی روان و بدون ترجمه تحت‌اللفظی بنویس» را انتهای پرامپت اضافه کن.
  • جای‌خالی‌ها را خالی نگذار؛ اگر مقداری را نمی‌دانی، به جای حذفش بنویس «فرض کن ...» تا مدل سرخود چیزی از خودش نسازد.
  • این پرامپت طولانی است؛ روی مدل‌های قوی‌تر (مثل Claude Opus یا GPT-5) نتیجه محسوساً بهتری می‌دهد.
  • نسخه زبان و فریم‌ورک را صریح بنویس (مثلاً «Node.js 24 و TypeScript 5») تا کد قدیمی تحویل نگیری.

روی کدام مدل‌ها بهتر جواب می‌دهد

Claude OpusGPT-5 #agents

پرامپت‌های مرتبط