Become a provider

← Become a provider

Ashterix

feat(ai): AI catalog "ŠŸŃ€Š¾ŠŗŠ°Ń‡Š°Š¹ свій ШІ" with site and provider items, MariaDB via Doctrine

en/ai/providers.md new file +114 āˆ’0

1 + # Become a provider
2 +
3 + The "Level up your AI" catalog collects skills and rules from public GitHub repositories. Your files stay in your repository. The catalog reads it after every push and shows the description of your items. The files for installation are built by the site itself, for the agent and the install location, with SHA-256 checksums.
4 +
5 + ## Requirements
6 +
7 + * a public GitHub repository;
8 + * an open permissive license for the repository: `MIT`, `Apache-2.0`, `BSD-2-Clause`, `BSD-3-Clause`, `ISC`, `0BSD`, `MIT-0`, `Unlicense` or `CC0-1.0`. Copyleft licenses (GPL, AGPL) are not accepted. GitHub detects the license from the `LICENSE` file;
9 + * items live in the `ufo-tech.ai/` folder;
10 + * no secrets, tokens, internal URLs or personal data in any file.
11 +
12 + ## How to publish
13 +
14 + 1. **Build the item** in `ufo-tech.ai/` of your repository. The [Skill author for the UFO Tech catalog](/ai/skill/ufo-tech/skill-author) skill does it for you: it knows every requirement on this page.
15 + 2. **Sign in** on the site with GitHub.
16 + 3. **Install the catalog's GitHub App** on the repositories you want to publish. The app gets read-only access to their contents and tells the catalog about every push.
17 + 4. **Push** to the default branch. The catalog reads the repository right away. Items appear as soon as they pass the checks, and skipped items are listed with the reason in your account.
18 +
19 + ## Layout
20 +
21 + The catalog reads only the `ufo-tech.ai/` folder. Any nesting is allowed inside it: the scanner stops at the first folder that contains `manifest.yaml`, and that folder is one item.
22 +
23 + ```
24 + ufo-tech.ai/
25 + ā”œā”€ā”€ skills/my-skill/
26 + │ ā”œā”€ā”€ manifest.yaml
27 + │ ā”œā”€ā”€ README.en.md # required
28 + │ ā”œā”€ā”€ README.uk.md # optional, one file per language
29 + │ ā”œā”€ā”€ shared/ # common for all agents (optional)
30 + │ ā”œā”€ā”€ claude/SKILL.md
31 + │ └── codex/SKILL.md
32 + └── rules/my-rule/
33 + ā”œā”€ā”€ manifest.yaml
34 + ā”œā”€ā”€ README.en.md
35 + └── universal/my-rule.md # the rule itself, one file for every agent
36 + ```
37 +
38 + * **Variants** are folders named after agents: `claude` (Claude Code), `codex` (Codex). A rule's `universal` is installed for every agent, a skill's `universal` is only read by link.
39 + * **`shared/`** holds files common to all variants. They are merged into each variant at install time, so do not copy them.
40 + * **Required files:** a valid `manifest.yaml`, at least one variant folder, `SKILL.md` in every skill variant (at least one `.md` for a rule) and `README.en.md`. An item missing any of them is skipped, and the other items of the repository are still published.
41 +
42 + ## manifest.yaml
43 +
44 + ```yaml
45 + version: 1.0 # manifest format version
46 + name: vendor/my-skill # vendor/name, lowercase kebab-case Latin; never changes after publishing
47 + type: skill # skill | rule
48 + title:
49 + en: English title # English is required
50 + uk: ŠŠ°Š·Š²Š° ŃƒŠŗŃ€Š°Ń—Š½ŃŃŒŠŗŠ¾ŃŽ # other languages are optional
51 + summary:
52 + en: One or two sentences — what it does and when it helps.
53 + uk: ŠžŠ“Š½Šµ-Гва Ń€ŠµŃ‡ŠµŠ½Š½Ń — що Ń€Š¾Š±ŠøŃ‚ŃŒ і коли корисно.
54 + authors: # like in composer.json
55 + - name: some name
56 + email: you@example.com # optional; never shown
57 + support: # like in 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] # optional; can only narrow the platforms detected from the scripts
62 + ```
63 +
64 + If there is no translation into the page language, the catalog shows the item in English with a note.
65 +
66 + ## Vendor and authors
67 +
68 + * **A vendor** belongs to the GitHub account that first published an item with it. Other maintainers, for example colleagues from your organization, are added by an existing maintainer in the account. An item with a vendor you do not maintain is not accepted.
69 + * **Authors** are the person who added the item and the co-authors they listed in the account. The name and the avatar come from GitHub. A co-author gets a confirmation request, plus an invitation email if they have not visited the site yet.
70 + * **Authors from the manifest** are shown on the item page too. An author becomes verified, with a link, only when the `email` in the manifest matches their account and they have confirmed the authorship in their own account. Otherwise only the name is shown.
71 +
72 + ## Versions
73 +
74 + The manifest has no version field. The catalog reads the default branch of the repository and semver tags:
75 +
76 + * a repository tag `v1.2.3` gives version `1.2.3` to every item whose files changed since its previous version; unchanged items keep theirs;
77 + * an item tag `<name>@1.2.3`, e.g. `my-skill@1.2.0`, versions a single item the same way;
78 + * a change in the default branch without a tag becomes version `YYYY.MM.DD.<hash>`: the date and the short commit hash. The list shows only the latest such version, and only while no tag came after it;
79 + * pre-releases (`1.3.0-beta.1`) are listed but never installed by default;
80 + * the number of a deleted tag stays taken: it is shown struck through, and a new tag with the same number is ignored with an explanation in your account.
81 +
82 + By default the newest tagged version is installed, or the newest generated one when there are no tags. Users can pick any available version on the item page or name it to their agent.
83 +
84 + ## Platforms and placeholders
85 +
86 + * **Platforms** are detected from the scripts of the item: only `.sh` → macOS and Linux, only `.ps1` → Windows, both or none → every platform. The `platforms` field can only narrow that list. The catalog filters items by platform.
87 + * **Never write the skill name or the install folder yourself.** Only the site knows them, at download time. Use placeholders in text files, and the site fills them in for the agent and the install location:
88 +
89 + | Placeholder | Value |
90 + |---|---|
91 + | `{{ufo.skill_name}}` | the skill folder name in the agent, including the vendor |
92 + | `{{ufo.skill_dir}}` | the install folder for the chosen agent and location |
93 + | `{{ufo.agent}}` | the agent: `claude`, `codex`, … |
94 + | `{{ufo.scope}}` | `project` or `global` |
95 +
96 + Write `name: {{ufo.skill_name}}` in `SKILL.md`. An item README may use only `{{ufo.skill_name}}`. An unknown `{{ufo.*}}` placeholder makes the item invalid. The full specification is in [`reference.md`](https://github.com/UFO-Tech/ai-skills/blob/main/ufo-tech.ai/skills/skill-author/shared/reference.md) of the `UFO-Tech/ai-skills` repository.
97 +
98 + ## Checks and your account
99 +
100 + Every time it reads the repository, the catalog checks:
101 +
102 + * the repository license;
103 + * the manifest and the required files;
104 + * the placeholders;
105 + * whether any file looks like it contains secrets;
106 + * the item size.
107 +
108 + An item that fails a check is not published, and the reason is shown in your account. The account also shows the status of the last update of each repository.
109 +
110 + ## Ratings, complaints, moderation
111 +
112 + * Visitors signed in with GitHub like or dislike items. Maintainers of a vendor cannot rate its items.
113 + * Signed-in visitors can report an item. A reported item stays in the catalog marked as under review and is checked by a moderator. An item reported as malicious is hidden until the review.
114 + * A moderator can hide an item, hide all items of a vendor or block a vendor. You will see the reason in your account.