Geçen yıl başlayan bir projeden ilham aldığınızı hayal edin: kod tabanınızdan otomatik olarak anlaşılması kolay eğitimler oluşturmak. Bu vizyon, Waver adı verilen bir araçla hayata geçirildi. Bu araç, sadece metin değil aynı zamanda Mermaid diyagramları içeren saf Markdown formatında eğitim dokümanları üretiyor. Geliştiriciler projeye katılımı kolaylaştırmak için bu eğitimleri doğrudan proje borularına ekleyebiliyor.
Projenin temelinde, Java tabanlı bir framework olan LangChain4J yer alıyor. İlginç olan ise, bu süreç sırasında JGraphlet adı verilen ve LLM (Büyük Dil Modeli) iletişimini optimize etmek için geliştirilen bir kütüphanenin ortaya çıkmasıydı. Java’nın sunduğu avantajlar arasında performans optimizasyonu ve kontrolün yanı sıra, sistemin giderek daha özelleştirilebilir hale gelmesi de bulunuyor.
Peki, bugün bu hikayenin neresindeyiz? Geliştirilen Claude Skill sayesinde, tüm bu karmaşık süreçler daha basit ve erişilebilir hale getirildi. Özellikle SKILLS.md dosyasının oluşturulmasıyla birlikte, projelerin kod tabanlarından otomatik olarak eğitim dokümanları oluşturmak artık çok daha kolay.
Java ile Kod Tabanından Eğitim Üretme Süreci
Waver projesiyle geliştirilen bir TutorialGenerator sınıfı, kod tabanından eğitim dokümanları üretmek için kullanılan temel yapıyı oluşturuyor. Bu sınıf, projelerinizi analiz ederek, anlaşılması kolay bir şekilde belgeler oluşturuyor. Aşağıdaki kod parçası, bu sürecin nasıl işlediğini gösteriyor:
package dev.shaaf.waver.cli;
import dev.langchain4j.model.chat.ChatModel;
import dev.shaaf.jgraphlet.TaskPipeline;
import dev.shaaf.waver.llm.config.AppConfig;
import dev.shaaf.waver.llm.config.ModelProviderFactory;
import dev.shaaf.waver.llm.tutorial.task.*;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.logging.Logger;
public class TutorialGenerator {
private static final Logger logger = Logger.getLogger(TutorialGenerator.class.getName());
public static void generate(AppConfig appConfig) {
ChatModel chatModel = ModelProviderFactory.buildChatModel(
appConfig.llmProvider(),
appConfig.apiKey()
);
Path outputDir = Paths.get(appConfig.absoluteOutputPath() + "/" + appConfig.projectName());
logger.info("🚀 Eğitim Üretimi Başlıyor: " + appConfig.inputPath());
try (TaskPipeline tasksPipeLine = new TaskPipeline()) {
tasksPipeLine
.add("Code-crawler", new CodeCrawlerTask())
.then("Identify-abstraction", new IdentifyAbstractionsTask(chatModel, appConfig.projectName()))
.then("Identify-relationships", new IdentifyRelationshipsTask(chatModel, appConfig.projectName()))
.then("Chapter-organizer", new ChapterOrganizerTask(chatModel))
.then("Technical-writer", new TechnicalWriterTask(chatModel, outputDir))
.then("Meta-info", new MetaInfoTask(chatModel, outputDir, appConfig.projectName(), appConfig.inputPath()));
tasksPipeLine.run(appConfig.inputPath()).join();
logger.info("\n✅ Eğitim üretimi tamamlandı! Çıktı yolu: " + outputDir);
}
}
}Yukarıdaki kodda yer alan her bir görev (Task), ardışık bir şekilde çalışan ve prompt zincirleme prensibine dayanan bir yapıya sahip. Bu sayede, kod tabanından otomatik olarak yapılandırılmış eğitim dokümanları oluşturulabiliyor.
SKILLS.md Dosyasını Oluşturmanın Temelleri
Claude Skill geliştirirken en önemli adım, SKILLS.md dosyasının yapılandırılmasıdır. Bu dosya, Claude’un projenizi analiz etmesini ve eğitim dokümanları üretmesini sağlayan talimatları içeriyor. Temel dosya yapısı aşağıdaki gibidir:
- SKILLS.md – Ana yetenek tanımı ve talimatlar
- package.json – NPM paket yapılandırması
- installer.js – Kurulum betiği
- bin/ – Çalıştırılabilir komutlar
- tests/ – Test dosyaları (çoklu dil destekli projelerde karşılaştırma için kullanılır)
SKILLS.md dosyası oldukça uzun olabilir (100+ satır). İşte kod keşfi aşamasında kullanılan bir bölümün özeti:
Proje Ayrıntılarının Belirlenmesi
- Kullanıcı tarafından komutla yol sağlandıysa (örneğin,
/tutorial analyze ./src), bu yol kullanılır. - Aksi takdirde kullanıcıya "Hangi dizini analiz etmeliyim?" sorusu yöneltilir.
- Dosya uzantılarına göre birincil programlama dili otomatik olarak algılanır.
- İsteğe bağlı olarak, belirli alanlara odaklanılıp odaklanılmayacağı sorulabilir.
Kaynak Dosyaların Bulunması
Farklı programlama dilleri için kullanılan dosya desenleri aşağıdaki gibidir:
- Java:
**/*.java(dışarıda bırakılanlar:**/test/**,**/target/**) - Python:
**/*.py(dışarıda bırakılanlar:**/test/**,**/__pycache__/**,**/venv/**) - JavaScript/TypeScript:
**/*.{js,ts,jsx,tsx}(dışarıda bırakılanlar:**/node_modules/**,**/dist/**,**/build/**) - Go:
**/*.go(dışarıda bırakılanlar:**/*_test.go**, **/vendor/**) - C#:
**/*.cs(dışarıda bırakılanlar:**/bin/**,**/obj/**) - Ruby:
**/*.rb(dışarıda bırakılanlar:**/spec/**,**/test/**) - Rust:
**/*.rs(dışarıda bırakılanlar:**/target/**) - PHP:
**/*.php(dışarıda bırakılanlar:**/vendor/**,**/tests/**)
Büyük Kod Tabanlarıyla Baş Etme
- 50’den fazla dosya bulunduğunda, kullanıcıya "{N} dosya bulundu. Tümünü analiz etmek mi yoksa belirli bir alt dizine odaklanmak mı istersiniz?" sorusu yöneltilir.
- Önerilen çekirdek dizinler:
src/main
Proje Bağımlılıkları ve Optimizasyonlar
Waver ve JGraphlet projeleri, performansı artırmak için çeşitli optimizasyonlara sahip. Java’nın sunduğu avantajlar arasında:
- Performans: Bellek ve CPU kullanımında optimize edilmiş iletişim.
- Kontrol: Geliştiricilerin sistem üzerinde daha fazla kontrole sahip olması.
- Özelleştirme: Proje ihtiyaçlarına göre uyarlanabilir yapı.
Bu projeler, prompt zincirleme ve görev boruları (task pipelines) kullanarak karmaşık süreçleri basitleştiriyor. Bu sayede, kod tabanlarından otomatik olarak eğitim dokümanları üretmek mümkün hale geliyor.
Gelecekte Neler Bekleniyor?
Claude Skill’in geliştirilmesiyle birlikte, projelerin kod tabanlarından otomatik olarak eğitim dokümanları üretmek artık daha erişilebilir hale geldi. Gelecekte, bu yeteneğin daha fazla programlama dilini desteklemesi ve kullanıcı dostu bir arayüzle zenginleştirilmesi planlanıyor. Ayrıca, büyük kod tabanlarında performans optimizasyonlarının devam etmesiyle birlikte, süreçlerin daha da hızlanması bekleniyor.
Yapay zeka özeti
Claude Skill geliştirerek projeleriniz için otomatik eğitim dokümanları oluşturun. Java projelerinden Mermaid diyagramlarına kadar adım adım rehber.