diff --git a/.github/logos/favicon.svg b/.github/logos/favicon.svg
new file mode 100644
index 00000000..2ec32ee1
--- /dev/null
+++ b/.github/logos/favicon.svg
@@ -0,0 +1,5 @@
+
diff --git a/.github/logos/logo-icon.svg b/.github/logos/logo-icon.svg
new file mode 100644
index 00000000..68dd2e66
--- /dev/null
+++ b/.github/logos/logo-icon.svg
@@ -0,0 +1,4 @@
+
diff --git a/.github/logos/logo-light.svg b/.github/logos/logo-light.svg
new file mode 100644
index 00000000..f376adc7
--- /dev/null
+++ b/.github/logos/logo-light.svg
@@ -0,0 +1,13 @@
+
diff --git a/.github/logos/logo-mark-light.svg b/.github/logos/logo-mark-light.svg
new file mode 100644
index 00000000..e7b72348
--- /dev/null
+++ b/.github/logos/logo-mark-light.svg
@@ -0,0 +1,3 @@
+
diff --git a/.github/logos/logo.svg b/.github/logos/logo.svg
new file mode 100644
index 00000000..412011b5
--- /dev/null
+++ b/.github/logos/logo.svg
@@ -0,0 +1,13 @@
+
diff --git a/GLOSSARY.md b/GLOSSARY.md
index 72fffd4c..9426d843 100644
--- a/GLOSSARY.md
+++ b/GLOSSARY.md
@@ -22,6 +22,11 @@ Every public export, command, error, route, and document uses these terms.
| Source status | lockfile and protocol | published value | skilld CLI, CI | source status |
| Update relation | skilld CLI JSON v1 | published value | Agent, developer, CI | update relation |
| Agent target | skilld CLI | published configuration | Agent | Agent target |
+| registry | skilld.dev | published surface | developer, Agent | registry |
+| curated | skilld.dev | published surface | developer | curated |
+| author | GitHub | external standard | skilld.dev, developer | author |
+| provenance | lockfile and protocol | published value | skilld CLI, developer | provenance |
+| lockfile | `.skills/skilld-lock.yaml` | published file | skilld CLI, CI | lockfile |
| Identifier | Term |
| --- | --- |
@@ -232,6 +237,56 @@ The Rust type for the second is `TransientSkill`, never `SkillRun`.
**Casing:** `Outdated Skill report` in prose, `outdated` in commands.
+### registry
+
+**Is:** the curated index of Skills that skilld.dev publishes and the skilld CLI searches.
+
+**Use for:** the skilld.dev catalogue as a whole and `skilld search` results.
+
+**Never:** marketplace, store, hub, directory.
+
+**Casing:** `registry` in sentences, `skilld registry` when the owner matters.
+
+### curated
+
+**Is:** admitted to the registry by a person, with a reason that person can state.
+
+**Use for:** the registry and the Skills it lists.
+
+**Never:** approved, certified, vetted, official.
+
+**Casing:** `curated` in sentences.
+
+### author
+
+**Is:** the GitHub account or person who wrote a Skill in their own Repository.
+
+**Use for:** the credited writer of one Skill on every surface.
+
+**Never:** creator, publisher, contributor, owner in customer copy.
+
+**Casing:** `author` in sentences, `Author` in headings.
+
+### provenance
+
+**Is:** the recorded facts about where a Skill came from: Repository, commit, author, Artifact attestation, and source status.
+
+**Use for:** what `skilld verify` and the source status describe.
+
+**Never:** trust, safety, reputation, security.
+
+**Casing:** `provenance` in sentences.
+
+### lockfile
+
+**Is:** the `.skills/skilld-lock.yaml` file that records each installed Skill, its source, commit, digest, and source status.
+
+**Use for:** the file `skilld install` writes and restores.
+
+**Never:** manifest, lock, state file, config.
+
+**Casing:** `lockfile` in prose, `skilld-lock.yaml` for the file name.
+
## Banned
| Never | Use instead | Why |
diff --git a/README.md b/README.md
index ad1ee879..a25bd2ce 100644
--- a/README.md
+++ b/README.md
@@ -1,34 +1,74 @@
-
skilld
+
skilld
[](https://npmjs.com/package/skilld)
[](https://npm.chart.dev/skilld)
-[](https://github.com/skilld-dev/skilld/blob/main/LICENSE)
+[](https://github.com/skilld-dev/skilld/blob/main/LICENSE)
-Search, run, install, and keep Agent Skills current.
+> ðŠķ Curated agent skills by humans. Search, run, install, and keep them current. One command, every Agent.
-skilld v3 has two products:
+
-- The native `skilld` CLI manages Skills.
-- The JavaScript [`skilld-harness`](./packages/harness) package runs visible Skill generation and review instructions.
+
+
-The skilld CLI contains no Skill generation logic or Agent runtime.
+## Features
-## Install the skilld CLI
+- ðĪ **Every Skill has a human author.** A maintainer wrote it in their own GitHub Repository. skilld.dev lists it under their name with a link to the source file.
+- ð **Read before you run.** `skilld run` prints `SKILL.md` and installs nothing. Your Agent follows it for this session only.
+- ð **Know when the source moved.** skilld records the source commit. `skilld update --check` reports each update relation, and `skilld outdated` lists what fell behind.
+- ðŊ **One command, every Agent.** `skilld install` detects your Agent targets. Claude Code, Codex, Cursor, Gemini CLI, and the rest get the same Skill.
+- ð **Verified delivery.** skilld.dev builds an immutable Artifact from an exact commit. The CLI checks its digest and attestation before it writes a file.
+- ðĶ **Native binary, no runtime.** The npm package selects a native executable for your system. No JavaScript engine, no fallback.
+
+## What is skilld?
+
+skilld is a curated registry of agent Skills that real maintainers wrote in their own GitHub repositories, usable with one command in every Agent.
+
+A Skill is a directory with a `SKILL.md` file in the [Agent Skills](https://agentskills.io) format.
+Install-count leaderboards and generated doc dumps tell you a Skill is popular.
+skilld tells you who wrote it, links the exact file, and tracks the commit it came from, so you can read it before your Agent follows it.
+
+The `skilld` CLI searches, runs, installs, updates, verifies, and removes Skills.
+It contains no Skill generation logic and no Agent runtime.
+Skill authoring lives in visible [skilld-maintained Skills](#author-a-skill) and the optional [Harness](#harness).
+
+See how skilld compares with skills.sh and Context7: [skilld.dev/vs/skills-sh](https://skilld.dev/vs/skills-sh).
+
+## Get Started
+
+Install the CLI:
```sh
npm install --global skilld
```
-The npm package selects a native executable for the current system.
-It has no JavaScript CLI engine or JavaScript fallback.
+Find a Skill, then run it for this session:
+
+```sh
+skilld search find-skill
+skilld run skilld:skilld-dev/skills/find-skill
+```
-Ask your Agent to run the skilld-maintained Skill for the current session:
+`skilld run` prints `SKILL.md` to stdout and writes no file.
+Ask your Agent to run the command and follow the printed instructions.
+If you run it yourself, pass the output to your Agent.
+
+Install the Skill when you want it in every session:
```sh
-skilld run skilld
+skilld install skilld:skilld-dev/skills/find-skill
```
-Install it only when you want your Agent to keep it across sessions:
+An install writes files. If an Agent runs the install, it asks you first.
+
+Teach your Agent the CLI with the skilld-maintained `skilld` Skill:
```sh
skilld install skilld --global
@@ -44,75 +84,78 @@ skilld install skilld -g --agent kiro --agent zed
skilld install skilld -g --agent all
```
-## Run a Skill without installing it
+### Selectors
-`skilld run` is the default way to use a Skill.
-It prints `SKILL.md` to stdout.
-Ask your Agent to run the command and follow the printed instructions.
-If you run it yourself, pass the output to your Agent.
+`skilld:OWNER/REPOSITORY/SKILL` names one Skill in the registry.
+`skilld search` prints the selector for each result.
+`skilld-dev/skills` is the Repository; `find-skill` is the Skill directory inside it.
-```sh
-npx skilld run skilld:skilld-dev/skills/vue
-```
-
-A remote run writes no Skill files.
-It creates no lockfile entry, Agent target, project file, or Skill cache.
-The command retains no Skill files after it exits.
+### Supporting files
skilld names the supporting files a Skill carries and prints none of them.
Read one when the instructions call for it:
```sh
-npx skilld run skilld:skilld-dev/skills/vue --revision --file references/api.md
+skilld run skilld:skilld-dev/skills/find-skill --revision --file references/api.md
```
Use the revision and file-read command from the initial output.
skilld never prints executable or binary files.
A Skill that must run its own script needs an install.
-Install the Skill when you want it in every session:
-
-```sh
-skilld install skilld:skilld-dev/skills/vue
-```
-
-An install writes files. Ask the user first.
-
-## Use the skilld CLI
+## Commands
```sh
# Find a Skill
-skilld search vue
+skilld search
# Run a Skill for this session only
-skilld run skilld:skilld-dev/skills/vue
+skilld run
# Read one supporting file that Skill carries
-skilld run skilld:skilld-dev/skills/vue --revision --file references/api.md
+skilld run --revision --file
-# Install a Skill in the current project
-skilld install skilld:skilld-dev/skills/vue
+# Install a Skill in the current project, or restore the lockfile
+skilld install
+skilld install
# Inspect installed Skills
skilld list
-skilld view vue
+skilld view
# Keep Skills current
-skilld verify vue
-skilld update vue
-
-# Check update relations for an Agent or CI
+skilld outdated
skilld update --check --json
+skilld update
+skilld verify
# Remove a Skill
-skilld remove vue
+skilld remove
```
Project installs update `.skills/skilld-lock.yaml` and the selected Agent targets.
-Use `--global` for account level Agent targets.
+Use `--global` (or `-g`) for account level Agent targets.
+Use `--agent ` to name a target; repeat it for several, or use `--agent all`.
Use `--mode copy` or `--mode symlink` to control target writes.
+Use `--json` with `search`, `run`, and `update --check` for stable output.
+
+Run `skilld install --help` for every Agent target value.
+
+## Author a Skill
-Run `skilld install` without a source to restore the lockfile state.
+Run the skilld-maintained `generate-package-skill` Skill, or the Harness, to bootstrap a draft Skill for a package you maintain.
+Edit the draft, commit it to your Repository, and own it from there.
+skilld lists it with your name and a link to the file.
+
+The skilld-maintained Skills:
+
+- [`skilld`](./skills/skilld): search, run, and install Skills with the CLI
+- [`generate-package-skill`](./skills/generate-package-skill): draft a Skill for a package you maintain
+- [`generate-project-skill`](./skills/generate-project-skill): draft a Skill from a project you maintain
+- [`review-skill`](./skills/review-skill): review a Skill before you publish it
+
+Direct Skill runs stay user reviewed.
+The instructions and changes stay visible to you.
## Artifact delivery
@@ -141,15 +184,12 @@ skilld install github:skilld-dev/skilld/skills/skilld --direct --agent codex
```
The installed Skill receives the `unverified` source status.
-The user reviews the Skill before use.
+Review the Skill before use.
Direct mode never handles private Repositories.
It never falls back to skilld.dev.
-Generated commands use POSIX shell quoting on Unix.
-They use PowerShell quoting on Windows.
-
-## Source status
+### Source status
- `verified`: skilld checked a skilld.dev Artifact and its attestation.
- `local`: the Skill came from a local directory or a bundled skilld-maintained Skill.
@@ -157,6 +197,7 @@ They use PowerShell quoting on Windows.
`verified` describes provenance checks.
It does not endorse the instructions inside a Skill.
+See [SECURITY.md](./SECURITY.md) for what skilld checks and how to report a problem.
## Account and configuration
@@ -173,39 +214,10 @@ skilld config list
Native builds store account credentials in the operating system keychain.
The CLI does not store tokens in environment variables or plain text files.
-## Generate or review a Skill
-
-Skill generation lives outside the skilld CLI.
-
-Use these skilld-maintained Skills directly with your Agent:
-
-- [`generate-package-skill`](./skills/generate-package-skill)
-- [`generate-project-skill`](./skills/generate-project-skill)
-- [`review-skill`](./skills/review-skill)
-- [`skilld`](./skills/skilld)
-
-Direct Skill runs remain user reviewed.
-The instructions and changes stay visible to the user.
+## Harness
Use [`skilld-harness`](./packages/harness) when an application or CI needs strict output checks.
The Harness runs the same visible Skill files through an AI SDK Harness.
-
-```sh
-pnpm add skilld-harness @ai-sdk/harness ws zod
-```
-
-```ts
-import { createSkillHarness } from 'skilld-harness'
-
-const skillHarness = createSkillHarness({ harness, sandbox })
-
-const result = await skillHarness.run({
- _tag: 'PackageSkill',
- source: { _tag: 'NpmPackage', spec: 'vue' },
- destination: { rootDir: '.agents/skills', name: 'vue' },
-})
-```
-
See the [`skilld-harness` guide](./packages/harness/README.md) for its full contract.
## Upgrade from v2
@@ -216,7 +228,7 @@ Back up v2 state before replacing the CLI.
Follow the [v2 to v3 migration guide](./docs/migrate-v2-to-v3.md).
It maps removed commands and explains rollback limits.
-## v3 development
+## Development
```sh
pnpm install
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 00000000..e59e8a21
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,49 @@
+# Security
+
+## Report a vulnerability
+
+Report a vulnerability in the skilld CLI, the Harness, or the skilld.dev API in private.
+
+- Use [GitHub private vulnerability reporting](https://github.com/skilld-dev/skilld/security/advisories/new) on `skilld-dev/skilld`.
+- Or email harlan@harlanzw.com.
+
+Do not open a public issue for a vulnerability.
+Include the CLI version, the command you ran, and the steps to reproduce.
+
+To report a Skill that misleads or harms users, email the same address with the Skill selector.
+
+## What skilld checks
+
+The skilld CLI verifies remote Skills before it installs them.
+For every Artifact from skilld.dev, the CLI checks:
+
+- the exact statement bytes of the Artifact attestation
+- the attestation signature against a trusted root key compiled into the CLI
+- the SHA-256 digest of the Artifact contents
+- the archive structure, including a `SKILL.md` file at the Skill root with a `name`
+
+If no trusted root key exists, the CLI fails with `TRUSTED_ROOT_UNCONFIGURED`.
+If any check fails, the CLI installs nothing.
+
+The CLI stores account credentials in the operating system keychain.
+It never writes tokens to environment variables or plain text files.
+
+## What the source statuses mean
+
+The lockfile records one source status for each installed Skill.
+
+- `verified`: the CLI checked a skilld.dev Artifact and its attestation. The Skill bytes match one exact commit in the source Repository.
+- `local`: the Skill came from a local directory or a bundled skilld-maintained Skill. The CLI checked no remote source.
+- `unverified`: direct mode fetched the Skill from public GitHub without the skilld.dev API. The CLI checked no attestation.
+
+## What skilld never claims
+
+A source status describes provenance.
+It states where a Skill came from and that its bytes did not change in transit.
+
+skilld never claims that a Skill is safe.
+skilld does not review the instructions inside a Skill.
+Check results from third parties describe their own findings, not an endorsement by skilld.
+
+Read a Skill before your Agent follows it.
+`skilld run` prints `SKILL.md` so you can read it first.
diff --git a/crates/skilld-command/src/lib.rs b/crates/skilld-command/src/lib.rs
index c2e1b083..2ed1769a 100644
--- a/crates/skilld-command/src/lib.rs
+++ b/crates/skilld-command/src/lib.rs
@@ -70,9 +70,9 @@ pub struct Cli {
enum Command {
/// Search for Skills.
Search { query: Vec },
- /// Install a Skill, or restore the Skills recorded in your lockfile.
+ /// Install a Skill, or restore the Skills in your lockfile.
#[command(
- long_about = "Install a Skill, or restore the Skills recorded in your lockfile.\n\nGive SOURCE as:\n skilld:OWNER/REPOSITORY/SKILL\n Install a hosted Artifact.\n github:OWNER/REPOSITORY/SKILL_PATH\n github:OWNER/REPOSITORY/SKILL_PATH#branch:BRANCH\n github:OWNER/REPOSITORY/SKILL_PATH#tag:TAG\n github:OWNER/REPOSITORY/SKILL_PATH#commit:SHA\n https://github.com/OWNER/REPOSITORY/tree/REF/SKILL_PATH\n Install a hosted Artifact from an explicit GitHub selector.\n Add --direct to fetch a public GitHub Repository instead.\n ./RELATIVE_PATH or ABSOLUTE_PATH\n Install a local Skill.\n skilld\n Install the skilld-maintained Skill with --global.\n\nRun skilld install without SOURCE to restore .skills/skilld-lock.yaml.\nVerified remote Skills restore the exact locked Git commit.",
+ long_about = "Install a Skill, or restore the Skills in your lockfile.\n\nGive SOURCE as:\n skilld:OWNER/REPOSITORY/SKILL\n Install a hosted Artifact.\n github:OWNER/REPOSITORY/SKILL_PATH\n github:OWNER/REPOSITORY/SKILL_PATH#branch:BRANCH\n github:OWNER/REPOSITORY/SKILL_PATH#tag:TAG\n github:OWNER/REPOSITORY/SKILL_PATH#commit:SHA\n https://github.com/OWNER/REPOSITORY/tree/REF/SKILL_PATH\n Install a hosted Artifact from an explicit GitHub selector.\n Add --direct to fetch a public GitHub Repository instead.\n ./RELATIVE_PATH or ABSOLUTE_PATH\n Install a local Skill.\n skilld\n Install the skilld-maintained Skill with --global.\n\nRun skilld install without SOURCE to restore .skills/skilld-lock.yaml.\nVerified remote Skills restore the exact locked Git commit.",
after_long_help = "Examples:\n skilld install skilld:skilld-dev/skills/find-skill --agent codex\n skilld install github:skilld-dev/skilld/skills/skilld --direct --agent codex\n skilld install"
)]
Install {
@@ -137,7 +137,7 @@ enum Command {
#[arg(short = 'g', long)]
global: bool,
},
- /// View Skill details.
+ /// View Skill details and source.
View {
skill: String,
/// View a Skill in the global scope.
@@ -151,7 +151,7 @@ enum Command {
#[arg(short = 'g', long)]
global: bool,
},
- /// Update installed Skills.
+ /// Update installed Skills to their current source commit.
Update {
skill: Option,
/// Check update relations without changing files.
@@ -167,7 +167,7 @@ enum Command {
#[arg(short = 'g', long)]
global: bool,
},
- /// Verify a Skill source.
+ /// Verify a Skill source and report its source status.
Verify { skill: Option },
/// Report outdated and unmanaged Skills.
Outdated {
@@ -175,12 +175,12 @@ enum Command {
#[arg(long)]
all: bool,
},
- /// Manage account authentication.
+ /// Log in, check, or log out of your account.
Auth {
#[command(subcommand)]
command: AuthCommand,
},
- /// Manage configuration.
+ /// Read, set, or list configuration values.
Config {
#[command(subcommand)]
command: ConfigCommand,
@@ -1786,7 +1786,10 @@ impl Host for LocalHost {
.map_err(CommandError::remote)?
{
RemoteSourceState::Current => {
- lines.push(Line::success(format!("Verified Skill {}.", name.as_str())));
+ lines.push(Line::success(format!(
+ "Verified the source of Skill {}.",
+ name.as_str()
+ )));
}
RemoteSourceState::Stale { .. } => {
return Err(CommandError::operation(
diff --git a/crates/skilld-command/tests/remote.rs b/crates/skilld-command/tests/remote.rs
index ca8064f4..8ece2d00 100644
--- a/crates/skilld-command/tests/remote.rs
+++ b/crates/skilld-command/tests/remote.rs
@@ -2256,7 +2256,7 @@ fn remote_install_verify_and_failed_update_use_the_normal_transaction() {
.iter()
.map(skilld_ui::Line::plain_text)
.collect::>(),
- ["Verified Skill example."]
+ ["Verified the source of Skill example."]
);
let before = fs::read(project.join(".skills/example/SKILL.md")).unwrap();
*provider.content.lock().unwrap() = b"---\nname: example\ndescription: second\n---\n".to_vec();
diff --git a/crates/skilld-native/src/lib.rs b/crates/skilld-native/src/lib.rs
index f7c06b7f..df74e89c 100644
--- a/crates/skilld-native/src/lib.rs
+++ b/crates/skilld-native/src/lib.rs
@@ -187,7 +187,7 @@ fn transport_error(error: &ureq::Error, request_url: &str) -> RemoteError {
ureq::Error::ConnectionFailed => format!("the connection to {host} failed"),
ureq::Error::Timeout(_) => format!("the request to {host} timed out"),
ureq::Error::Tls(_) | ureq::Error::Rustls(_) | ureq::Error::Pem(_) => {
- format!("the secure connection to {host} failed")
+ format!("the TLS connection to {host} failed")
}
ureq::Error::Io(io) => match io.kind() {
std::io::ErrorKind::TimedOut | std::io::ErrorKind::WouldBlock => {
diff --git a/docs/migrate-v2-to-v3.md b/docs/migrate-v2-to-v3.md
index cb3e17d3..028082c9 100644
--- a/docs/migrate-v2-to-v3.md
+++ b/docs/migrate-v2-to-v3.md
@@ -93,8 +93,8 @@ It writes project state to `.skills/skilld-lock.yaml`.
Search first, then run the returned selector:
```sh
-skilld search vue
-skilld run skilld:skilld-dev/skills/vue
+skilld search find-skill
+skilld run skilld:skilld-dev/skills/find-skill
```
Use the exact selector printed by your search result.
@@ -105,7 +105,7 @@ It writes no project files or lockfile state.
Install the Skill only when you want to keep it:
```sh
-skilld install skilld:skilld-dev/skills/vue
+skilld install skilld:skilld-dev/skills/find-skill
```
An install writes project files and records lockfile state.
diff --git a/package.json b/package.json
index a954896d..858c8abb 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
"type": "module",
"version": "3.0.0-beta.3",
"packageManager": "pnpm@11.24.0",
- "description": "Search, run, install, and keep Skills current",
+ "description": "Search, run, install, and keep curated Agent Skills current",
"author": {
"name": "Harlan Wilton",
"email": "harlan@harlanzw.com",
@@ -16,14 +16,23 @@
}
],
"license": "MIT",
+ "homepage": "https://skilld.dev",
"repository": {
"type": "git",
"url": "git+https://github.com/skilld-dev/skilld.git"
},
"keywords": [
"agent",
+ "agents",
"skills",
+ "agent-skills",
+ "skill",
+ "claude-code",
+ "codex",
+ "cursor",
"cli",
+ "registry",
+ "provenance",
"github"
],
"bin": {
diff --git a/packages/cli-darwin-arm64/package.json b/packages/cli-darwin-arm64/package.json
index 9a001b1d..fda422cb 100644
--- a/packages/cli-darwin-arm64/package.json
+++ b/packages/cli-darwin-arm64/package.json
@@ -3,6 +3,7 @@
"version": "3.0.0-beta.3",
"description": "macOS arm64 executable for the skilld CLI",
"license": "MIT",
+ "homepage": "https://skilld.dev",
"repository": "github:skilld-dev/skilld",
"publishConfig": {
"access": "public",
diff --git a/packages/cli-darwin-x64/package.json b/packages/cli-darwin-x64/package.json
index 560448b3..5809f06b 100644
--- a/packages/cli-darwin-x64/package.json
+++ b/packages/cli-darwin-x64/package.json
@@ -3,6 +3,7 @@
"version": "3.0.0-beta.3",
"description": "macOS x64 executable for the skilld CLI",
"license": "MIT",
+ "homepage": "https://skilld.dev",
"repository": "github:skilld-dev/skilld",
"publishConfig": {
"access": "public",
diff --git a/packages/cli-linux-arm64-gnu/package.json b/packages/cli-linux-arm64-gnu/package.json
index 061c5fcd..f0042ed3 100644
--- a/packages/cli-linux-arm64-gnu/package.json
+++ b/packages/cli-linux-arm64-gnu/package.json
@@ -3,6 +3,7 @@
"version": "3.0.0-beta.3",
"description": "Linux arm64 GNU executable for the skilld CLI",
"license": "MIT",
+ "homepage": "https://skilld.dev",
"repository": "github:skilld-dev/skilld",
"publishConfig": {
"access": "public",
diff --git a/packages/cli-linux-arm64-musl/package.json b/packages/cli-linux-arm64-musl/package.json
index bc2e68b8..78a88a57 100644
--- a/packages/cli-linux-arm64-musl/package.json
+++ b/packages/cli-linux-arm64-musl/package.json
@@ -3,6 +3,7 @@
"version": "3.0.0-beta.3",
"description": "Linux arm64 musl executable for the skilld CLI",
"license": "MIT",
+ "homepage": "https://skilld.dev",
"repository": "github:skilld-dev/skilld",
"publishConfig": {
"access": "public",
diff --git a/packages/cli-linux-x64-gnu/package.json b/packages/cli-linux-x64-gnu/package.json
index fcea2195..15a013c4 100644
--- a/packages/cli-linux-x64-gnu/package.json
+++ b/packages/cli-linux-x64-gnu/package.json
@@ -3,6 +3,7 @@
"version": "3.0.0-beta.3",
"description": "Linux x64 GNU executable for the skilld CLI",
"license": "MIT",
+ "homepage": "https://skilld.dev",
"repository": "github:skilld-dev/skilld",
"publishConfig": {
"access": "public",
diff --git a/packages/cli-linux-x64-musl/package.json b/packages/cli-linux-x64-musl/package.json
index 941265b9..bf1a2c33 100644
--- a/packages/cli-linux-x64-musl/package.json
+++ b/packages/cli-linux-x64-musl/package.json
@@ -3,6 +3,7 @@
"version": "3.0.0-beta.3",
"description": "Linux x64 musl executable for the skilld CLI",
"license": "MIT",
+ "homepage": "https://skilld.dev",
"repository": "github:skilld-dev/skilld",
"publishConfig": {
"access": "public",
diff --git a/packages/cli-win32-arm64-msvc/package.json b/packages/cli-win32-arm64-msvc/package.json
index 16e5fff2..cecdb587 100644
--- a/packages/cli-win32-arm64-msvc/package.json
+++ b/packages/cli-win32-arm64-msvc/package.json
@@ -3,6 +3,7 @@
"version": "3.0.0-beta.3",
"description": "Windows arm64 executable for the skilld CLI",
"license": "MIT",
+ "homepage": "https://skilld.dev",
"repository": "github:skilld-dev/skilld",
"publishConfig": { "access": "public" },
"os": ["win32"],
diff --git a/packages/cli-win32-x64-msvc/package.json b/packages/cli-win32-x64-msvc/package.json
index 89c465c0..ec6dcdde 100644
--- a/packages/cli-win32-x64-msvc/package.json
+++ b/packages/cli-win32-x64-msvc/package.json
@@ -3,6 +3,7 @@
"version": "3.0.0-beta.3",
"description": "Windows x64 executable for the skilld CLI",
"license": "MIT",
+ "homepage": "https://skilld.dev",
"repository": "github:skilld-dev/skilld",
"publishConfig": { "access": "public" },
"os": ["win32"],
diff --git a/packages/protocol/README.md b/packages/protocol/README.md
index 20552f25..288b8e73 100644
--- a/packages/protocol/README.md
+++ b/packages/protocol/README.md
@@ -1,6 +1,7 @@
# skilld-protocol
-Wire shapes and constants shared between the [skilld CLI](https://github.com/skilld-dev/skilld) and [skilld.dev](https://skilld.dev). The single source of truth for everything that crosses that boundary: telemetry, audit, auth, device flow, collection manifests.
+Wire shapes and constants shared between the [skilld CLI](https://github.com/skilld-dev/skilld) and [skilld.dev](https://skilld.dev).
+The package is the single source of truth for everything that crosses that boundary.
## Install
@@ -8,14 +9,17 @@ Wire shapes and constants shared between the [skilld CLI](https://github.com/ski
pnpm add skilld-protocol
```
-ESM-only. Node âĨ18. One peer-free dep: `zod` v4.
+ESM only. Node 22 or newer. One dependency: `zod` v4.
## Subpaths
-- `skilld-protocol/wire` â every endpoint shape as a zod schema (suffix `Schema`) and the matching inferred TS type (no suffix). Use `import { FooSchema }` for runtime validation; `import type { Foo }` for the type.
-- `skilld-protocol/constants` â readonly tuples backing the closed enums plus their inferred unions.
-- `skilld-protocol/test-fixtures` â canonical payloads each consumer round-trips through their schema on CI.
+- `skilld-protocol/v1`: TypeScript types generated from `openapi/skilld-v1.yaml`. This is the Artifact delivery contract the v3 CLI uses: source resolution, Skill search, Artifact descriptors, attestations, check results, grants, trusted roots, and problems.
+- `skilld-protocol/openapi/skilld-v1.yaml`: the OpenAPI 3.1 document itself.
+- `skilld-protocol/wire`: zod schemas (suffix `Schema`) and inferred types (no suffix) for the endpoints skilld.dev still serves to older clients. Use `import { FooSchema }` for runtime validation and `import type { Foo }` for the type.
+- `skilld-protocol/constants`: readonly tuples behind the closed enums, plus their inferred unions.
+- `skilld-protocol/test-fixtures`: canonical payloads that each consumer round-trips through its schema on CI.
-## Repo
+## Repository
-This package lives inside the [skilld CLI](https://github.com/skilld-dev/skilld) monorepo at `packages/protocol`. The CLI consumes it as a workspace dep; skilld.dev consumes the published npm version.
+This package lives in the [skilld CLI](https://github.com/skilld-dev/skilld) monorepo at `packages/protocol`.
+The Rust crates mirror the v1 OpenAPI document. skilld.dev consumes the published npm version.
diff --git a/skills/generate-package-skill/SKILL.md b/skills/generate-package-skill/SKILL.md
index 958c3e11..beb746bd 100644
--- a/skills/generate-package-skill/SKILL.md
+++ b/skills/generate-package-skill/SKILL.md
@@ -6,6 +6,7 @@ description: Generate or update an Agent Skill for an npm or local package using
# Generate a package Skill
Create a focused Skill that helps an Agent use one package correctly.
+This Skill is for maintainers who author a draft Skill they own.
## Inputs
diff --git a/skills/generate-project-skill/SKILL.md b/skills/generate-project-skill/SKILL.md
index 4bda8583..573d4505 100644
--- a/skills/generate-project-skill/SKILL.md
+++ b/skills/generate-project-skill/SKILL.md
@@ -6,6 +6,7 @@ description: Generate or update an Agent Skill from the observed workflows, boun
# Generate a project Skill
Create a compact, searchable Skill from the project itself.
+This Skill is for maintainers who author a draft Skill they own.
## Inputs