{"id":48269329,"url":"https://github.com/echohello-dev/skillet","last_synced_at":"2026-04-04T22:06:33.568Z","repository":{"id":339676348,"uuid":"1141808550","full_name":"echohello-dev/skillet","owner":"echohello-dev","description":"CLI to pull Agent Skills anywhere, anytime","archived":false,"fork":false,"pushed_at":"2026-03-09T04:51:47.000Z","size":140,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-09T09:36:48.729Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/echohello-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-01-25T13:21:21.000Z","updated_at":"2026-03-09T04:51:18.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/echohello-dev/skillet","commit_stats":null,"previous_names":["echohello-dev/skillet"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/echohello-dev/skillet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echohello-dev%2Fskillet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echohello-dev%2Fskillet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echohello-dev%2Fskillet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echohello-dev%2Fskillet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/echohello-dev","download_url":"https://codeload.github.com/echohello-dev/skillet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echohello-dev%2Fskillet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31416499,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T20:09:54.854Z","status":"ssl_error","status_checked_at":"2026-04-04T20:09:44.350Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-04T22:06:32.937Z","updated_at":"2026-04-04T22:06:33.556Z","avatar_url":"https://github.com/echohello-dev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Skillet\n\nPortable CLI for managing agent skills.\n\nSkillet installs, discovers, and updates `SKILL.md`-based skills across supported agent directories.\n\n## Installation\n\n| Method | Command / Source | Status |\n| --- | --- | --- |\n| Binary release | Download from GitHub Releases | Planned |\n| Homebrew | `brew install skillet` | Configured |\n| Chocolatey | `choco install skillet` | Configured |\n| winget | `winget install skillet` | Configured |\n| npm / npx | `npx sklt ...` | Configured |\n| Docker | `docker run ... skillet ...` | Configured |\n| Local dev | `mise run dev -- --help` | Available |\n\nCurrent development workflow:\n\n```bash\nmise run install\nmise run dev -- --help\n```\n\n## CLI Usage\n\n```bash\nskillet --help\nskillet find [query]\nskillet init [directory]\n```\n\nImplemented commands:\n- `find`: search discovered local skills by name/description\n- `init`: scaffold a valid `SKILL.md`\n- `generate-lock`: deterministic `skillet.lock.yaml` generation from installed skills\n\nIn-progress commands:\n- `add`\n- `check`\n- `update`\n\n## Source Formats\n\nSkillet supports these source formats for skill content:\n\n- Git sources (owner/repo shorthand, HTTPS, `git@`, local repos)\n- HTTP archives (`.zip`, `.tar.gz`) with traversal and size safety checks\n- OCI artifacts (`oci://registry/repository:tag` or `@sha256:digest`)\n\n## Compatibility Notes\n\nSupported agent directory conventions:\n\n- Project scope:\n  - `.claude/skills`\n  - `.codex/skills`\n  - `.opencode/skills`\n  - `.cursor/skills`\n  - `.windsurf/skills`\n- Global scope:\n  - `~/.claude/skills`\n  - `~/.codex/skills`\n  - `~/.opencode/skills`\n  - `~/.cursor/skills`\n  - `~/.windsurf/skills`\n\nDiscovery behavior:\n\n- Standard search locations include root + `skills/` variants\n- Invalid `SKILL.md` files are skipped\n- Recursive fallback search is only used when standard/agent locations are empty\n\n## Lockfile\n\nSkillet lockfile format is YAML (`skillet.lock.yaml`) with deterministic ordering.\n\nSchema (v1):\n\n```yaml\nversion: 1\nsources:\n  - type: git|oci|http|unknown\n    url: \u003csource-url\u003e\n    ref: \u003coptional-ref\u003e\n    digest: \u003coptional-digest\u003e\n    installMethod: symlink|copy\n    skills:\n      - \u003cskill-name\u003e\n    agents:\n      - \u003cagent-id\u003e\n```\n\n## OCI Artifact Spec\n\nSkillet OCI resolver expects artifacts with:\n\n- OCI reference format:\n  - `oci://\u003cregistry\u003e/\u003crepo\u003e:\u003ctag\u003e`\n  - `oci://\u003cregistry\u003e/\u003crepo\u003e@sha256:\u003cdigest\u003e`\n- Manifest requirements:\n  - `artifactType: application/vnd.skillet.skill.v1+tar`\n  - at least one tar layer\n- Content requirements:\n  - tar layer extracts safely (no path traversal)\n  - artifact contains exactly one skill directory\n  - skill contains `SKILL.md`\n\nFor tag-based references, Skillet records the resolved manifest digest for lock tracking.\n\n## OCI Publishing Guidance\n\nRecommended publishing flow:\n\n1. Package one skill directory per artifact into a tar layer.\n2. Publish with artifact type `application/vnd.skillet.skill.v1+tar`.\n3. Push to registry (GHCR recommended first) with both tag and digest discoverability.\n4. Install via:\n   - `oci://ghcr.io/\u003corg\u003e/\u003cskill\u003e:\u003ctag\u003e`\n   - `oci://ghcr.io/\u003corg\u003e/\u003cskill\u003e@sha256:\u003cdigest\u003e`\n\nExample (conceptual):\n\n```bash\ntar -cf skill.tar \u003cskill-dir\u003e\noras push ghcr.io/\u003corg\u003e/\u003cskill\u003e:v1 \\\n  --artifact-type application/vnd.skillet.skill.v1+tar \\\n  skill.tar:application/vnd.oci.image.layer.v1.tar\n```\n\n## Development\n\n```bash\nmise run install\nmise run test\nmise run ci\n```\n\nAGENTS instructions live in `AGENTS.md`.\n\nDistribution docs:\n\n- Homebrew: `docs/distribution/homebrew.md`\n- Chocolatey: `docs/distribution/chocolatey.md`\n- winget: `docs/distribution/winget.md`\n- Docker: `docs/distribution/docker.md`\n- npm: `docs/distribution/npm.md`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fechohello-dev%2Fskillet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fechohello-dev%2Fskillet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fechohello-dev%2Fskillet/lists"}