feat(ai): AI catalog "Прокачай свій ШІ" with site and provider items, MariaDB via Doctrine
uk/ai/providers.md
новий файл +114
−0
1
+
# Як стати постачальником
2
+
3
+
Каталог «Прокачай свій ШІ» збирає скіли й правила з публічних репозиторіїв на GitHub. Ваші файли лишаються у вашому репозиторії. Каталог читає його після кожного push, показує опис позицій, а файли для встановлення збирає сам: під агента й місце встановлення, з контрольними сумами SHA-256.
4
+
5
+
## Вимоги
6
+
7
+
* публічний репозиторій на GitHub;
8
+
* відкрита пермісивна ліцензія репозиторію: `MIT`, `Apache-2.0`, `BSD-2-Clause`, `BSD-3-Clause`, `ISC`, `0BSD`, `MIT-0`, `Unlicense` або `CC0-1.0`. Копілефт-ліцензії (GPL, AGPL) не приймаються. Ліцензію визначає GitHub за файлом `LICENSE`;
9
+
* позиції лежать у теці `ufo-tech.ai/`;
10
+
* у файлах немає секретів, токенів, внутрішніх адрес чи персональних даних.
11
+
12
+
## Як опублікувати
13
+
14
+
1. **Зберіть позицію** в `ufo-tech.ai/` свого репозиторію. Це зробить за вас скіл [Автор скілів для каталогу UFO Tech](/ai/skill/ufo-tech/skill-author): він знає всі вимоги цієї сторінки.
15
+
2. **Увійдіть** на сайт через GitHub.
16
+
3. **Встановіть GitHub App каталогу** на репозиторії, які хочете опублікувати. Застосунок отримує доступ до їхнього вмісту лише на читання і повідомляє каталог про кожен push.
17
+
4. **Зробіть push** в основну гілку. Каталог прочитає репозиторій одразу. Позиції з'являються, щойно проходять перевірки, а пропущені позиції разом із причиною видно у вашому кабінеті.
18
+
19
+
## Структура
20
+
21
+
Каталог читає лише теку `ufo-tech.ai/`. Вкладеність усередині може бути будь-якою: сканер зупиняється на першій теці, де є `manifest.yaml`, і ця тека — одна позиція.
22
+
23
+
```
24
+
ufo-tech.ai/
25
+
├── skills/my-skill/
26
+
│ ├── manifest.yaml
27
+
│ ├── README.en.md # обов'язковий
28
+
│ ├── README.uk.md # за бажанням, по файлу на кожну мову
29
+
│ ├── shared/ # спільне для всіх агентів (за бажанням)
30
+
│ ├── claude/SKILL.md
31
+
│ └── codex/SKILL.md
32
+
└── rules/my-rule/
33
+
├── manifest.yaml
34
+
├── README.en.md
35
+
└── universal/my-rule.md # саме правило, один файл для всіх агентів
36
+
```
37
+
38
+
* **Варіанти** — теки з назвами агентів: `claude` (Claude Code), `codex` (Codex). `universal` у правила встановлюється для всіх агентів, а в скіла — лише читається за посиланням.
39
+
* **`shared/`** — файли, спільні для всіх варіантів. Під час встановлення вони додаються до кожного варіанта, тож копіювати їх не треба.
40
+
* **Обов'язкові файли:** валідний `manifest.yaml`, хоча б одна тека варіанта, `SKILL.md` у кожному варіанті скіла (у правила — хоча б один `.md`) і `README.en.md`. Позицію без чогось із цього каталог пропускає, а решта позицій репозиторію публікується.
41
+
42
+
## manifest.yaml
43
+
44
+
```yaml
45
+
version: 1.0 # версія формату маніфесту
46
+
name: vendor/my-skill # vendor/назва, латиниця в kebab-case; після публікації не змінюється
47
+
type: skill # skill | rule
48
+
title:
49
+
en: English title # англійська обов'язкова
50
+
uk: Назва українською # інші мови — за бажанням
51
+
summary:
52
+
en: One or two sentences — what it does and when it helps.
53
+
uk: Одне-два речення — що робить і коли корисно.
54
+
authors: # як у composer.json
55
+
- name: some name
56
+
email: you@example.com # необов'язково; ніде не показується
57
+
support: # як у composer.json
58
+
source: https://github.com/vendor/ai-skills
59
+
issues: https://github.com/vendor/ai-skills/issues
60
+
tags: [php, symfony]
61
+
platforms: [macos, linux] # необов'язково; лише звужує платформи, визначені за скриптами
62
+
```
63
+
64
+
Якщо перекладу мовою сторінки немає, каталог показує позицію англійською з позначкою.
65
+
66
+
## Vendor і автори
67
+
68
+
* **Vendor** закріплюється за GitHub-акаунтом, який першим опублікував позицію з ним. Інших мейнтейнерів, наприклад колег з організації, додає наявний мейнтейнер у кабінеті. Позицію з чужим vendor не буде прийнято.
69
+
* **Автори** — той, хто додав позицію, і співавтори, яких він вказав у кабінеті. Ім'я та аватар беруться з GitHub. Співавтор отримує запит на підтвердження, а якщо ще не заходив на сайт, то й лист із запрошенням.
70
+
* **Автори з маніфесту** теж показуються на сторінці позиції. Верифікованим із посиланням автор стає лише тоді, коли `email` з маніфесту збігається з його акаунтом і він сам підтвердив авторство у своєму кабінеті. Інакше показується лише ім'я.
71
+
72
+
## Версії
73
+
74
+
Поля версії в маніфесті немає. Каталог читає основну гілку репозиторію і теги semver:
75
+
76
+
* тег репозиторію `v1.2.3` дає версію `1.2.3` кожній позиції, файли якої змінилися з її попередньої версії; позиції без змін зберігають свою;
77
+
* тег позиції `<name>@1.2.3`, наприклад `my-skill@1.2.0`, так само версіонує одну позицію;
78
+
* зміна в основній гілці без тегу стає версією `YYYY.MM.DD.<hash>`: дата й короткий хеш коміту. У переліку показується лише остання така версія, і лише поки після неї немає тегу;
79
+
* pre-release (`1.3.0-beta.1`) є в переліку, але за замовчуванням не встановлюється;
80
+
* номер видаленого тегу лишається зайнятим: він показується перекресленим, а повторний тег з тим самим номером ігнорується з поясненням у кабінеті.
81
+
82
+
За замовчуванням встановлюється остання версія з тегом, а якщо тегів немає — остання згенерована. Користувач може обрати будь-яку доступну версію на сторінці позиції або назвати її агенту.
83
+
84
+
## Платформи й заповнювачі
85
+
86
+
* **Платформи** визначаються за скриптами позиції: лише `.sh` → macOS і Linux, лише `.ps1` → Windows, обидва або жодного → усі платформи. Поле `platforms` може лише звузити цей перелік. Каталог фільтрує позиції за платформами.
87
+
* **Назву скіла й теку встановлення не пишіть самі.** Їх знає лише сайт у момент завантаження. У текстових файлах використовуйте заповнювачі, і сайт підставить значення під агента й місце встановлення:
88
+
89
+
| Заповнювач | Значення |
90
+
|---|---|
91
+
| `{{ufo.skill_name}}` | назва теки скіла в агенті, з vendor |
92
+
| `{{ufo.skill_dir}}` | тека встановлення для обраного агента й місця |
93
+
| `{{ufo.agent}}` | агент: `claude`, `codex`, … |
94
+
| `{{ufo.scope}}` | `project` або `global` |
95
+
96
+
У `SKILL.md` пишіть `name: {{ufo.skill_name}}`. У README позиції можна використовувати лише `{{ufo.skill_name}}`. Невідомий заповнювач `{{ufo.*}}` робить позицію невалідною. Повна специфікація — у [`reference.md`](https://github.com/UFO-Tech/ai-skills/blob/main/ufo-tech.ai/skills/skill-author/shared/reference.md) репозиторію `UFO-Tech/ai-skills`.
97
+
98
+
## Перевірки й кабінет
99
+
100
+
Під час кожного читання репозиторію каталог перевіряє:
101
+
102
+
* ліцензію репозиторію;
103
+
* маніфест і обов'язкові файли;
104
+
* заповнювачі;
105
+
* чи немає у файлах схожого на секрети;
106
+
* розмір позиції.
107
+
108
+
Позиція, що не пройшла перевірку, не публікується, а причину видно в кабінеті. Там же видно статус останнього оновлення кожного репозиторію.
109
+
110
+
## Оцінки, скарги, модерація
111
+
112
+
* Відвідувачі, що увійшли через GitHub, ставлять позиціям лайк чи дизлайк. Мейнтейнери vendor не оцінюють власні позиції.
113
+
* Відвідувачі, що увійшли через GitHub, можуть поскаржитися на позицію. Позиція зі скаргою лишається в каталозі з позначкою «на перевірці», її переглядає модератор. Позицію, на яку поскаржилися як на шкідливу, приховують до завершення перевірки.
114
+
* Модератор може приховати позицію, усі позиції vendor або заблокувати vendor. Причину ви побачите в кабінеті.