অ্যান্টিগ্র্যাভিটি এবং স্পেক-কিট সহ স্পেক-চালিত ADK এজেন্ট ডেভেলপমেন্ট

১. ভূমিকা

একটি বিদ্যমান এজেন্টে নতুন ফিচার যোগ করা — যেমন একটি নতুন ডেটাবেস-সমর্থিত সক্ষমতা — এর জন্য সাধারণত বয়লারপ্লেট কোড লিখতে হয়, ইন্টিগ্রেশনগুলো সংযুক্ত করতে হয় এবং কোডবেসে আগে থেকেই থাকা প্যাটার্নগুলোর সাথে সবকিছু সামঞ্জস্যপূর্ণ রাখতে হয়। অ্যান্টিগ্র্যাভিটি এই প্রক্রিয়ার প্রতিটি ধাপকে ত্বরান্বিত করে: এটি প্রয়োজনীয় প্রেক্ষাপট তৈরি করার জন্য আপনার কোডবেস বিশ্লেষণ করে, আপনার পর্যালোচনার জন্য সুসংগঠিত স্পেসিফিকেশন ও বাস্তবায়ন পরিকল্পনা তৈরি করে এবং কোডের পরিবর্তনগুলো কার্যকর করে — এই সবকিছুই পরিচালিত হয় ডোমেইন জ্ঞানের মাধ্যমে, যা এটি আপনাকে পুনঃব্যবহারযোগ্য দক্ষতা হিসেবে অর্জন করতে সাহায্য করে, এবং একটি প্রজেক্ট সংবিধান দ্বারা যা অলঙ্ঘনীয় নীতিগুলো প্রয়োগ করে। এই কোডল্যাবটি স্পেক-কিটকে ব্যাপকভাবে রেফারেন্স হিসেবে ব্যবহার করে স্পেসিফিকেশন ডকুমেন্টেশনকে উন্নত করার জন্য একটি নতুন চক্র প্রবর্তনের মাধ্যমে অ্যান্টিগ্র্যাভিটি স্পেক-ড্রাইভেন ডেভেলপমেন্ট প্যারাডাইমকে আরও শক্তিশালী করার একটি উপায় তুলে ধরে।

আপনি যা তৈরি করবেন

একটি স্থানীয়ভাবে পরিচালিত রেস্তোরাঁ কনসিয়ার্জ অ্যাপ্লিকেশন, যেখানে একটি সম্পূর্ণ এসডিডি চক্রের মাধ্যমে রিজার্ভেশন বুকিং যুক্ত করা হয়েছে:

  • রিজার্ভেশন বুকিং — অতিথিরা টেবিল বুক করেন এবং রিজার্ভেশন যাচাই করেন, যা নতুন এমসিপি টুলবক্স ডেটাবেস টুলস এবং একটি ক্লাউড এসকিউএল reservations টেবিল দ্বারা সমর্থিত।
  • (চ্যালেঞ্জ) – এজেন্টের জন্য আপনার নিজস্ব UI তৈরি করুন
  • (চ্যালেঞ্জ) – অ্যান্টিগ্র্যাভিটি এজেন্টের সাহায্যে গুগল ক্লাউডে ডেপ্লয় করুন

স্টার্টার কোডটি একটি কার্যকরী ADK এজেন্ট প্রদান করে, যাতে মেনু সার্চ (MCP টুলবক্সের মাধ্যমে কীওয়ার্ড ও সিমান্টিক) এবং ডায়েটারি প্রেফারেন্স ট্র্যাকিং (টুলকনটেক্সটের মাধ্যমে) সুবিধা রয়েছে। আপনি অ্যাপ্লিকেশন কোড নিজে হাতে না লিখেই এটিকে সম্প্রসারণ করতে পারেন — অ্যান্টিগ্র্যাভিটি আপনার স্পেসিফিকেশন অনুযায়ী এর বাস্তবায়ন পরিচালনা করে।

404869b603fff6ab.png

আপনি যা শিখবেন

  • কীভাবে প্রোজেক্ট কনটেক্সট বুটস্ট্র্যাপ করতে হয় যাতে অ্যান্টিগ্র্যাভিটি একটি বিদ্যমান কোডবেস বুঝতে পারে
  • কীভাবে ডোমেইন জ্ঞান (যেমন, ADK কোডল্যাব প্যাটার্ন) পুনঃব্যবহারের জন্য প্যাকেজ করে অ্যান্টিগ্র্যাভিটি স্কিল তৈরি করা যায়
  • কীভাবে একটি প্রকল্প সংবিধান তৈরি করবেন যার ভিত্তিতে এসডিডি ওয়ার্কফ্লো পরিকল্পনা এবং বিশ্লেষণের সময় যাচাই করা যায়।
  • অ্যান্টিগ্র্যাভিটিতে পদ্ধতিগতভাবে ফিচার যোগ করার জন্য কীভাবে স্পেক-ড্রাইভেন ডেভেলপমেন্ট (এসডিডি) ওয়ার্কফ্লো ব্যবহার করবেন
  • MCP টুলবক্সের মাধ্যমে নতুন ডাটাবেস-সমর্থিত টুল ব্যবহার করে কীভাবে একটি ADK এজেন্টকে সম্প্রসারিত করা যায়

পূর্বশর্ত

২. আপনার পরিবেশ প্রস্তুত করুন

এই ধাপে স্টার্টার রিপোজিটরি ক্লোন করা হয়, গুগল ক্লাউডের সাথে প্রমাণীকরণ সম্পন্ন হয়, একটি ক্লাউড এসকিউএল ডেটাবেস প্রস্তুত করা হয় এবং আপনার স্থানীয় অ্যান্টিগ্র্যাভিটি পরিবেশ প্রস্তুত করা হয়।

স্টার্টার রিপোজিটরি ক্লোন করুন

Antigravity-তে একটি টার্মিনাল (অথবা আপনার সিস্টেম টার্মিনাল) খুলুন। কম্প্যানিয়ন রিপোটি ক্লোন করুন এবং ডিরেক্টরিতে প্রবেশ করুন:

git clone https://github.com/alphinside/sdd-adk-antigravity-starter.git sdd-adk-agents-agy
cd sdd-adk-agents-agy

Antigravity-তে ক্লোন করা রিপোজিটরিটি খুলুন। File -> Open Folder -> ক্লোন করা ডিরেক্টরি sdd-adk-agents-agy নির্বাচন করুন।

আপস্ট্রিম রিমোটটি সরিয়ে ফেলুন। SDD ওয়ার্কফ্লো ফিচার স্পেসিফিকেশনের জন্য গিট ব্রাঞ্চ তৈরি করে — রিমোটটি সরিয়ে ফেললে ভুলবশত স্টার্টার রিপোজিটরিতে পুশ হওয়া প্রতিরোধ করা যায়:

git remote remove origin

পূর্বশর্তগুলি ইনস্টল করুন

পূর্বশর্ত স্ক্রিপ্টটি চালান। এটি git , curl , gcloud , uv , Python 3.12 এবং MCP Toolbox আছে কিনা তা পরীক্ষা করে (এবং অনুপস্থিত থাকলে ইনস্টল করে):

bash scripts/setup_prerequisites.sh

2aa671856eee1085.png

গুগল ক্লাউডের মাধ্যমে প্রমাণীকরণ করুন

দুটি প্রমাণীকরণ কমান্ড চালান। উভয়ই OAuth-এর জন্য একটি ব্রাউজার খোলে:

gcloud auth login
gcloud auth application-default login

