🧪 Skills

Ai C Plan

AI-C plan klasöründeki MD/CSV planı okuyup dependency sırasına göre tamamen otomatik ilerler; geliştirir, test eder, raporlar.

v1.0.0
❤️ 0
⬇️ 157
👁 2
Share

Description


name: ai_c_plan description: "AI-C plan klasöründeki MD/CSV planı okuyup dependency sırasına göre tamamen otomatik ilerler; geliştirir, test eder, raporlar."

Proje ve structure yapısını oluştur. Gerekli dosyaları oluştur. Teknoloji stack ve design referanslarına uygun şekilde kod yaz. Her step'te planlanan değişiklikleri uygula, test et, raporla. Gerektiğinde config dosyaları oluştur. Her step sonunda commit at. Eğer bir step eksik bilgi/erişim/bağımlılık nedeniyle yapılamıyorsa Blocked yap ve gereken aksiyonları açıkla.

PRE-EXECUTION RULE

Her step başlamadan önce:

  1. docs/architecture/AI_CONSULTANT_SYSTEM_PROMPT.md dosyasını oku
  2. Bu dokümandaki teknoloji stack ve monorepo yapısına uyduğunu doğrula
  3. Uymuyorsa step'i Blocked yap ve sapma nedenini açıkla 3.1 Minimum sapmayla uyumlandırmayı dene. 3.2 Gerekirse config dosyası üret. 3.3 Gerçekten imkansızsa Blocked yap. 4.Eksik klasörleri ve minimal dosyaları otomatik oluştur (packages/config gibi) ve devam et; sadece destructive işlemlerde dur.
  4. UI step başlamadan önce /home/adige/AI-C/desing klasöründeki ilgili ekran görseli/HTML dosyasını incele ve ekranı referansla birebir hizala.
  5. Database/schema değişikliği yapılıyorsa migration üret ve uygula.

ENV POLICY (No-Questions Mode)

Bu projede dış bağımlılıklar için tüm konfigürasyon .env üzerinden yönetilecek.

Kurallar:

  1. Agent gerçek secret üretmeye/uydurmaya çalışmaz.
  2. Agent her servis için .env.example ve ilgili alt-app .env.example dosyalarını oluşturur/günceller.
  3. Gerçek secret gerekli ise placeholder bırakır (örn: "REPLACE_ME") ve açıklama ekler.
  4. Eksik secret varsa:
    • Mümkünse "DEV_FALLBACK" moduna geç (mock provider / stub).
    • Uygulama boot edebilecek kadar default ile ilerle.
    • Sadece tamamen imkânsızsa Blocked yap.
  5. Tüm dış servis konfigürasyonları .env üzerinden yönetilir.
  6. .env.example dosyaları otomatik oluşturulur/güncellenir.
  7. Gerçek secret üretilmez, placeholder bırakılır.
  8. Eksik secret varsa DEV_FALLBACK_MODE ile mock provider kullanılır.

Zorunlu dosyalar:

  • .env.example (repo root)
  • apps/api/.env.example
  • apps/web/.env.example
  • apps/mobile/.env.example

Git kuralları:

  • .env* dosyalarını gitignore et (sadece *.example commit edilir).

Autopilot Modu

Bu skill, kullanıcıdan her adımda onay istemeden ilerler. Sadece şu durumlarda durur:

  • Bir step "Blocked" olursa (eksik bilgi/erişim/bağımlılık).
  • Güvenli olmayan/destructive bir işlem gerekiyorsa (silme, prod deploy, ödeme, gizli anahtar yazma).
  • Plan dosyaları bulunamazsa.

Plan Kaynakları (öncelik)

  1. plan/ai_consultant_mobile_project_plan.md
  2. Yoksa plan/ai_consultant_full_project_plan.md
  3. Md yoksa csv fallback dosyaları

