Slack için optimize edilmiş animasyonlu GIF oluşturmak için bilgi ve araçlar sağlar. Kısıtlamalar, doğrulama araçları ve animasyon kavramlarını içerir. Kullanıcılar "Slack için X'in Y yapmasının bir GIF'ini yap" gibi istekler sunduğunda kullanılır.
cd ~/.claude/skills
git clone https://github.com/anthropics/skills.git skills mkdir -p ~/.claude/skills/slack-gif-creator
curl -fsSL https://raw.githubusercontent.com/anthropics/skills/HEAD/skills/slack-gif-creator/SKILL.md \
-o ~/.claude/skills/slack-gif-creator/SKILL.md Slack için optimize edilmiş animasyonlu GIF'ler oluşturmak üzere yardımcı programlar ve bilgi sağlayan bir araç seti.
Boyutlar:
Parametreler:
from core.gif_builder import GIFBuilder
from PIL import Image, ImageDraw
# 1. Builder oluştur
builder = GIFBuilder(width=128, height=128, fps=10)
# 2. Kareleri üret
for i in range(12):
frame = Image.new('RGB', (128, 128), (240, 248, 255))
draw = ImageDraw.Draw(frame)
# PIL primitive'lerini kullanarak animasyonunuzu çizin
# (daireler, çokgenler, çizgiler, vb.)
builder.add_frame(frame)
# 3. Optimizasyon ile kaydet
builder.save('output.gif', num_colors=48, optimize_for_emoji=True)
Bir kullanıcı görüntü yüklerse, şunlardan birini isteyip istemediğini göz önünde bulundurun:
PIL kullanarak görüntüleri yükleyin ve çalışın:
from PIL import Image
uploaded = Image.open('file.png')
# Doğrudan kullanın veya sadece renkler/stil için referans olarak kullanın
Grafikleri sıfırdan çizerken, PIL ImageDraw primitive'lerini kullanın:
from PIL import ImageDraw
draw = ImageDraw.Draw(frame)
# Daireler/ovaller
draw.ellipse([x1, y1, x2, y2], fill=(r, g, b), outline=(r, g, b), width=3)
# Yıldızlar, üçgenler, herhangi bir çokgen
points = [(x1, y1), (x2, y2), (x3, y3), ...]
draw.polygon(points, fill=(r, g, b), outline=(r, g, b), width=3)
# Çizgiler
draw.line([(x1, y1), (x2, y2)], fill=(r, g, b), width=5)
# Dikdörtgenler
draw.rectangle([x1, y1, x2, y2], fill=(r, g, b), outline=(r, g, b), width=3)
Kullanmayın: Emoji fontları (platformlar arasında güvenilmez) veya bu beceri içinde önceden paketlenmiş grafiklerin var olduğunu varsaymayın.
Grafikler temel değil, cilalı ve yaratıcı görünmelidir. İşte nasıl yapılır:
Daha kalın çizgiler kullanın - Her zaman konturlar ve çizgiler için width=2 veya daha yüksek ayarlayın. İnce çizgiler (width=1) sıçramalı ve amatörcü görünür.
Görsel derinlik ekleyin:
create_gradient_background)Şekilleri daha ilginç hale getirin:
Renklere dikkat edin:
Karmaşık şekiller için (kalpler, kar kristalleri, vb.):
Yaratıcı olun ve detaylı olun! İyi bir Slack GIF'i, yer tutucu grafikleri değil, cilalı görünmelidir.
core.gif_builder)Kareleri bir araya getirir ve Slack için optimize eder:
builder = GIFBuilder(width=128, height=128, fps=10)
builder.add_frame(frame) # PIL Image ekle
builder.add_frames(frames) # Kare listesi ekle
builder.save('out.gif', num_colors=48, optimize_for_emoji=True, remove_duplicates=True)
core.validators)GIF'in Slack gereksinimlerini karşılayıp karşılamadığını kontrol edin:
from core.validators import validate_gif, is_slack_ready
# Detaylı doğrulama
passes, info = validate_gif('my.gif', is_emoji=True, verbose=True)
# Hızlı kontrol
if is_slack_ready('my.gif'):
print("Hazır!")
core.easing)Doğrusal yerine düzgün hareket:
from core.easing import interpolate
# 0.0 ile 1.0 arasında ilerleme
t = i / (num_frames - 1)
# Easing uygula
y = interpolate(start=0, end=400, t=t, easing='ease_out')
# Mevcut: linear, ease_in, ease_out, ease_in_out,
# bounce_out, elastic_out, back_out
core.frame_composer)Yaygın ihtiyaçlar için kolaylık fonksiyonları:
from core.frame_composer import (
create_blank_frame, # Solid renk arka planı
create_gradient_background, # Dikey gradyan
draw_circle, # Daireler için yardımcı
draw_text, # Basit metin oluşturma
draw_star # 5 köşeli yıldız
)
Nesne konumunu salınımla ofset edin:
math.sin() veya math.cos() öğesini kare indeksi ile kullanınNesne boyutunu ritmik olarak ölçekleyin:
math.sin(t * frequency * 2 * math.pi) kullanınNesne düşer ve sıçrar:
interpolate() öğesini easing='bounce_out' ile kullanıneasing='ease_in' kullanın (hızlanıyor)Nesneyi merkez etrafında döndürün:
image.rotate(angle, resample=Image.BICUBIC)Kademeli olarak görün veya kaybolun:
Image.blend(image1, image2, alpha) kullanınNesneyi ekran dışından konuma taşıyın:
interpolate() öğesini easing='ease_out' ile kullanıneasing='back_out' kullanınYakınlaştırma efekti için ölçekleyin ve konumlandırın:
Radyal olarak dışa doğru yayılan parçacıklar oluşturun:
x += vx, y += vyvy += gravity_constantDosya boyutunu küçültmek için istendiğinde, aşağıdaki yöntemlerden birkaçını uygulayın:
num_colors=48 yerine 128remove_duplicates=Trueoptimize_for_emoji=True otomatik olarak optimize eder# Emoji için maksimum optimizasyon
builder.save(
'emoji.gif',
num_colors=48,
optimize_for_emoji=True,
remove_duplicates=True
)
Bu beceri sağlar:
Sağlamaz:
Kullanıcı yüklemeleri hakkında not: Bu beceri önceden oluşturulmuş grafikler içermez, ancak bir kullanıcı görüntü yüklerse, PIL kullanarak yükleyin ve çalışın - onların isteğine göre doğrudan kullanılmasını mı yoksa sadece ilham kaynağı olarak mı kullanıldığını yorumlayın.
Yaratıcı olun! Kavramları birleştirin (sıçrayan + dönen, atılan + kayan, vb.) ve PIL'in tam yeteneklerini kullanın.
pip install pillow imageio numpy
Herhangi bir yaratıcı çalışmaya başlamadan önce bunu mutlaka kullanın - feature oluştururken, component inşa ederken, functionality eklerken veya davranış değiştirirken. Kullanıcı niyetini, gereksinimleri ve tasarımı implementation öncesinde araştırır.
Uygulama tamamlandığında, tüm testler geçtiğinde ve çalışmanızı nasıl entegre edeceğinize karar vermeniz gerektiğinde kullanın - merge, PR veya cleanup seçeneklerini sunarak geliştirme sürecinin tamamlanmasını rehberlik eder.
Kod incelemesi geri bildirimi alırken, önerileri uygulamadan önce kullanın; özellikle geri bildirim belirsiz veya teknik olarak şüpheli görünüyorsa - performatif anlaşmadan veya körü körüne uygulamadan ziyade teknik titizlik ve doğrulama gerekir.
Görevleri tamamlarken, büyük özellikleri hayata geçirirken veya merge etmeden önce çalışmanın gereksinimleri karşıladığını doğrulamak için kullanın.
Yeni bir feature üzerinde çalışmaya başlarken veya implementasyon planını yürütmeden önce kullanın - native araçlar veya git worktree fallback aracılığıyla izole edilmiş bir workspace sağlar.
Herhangi bir konuşma başlatırken kullanın - skill'lerin nasıl bulunacağını ve kullanılacağını belirler, clarification soruları da dahil olmak üzere HERHANGİ bir yanıt vermeden önce skill invocation gerektirir.