feat(skills): curated GitHub catalog redesign (#3016)
* feat(skills): remove ClawHub catalog integration Drop the ClawHub registry as a skills catalog source across web server, shared UI, VS Code, docs, and locales. The catalog now serves git-based sources only: the curated Anthropic repo and user-defined repositories. Also removes the now-unused adm-zip dependency. * feat(skills): redesign catalog around curated GitHub repositories Replace the single-source dropdown with a card grid of curated GitHub repositories (Anthropic, OpenAI, Cursor pstack/skills, Matt Pocock) plus user-defined sources. Source cards show skill counts, GitHub stars, and last-updated time; a global search covers all loaded sources. Server: curated sources gain GitHub repo metadata (stars, pushed_at) fetched best-effort with a 3-hour in-memory and on-disk cache; scans run through a concurrency-limited, deduplicated cache with 3-hour TTL persisted across restarts. Refresh still bypasses the cache. Shared UI: source cards, global search with clear button, per-skill GitHub links, install/installed states. VS Code curated list updated to match. All new copy translated across 12 locales. * fix(skills): address catalog review findings - GitHub metadata fetch timeout drops to 1.5s (under the catalog client's 3s deadline) and failed lookups cache briefly (5 min) so repeated catalog loads do not re-hit a failing API. - Disk cache files are written with owner-only permissions (0o600); rename preserves the mode. - loadSource deduplicates concurrent in-flight requests per source and the shared isLoadingSource flag now clears only when the last active source load finishes.
This commit is contained in:
committed by
GitHub
parent
90d8868bfc
commit
1ed3f1f575
@@ -865,16 +865,26 @@ export const settingsDict = {
|
||||
'settings.skills.catalog.page.mode.manual': '수동',
|
||||
'settings.skills.catalog.page.mode.external': 'External',
|
||||
'settings.skills.catalog.page.title': '스킬 카탈로그',
|
||||
'settings.skills.catalog.page.subtitle': '선별된 저장소에서 바로 사용 가능한 스킬을 설치하거나 직접 소스를 추가하세요.',
|
||||
'settings.skills.catalog.page.section.sources': '소스',
|
||||
'settings.skills.catalog.page.searchAllPlaceholder': '모든 소스에서 스킬 검색…',
|
||||
'settings.skills.catalog.page.search.clear': '검색 지우기',
|
||||
'settings.skills.catalog.page.source.skillsCount': '스킬: {count}개',
|
||||
'settings.skills.catalog.page.source.stars': '스타: {count}',
|
||||
'settings.skills.catalog.page.source.updated': '업데이트: {time}',
|
||||
'settings.skills.catalog.page.source.addOwnTitle': '직접 소스 추가',
|
||||
'settings.skills.catalog.page.source.addOwnDescription': '스킬이 있는 아무 Git 저장소',
|
||||
'settings.skills.catalog.page.source.viewRepo': 'GitHub에서 저장소 열기',
|
||||
'settings.skills.catalog.page.skill.viewOnGithub': 'GitHub에서 스킬 보기',
|
||||
'settings.skills.catalog.page.list.searchTitle': '검색 결과',
|
||||
'settings.skills.catalog.page.section.sourceRepository': '카탈로그 저장소',
|
||||
'settings.skills.catalog.page.field.selectSourcePlaceholder': '저장소 선택',
|
||||
'settings.skills.catalog.page.actions.refreshTitle': '새로고침',
|
||||
'settings.skills.catalog.page.actions.removeCatalogTitle': 'Catalog 제거',
|
||||
'settings.skills.catalog.page.actions.addCatalog': 'Catalog 추가',
|
||||
'settings.skills.catalog.page.actions.removeCatalog': 'Catalog 제거',
|
||||
'settings.skills.catalog.page.actions.loadMoreSkills': '스킬 더 불러오기',
|
||||
'settings.skills.catalog.page.loading.catalog': '로딩 중...',
|
||||
'settings.skills.catalog.page.loading.skills': '스킬 불러오는 중...',
|
||||
'settings.skills.catalog.page.loading.more': '로딩 중...',
|
||||
'settings.skills.catalog.page.foundCount': '스킬 {count}개 발견',
|
||||
'settings.skills.catalog.page.error.catalogTitle': 'Catalog 오류',
|
||||
'settings.skills.catalog.page.empty.noSkillsTitle': '스킬을 찾을 수 없습니다',
|
||||
@@ -882,7 +892,6 @@ export const settingsDict = {
|
||||
'settings.skills.catalog.page.badge.installed': '설치됨({scope})',
|
||||
'settings.skills.catalog.page.badge.notInstallable': '설치할 수 없음',
|
||||
'settings.skills.catalog.page.badge.unknown': '알 수 없음',
|
||||
'settings.skills.catalog.page.byOwnerPrefix': '작성자',
|
||||
'settings.skills.catalog.page.removeDialog.title': 'Catalog 제거',
|
||||
'settings.skills.catalog.page.removeDialog.description': '이 카탈로그를 제거하시겠습니까?',
|
||||
'settings.openchamber.passkeys.title': 'Passkeys',
|
||||
|
||||
Reference in New Issue
Block a user