Back to list
resper1965

api-design

by resper1965

0🍴 0📅 Jan 21, 2026

SKILL.md


type: skill name: Api Design description: Design RESTful APIs following best practices skillSlug: api-design phases: [P, R] generated: 2026-01-20 status: filled scaffoldVersion: "2.0.0"

API Design Skill

When to Use

Use this skill when:

  • Designing CLI interfaces
  • Planning function signatures
  • Creating export formats
  • Designing data structures

CLI API Design

Command Structure

Pattern from project:

script.py [command] [options] [arguments]

Examples:

# Simple command
python indexer.py

# Command with arguments
python search.py "termo de busca"

# Command with options
python search.py "termo" --category anexo --export results.csv

# Command with flags
python search.py --list-categories

Function API Design

Pattern: Function Signatures

# Good: Clear parameters with defaults
def search(query, category=None, contract_number=None, export_csv=None):
    """Busca documentos no banco de dados."""

Argument Parsing Pattern

Use argparse for CLI:

parser = argparse.ArgumentParser(description='Busca documentos indexados')
parser.add_argument('query', nargs='?', help='Termo de busca')
parser.add_argument('--category', '-c', help='Filtrar por categoria')

Data Structure Design

Return Values

Pattern: Dictionary for complex data

return {
    "category": category,
    "contract_number": contract_number,
    "document_type": document_type,
    "document_number": document_number
}

Metadata Format

Pattern: JSON metadata

metadata = {
    "size": stat.st_size,
    "size_mb": round(stat.st_size / (1024 * 1024), 2),
    "modified": datetime.datetime.fromtimestamp(stat.st_mtime).isoformat()
}
metadata_json = json.dumps(metadata, ensure_ascii=False)

Export Format Design

CSV Export

Pattern: Consistent column names

data.append({
    "Arquivo": filename,
    "Categoria": category,
    "Tipo": doc_type,
    "Contrato": contract_number or "",
    "Trecho": fragment,
    "Caminho": filepath
})

API Versioning

Current approach: CLI-based (no versioning needed)

  • Functions can evolve
  • CLI commands stable
  • Export formats consistent

Design Principles

  1. Consistency: Similar functions have similar signatures
  2. Clarity: Parameter names are self-documenting
  3. Flexibility: Optional parameters for common use cases
  4. Error Handling: Clear error messages in Portuguese

Examples from Codebase

Good API Design

def search(query, category=None, contract_number=None, export_csv=None):
    """Busca documentos no banco de dados."""
    # Clear parameters
    # Optional filters
    # Export option

Good CLI Design

python search.py "termo" --category anexo --contract TNE_JU_COM_0002-13 --export results.csv

Checklist

  • Clear function signatures
  • Consistent naming
  • Optional parameters have defaults
  • Error handling documented
  • Examples provided
  • Export formats consistent

Score

Total Score

50/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon