Back to list
JamesPrial

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