From 920daf01cdde77497183366904dd7b94200d230c Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Tue, 9 Jun 2026 23:36:16 +0200 Subject: [PATCH 1/9] feat: add Ecosystem section for community-maintained skills MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduces a lightweight registry (`community/index.json`) for third-party skills that are maintained by ecosystem partners rather than DFINITY. The site renders these in a clearly separated Ecosystem section below official skills — visually distinct (dashed divider, muted title color, community badge, GitHub-only link) so there is no ambiguity about authorship. Adds Liquidium SDK Integration as the first entry. --- CONTRIBUTING.md | 32 ++++++++++++++++++++++++++++++++ README.md | 10 ++++++++++ community/index.json | 11 +++++++++++ public/styles.css | 35 +++++++++++++++++++++++++++++++++++ src/pages/index.astro | 32 ++++++++++++++++++++++++++++++++ 5 files changed, 120 insertions(+) create mode 100644 community/index.json diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 35b5ad0..ce7097b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -262,3 +262,35 @@ Use an existing category when possible. The validator warns on unknown categorie Current categories: **Auth**, **Core**, **DeFi**, **Frontend**, **Governance**, **Infrastructure**, **Integration**, **Motoko**, **Security** To add a new category: update the description string in `skills/skill.schema.json`, the `KNOWN_CATEGORIES` array in `scripts/check-project.js`, and the `CATEGORY_ORDER` array in `src/lib/skills.ts`. + +--- + +## Adding a Community Skill + +Community skills are maintained by third parties and linked from `skills.internetcomputer.org` under the **Ecosystem** section. DFINITY curates the list but does not own or maintain the skill content. + +### Requirements + +1. The skill must exist at a public GitHub URL and follow the [Agent Skills spec](https://agentskills.io/specification) — a valid `SKILL.md` with `name` and `description` frontmatter. +2. The maintainer must be reachable: a GitHub org or a contact listed in the repository. +3. The linked file must be stable. If the URL goes dead and is not fixed within a reasonable time, the entry will be removed. + +### How to add + +Open a PR that adds one entry to [`community/index.json`](community/index.json): + +```json +{ + "name": "your-skill-name", + "title": "Your Skill Title", + "description": "One or two sentences: what it does and when an agent should load it.", + "category": "DeFi", + "maintainer": "Your Org Name", + "github": "https://github.com/your-org/your-repo/tree/main/skills/your-skill", + "added": "YYYY-MM-DD" +} +``` + +Use one of the [known categories](#categories). The `description` should match or be condensed from the `description` field in your `SKILL.md`. + +**No eval results required.** Community skill PRs are lightweight: one JSON entry, a reachable maintainer, and a working link to a valid `SKILL.md`. diff --git a/README.md b/README.md index 0a6467b..8e79adc 100644 --- a/README.md +++ b/README.md @@ -114,6 +114,16 @@ node scripts/evaluate-skills.js --triggers-only # Trigger evals Results are saved to `evaluations/results/` (gitignored). See [CONTRIBUTING.md](CONTRIBUTING.md#4-add-evaluation-cases) for how to write eval cases and prompts. +## Community Skills + +Third-party skills for the ICP ecosystem, maintained by their respective authors. These appear in the **Ecosystem** section on the skills site, clearly separated from DFINITY-maintained skills. + +| Skill | Maintainer | Description | +|-------|------------|-------------| +| [Liquidium SDK Integration](https://github.com/Liquidium-Inc/liquidium-sdk/tree/main/skills/liquidium-sdk-integration) | Liquidium Inc | Authless instant-loan flow, market data, and profile-based lending via `@liquidium/client` on ICP. | + +Community skills are not maintained by DFINITY. To propose a community skill, see [CONTRIBUTING.md](CONTRIBUTING.md#adding-a-community-skill). + ## Contributing See [CONTRIBUTING.md](CONTRIBUTING.md) for how to add or update skills. diff --git a/community/index.json b/community/index.json new file mode 100644 index 0000000..7b93df7 --- /dev/null +++ b/community/index.json @@ -0,0 +1,11 @@ +[ + { + "name": "liquidium-sdk-integration", + "title": "Liquidium SDK Integration", + "description": "Authless instant-loan flow, market data, and profile-based lending via @liquidium/client on the Internet Computer. Covers LiquidiumClient setup, instantLoans, accounts, lending, positions, and quote modules.", + "category": "DeFi", + "maintainer": "Liquidium Inc", + "github": "https://github.com/Liquidium-Inc/liquidium-sdk/tree/main/skills/liquidium-sdk-integration", + "added": "2026-06-09" + } +] diff --git a/public/styles.css b/public/styles.css index a2d9f2e..80d2a75 100644 --- a/public/styles.css +++ b/public/styles.css @@ -386,3 +386,38 @@ h4 { font-size: 1.05rem; } /* ---------- 404 ---------- */ main h1 { font-family: var(--serif); } + +/* ---------- Community / Ecosystem section ---------- */ +.community-divider { + display: flex; align-items: center; gap: 1rem; + margin: 4rem 0 0; + color: var(--muted); font-size: 0.72rem; font-family: var(--mono); + text-transform: uppercase; letter-spacing: 0.16em; +} +.community-divider::before, +.community-divider::after { + content: ''; flex: 1; border-top: 1px dashed var(--rule); +} + +.community-notice { + font-size: 0.9rem; color: var(--muted); font-style: italic; + margin: 0 0 0.75rem; max-width: 52rem; +} + +.community-badge { + display: inline-block; margin-left: 0.5rem; + padding: 0.1em 0.45em; + background: var(--bg-sunk); border: 1px solid var(--rule); border-radius: 9999px; + font-size: 0.65rem; font-family: var(--mono); + text-transform: uppercase; letter-spacing: 0.08em; + color: var(--muted); vertical-align: middle; +} + +.skill-maintainer { + color: var(--muted); font-size: 0.82rem; font-style: italic; margin: 0.2rem 0 0; +} + +.community-skill-row .skill-title a { + color: var(--fg-secondary); +} +.community-skill-row .skill-title a:hover { color: var(--accent); } diff --git a/src/pages/index.astro b/src/pages/index.astro index ca57f90..bf4c314 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -2,6 +2,7 @@ import BaseLayout from '../layouts/BaseLayout.astro'; import { SITE, absUrl } from '../lib/site'; import { getAllSkills, getSkillsByCategory, skillUrl, skillMarkdownUrl } from '../lib/skills'; +import communitySkills from '../../community/index.json'; const all = await getAllSkills(); const grouped = await getSkillsByCategory(); @@ -96,6 +97,37 @@ const collectionLd = { ))} + + {communitySkills.length > 0 && ( + + +
+
+

Ecosystem Skills

+ {communitySkills.length} skill{communitySkills.length === 1 ? '' : 's'} +
+

+ Community-maintained skills for the ICP ecosystem. These skills are published and kept up to date by their respective authors — not by DFINITY. Hosted on GitHub; no discovery endpoint provided. +

+
    + {communitySkills.map((s) => ( +
  • +
    + {s.title} + community +
    +
    +

    {s.description}

    +

    by {s.maintainer}

    +
    + +
  • + ))} +
+
+ )} + +