যেহেতু আপনি অ্যান্টিগ্র্যাভিটি স্থানীয়ভাবে ব্যবহার করছেন, তাই আপনাকে ম্যানুয়ালি প্রমাণীকরণ করতে হবে। auth login gcloud CLI-কে প্রমাণীকরণ করে। application-default login আপনার অ্যাপ্লিকেশন দ্বারা ব্যবহৃত গুগল ক্লাউড SDK-গুলোকে প্রমাণীকরণ করে — ADK-এর Vertex AI কল এবং ক্লাউড SQL পাইথন কানেক্টর উভয়ই অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল-এর উপর নির্ভর করে।

আপনার গুগল ক্লাউড প্রজেক্ট সেট আপ করুন

প্রজেক্ট সেটআপ স্ক্রিপ্ট চালানোর আগে লোকেশন ভেরিয়েবলগুলো .env ফাইলে লিখে রাখুন:

echo "GOOGLE_CLOUD_LOCATION=global" > .env
echo "REGION=us-central1" >> .env
  • Vertex AI / Gemini API কল করার জন্য GOOGLE_CLOUD_LOCATION=global ব্যবহার করা হয়।
  • ক্লাউড এসকিউএল এবং অন্যান্য জিসিপি পরিকাঠামোর জন্য REGION=us-central1 ব্যবহৃত হয়।

প্রজেক্ট সেটআপ স্ক্রিপ্টটি ডাউনলোড করে চালান। এটি ট্রায়াল বিলিং সহ একটি গুগল ক্লাউড প্রজেক্ট তৈরি বা যাচাই করে এবং প্রজেক্ট আইডিটি .env ফাইলে সংরক্ষণ করে, তারপর এটিকে সোর্স করুন:

curl -sL https://raw.githubusercontent.com/alphinside/cloud-trial-project-setup/main/setup_verify_trial_project.sh -o setup_verify_trial_project.sh

bash setup_verify_trial_project.sh && source .env

প্রয়োজনীয় API-গুলো সক্রিয় করুন:

gcloud services enable \
  aiplatform.googleapis.com \
  sqladmin.googleapis.com \
  compute.googleapis.com \
  cloudresourcemanager.googleapis.com

ক্লাউড এসকিউএল সরবরাহ করুন

ডাটাবেস পাসওয়ার্ড সেট করুন এবং এটি .env ফাইলে যোগ করুন:

export DB_PASSWORD=codelabpassword
echo "DB_PASSWORD=${DB_PASSWORD}" >> .env

ক্লাউড SQL ইনস্ট্যান্স তৈরি করুন:

gcloud sql instances create restaurant-db \
  --database-version=POSTGRES_17 \
  --edition=ENTERPRISE \
  --region=${REGION} \
  --availability-type=ZONAL \
  --tier=db-custom-1-3840 \
  --root-password=${DB_PASSWORD} \
  --enable-google-ml-integration \
  --database-flags cloudsql.enable_google_ml_integration=on &

Vertex AI ML ইন্টিগ্রেশনের জন্য db-custom-1-3840 টিয়ারটি ন্যূনতম আবশ্যক। --enable-google-ml-integration ফ্ল্যাগটি Cloud SQL-কে সরাসরি SQL থেকে Gemini এমবেডিং মডেল কল করার সুযোগ দেয় — এটিই সিমান্টিক সার্চ ফিচারটিকে চালনা করে।

নির্ভরতা ইনস্টল করুন

একটি নতুন টার্মিনাল ট্যাব খুলুন। নিশ্চিত করুন যে আপনি এখনও ক্লোন করা রিপো প্রজেক্ট ডিরেক্টরিতেই আছেন এবং এনভায়রনমেন্ট ভেরিয়েবলগুলো রিলোড করুন:

source .env

আমরা পাইথন প্রজেক্ট ম্যানেজার হিসেবে uv ব্যবহার করব। uv হলো রাস্ট (Rust) ভাষায় লেখা একটি দ্রুতগতির পাইথন প্যাকেজ ও প্রজেক্ট ম্যানেজার ( ডকুমেন্টেশন )। এই কোডল্যাবটি গতি এবং সরলতার জন্য এটি ব্যবহার করে। পাইথন ডিপেন্ডেন্সিগুলো ইনস্টল করুন:

uv sync

এরপর আপনার প্রোজেক্ট কনফিগারেশন দিয়ে ADK এজেন্টের .env ফাইলটি আপডেট করুন:

cat > restaurant_concierge/.env <<EOF
GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT}
GOOGLE_CLOUD_LOCATION=global
GOOGLE_GENAI_USE_VERTEXAI=True
EOF

এখন, কাজ শুরু করার জন্য আমাদের প্রয়োজনীয় সমস্ত স্টার্টার ADK এজেন্ট রিপো তৈরি হয়ে যাওয়ার কথা। সবকিছু প্রস্তুত হওয়ার অপেক্ষায় থাকাকালীন, চলুন পরবর্তী অংশে অ্যান্টিগ্র্যাভিটি এবং স্পেক-ড্রাইভেন ডেভেলপমেন্ট নিয়ে আরও আলোচনা করা যাক।

৩. স্টার্টার কোডটি পর্যালোচনা করুন এবং স্পেক-ড্রাইভেন ডেভেলপমেন্ট বুঝুন।

এই ধাপে স্টার্টার কোডের কাঠামো ব্যাখ্যা করা হয়েছে, স্পেক-ড্রাইভেন ডেভেলপমেন্ট পদ্ধতির সাথে পরিচয় করিয়ে দেওয়া হয়েছে, ডেটাবেসে ডেটা যুক্ত করা হয়েছে এবং বেস এজেন্টটি সম্প্রসারণ শুরু করার আগে সেটি সঠিকভাবে কাজ করছে কিনা তা যাচাই করা হয়েছে।

প্রকল্পের কাঠামো

অ্যান্টিগ্র্যাভিটি এডিটরে ক্লোন করা রিপো প্রজেক্টটি খুলুন এবং ডিরেক্টরি বিন্যাসটি পর্যালোচনা করুন:

sdd-adk-agents-agy/
├── .agents/
│   ├── workflows/                 # SDD slash commands (/speckit.*) – manual trigger
│   │   ├── speckit.specify.md
│   │   ├── speckit.clarify.md
│   │   ├── speckit.plan.md
│   │   ├── speckit.tasks.md
│   │   ├── speckit.analyze.md
│   │   ├── speckit.implement.md
│   │   ├── speckit.checklist.md
│   │   └── speckit.constitution.md
│   ├── skills/                   # Antigravity skills (loaded on demand, agent determined)
│   │   ├── adk-agent-development/
│   │   │   ├── SKILL.md     # ADK patterns
│   │   │   └── examples/
│   │   │       ├── basic_agent.py
│   │   │       ├── Dockerfile
│   │   │       ├── server.py
│   │   │       ├── stateful_agent.py
│   │   │       ├── toolbox_agent.py
│   │   │       ├── tools_agent.py
│   │   │       └── tools.yaml
│   │   └── repo-research/
│   │       └── SKILL.md     # Repo analysis 
│   └── rules/               # Always-active context
├── .specify/                # spec-kit SDD templates and memory
│   ├── memory/constitution.md
│   ├── templates/
│   └── scripts/
├── restaurant_concierge/    # ADK agent package
│   ├── __init__.py
│   ├── agent.py             # LlmAgent + ToolContext tools + Toolbox integration
│   └── .env                 # Vertex AI configuration
├── server.py                # FastAPI server wrapping the agent
├── tools.yaml               # MCP Toolbox tool definitions
├── scripts/                 # Setup scripts
└── pyproject.toml

মূল ফাইল

