← Back to list

interface-embedding
by JamesPrial
WIP - collection of various Claude stuff i make/use/have_Claude_hallucinate
⭐ 2🍴 0📅 Jan 23, 2026
SKILL.md
name: interface-embedding description: Compose interfaces through embedding for flexible contracts
Interface Embedding Patterns
Go interfaces can embed other interfaces to create larger contracts. Use this for composition, not inheritance.
Basic Embedding
CORRECT - Compose small interfaces
type Reader interface {
Read(p []byte) (n int, err error)
}
type Closer interface {
Close() error
}
type ReadCloser interface {
Reader
Closer
}
// Any type implementing both Reader and Closer satisfies ReadCloser
WRONG - Giant interface instead of composition
type FileHandler interface {
Read(p []byte) (n int, err error)
Write(p []byte) (n int, err error)
Close() error
Seek(offset int64, whence int) (int64, error)
// Kitchen sink approach
}
Practical Patterns
Progressive enhancement:
type BasicCache interface {
Get(key string) ([]byte, error)
Set(key string, val []byte) error
}
type ExpiringCache interface {
BasicCache
SetWithTTL(key string, val []byte, ttl time.Duration) error
}
func UseCache(c BasicCache) { /* Works with any cache */ }
func UseAdvanced(c ExpiringCache) { /* Needs TTL support */ }
Optional behavior detection:
type Processor interface {
Process(data []byte) error
}
type BatchProcessor interface {
Processor
ProcessBatch(items [][]byte) error
}
func Handle(p Processor, items [][]byte) error {
if bp, ok := p.(BatchProcessor); ok {
return bp.ProcessBatch(items) // Use batch if available
}
// Fallback to individual processing
for _, item := range items {
if err := p.Process(item); err != nil {
return err
}
}
return nil
}
Guidelines
- Embed to compose small, focused interfaces
- Keep embedded interfaces from stdlib or well-known packages
- Use type assertions to detect optional capabilities
- Avoid deep embedding hierarchies (2-3 levels max)
Score
Total Score
65/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
✓LICENSE
ライセンスが設定されている
+10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
✓最近の活動
1ヶ月以内に更新
+10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
✓タグ
1つ以上のタグが設定されている
+5
Reviews
💬
Reviews coming soon
