agentleFS
vSkyfallvSkyfall/sky/skills/sky-canvas/SKILL.md

sky-canvas

Skill8 starsChanged 6 days agoMITView on GitHub

Canvas ve SVG ile çizim etkileşimleri: imza alanı, serbest çizim/beyaz tahta, görsel düzenleme (metin, sticker, filtre), Konva/Fabric/tldraw/Excalidraw seçimi, Retina ölçekleme, pointer events ve kalem basıncı (perfect-freehand), geri al/yinele, hizalama kılavuzları, PNG/SVG/PDF dışa aktarım, konfeti kutlama anları ve OffscreenCanvas. "İmza alanı", "çizim tahtası", "görsel üzerine yazı", "konfeti", "whiteboard" dendiğinde kullan.

The file

Files
SKILL.md

Sky · Canvas & Çizim

Hazır mı, kendin mi?

İhtiyaçSeçim
Sonsuz beyaz tahta, şekiller, çok kullanıcıtldraw veya Excalidraw
Sürüklenebilir nesneler, görsel editörKonva (react-konva)
Klasik nesne düzenleyiciFabric.js
İmza alanısignature_pad veya perfect-freehand
Efektcanvas-confetti

Retina ölçekleme (bulanıklığın 1 numaralı sebebi)

function setupCanvas(canvas: HTMLCanvasElement) {
  const dpr = Math.min(window.devicePixelRatio || 1, 2);
  const { width, height } = canvas.getBoundingClientRect();
  canvas.width = Math.round(width * dpr); canvas.height = Math.round(height * dpr);
  const ctx = canvas.getContext("2d")!; ctx.scale(dpr, dpr);
  return ctx;
}

ResizeObserver ile boyut değişince yeniden kur ve çiz.

Pointer events ile çizim

canvas.addEventListener("pointerdown", (e) => { canvas.setPointerCapture(e.pointerId); start(e); });
canvas.addEventListener("pointermove", (e) => {
  for (const ev of e.getCoalescedEvents?.() ?? [e]) addPoint(ev.offsetX, ev.offsetY, ev.pressure || 0.5);
});
  • Canvas'ta touch-action: none (yoksa sayfa kayar).
  • getCoalescedEvents ile hızlı çizimde kayıp nokta yok → pürüzsüz çizgi.
  • perfect-freehand basınç duyarlı, kalem gibi doğal çizgi — insanlar farkı hemen görür.

İmza alanı

  • Min 320×140, taban çizgisi + "Buraya imzalayın" soluk metni, "Temizle" butonu.
  • Boşsa gönderim engelli; tek nokta geçersiz.
  • Dışa aktar: SVG + PNG yedeği; zaman damgası ve IP ile kaydet (hukuki iz).
  • Erişilebilir alternatif: "Adımı yazarak imzala" (el yazısı fontuyla render).

Geri al / yinele

Komut deseni ({ do, undo }) veya küçük sahnelerde durum anlık görüntüleri. ⌘Z / ⌘⇧Z.

Görsel editör kalıpları

  • Metin ekle (sürükle, döndür, font/renk), sticker/emoji, kırp, filtre (ctx.filter), çerçeve.
  • Katmanlar paneli: sırala, gizle, kilitle.
  • Seçim tutamakları (Konva Transformer): Shift ile oran koru.
  • Hizalama kılavuzları: nesne merkeze/kenara yaklaşınca pembe çizgi — profesyonel his.

Dışa aktarım

  • PNG: canvas.toBlob(cb, "image/png"); 2× çözünürlük seçeneği.
  • SVG: Konva/Fabric export, tldraw exportToSvg. PDF: bkz. sky-print-pdf.
  • Panoya kopyala ve paylaş (bkz. sky-browser-apis).
  • Dış görseller canvas'ı kirletir (CORS) → img.crossOrigin = "anonymous" + sunucu CORS başlığı.

Konfeti ve kutlama anları

import confetti from "canvas-confetti";
confetti({ particleCount: 120, spread: 70, origin: { y: 0.7 }, disableForReducedMotion: true });

Ne zaman: ilk başarılı işlem (ilk randevu, ödeme tamam, hedefe ulaşma). Her tıklamada değil.

Performans

  • requestAnimationFrame; sekme gizliyken dur.
  • Statik arka planı ayrı katmanda çiz, yalnızca değişen katmanı yeniden çiz.
  • Ağır iş → OffscreenCanvas + Worker. 10k+ nesne → PixiJS (WebGL).

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.