এজেন্ট অ্যাপ্লিকেশন ফাইল

  • restaurant_concierge/agent.py — মূল এজেন্ট। এটি একটি LlmAgent যা MCP টুলবক্স ডাটাবেস টুলগুলোকে ToolContext ভিত্তিক খাদ্যতালিকাগত পছন্দ ট্র্যাকিংয়ের সাথে একত্রিত করে। এজেন্টটি টুলবক্স সার্ভার থেকে সমস্ত টুল লোড করে এবং দুটি পাইথন ফাংশন ( save_dietary_preference , get_dietary_preferences ) যোগ করে, যেগুলো স্টেট ম্যানেজ করার জন্য ToolContext ব্যবহার করে।
  • tools.yaml — এমসিপি টুলবক্স টুলের সংজ্ঞা। তিনটি মেনু সার্চ টুল সংজ্ঞায়িত করা হয়েছে: কীওয়ার্ড সার্চ ( search_menu ), pgvector মাধ্যমে সিমান্টিক সার্চ ( semantic_search_menu ), এবং ক্যাটাগরি ফিল্টার ( get_menu_by_category )। এখনও কোনো রিজার্ভেশন টুল নেই — সেগুলো আপনাকে পরে যোগ করতে হবে।
  • server.py — একটি ন্যূনতম FastAPI সার্ভার, যা দেখায় কিভাবে আপনি ADK-কে একটি FastAPI অবজেক্ট হিসেবে অ্যাক্সেস করতে পারেন। ADK-এর get_fast_api_app() SSE স্ট্রিমিং এবং সেশন ম্যানেজমেন্ট API-এর জন্য /run_sse সহ বিভিন্ন বিল্ট-ইন এন্ডপয়েন্ট প্রদান করে।

অ্যান্টিগ্র্যাভিটি ফাইল

  • .agents/skills/adk-agent-development/SKILL.md — একটি পূর্ব-কনফিগার করা স্কিল (অ্যান্টিগ্র্যাভিটি দ্বারা তৈরি) যাতে চারটি ADK কোডল্যাবের সংক্ষিপ্ত রেফারেন্স প্যাটার্ন রয়েছে। এটি বর্তমানে নিষ্ক্রিয় (YAML ফ্রন্টম্যাটার অনুপস্থিত) – আপনাকে এটি পরে আপডেট করতে হবে। ADK এজেন্ট ফিচার এবং তাদের উদাহরণ সম্পর্কিত কাজ শনাক্ত করলে অ্যান্টিগ্র্যাভিটি স্বয়ংক্রিয়ভাবে এই স্কিলটি লোড করে — এই তথ্যই পরবর্তীতে রিজার্ভেশন ফিচারের পরিকল্পনা করার সময় অ্যান্টিগ্র্যাভিটিকে পথ দেখায়।
  • .agents/skills/repo-research/SKILL.md — এটি এমন একটি স্কিল যা অ্যান্টিগ্র্যাভিটিকে শেখায় কীভাবে একটি রিপোজিটরিকে পর্যায়ক্রমে বিশ্লেষণ করতে হয় এবং একটি কাঠামোগত প্রজেক্ট কনটেক্সট ডকুমেন্ট তৈরি করতে হয়। এটি একটি ৪-ধাপের পদ্ধতি ব্যবহার করে: সারফেস স্ক্যান (শুধুমাত্র ডিরেক্টরি ট্রি), কনফিগ ও মেটাডেটা ফাইল, এন্ট্রি পয়েন্ট ও ডেটা মডেল, এবং তারপর নির্দিষ্ট ক্ষেত্রে গভীর অনুসন্ধান — প্রতিটি ধাপ পরবর্তী ধাপে যাওয়ার আগে থেমে গিয়ে প্রাপ্ত ফলাফল লিখে রাখে। ADK স্কিলের মতোই, আপনি পরে YAML ফ্রন্টম্যাটার যোগ না করা পর্যন্ত এটি নিষ্ক্রিয় থাকে। একবার সক্রিয় হয়ে গেলে, .agents/rules/project-context.md তৈরি করার জন্য এটিকে আহ্বান করুন — এটি একটি বিশদ অনবোর্ডিং ডকুমেন্ট যা আর্কিটেকচার, রানটাইম ডিপেন্ডেন্সি, এপিআই সারফেস এবং ডোমেইন গ্লসারি অন্তর্ভুক্ত করে।

স্পেক-চালিত উন্নয়ন: অ্যান্টিগ্র্যাভিটির অন্তর্নির্মিত পরিকল্পনা থেকে কাঠামোগত এসডিডি পর্যন্ত

এআই কোডিং অ্যাসিস্ট্যান্টগুলো একটি প্রম্পট থেকে কোড তৈরি করা সহজ করে তোলে। এর ঝুঁকিটি হলো: আপনি একটি ফিচারের বর্ণনা এক বাক্যে দেন, অ্যাসিস্ট্যান্টটি শত শত লাইন লিখে ফেলে, এবং আপনি তা গ্রহণ করে নেন কারণ দেখতে ঠিকঠাক মনে হয়। একে কখনও কখনও 'ভাইব কোডিং' বলা হয় — আপনি অনুভূতির উপর নির্ভর করে কোড পরিচালনা করেন, আউটপুটটি কাজ করছে কি না তার উপর ভিত্তি করে তা গ্রহণ বা বর্জন করেন। প্রোটোটাইপ এবং ফেলে দেওয়ার মতো স্ক্রিপ্টের জন্য এটি দ্রুত কাজ করে। কিন্তু যখন কোডবেস বড় হতে থাকে, ফিচারগুলো একে অপরের সাথে মিথস্ক্রিয়া করে, অথবা যখন আপনি কয়েক সপ্তাহ পরে কোডটি পুনরায় দেখেন এবং কোনো একটি সিদ্ধান্ত কেন নেওয়া হয়েছিল তা মনে করতে পারেন না, তখন এই পদ্ধতিটি ভেঙে পড়ে।

b2a0753229d08ef3.png

স্পেক-ড্রাইভেন ডেভেলপমেন্ট (এসডিডি) এই প্রক্রিয়াটিতে একটি কাঠামো যোগ করে। কোনো কোড তৈরি করার আগে, আপনি একটি স্পেসিফিকেশন লেখেন: ফিচারটি কী কাজ করে, এটি কাদের জন্য, এবং এর সফলতার মানদণ্ড কী। এআই অ্যাসিস্ট্যান্ট সেই স্পেক অনুযায়ী কাজ করে — এবং এর আউটপুট পর্যালোচনা করার সময় আপনিও তাই করেন। স্পেকটিই উদ্দেশ্যের একমাত্র নির্ভরযোগ্য উৎস হয়ে ওঠে। যদি কোড স্পেক থেকে বিচ্যুত হয়, আপনি পর্যালোচনার সময় তা ধরে ফেলেন। যদি প্রয়োজনীয়তা পরিবর্তিত হয়, আপনি প্রথমে স্পেকটি আপডেট করেন, তারপর পুনরায় জেনারেট করেন। সিদ্ধান্তগুলো নথিভুক্ত করা হয়, তাৎক্ষণিকভাবে নেওয়া হয় না।

এর একটি বাস্তব অসুবিধা হলো: ভাইব কোডিংয়ের তুলনায় এসডিডি প্রতিটি ফিচারের জন্য ধীরগতির। কোড লেখার আগে আপনাকে ডকুমেন্ট তৈরি করতে হয়। কিন্তু এর সুফল বহুগুণে বেড়ে যায় — কোডবেসের প্রতিটি ভবিষ্যৎ পরিবর্তনের একটি প্রেক্ষাপট থাকে, এআই দ্বারা তৈরি প্রতিটি ইমপ্লিমেন্টেশনের একটি পর্যালোচনাযোগ্য চুক্তি থাকে, এবং আপনি স্মৃতি থেকে সিদ্ধান্ত ব্যাখ্যা করার পরিবর্তে স্পেসিফিকেশন দেখিয়ে সহযোগীদের (মানুষ বা এআই) কাজে যুক্ত করতে পারেন।

