Як стати постачальником

← Як стати постачальником

Ashterix

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. Причину ви побачите в кабінеті.