diff --git a/.claude/context/brand-guidelines.md b/.claude/context/brand-guidelines.md index 9d83d470..74c3defb 100644 --- a/.claude/context/brand-guidelines.md +++ b/.claude/context/brand-guidelines.md @@ -16,7 +16,7 @@ Skills are knowledge, not packages, and knowledge has an author. A skill is wort ### Two loops -- **Loop 1 — Activation:** anonymous discovery → install. Land, copy, run. No friction. +- **Loop 1 — Activation:** anonymous discovery → run. Land, copy, run. No friction. Install is the opt-in second step. - **Loop 2 — Retention:** sign in with GitHub, watch your stack, get a weekly digest of what changed. ## Positioning @@ -25,7 +25,7 @@ Skills are knowledge, not packages, and knowledge has an author. A skill is wort - A curated registry of AI agent skills written by real people in their own GitHub repos - A provenance layer: every skill links back to the repo and the maintainer who wrote it - Organization-owned skills stay in the registry and stay searchable. The homepage leads with skills by identifiable people because provenance is the point, but org skills are ranked lower, not excluded -- One install command, every agent: `npx skilld add gh:owner/repo` +- One command, every agent: `npx skilld@beta run skilld:owner/repo/skill` to use a skill now, `npx skilld@beta install skilld:owner/repo/skill` to keep it - A watch-for-changes layer: sign in with GitHub, get a digest when watched repos change ### What we are not @@ -59,16 +59,16 @@ The pitch: Context7 gives you docs. skills.sh gives you a leaderboard. Skilld gi | Term | Definition | Usage notes | |------|-----------|-------------| | **skill** | A SKILL.md file that gives an AI agent domain knowledge | Lowercase always. Not "plugin", "extension", or "module" | -| **package skill** | A skill tied to a specific npm package, bootstrapped with `skilld author` and owned, edited, and published by its maintainer in their own repo | Never platform-authored; the platform publishes no skills (VISION anti-scope 1) | +| **package skill** | A skill tied to a specific npm package, drafted with the skilld-maintained `generate-package-skill` Skill and owned, edited, and published by its maintainer in their own repo | Never platform-authored; the platform publishes no skills (VISION anti-scope 1) | | **guide skill** | A curation tag on skilld.dev for skills not tied to a package | Distributed as git skills, tagged for filtering in browse views | | **collection** | A curated bundle of skills assembled by a collection author | Not "preset", "pack", "bundle", or "kit" in UI (fine in marketing prose) | | **author** / **curator** | A developer who maintains one or more collections on skilld. Identity is their GitHub login. | Either word is fine; "curator" reads warmer in editorial copy, "author" in product UI | | **registry** | skilld.dev, the central hub for curated agent skills | Also hosts the MCP server | -| **install** | Adding a skill or collection to your agent's configuration | Not "download". `skilld add` is the canonical CLI verb | +| **run** | Handing the agent a skill for the current session. `skilld run` prints the skill and writes no file | The default verb. Every skill surface leads with the run command. Not "try", "preview", "use once", or "ephemeral" | +| **install** | Adding a skill or collection to your agent's configuration as local files | Not "download", not "add". `skilld install` is the opt-in second step, for a skill worth keeping in every session | | **agent** | The coding tool that reads skills: Claude Code, Codex, Cursor, Gemini CLI, and the rest of the CLI's targets | Not "client", "tool", "editor", or "IDE". Say "your agent" in UI; name a specific agent only inside the setup picker | | **project install** | Installing into the current repository, the default | UI label: "Project". Not "local" | | **global install** | Installing into the agent's home directory, so every project sees the skill | UI label: "Global". Not "system-wide" | -| **use once** | Pasting a prompt that points the agent at the published SKILL.md, so it reads and follows the skill without writing files | UI label: "Use once". Not "try", "preview", or "ephemeral". Only offered where a public markdown URL exists | | **watch** | Subscribing to a repo or collection so you receive digest emails when it changes | The Loop 2 verb. Not "follow", not "star", not "subscribe" | | **digest** | Periodic email summarizing changes to your watched repos | Weekly default; daily and off are options | | **weekly** | The one email everyone gets: skills you liked that changed, plus what trended | Lowercase, "the weekly". Not "newsletter", "roundup", or "trending digest". Opt-out, on by default. Sits beside **digest**, which is the separate watched-repo email | @@ -76,7 +76,7 @@ The pitch: Context7 gives you docs. skills.sh gives you a leaderboard. Skilld gi ### Feature naming - Name features descriptively, not cleverly. "Stack selector" not "StackMatch" - No trademark-style capitalization for features (not "Smart Collections") -- CLI commands use lowercase: `skilld add`, `skilld update`, `skilld author` +- CLI commands use lowercase: `skilld run`, `skilld install`, `skilld update` ## Voice & Tone diff --git a/GLOSSARY.md b/GLOSSARY.md new file mode 100644 index 00000000..1c7b09fc --- /dev/null +++ b/GLOSSARY.md @@ -0,0 +1,159 @@ +# Glossary + +Canonical vocabulary for skilld.dev. Every user-visible string, public API name, doc heading, and route segment uses these terms and no synonyms. + +Shared terms match the skilld CLI glossary (`skilld-dev/skilld/GLOSSARY.md`). That file wins for CLI commands, protocol types, and source status values. Voice and tone live in `.claude/context/brand-guidelines.md`. + +## Map + +| Term | Owner | Relation | Customer word | +| --- | --- | --- | --- | +| Skill | GitHub Repository, `layers/registry` | Repository 1—N Skill | "skill" | +| Agent | the user's tool | Agent 1—N Agent target | "your agent" | +| Repository | GitHub | Repository 1—N Skill | "repository" | +| Artifact | skilld.dev API | Skill commit 1—1 Artifact | not shown | +| source status | lockfile, skilld.dev API | Artifact 1—1 source status | "Verified", "Unverified", "Local" | +| run | skilld CLI | Skill 1—1 run command | "run" | +| install | skilld CLI | Skill 1—1 install command | "install" | +| lockfile | skilld CLI | project 1—1 lockfile | "lockfile" | +| curator | `layers/collections`, `/@login` | curator 1—N collection | "curator" | +| collection | `layers/collections`, `/@login/slug` | collection N—N Skill | "collection" | +| watch | `layers/identity` | account N—N Repository or collection | "watch" | +| digest | `layers/identity` email | account 1—1 digest schedule | "digest" | +| trending | `/skills/trending`, ADR-0004 | Repository 1—N social mention | "trending" | +| registry | skilld.dev | one | "skilld" | +| provenance | Skill detail, cards | Skill 1—1 author and source link | "written by", "source" | + +Collisions + +- "Verified" names a source status only. Never a safety claim, never a sync time. +- "curator" and "author" both surface on profile pages. A curator assembles collections. An author writes a Skill. + +## Terms + +### Skill + +**Is:** a directory with a `SKILL.md` that follows the Agent Skills specification, written by a maintainer in their own Repository. + +**Never:** prompt, plugin, extension, module, guide. + +**Casing:** `Skill` in new product prose. Existing UI uses lowercase `skill`; see Open questions. + +### Agent + +**Is:** the coding tool that reads Skills: Claude Code, Codex, Cursor, Gemini CLI, and the rest of the CLI's targets. + +**Never:** client, tool, editor, IDE. + +**Casing:** `Agent` in prose, "your agent" in UI. + +### Repository + +**Is:** a GitHub repository that contains one or more Skills. The source of truth. + +**Never:** package host, registry entry. `repo` stays in identifiers and existing UI labels. + +### Artifact + +**Is:** immutable Skill bytes resolved from one exact source commit, delivered by the skilld.dev API to the skilld CLI. + +**Never:** hosted Skill, registry package, upload. + +### source status + +**Is:** the recorded provenance state for an installed Skill: `verified`, `local`, or `unverified`. + +**Use for:** the receipts panel and lockfile values. "Verified" means the Artifact attestation checked out. + +**Never:** safety state, trust score, "verified safe", a sync timestamp. + +### run + +**Is:** `skilld run`. The Agent reads the Skill for the current session and nothing lands on disk. The default command on every Skill surface. + +**Never:** try, preview, use once, ephemeral. + +### install + +**Is:** `skilld install`. Skill files land in the project and the lockfile records them. The opt-in second step. + +**Never:** add, download. + +### lockfile + +**Is:** the file the skilld CLI writes to record installed Skills, their commits, and source status. + +**Never:** manifest, registry file. + +### curator + +**Is:** a developer who assembles one or more collections. Identity is their GitHub login at `/@login`. + +**Use for:** collection pages, the `/community` directory, "Browse curators". + +**Never:** creator, publisher (for a person), "the Community" as a proper noun. + +### collection + +**Is:** a curated set of Skills assembled by a curator, with a reason per Skill, at `/@login/slug`. + +**Never:** preset, pack, bundle, kit, stack (in UI). + +### watch + +**Is:** subscribing to a Repository or collection so the digest reports its changes. The Loop 2 verb. + +**Never:** follow, star, subscribe, sync. + +### digest + +**Is:** the email that summarises changes to watched Repositories. Weekly by default; daily and off are options. + +**Never:** newsletter, notification, alert. "the weekly" is the separate opt-out email. + +### trending + +**Is:** Skills ranked by devs talking about them on X and Bluesky (ADR-0004). Never by installs. + +**Never:** popular, hot, top, leaderboard. + +### registry + +**Is:** skilld.dev, the curated index of Skills and the discovery MCP server. + +**Never:** marketplace, store, hub, catalog (in UI). + +### provenance + +**Is:** who wrote a Skill and the exact `SKILL.md` in their Repository. The quality signal. + +**Use for:** "written by {user}" on user pages, "published by {org}" on organization pages, source links. + +**Never:** trust score, verification tier, "curated by" for an author. + +## Banned + +| Never | Use instead | Why | +| --- | --- | --- | +| follow | watch | One Loop 2 verb | +| sync (user-facing) | import (stars), "Checked GitHub {ago}" (freshness) | Internal jargon; say what happened | +| use once, try, preview | run | One name for the transient path | +| add (CLI verb) | run or install | v2 grammar | +| popular, install count | starred, stars | Installs never rank or trust | +| verified safe, secure, scanned | name the exact check | An attestation cannot guarantee safety | +| people (audience) | devs | Brand guidelines | +| Community (proper noun) | curators, `/community` route | Unglossed; the route stays | +| named, naming (user copy) | talked about, mentioned | Internal word for the social route | +| AI-powered | (cut) | skilld is not an AI product | + +## Open questions + +Naming calls this file does not settle. Resolve one, fold the answer in, delete the entry. + +1. **`Skill` or `skill` in site UI?** + The CLI glossary and new v3 copy use `Skill`. Most existing site UI, brand-guidelines.md, and meta descriptions use lowercase `skill`. + - Recase the site to `Skill`, one sweep, touches hundreds of strings. + - Keep lowercase on the site, record the split as deliberate. +2. **`repo` or `repository` in site UI?** + The CLI glossary bans `repo`. The site uses `repo` in labels, props, and routes (`/gh/owner/repo`). + - Ban in new prose only, keep identifiers and routes. diff --git a/app/components/community/_CommunityCreator.vue b/app/components/community/_CommunityCreator.vue index 49eec4f8..d785c341 100644 --- a/app/components/community/_CommunityCreator.vue +++ b/app/components/community/_CommunityCreator.vue @@ -119,7 +119,7 @@ function formatStars(stars: number): string { > - Most popular skill + Most starred skill collections.value.length, skillCount: () => skills.value.length, skills: () => skills.value.slice(0, 4).map(skill => skill.display_name || skill.name), -}, { alt: () => `${displayName.value} Community profile on skilld` }) +}, { alt: () => `${displayName.value} curator profile on skilld` })