অ্যান্টিগ্র্যাভিটি ইতিমধ্যেই স্পেক-ড্রাইভেন ডেভেলপমেন্ট নীতি অনুসরণ করে। আপনি যখন এজেন্টটিকে প্ল্যানিং মোডে সেট করেন, তখন এটি কোনো কোড লেখার আগে দুটি আর্টিফ্যাক্ট তৈরি করে:

  • বাস্তবায়ন পরিকল্পনা — প্রস্তাবিত প্রযুক্তিগত পদ্ধতি, ফাইলের পরিবর্তন এবং স্থাপত্য সংক্রান্ত সিদ্ধান্তের একটি সংক্ষিপ্ত বিবরণ 632169a236bc62cc.png
  • করণীয় তালিকা — কাজের বিষয়গুলির একটি সুসংগঠিত বিভাজন

795e47f4d98ae074.png

অ্যান্টিগ্র্যাভিটি এক্সিকিউশনের আগে আপনাকে এই আর্টিফ্যাক্টগুলো পর্যালোচনা ও অনুমোদন করতে বলে। এই পরিকল্পনা-ও-বাস্তবায়ন চক্রটিই স্পেক-ড্রাইভেন ডেভেলপমেন্টের মূল ভিত্তি: স্পেসিফিকেশন কোডকে পথ দেখায়, এর উল্টোটা নয়।

এই কোডল্যাবটি স্পেক-কিট (GitHub-এর একটি স্পেসিফিকেশন-চালিত ডেভেলপমেন্ট ফ্রেমওয়ার্ক)-এর উপর ভিত্তি করে একটি সুনির্দিষ্ট ও ভার্সন-নিয়ন্ত্রিত ওয়ার্কফ্লোর মাধ্যমে সেই ভিত্তিকে আরও এগিয়ে নিয়ে যায়। প্রতিটি ফিচার একটি সুচিন্তিত পাইপলাইনের মধ্য দিয়ে যায়, যেখানে প্রতিটি আর্টিফ্যাক্ট একটি স্বতন্ত্র ডকুমেন্ট হিসেবে কাজ করে, যা আপনি git -এ পর্যালোচনা, সম্পাদনা এবং ট্র্যাক করতে পারেন। এই পাইপলাইনে দুটি ঐচ্ছিক কোয়ালিটি-গেট পর্যায় (স্পষ্ট করা এবং বিশ্লেষণ করা) অন্তর্ভুক্ত রয়েছে, যা কোনো সমস্যা বাস্তবায়নের পর্যায়ে পৌঁছানোর আগেই তা শনাক্ত করে।

পর্যায়

প্রত্নবস্তু

উদ্দেশ্য

/speckit.specify

spec.md

কী তৈরি করতে হবে তা নির্ধারণ করুন (ব্যবহারকারীর জন্য উপযোগী, প্রযুক্তি-নিরপেক্ষ)

/speckit.clarify (ঐচ্ছিক)

আপডেট করা spec.md

অনির্দিষ্ট ক্ষেত্রগুলো চিহ্নিত করুন, সুনির্দিষ্ট ও স্পষ্টীকরণমূলক প্রশ্ন জিজ্ঞাসা করুন, এবং উত্তরগুলো স্পেসিফিকেশনে লিপিবদ্ধ করুন।

/speckit.plan

plan.md , data-model.md , research.md

কীভাবে এটি তৈরি করা যায় তার নকশা (প্রযুক্তিগত পদ্ধতি, ডেটা মডেল, গবেষণা)

/speckit.tasks

tasks.md

পরিকল্পনাটিকে সুশৃঙ্খল ও কার্যকর ধাপে ভাগ করুন।

/speckit.analyze (ঐচ্ছিক)

বিশ্লেষণ প্রতিবেদন

বাস্তবায়নের আগে ঝুঁকি, ঘাটতি বা অনুপস্থিত বিশেষ পরিস্থিতি চিহ্নিত করার জন্য কাজগুলো পর্যালোচনা করুন।

/speckit.implement

কোড পরিবর্তন

কাজগুলো সম্পন্ন করুন এবং প্রতিটি সম্পন্ন হলে টিক চিহ্ন দিন।

c0164b540ee0afa1.png

প্রতিটি আর্টিফ্যাক্ট specs/<feature-branch>/ ফোল্ডারে একটি ফাইল হিসেবে সংরক্ষিত থাকে, গিট-এ ভার্সন-কন্ট্রোল করা হয় এবং এটি পুনঃব্যবহারযোগ্য। যদি কোনো আলোচনা মাঝপথে থেমে যায় বা আপনি পরে কোনো সিদ্ধান্ত পুনর্বিবেচনা করতে চান, তাহলে স্পেসিফিকেশন ডকুমেন্টগুলো সবসময় সেখানেই থাকে — চ্যাট হিস্ট্রিতে চাপা পড়ে থাকে না।

স্টার্টার রিপোটিতে .agents/workflows/ ফোল্ডারে এই SDD ওয়ার্কফ্লো এবং .specify/templates/ টেমপ্লেটগুলো অন্তর্ভুক্ত রয়েছে। পরবর্তীতে এজেন্টে নতুন ফিচার যোগ করার জন্য আপনি এগুলো ব্যবহার করবেন।

৪. ক্লাউড এসকিউএল সেটআপ সম্পন্ন করুন এবং বেস এজেন্ট কার্যকর আছে কিনা তা নিশ্চিত করুন।

টার্মিনাল ট্যাবে ফিরে যান যেখানে ক্লাউড এসকিউএল তৈরির কমান্ডটি চলছে। এটি সম্পন্ন হলে, ইনস্ট্যান্সটি প্রস্তুত কিনা তা যাচাই করুন:

gcloud sql instances describe restaurant-db --format="value(state)"

আউটপুটে RUNNABLE দেখা গেলে, এগিয়ে যান। যদি PENDING_CREATE দেখা যায়, তাহলে কিছুক্ষণ অপেক্ষা করুন এবং কমান্ডটি পুনরায় চালান।

ক্লাউড SQL পরিষেবা অ্যাকাউন্টকে Vertex AI-তে অ্যাক্সেস দিন (ইন-ডাটাবেস এমবেডিং ফাংশনের জন্য প্রয়োজনীয়):

SERVICE_ACCOUNT=$(gcloud sql instances describe restaurant-db --format="value(serviceAccountEmailAddress)")

gcloud projects add-iam-policy-binding $GOOGLE_CLOUD_PROJECT \
  --member="serviceAccount:$SERVICE_ACCOUNT" \
  --role="roles/aiplatform.user" \
  --quiet

ডাটাবেস তৈরি করুন:

gcloud sql databases create restaurant_db --instance=restaurant-db

আউটপুটটি আপনার এইরকম দেখা উচিত।

Creating Cloud SQL database...done.
Created database [restaurant_db].
instance: restaurant-db
name: restaurant_db
project: <your-project-id>

ডাটাবেসে বীজ বপন করুন

আপনার এনভায়রনমেন্ট ভেরিয়েবলগুলো লোড করুন এবং স্কিমা তৈরি করতে ও ১৬টি মেনু আইটেম যুক্ত করতে ডাটাবেস সিড স্ক্রিপ্টটি চালান:

source .env
uv run python scripts/seed_db.py

প্রত্যাশিত আউটপুট:

