
kybes কী করে
kybes হলো একটি Claude Code প্লাগইন, যা YAML ডেটাবেস স্কিমা থেকে পূর্বানুমানযোগ্য ব্যাকএন্ড কোড তৈরি করে। এটি C#, Python, TypeScript এবং Java প্রকল্পে ফোল্ডার, ফাইলের নাম, রিপোজিটরি মেথড, ভ্যালিডেশন, পেজিনেশন, ট্রানজ্যাকশন, ইনডেক্স এবং টেস্টের কাঠামো মানসম্মত করে।
কোনো AI এজেন্টকে আর্কিটেকচার ডকুমেন্ট মনে রাখতে বলার পরিবর্তে, kybes deterministic generation, নির্দিষ্ট এজেন্ট, ফোল্ডারভিত্তিক নিয়ম, হুক এবং CI চেকের মাধ্যমে আর্কিটেকচার প্রয়োগ করে। একই স্কিমা বিভিন্ন প্রকল্পে বাইট-একই জেনারেটেড আউটপুট তৈরি করে।
মূল নিয়মটি সহজ: স্কিমাই সত্যের একমাত্র উৎস, জেনারেটেড ফাইল ম্যানুয়ালি সম্পাদনা করা যাবে না, এবং কাস্টম আচরণ সংশ্লিষ্ট টেবিলের মডেল ফাইলে থাকতে হবে।
জেনারেটেড কাঠামো কীভাবে কাজ করে
প্রতিটি টেবিলের জন্য kybes দুটি মডেল স্তর তৈরি করে:
model/generated/<Table>-এ জেনারেটেড entity, CRUD অপারেশন, relation, ঘোষিত query, cursor pagination এবং validation থাকে। এই ফাইলগুলো পুনরায় তৈরি হয় এবং সম্পাদনা করা উচিত নয়।model/<Table>কাস্টম মেথডের নিরাপদ অবস্থান। C#-এ partial class ব্যবহৃত হয়, আর Python, TypeScript এবং Java-তে subclass-ভিত্তিক পদ্ধতি ব্যবহৃত হয়।
একটি সাধারণ প্রকল্পে জেনারেটেড JSON Schema, PostgreSQL DDL, ইনডেক্স বিশ্লেষণ, মডেল ফাইলের ইনডেক্স এবং জেনারেটেড যাচাইকরণ আর্টিফ্যাক্টও থাকে।
kybes ইনস্টল করুন
Claude Code-এর মাধ্যমে ইনস্টল করুন
Claude Code থেকে marketplace যোগ করে প্লাগইন ইনস্টল করুন:
/plugin marketplace add ivandilelio/kybes
/plugin install kybes@kybesলক্ষ্য প্রকল্পের ভেতরে Claude Code-কে এই প্রকল্পে kybes সেট আপ করুন বলুন। kybes:kybes-init skill আপনার প্রয়োজনীয় মডেল ভাষাগুলো জানতে চায় এবং configuration, path rules, CLAUDE.md নির্দেশনা, ঐচ্ছিক scaffold এবং একটি CI workflow তৈরি করে।
যেসব repository initialize করা হয়নি, সেগুলোতে hooks নিষ্ক্রিয় থাকে।
কমান্ড লাইন থেকে ইনস্টল করুন
আপনি repository clone করে installer-ও চালাতে পারেন:
git clone https://github.com/ivandilelio/kybes
kybes/install.sh --target /path/to/project --scaffold --examples \
--model-langs csharp,python,typescript,javaInstallerটি idempotent। কনফিগার করা প্রকল্প clone করার পর দলের সদস্যদের শুধু একবার tools/kybes/setup.sh চালাতে হবে।
প্রয়োজনীয়তা যাচাই করুন
Hooks এবং generator-এর জন্য কেবল standard library-সহ python3 প্রয়োজন। জেনারেটেড runtime-এর জন্য সংশ্লিষ্ট ভাষার dependency প্রয়োজন:
- C#:
net8.0, Entity Framework Core 8 এবং Npgsql-এর মতো একটি provider। - Python: Python 3.9 বা পরবর্তী সংস্করণ এবং SQLAlchemy 2।
- TypeScript: TypeORM,
reflect-metadataএবং সক্রিয়experimentalDecoratorsওemitDecoratorMetadatacompiler option। - Java: Jakarta Persistence 3.1, Hibernate 6.2 বা পরবর্তী সংস্করণ এবং
jsoncolumn-এর জন্য Jackson।
ডেটাবেস স্কিমা নির্ধারণ করুন
schemas/db-এর অধীনে একটি YAML ফাইল তৈরি করুন। নিচের উদাহরণে একটি order table সংজ্ঞায়িত করা হয়েছে, যাতে unique order number, বাধ্যতামূলক customer relation, একটি ঘোষিত query এবং sort করা যায় এমন cursor pagination রয়েছে:
table: Ordini
columns:
- { name: Id, type: uuid, primary_key: true }
- { name: Numero, type: string, length: 20, required: true, unique: true }
- { name: ClienteId, type: uuid, required: true }
- { name: Data, type: date, required: true }
relations:
- { name: Cliente, kind: many_to_one, target: Clienti, foreign_key: ClienteId }
queries:
- name: DelClienteDal
where: [ClienteId, { column: Data, op: gte, param: DaData }]
order_by: [{ column: Data, dir: desc }]
pagination:
default_order: [{ column: Data, dir: desc }]
sortable: [Data, Numero]ফাইলটি schemas/db/Ordini.yaml নামে সংরক্ষণ করুন। স্কিমায় পরিবর্তন হলে কনফিগার করা ভাষাগুলোর জন্য regeneration শুরু হয়, model index আপডেট হয় এবং index recommendation পুনরায় গণনা করা হয়।
জেনারেটেড API ব্যবহার করুন
উদাহরণের স্কিমার জন্য kybes প্রতিটি ভাষায় সমতুল্য repository capability তৈরি করে। নামকরণ লক্ষ্য ভাষার নিয়ম অনুসরণ করে:
- কী দিয়ে পড়া: C#-এ
GetByIdAsync, Python-এget_by_idএবং TypeScript বা Java-তেgetById। - Cursor pagination:
ListPageAsync,list_pageঅথবাlistPage। - Unique-column lookup:
FindByNumeroAsync,find_by_numeroঅথবাfindByNumero। - Foreign-key lookup:
ListByClienteIdAsync,list_by_cliente_idঅথবাlistByClienteId। - ঘোষিত query:
ListDelClienteDalAsync,list_del_cliente_dalঅথবাlistDelClienteDal।
জেনারেটেড API-তে validated create, update এবং delete operation, relation accessor এবং cursor-ভিত্তিক page-ও থাকে। এগুলো request এবং items ও next cursor-সমৃদ্ধ page দ্বারা উপস্থাপিত হয়।
Handler-এ data access লেখার পরিবর্তে query ঘোষণা করুন
Lambda, service বা controller-এ ORM বা database driver import করার পরিবর্তে schema-তে সমর্থিত query condition রাখুন। kybes eq, ne, lt, lte, gt, gte, in, prefix এবং is_null-সহ বিভিন্ন operator সমর্থন করে।
Generator repository method তৈরি করে এবং তার access path বিশ্লেষণ করে। উদাহরণে foreign-key ও date condition-এর ফলে (ClienteId, Data)-এর ওপর একটি index তৈরি হয়। এই সিদ্ধান্ত db/generated/indexes.md-এ নথিভুক্ত থাকে।
কাস্টম মডেল আচরণ যোগ করুন
জেনারেট করা মেথড যথেষ্ট না হলে, নন-জেনারেটেড মডেল ফাইলে, যেমন model/Fornitori.py বা নির্বাচিত ভাষার সমতুল্য ফাইলে, কাস্টম মেথড যোগ করুন। জেনারেট করা ইমপ্লিমেন্টেশন সম্পাদনা করবেন না।
কাস্টম মেথডের নাম জেনারেট করা মেথডের নামের সঙ্গে সংঘর্ষ তৈরি করা যাবে না। কাজ শেষ করার আগে tests/custom/-এ ট্রেসড টেস্টও থাকতে হবে। প্রত্যাশিত টেস্ট আইডেন্টিফায়ারের ফরম্যাট হলো TC-<Table>-…।
ডেটা অ্যাক্সেস মডেল লেয়ারের মধ্যেই রাখুন। কোনো হ্যান্ডলারকে নিজস্ব SQLAlchemy, Entity Framework, TypeORM বা Hibernate কুয়েরি তৈরি না করে জেনারেট করা অথবা কাস্টম মডেল মেথড কল করা উচিত।
kybes-এর গার্ডরেল বুঝুন
ডেভেলপমেন্ট ওয়ার্কফ্লোর পুরো সময়জুড়ে kybes হুক চলে। কোনো লেখার আগে এগুলো মডেলের বাইরে ORM বা ডেটাবেস-ড্রাইভার ইমপোর্ট, জেনারেট করা ফাইলে সম্পাদনা, অবৈধ মডেল ফোল্ডার, মেথডের নামের সংঘর্ষ এবং স্পষ্ট টেক্সটে থাকা সিক্রেট ব্লক করতে পারে।
স্কিমা লেখার পরে kybes মডেল পুনরায় জেনারেট করতে, লিন্টার চালাতে এবং আর্কিটেকচার-সংক্রান্ত সমস্যা জানাতে পারে। কাজ শেষ করার আগে প্রধান এজেন্ট এবং প্রতিটি সাবএজেন্টকে আর্কিটেকচার চেক, জেনারেটর চেক, ভেরিফিকেশন স্ক্রিপ্ট এবং প্রকল্পের টেস্ট কমান্ড পাস করতে হবে।
ডিফল্ট স্টপ-গেট চেকগুলোর মধ্যে রয়েছে:
arch_check, যার মধ্যে আট বা তার বেশি লাইনের ডুপ্লিকেটেড ব্লক শনাক্ত করাও অন্তর্ভুক্ত।- জেনারেট করা আউটপুট হালনাগাদ আছে কি না নিশ্চিত করতে
gen --check। - মডেল টেস্ট এবং ASIL অনুযায়ী কভারেজ থ্রেশহোল্ডের জন্য
verify.py। - প্রকল্পের নিজস্ব টেস্ট কমান্ড।
একই চেকগুলো CI-তে --strict সহ চলে। .claude/kybes.config.json-এ নিয়মগুলো block, warn অথবা off হিসেবে কনফিগার করা যায়। এজেন্ট এই কনফিগারেশন ফাইল পরিবর্তন করতে পারবে না।
ট্রানজ্যাকশন, পেজিনেশন ও ইনডেক্স নিরাপদে ব্যবহার করুন
স্কিমার ডিফল্ট অর্ডারিং এবং অনুমোদিত সর্টযোগ্য কলাম থেকে kybes কার্সর পেজিনেশন জেনারেট করে। এর ফলে কীসেট-ভিত্তিক পেজ রিকোয়েস্ট এবং আইটেম ও পরবর্তী কার্সারসহ একটি পেজ তৈরি হয়। সমর্থিত ভাষাগুলোর মধ্যে কার্সর ফরম্যাট অভিন্ন, যা বিভিন্ন সার্ভিস ও ক্লায়েন্টের আন্তঃকার্যক্ষমতা বাড়ায়।
ট্রানজ্যাকশনগুলো প্রতি-টেবিল আইসোলেশন লেভেল এবং সিরিয়ালাইজেশন ব্যর্থতা ও ডেডলকের জন্য স্বয়ংক্রিয় রিট্রাই হ্যান্ডলিংসহ Unit of Work ব্যবহার করে। ঘোষিত অ্যাক্সেস পাথ বিশ্লেষণ করে উপযুক্ত ইনডেক্স নির্ধারণ করা হয়; অনুপস্থিত ইনডেক্স তৈরি করা হয় এবং অপ্রয়োজনীয় ইনডেক্স চিহ্নিত করা হয়। উপযুক্ত ক্ষেত্রে PostgreSQL varchar_pattern_ops ব্যবহার করে প্রিফিক্স সার্চ করা যায়।
মাল্টি-টেন্যান্সি কনফিগার করুন
সমর্থিত কৌশলগুলোর একটি ব্যবহার করে প্রতি টেবিলে মাল্টি-টেন্যান্সি কনফিগার করা যায়:
- একটি টেন্যান্ট কলাম, যেখানে প্রতিটি জেনারেট করা মেথডে ফিল্টার প্রয়োগ করা হয় এবং ইউনিক কনস্ট্রেইন্ট প্রতি টেন্যান্ট অনুযায়ী সীমাবদ্ধ থাকে।
- PostgreSQL row-level security।
- প্রতি টেন্যান্টে একটি স্কিমা।
- প্রতি টেন্যান্টে একটি ডেটাবেস।
টেন্যান্ট ORM সেশনের সঙ্গে সংযুক্ত থাকে এবং কনফিগার করা কৌশলের জন্য kybes আইসোলেশন টেস্ট জেনারেট করে।
জেনারেট করা প্রকল্পের লেআউট পর্যালোচনা করুন
একটি কনফিগার করা প্রকল্পের কাঠামো পূর্বানুমেয়:
your-project/
├── schemas/db/<Table>.yaml
├── schemas/generated/json/<Table>.schema.json
├── libs/db-models/<language>/…/model/
│ ├── <Table>.{cs,py,ts} | <Table>Repository.java
│ └── generated/
├── libs/db-models/<language>/tests/
│ ├── generated/
│ └── custom/
├── docs/generated/verification/
├── db/generated/ddl/postgres/_all.sql
├── services/<context>/{functions,ms}/
├── jobs/
├── libs/utils/
├── libs/errors/
├── frontend/
├── infra/
├── MODEL_INDEX.md
└── .claude/kybes.config.jsongenerated/ ফোল্ডারের অধীন সবকিছু kybes-এর অন্তর্ভুক্ত। অন্যান্য মডেল ফাইল, কাস্টম টেস্ট, স্কিমা এবং অ্যাপ্লিকেশন কোড কনফিগার করা নিয়ম অনুযায়ী আপনার টিম রক্ষণাবেক্ষণ করে।
ফলাফল যাচাই করুন
রিপোজিটরিতে জেনারেট করা কোড, হুক, SQL এবং বিভিন্ন ভাষার পারস্পরিক আচরণের জন্য ভেরিফিকেশন রয়েছে। টেস্টে CRUD, রিলেশন, ক্যাসকেড, ইউনিক কনস্ট্রেইন্ট, পেজিনেশনের প্রান্তিক অবস্থা, কুয়েরি অপারেটর এবং Unit of Work-এর আচরণ যাচাই করা হয়।
জেনারেট করা ইউনিট টেস্ট প্রতিটি স্কিমা থেকে প্রয়োজনীয়তা ও টেস্ট কেস তৈরি করে। ভেরিফিকেশন ওয়ার্কফ্লোতে ইকুইভ্যালেন্স ক্লাস, বাউন্ডারি ভ্যালু, এরর গেসিং, ASIL C ও D-এর জন্য MC/DC, ট্রেসেবিলিটি এবং প্রতি টেবিলের কভারেজ গেট অন্তর্ভুক্ত রয়েছে। রিপোজিটরি জেনারেট করা PostgreSQL DDL সঠিকভাবে পার্স হয় কি না এবং একটি সমর্থিত ভাষায় তৈরি কার্সার অন্য ভাষাগুলো গ্রহণ করতে পারে কি না তাও যাচাই করে।
সেফটি-ক্রিটিক্যাল কাজের ক্ষেত্রে kybes সফটওয়্যার-ইউনিট স্তরে ISO 26262-6-এর কিছু অংশ স্বয়ংক্রিয় করে, কিন্তু এটি সম্পূর্ণ সেফটি প্ল্যান, হ্যাজার্ড অ্যানালাইসিস, টুল কোয়ালিফিকেশন, স্বাধীন পর্যালোচনা বা সাংগঠনিক সার্টিফিকেশন প্রক্রিয়ার বিকল্প নয়।
উপসংহার
kybes পূর্বানুমেয় AI-জেনারেটেড ব্যাকএন্ডের জন্য একটি স্কিমা-ফার্স্ট ওয়ার্কফ্লো সরবরাহ করে। টেবিল, রিলেশন, কুয়েরি, পেজিনেশন এবং টেন্যান্সি নিয়ম একবার সংজ্ঞায়িত করুন; ডিটারমিনিস্টিক জেনারেটরকে ভাষাভিত্তিক মডেল, ইনডেক্স, DDL, ভ্যালিডেশন এবং টেস্ট তৈরি করতে দিন; এরপর অনুমোদিত মডেল লেয়ারে কাস্টম আচরণ রাখুন।
Claude Code এজেন্ট, লেখার সময় চলা হুক, ডুপ্লিকেট-কোড শনাক্তকরণ, জেনারেট করা ভেরিফিকেশন এবং কঠোর CI চেকের মাধ্যমে কোডবেস ও AI কনটেক্সট বাড়লেও প্রকল্পটি সামঞ্জস্যপূর্ণ থাকে। আরও বিস্তারিত রেফারেন্সের জন্য প্রকল্পের ডকুমেন্টেশন এবং সোর্স রিপোজিটরি দেখুন।
