# s-gitkit: git-хостинг абстракция (GitHub/GitLab read-layer)

## Структура

gitkit/ — основной пакет
├── __init__.py — public API (GitProvider, GitRepoRef, GitTreeEntry, GitHubProvider, GitLabProvider, GitProviderFactory)
├── types.py — Protocol GitProvider и data-классы GitRepoRef, GitTreeEntry
├── errors.py — GitProviderError, UnsupportedGitHostError
├── github_provider.py — GitHubProvider (github.com, GitHub Enterprise)
├── gitlab_provider.py — GitLabProvider (gitlab.com, self-hosted)
└── factory.py — GitProviderFactory + parse_repo_ref, detect_provider

tests/ — 25 тестов
├── test_factory.py — парсинг URL, выбор провайдера
└── test_providers.py — GitHub и GitLab провайдеры (мокированные HTTP)

Документация:
- README.md — установка, quick start, примеры self-hosted
- CHANGELOG.md — история версий
- AGENTS.md — архитектура, разработка
- LICENSE — MIT
- pyproject.toml — конфиг проекта
- .gitlab-ci.yml — CI/CD
- .gitignore — исключения Git

## Ключевые характеристики

✓ Никаких зависимостей от skills_hub_backend — полностью самостоятельный
✓ Легковесные зависимости: только httpx, stamina (и stdlib)
✓ Protocol-based design — легко добавлять новых провайдеров (Gitea, Forgejo и т.д.)
✓ Встроенная retry-политика (tenacity, 3 попытки, exponential backoff)
✓ Поддержка всех форм git URL (https, scp-like)
✓ Self-hosted GitLab + GitHub Enterprise готовы к работе
✓ 100% асинхронный код (async/await)
✓ Fully type-hinted (py311+)

## Проверки выполнены

✓ Import OK: python -c 'import gitkit; print(gitkit.__version__)'
✓ 0 импортов skills_hub_backend
✓ 0 утечек личной информации (_storage, C:, @gmail, Slug, навык)
✓ 25 тестов прошли успешно
✓ Структура соответствует эталону librarykit