Creating extensions...
Creating menu_items table...
Inserting 16 menu items...
Seeded 16 menu items.
Done.

শব্দার্থিক অনুসন্ধানের জন্য ভেক্টর এমবেডিং তৈরি করুন:

uv run python scripts/generate_embeddings.py

প্রত্যাশিত আউটপুট:

Generating embeddings for 16 menu items...
Generated embeddings for 16 menu items.

এটি ক্লাউড এসকিউএল-এর বিল্ট-ইন embedding() ফাংশন ( google_ml_integration এক্সটেনশনের মাধ্যমে) ব্যবহার করে সরাসরি এসকিউএল থেকে gemini-embedding-001 কল করে। ৩০৭২-মাত্রিক ভেক্টরগুলো menu_items এর embedding কলামে সংরক্ষিত থাকে — কোনো অ্যাপ্লিকেশন-সাইড এমবেডিং কোডের প্রয়োজন নেই।

বেস এজেন্ট পরীক্ষা করুন

MCP টুলবক্সকে একটি ব্যাকগ্রাউন্ড প্রসেস হিসেবে চালু করুন:

set -a; source .env; set +a # Export env variables to child process
toolbox --tools-file tools.yaml --address 127.0.0.1 --port 5000 &

টুলবক্সটি HTTP-এর মাধ্যমে ডাটাবেস টুল সরবরাহ করে। এজেন্টটি http://127.0.0.1:5000 ঠিকানায় এর সাথে সংযোগ স্থাপন করে।

ADK ডেভ UI চালু করুন:

uv run adk web .

আপনার ব্রাউজারে ডেভ UI খুলুন। তারপর, এই নির্দেশাবলী দিয়ে এজেন্টটি পরীক্ষা করুন:

What appetizers do you have?
I'm vegetarian
Can I make a reservation for tomorrow?

fc693b9435b93493.png

দুইবার Ctrl+C চেপে ADK ডেভ UI বন্ধ করুন। টুলবক্সটি ব্যাকগ্রাউন্ডে চালু রাখুন — এটি পরে আবার কাজে লাগবে।

৫. অ্যান্টিগ্র্যাভিটি দিয়ে বুটস্ট্র্যাপ প্রজেক্টের প্রেক্ষাপট

এখন, চলুন এমন একটি পরিস্থিতি দিয়ে বিষয়গুলো অনুকরণ করি যা আমাদের দৈনন্দিন কাজের "একটু কাছাকাছি":

  • ভালোভাবে পরিচালিত নয় এমন সংগ্রহস্থল
  • README অপ্রচলিত
  • ডকুমেন্টেশন ঘন ঘন আপডেট করা হয় না

এই ধরনের পরিস্থিতিতে আমরা প্রথমেই যা করতে চাই তা হলো, যে প্রজেক্টটিতে আমরা অ্যান্টিগ্র্যাভিটিকে কাজ করাতে চাই, সেটির জন্য একটি ম্যাপ বা প্রেক্ষাপট তৈরি করা। এই ধাপে এমন একটি পদ্ধতির উদাহরণ দেখানো হয়েছে, যার মাধ্যমে রিপোজিটরি বিশ্লেষণ করে এবং একটি প্রজেক্ট কনটেক্সট ডকুমেন্ট তৈরি করার মতো একটি স্কিল তৈরির মাধ্যমে অ্যান্টিগ্র্যাভিটিকে একটি বিদ্যমান কোডবেস সম্পর্কে গভীর ধারণা দেওয়া যায়।

এটি প্রকল্পের গঠনতন্ত্রও তৈরি করে — অর্থাৎ সেই অলঙ্ঘনীয় নীতিগুলি, যেগুলোর ভিত্তিতে এসডিডি ওয়ার্কফ্লো যাচাই করা হয়। সব মিলিয়ে, এইগুলি অ্যান্টিগ্র্যাভিটিকে পরবর্তী এসডিডি চক্রগুলির জন্য প্রয়োজনীয় প্রেক্ষাপট এবং সীমাবদ্ধতা প্রদান করে।

অ্যান্টিগ্র্যাভিটি প্রসঙ্গ শ্রেণিবিন্যাস

অ্যান্টিগ্র্যাভিটি তিন স্তরের প্রেক্ষাপট ব্যবহার করে, যার প্রতিটির পরিধি ভিন্ন:

  • নিয়মাবলী ( .agents/rules/ ): সর্বদা-সক্রিয় নির্দেশাবলী। এই ওয়ার্কস্পেসের প্রতিটি কথোপকথনে এগুলো দেখা যায় (যদি আপনি এটি সক্রিয় করে থাকেন)। আর্কিটেকচার সংক্রান্ত সিদ্ধান্ত, কোডিং স্ট্যান্ডার্ড বা টেকনোলজি স্ট্যাকের তথ্যের মতো প্রোজেক্ট-ব্যাপী প্রেক্ষাপটের জন্য নিয়মাবলী ব্যবহার করুন।
  • দক্ষতা ( .agents/skills/ ): চাহিদা অনুযায়ী জ্ঞান। অ্যান্টিগ্র্যাভিটি শুধুমাত্র তখনই একটি দক্ষতা লোড করে যখন বর্তমান কাজটি দক্ষতার description ক্ষেত্রের সাথে মিলে যায়। নির্দিষ্ট ক্ষেত্রের তথ্যসূত্র হিসেবে দক্ষতা ব্যবহার করুন।
  • ওয়ার্কফ্লো ( .agents/workflows/ ): সংরক্ষিত প্রম্পট যা / কমান্ড দিয়ে চালু করা হয়। SDD পাইপলাইনের মতো পুনরাবৃত্তিমূলক বহু-ধাপের প্রক্রিয়ার জন্য ওয়ার্কফ্লো ব্যবহার করুন।

দক্ষতাগুলো সক্রিয় করুন

স্টার্টার রিপোটিতে .agents/skills/ ফোল্ডারে আগে থেকে লেখা দুটি স্কিল রয়েছে। এগুলোতে বিস্তারিত নির্দেশাবলী আছে, কিন্তু প্রয়োজনীয় YAML ফ্রন্টম্যাটারের পরিবর্তে এগুলো TODO(codelab) কমেন্ট দিয়ে শুরু হয়। ফ্রন্টম্যাটার ছাড়া Antigravity এগুলো খুঁজে পায় না।

অ্যান্টিগ্র্যাভিটি স্কিলের জন্য ফাইলের শীর্ষে দুটি ফিল্ড সহ একটি YAML ফ্রন্টম্যাটার ব্লক প্রয়োজন:

  • name — দক্ষতার একটি অনন্য শনাক্তকারী
  • description — একটি স্বাভাবিক ভাষার সারাংশ, যার সাথে অ্যান্টিগ্র্যাভিটি মিলিয়ে দেখে কোনো নির্দিষ্ট অনুরোধের জন্য কোন দক্ষতাটি লোড করতে হবে তা সিদ্ধান্ত নেয়।

খোলা

.agents/skills/adk-agent-development/SKILL.md

এডিটরে , উপরের দুটি TODO(codelab) কমেন্ট লাইন এই ফ্রন্টম্যাটার দিয়ে প্রতিস্থাপন করুন:

---
name: adk-agent-development
description: Comprehensive guide for building, developing, and deploying AI agents using Google's Agent Development Kit (ADK) with Gemini models, covering agent creation, tools, state management, persistence, deployment, and database integration via MCP Toolbox.
---

খোলা

.agents/skills/repo-research/SKILL.md

এডিটরে , উপরের দুটি TODO(codelab) কমেন্ট লাইন এই ফ্রন্টম্যাটার দিয়ে প্রতিস্থাপন করুন:

---
name: repo-research
description: Analyze a repository's structure, technologies, and patterns to create or update a project context document. Use when asked to research, analyze, or understand a codebase.
---

যাচাই করুন উভয় দক্ষতারই বৈধ ফ্রন্টম্যাটার আছে:

head -4 .agents/skills/adk-agent-development/SKILL.md
head -4 .agents/skills/repo-research/SKILL.md

প্রতিটিতে name: এবং description: ফিল্ডের চারপাশে --- বিভাজক থাকতে হবে। যদি বিভাজক বা ফিল্ডগুলো না থাকে, তাহলে Antigravity স্কিলটি চিনতে পারবে না।

উভয় দক্ষতাই চাহিদা অনুযায়ী লোড হয় — অ্যান্টিগ্র্যাভিটি আপনার অনুরোধটিকে description ক্ষেত্রের সাথে মিলিয়ে দেখে এবং শুধুমাত্র প্রাসঙ্গিক হলেই সম্পূর্ণ নির্দেশাবলী নিয়ে আসে।

প্রকল্পের প্রেক্ষাপট তৈরি করুন

নিয়মাবলী ডিরেক্টরিটির অস্তিত্ব নিশ্চিত করুন:

mkdir -p .agents/rules

Antigravity-র এজেন্ট ম্যানেজার/চ্যাট বক্সে (এডিটর মোডে ctrl + L চাপুন), একটি নতুন কথোপকথন শুরু করুন। টাইপ করুন:

Research this repository and create a project context document

অ্যান্টিগ্র্যাভিটি আপনার অনুরোধটিকে repo-research স্কিলের সাথে মিলিয়ে দেয় এবং পদ্ধতিগতভাবে কোডবেস বিশ্লেষণ করা শুরু করে। এটি কনফিগারেশন ফাইল, সোর্স কোড এবং ডকুমেন্টেশন পড়ে, তারপর এর প্রাপ্ত তথ্য দিয়ে প্রোজেক্ট কনটেক্সট টেমপ্লেটটি পূরণ করে।

কাজ শেষ হলে, এডিটরে .agents/rules/project-context.md ফাইলটি খুলুন। এতে প্রজেক্ট সম্পর্কিত সুনির্দিষ্ট তথ্য রয়েছে: টেকনোলজি স্ট্যাক (পাইথন ৩.১২, এডিকে, এমসিপি টুলবক্স, ক্লাউড এসকিউএল), প্রজেক্টের কাঠামো, ডেটা মডেল ( pgvector সহ মেনু_আইটেমস টেবিল), এবং এক্সটার্নাল ইন্টিগ্রেশন।

9949388b3e1f401a.png

প্রকল্পের সংবিধান নির্ধারণ করুন

পরিকল্পনা এবং বিশ্লেষণের সময় SDD ওয়ার্কফ্লো .specify/memory/constitution.md এ থাকা একটি প্রজেক্ট সংবিধানকে রেফারেন্স হিসেবে ব্যবহার করে। /speckit.plan ওয়ার্কফ্লো এর উপর একটি "সংবিধান যাচাই" (Constitution Check) চালায়, এবং /speckit.analyze লঙ্ঘনগুলোকে CRITICAL হিসেবে চিহ্নিত করে। যদি সংবিধানটিকে প্লেসহোল্ডার টোকেনসহ একটি ফাঁকা টেমপ্লেট হিসেবে রাখা হয়, তবে এই যাচাইগুলোর জন্য কোনো কিছু থাকে না — ফলে পরিকল্পনা এবং বিশ্লেষণগুলো কোনো সুরক্ষাব্যবস্থা ছাড়াই চলতে থাকে।

সংবিধানে প্রকল্পের অলঙ্ঘনীয় নীতিমালা নির্ধারণ করা হয়েছে। এটি একজন মাত্র ডেভেলপার দ্বারা পরিচালিত একটি ছোট রিপো, তাই সংবিধানেও সেই পরিধির প্রতিফলন থাকা উচিত — সবকিছু সহজ ও সামঞ্জস্যপূর্ণ রাখুন এবং অতিরিক্ত জটিলতা পরিহার করুন।

অ্যান্টিগ্র্যাভিটির এজেন্ট ম্যানেজারে, একটি নতুন কথোপকথন শুরু করুন। সংবিধান ওয়ার্কফ্লোটি চালান:

/speckit.constitution This is a small restaurant concierge ADK agent maintained by one developer. Set 3 principles: (1) All database operations go through MCP Toolbox tool definitions in tools.yaml  no raw SQL in Python code, no ORM. (2) Session state uses ADK ToolContext  no custom state management, no external state stores. (3) Keep it simple  follow existing file and naming conventions exactly.

অ্যান্টিগ্র্যাভিটি সংবিধান টেমপ্লেটটিকে সুনির্দিষ্ট নীতিমালা দিয়ে পূরণ করে, একটি সংস্করণ (১.০.০) নির্ধারণ করে এবং এসডিডি টেমপ্লেটগুলোর মধ্যে সামঞ্জস্যতা যাচাই করে।

.specify/memory/constitution.md এ তৈরি হওয়া সংবিধানটি পর্যালোচনা করুন। যাচাই করুন যে তিনটি মূলনীতি উপস্থিত আছে এবং স্পষ্টভাবে উল্লেখ করা হয়েছে।

276113749cd30834.png

৬. এসডিডি চক্র — রিজার্ভেশন বৈশিষ্ট্য যোগ করুন

এই ধাপে রেস্তোরাঁর কনসিয়ার্জ এজেন্টে রিজার্ভেশন বুকিং যোগ করার জন্য একটি সম্পূর্ণ SDD চক্র দেখানো হয়েছে। আপনি প্রতিটি ধাপ—নির্দিষ্টকরণ, স্পষ্টীকরণ, পরিকল্পনা, টাস্ক, বিশ্লেষণ, বাস্তবায়ন—এর মধ্য দিয়ে Antigravity-কে চালনা করবেন এবং পর্যবেক্ষণ করবেন কীভাবে প্রতিটি আর্টিফ্যাক্ট পূর্ববর্তীটির উপর ভিত্তি করে গড়ে ওঠে। এটাই এই কোডল্যাবের মূল শিক্ষণ অভিজ্ঞতা।

বৈশিষ্ট্যটি নির্দিষ্ট করুন

অ্যান্টিগ্র্যাভিটির এজেন্ট ম্যানেজারে, একটি নতুন আলোচনা শুরু করুন। একটি ফিচার বিবরণ সহ /speckit.specify ওয়ার্কফ্লো কমান্ডটি টাইপ করুন:

/speckit.specify Add reservation booking capability to the restaurant concierge agent. Guests should be able to make a table reservation by providing their name, party size, date, and time. They should also be able to check existing reservations. The agent should confirm reservation details before booking and handle special requests (e.g., "window seat", "birthday celebration").

অ্যান্টিগ্র্যাভিটি একটি ফিচার ব্রাঞ্চ তৈরি করে, একটি স্পেসিফিকেশন ডকুমেন্ট জেনারেট করে এবং কোয়ালিটি ভ্যালিডেশন চালায়। যদি অ্যান্টিগ্র্যাভিটি কোনো স্পষ্টীকরণমূলক প্রশ্ন উপস্থাপন করে, তবে উপরের ফিচার বিবরণের উপর ভিত্তি করে সেগুলোর উত্তর দিন।

স্পেসিফিকেশনটি ‘কী’ এবং ‘কেন’-এর উপর আলোকপাত করে — ‘কীভাবে’-এর উপর নয়। এটি SQL টেবিল, tools.yaml বা ADK API-এর উল্লেখ না করেই ব্যবহারকারীর অভিজ্ঞতা বর্ণনা করে ("অতিথিরা তাদের নাম, দলের সদস্য সংখ্যা, তারিখ এবং সময় প্রদান করে একটি রিজার্ভেশন বুক করতে পারবেন")। বাস্তবায়নের বিস্তারিত বিবরণ পরিকল্পনা পর্যায়ে আসে।

specs/<branch-name>/spec.md এ তৈরি হওয়া স্পেসিফিকেশনটি পর্যালোচনা করুন। এটিতে ফাংশনাল রিকোয়ারমেন্ট এবং সাকসেস ক্রাইটেরিয়া অন্তর্ভুক্ত আছে কিনা তা যাচাই করুন।

4ea3f72f9dfb4d35.png

স্পেসিফিকেশনটি স্পষ্ট করুন (ঐচ্ছিক)

স্পেসিফিকেশনে অনির্দিষ্ট ক্ষেত্রগুলো শনাক্ত ও সমাধান করতে ক্লারিফাই ওয়ার্কফ্লোটি চালান:

/speckit.clarify

অ্যান্টিগ্র্যাভিটি স্পেসিফিকেশনটি স্ক্যান করে কোনো অস্পষ্টতা, অনুপস্থিত অ্যাকসেপ্টেন্স ক্রাইটেরিয়া এবং অসম্পূর্ণ রিকোয়ারমেন্টস খুঁজে বের করে। এটি সুনির্দিষ্ট কিছু স্পষ্টীকরণমূলক প্রশ্ন জিজ্ঞাসা করে—যার প্রত্যেকটির উত্তর একটি সংক্ষিপ্ত শব্দ বা বাক্যাংশের মাধ্যমে দেওয়া যায়। আপনার উত্তরগুলো সরাসরি স্পেসিফিকেশনে এনকোড করা হয়, যা প্ল্যানিং শুরু হওয়ার আগেই এটিকে আরও নির্ভুল করে তোলে।

বাস্তবায়নের পরিকল্পনা করুন

পরিকল্পনা কর্মপ্রবাহটি চালান:

/speckit.plan

অ্যান্টিগ্র্যাভিটি দুটি পর্যায়ের মাধ্যমে একটি প্রযুক্তিগত পরিকল্পনা তৈরি করে:

  1. গবেষণা পর্যায় — বিদ্যমান কোডবেস সম্পর্কিত অজানা বিষয়গুলোর সমাধান করে এবং research.md ফাইল তৈরি করে।
  2. ডিজাইন পর্যায়data-model.md (রিজার্ভেশন এনটিটি ডেফিনিশন) তৈরি করে এবং project-context.md আপডেট করে।

পরিকল্পনা করার সময় অ্যান্টিগ্র্যাভিটির adk-agent-development স্কিলটি ব্যবহার করা উচিত। মূল আর্টিফ্যাক্টগুলো পর্যালোচনা করুন:

  • specs/<branch-name>/plan.md — প্রযুক্তিগত পদ্ধতি: কোন ফাইলগুলো পরিবর্তন করতে হবে, কোন প্যাটার্ন অনুসরণ করতে হবে
  • specs/<branch-name>/data-model.md — রিজার্ভেশন এনটিটির সংজ্ঞা (কলাম, টাইপ, সম্পর্ক)
  • specs/<branch-name>/research.md — গৃহীত সিদ্ধান্ত এবং তার যুক্তি

d9996ccbb3211078.png

কাজ তৈরি করুন

টাস্ক ওয়ার্কফ্লো চালান

/speckit.tasks

অ্যান্টিগ্র্যাভিটি প্ল্যানটিকে specs/<branch-name>/tasks.md এ একটি ক্রমবিন্যস্ত টাস্ক লিস্টে ভাগ করে। টাস্কগুলো আইডি, প্রায়োরিটি মার্কার এবং ফাইল পাথ সহ একটি কঠোর চেকলিস্ট ফরম্যাট অনুসরণ করে, উদাহরণস্বরূপ:

- [ ] [T001] [P] Create reservations table schema in scripts/seed_db.py
- [ ] [T002] [P] Add create_reservation tool to tools.yaml
- [ ] [T003] [P] Add list_reservations tool to tools.yaml
- [ ] [T004] [P] Update agent instruction in restaurant_concierge/agent.py

কাজগুলোকে কয়েকটি পর্যায়ে ভাগ করা হয়েছে: সেটআপ → ভিত্তি স্থাপন → ইউজার স্টোরি → পরিমার্জন। কী তৈরি এবং পরিবর্তন করা হবে তা বোঝার জন্য কাজের তালিকাটি দেখুন।

9fcdb822d8279ddf.png

কাজগুলো বিশ্লেষণ করুন (ঐচ্ছিক)

ঝুঁকি এবং ঘাটতি পর্যালোচনার জন্য টাস্কগুলো বিশ্লেষণ করতে অ্যানালাইজ ওয়ার্কফ্লোটি চালান:

/speckit.analyze

অ্যান্টিগ্র্যাভিটি স্পেক এবং প্ল্যানের সাথে টাস্ক লিস্ট মিলিয়ে দেখে, এবং অনুপস্থিত এজ কেস, সম্ভাব্য সাংঘর্ষিক টাস্ক, অথবা স্পেকের রিকোয়ারমেন্ট ও পরিকল্পিত কাজের মধ্যেকার ফাঁক খুঁজে বের করে। বাস্তবায়নের আগে গুরুতর সমস্যাগুলো সমাধান করুন।

৭. বাস্তবায়ন করুন

বাস্তবায়ন কর্মপ্রবাহটি চালান:

/speckit.implement

অ্যান্টিগ্র্যাভিটি একটি চূড়ান্ত বাস্তবায়ন পরিকল্পনা এবং টাস্ক আর্টিফ্যাক্ট উপস্থাপন করছে। কার্যক্রম এগিয়ে নিয়ে যাওয়ার জন্য এটি পর্যালোচনা ও অনুমোদন করুন।

adc1e3d098bd1638.png

306448e70f61ab51.png

অ্যান্টিগ্র্যাভিটি কাজগুলো সম্পাদন করে এবং প্রতিটি সম্পন্ন হওয়ার সাথে সাথে টিক চিহ্ন দেয়। কাজ শেষ হলে, এটি সম্পূর্ণ ওয়াকথ্রুটি উপস্থাপন করবে।

48cc7752817a54c7.png

কোডের পরিবর্তনগুলো পরীক্ষা করুন

বাস্তবায়ন সম্পন্ন হলে, মূল পরিবর্তনগুলো করা হয়েছে কিনা তা যাচাই করুন। ফাইলের নাম এবং বিষয়বস্তু ভিন্ন হতে পারে, কিন্তু tools.yaml এবং agent.py এর মতো এই প্যাটার্নগুলো অবশ্যই থাকতে হবে:

# Verify reservation tools were added to tools.yaml
grep -i "reservation" tools.yaml

আপনি এই ধরনের কিছু আউটপুট দেখতে পাবেন।

...
get_reservations_by_name:
      Retrieve all reservations for a guest by their name. Uses case-insensitive
      SELECT id, guest_name, party_size, reservation_datetime, special_requests, created_at
      FROM reservations
      ORDER BY reservation_datetime DESC
...

এবং agent.py এর জন্য

# Verify agent instruction was updated
grep -i "reservation" restaurant_concierge/agent.py

# Check what files changed
git diff --name-only

হয়তো আপনি এই ধরনের পরিবর্তন দেখতে পাবেন