Yürütme Algoritması

  1. Planı oku → tüm ST-* satırlarını çıkar.
  2. Bir DAG oluştur:
    • depends tamamlanmadan step başlamaz.
    • blocks bir sonraki hedefi gösterir (sıra/öncelik ipucu).
  3. Çalıştırma sırası:
    • Önce P0'lar, sonra P1/P2/P3
    • Aynı öncelikte dependency-ready olanları sırayla
  4. Her step için:
    • "Planlanan değişiklik" (kısa)
    • Uygulama: dosya değişiklikleri
    • Komutlar: lint/test/build (repo yapısına göre)
    • Schema değişikliği varsa: Prisma migration (apps/api içinde) + migration dosyaları
    • Doğrulama: acceptance kriteri yerine "plan hedefi + çalışır build/test"
    • Status: Done / Blocked
    • Blocked ise: neden + gereken aksiyonlar + hangi bilgi lazım
  5. Her tamamlanan step sonunda:
  • git add .
  • Conventional Commit formatında commit at
  • Commit mesajı: "feat(epic-01): initialize monorepo structure"

Repo/Çalışma Kuralları

  • Workspace dışına yazma.
  • Gizli anahtarları (API key, cert, signing key) dosyaya yazma; sadece env değişkeni olarak tarif et.
  • Progress kaydı tek kaynak olarak /home/adige/AI-C/progress.json üzerinde tutulur.
  • Bir step tamamlandığında ilgili step status alanını done/DONE olarak güncelle.
  • Kullanıcıdan onay istemeden sıradaki runnable maddeye geç.
  • Her 3-5 step’te bir veya büyük bir değişiklikte:
    • git status kontrol et
    • mümkünse küçük commit at (repo git ise)
  • Eğer repo yoksa güvenli şekilde git init yap ve devam et.

Çıktı Formatı

Her step için:

Step : </h3> <ul> <li>Priority:</li> <li>Depends:</li> <li>Changes:</li> <li>Files changed:</li> <li>Commands run:</li> <li>Verification:</li> <li>Status: Done/Blocked</li> </ul> </div></section><!-- Changelog --><!-- Version History --><!-- Reviews --><div id="reviews-section"><section><h2 class="text-lg font-semibold text-gray-900 mb-4">Reviews (0)</h2><!-- Sign in prompt --> <div class="bg-gray-50 rounded-lg p-4 mb-6 text-sm text-gray-500"><a href="/auth/login" class="text-brand-600 hover:text-brand-700 font-medium">Sign in</a> to write a review.</div><!-- Empty state --> <div class="bg-gray-50 rounded-xl p-8 text-center"><p class="text-sm text-gray-500">No reviews yet. Be the first to review!</p></div></section></div><!-- Comments --><div id="comments-section"><section><h2 class="text-lg font-semibold text-gray-900 mb-4" id="comments">Comments (0)</h2><div class="bg-gray-50 rounded-lg p-4 mb-6 text-sm text-gray-500"><a href="/auth/login" class="text-brand-600 hover:text-brand-700 font-medium">Sign in</a> to join the discussion.</div><div class="bg-gray-50 rounded-xl p-8 text-center"><p class="text-sm text-gray-500">No comments yet. Be the first to share your thoughts!</p></div></section></div></div><!-- Sidebar (1/3) --><div class="space-y-6"><!-- Platforms --><div class="bg-white rounded-xl border border-gray-200 p-5"><h3 class="text-sm font-semibold text-gray-900 mb-3">Compatible Platforms</h3><div class="flex flex-wrap gap-2"></div></div><!-- Tags --><!-- Links --><div class="bg-white rounded-xl border border-gray-200 p-5"><h3 class="text-sm font-semibold text-gray-900 mb-3">Links</h3><div class="space-y-2"><a href="https://clawhub.ai/skills/ai-c-plan" target="_blank" rel="noopener noreferrer" class="flex items-center gap-2 text-sm text-brand-600 hover:text-brand-700">📂 Source Code</a> </div></div><!-- Pricing (DISABLED: free-only mode — always show Free) --><div class="bg-white rounded-xl border border-gray-200 p-5"><h3 class="text-sm font-semibold text-gray-900 mb-3">Pricing</h3><span class="text-sm font-medium text-green-700 bg-green-50 px-3 py-1 rounded-full">Free</span></div></div></div><!-- Related Items --><section class="mt-12"><h2 class="text-xl font-bold text-gray-900 mb-6">Related Configs</h2><div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"><div class="relative"><a href="/item/skill-self-improving-agent" class="card-hover block"><div class="flex items-start justify-between gap-3 mb-3"><div class="flex items-center gap-2 min-w-0"><span class="badge-skill">🧪 Skill</span><h3 class="text-base font-semibold text-gray-900 truncate">self-improving-agent</h3></div><span class="shrink-0 text-xs font-medium text-green-700 bg-green-50 px-2 py-0.5 rounded-full mr-6">Free</span> </div><p class="text-sm text-gray-500 mb-3 line-clamp-2">Captures learnings, errors, and corrections to enable continuous improvement. Use when: (1) A command or operation fails unexpectedly, (2) User corrects Clau...</p><div class="flex items-center justify-between"><div class="flex items-center gap-3 text-xs text-gray-500"><span class="flex items-center gap-0.5"><span>❤️</span> 2.0k</span> <span class="flex items-center gap-0.5"><span>⬇️</span> 218k</span></div></div></a> <button data-compare-slug="skill-self-improving-agent" onclick="event.preventDefault();event.stopPropagation();toggleCompare(this.dataset.compareSlug)" class="absolute top-3 right-3 w-6 h-6 flex items-center justify-center rounded border border-gray-200 text-gray-400 hover:text-brand-600 hover:border-brand-300 transition-colors" title="Add to comparison"><svg class="w-3.5 h-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"></line> <line x1="12" y1="20" x2="12" y2="4"></line> <line x1="6" y1="20" x2="6" y2="14"></line></svg></button></div><div class="relative"><a href="/item/self-improving-agent" class="card-hover block"><div class="flex items-start justify-between gap-3 mb-3"><div class="flex items-center gap-2 min-w-0"><span class="badge-skill">🧪 Skill</span><h3 class="text-base font-semibold text-gray-900 truncate">Self Improving Agent</h3></div><span class="shrink-0 text-xs font-medium text-green-700 bg-green-50 px-2 py-0.5 rounded-full mr-6">Free</span> </div><p class="text-sm text-gray-500 mb-3 line-clamp-2">Captures learnings, errors, and corrections to enable continuous improvement. And also 50+ models for image generation, video generation, text-to-speech, spe...</p><div class="flex items-center justify-between"><div class="flex items-center gap-3 text-xs text-gray-500"><span class="flex items-center gap-0.5"><span>❤️</span> 2.0k</span> <span class="flex items-center gap-0.5"><span>⬇️</span> 206k</span></div></div></a> <button data-compare-slug="self-improving-agent" onclick="event.preventDefault();event.stopPropagation();toggleCompare(this.dataset.compareSlug)" class="absolute top-3 right-3 w-6 h-6 flex items-center justify-center rounded border border-gray-200 text-gray-400 hover:text-brand-600 hover:border-brand-300 transition-colors" title="Add to comparison"><svg class="w-3.5 h-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"></line> <line x1="12" y1="20" x2="12" y2="4"></line> <line x1="6" y1="20" x2="6" y2="14"></line></svg></button></div><div class="relative"><a href="/item/find-skills" class="card-hover block"><div class="flex items-start justify-between gap-3 mb-3"><div class="flex items-center gap-2 min-w-0"><span class="badge-skill">🧪 Skill</span><h3 class="text-base font-semibold text-gray-900 truncate">Find Skills</h3></div><span class="shrink-0 text-xs font-medium text-green-700 bg-green-50 px-2 py-0.5 rounded-full mr-6">Free</span> </div><p class="text-sm text-gray-500 mb-3 line-clamp-2">Search, discover, and install skills from the open agent skills ecosystem to extend agent capabilities for specific tasks or domains.</p><div class="flex items-center justify-between"><div class="flex items-center gap-3 text-xs text-gray-500"><span class="flex items-center gap-0.5"><span>❤️</span> 814</span> <span class="flex items-center gap-0.5"><span>⬇️</span> 199k</span></div></div></a> <button data-compare-slug="find-skills" onclick="event.preventDefault();event.stopPropagation();toggleCompare(this.dataset.compareSlug)" class="absolute top-3 right-3 w-6 h-6 flex items-center justify-center rounded border border-gray-200 text-gray-400 hover:text-brand-600 hover:border-brand-300 transition-colors" title="Add to comparison"><svg class="w-3.5 h-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"></line> <line x1="12" y1="20" x2="12" y2="4"></line> <line x1="6" y1="20" x2="6" y2="14"></line></svg></button></div><div class="relative"><a href="/item/skill-summarize" class="card-hover block"><div class="flex items-start justify-between gap-3 mb-3"><div class="flex items-center gap-2 min-w-0"><span class="badge-skill">🧪 Skill</span><h3 class="text-base font-semibold text-gray-900 truncate">Summarize</h3></div><span class="shrink-0 text-xs font-medium text-green-700 bg-green-50 px-2 py-0.5 rounded-full mr-6">Free</span> </div><p class="text-sm text-gray-500 mb-3 line-clamp-2">--- name: summarize description: Summarize URLs or files with the summarize CLI (web, PDFs, images, audio, YouTube). homepage: https://summarize.sh metadata: {"clawdbot":{"emoji":"🧾","requires":{"b</p><div class="flex items-center justify-between"><div class="flex items-center gap-3 text-xs text-gray-500"><span class="flex items-center gap-0.5"><span>❤️</span> 609</span> <span class="flex items-center gap-0.5"><span>⬇️</span> 160k</span></div></div></a> <button data-compare-slug="skill-summarize" onclick="event.preventDefault();event.stopPropagation();toggleCompare(this.dataset.compareSlug)" class="absolute top-3 right-3 w-6 h-6 flex items-center justify-center rounded border border-gray-200 text-gray-400 hover:text-brand-600 hover:border-brand-300 transition-colors" title="Add to comparison"><svg class="w-3.5 h-3.5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"></line> <line x1="12" y1="20" x2="12" y2="4"></line> <line x1="6" y1="20" x2="6" y2="14"></line></svg></button></div></div></section></div></main><footer class="bg-white border-t border-gray-200 mt-16"><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12"><div class="grid grid-cols-2 md:grid-cols-5 gap-8"><!-- Brand --><div class="col-span-2 md:col-span-1"><a href="/" class="flex items-center gap-2 text-lg font-bold text-brand-600"><span>☕</span> <span>Skillbrew</span></a><p class="mt-2 text-sm text-gray-500">Brew your perfect agent</p></div><!-- Product --><div><h3 class="text-sm font-semibold text-gray-900 mb-3">Product</h3><ul class="space-y-2"><li><a href="/browse" class="text-sm text-gray-500 hover:text-gray-700">Browse</a></li><li><a href="/collections" class="text-sm text-gray-500 hover:text-gray-700">Collections</a></li><li><a href="/weekly" class="text-sm text-gray-500 hover:text-gray-700">Weekly</a></li><li><a href="/submit" class="text-sm text-gray-500 hover:text-gray-700">Submit</a></li></ul></div><!-- Community --><div><h3 class="text-sm font-semibold text-gray-900 mb-3">Community</h3><ul class="space-y-2"><li><a href="https://github.com/skillbrew-dev" target="_blank" rel="noopener" class="text-sm text-gray-500 hover:text-gray-700">GitHub</a></li><li><a href="https://discord.gg/zuXQfjUW" target="_blank" rel="noopener" class="text-sm text-gray-500 hover:text-gray-700">Discord</a></li><li><a href="mailto:skillbrew@skillbrew.dev" class="text-sm text-gray-500 hover:text-gray-700">Email</a></li></ul></div><!-- Resources --><div><h3 class="text-sm font-semibold text-gray-900 mb-3">Resources</h3><ul class="space-y-2"><li><a href="/api/docs" class="text-sm text-gray-500 hover:text-gray-700">API Docs</a></li><li><a href="/feed.xml" class="text-sm text-gray-500 hover:text-gray-700">RSS Feed</a></li></ul></div><!-- Legal --><div><h3 class="text-sm font-semibold text-gray-900 mb-3">Legal</h3><ul class="space-y-2"><li><a href="/about" class="text-sm text-gray-500 hover:text-gray-700">About</a></li><li><a href="/privacy" class="text-sm text-gray-500 hover:text-gray-700">Privacy Policy</a></li><li><a href="/terms" class="text-sm text-gray-500 hover:text-gray-700">Terms of Service</a></li></ul></div></div><div class="mt-8 pt-8 border-t border-gray-200"><p class="text-sm text-gray-400 text-center">© 2026 Skillbrew. All rights reserved.</p></div></div></footer><!-- Compare floating bar --><div id="compare-bar" class="fixed bottom-0 left-0 right-0 bg-white border-t border-gray-200 shadow-lg py-3 px-4 z-50 hidden"><div class="max-w-7xl mx-auto flex items-center justify-between"><span class="text-sm text-gray-700"><strong id="compare-count">0</strong> items selected for comparison</span><div class="flex items-center gap-2"><button onclick="clearCompareSet()" class="px-3 py-1.5 text-sm text-gray-500 hover:text-gray-700 transition-colors">Clear</button> <button onclick="goCompare()" class="px-4 py-1.5 text-sm font-medium text-white bg-brand-600 rounded-lg hover:bg-brand-700 transition-colors">Compare Now</button></div></div></div><script> document.body.addEventListener('htmx:responseError', function(event) { if (event.detail.xhr.status === 401) { window.location.href = '/auth/login?return_url=' + encodeURIComponent(window.location.pathname); } }); // Include CSRF token in all HTMX requests document.body.addEventListener('htmx:configRequest', function(evt) { var meta = document.querySelector('meta[name="csrf-token"]'); if (meta) { evt.detail.headers['X-CSRF-Token'] = meta.content; } }); // Compare set (localStorage) function getCompareSet() { try { return JSON.parse(localStorage.getItem('sb_compare') || '[]'); } catch { return []; } } function saveCompareSet(set) { localStorage.setItem('sb_compare', JSON.stringify(set)); updateCompareBar(); } function toggleCompare(slug) { let set = getCompareSet(); const idx = set.indexOf(slug); if (idx >= 0) { set.splice(idx, 1); } else { if (set.length >= 3) { set.shift(); } set.push(slug); } saveCompareSet(set); updateCompareButtons(); } function clearCompareSet() { saveCompareSet([]); updateCompareButtons(); } function goCompare() { const set = getCompareSet(); if (set.length >= 2) { window.location.href = '/compare?items=' + set.join(','); } } function updateCompareBar() { const set = getCompareSet(); const bar = document.getElementById('compare-bar'); const count = document.getElementById('compare-count'); if (bar) { if (set.length >= 2) { bar.classList.remove('hidden'); } else { bar.classList.add('hidden'); } if (count) count.textContent = set.length; } } function updateCompareButtons() { const set = getCompareSet(); document.querySelectorAll('[data-compare-slug]').forEach(btn => { const slug = btn.dataset.compareSlug; if (set.includes(slug)) { btn.classList.add('bg-brand-50', 'text-brand-600', 'border-brand-300'); btn.classList.remove('text-gray-400', 'border-gray-200'); btn.title = 'Remove from comparison'; } else { btn.classList.remove('bg-brand-50', 'text-brand-600', 'border-brand-300'); btn.classList.add('text-gray-400', 'border-gray-200'); btn.title = 'Add to comparison'; } }); } document.addEventListener('DOMContentLoaded', function() { updateCompareBar(); updateCompareButtons(); }); document.body.addEventListener('htmx:afterSwap', function() { updateCompareButtons(); }); </script></body></html>