...
- **Table Reservations**: Help guests book a table or check their existing reservations.
## Reservation Booking Rules
When a guest wants to make a reservation, collect ALL of the following before confirming:
**IMPORTANT**: Before calling `book_reservation`, you MUST:
- Only call `book_reservation` after the guest says "yes" or "confirm"
## Checking Reservations
When a guest asks to check their reservations:
- Use `get_reservations_by_name` to find their bookings
        book_reservation,
...

পরিবর্তনগুলো সিড ডাটাবেস স্ক্রিপ্টকে প্রভাবিত করবে, চলুন এটি চালানোর চেষ্টা করা যাক।

source .env
uv run python scripts/seed_db.py

আপডেট করা স্ক্রিপ্টটি reservations টেবিলটি তৈরি করবে, যদি সেটি আগে থেকে বিদ্যমান না থাকে। নতুন টেবিলটি তৈরি হয়েছে তা নিশ্চিত করে আপনি একটি আউটপুট দেখতে পাবেন (বিদ্যমান menu_items ডেটা সংরক্ষিত থাকবে)।

এই পর্যন্ত সবকিছু ঠিকঠাক থাকলে, আমরা ADK এজেন্ট ডেভ UI-তে ফিচারটি পরীক্ষা করতে পারি। tools.yaml এ থাকা নতুন টুল ডেফিনিশনগুলো কার্যকর করার জন্য টুলবক্সটি রিস্টার্ট করুন। চালু থাকা যেকোনো টুলবক্স প্রসেস বন্ধ করুন, তারপর একটি নতুন প্রসেস চালু করুন:

pkill -f toolbox 2>/dev/null
toolbox --tools-file tools.yaml --address 127.0.0.1 --port 5000 &

ADK ডেভ UI চালু করুন:

uv run adk web .

আপনার ব্রাউজারে http://localhost:8000 খুলুন এবং এই প্রম্পটগুলো দিয়ে পরীক্ষা করুন:

I'd like to book a table for 4 people on Friday at 7pm under the name Timmy
Do I have any upcoming reservations?

d9815389df37ed1a.png

f38a944851e28c29.png

এখন, দুইবার Ctrl+C চেপে ADK ডেভ UI বন্ধ করুন।

৮. চ্যালেঞ্জসমূহ (ঐচ্ছিক)

আপনি এখন সম্পূর্ণ SDD কার্যপ্রবাহ সম্পর্কে জানেন। এটি পরীক্ষা করে দেখুন:

  • রেস্তোরাঁর কনসিয়ার্জের জন্য একটি ওয়েব চ্যাট ইন্টারফেস তৈরি করতে দ্বিতীয়বার SDD সাইকেলটি চালান — এবার ধাপে ধাপে নির্দেশনা ছাড়াই।
  • প্রোডাকশন সিনারিওর জন্য আপনার এজেন্টকে ক্লাউড রান-এ ডেপ্লয় করুন।

ইঙ্গিত

  • প্রকল্পটির কোনো ফ্রন্টএন্ড ফ্রেমওয়ার্ক নেই। অ্যান্টিগ্র্যাভিটির উচিত সাধারণ HTML/CSS/JS প্রস্তাব করা — যদি এটি React বা অনুরূপ কিছুর পরামর্শ দেয়, তবে এটিকে সরলতার দিকে উৎসাহিত করুন (আপনার সংবিধানের 'সহজ রাখুন' নীতিটি এটি ধরতে পারবে)।
  • ADK সার্ভার স্ট্রিমিংয়ের জন্য /run_sse এবং সেশন ব্যবস্থাপনার জন্য /apps/{app_name}/users/{user_id}/sessions উন্মুক্ত করে। অ্যান্টিগ্র্যাভিটি প্রজেক্ট কনটেক্সট থেকে এগুলো খুঁজে নেয়।
  • বাস্তবায়নের পরে, uv run uvicorn server:app --host 0.0.0.0 --port 8080 ( adk web নয়) দিয়ে সার্ভারটি চালু করুন, যাতে স্ট্যাটিক ফাইল মাউন্ট কাজ করে।
  • http://localhost:8080/static/index.html -এ পরীক্ষা করুন।
  • রেফারেন্স কোডল্যাবগুলোতে ইতিমধ্যেই দেখানো হয়েছে কিভাবে ADK এজেন্ট ডেপ্লয় এবং পারসিস্ট করতে হয়, Antigravity-কে এর রেফারেন্স দিন!

৯. অভিনন্দন!

আপনি হাতে অ্যাপ্লিকেশন কোড না লিখে, সম্পূর্ণভাবে অ্যান্টিগ্র্যাভিটির এসডিডি ওয়ার্কফ্লোর মাধ্যমে একটি রেস্তোরাঁ কনসিয়ার্জ এডিকে এজেন্টকে রিজার্ভেশন বুকিং সুবিধা দিয়ে সম্প্রসারিত করেছেন।

আপনি যা তৈরি করেছেন

  • একটি রেস্তোরাঁ কনসিয়ার্জ ADK এজেন্ট, যার মাধ্যমে মেনু সার্চ, সিমান্টিক সার্চ, খাদ্যাভ্যাসের পছন্দ ট্র্যাক করা এবং রিজার্ভেশন বুকিং করা যায়।
  • রিপো গবেষণার জন্য একটি অ্যান্টিগ্র্যাভিটি স্কিল যা একটি প্রজেক্ট কনটেক্সট ডকুমেন্ট তৈরি ও রক্ষণাবেক্ষণ করে।
  • একটি প্রকল্প সংবিধান যা পরিকল্পনা ও বিশ্লেষণের সময় অলঙ্ঘনীয় নীতিসমূহ বলবৎ করে।
  • একটি সম্পূর্ণ SDD চক্র যা নির্দিষ্ট করা → স্পষ্ট করা → পরিকল্পনা করা → কাজসমূহ → বিশ্লেষণ করা → বাস্তবায়ন কর্মপ্রবাহ প্রদর্শন করে।

আপনি যা শিখেছেন

  • বিদ্যমান কোডবেসে পদ্ধতিগতভাবে ফিচার যোগ করতে Antigravity-তে Spec-Driven Development ওয়ার্কফ্লো কীভাবে ব্যবহার করবেন
  • কীভাবে অ্যান্টিগ্র্যাভিটি স্কিল তৈরি করা যায় যা বিভিন্ন কথোপকথনে পুনঃব্যবহারের জন্য ডোমেইন জ্ঞানকে প্যাকেজ করে।
  • কীভাবে প্রোজেক্টের প্রেক্ষাপট বুটস্ট্র্যাপ করা যায়, যাতে অ্যান্টিগ্র্যাভিটি আর্কিটেকচার, প্যাটার্ন এবং প্রযুক্তিগত পছন্দ সম্পর্কে সুচিন্তিত সিদ্ধান্ত নিতে পারে।
  • কীভাবে এমন একটি প্রকল্প সংবিধান সেট করবেন যার ভিত্তিতে SDD ওয়ার্কফ্লোগুলো যাচাই করা যায়
  • MCP টুলবক্সের মাধ্যমে নতুন ডাটাবেস-সমর্থিত টুল ব্যবহার করে কীভাবে একটি ADK এজেন্টকে সম্প্রসারিত করা যায়

পরিষ্কার করা

চলমান যেকোনো স্থানীয় প্রসেস বন্ধ করুন (টুলবক্স):

pkill -f toolbox 2>/dev/null

চলমান চার্জ এড়াতে ক্লাউড এসকিউএল ইনস্ট্যান্সটি মুছে ফেলুন:

gcloud sql instances delete restaurant-db --quiet

ঐচ্ছিকভাবে, সম্পূর্ণ প্রজেক্টটি মুছে ফেলুন:

gcloud projects delete $GOOGLE_CLOUD_PROJECT